Project import generated by Copybara.

GitOrigin-RevId: 63746295f1a5ab5a619056791995793d65529e62
diff --git a/node_modules/mdl-ext/lib/mdl-ext.js.map b/node_modules/mdl-ext/lib/mdl-ext.js.map
new file mode 100644
index 0000000..a401c9f
--- /dev/null
+++ b/node_modules/mdl-ext/lib/mdl-ext.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///webpack/universalModuleDefinition?5ca6","webpack:///webpack/bootstrap 80c672803f0b3533e5b7?a1f3","webpack:///./~/babel-runtime/~/core-js/library/modules/_core.js?d611","webpack:///./src/utils/constants.js?14df","webpack:///./~/babel-runtime/~/core-js/library/modules/_export.js?8e40","webpack:///./~/babel-runtime/~/core-js/library/modules/_wks.js?2014","webpack:///./~/babel-runtime/~/core-js/library/modules/_global.js?3c52","webpack:///./~/babel-runtime/~/core-js/library/modules/_an-object.js?3af2","webpack:///./~/babel-runtime/~/core-js/library/modules/_iterators.js?f3f3","webpack:///./~/babel-runtime/helpers/toConsumableArray.js?1825","webpack:///./~/babel-runtime/~/core-js/library/modules/_descriptors.js?c0f5","webpack:///./~/babel-runtime/~/core-js/library/modules/_fails.js?c6dd","webpack:///./~/babel-runtime/~/core-js/library/modules/_hide.js?0d2e","webpack:///./~/babel-runtime/~/core-js/library/modules/_object-dp.js?5986","webpack:///./src/utils/full-throttle.js?dc07","webpack:///./src/utils/json-utils.js?45f0","webpack:///./src/utils/string-utils.js?37f8","webpack:///./~/babel-runtime/~/core-js/library/modules/_has.js?ddd0","webpack:///./~/babel-runtime/~/core-js/library/modules/_is-object.js?cfda","webpack:///./~/babel-runtime/~/core-js/library/modules/_object-keys.js?5d2e","webpack:///./~/babel-runtime/~/core-js/library/modules/_to-iobject.js?527c","webpack:///./~/babel-runtime/~/core-js/library/modules/_to-object.js?ca4f","webpack:///./src/utils/dom-utils.js?0816","webpack:///./~/babel-runtime/helpers/classCallCheck.js?21af","webpack:///./~/babel-runtime/helpers/createClass.js?1dfe","webpack:///./~/babel-runtime/~/core-js/library/modules/_defined.js?932b","webpack:///./~/babel-runtime/~/core-js/library/modules/_property-desc.js?256b","webpack:///./~/babel-runtime/~/core-js/library/modules/_shared-key.js?5602","webpack:///./~/babel-runtime/~/core-js/library/modules/_to-integer.js?09ce","webpack:///./~/babel-runtime/~/core-js/library/modules/es6.string.iterator.js?ae27","webpack:///./src/utils/easing.js?f6e9","webpack:///./src/utils/interval-function.js?c7e7","webpack:///./~/babel-runtime/core-js/get-iterator.js?1b08","webpack:///./~/babel-runtime/core-js/number/is-integer.js?14ca","webpack:///./~/babel-runtime/core-js/object/assign.js?e6ca","webpack:///./~/babel-runtime/~/core-js/library/modules/_a-function.js?0699","webpack:///./~/babel-runtime/~/core-js/library/modules/_classof.js?4e04","webpack:///./~/babel-runtime/~/core-js/library/modules/_cof.js?7381","webpack:///./~/babel-runtime/~/core-js/library/modules/_ctx.js?4e59","webpack:///./~/babel-runtime/~/core-js/library/modules/_dom-create.js?612f","webpack:///./~/babel-runtime/~/core-js/library/modules/_enum-bug-keys.js?3254","webpack:///./~/babel-runtime/~/core-js/library/modules/_iobject.js?34ed","webpack:///./~/babel-runtime/~/core-js/library/modules/_iter-define.js?4272","webpack:///./~/babel-runtime/~/core-js/library/modules/_object-pie.js?a26b","webpack:///./~/babel-runtime/~/core-js/library/modules/_set-to-string-tag.js?57a7","webpack:///./~/babel-runtime/~/core-js/library/modules/_shared.js?f1ee","webpack:///./~/babel-runtime/~/core-js/library/modules/_to-length.js?f510","webpack:///./~/babel-runtime/~/core-js/library/modules/_uid.js?c10a","webpack:///./~/babel-runtime/~/core-js/library/modules/core.get-iterator-method.js?8a45","webpack:///./~/babel-runtime/~/core-js/library/modules/web.dom.iterable.js?7e82","webpack:///./src/accordion/accordion.js?021c","webpack:///./src/carousel/carousel.js?7189","webpack:///./src/collapsible/collapsible.js?8da8","webpack:///./src/formatfield/formatfield.js?602e","webpack:///./src/index.js?9552","webpack:///./src/lightboard/lightboard.js?4a51","webpack:///./src/lightbox/lightbox.js?4a9b","webpack:///./src/menu-button/menu-button.js?292f","webpack:///./src/selectfield/selectfield.js?4310","webpack:///./src/sticky-header/sticky-header.js?0ce9","webpack:///./src/utils/index.js?d310","webpack:///./~/babel-runtime/core-js/array/from.js?efc2","webpack:///./~/babel-runtime/core-js/is-iterable.js?350e","webpack:///./~/babel-runtime/core-js/number/is-nan.js?f039","webpack:///./~/babel-runtime/core-js/object/define-property.js?5f70","webpack:///./~/babel-runtime/core-js/object/entries.js?41f9","webpack:///./~/babel-runtime/core-js/object/keys.js?fe06","webpack:///./~/babel-runtime/core-js/reflect/apply.js?a3c1","webpack:///./~/babel-runtime/helpers/slicedToArray.js?39c4","webpack:///./~/babel-runtime/~/core-js/library/fn/array/from.js?56e0","webpack:///./~/babel-runtime/~/core-js/library/fn/get-iterator.js?cf7c","webpack:///./~/babel-runtime/~/core-js/library/fn/is-iterable.js?f64a","webpack:///./~/babel-runtime/~/core-js/library/fn/number/is-integer.js?17db","webpack:///./~/babel-runtime/~/core-js/library/fn/number/is-nan.js?e8e9","webpack:///./~/babel-runtime/~/core-js/library/fn/object/assign.js?2fc7","webpack:///./~/babel-runtime/~/core-js/library/fn/object/define-property.js?4d33","webpack:///./~/babel-runtime/~/core-js/library/fn/object/entries.js?eb23","webpack:///./~/babel-runtime/~/core-js/library/fn/object/keys.js?0e2b","webpack:///./~/babel-runtime/~/core-js/library/fn/reflect/apply.js?1fe6","webpack:///./~/babel-runtime/~/core-js/library/modules/_add-to-unscopables.js?7da3","webpack:///./~/babel-runtime/~/core-js/library/modules/_array-includes.js?3a79","webpack:///./~/babel-runtime/~/core-js/library/modules/_create-property.js?f892","webpack:///./~/babel-runtime/~/core-js/library/modules/_html.js?8916","webpack:///./~/babel-runtime/~/core-js/library/modules/_ie8-dom-define.js?b102","webpack:///./~/babel-runtime/~/core-js/library/modules/_is-array-iter.js?a9d0","webpack:///./~/babel-runtime/~/core-js/library/modules/_is-integer.js?9053","webpack:///./~/babel-runtime/~/core-js/library/modules/_iter-call.js?45cd","webpack:///./~/babel-runtime/~/core-js/library/modules/_iter-create.js?0359","webpack:///./~/babel-runtime/~/core-js/library/modules/_iter-detect.js?e400","webpack:///./~/babel-runtime/~/core-js/library/modules/_iter-step.js?8944","webpack:///./~/babel-runtime/~/core-js/library/modules/_library.js?08a9","webpack:///./~/babel-runtime/~/core-js/library/modules/_object-assign.js?82ff","webpack:///./~/babel-runtime/~/core-js/library/modules/_object-create.js?9175","webpack:///./~/babel-runtime/~/core-js/library/modules/_object-dps.js?73bc","webpack:///./~/babel-runtime/~/core-js/library/modules/_object-gops.js?a865","webpack:///./~/babel-runtime/~/core-js/library/modules/_object-gpo.js?5ec8","webpack:///./~/babel-runtime/~/core-js/library/modules/_object-keys-internal.js?6fa8","webpack:///./~/babel-runtime/~/core-js/library/modules/_object-sap.js?2605","webpack:///./~/babel-runtime/~/core-js/library/modules/_object-to-array.js?205b","webpack:///./~/babel-runtime/~/core-js/library/modules/_redefine.js?350a","webpack:///./~/babel-runtime/~/core-js/library/modules/_string-at.js?8678","webpack:///./~/babel-runtime/~/core-js/library/modules/_to-index.js?7bea","webpack:///./~/babel-runtime/~/core-js/library/modules/_to-primitive.js?1a65","webpack:///./~/babel-runtime/~/core-js/library/modules/core.get-iterator.js?74ea","webpack:///./~/babel-runtime/~/core-js/library/modules/core.is-iterable.js?be30","webpack:///./~/babel-runtime/~/core-js/library/modules/es6.array.from.js?f8ab","webpack:///./~/babel-runtime/~/core-js/library/modules/es6.array.iterator.js?8359","webpack:///./~/babel-runtime/~/core-js/library/modules/es6.number.is-integer.js?a48c","webpack:///./~/babel-runtime/~/core-js/library/modules/es6.number.is-nan.js?7944","webpack:///./~/babel-runtime/~/core-js/library/modules/es6.object.assign.js?07f0","webpack:///./~/babel-runtime/~/core-js/library/modules/es6.object.define-property.js?8bde","webpack:///./~/babel-runtime/~/core-js/library/modules/es6.object.keys.js?dfa4","webpack:///./~/babel-runtime/~/core-js/library/modules/es6.reflect.apply.js?2b77","webpack:///./~/babel-runtime/~/core-js/library/modules/es7.object.entries.js?872a","webpack:///./src/mdl-ext-build.scss?16f6"],"names":["VK_TAB","VK_ENTER","VK_ESC","VK_SPACE","VK_PAGE_UP","VK_PAGE_DOWN","VK_END","VK_HOME","VK_ARROW_LEFT","VK_ARROW_UP","VK_ARROW_RIGHT","VK_ARROW_DOWN","ARIA_EXPANDED","ARIA_HIDDEN","ARIA_MULTISELECTABLE","ARIA_SELECTED","IS_DIRTY","IS_DISABLED","IS_EXPANDED","IS_FOCUSED","IS_INVALID","IS_UPGRADED","DATA_UPGRADED","MDL_RIPPLE","MDL_RIPPLE_COMPONENT","MDL_RIPPLE_EFFECT","MDL_RIPPLE_EFFECT_IGNORE_EVENTS","fullThrottle","callback","context","window","throttling","args","requestAnimationFrame","jsonStringToObject","jsonString","source","s","replace","JSON","parse","e","Error","message","stringList","isString","str","flatten","list","reduce","a","b","concat","Array","isArray","objectToStrings","arg","filter","key","map","result","joinStrings","delimiter","join","randomString","n","Math","random","toString","slice","removeChildElements","element","forceReflow","lastChild","removeChild","d","style","display","moveElements","target","ownerDocument","createDocumentFragment","firstChild","appendChild","getWindowViewport","viewportWidth","max","document","documentElement","clientWidth","innerWidth","viewportHeight","clientHeight","innerHeight","isRectInsideWindowViewport","top","left","bottom","right","getScrollParents","elements","el","parentNode","cs","getComputedStyle","overflowY","overflowX","unshift","body","getParentElements","from","to","tether","controlledBy","controlRect","getBoundingClientRect","height","offsetHeight","width","offsetWidth","elementRect","dy","dx","ddy","ddx","r","offsetTop","offsetLeft","isFocusable","hasAttribute","tabindex","getAttribute","parseInt","selector","name","nodeName","test","type","toLowerCase","disabled","href","getPropertyValue","easeInOutQuad","t","c","inOutQuintic","ts","tc","MIN_INERVAL","intervalFunction","interval","lapse","cb","undefined","next","timeElapsed","execute","f","cancel","cancelAnimationFrame","start","timeStart","Date","now","loop","started","value","TypeError","immediate","ReferenceError","stop","ACCORDION","ACCORDION_VERTICAL","ACCORDION_HORIZONTAL","PANEL","PANEL_ROLE","TAB","TAB_CAPTION","TAB_ROLE","TABPANEL","TABPANEL_ROLE","RIPPLE_EFFECT","RIPPLE","ANIMATION_EFFECT","ANIMATION","MaterialExtAccordion","element_","init","accordionPanelElements","panel","tab","tabpanel","classList","contains","querySelector","prototype","commandHandler_","event","preventDefault","stopPropagation","detail","command","dispatchToggleEvent_","state","ce","CustomEvent","bubbles","cancelable","dispatchEvent","openTab_","add","setAttribute","removeAttribute","closeTab_","remove","toggleTab_","closeTabs_","openTabs_","querySelectorAll","forEach","closedItem","upgradeTab","tabElement","disableTab","enableTab","calcMaxTabCaptionWidth","tabCaption","w","children","v","maxWidth","selectTab","selectedTab","tabClickHandler","tabFocusHandler","tabpanelClickHandler","tabpanelFocusHandler","tabKeydownHandler","keyCode","nextTab","nextPanel","previousElementSibling","nextElementSibling","focus","removeEventListener","addEventListener","openTab","closeTab","toggleTab","action","bind","componentHandler","register","constructor","classAsString","cssClass","widget","MDL_RIPPLE_CONTAINER","SLIDE","ROLE","SLIDE_ROLE","MaterialExtCarousel","config_","interactive","autostart","animationLoop","scrollAnimation_","startSlideShow_","nextSlide","slide","animateScroll_","moveSlideIntoViewport_","emitSelectEvent_","nextScroll","nextDirection","direction","scrollLeft","scrollWidth","x","min","cancelSlideShow_","newPosition","newDuration","completedCallback","distance","duration","abs","command_","setAriaSelected_","slides","getSlidesInViewport_","length","keyDownHandler_","cmd","getSlide_","shiftKey","setFocus_","dragHandler_","updating","rAFDragId","startX","clientX","touches","prevX","targetElement","update","currentX","drag","endDrag","clickHandler_","focusHandler_","blurHandler_","evt","carouselRect","slidesInViewport","slideRect","removeListeners_","mdlDowngrade_","closest","addRipple_","rippleContainer","createElement","ripple","img","title","upgradeElement","stopAnimation","upgradeSlides","hasRippleEffect","getConfig","JS_COLLAPSIBLE","COLLAPSIBLE_CONTROL_CLASS","COLLAPSIBLE_GROUP_CLASS","COLLAPSIBLE_REGION_CLASS","Collapsible","controlElement_","keyDownHandler","controlElement","MouseEvent","view","clickHandler","isDisabled","p","push","find","toggle","isExpanded","dispatchToggleEvent","regions","regionElements","i","region","collapse","expand","regionId","ids","regionIds","id","role","addRegionId","initControl","initRegions","addRegionElement","addListeners","removeListeners","split","MaterialExtCollapsible","collapsible","downgrade","getControlElement","getRegionElements","addRegionElements","removeRegionElements","removeRegionElement","disableToggle","enableToggle","JS_FORMAT_FIELD","FORMAT_FIELD_COMPONENT","browserLanguage","navigator","languages","language","userLanguage","FormatField","options_","clearTimeout","timer","focusInHandler","input","readOnly","unformatInput","setTimeout","select","focusOutHandler","formatValue","doReplace","RegExp","options","groupSeparator","decimalSeparator","intlGroupSeparator_","intlDecimalSeparator_","Intl","NumberFormat","locales","format","stripSeparatorsFromValue","fixSeparators","addOptions","opts","addLocale","addGrouping","toLocaleString","useGrouping","minimumFractionDigits","maximumFractionDigits","charAt","input_","MaterialExtFormatfield","formatField_","getOptions","getUnformattedValue","unformat","LIGHTBOARD_ROLE","SLIDE_TABSTOP","MaterialExtLightboard","getSlide","selectSlide_","selectedSlide","dispatchSelectEvent_","addRipple","firstSlide","lastSlide","prevSlide","keydownHandler","focusHandler","LIGHTBOX","LIGHTBOX_SLIDER","LIGHTBOX_SLIDER_SLIDE","STICKY_FOOTER","BUTTON","MaterialExtLightbox","dispatchAction_","buttonClickHandler_","repositionDialog_","footerHeight","footer","isSticky","reposition","dialog","fh","position","scrollTop","topValue","lightboxElement","naturalWidth","vh","imgLoadHandler_","imgDragHandler_","setStyles","properties","opacity","slider","textContent","src","button","figcaption","JS_MENU_BUTTON","MENU_BUTTON_MENU","MENU_BUTTON_MENU_ITEM","MENU_BUTTON_MENU_ITEM_SEPARATOR","menuFactory","ariaControls","removeAllSelected","selectedItem","setSelected","item","force","getSelected","isSeparator","nextItem","current","firstElementChild","previousItem","lastElementChild","firstItem","lastItem","selectItem","close","blurHandler","relatedTarget","explicitOriginalTarget","activeElement","shouldClose","err","touchStartHandler","open","btn","forceFocus","addWaiAria","menuitem","selected","MenuButton","openMenu","closeMenu","recalcMenuPosition","focusElement","focusElementLastScrollPosition","parseFloat","menu","positionChangeHandler","closeMenuHandler","dispatchMenuSelect","scrollElements","addFocusElement","tagName","moveElementToDocumentBody","findMenuElement","menuElement","menuElementId","addMenu","componentInstance","related","indexOf","MaterialExtMenuButton","menuButton_","getMenuElement","getSelectedMenuItem","setSelectedMenuItem","LABEL","INPUT","MaterialExtSelectfield","onFocus_","onBlur_","onReset_","updateClasses_","checkDisabled","checkValidity","checkDirty","checkFocus","select_","Boolean","disable","enable","change","label_","invalid","MDL_LAYOUT_CONTENT","IS_SCROLL_CLASS","MaterialExtStickyHeader","header_","content_","lastScrollTop_","visibleAtScrollEnd","mutationObserver_","drawing_","recalcWidth_","throttleResize","self","resizeHandler_","reposition_","currentContentScrollTop","scrollDiff","headerTop","scrollHeight","throttleScroll","scrollHandler_","updatePosition_","addMutationObserver_","MutationObserver","observe","attributes","childList","characterData","subtree","disconnect","paddingTop"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;ACVA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;ACtCA,8BAA6B;AAC7B,sCAAqC,gC;;;;;;ACDrC;;;;;AAEA,KAAMA,SAAiB,CAAvB;AACA,KAAMC,WAAiB,EAAvB;AACA,KAAMC,SAAiB,EAAvB;AACA,KAAMC,WAAiB,EAAvB;AACA,KAAMC,aAAiB,EAAvB;AACA,KAAMC,eAAiB,EAAvB;AACA,KAAMC,SAAiB,EAAvB;AACA,KAAMC,UAAiB,EAAvB;AACA,KAAMC,gBAAiB,EAAvB;AACA,KAAMC,cAAiB,EAAvB;AACA,KAAMC,iBAAiB,EAAvB;AACA,KAAMC,gBAAiB,EAAvB;;AAEA,KAAMC,gBAAuB,eAA7B;AACA,KAAMC,cAAuB,aAA7B;AACA,KAAMC,uBAAuB,sBAA7B;AACA,KAAMC,gBAAuB,eAA7B;;AAEA,KAAMC,WAAgB,UAAtB;AACA,KAAMC,cAAgB,aAAtB;AACA,KAAMC,cAAgB,aAAtB;AACA,KAAMC,aAAgB,YAAtB;AACA,KAAMC,aAAgB,YAAtB;AACA,KAAMC,cAAgB,aAAtB;AACA,KAAMC,gBAAgB,eAAtB;;AAEA,KAAMC,aAAkC,YAAxC;AACA,KAAMC,uBAAkC,gBAAxC;AACA,KAAMC,oBAAkC,sBAAxC;AACA,KAAMC,kCAAkC,qCAAxC;;SAGE1B,M,GAAAA,M;SACAC,Q,GAAAA,Q;SACAC,M,GAAAA,M;SACAC,Q,GAAAA,Q;SACAC,U,GAAAA,U;SACAC,Y,GAAAA,Y;SACAC,M,GAAAA,M;SACAC,O,GAAAA,O;SACAC,a,GAAAA,a;SACAC,W,GAAAA,W;SACAC,c,GAAAA,c;SACAC,a,GAAAA,a;SACAC,a,GAAAA,a;SACAC,W,GAAAA,W;SACAC,oB,GAAAA,oB;SACAC,a,GAAAA,a;SACAC,Q,GAAAA,Q;SACAC,W,GAAAA,W;SACAC,W,GAAAA,W;SACAC,U,GAAAA,U;SACAC,U,GAAAA,U;SACAC,W,GAAAA,W;SACAC,a,GAAAA,a;SACAC,U,GAAAA,U;SACAC,oB,GAAAA,oB;SACAC,iB,GAAAA,iB;SACAC,+B,GAAAA,+B;;;;;;AC5DF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAmE;AACnE;AACA,sFAAqF;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,gDAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd,eAAc;AACd,eAAc;AACd,eAAc;AACd,gBAAe;AACf,gBAAe;AACf,gBAAe;AACf,iBAAgB;AAChB,0B;;;;;;AC5DA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,wB;;;;;;ACVA;AACA;AACA;AACA,wCAAuC,gC;;;;;;ACHvC;AACA;AACA;AACA;AACA,G;;;;;;ACJA,qB;;;;;;ACAA;;AAEA;;AAEA;;AAEA;;AAEA,uCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;AACA,8CAA6C,gBAAgB;AAC7D;AACA;;AAEA;AACA,IAAG;AACH;AACA;AACA,G;;;;;;ACpBA;AACA;AACA,kCAAiC,QAAQ,gBAAgB,UAAU,GAAG;AACtE,EAAC,E;;;;;;ACHD;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,G;;;;;;ACNA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,G;;;;;;ACPA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG,UAAU;AACb;AACA;AACA;AACA,G;;;;;;;;;;;;;;;;;;ACfA;;;;;;;;;;;;;;;AAeA,KAAMC,eAAe,SAAfA,YAAe,CAACC,QAAD,EAAWC,OAAX,EAAuB;;AAE1C,OAAI,CAACA,OAAL,EAAc;AACZA,e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B;;;;;;;AClFf,mBAAkB,wD;;;;;;ACAlB,mBAAkB,wD;;;;;;ACAlB,mBAAkB,wD;;;;;;ACAlB;AACA;AACA;AACA,G;;;;;;ACHA;AACA;AACA;AACA;AACA,0BAAyB,kBAAkB,EAAE;;AAE7C;AACA;AACA;AACA;AACA,IAAG,UAAU;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACtBA,kBAAiB;;AAEjB;AACA;AACA,G;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACNA;AACA;AACA;AACA,c;;;;;;ACHA;AACA;AACA;AACA;AACA,G;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAA4B,aAAa;;AAEzC;AACA;AACA;AACA;AACA;AACA,yCAAwC,oCAAoC;AAC5E,6CAA4C,oCAAoC;AAChF,MAAK,2BAA2B,oCAAoC;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,mBAAmB;AACnC;AACA;AACA,kCAAiC,2BAA2B;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,G;;;;;;ACrEA,eAAc,sB;;;;;;ACAd;AACA;AACA;;AAEA;AACA,mEAAkE,+BAA+B;AACjG,G;;;;;;ACNA;AACA;AACA,oDAAmD;AACnD;AACA,wCAAuC;AACvC,G;;;;;;ACLA;AACA;AACA;AACA;AACA,4DAA2D;AAC3D,G;;;;;;ACLA;AACA;AACA;AACA;AACA,G;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACPA;AACA;AACA;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;AACA,G;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,G;;;;;;ACXA;AACA;AACA;AACA;AACA;;AAEA;AACA,2FAAgF,aAAa,EAAE;;AAE/F;AACA,sDAAqD,0BAA0B;AAC/E;AACA,G;;;;;;ACZA;AACA;;AAEA;AACA;AACA,gCAA+B,qBAAqB;AACpD,gCAA+B,SAAS,EAAE;AAC1C,EAAC,UAAU;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B,SAAS,mBAAmB;AACvD,gCAA+B,aAAa;AAC5C;AACA,IAAG,UAAU;AACb;AACA,G;;;;;;ACpBA;AACA,WAAU;AACV,G;;;;;;ACFA,uB;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC,UAAU,EAAE;AAC9C,oBAAmB,sCAAsC;AACzD,EAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC,W;;;;;;AChCD;AACA;AACA;AACA;AACA;AACA,8BAA6B;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;;;;;;ACxCA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACZA,0C;;;;;;ACAA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,G;;;;;;ACZA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA,+BAA8B;AAC9B;AACA;AACA,oDAAmD,OAAO,EAAE;AAC5D,G;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,G;;;;;;ACfA,0C;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yEAA0E,kBAAkB,EAAE;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAoD,gCAAgC;AACpF;AACA;AACA,MAAK;AACL;AACA,kCAAiC,gBAAgB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;ACpCD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iCAAgC;AAChC,eAAc;AACd,kBAAiB;AACjB;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;;AAEA;AACA;AACA,6B;;;;;;ACjCA;AACA;;AAEA,+BAA8B,mCAAoC,E;;;;;;ACHlE;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACPD;AACA;;AAEA,2CAA0C,gCAAoC,E;;;;;;ACH9E;AACA;AACA,qEAAuE,0CAA0C,E;;;;;;ACFjH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACRD;AACA;AACA;AACA;AACA,sDAAmD;AACnD;AACA;AACA;AACA,sBAAqB;AACrB,EAAC;AACD;AACA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACfD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACRD,0C","file":"mdl-ext.js","sourcesContent":["(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(\"mdl-ext\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"mdl-ext\"] = factory();\n\telse\n\t\troot[\"mdl-ext\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition\n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \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// WEBPACK FOOTER //\n// webpack/bootstrap 80c672803f0b3533e5b7\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 80c672803f0b3533e5b7","var core = module.exports = {version: '2.4.0'};\nif(typeof __e == 'number')__e = core; // eslint-disable-line no-undef\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_core.js\n// module id = 1\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_core.js\n// module id = 1\n// module chunks = 0 1","'use strict';\n\nconst VK_TAB         = 9;\nconst VK_ENTER       = 13;\nconst VK_ESC         = 27;\nconst VK_SPACE       = 32;\nconst VK_PAGE_UP     = 33;\nconst VK_PAGE_DOWN   = 34;\nconst VK_END         = 35;\nconst VK_HOME        = 36;\nconst VK_ARROW_LEFT  = 37;\nconst VK_ARROW_UP    = 38;\nconst VK_ARROW_RIGHT = 39;\nconst VK_ARROW_DOWN  = 40;\n\nconst ARIA_EXPANDED        = 'aria-expanded';\nconst ARIA_HIDDEN          = 'aria-hidden';\nconst ARIA_MULTISELECTABLE = 'aria-multiselectable';\nconst ARIA_SELECTED        = 'aria-selected';\n\nconst IS_DIRTY      = 'is-dirty';\nconst IS_DISABLED   = 'is-disabled';\nconst IS_EXPANDED   = 'is-expanded';\nconst IS_FOCUSED    = 'is-focused';\nconst IS_INVALID    = 'is-invalid';\nconst IS_UPGRADED   = 'is-upgraded';\nconst DATA_UPGRADED = 'data-upgraded';\n\nconst MDL_RIPPLE                      = 'mdl-ripple';\nconst MDL_RIPPLE_COMPONENT            = 'MaterialRipple';\nconst MDL_RIPPLE_EFFECT               = 'mdl-js-ripple-effect';\nconst MDL_RIPPLE_EFFECT_IGNORE_EVENTS = 'mdl-js-ripple-effect--ignore-events';\n\nexport {\n  VK_TAB,\n  VK_ENTER,\n  VK_ESC,\n  VK_SPACE,\n  VK_PAGE_UP,\n  VK_PAGE_DOWN ,\n  VK_END,\n  VK_HOME,\n  VK_ARROW_LEFT,\n  VK_ARROW_UP,\n  VK_ARROW_RIGHT,\n  VK_ARROW_DOWN ,\n  ARIA_EXPANDED,\n  ARIA_HIDDEN,\n  ARIA_MULTISELECTABLE,\n  ARIA_SELECTED,\n  IS_DIRTY,\n  IS_DISABLED,\n  IS_EXPANDED,\n  IS_FOCUSED,\n  IS_INVALID,\n  IS_UPGRADED,\n  DATA_UPGRADED ,\n  MDL_RIPPLE,\n  MDL_RIPPLE_COMPONENT,\n  MDL_RIPPLE_EFFECT,\n  MDL_RIPPLE_EFFECT_IGNORE_EVENTS\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/constants.js\n\n\n// WEBPACK FOOTER //\n// ./src/utils/constants.js","var global    = require('./_global')\n  , core      = require('./_core')\n  , ctx       = require('./_ctx')\n  , hide      = require('./_hide')\n  , PROTOTYPE = 'prototype';\n\nvar $export = function(type, name, source){\n  var IS_FORCED = type & $export.F\n    , IS_GLOBAL = type & $export.G\n    , IS_STATIC = type & $export.S\n    , IS_PROTO  = type & $export.P\n    , IS_BIND   = type & $export.B\n    , IS_WRAP   = type & $export.W\n    , exports   = IS_GLOBAL ? core : core[name] || (core[name] = {})\n    , expProto  = exports[PROTOTYPE]\n    , target    = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]\n    , key, own, out;\n  if(IS_GLOBAL)source = name;\n  for(key in source){\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    if(own && key in exports)continue;\n    // export native or passed\n    out = own ? target[key] : source[key];\n    // prevent global pollution for namespaces\n    exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n    // bind timers to global for call from export context\n    : IS_BIND && own ? ctx(out, global)\n    // wrap global constructors for prevent change them in library\n    : IS_WRAP && target[key] == out ? (function(C){\n      var F = function(a, b, c){\n        if(this instanceof C){\n          switch(arguments.length){\n            case 0: return new C;\n            case 1: return new C(a);\n            case 2: return new C(a, b);\n          } return new C(a, b, c);\n        } return C.apply(this, arguments);\n      };\n      F[PROTOTYPE] = C[PROTOTYPE];\n      return F;\n    // make static versions for prototype methods\n    })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n    if(IS_PROTO){\n      (exports.virtual || (exports.virtual = {}))[key] = out;\n      // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n      if(type & $export.R && expProto && !expProto[key])hide(expProto, key, out);\n    }\n  }\n};\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library` \nmodule.exports = $export;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_export.js\n// module id = 3\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_export.js\n// module id = 3\n// module chunks = 0 1","var store      = require('./_shared')('wks')\n  , uid        = require('./_uid')\n  , Symbol     = require('./_global').Symbol\n  , USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function(name){\n  return store[name] || (store[name] =\n    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_wks.js\n// module id = 4\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_wks.js\n// module id = 4\n// module chunks = 0 1","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n  ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();\nif(typeof __g == 'number')__g = global; // eslint-disable-line no-undef\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_global.js\n// module id = 5\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_global.js\n// module id = 5\n// module chunks = 0 1","var isObject = require('./_is-object');\nmodule.exports = function(it){\n  if(!isObject(it))throw TypeError(it + ' is not an object!');\n  return it;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_an-object.js\n// module id = 6\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_an-object.js\n// module id = 6\n// module chunks = 0 1","module.exports = {};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_iterators.js\n// module id = 7\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_iterators.js\n// module id = 7\n// module chunks = 0 1","\"use strict\";\n\nexports.__esModule = true;\n\nvar _from = require(\"../core-js/array/from\");\n\nvar _from2 = _interopRequireDefault(_from);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (arr) {\n  if (Array.isArray(arr)) {\n    for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n      arr2[i] = arr[i];\n    }\n\n    return arr2;\n  } else {\n    return (0, _from2.default)(arr);\n  }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/helpers/toConsumableArray.js\n// module id = 8\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/helpers/toConsumableArray.js\n// module id = 8\n// module chunks = 0 1","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function(){\n  return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_descriptors.js\n// module id = 9\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_descriptors.js\n// module id = 9\n// module chunks = 0 1","module.exports = function(exec){\n  try {\n    return !!exec();\n  } catch(e){\n    return true;\n  }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_fails.js\n// module id = 10\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_fails.js\n// module id = 10\n// module chunks = 0 1","var dP         = require('./_object-dp')\n  , createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function(object, key, value){\n  return dP.f(object, key, createDesc(1, value));\n} : function(object, key, value){\n  object[key] = value;\n  return object;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_hide.js\n// module id = 11\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_hide.js\n// module id = 11\n// module chunks = 0 1","var anObject       = require('./_an-object')\n  , IE8_DOM_DEFINE = require('./_ie8-dom-define')\n  , toPrimitive    = require('./_to-primitive')\n  , dP             = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes){\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if(IE8_DOM_DEFINE)try {\n    return dP(O, P, Attributes);\n  } catch(e){ /* empty */ }\n  if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!');\n  if('value' in Attributes)O[P] = Attributes.value;\n  return O;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_object-dp.js\n// module id = 12\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_object-dp.js\n// module id = 12\n// module chunks = 0 1","/**\n * Since some events can fire at a high rate, the event handler should be limited to execute computationally\n * expensive operations, such as DOM modifications, inside a single rendered frame.\n * When listening to e.g. scroll and resize events, the browser tends to fire off more events per\n * second than are actually useful. For instance, if your event listener sets some element positions, then it\n * is possible for those positions to be updated multiple times in a single rendered frame. In this case, all of\n * the layout calculations triggered by setting the elements' positions will be wasted except for the one time that\n * it runs immediately prior to the browser rendering the updated layout to the screen.\n * To avoid wasting cycles, we can use requestAnimationFrame to only run the event listener once just before the page\n * is rendered to the screen.\n * *\n * @param callback the function to throttle\n * @param context  optional context of this, default to global\n * @return {function(...[*])}\n */\nconst fullThrottle = (callback, context) => {\n\n  if (!context) {\n    context = this || window;\n  }\n\n  let throttling = false;\n\n  return (...args) => {\n    if(!throttling) {\n      throttling = true;\n      window.requestAnimationFrame( () => {\n        throttling = false;\n        return Reflect.apply(callback, context, args);\n      });\n    }\n  };\n};\n\nexport default fullThrottle;\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/full-throttle.js\n\n\n// WEBPACK FOOTER //\n// ./src/utils/full-throttle.js","'use strict';\n\n/**\n * Converts a JSON string to object\n * @param jsonString\n * @param source\n */\nconst jsonStringToObject = (jsonString, source = {} ) => {\n  const s = jsonString.replace(/'/g, '\"');\n  try {\n    return Object.assign(source, JSON.parse(s));\n  }\n  catch (e) {\n    throw new Error(`Failed to parse json string: ${s}. Error: ${e.message}`);\n  }\n};\n\nexport { jsonStringToObject };\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/json-utils.js\n\n\n// WEBPACK FOOTER //\n// ./src/utils/json-utils.js","'use strict';\n\n/**\n * @license\n * Copyright 2016 Leif Olsen. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * A javascript utility for conditionally creating a list of strings.\n * The function takes any number of arguments which can be a string or object.\n * Inspired by (but not copied from) JedWatson/classnames, https://github.com/JedWatson/classnames\n *\n * @param  {*} args the strings and/or objects to\n * @return {Array} a list of strings\n * @example\n * // Returns ['foo', 'bar', 'baz', 'quux']\n * stringList(', ', 'foo', { bar: true, duck: false }, 'baz', { quux: true });\n * @example see the tests for more examples\n */\nconst stringList = (...args) => {\n\n  const isString = str => str != null && typeof str === 'string';\n\n  const flatten = list => list.reduce((a, b) => a.concat(Array.isArray(b) ? flatten(b) : b), []);\n\n  const objectToStrings = arg =>\n    Object.keys(arg)\n      .filter(key => arg[key])\n      .map(key => key);\n\n  return args\n    .filter(arg => !!arg)\n    .map(arg => isString(arg) ? arg : objectToStrings(arg))\n    .reduce((result, arg) => result.concat(Array.isArray(arg) ? flatten(arg) : arg), []);\n};\n\n/**\n * A simple javascript utility for conditionally joining strings together.\n * The function takes a delimiter string and any number of arguments which can be a string or object.\n *\n * @param delimiter delimiter to separate joined strings\n * @param  {*} args the strings and/or objects to join\n * @return {String} the joined strings\n * @example\n * // Returns 'foo, bar, baz, quux'\n * joinStrings(', ', 'foo', { bar: true, duck: false }, 'baz', { quux: true });\n * @example see the tests for more examples\n */\nconst joinStrings = (delimiter = ' ', ...args) => stringList(...args).join(delimiter);\n\n/**\n * Generates a random string with a given length\n * @param n {Integer} length of generated string\n * @see http://stackoverflow.com/questions/1349404/generate-random-string-characters-in-javascript\n * @return {String} the random string\n * @example\n * // Returns e.g. 'pd781w0y'\n * randomString(8);\n * @example see the tests for more examples\n */\nconst randomString = ( n=12 ) => Array( n+1 ).join((`${Math.random().toString(36)}00000000000000000`).slice(2, 18)).slice(0, n);\n\nexport { joinStrings, randomString, stringList };\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/string-utils.js\n\n\n// WEBPACK FOOTER //\n// ./src/utils/string-utils.js","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function(it, key){\n  return hasOwnProperty.call(it, key);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_has.js\n// module id = 16\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_has.js\n// module id = 16\n// module chunks = 0 1","module.exports = function(it){\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_is-object.js\n// module id = 17\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_is-object.js\n// module id = 17\n// module chunks = 0 1","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys       = require('./_object-keys-internal')\n  , enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O){\n  return $keys(O, enumBugKeys);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_object-keys.js\n// module id = 18\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_object-keys.js\n// module id = 18\n// module chunks = 0 1","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject')\n  , defined = require('./_defined');\nmodule.exports = function(it){\n  return IObject(defined(it));\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_to-iobject.js\n// module id = 19\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_to-iobject.js\n// module id = 19\n// module chunks = 0 1","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function(it){\n  return Object(defined(it));\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_to-object.js\n// module id = 20\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_to-object.js\n// module id = 20\n// module chunks = 0 1","/**\n * Remove child element(s)\n * element.innerHTNL = '' has a performance penality!\n * @see http://jsperf.com/empty-an-element/16\n * @see http://jsperf.com/force-reflow\n * @param element\n * @param forceReflow\n */\nconst removeChildElements = (element, forceReflow = true) => {\n\n  // See: http://jsperf.com/empty-an-element/16\n  while (element.lastChild) {\n    element.removeChild(element.lastChild);\n  }\n  if(forceReflow) {\n    // See: http://jsperf.com/force-reflow\n    const d = element.style.display;\n\n    element.style.display = 'none';\n    element.style.display = d;\n  }\n};\n\n/**\n * Moves child elements from a DOM node to another dom node.\n * @param source {HTMLElement}\n * @param target {HTMLElement} If the target parameter is ommited, a document fragment is created\n * @return {HTMLElement} The target node\n *\n * @example\n * // Moves child elements from a DOM node to another dom node.\n * moveElements(source, destination);\n *\n * @example\n * // If the second parameter is ommited, a document fragment is created:\n * let fragment = moveElements(source);\n *\n * @See: https://github.com/webmodules/dom-move\n */\nconst moveElements = (source, target) => {\n  if (!target) {\n    target = source.ownerDocument.createDocumentFragment();\n  }\n  while (source.firstChild) {\n    target.appendChild(source.firstChild);\n  }\n  return target;\n};\n\n\n/**\n * Get the browser viewport dimensions\n * @see http://stackoverflow.com/questions/1248081/get-the-browser-viewport-dimensions-with-javascript\n * @return {{windowWidth: number, windowHeight: number}}\n */\nconst getWindowViewport = () => {\n  return {\n    viewportWidth: Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0),\n    viewportHeight: Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0)\n  };\n};\n\n\n/**\n * Check whether an element is in the window viewport\n * @see http://stackoverflow.com/questions/123999/how-to-tell-if-a-dom-element-is-visible-in-the-current-viewport/\n * @param top\n * @param left\n * @param bottom\n * @param right\n * @return {boolean} true if rectangle is inside window viewport, otherwise false\n */\nconst isRectInsideWindowViewport = ({ top, left, bottom, right }) => {\n  const { viewportWidth, viewportHeight } = getWindowViewport();\n  return top >= 0 &&\n    left >= 0 &&\n    bottom <= viewportHeight &&\n    right <= viewportWidth;\n};\n\n\n/**\n * Get a list of parent elements that can possibly scroll\n * @param el the element to get parents for\n * @returns {Array}\n */\nconst getScrollParents = el => {\n  const elements = [];\n\n  /*\n  for (el = el.parentNode; el; el = el.parentNode) {\n    const cs = window.getComputedStyle(el);\n    if(!(cs.overflowY === 'hidden' && cs.overflowX === 'hidden')) {\n      elements.unshift(el);\n    }\n    if(el === document.body) {\n      break;\n    }\n  }\n  */\n\n  let element = el.parentNode;\n  while (element) {\n    const cs = window.getComputedStyle(element);\n    if(!(cs.overflowY === 'hidden' && cs.overflowX === 'hidden')) {\n      elements.unshift(element);\n    }\n    if(element === document.body) {\n      break;\n    }\n    element = element.parentNode;\n  }\n\n  return elements;\n};\n\n/**\n * Get a list of parent elements, from a given element to a given element\n * @param {HTMLElement} from\n * @param {HTMLElement} to\n * @return {Array<HTMLElement>} the parent elements, not including from and to\n */\nconst getParentElements = (from, to) => {\n  const result = [];\n  let element = from.parentNode;\n  while (element) {\n    if(element === to) {\n      break;\n    }\n    result.unshift(element);\n    element = element.parentNode;\n  }\n  return result;\n};\n\n/**\n * Position element next to button\n *\n * Positioning strategy\n *  1. element.height > viewport.height\n *     let element.height = viewport.heigt\n *     let element.overflow-y = auto\n *  2. element.width > viewport.width\n *     let element.width = viewport.width\n *  3. position element below button, align left edge of element with button left\n *       done if element inside viewport\n *  4. position element below button, align right edge of element with button right\n *       done if element inside viewport\n *  5. positions element above button, aligns left edge of element with button left\n *       done if element inside viewport\n *  6. position element above the control element, aligned to its right.\n *       done if element inside viewport\n *  7. position element at button right hand side, aligns element top with button top\n *       done if element inside viewport\n *  8. position element at button left hand side, aligns element top with button top\n *       done if element inside viewport\n *  9. position element inside viewport\n *     1. position element at viewport bottom\n *     2. position element at button right hand side\n *        done if element inside viewport\n *     3. position element at button left hand side\n *       done if element inside viewport\n *     4. position element at viewport right\n * 10. done\n *\n */\nconst tether = (controlledBy, element) => {\n  const controlRect = controlledBy.getBoundingClientRect();\n\n  // 1. will element height fit inside window viewport?\n  const { viewportWidth, viewportHeight } = getWindowViewport();\n\n  element.style.height = 'auto';\n  //element.style.overflowY = 'hidden';\n  if(element.offsetHeight > viewportHeight) {\n    element.style.height = `${viewportHeight}px`;\n    element.style.overflowY = 'auto';\n  }\n\n  // 2. will element width fit inside window viewport?\n  element.style.width = 'auto';\n  if(element.offsetWidth > viewportWidth) {\n    element.style.width = `${viewportWidth}px`;\n  }\n\n  const elementRect = element.getBoundingClientRect();\n\n  // element to control distance\n  const dy = controlRect.top - elementRect.top;\n  const dx = controlRect.left - elementRect.left;\n\n  // element rect, window coordinates relative to top,left of control\n  const top = elementRect.top + dy;\n  const left = elementRect.left + dx;\n  const bottom = top + elementRect.height;\n  const right = left + elementRect.width;\n\n  // Position relative to control\n  let ddy = dy;\n  let ddx = dx;\n\n  if(isRectInsideWindowViewport({\n    top: top + controlRect.height,\n    left: left,\n    bottom: bottom + controlRect.height,\n    right: right\n  })) {\n    // 3 position element below the control element, aligned to its left\n    ddy = controlRect.height + dy;\n    //console.log('***** 3');\n  }\n  else if(isRectInsideWindowViewport({\n    top: top + controlRect.height,\n    left: left + controlRect.width - elementRect.width,\n    bottom: bottom + controlRect.height,\n    right: left + controlRect.width\n  })) {\n    // 4 position element below the control element, aligned to its right\n    ddy = controlRect.height + dy;\n    ddx = dx + controlRect.width - elementRect.width;\n    //console.log('***** 4');\n  }\n  else if(isRectInsideWindowViewport({\n    top: top - elementRect.height,\n    left: left,\n    bottom: bottom - elementRect.height,\n    right: right\n  })) {\n    // 5. position element above the control element, aligned to its left.\n    ddy = dy - elementRect.height;\n    //console.log('***** 5');\n  }\n  else if(isRectInsideWindowViewport({\n    top: top - elementRect.height,\n    left: left + controlRect.width - elementRect.width,\n    bottom: bottom - elementRect.height,\n    right: left + controlRect.width\n  })) {\n    // 6. position element above the control element, aligned to its right.\n    ddy = dy - elementRect.height;\n    ddx = dx + controlRect.width - elementRect.width;\n    //console.log('***** 6');\n  }\n  else if(isRectInsideWindowViewport({\n    top: top,\n    left: left + controlRect.width,\n    bottom: bottom,\n    right: right + controlRect.width\n  })) {\n    // 7. position element at button right hand side\n    ddx = controlRect.width + dx;\n    //console.log('***** 7');\n  }\n  else if(isRectInsideWindowViewport({\n    top: top,\n    left: left - controlRect.width,\n    bottom: bottom,\n    right: right - controlRect.width\n  })) {\n    // 8. position element at button left hand side\n    ddx = dx - elementRect.width;\n    //console.log('***** 8');\n  }\n  else {\n    // 9. position element inside viewport, near controlrect if possible\n    //console.log('***** 9');\n\n    // 9.1 position element near controlrect bottom\n    ddy =  dy - bottom + viewportHeight;\n    if(top + controlRect.height >= 0 && bottom + controlRect.height <= viewportHeight) {\n      ddy = controlRect.height + dy;\n    }\n    else if(top - elementRect.height >= 0 && bottom - elementRect.height <= viewportHeight) {\n      ddy = dy - elementRect.height;\n    }\n\n    if(left + elementRect.width + controlRect.width <= viewportWidth) {\n      // 9.2 Position element at button right hand side\n      ddx = controlRect.width + dx;\n      //console.log('***** 9.2');\n    }\n    else if(left - elementRect.width >= 0) {\n      // 9.3 Position element at button left hand side\n      ddx = dx - elementRect.width;\n      //console.log('***** 9.3');\n    }\n    else {\n      // 9.4 position element at (near) viewport right\n      const r = left + elementRect.width - viewportWidth;\n      ddx = dx - r;\n      //console.log('***** 9.4');\n    }\n  }\n\n  // 10. done\n  element.style.top = `${element.offsetTop + ddy}px`;\n  element.style.left = `${element.offsetLeft + ddx}px`;\n  //console.log('***** 10. done');\n};\n\n/**\n * Check if the given element can receive focus\n * @param {HTMLElement} element the element to check\n * @return {boolean} true if the element is focusable, otherwise false\n */\nconst isFocusable = (element) => {\n  // https://github.com/stephenmathieson/is-focusable/blob/master/index.js\n  // http://stackoverflow.com/questions/1599660/which-html-elements-can-receive-focus\n\n  if (element.hasAttribute('tabindex')) {\n    const tabindex = element.getAttribute('tabindex');\n    if (!Number.isNaN(tabindex)) {\n      return parseInt(tabindex) > -1;\n    }\n  }\n\n  if (element.hasAttribute('contenteditable') &&\n    element.getAttribute('contenteditable') !== 'false') {\n    // https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes#attr-contenteditable\n    return true;\n  }\n\n  // natively focusable, but only when enabled\n  const selector = /input|select|textarea|button|details/i;\n  const name = element.nodeName;\n  if (selector.test(name)) {\n    return element.type.toLowerCase() !== 'hidden' && !element.disabled;\n  }\n\n  // anchors and area must have an href\n  if (name === 'A' || name === 'AREA') {\n    return !!element.href;\n  }\n\n  if (name === 'IFRAME') {\n    // Check visible iframe\n    const cs = window.getComputedStyle(element);\n    return cs.getPropertyValue('display').toLowerCase() !== 'none';\n  }\n\n  return false;\n};\n\n\n/**\n * Get a list of offset parents for given element\n * @see https://www.benpickles.com/articles/51-finding-a-dom-nodes-common-ancestor-using-javascript\n * @param el the element\n * @return {Array} a list of offset parents\n */\n/*\nconst offsetParents = (el) => {\n  const elements = [];\n  for (; el; el = el.offsetParent) {\n    elements.unshift(el);\n  }\n  if(!elements.find(e => e === document.body)) {\n    elements.unshift(document.body);\n  }\n  return elements;\n};\n*/\n\n/**\n * Finds the common offset ancestor of two DOM nodes\n * @see https://www.benpickles.com/articles/51-finding-a-dom-nodes-common-ancestor-using-javascript\n * @see https://gist.github.com/benpickles/4059636\n * @param a\n * @param b\n * @return {Element} The common offset ancestor of a and b\n */\n/*\nconst commonOffsetAncestor = (a, b) => {\n  const parentsA = offsetParents(a);\n  const parentsB = offsetParents(b);\n\n  for (let i = 0; i < parentsA.length; i++) {\n    if (parentsA[i] !== parentsB[i]) return parentsA[i-1];\n  }\n};\n*/\n\n/**\n * Calculate position relative to a target element\n * @see http://stackoverflow.com/questions/21064101/understanding-offsetwidth-clientwidth-scrollwidth-and-height-respectively\n * @param target\n * @param el\n * @return {{top: number, left: number}}\n */\n/*\nconst calcPositionRelativeToTarget = (target, el) => {\n  let top = 0;\n  let left = 0;\n\n  while(el) {\n    top += (el.offsetTop - el.scrollTop + el.clientTop) || 0;\n    left += (el.offsetLeft - el.scrollLeft + el.clientLeft) || 0;\n    el = el.offsetParent;\n\n    if(el === target) {\n      break;\n    }\n  }\n  return { top: top, left: left };\n};\n*/\n\nexport {\n  getWindowViewport,\n  getParentElements,\n  getScrollParents,\n  isFocusable,\n  isRectInsideWindowViewport,\n  moveElements,\n  removeChildElements,\n  tether,\n};\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/dom-utils.js\n\n\n// WEBPACK FOOTER //\n// ./src/utils/dom-utils.js","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/helpers/classCallCheck.js\n// module id = 22\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/helpers/classCallCheck.js\n// module id = 22\n// module chunks = 0 1","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/helpers/createClass.js\n// module id = 23\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/helpers/createClass.js\n// module id = 23\n// module chunks = 0 1","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function(it){\n  if(it == undefined)throw TypeError(\"Can't call method on  \" + it);\n  return it;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_defined.js\n// module id = 24\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_defined.js\n// module id = 24\n// module chunks = 0 1","module.exports = function(bitmap, value){\n  return {\n    enumerable  : !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable    : !(bitmap & 4),\n    value       : value\n  };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_property-desc.js\n// module id = 25\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_property-desc.js\n// module id = 25\n// module chunks = 0 1","var shared = require('./_shared')('keys')\n  , uid    = require('./_uid');\nmodule.exports = function(key){\n  return shared[key] || (shared[key] = uid(key));\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_shared-key.js\n// module id = 26\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_shared-key.js\n// module id = 26\n// module chunks = 0 1","// 7.1.4 ToInteger\nvar ceil  = Math.ceil\n  , floor = Math.floor;\nmodule.exports = function(it){\n  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_to-integer.js\n// module id = 27\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_to-integer.js\n// module id = 27\n// module chunks = 0 1","'use strict';\nvar $at  = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function(iterated){\n  this._t = String(iterated); // target\n  this._i = 0;                // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function(){\n  var O     = this._t\n    , index = this._i\n    , point;\n  if(index >= O.length)return {value: undefined, done: true};\n  point = $at(O, index);\n  this._i += point.length;\n  return {value: point, done: false};\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/es6.string.iterator.js\n// module id = 28\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/es6.string.iterator.js\n// module id = 28\n// module chunks = 0 1","'use strict';\n\n// See: http://robertpenner.com/easing/\n\nconst easeInOutQuad = (t, b, c, d) => {\n  t /= d / 2;\n  if(t < 1) return c / 2 * t * t + b;\n  t--;\n  return -c / 2 * (t * (t - 2) - 1) + b;\n};\n\nconst inOutQuintic = (t, b, c, d) => {\n  const ts = (t/=d)*t;\n  const tc = ts*t;\n  return b+c*(6*tc*ts + -15*ts*ts + 10*tc);\n};\n\nexport { easeInOutQuad, inOutQuintic };\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/easing.js\n\n\n// WEBPACK FOOTER //\n// ./src/utils/easing.js","const MIN_INERVAL = 1000/60;\n\n/**\n * Trigger a callback at a given interval\n * @param interval defaults to 1000/60 ms\n * @return {function()} reference to start, stop, immediate and started\n */\n\nconst intervalFunction = ( interval = MIN_INERVAL ) => {\n\n  let lapse = interval < MIN_INERVAL ? MIN_INERVAL : interval;\n  let cb = undefined;\n  let next = null;\n  let timeElapsed = 0;\n\n  const execute = () => {\n    const f = cb(timeElapsed);\n    if (!f) {\n      cancel();\n    }\n  };\n\n  const cancel = () => {\n    if(next) {\n      window.cancelAnimationFrame(next);\n    }\n    next = null;\n    timeElapsed = 0;\n  };\n\n  const start = () => {\n    let timeStart = Date.now();\n\n    const loop = now => {\n      if (next) {\n        next = window.requestAnimationFrame( () => loop( Date.now() ));\n\n        timeElapsed += now - timeStart;\n\n        if(timeElapsed >= lapse) {\n          execute();\n          if( (timeElapsed -= lapse) > lapse) {\n            // time elapsed - interval_ > interval_ , indicates inactivity\n            // Could be due to browser minimized, tab changed, screen saver started, computer sleep, and so on\n            timeElapsed = 0;\n          }\n        }\n        timeStart = now;\n      }\n    };\n\n    next = 1;  // a truthy value for first loop\n    loop( timeStart );\n  };\n\n  return {\n    get started() {\n      return next != null;\n    },\n    get interval() {\n      return lapse;\n    },\n    set interval(value) {\n      lapse = value < MIN_INERVAL ? MIN_INERVAL : value;\n    },\n    start(callback) {\n      if(typeof callback !== 'function') {\n        throw new TypeError('callback parameter must be a function');\n      }\n      cb = callback;\n      start();\n    },\n    immediate() {\n      if(!cb) {\n        throw new ReferenceError('callback parameter is not defined. Call start before immediate.');\n      }\n      execute();\n    },\n    stop: () => cancel(),\n  };\n};\n\nexport default intervalFunction;\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/interval-function.js\n\n\n// WEBPACK FOOTER //\n// ./src/utils/interval-function.js","module.exports = { \"default\": require(\"core-js/library/fn/get-iterator\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/get-iterator.js\n// module id = 31\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/get-iterator.js\n// module id = 31\n// module chunks = 0 1","module.exports = { \"default\": require(\"core-js/library/fn/number/is-integer\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/number/is-integer.js\n// module id = 32\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/number/is-integer.js\n// module id = 32\n// module chunks = 0 1","module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/object/assign.js\n// module id = 33\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/object/assign.js\n// module id = 33\n// module chunks = 0 1","module.exports = function(it){\n  if(typeof it != 'function')throw TypeError(it + ' is not a function!');\n  return it;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_a-function.js\n// module id = 34\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_a-function.js\n// module id = 34\n// module chunks = 0 1","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof')\n  , TAG = require('./_wks')('toStringTag')\n  // ES3 wrong here\n  , ARG = cof(function(){ return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function(it, key){\n  try {\n    return it[key];\n  } catch(e){ /* empty */ }\n};\n\nmodule.exports = function(it){\n  var O, T, B;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n    // builtinTag case\n    : ARG ? cof(O)\n    // ES3 arguments fallback\n    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_classof.js\n// module id = 35\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_classof.js\n// module id = 35\n// module chunks = 0 1","var toString = {}.toString;\n\nmodule.exports = function(it){\n  return toString.call(it).slice(8, -1);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_cof.js\n// module id = 36\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_cof.js\n// module id = 36\n// module chunks = 0 1","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function(fn, that, length){\n  aFunction(fn);\n  if(that === undefined)return fn;\n  switch(length){\n    case 1: return function(a){\n      return fn.call(that, a);\n    };\n    case 2: return function(a, b){\n      return fn.call(that, a, b);\n    };\n    case 3: return function(a, b, c){\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function(/* ...args */){\n    return fn.apply(that, arguments);\n  };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_ctx.js\n// module id = 37\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_ctx.js\n// module id = 37\n// module chunks = 0 1","var isObject = require('./_is-object')\n  , document = require('./_global').document\n  // in old IE typeof document.createElement is 'object'\n  , is = isObject(document) && isObject(document.createElement);\nmodule.exports = function(it){\n  return is ? document.createElement(it) : {};\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_dom-create.js\n// module id = 38\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_dom-create.js\n// module id = 38\n// module chunks = 0 1","// IE 8- don't enum bug keys\nmodule.exports = (\n  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_enum-bug-keys.js\n// module id = 39\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_enum-bug-keys.js\n// module id = 39\n// module chunks = 0 1","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){\n  return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_iobject.js\n// module id = 40\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_iobject.js\n// module id = 40\n// module chunks = 0 1","'use strict';\nvar LIBRARY        = require('./_library')\n  , $export        = require('./_export')\n  , redefine       = require('./_redefine')\n  , hide           = require('./_hide')\n  , has            = require('./_has')\n  , Iterators      = require('./_iterators')\n  , $iterCreate    = require('./_iter-create')\n  , setToStringTag = require('./_set-to-string-tag')\n  , getPrototypeOf = require('./_object-gpo')\n  , ITERATOR       = require('./_wks')('iterator')\n  , BUGGY          = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next`\n  , FF_ITERATOR    = '@@iterator'\n  , KEYS           = 'keys'\n  , VALUES         = 'values';\n\nvar returnThis = function(){ return this; };\n\nmodule.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED){\n  $iterCreate(Constructor, NAME, next);\n  var getMethod = function(kind){\n    if(!BUGGY && kind in proto)return proto[kind];\n    switch(kind){\n      case KEYS: return function keys(){ return new Constructor(this, kind); };\n      case VALUES: return function values(){ return new Constructor(this, kind); };\n    } return function entries(){ return new Constructor(this, kind); };\n  };\n  var TAG        = NAME + ' Iterator'\n    , DEF_VALUES = DEFAULT == VALUES\n    , VALUES_BUG = false\n    , proto      = Base.prototype\n    , $native    = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]\n    , $default   = $native || getMethod(DEFAULT)\n    , $entries   = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined\n    , $anyNative = NAME == 'Array' ? proto.entries || $native : $native\n    , methods, key, IteratorPrototype;\n  // Fix native\n  if($anyNative){\n    IteratorPrototype = getPrototypeOf($anyNative.call(new Base));\n    if(IteratorPrototype !== Object.prototype){\n      // Set @@toStringTag to native iterators\n      setToStringTag(IteratorPrototype, TAG, true);\n      // fix for some old engines\n      if(!LIBRARY && !has(IteratorPrototype, ITERATOR))hide(IteratorPrototype, ITERATOR, returnThis);\n    }\n  }\n  // fix Array#{values, @@iterator}.name in V8 / FF\n  if(DEF_VALUES && $native && $native.name !== VALUES){\n    VALUES_BUG = true;\n    $default = function values(){ return $native.call(this); };\n  }\n  // Define iterator\n  if((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])){\n    hide(proto, ITERATOR, $default);\n  }\n  // Plug for library\n  Iterators[NAME] = $default;\n  Iterators[TAG]  = returnThis;\n  if(DEFAULT){\n    methods = {\n      values:  DEF_VALUES ? $default : getMethod(VALUES),\n      keys:    IS_SET     ? $default : getMethod(KEYS),\n      entries: $entries\n    };\n    if(FORCED)for(key in methods){\n      if(!(key in proto))redefine(proto, key, methods[key]);\n    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n  }\n  return methods;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_iter-define.js\n// module id = 41\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_iter-define.js\n// module id = 41\n// module chunks = 0 1","exports.f = {}.propertyIsEnumerable;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_object-pie.js\n// module id = 42\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_object-pie.js\n// module id = 42\n// module chunks = 0 1","var def = require('./_object-dp').f\n  , has = require('./_has')\n  , TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function(it, tag, stat){\n  if(it && !has(it = stat ? it : it.prototype, TAG))def(it, TAG, {configurable: true, value: tag});\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_set-to-string-tag.js\n// module id = 43\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_set-to-string-tag.js\n// module id = 43\n// module chunks = 0 1","var global = require('./_global')\n  , SHARED = '__core-js_shared__'\n  , store  = global[SHARED] || (global[SHARED] = {});\nmodule.exports = function(key){\n  return store[key] || (store[key] = {});\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_shared.js\n// module id = 44\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_shared.js\n// module id = 44\n// module chunks = 0 1","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer')\n  , min       = Math.min;\nmodule.exports = function(it){\n  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_to-length.js\n// module id = 45\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_to-length.js\n// module id = 45\n// module chunks = 0 1","var id = 0\n  , px = Math.random();\nmodule.exports = function(key){\n  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_uid.js\n// module id = 46\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_uid.js\n// module id = 46\n// module chunks = 0 1","var classof   = require('./_classof')\n  , ITERATOR  = require('./_wks')('iterator')\n  , Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function(it){\n  if(it != undefined)return it[ITERATOR]\n    || it['@@iterator']\n    || Iterators[classof(it)];\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/core.get-iterator-method.js\n// module id = 47\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/core.get-iterator-method.js\n// module id = 47\n// module chunks = 0 1","require('./es6.array.iterator');\nvar global        = require('./_global')\n  , hide          = require('./_hide')\n  , Iterators     = require('./_iterators')\n  , TO_STRING_TAG = require('./_wks')('toStringTag');\n\nfor(var collections = ['NodeList', 'DOMTokenList', 'MediaList', 'StyleSheetList', 'CSSRuleList'], i = 0; i < 5; i++){\n  var NAME       = collections[i]\n    , Collection = global[NAME]\n    , proto      = Collection && Collection.prototype;\n  if(proto && !proto[TO_STRING_TAG])hide(proto, TO_STRING_TAG, NAME);\n  Iterators[NAME] = Iterators.Array;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/web.dom.iterable.js\n// module id = 48\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/web.dom.iterable.js\n// module id = 48\n// module chunks = 0 1","/**\n * @license\n * Copyright 2016 Leif Olsen. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * This code is built with Google Material Design Lite,\n * which is Licensed under the Apache License, Version 2.0\n */\n\n/**\n * A WAI-ARIA friendly accordion component.\n * An accordion is a collection of expandable panels associated with a common outer container. Panels consist\n * of a header and an associated content region or tabpanel. The primary use of an Accordion is to present multiple sections\n * of content on a single page without scrolling, where all of the sections are peers in the application or object hierarchy.\n * The general look is similar to a tree where each root tree node is an expandable accordion header. The user navigates\n * and makes the contents of each panel visible (or not) by interacting with the Accordion Header\n */\n\nimport {\n  VK_ENTER,\n  VK_SPACE,\n  VK_END,\n  VK_HOME,\n  VK_ARROW_LEFT,\n  VK_ARROW_UP,\n  VK_ARROW_RIGHT,\n  VK_ARROW_DOWN,\n  IS_EXPANDED,\n  IS_UPGRADED,\n  ARIA_MULTISELECTABLE,\n  ARIA_EXPANDED,\n  ARIA_HIDDEN,\n  ARIA_SELECTED\n} from '../utils/constants';\n\n\n(function() {\n  'use strict';\n  const ACCORDION            = 'mdlext-accordion';\n  const ACCORDION_VERTICAL   = 'mdlext-accordion--vertical';\n  const ACCORDION_HORIZONTAL = 'mdlext-accordion--horizontal';\n  const PANEL                = 'mdlext-accordion__panel';\n  const PANEL_ROLE           = 'presentation';\n  const TAB                  = 'mdlext-accordion__tab';\n  const TAB_CAPTION          = 'mdlext-accordion__tab__caption';\n  const TAB_ROLE             = 'tab';\n  const TABPANEL             = 'mdlext-accordion__tabpanel';\n  const TABPANEL_ROLE        = 'tabpanel';\n  const RIPPLE_EFFECT        = 'mdlext-js-ripple-effect';\n  const RIPPLE               = 'mdlext-accordion__tab--ripple';\n  const ANIMATION_EFFECT     = 'mdlext-js-animation-effect';\n  const ANIMATION            = 'mdlext-accordion__tabpanel--animation';\n\n  /**\n   * @constructor\n   * @param {Element} element The element that will be upgraded.\n   */\n  const MaterialExtAccordion = function MaterialExtAccordion( element ) {\n\n    // Stores the Accordion HTML element.\n    this.element_ = element;\n\n    // Initialize instance.\n    this.init();\n  };\n  window['MaterialExtAccordion'] = MaterialExtAccordion;\n\n\n  // Helpers\n  const accordionPanelElements = ( element ) => {\n    if(!element) {\n      return {\n        panel: null,\n        tab: null,\n        tabpanel: null\n      };\n    }\n    else if (element.classList.contains(PANEL)) {\n      return {\n        panel: element,\n        tab: element.querySelector(`.${TAB}`),\n        tabpanel: element.querySelector(`.${TABPANEL}`)\n      };\n    }\n    else {\n      return {\n        panel: element.parentNode,\n        tab: element.parentNode.querySelector(`.${TAB}`),\n        tabpanel: element.parentNode.querySelector(`.${TABPANEL}`)\n      };\n    }\n  };\n\n\n  // Private methods.\n\n  /**\n   * Handles custom command event, 'open', 'close', 'toggle' or upgrade\n   * @param event. A custom event\n   * @private\n   */\n  MaterialExtAccordion.prototype.commandHandler_ = function( event ) {\n    event.preventDefault();\n    event.stopPropagation();\n\n    if(event && event.detail) {\n      this.command(event.detail);\n    }\n  };\n\n  /**\n   * Dispatch toggle event\n   * @param {string} state\n   * @param {Element} tab\n   * @param {Element} tabpanel\n   * @private\n   */\n  MaterialExtAccordion.prototype.dispatchToggleEvent_ = function ( state, tab, tabpanel ) {\n    const ce = new CustomEvent('toggle', {\n      bubbles: true,\n      cancelable: true,\n      detail: { state: state, tab: tab, tabpanel: tabpanel }\n    });\n    this.element_.dispatchEvent(ce);\n  };\n\n  /**\n   * Open tab\n   * @param {Element} panel\n   * @param {Element} tab\n   * @param {Element} tabpanel\n   * @private\n   */\n  MaterialExtAccordion.prototype.openTab_ = function( panel, tab, tabpanel ) {\n    panel.classList.add(IS_EXPANDED);\n    tab.setAttribute(ARIA_EXPANDED, 'true');\n    tabpanel.removeAttribute('hidden');\n    tabpanel.setAttribute(ARIA_HIDDEN, 'false');\n    this.dispatchToggleEvent_('open', tab, tabpanel);\n  };\n\n  /**\n   * Close tab\n   * @param {Element} panel\n   * @param {Element} tab\n   * @param {Element} tabpanel\n   * @private\n   */\n  MaterialExtAccordion.prototype.closeTab_ = function( panel, tab, tabpanel ) {\n    panel.classList.remove(IS_EXPANDED);\n    tab.setAttribute(ARIA_EXPANDED, 'false');\n    tabpanel.setAttribute('hidden', '');\n    tabpanel.setAttribute(ARIA_HIDDEN, 'true');\n    this.dispatchToggleEvent_('close', tab, tabpanel);\n  };\n\n  /**\n   * Toggle tab\n   * @param {Element} panel\n   * @param {Element} tab\n   * @param {Element} tabpanel\n   * @private\n   */\n  MaterialExtAccordion.prototype.toggleTab_ = function( panel, tab, tabpanel ) {\n    if( !(this.element_.hasAttribute('disabled') || tab.hasAttribute('disabled')) ) {\n      if (tab.getAttribute(ARIA_EXPANDED).toLowerCase() === 'true') {\n        this.closeTab_(panel, tab, tabpanel);\n      }\n      else {\n        if (this.element_.getAttribute(ARIA_MULTISELECTABLE).toLowerCase() !== 'true') {\n          this.closeTabs_();\n        }\n        this.openTab_(panel, tab, tabpanel);\n      }\n    }\n  };\n\n  /**\n   * Open tabs\n   * @private\n   */\n  MaterialExtAccordion.prototype.openTabs_ = function() {\n    if (this.element_.getAttribute(ARIA_MULTISELECTABLE).toLowerCase() === 'true') {\n      [...this.element_.querySelectorAll(`.${ACCORDION} > .${PANEL}`)]\n        .filter(panel => !panel.classList.contains(IS_EXPANDED))\n        .forEach(closedItem => {\n          const tab = closedItem.querySelector(`.${TAB}`);\n          if (!tab.hasAttribute('disabled')) {\n            this.openTab_(closedItem, tab, closedItem.querySelector(`.${TABPANEL}`));\n          }\n        });\n    }\n  };\n\n  /**\n   * Close tabs\n   * @private\n   */\n  MaterialExtAccordion.prototype.closeTabs_ = function() {\n    [...this.element_.querySelectorAll(`.${ACCORDION} > .${PANEL}.${IS_EXPANDED}`)]\n      .forEach( panel => {\n        const tab = panel.querySelector(`.${TAB}`);\n        if(!tab.hasAttribute('disabled')) {\n          this.closeTab_(panel, tab, panel.querySelector(`.${TABPANEL}`));\n        }\n      });\n  };\n\n\n  // Public methods.\n\n  /**\n   * Upgrade an individual accordion tab\n   * @public\n   * @param {Element} tabElement The HTML element for the accordion panel.\n   */\n  MaterialExtAccordion.prototype.upgradeTab = function( tabElement ) {\n\n    const { panel, tab, tabpanel } = accordionPanelElements( tabElement );\n\n    const disableTab = () => {\n      panel.classList.remove(IS_EXPANDED);\n      tab.setAttribute('tabindex', '-1');\n      tab.setAttribute(ARIA_EXPANDED, 'false');\n      tabpanel.setAttribute('hidden', '');\n      tabpanel.setAttribute(ARIA_HIDDEN, 'true');\n    };\n\n    const enableTab = () => {\n      if(!tab.hasAttribute(ARIA_EXPANDED)) {\n        tab.setAttribute(ARIA_EXPANDED, 'false');\n      }\n\n      tab.setAttribute('tabindex', '0');\n\n      if(tab.getAttribute(ARIA_EXPANDED).toLowerCase() === 'true') {\n        panel.classList.add(IS_EXPANDED);\n        tabpanel.removeAttribute('hidden');\n        tabpanel.setAttribute(ARIA_HIDDEN, 'false');\n      }\n      else {\n        panel.classList.remove(IS_EXPANDED);\n        tabpanel.setAttribute('hidden', '');\n        tabpanel.setAttribute(ARIA_HIDDEN, 'true');\n      }\n    };\n\n    // In horizontal layout, caption must have a max-width defined to prevent pushing elements to the right of the caption out of view.\n    // In JsDom, offsetWidth and offsetHeight properties do not work, so this function is not testable.\n    /* istanbul ignore next */\n    const calcMaxTabCaptionWidth = () => {\n\n      const tabCaption = tab.querySelector(`.${TAB_CAPTION}`);\n      if(tabCaption !== null) {\n        const w = [...tab.children]\n          .filter( el => el.classList && !el.classList.contains(TAB_CAPTION) )\n          .reduce( (v, el) => v + el.offsetWidth, 0 );\n\n        const maxWidth = tab.clientHeight - w;\n        if(maxWidth > 0) {\n          tabCaption.style['max-width'] = `${maxWidth}px`;\n        }\n      }\n    };\n\n    const selectTab = () => {\n      if( !tab.hasAttribute(ARIA_SELECTED) ) {\n        [...this.element_.querySelectorAll(`.${TAB}[aria-selected=\"true\"]`)].forEach(\n          selectedTab => selectedTab.removeAttribute(ARIA_SELECTED)\n        );\n        tab.setAttribute(ARIA_SELECTED, 'true');\n      }\n    };\n\n    const tabClickHandler = () => {\n      this.toggleTab_(panel, tab, tabpanel);\n      selectTab();\n    };\n\n    const tabFocusHandler = () => {\n      selectTab();\n    };\n\n    const tabpanelClickHandler = () => {\n      selectTab();\n    };\n\n    const tabpanelFocusHandler = () => {\n      selectTab();\n    };\n\n    const tabKeydownHandler = e => {\n\n      if(this.element_.hasAttribute('disabled')) {\n        return;\n      }\n\n      if ( e.keyCode === VK_END        || e.keyCode === VK_HOME\n        || e.keyCode === VK_ARROW_UP   || e.keyCode === VK_ARROW_LEFT\n        || e.keyCode === VK_ARROW_DOWN || e.keyCode === VK_ARROW_RIGHT ) {\n\n        let nextTab = null;\n        let keyCode = e.keyCode;\n\n        if (keyCode === VK_HOME) {\n          nextTab = this.element_.querySelector(`.${PANEL}:first-child > .${TAB}`);\n          if(nextTab && nextTab.hasAttribute('disabled')) {\n            nextTab = null;\n            keyCode = VK_ARROW_DOWN;\n          }\n        }\n        else if (keyCode === VK_END) {\n          nextTab = this.element_.querySelector(`.${PANEL}:last-child > .${TAB}`);\n          if(nextTab && nextTab.hasAttribute('disabled')) {\n            nextTab = null;\n            keyCode = VK_ARROW_UP;\n          }\n        }\n\n        if(!nextTab) {\n          let nextPanel = panel;\n\n          do {\n            if (keyCode === VK_ARROW_UP || keyCode === VK_ARROW_LEFT) {\n              nextPanel = nextPanel.previousElementSibling;\n              if(!nextPanel) {\n                nextPanel = this.element_.querySelector(`.${PANEL}:last-child`);\n              }\n              if (nextPanel) {\n                nextTab = nextPanel.querySelector(`.${PANEL} > .${TAB}`);\n              }\n            }\n            else if (keyCode === VK_ARROW_DOWN || keyCode === VK_ARROW_RIGHT) {\n              nextPanel = nextPanel.nextElementSibling;\n              if(!nextPanel) {\n                nextPanel = this.element_.querySelector(`.${PANEL}:first-child`);\n              }\n              if (nextPanel) {\n                nextTab = nextPanel.querySelector(`.${PANEL} > .${TAB}`);\n              }\n            }\n\n            if(nextTab && nextTab.hasAttribute('disabled')) {\n              nextTab = null;\n            }\n            else {\n              break;\n            }\n          }\n          while(nextPanel !== panel);\n        }\n\n        if (nextTab) {\n          e.preventDefault();\n          e.stopPropagation();\n          nextTab.focus();\n\n          // Workaround for JSDom testing:\n          // In JsDom 'element.focus()' does not trigger any focus event\n          if(!nextTab.hasAttribute(ARIA_SELECTED)) {\n\n            [...this.element_.querySelectorAll(`.${TAB}[aria-selected=\"true\"]`)]\n              .forEach( selectedTab => selectedTab.removeAttribute(ARIA_SELECTED) );\n\n            nextTab.setAttribute(ARIA_SELECTED, 'true');\n          }\n        }\n      }\n      else if (e.keyCode === VK_ENTER || e.keyCode === VK_SPACE) {\n        e.preventDefault();\n        e.stopPropagation();\n        this.toggleTab_(panel, tab, tabpanel);\n      }\n    };\n\n    if(tab === null) {\n      throw new Error('There must be a tab element for each accordion panel.');\n    }\n\n    if(tabpanel === null) {\n      throw new Error('There must be a tabpanel element for each accordion panel.');\n    }\n\n    panel.setAttribute('role', PANEL_ROLE);\n    tab.setAttribute('role', TAB_ROLE);\n    tabpanel.setAttribute('role', TABPANEL_ROLE);\n\n    if(tab.hasAttribute('disabled')) {\n      disableTab();\n    }\n    else {\n      enableTab();\n    }\n\n    if( this.element_.classList.contains(ACCORDION_HORIZONTAL)) {\n      calcMaxTabCaptionWidth();\n    }\n\n    if (this.element_.classList.contains(RIPPLE_EFFECT)) {\n      tab.classList.add(RIPPLE);\n    }\n\n    if (this.element_.classList.contains(ANIMATION_EFFECT)) {\n      tabpanel.classList.add(ANIMATION);\n    }\n\n    // Remove listeners, just in case ...\n    tab.removeEventListener('click', tabClickHandler);\n    tab.removeEventListener('focus', tabFocusHandler);\n    tab.removeEventListener('keydown', tabKeydownHandler);\n    tabpanel.removeEventListener('click', tabpanelClickHandler);\n    tabpanel.removeEventListener('focus', tabpanelFocusHandler);\n\n    tab.addEventListener('click', tabClickHandler);\n    tab.addEventListener('focus', tabFocusHandler);\n    tab.addEventListener('keydown', tabKeydownHandler);\n    tabpanel.addEventListener('click', tabpanelClickHandler, true);\n    tabpanel.addEventListener('focus', tabpanelFocusHandler, true);\n  };\n  MaterialExtAccordion.prototype['upgradeTab'] = MaterialExtAccordion.prototype.upgradeTab;\n\n\n  /**\n   * Execute command\n   * @param detail\n   */\n  MaterialExtAccordion.prototype.command = function( detail ) {\n\n    const openTab = tabElement => {\n\n      if(tabElement === undefined) {\n        this.openTabs_();\n      }\n      else if(tabElement !== null) {\n        const { panel, tab, tabpanel } = accordionPanelElements( tabElement );\n        if(tab.getAttribute(ARIA_EXPANDED).toLowerCase() !== 'true') {\n          this.toggleTab_(panel, tab, tabpanel);\n        }\n      }\n    };\n\n    const closeTab = tabElement => {\n      if(tabElement === undefined) {\n        this.closeTabs_();\n      }\n      else if(tabElement !== null) {\n        const { panel, tab, tabpanel } = accordionPanelElements( tabElement );\n\n        if(tab.getAttribute(ARIA_EXPANDED).toLowerCase() === 'true') {\n          this.toggleTab_(panel, tab, tabpanel);\n        }\n      }\n    };\n\n    const toggleTab = tabElement => {\n      if(tabElement) {\n        const { panel, tab, tabpanel } = accordionPanelElements( tabElement );\n        this.toggleTab_(panel, tab, tabpanel);\n      }\n    };\n\n\n    if(detail && detail.action) {\n      const { action, target } = detail;\n\n      switch (action.toLowerCase()) {\n        case 'open':\n          openTab(target);\n          break;\n        case 'close':\n          closeTab(target);\n          break;\n        case 'toggle':\n          toggleTab(target);\n          break;\n        case 'upgrade':\n          if(target) {\n            this.upgradeTab(target);\n          }\n          break;\n        default:\n          throw new Error(`Unknown action \"${action}\". Action must be one of \"open\", \"close\", \"toggle\" or \"upgrade\"`);\n      }\n    }\n  };\n  MaterialExtAccordion.prototype['command'] = MaterialExtAccordion.prototype.command;\n\n\n  /**\n   * Initialize component\n   */\n  MaterialExtAccordion.prototype.init = function() {\n    if (this.element_) {\n      // Do the init required for this component to work\n      if( !(this.element_.classList.contains(ACCORDION_HORIZONTAL) || this.element_.classList.contains(ACCORDION_VERTICAL))) {\n        throw new Error(`Accordion must have one of the classes \"${ACCORDION_HORIZONTAL}\" or \"${ACCORDION_VERTICAL}\"`);\n      }\n\n      this.element_.setAttribute('role', 'tablist');\n\n      if(!this.element_.hasAttribute(ARIA_MULTISELECTABLE)) {\n        this.element_.setAttribute(ARIA_MULTISELECTABLE, 'false');\n      }\n\n      this.element_.removeEventListener('command', this.commandHandler_);\n      this.element_.addEventListener('command', this.commandHandler_.bind(this), false);\n\n      [...this.element_.querySelectorAll(`.${ACCORDION} > .${PANEL}`)].forEach( panel => this.upgradeTab(panel) );\n\n      // Set upgraded flag\n      this.element_.classList.add(IS_UPGRADED);\n    }\n  };\n\n\n  /*\n   * Downgrade component\n   * E.g remove listeners and clean up resources\n   *\n   * Nothing to downgrade\n   *\n   MaterialExtAccordion.prototype.mdlDowngrade_ = function() {\n     'use strict';\n     console.log('***** MaterialExtAccordion.mdlDowngrade');\n   };\n   */\n\n\n  // The component registers itself. It can assume componentHandler is available\n  // in the global scope.\n  /* eslint no-undef: 0 */\n  componentHandler.register({\n    constructor: MaterialExtAccordion,\n    classAsString: 'MaterialExtAccordion',\n    cssClass: 'mdlext-js-accordion',\n    widget: true\n  });\n})();\n\n\n\n// WEBPACK FOOTER //\n// ./src/accordion/accordion.js\n\n\n// WEBPACK FOOTER //\n// ./src/accordion/accordion.js","/**\n * @license\n * Copyright 2016 Leif Olsen. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * This code is built with Google Material Design Lite,\n * which is Licensed under the Apache License, Version 2.0\n */\n\n/**\n * Image carousel\n */\n\nimport intervalFunction from '../utils/interval-function';\nimport { inOutQuintic } from '../utils/easing';\nimport { jsonStringToObject} from '../utils/json-utils';\nimport {\n  VK_TAB,\n  VK_ENTER,\n  VK_ESC,\n  VK_SPACE,\n  VK_PAGE_UP,\n  VK_PAGE_DOWN,\n  VK_END,\n  VK_HOME,\n  VK_ARROW_LEFT,\n  VK_ARROW_UP,\n  VK_ARROW_RIGHT,\n  VK_ARROW_DOWN,\n  IS_UPGRADED,\n  IS_FOCUSED,\n  MDL_RIPPLE,\n  MDL_RIPPLE_COMPONENT,\n  MDL_RIPPLE_EFFECT,\n  MDL_RIPPLE_EFFECT_IGNORE_EVENTS\n} from '../utils/constants';\n\nconst MDL_RIPPLE_CONTAINER = 'mdlext-carousel__slide__ripple-container';\n\n\n(function() {\n  'use strict';\n\n  //const CAROUSEL = 'mdlext-carousel';\n  const SLIDE      = 'mdlext-carousel__slide';\n  const ROLE       = 'list';\n  const SLIDE_ROLE = 'listitem';\n\n\n  /**\n   * @constructor\n   * @param {Element} element The element that will be upgraded.\n   */\n  const MaterialExtCarousel = function MaterialExtCarousel(element) {\n    // Stores the element.\n    this.element_ = element;\n\n    // Default config\n    this.config_ = {\n      interactive  : true,\n      autostart    : false,\n      type         : 'slide',\n      interval     : 1000,\n      animationLoop: intervalFunction(1000)\n    };\n\n    this.scrollAnimation_ = intervalFunction(33);\n\n    // Initialize instance.\n    this.init();\n  };\n\n  window['MaterialExtCarousel'] = MaterialExtCarousel;\n\n\n  /**\n   * Start slideshow animation\n   * @private\n   */\n  MaterialExtCarousel.prototype.startSlideShow_ = function() {\n\n    const nextSlide = () => {\n      let slide = this.element_.querySelector(`.${SLIDE}[aria-selected]`);\n      if(slide) {\n        slide.removeAttribute('aria-selected');\n        slide = slide.nextElementSibling;\n      }\n      if(!slide) {\n        slide = this.element_.querySelector(`.${SLIDE}:first-child`);\n        this.animateScroll_(0);\n      }\n      if(slide) {\n        this.moveSlideIntoViewport_(slide);\n        slide.setAttribute('aria-selected', '');\n        this.emitSelectEvent_('next', null, slide);\n        return true;\n      }\n      return false;\n    };\n\n    const nextScroll = direction => {\n      let nextDirection = direction;\n\n      if('next' === direction &&  this.element_.scrollLeft === this.element_.scrollWidth - this.element_.clientWidth) {\n        nextDirection = 'prev';\n      }\n      else if(this.element_.scrollLeft === 0) {\n        nextDirection = 'next';\n      }\n      const x = 'next' === nextDirection\n        ?  Math.min(this.element_.scrollLeft + this.element_.clientWidth, this.element_.scrollWidth - this.element_.clientWidth)\n        :  Math.max(this.element_.scrollLeft - this.element_.clientWidth, 0);\n\n      this.animateScroll_(x, 1000);\n      return nextDirection;\n    };\n\n\n    if(!this.config_.animationLoop.started) {\n      this.config_.animationLoop.interval = this.config_.interval;\n      let direction = 'next';\n\n      if('scroll' === this.config_.type) {\n        this.config_.animationLoop.start( () => {\n          direction = nextScroll(direction);\n          return true; // It runs until cancelSlideShow_ is triggered\n        });\n      }\n      else {\n        nextSlide();\n        this.config_.animationLoop.start( () => {\n          return nextSlide(); // It runs until cancelSlideShow_ is triggered\n        });\n      }\n    }\n\n    // TODO: Pause animation when carousel is not in browser viewport or user changes tab\n  };\n\n  /**\n   * Cancel slideshow if running. Emmits a 'pause' event\n   * @private\n   */\n  MaterialExtCarousel.prototype.cancelSlideShow_ = function() {\n    if(this.config_.animationLoop.started) {\n      this.config_.animationLoop.stop();\n      this.emitSelectEvent_('pause', VK_ESC, this.element_.querySelector(`.${SLIDE}[aria-selected]`));\n    }\n  };\n\n  /**\n   * Animate scroll\n   * @param newPosition\n   * @param newDuration\n   * @param completedCallback\n   * @private\n   */\n  MaterialExtCarousel.prototype.animateScroll_ = function( newPosition, newDuration, completedCallback ) {\n\n    const start = this.element_.scrollLeft;\n    const distance = newPosition - start;\n\n    if(distance !== 0) {\n      const duration = Math.max(Math.min(Math.abs(distance), newDuration||400), 100); // duration is between 100 and newDuration||400ms||distance\n      let t = 0;\n      this.scrollAnimation_.stop();\n      this.scrollAnimation_.start( timeElapsed => {\n        t += timeElapsed;\n        if(t < duration) {\n          this.element_.scrollLeft = inOutQuintic(t, start, distance, duration);\n          return true;\n        }\n        else {\n          this.element_.scrollLeft = newPosition;\n          if(completedCallback) {\n            completedCallback();\n          }\n          return false;\n        }\n      });\n    }\n    else {\n      if(completedCallback) {\n        completedCallback();\n      }\n    }\n  };\n\n  /**\n   * Execute commend\n   * @param event\n   * @private\n   */\n  MaterialExtCarousel.prototype.command_ = function( event ) {\n    let x = 0;\n    let slide = null;\n    const a = event.detail.action.toLowerCase();\n\n    // Cancel slideshow if running\n    this.cancelSlideShow_();\n\n    switch (a) {\n      case 'first':\n        slide = this.element_.querySelector(`.${SLIDE}:first-child`);\n        break;\n\n      case 'last':\n        x = this.element_.scrollWidth - this.element_.clientWidth;\n        slide = this.element_.querySelector(`.${SLIDE}:last-child`);\n        break;\n\n      case 'scroll-prev':\n        x = Math.max(this.element_.scrollLeft - this.element_.clientWidth, 0);\n        break;\n\n      case 'scroll-next':\n        x = Math.min(this.element_.scrollLeft + this.element_.clientWidth, this.element_.scrollWidth - this.element_.clientWidth);\n        break;\n\n      case 'next':\n      case 'prev':\n        slide = this.element_.querySelector(`.${SLIDE}[aria-selected]`);\n        if(slide) {\n          slide = a === 'next' ? slide.nextElementSibling : slide.previousElementSibling;\n          this.setAriaSelected_(slide);\n          this.emitSelectEvent_(a, null,  slide);\n        }\n        return;\n\n      case 'play':\n        Object.assign(this.config_, event.detail);\n        this.startSlideShow_();\n        return;\n\n      case 'pause':\n        return;\n\n      default:\n        return;\n    }\n\n    this.animateScroll_(x, undefined, () => {\n      if ('scroll-next' === a || 'scroll-prev' === a) {\n        const slides = this.getSlidesInViewport_();\n        if (slides.length > 0) {\n          slide = 'scroll-next' === a ? slides[0] : slides[slides.length - 1];\n        }\n      }\n      this.setAriaSelected_(slide);\n      this.emitSelectEvent_(a, null, slide);\n    });\n  };\n\n  /**\n   * Handles custom command event, 'scroll-prev', 'scroll-next', 'first', 'last', next, prev, play, pause\n   * @param event. A custom event\n   * @private\n   */\n  MaterialExtCarousel.prototype.commandHandler_ = function( event ) {\n    event.preventDefault();\n    event.stopPropagation();\n    if(event.detail && event.detail.action) {\n      this.command_(event);\n    }\n  };\n\n  /**\n   * Handle keypress\n   * @param event\n   * @private\n   */\n  MaterialExtCarousel.prototype.keyDownHandler_ = function(event) {\n\n    if (event && event.target && event.target !== this.element_) {\n\n      let action = 'first';\n\n      if ( event.keyCode === VK_HOME    || event.keyCode === VK_END\n        || event.keyCode === VK_PAGE_UP || event.keyCode === VK_PAGE_DOWN) {\n\n        event.preventDefault();\n        if (event.keyCode === VK_END) {\n          action = 'last';\n        }\n        else if (event.keyCode === VK_PAGE_UP) {\n          action = 'scroll-prev';\n        }\n        else if (event.keyCode === VK_PAGE_DOWN) {\n          action = 'scroll-next';\n        }\n\n        const cmd = new CustomEvent('select', {\n          detail: {\n            action: action,\n          }\n        });\n        this.command_(cmd);\n      }\n      else if ( event.keyCode === VK_TAB\n        || event.keyCode === VK_ENTER      || event.keyCode === VK_SPACE\n        || event.keyCode === VK_ARROW_UP   || event.keyCode === VK_ARROW_LEFT\n        || event.keyCode === VK_ARROW_DOWN || event.keyCode === VK_ARROW_RIGHT) {\n\n        let slide = getSlide_(event.target);\n\n        if(!slide) {\n          return;\n        }\n\n        // Cancel slideshow if running\n        this.cancelSlideShow_();\n\n        switch (event.keyCode) {\n          case VK_ARROW_UP:\n          case VK_ARROW_LEFT:\n            action = 'prev';\n            slide = slide.previousElementSibling;\n            break;\n\n          case VK_ARROW_DOWN:\n          case VK_ARROW_RIGHT:\n            action = 'next';\n            slide = slide.nextElementSibling;\n            break;\n\n          case VK_TAB:\n            if (event.shiftKey) {\n              action = 'prev';\n              slide = slide.previousElementSibling;\n            }\n            else {\n              action = 'next';\n              slide = slide.nextElementSibling;\n            }\n            break;\n\n          case VK_SPACE:\n          case VK_ENTER:\n            action = 'select';\n            break;\n        }\n\n        if(slide) {\n          event.preventDefault();\n          setFocus_(slide);\n          this.emitSelectEvent_(action, event.keyCode, slide);\n        }\n      }\n    }\n  };\n\n  /**\n   * Handle dragging\n   * @param event\n   * @private\n   */\n  MaterialExtCarousel.prototype.dragHandler_ = function(event) {\n    event.preventDefault();\n\n    // Cancel slideshow if running\n    this.cancelSlideShow_();\n\n    let updating = false;\n    let rAFDragId = 0;\n\n    const startX = event.clientX || (event.touches !== undefined ? event.touches[0].clientX : 0);\n    let prevX = startX;\n    const targetElement = event.target;\n\n    const update = e => {\n      const currentX = (e.clientX || (e.touches !== undefined ? e.touches[0].clientX : 0));\n      const dx = prevX - currentX;\n\n      if(dx < 0) {\n        this.element_.scrollLeft = Math.max(this.element_.scrollLeft + dx, 0);\n      }\n      else if(dx > 0) {\n        this.element_.scrollLeft = Math.min(this.element_.scrollLeft + dx, this.element_.scrollWidth - this.element_.clientWidth);\n      }\n\n      prevX = currentX;\n      updating = false;\n    };\n\n    // drag handler\n    const drag = e => {\n      e.preventDefault();\n\n      if(!updating) {\n        rAFDragId = window.requestAnimationFrame( () => update(e));\n        updating = true;\n      }\n    };\n\n    // end drag handler\n    const endDrag = e => {\n      e.preventDefault();\n\n      this.element_.removeEventListener('mousemove', drag);\n      this.element_.removeEventListener('touchmove', drag);\n      window.removeEventListener('mouseup', endDrag);\n      window.removeEventListener('touchend', endDrag);\n\n      // cancel any existing drag rAF, see: http://www.html5rocks.com/en/tutorials/speed/animations/\n      window.cancelAnimationFrame(rAFDragId);\n\n      const slide = getSlide_(targetElement);\n      setFocus_(slide);\n      this.emitSelectEvent_('click', null,  slide);\n    };\n\n    this.element_.addEventListener('mousemove', drag);\n    this.element_.addEventListener('touchmove', drag);\n    window.addEventListener('mouseup', endDrag);\n    window.addEventListener('touchend',endDrag);\n  };\n\n  /**\n   * Handle click\n   * @param event\n   * @private\n   */\n  MaterialExtCarousel.prototype.clickHandler_ = function(event) {\n    // Click is handled by drag\n    event.preventDefault();\n  };\n\n  /**\n   * Handle focus\n   * @param event\n   * @private\n   */\n  MaterialExtCarousel.prototype.focusHandler_ = function(event) {\n    const slide = getSlide_(event.target);\n    if(slide) {\n      // The last focused/selected slide has 'aria-selected', even if focus is lost\n      this.setAriaSelected_(slide);\n      slide.classList.add(IS_FOCUSED);\n    }\n  };\n\n  /**\n   * Handle blur\n   * @param event\n   * @private\n   */\n  MaterialExtCarousel.prototype.blurHandler_ = function(event) {\n    const slide = getSlide_(event.target);\n    if(slide) {\n      slide.classList.remove(IS_FOCUSED);\n    }\n  };\n\n  /**\n   * Emits a custeom 'select' event\n   * @param command\n   * @param keyCode\n   * @param slide\n   * @private\n   */\n  MaterialExtCarousel.prototype.emitSelectEvent_ = function(command, keyCode, slide) {\n\n    if(slide) {\n      this.moveSlideIntoViewport_(slide);\n\n      const evt = new CustomEvent('select', {\n        bubbles: true,\n        cancelable: true,\n        detail: {\n          command: command,\n          keyCode: keyCode,\n          source: slide\n        }\n      });\n      this.element_.dispatchEvent(evt);\n    }\n  };\n\n  /**\n   * Get the first visible slide in component viewport\n   * @private\n   */\n  MaterialExtCarousel.prototype.getSlidesInViewport_ = function() {\n    const carouselRect = this.element_.getBoundingClientRect();\n\n    const slidesInViewport = [...this.element_.querySelectorAll(`.${SLIDE}`)].filter( slide => {\n      const slideRect = slide.getBoundingClientRect();\n      return slideRect.left >= carouselRect.left && slideRect.right <= carouselRect.right;\n    });\n    return slidesInViewport;\n  };\n\n  /**\n   * Move slide into component viewport - if needed\n   * @param slide\n   * @private\n   */\n  MaterialExtCarousel.prototype.moveSlideIntoViewport_ = function(slide) {\n    const carouselRect = this.element_.getBoundingClientRect();\n    const slideRect = slide.getBoundingClientRect();\n\n    if(slideRect.left < carouselRect.left) {\n      const x = this.element_.scrollLeft - (carouselRect.left - slideRect.left);\n      this.animateScroll_(x);\n    }\n    else if(slideRect.right > carouselRect.right) {\n      const x = this.element_.scrollLeft - (carouselRect.right - slideRect.right);\n      this.animateScroll_(x);\n    }\n  };\n\n\n  /**\n   * Removes 'aria-selected' from all slides in carousel\n   * @private\n   */\n  MaterialExtCarousel.prototype.setAriaSelected_ = function(slide) {\n    if(slide) {\n      [...this.element_.querySelectorAll(`.${SLIDE}[aria-selected]`)].forEach(\n        slide => slide.removeAttribute('aria-selected')\n      );\n      slide.setAttribute('aria-selected', '');\n    }\n  };\n\n  /**\n   * Removes event listeners\n   * @private\n   */\n  MaterialExtCarousel.prototype.removeListeners_ = function() {\n    this.element_.removeEventListener('focus', this.focusHandler_);\n    this.element_.removeEventListener('blur', this.blurHandler_);\n    this.element_.removeEventListener('keydown', this.keyDownHandler_);\n    this.element_.removeEventListener('mousedown', this.dragHandler_);\n    this.element_.removeEventListener('touchstart', this.dragHandler_);\n    this.element_.removeEventListener('click', this.clickHandler_, false);\n    this.element_.removeEventListener('command', this.commandHandler_);\n    this.element_.removeEventListener('mdl-componentdowngraded', this.mdlDowngrade_);\n  };\n\n\n  // Helpers\n  const getSlide_ = element => {\n    return element.closest(`.${SLIDE}`);\n  };\n\n  const setFocus_ = slide => {\n    if(slide) {\n      slide.focus();\n    }\n  };\n\n  const addRipple_ = slide => {\n    if(!slide.querySelector(`.${MDL_RIPPLE_CONTAINER}`)) {\n      const rippleContainer = document.createElement('span');\n      rippleContainer.classList.add(MDL_RIPPLE_CONTAINER);\n      rippleContainer.classList.add(MDL_RIPPLE_EFFECT);\n      const ripple = document.createElement('span');\n      ripple.classList.add(MDL_RIPPLE);\n      rippleContainer.appendChild(ripple);\n\n      const img = slide.querySelector('img');\n      if (img) {\n        // rippleContainer blocks image title\n        rippleContainer.title = img.title;\n      }\n      slide.appendChild(rippleContainer);\n      componentHandler.upgradeElement(rippleContainer, MDL_RIPPLE_COMPONENT);\n    }\n  };\n  // End helpers\n\n\n  // Public methods.\n\n  /**\n   * Cancel animation - if running.\n   *\n   * @public\n   */\n  MaterialExtCarousel.prototype.stopAnimation = function() {\n    this.config_.animationLoop.stop();\n  };\n  MaterialExtCarousel.prototype['stopAnimation'] = MaterialExtCarousel.prototype.stopAnimation;\n\n\n  /**\n   * Upgrade slides\n   * Use if more list elements are added later (dynamically)\n   *\n   * @public\n   */\n  MaterialExtCarousel.prototype.upgradeSlides = function() {\n\n    const hasRippleEffect = this.element_.classList.contains(MDL_RIPPLE_EFFECT);\n\n    [...this.element_.querySelectorAll(`.${SLIDE}`)].forEach( slide => {\n\n      slide.setAttribute('role', SLIDE_ROLE);\n\n      if(this.config_.interactive) {\n        if(!slide.getAttribute('tabindex')) {\n          slide.setAttribute('tabindex', '0');\n        }\n        if (hasRippleEffect) {\n          addRipple_(slide);\n        }\n      }\n      else {\n        slide.setAttribute('tabindex', '-1');\n      }\n    });\n  };\n  MaterialExtCarousel.prototype['upgradeSlides'] = MaterialExtCarousel.prototype.upgradeSlides;\n\n\n  /**\n   * Get config object\n   *\n   * @public\n   */\n  MaterialExtCarousel.prototype.getConfig = function() {\n    return this.config_;\n  };\n  MaterialExtCarousel.prototype['getConfig'] = MaterialExtCarousel.prototype.getConfig;\n\n  /**\n   * Initialize component\n   */\n  MaterialExtCarousel.prototype.init = function() {\n\n    if (this.element_) {\n      // Config\n      if(this.element_.hasAttribute('data-config')) {\n        this.config_ = jsonStringToObject(this.element_.getAttribute('data-config'), this.config_);\n      }\n\n      // Wai-Aria\n      this.element_.setAttribute('role', ROLE);\n\n      // Prefer tabindex -1\n      if(!Number.isInteger(this.element_.getAttribute('tabindex'))) {\n        this.element_.setAttribute('tabindex', -1);\n      }\n\n      // Remove listeners, just in case ...\n      this.removeListeners_();\n\n      if(this.config_.interactive) {\n\n        // Ripple\n        const hasRippleEffect = this.element_.classList.contains(MDL_RIPPLE_EFFECT);\n        if (hasRippleEffect) {\n          this.element_.classList.add(MDL_RIPPLE_EFFECT_IGNORE_EVENTS);\n        }\n\n        // Listen to focus/blur events\n        this.element_.addEventListener('focus', this.focusHandler_.bind(this), true);\n        this.element_.addEventListener('blur', this.blurHandler_.bind(this), true);\n\n        // Listen to keyboard events\n        this.element_.addEventListener('keydown', this.keyDownHandler_.bind(this), false);\n\n        // Listen to drag events\n        this.element_.addEventListener('mousedown', this.dragHandler_.bind(this), false);\n        this.element_.addEventListener('touchstart', this.dragHandler_.bind(this), false);\n\n        // Listen to click events\n        this.element_.addEventListener('click', this.clickHandler_.bind(this), false);\n      }\n\n      // Listen to custom 'command' event\n      this.element_.addEventListener('command', this.commandHandler_.bind(this), false);\n\n      // Listen to 'mdl-componentdowngraded' event\n      this.element_.addEventListener('mdl-componentdowngraded', this.mdlDowngrade_.bind(this));\n\n      // Slides collection\n      this.upgradeSlides();\n\n      // Set upgraded flag\n      this.element_.classList.add(IS_UPGRADED);\n\n      if(this.config_.autostart) {\n        // Start slideshow\n        this.startSlideShow_();\n      }\n    }\n  };\n\n  /*\n   * Downgrade component\n   * E.g remove listeners and clean up resources\n   */\n  MaterialExtCarousel.prototype.mdlDowngrade_ = function() {\n    'use strict';\n    //console.log('***** MaterialExtCarousel.mdlDowngrade_');\n\n    // Stop animation - if any\n    this.stopAnimation();\n\n    // Remove listeners\n    this.removeListeners_();\n  };\n\n  // The component registers itself. It can assume componentHandler is available\n  // in the global scope.\n  /* eslint no-undef: 0 */\n  componentHandler.register({\n    constructor: MaterialExtCarousel,\n    classAsString: 'MaterialExtCarousel',\n    cssClass: 'mdlext-js-carousel',\n    widget: true\n  });\n})();\n\n\n\n// WEBPACK FOOTER //\n// ./src/carousel/carousel.js\n\n\n// WEBPACK FOOTER //\n// ./src/carousel/carousel.js","/**\n * @license\n * Copyright 2016-2017 Leif Olsen. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * This code is built with Google Material Design Lite,\n * which is Licensed under the Apache License, Version 2.0\n */\n\n\n/**\n * A collapsible is a component to mark expandable and collapsible regions.\n * The component use the aria-expanded state to indicate whether regions of\n * the content are collapsible, and to expose whether a region is currently\n * expanded or collapsed.\n * @see https://www.w3.org/WAI/GL/wiki/Using_the_WAI-ARIA_aria-expanded_state_to_mark_expandable_and_collapsible_regions\n */\n\nimport {\n  IS_UPGRADED,\n  VK_SPACE,\n  VK_ENTER,\n} from '../utils/constants';\n\nimport { randomString } from '../utils/string-utils';\nimport { getParentElements, isFocusable } from '../utils/dom-utils';\n\nconst JS_COLLAPSIBLE = 'mdlext-js-collapsible';\nconst COLLAPSIBLE_CONTROL_CLASS = 'mdlext-collapsible';\nconst COLLAPSIBLE_GROUP_CLASS = 'mdlext-collapsible-group';\nconst COLLAPSIBLE_REGION_CLASS = 'mdlext-collapsible-region';\n\n/**\n * The collapsible component\n */\n\nclass Collapsible {\n  element_ = null;\n  controlElement_ = null;\n\n  /**\n   * @constructor\n   * @param {HTMLElement} element The element that this component is connected to.\n   */\n  constructor(element) {\n    this.element_ = element;\n    this.init();\n  }\n\n  keyDownHandler = event => {\n    if (event.keyCode === VK_ENTER || event.keyCode === VK_SPACE) {\n      event.preventDefault();\n\n      // Trigger click\n      (event.target || this.controlElement).dispatchEvent(\n        new MouseEvent('click', {\n          bubbles: true,\n          cancelable: true,\n          view: window\n        })\n      );\n    }\n  };\n\n  clickHandler = event => {\n    if(!this.isDisabled) {\n      if(event.target !== this.controlElement) {\n        // Do not toggle if a focusable element inside the control element triggered the event\n        const p = getParentElements(event.target, this.controlElement);\n        p.push(event.target);\n        if(p.find( el => isFocusable(el))) {\n          return;\n        }\n      }\n      this.toggle();\n    }\n  };\n\n  get element() {\n    return this.element_;\n  }\n\n  get controlElement() {\n    return this.controlElement_;\n  }\n\n  get isDisabled() {\n    return (this.controlElement.hasAttribute('disabled') &&\n      this.controlElement.getAttribute('disabled').toLowerCase() !== 'false') ||\n      (this.controlElement.hasAttribute('aria-disabled') &&\n      this.controlElement.getAttribute('aria-disabled').toLowerCase() !== 'false');\n  }\n\n  get isExpanded() {\n    return this.controlElement.hasAttribute('aria-expanded') &&\n      this.controlElement.getAttribute('aria-expanded').toLowerCase() === 'true';\n  }\n\n  get regionIds() {\n    return this.controlElement.hasAttribute('aria-controls')\n      ? this.controlElement.getAttribute('aria-controls').split(' ')\n      : [];\n  }\n\n  get regionElements() {\n    return this.regionIds\n      .map(id => document.querySelector(`#${id}`))\n      .filter( el => el != null);\n  }\n\n  collapse() {\n    if(!this.isDisabled && this.isExpanded) {\n      if(this.dispatchToggleEvent('collapse')) {\n        this.controlElement.setAttribute('aria-expanded', 'false');\n        const regions = this.regionElements.slice(0);\n        for (let i = regions.length - 1; i >= 0; --i) {\n          regions[i].setAttribute('hidden', '');\n        }\n      }\n    }\n  }\n\n  expand() {\n    if(!this.isDisabled && !this.isExpanded) {\n      if(this.dispatchToggleEvent('expand')) {\n        this.controlElement.setAttribute('aria-expanded', 'true');\n        this.regionElements.forEach(region => region.removeAttribute('hidden'));\n      }\n    }\n  }\n\n  toggle() {\n    if (this.isExpanded) {\n      this.collapse();\n    }\n    else {\n      this.expand();\n    }\n  }\n\n  dispatchToggleEvent(action) {\n    return this.element.dispatchEvent(\n      new CustomEvent('toggle', {\n        bubbles: true,\n        cancelable: true,\n        detail: {\n          action: action\n        }\n      })\n    );\n  }\n\n  disableToggle() {\n    this.controlElement.setAttribute('aria-disabled', true);\n  }\n\n  enableToggle() {\n    this.controlElement.removeAttribute('aria-disabled');\n  }\n\n  addRegionId(regionId) {\n    const ids = this.regionIds;\n    if(!ids.find(id => regionId === id)) {\n      ids.push(regionId);\n      this.controlElement.setAttribute('aria-controls', ids.join(' '));\n    }\n  }\n\n  addRegionElement(region) {\n    if(!(region.classList.contains(COLLAPSIBLE_GROUP_CLASS) ||\n      region.classList.contains(COLLAPSIBLE_REGION_CLASS))) {\n      region.classList.add(COLLAPSIBLE_GROUP_CLASS);\n    }\n\n    if(!region.hasAttribute('role')) {\n      const role = region.classList.contains(COLLAPSIBLE_GROUP_CLASS) ? 'group' : 'region';\n      region.setAttribute('role', role);\n    }\n\n    if(!region.hasAttribute('id')) {\n      region.id = `${region.getAttribute('role')}-${randomString()}`;\n    }\n\n    if(this.isExpanded) {\n      region.removeAttribute('hidden');\n    }\n    else {\n      region.setAttribute('hidden', '');\n    }\n    this.addRegionId(region.id);\n  }\n\n  removeRegionElement(region) {\n    if(region && region.id) {\n      const ids = this.regionIds.filter(id => id === region.id);\n      this.controlElement.setAttribute('aria-controls', ids.join(' '));\n    }\n  }\n\n  removeListeners() {\n    this.controlElement.removeEventListener('keydown', this.keyDownHandler);\n    this.controlElement.removeEventListener('click', this.clickHandler);\n  }\n\n  init() {\n    const initControl = () => {\n      // Find the button element\n      this.controlElement_ = this.element.querySelector(`.${COLLAPSIBLE_CONTROL_CLASS}`) || this.element;\n\n      // Add \"aria-expanded\" attribute if not present\n      if(!this.controlElement.hasAttribute('aria-expanded')) {\n        this.controlElement.setAttribute('aria-expanded', 'false');\n      }\n\n      // Add role=button if control != <button>\n      if(this.controlElement.nodeName.toLowerCase() !== 'button') {\n        this.controlElement.setAttribute('role', 'button');\n      }\n\n      // Add tabindex\n      if(!isFocusable(this.controlElement) && !this.controlElement.hasAttribute('tabindex')) {\n        this.controlElement.setAttribute('tabindex', '0');\n      }\n    };\n\n    const initRegions = () => {\n      let regions = [];\n      if(!this.controlElement.hasAttribute('aria-controls')) {\n        // Add siblings as collapsible region(s)\n        let r = this.element.nextElementSibling;\n        while(r) {\n          if(r.classList.contains(COLLAPSIBLE_GROUP_CLASS) ||\n            r.classList.contains(COLLAPSIBLE_REGION_CLASS)) {\n            regions.push(r);\n          }\n          else if(r.classList.contains(JS_COLLAPSIBLE)) {\n            // A new collapsible component\n            break;\n          }\n          r = r.nextElementSibling;\n        }\n      }\n      else {\n        regions = this.regionElements;\n      }\n      regions.forEach(region => this.addRegionElement(region));\n    };\n\n    const addListeners = () => {\n      this.controlElement.addEventListener('keydown', this.keyDownHandler);\n      this.controlElement.addEventListener('click', this.clickHandler);\n    };\n\n    initControl();\n    initRegions();\n    this.removeListeners();\n    addListeners();\n  }\n\n  downgrade() {\n    this.removeListeners();\n  }\n\n}\n\n(function() {\n  'use strict';\n\n  /**\n   * @constructor\n   * @param {HTMLElement} element The element that will be upgraded.\n   */\n  const MaterialExtCollapsible = function MaterialExtCollapsible(element) {\n    this.element_ = element;\n    this.collapsible = null;\n\n    // Initialize instance.\n    this.init();\n  };\n  window['MaterialExtCollapsible'] = MaterialExtCollapsible;\n\n  /**\n   * Initialize component\n   */\n  MaterialExtCollapsible.prototype.init = function() {\n    if (this.element_) {\n      this.collapsible = new Collapsible(this.element_);\n      this.element_.classList.add(IS_UPGRADED);\n\n      // Listen to 'mdl-componentdowngraded' event\n      this.element_.addEventListener('mdl-componentdowngraded', this.mdlDowngrade_.bind(this));\n    }\n  };\n\n  /*\n   * Downgrade component\n   * E.g remove listeners and clean up resources\n   */\n  MaterialExtCollapsible.prototype.mdlDowngrade_ = function() {\n    this.collapsible.downgrade();\n  };\n\n\n  // Public methods.\n\n  /**\n   * Get control element.\n   * @return {HTMLElement} element The element that controls the collapsible region.\n   * @public\n   */\n  MaterialExtCollapsible.prototype.getControlElement = function() {\n    return this.collapsible.controlElement;\n  };\n  MaterialExtCollapsible.prototype['getControlElement'] = MaterialExtCollapsible.prototype.getControlElement;\n\n  /**\n   * Get region elements controlled by this collapsible\n   * @returns {Array<HTMLElement>} the collapsible region elements\n   * @public\n   */\n  MaterialExtCollapsible.prototype.getRegionElements = function() {\n    return this.collapsible.regionElements;\n  };\n  MaterialExtCollapsible.prototype['getRegionElements'] = MaterialExtCollapsible.prototype.getRegionElements;\n\n  /**\n   * Add region elements.\n   * @param {Array<HTMLElement>} elements The element that will be upgraded.\n   * @return {void}\n   * @public\n   */\n  MaterialExtCollapsible.prototype.addRegionElements = function(...elements) {\n    elements.forEach(element => this.collapsible.addRegionElement(element));\n  };\n  MaterialExtCollapsible.prototype['addRegionElements'] = MaterialExtCollapsible.prototype.addRegionElements;\n\n  /**\n   * Remove collapsible region(s) from component.\n   * Note: This operation does not delete the element from the DOM tree.\n   * @param {Array<HTMLElement>} elements The element that will be upgraded.\n   * @public\n   */\n  MaterialExtCollapsible.prototype.removeRegionElements = function(...elements) {\n    elements.forEach(element => this.collapsible.removeRegionElement(element));\n  };\n  MaterialExtCollapsible.prototype['removeRegionElements'] = MaterialExtCollapsible.prototype.removeRegionElements;\n\n  /**\n   * Expand collapsible region(s)\n   * @return {void}\n   * @public\n   */\n  MaterialExtCollapsible.prototype.expand = function() {\n    this.collapsible.expand();\n  };\n  MaterialExtCollapsible.prototype['expand'] = MaterialExtCollapsible.prototype.expand;\n\n  /**\n   * Collapse collapsible region(s)\n   * @return {void}\n   * @public\n   */\n  MaterialExtCollapsible.prototype.collapse = function() {\n    this.collapsible.collapse();\n  };\n  MaterialExtCollapsible.prototype['collapse'] = MaterialExtCollapsible.prototype.collapse;\n\n  /**\n   * Toggle collapsible region(s)\n   * @return {void}\n   * @public\n   */\n  MaterialExtCollapsible.prototype.toggle = function() {\n    this.collapsible.toggle();\n  };\n  MaterialExtCollapsible.prototype['toggle'] = MaterialExtCollapsible.prototype.toggle;\n\n  /**\n   * Check whether component has aria-expanded state true\n   * @return {Boolean} true if aria-expanded=\"true\", otherwise false\n   */\n  MaterialExtCollapsible.prototype.isExpanded = function() {\n    return this.collapsible.isExpanded;\n  };\n  MaterialExtCollapsible.prototype['isExpanded'] = MaterialExtCollapsible.prototype.isExpanded;\n\n  /**\n   * Check whether component has aria-disabled state set to true\n   * @return {Boolean} true if aria-disabled=\"true\", otherwise false\n   */\n  MaterialExtCollapsible.prototype.isDisabled = function() {\n    return this.collapsible.isDisabled;\n  };\n  MaterialExtCollapsible.prototype['isDisabled'] = MaterialExtCollapsible.prototype.isDisabled;\n\n  /**\n   * Disables toggling of collapsible region(s)\n   * @return {void}\n   * @public\n   */\n  MaterialExtCollapsible.prototype.disableToggle = function() {\n    this.collapsible.disableToggle();\n  };\n  MaterialExtCollapsible.prototype['disableToggle'] = MaterialExtCollapsible.prototype.disableToggle;\n\n  /**\n   * Enables toggling of collapsible region(s)\n   * @return {void}\n   * @public\n   */\n  MaterialExtCollapsible.prototype.enableToggle = function() {\n    this.collapsible.enableToggle();\n  };\n  MaterialExtCollapsible.prototype['enableToggle'] = MaterialExtCollapsible.prototype.enableToggle;\n\n  // The component registers itself. It can assume componentHandler is available\n  // in the global scope.\n  /* eslint no-undef: 0 */\n  componentHandler.register({\n    constructor: MaterialExtCollapsible,\n    classAsString: 'MaterialExtCollapsible',\n    cssClass: JS_COLLAPSIBLE,\n    widget: true\n  });\n\n})();\n\n\n\n// WEBPACK FOOTER //\n// ./src/collapsible/collapsible.js\n\n\n// WEBPACK FOOTER //\n// ./src/collapsible/collapsible.js","/**\n * @license\n * Copyright 2016-2017 Leif Olsen. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * This code is built with Google Material Design Lite,\n * which is Licensed under the Apache License, Version 2.0\n */\n\n\nimport {jsonStringToObject} from '../utils/json-utils';\nimport {\n  IS_UPGRADED,\n} from '../utils/constants';\n\nconst JS_FORMAT_FIELD = 'mdlext-js-formatfield';\nconst FORMAT_FIELD_COMPONENT = 'MaterialExtFormatfield';\n\n/**\n * Detect browser locale\n * @returns {string} the locale\n * @see http://stackoverflow.com/questions/1043339/javascript-for-detecting-browser-language-preference\n */\nconst browserLanguage = () => {\n  return navigator.languages\n    ? navigator.languages[0]\n    : navigator.language || navigator.userLanguage;\n};\n\n/**\n * The formatfield  formats an input field  using language sensitive number formatting.\n */\n\nclass FormatField {\n  static timer = null;\n\n  element_;\n  input_;\n  options_ = {};\n  intlGroupSeparator_;\n  intlDecimalSeparator_;\n\n  constructor(element) {\n    this.element_ = element;\n    this.init();\n  }\n\n  clickHandler = () => {\n    clearTimeout(FormatField.timer);\n  };\n\n  focusInHandler = () => {\n    if(!(this.input.readOnly || this.input.disabled)) {\n      this.input.value = this.unformatInput();\n      //setTimeout(() => this.input.setSelectionRange(0, this.input.value.length), 20);\n      FormatField.timer = setTimeout(() => this.input.select(), 200);\n    }\n  };\n\n  focusOutHandler = () => {\n    clearTimeout(FormatField.timer);\n\n    if(!(this.input.readOnly || this.input.disabled)) {\n      this.formatValue();\n    }\n  };\n\n  get element() {\n    return this.element_;\n  }\n\n  get input() {\n    return this.input_;\n  }\n\n  get options() {\n    return this.options_;\n  }\n\n  stripSeparatorsFromValue() {\n    const doReplace = () => this.input.value\n      .replace(/\\s/g, '')\n      .replace(new RegExp(this.options.groupSeparator, 'g'), '')\n      .replace(this.options.decimalSeparator, '.');\n      //.replace(this.intlGroupSeparator_, ''),\n      //.replace(this.intlDecimalSeparator_, '.');\n\n    return this.input.value ? doReplace() : this.input.value;\n  }\n\n  fixSeparators(value) {\n    const doReplace = () => value\n      .replace(new RegExp(this.intlGroupSeparator_, 'g'), this.options.groupSeparator)\n      .replace(this.intlDecimalSeparator_, this.options.decimalSeparator);\n\n    return value ? doReplace() : value;\n  }\n\n  formatValue() {\n    if(this.input.value) {\n      const v = new Intl.NumberFormat(this.options.locales, this.options)\n        .format(this.stripSeparatorsFromValue());\n\n      if('NaN' !== v) {\n        this.input.value = this.fixSeparators(v);\n      }\n    }\n  }\n\n  unformat() {\n    const doReplace = () => this.input.value\n      .replace(/\\s/g, '')\n      .replace(new RegExp(this.options.groupSeparator, 'g'), '')\n      .replace(this.options.decimalSeparator, '.');\n\n    return this.input.value ? doReplace() : this.input.value;\n  }\n\n  unformatInput() {\n    const doReplace = () => this.input.value\n      .replace(/\\s/g, '')\n      .replace(new RegExp(this.options.groupSeparator, 'g'), '');\n\n    return this.input.value ? doReplace() : this.input.value;\n  }\n\n  removeListeners() {\n    this.input.removeEventListener('click', this.clickHandler);\n    this.input.removeEventListener('focusin', this.focusInHandler);\n    this.input.removeEventListener('focusout', this.focusOutHandler);\n  }\n\n  init() {\n    const addListeners = () => {\n      this.input.addEventListener('click', this.clickHandler);\n      this.input.addEventListener('focusin', this.focusInHandler);\n      this.input.addEventListener('focusout', this.focusOutHandler);\n    };\n\n    const addOptions = () => {\n      const opts = this.element.getAttribute('data-formatfield-options') ||\n        this.input.getAttribute('data-formatfield-options');\n      if(opts) {\n        this.options_ = jsonStringToObject(opts, this.options);\n      }\n    };\n\n    const addLocale = () => {\n      if(!this.options.locales) {\n        this.options.locales = browserLanguage() || 'en-US'; //'nb-NO', //'en-US',\n      }\n    };\n\n    const addGrouping = () => {\n      const s = (1234.5).toLocaleString(this.options.locales, {\n        style: 'decimal',\n        useGrouping: true,\n        minimumFractionDigits: 1,\n        maximumFractionDigits: 1\n      });\n\n      this.intlGroupSeparator_ = s.charAt(1);\n      this.intlDecimalSeparator_ = s.charAt(s.length-2);\n      this.options.groupSeparator = this.options.groupSeparator || this.intlGroupSeparator_;\n      this.options.decimalSeparator = this.options.decimalSeparator || this.intlDecimalSeparator_;\n\n      if(this.options.groupSeparator === this.options.decimalSeparator) {\n        const e = `Error! options.groupSeparator, \"${this.options.groupSeparator}\" ` +\n          'and options.decimalSeparator, ' +\n          `\"${this.options.decimalSeparator}\" should not be equal`;\n        throw new Error(e);\n      }\n    };\n\n    this.input_ = this.element.querySelector('input') || this.element;\n\n    addOptions();\n    addLocale();\n    addGrouping();\n    this.formatValue();\n    addListeners();\n  }\n\n  downgrade() {\n    this.removeListeners();\n  }\n\n}\n\n(function() {\n  'use strict';\n\n  /**\n   * @constructor\n   * @param {HTMLElement} element The element that will be upgraded.\n   */\n  const MaterialExtFormatfield = function MaterialExtFormatfield(element) {\n    this.element_ = element;\n    this.formatField_ = null;\n\n    // Initialize instance.\n    this.init();\n  };\n  window['MaterialExtFormatfield'] = MaterialExtFormatfield;\n\n  /**\n   * Initialize component\n   */\n  MaterialExtFormatfield.prototype.init = function() {\n    if (this.element_) {\n      this.element_.classList.add(IS_UPGRADED);\n      this.formatField_ = new FormatField(this.element_);\n\n      // Listen to 'mdl-componentdowngraded' event\n      this.element_.addEventListener('mdl-componentdowngraded', this.mdlDowngrade_.bind(this));\n    }\n  };\n\n  /**\n   * Get options object\n   *\n   * @public\n   *\n   * @returns {Object} the options object\n   */\n  MaterialExtFormatfield.prototype.getOptions = function() {\n    return this.formatField_.options;\n  };\n  MaterialExtFormatfield.prototype['getOptions'] = MaterialExtFormatfield.prototype.getOptions;\n\n\n  /**\n   * A unformatted value is a string value where the locale specific decimal separator\n   * is replaced with a '.' separator and group separators are stripped.\n   * The returned value is suitable for parsing to a JavaScript numerical value.\n   *\n   * @example\n   * input.value = '1 234,5';\n   * inputElement.MaterialExtFormatfield.getUnformattedValue();\n   * // Returns '1234.5'\n   *\n   * @public\n   *\n   * @returns {String} the unformatted value\n   */\n  MaterialExtFormatfield.prototype.getUnformattedValue = function() {\n    return this.formatField_.unformat();\n  };\n  MaterialExtFormatfield.prototype['getUnformattedValue'] = MaterialExtFormatfield.prototype.getUnformattedValue;\n\n  /*\n   * Downgrade component\n   * E.g remove listeners and clean up resources\n   */\n  MaterialExtFormatfield.prototype.mdlDowngrade_ = function() {\n    this.formatField_.downgrade();\n  };\n\n  // The component registers itself. It can assume componentHandler is available\n  // in the global scope.\n  /* eslint no-undef: 0 */\n  componentHandler.register({\n    constructor: MaterialExtFormatfield,\n    classAsString: FORMAT_FIELD_COMPONENT,\n    cssClass: JS_FORMAT_FIELD,\n    widget: true\n  });\n\n})();\n\n\n\n// WEBPACK FOOTER //\n// ./src/formatfield/formatfield.js\n\n\n// WEBPACK FOOTER //\n// ./src/formatfield/formatfield.js","import './utils';\nimport './accordion/accordion';\nimport './collapsible/collapsible';\nimport './carousel/carousel';\nimport './lightboard/lightboard';\nimport './lightbox/lightbox';\nimport './menu-button/menu-button';\nimport './selectfield/selectfield';\nimport './formatfield/formatfield';\nimport './sticky-header/sticky-header';\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.js\n\n\n// WEBPACK FOOTER //\n// ./src/index.js","/**\n * @license\n * Copyright 2016 Leif Olsen. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * This code is built with Google Material Design Lite,\n * which is Licensed under the Apache License, Version 2.0\n */\n\n/**\n * A lightboard is a translucent surface illuminated from behind, used for situations\n * where a shape laid upon the surface needs to be seen with high contrast. In the \"old days\" of photography\n * photograpers used a lightboard to get a quick view of their slides. The goal is to create a responsive lightbox\n * design, based on flex layout, similar to what is used in Adobe LightRoom to browse images.\n */\n\nimport {\n  VK_ENTER,\n  VK_SPACE,\n  VK_END,\n  VK_HOME,\n  VK_ARROW_LEFT,\n  VK_ARROW_UP,\n  VK_ARROW_RIGHT,\n  VK_ARROW_DOWN,\n  IS_UPGRADED,\n  MDL_RIPPLE,\n  MDL_RIPPLE_COMPONENT,\n  MDL_RIPPLE_EFFECT,\n  MDL_RIPPLE_EFFECT_IGNORE_EVENTS\n} from '../utils/constants';\n\nconst MDL_RIPPLE_CONTAINER = 'mdlext-lightboard__slide__ripple-container';\n\n(function() {\n  'use strict';\n\n  //const LIGHTBOARD = 'mdlext-lightboard';\n  const LIGHTBOARD_ROLE = 'grid';\n  const SLIDE = 'mdlext-lightboard__slide';\n  const SLIDE_ROLE  = 'gridcell';\n  const SLIDE_TABSTOP = 'mdlext-lightboard__slide__frame';\n  /**\n   * @constructor\n   * @param {Element} element The element that will be upgraded.\n   */\n  const MaterialExtLightboard = function MaterialExtLightboard(element) {\n    // Stores the element.\n    this.element_ = element;\n\n    // Initialize instance.\n    this.init();\n  };\n  window['MaterialExtLightboard'] = MaterialExtLightboard;\n\n\n  // Helpers\n  const getSlide = element => {\n    return element ? element.closest(`.${SLIDE}`) : null;\n  };\n\n\n\n  // Private methods.\n\n  /**\n   * Select a slide, i.e. set aria-selected=\"true\"\n   * @param element\n   * @private\n   */\n  MaterialExtLightboard.prototype.selectSlide_ = function(element) {\n    const slide = getSlide(element);\n    if( slide && !slide.hasAttribute('aria-selected') ) {\n      [...this.element_.querySelectorAll(`.${SLIDE}[aria-selected=\"true\"]`)]\n        .forEach(selectedSlide => selectedSlide.removeAttribute('aria-selected'));\n\n      slide.setAttribute('aria-selected', 'true');\n    }\n  };\n\n\n  /**\n   * Dispatch select event\n   * @param {Element} slide The slide that caused the event\n   * @private\n   */\n  MaterialExtLightboard.prototype.dispatchSelectEvent_ = function ( slide ) {\n    this.element_.dispatchEvent(\n      new CustomEvent('select', {\n        bubbles: true,\n        cancelable: true,\n        detail: { source: slide }\n      })\n    );\n  };\n\n  /**\n   * Handles custom command event, 'first', 'next', 'prev', 'last', 'select' or upgrade\n   * @param event. A custom event\n   * @private\n   */\n  MaterialExtLightboard.prototype.commandHandler_ = function( event ) {\n    event.preventDefault();\n    event.stopPropagation();\n\n    if(event && event.detail) {\n      this.command(event.detail);\n    }\n  };\n\n\n  // Public methods\n\n  /**\n   * Initialize lightboard slides\n   * @public\n   */\n  MaterialExtLightboard.prototype.upgradeSlides = function() {\n\n    const addRipple = slide => {\n      // Use slide frame as ripple container\n      if(!slide.querySelector(`.${MDL_RIPPLE_CONTAINER}`)) {\n        const a = slide.querySelector(`.${SLIDE_TABSTOP}`);\n        if(a) {\n          const rippleContainer = a;\n          rippleContainer.classList.add(MDL_RIPPLE_CONTAINER);\n          rippleContainer.classList.add(MDL_RIPPLE_EFFECT);\n          const ripple = document.createElement('span');\n          ripple.classList.add(MDL_RIPPLE);\n          rippleContainer.appendChild(ripple);\n          componentHandler.upgradeElement(rippleContainer, MDL_RIPPLE_COMPONENT);\n        }\n      }\n    };\n\n    const hasRippleEffect = this.element_.classList.contains(MDL_RIPPLE_EFFECT);\n\n    [...this.element_.querySelectorAll(`.${SLIDE}`)].forEach( slide => {\n\n      slide.setAttribute('role', SLIDE_ROLE);\n\n      if(!slide.querySelector('a')) {\n        slide.setAttribute('tabindex', '0');\n      }\n      if(hasRippleEffect) {\n        addRipple(slide);\n      }\n    });\n  };\n  MaterialExtLightboard.prototype['upgradeSlides'] = MaterialExtLightboard.prototype.upgradeSlides;\n\n\n  /**\n   * Execute command\n   * @param detail\n   * @public\n   */\n  MaterialExtLightboard.prototype.command = function( detail ) {\n\n    const firstSlide = () => {\n      return this.element_.querySelector(`.${SLIDE}:first-child`);\n    };\n\n    const lastSlide = () => {\n      return this.element_.querySelector(`.${SLIDE}:last-child`);\n    };\n\n    const nextSlide = () => {\n      const slide = this.element_.querySelector(`.${SLIDE}[aria-selected=\"true\"]`).nextElementSibling;\n      return slide ? slide : firstSlide();\n    };\n\n    const prevSlide = () => {\n      const slide = this.element_.querySelector(`.${SLIDE}[aria-selected=\"true\"]`).previousElementSibling;\n      return slide ? slide : lastSlide();\n    };\n\n    if(detail && detail.action) {\n\n      const { action, target } = detail;\n\n      let slide;\n      switch (action.toLowerCase()) {\n        case 'select':\n          slide = getSlide(target);\n          this.dispatchSelectEvent_(slide);\n          break;\n        case 'first':\n          slide = firstSlide();\n          break;\n        case 'next':\n          slide = nextSlide();\n          break;\n        case 'prev':\n          slide = prevSlide();\n          break;\n        case 'last':\n          slide = lastSlide();\n          break;\n        case 'upgrade':\n          this.upgradeSlides();\n          break;\n        default:\n          throw new Error(`Unknown action \"${action}\". Action must be one of \"first\", \"next\", \"prev\", \"last\", \"select\" or \"upgrade\"`);\n      }\n\n      if (slide) {\n        const a = slide.querySelector('a');\n        if (a) {\n          a.focus();\n        }\n        else {\n          slide.focus();\n        }\n\n        // Workaround for JSDom testing:\n        // In JsDom 'element.focus()' does not trigger any focus event\n        if(!slide.hasAttribute('aria-selected')) {\n          this.selectSlide_(slide);\n        }\n\n      }\n    }\n  };\n  MaterialExtLightboard.prototype['command'] = MaterialExtLightboard.prototype.command;\n\n\n  /**\n   * Initialize component\n   */\n  MaterialExtLightboard.prototype.init = function() {\n\n    const keydownHandler = event => {\n\n      if(event.target !== this.element_) {\n        let action;\n        let target;\n        switch (event.keyCode) {\n          case VK_HOME:\n            action = 'first';\n            break;\n          case VK_END:\n            action = 'last';\n            break;\n          case VK_ARROW_UP:\n          case VK_ARROW_LEFT:\n            action = 'prev';\n            break;\n          case VK_ARROW_DOWN:\n          case VK_ARROW_RIGHT:\n            action = 'next';\n            break;\n          case VK_ENTER:\n          case VK_SPACE:\n            action = 'select';\n            target = event.target;\n            break;\n        }\n        if(action)  {\n          event.preventDefault();\n          event.stopPropagation();\n          this.command( { action: action, target: target } );\n        }\n      }\n    };\n\n    const clickHandler = event => {\n      event.preventDefault();\n      event.stopPropagation();\n\n      if(event.target !== this.element_) {\n        this.command( { action: 'select', target: event.target } );\n      }\n    };\n\n    const focusHandler = event => {\n      event.preventDefault();\n      event.stopPropagation();\n\n      if(event.target !== this.element_) {\n        this.selectSlide_(event.target);\n      }\n    };\n\n\n    if (this.element_) {\n      this.element_.setAttribute('role', LIGHTBOARD_ROLE);\n\n      if (this.element_.classList.contains(MDL_RIPPLE_EFFECT)) {\n        this.element_.classList.add(MDL_RIPPLE_EFFECT_IGNORE_EVENTS);\n      }\n\n      // Remove listeners, just in case ...\n      this.element_.removeEventListener('command', this.commandHandler_);\n      this.element_.removeEventListener('keydown', keydownHandler);\n      this.element_.removeEventListener('click', clickHandler);\n      this.element_.removeEventListener('focus', focusHandler);\n\n      this.element_.addEventListener('command', this.commandHandler_.bind(this), false);\n      this.element_.addEventListener('keydown', keydownHandler, true);\n      this.element_.addEventListener('click', clickHandler, true);\n      this.element_.addEventListener('focus', focusHandler, true);\n\n      this.upgradeSlides();\n\n      this.element_.classList.add(IS_UPGRADED);\n    }\n  };\n\n  // The component registers itself. It can assume componentHandler is available\n  // in the global scope.\n  /* eslint no-undef: 0 */\n  /* jshint undef:false */\n  componentHandler.register({\n    constructor: MaterialExtLightboard,\n    classAsString: 'MaterialExtLightboard',\n    cssClass: 'mdlext-js-lightboard',\n    widget: true\n  });\n\n})();\n\n\n\n// WEBPACK FOOTER //\n// ./src/lightboard/lightboard.js\n\n\n// WEBPACK FOOTER //\n// ./src/lightboard/lightboard.js","/**\n * @license\n * Copyright 2016 Leif Olsen. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * This code is built with Google Material Design Lite,\n * which is Licensed under the Apache License, Version 2.0\n */\n\n\n/**\n * Responsive Lightbox\n */\n\nimport fullThrottle from '../utils/full-throttle';\nimport {\n  VK_ESC,\n  VK_SPACE,\n  VK_END,\n  VK_HOME,\n  VK_ARROW_LEFT,\n  VK_ARROW_UP,\n  VK_ARROW_RIGHT,\n  VK_ARROW_DOWN,\n  IS_UPGRADED\n} from '../utils/constants';\n\n(function() {\n  'use strict';\n\n  const LIGHTBOX = 'mdlext-lightbox';\n  const LIGHTBOX_SLIDER = 'mdlext-lightbox__slider';\n  const LIGHTBOX_SLIDER_SLIDE = 'mdlext-lightbox__slider__slide';\n  const STICKY_FOOTER = 'mdlext-lightbox--sticky-footer';\n  const BUTTON = 'mdl-button';\n\n  /**\n   * https://github.com/google/material-design-lite/issues/4205\n   * @constructor\n   * @param {Element} element The element that will be upgraded.\n   */\n  const MaterialExtLightbox = function MaterialExtLightbox(element) {\n    // Stores the element.\n    this.element_ = element;\n\n    // Initialize instance.\n    this.init();\n  };\n  window['MaterialExtLightbox'] = MaterialExtLightbox;\n\n\n  /**\n   * Handle keypress\n   * @param event\n   * @private\n   */\n  MaterialExtLightbox.prototype.keyDownHandler_ = function(event) {\n\n    if (event) {\n      if ( event.keyCode === VK_ESC || event.keyCode === VK_SPACE\n        || event.keyCode === VK_END || event.keyCode === VK_HOME\n        || event.keyCode === VK_ARROW_UP || event.keyCode === VK_ARROW_LEFT\n        || event.keyCode === VK_ARROW_DOWN || event.keyCode === VK_ARROW_RIGHT) {\n\n        if(event.keyCode !== VK_ESC) {\n          event.preventDefault();\n          event.stopPropagation();\n        }\n\n        let action = 'first';\n        if (event.keyCode === VK_END) {\n          action = 'last';\n        }\n        else if (event.keyCode === VK_ARROW_UP || event.keyCode === VK_ARROW_LEFT) {\n          action = 'prev';\n        }\n        else if (event.keyCode === VK_ARROW_DOWN || event.keyCode === VK_ARROW_RIGHT) {\n          action = 'next';\n        }\n        else if (event.keyCode === VK_SPACE) {\n          action = 'select';\n        }\n        else if (event.keyCode === VK_ESC) {\n          action = 'cancel';\n        }\n\n        dispatchAction_(action, this);\n      }\n    }\n  };\n\n  /**\n   * Handle button clicks\n   * @param event\n   * @private\n   */\n  MaterialExtLightbox.prototype.buttonClickHandler_ = function(event) {\n\n    if (event) {\n      event.preventDefault();\n      event.stopPropagation();\n\n      dispatchAction_(this.getAttribute('data-action') || '', this);\n\n      const n = this.closest(`.${LIGHTBOX}`);\n      if(n) {\n        n.focus();\n      }\n    }\n  };\n\n  /**\n   * Dispatches an action custom event\n   * @param action\n   * @param source\n   * @param target\n   * @private\n   */\n  const dispatchAction_ = (action, source, target = source) => {\n\n    target.dispatchEvent(new CustomEvent('action', {\n      bubbles: true,\n      cancelable: true,\n      detail: {\n        action: action || '',\n        source: source\n      }\n    }));\n  };\n\n  /**\n   * Reposition dialog if component parent element is \"DIALOG\"\n   * @param lightboxElement\n   * @private\n   */\n  const repositionDialog_ = lightboxElement => {\n    const footerHeight = (footer, isSticky) => isSticky && footer ? footer.offsetHeight : 0;\n\n    const reposition = (dialog, fh) => {\n      if (window.getComputedStyle(dialog).position === 'absolute') {\n        const scrollTop = document.body.scrollTop || document.documentElement.scrollTop;\n        const topValue = scrollTop + (window.innerHeight - dialog.offsetHeight - fh) / 2;\n        dialog.style.top = `${Math.max(scrollTop, topValue)}px`;\n      }\n    };\n\n    const p = lightboxElement.parentNode;\n    const dialog = p && p.nodeName === 'DIALOG' ? p : null;\n\n    if(dialog && dialog.hasAttribute('open')) {\n      lightboxElement.style.width = 'auto';\n      lightboxElement.style.maxWidth = '100%';\n      const img = lightboxElement.querySelector('img');\n      if(img) {\n        lightboxElement.style.maxWidth = img.naturalWidth !== undefined ? `${img.naturalWidth}px` : `${img.width}px` || '100%';\n      }\n\n      const fh = footerHeight(lightboxElement.querySelector('footer'), lightboxElement.classList.contains(STICKY_FOOTER));\n      const vh = Math.max(document.documentElement.clientHeight, window.innerHeight || 0) - fh;\n      if (dialog.offsetHeight > vh) {\n        let n = 0;\n        while(dialog.offsetHeight > vh && ++n < 4) {\n          lightboxElement.style.width = `${lightboxElement.offsetWidth * vh / lightboxElement.offsetHeight}px`;\n        }\n      }\n      reposition(dialog, fh);\n    }\n  };\n\n  /**\n   * Handle image load\n   * @param event\n   * @private\n   */\n\n  MaterialExtLightbox.prototype.imgLoadHandler_ = function( /*event*/ ) {\n    repositionDialog_(this);\n  };\n\n\n  /**\n   * Handle image drag\n   * @param event\n   * @private\n     */\n  MaterialExtLightbox.prototype.imgDragHandler_ = function(event ) {\n\n    const setStyles = ( element, properties ) => {\n      //noinspection JSAnnotator\n      for(const [key, value] of Object.entries(properties)) {\n        element.style[key] = value;\n      }\n      // ... or:\n      //for (const key in properties) {\n      //  element.style[key] = properties[key];\n      //}\n    };\n\n    event.preventDefault();\n    //event.stopPropagation();\n\n    const x = event.clientX || (event.touches !== undefined ? event.touches[0].clientX : 0);\n\n    const img = this;\n    img.style.opacity = '0.2';\n\n    const slider = document.createElement('div');\n    slider.classList.add(LIGHTBOX_SLIDER);\n    setStyles(slider, {'width': `${img.offsetWidth}px`, 'height': `${img.offsetHeight}px`} );\n\n    let slide  = document.createElement('div');\n    slide.classList.add(LIGHTBOX_SLIDER_SLIDE);\n    slide.textContent = '>';\n    setStyles(slide, {\n      'width'           : `${img.offsetWidth}px`,\n      'height'          : `${img.offsetHeight}px`,\n      'line-height'     : `${img.offsetHeight}px`,\n      'font-size'       : `${img.offsetHeight/4}px`,\n      'text-align'      : 'right',\n      'background-image': `url(\"${img.getAttribute('data-img-url-prev') || ''}\")`\n    });\n    slider.appendChild(slide);\n\n    slide  = document.createElement('div');\n    slide.classList.add(LIGHTBOX_SLIDER_SLIDE);\n    setStyles(slide, {\n      'width'           : `${img.offsetWidth}px`,\n      'height'          : `${img.offsetHeight}px`,\n      'background-image': `url(\"${img.src}\")`\n    });\n    slider.appendChild(slide);\n\n    slide  = document.createElement('div');\n    slide.classList.add(LIGHTBOX_SLIDER_SLIDE);\n    slide.textContent = '<';\n    setStyles(slide, {\n      'width'           : `${img.offsetWidth}px`,\n      'height'          : `${img.offsetHeight}px`,\n      'line-height'     : `${img.offsetHeight}px`,\n      'font-size'       : `${img.offsetHeight/4}px`,\n      'text-align'      : 'left',\n      'background-image': `url(\"${img.getAttribute('data-img-url-next') || ''}\")`\n    });\n    slider.appendChild(slide);\n\n    img.parentNode.appendChild(slider);\n\n\n    // drag handler\n    const drag = e => {\n      e.preventDefault();\n      const dx = (e.clientX || (e.touches !== undefined ? e.touches[0].clientX : 0)) - x; // TODO: maybe rewrite to improve performance\n\n      if(slider.offsetWidth - Math.abs(dx) > 19) {\n        slider.style.left = `${dx}px`;\n      }\n    };\n\n    // end drag handler\n    const endDrag = e => {\n      e.preventDefault();\n      //e.stopPropagation();\n\n      window.removeEventListener('mousemove', drag);\n      window.removeEventListener('touchmove', drag);\n      window.removeEventListener('mouseup', endDrag);\n      window.removeEventListener('touchend', endDrag);\n\n      const dx = slider.offsetLeft;\n      img.parentNode.removeChild(slider);\n      img.style.opacity = '1.0';\n\n      if(Math.abs(dx) > 19) {\n        dispatchAction_( (dx > 0 ? 'prev' : 'next') , img);\n      }\n    };\n\n    window.addEventListener('mousemove', drag);\n    window.addEventListener('touchmove', drag);\n    window.addEventListener('mouseup', endDrag);\n    window.addEventListener('touchend',endDrag);\n  };\n\n\n  /**\n   * Initialize component\n   */\n  MaterialExtLightbox.prototype.init = function() {\n\n    if (this.element_) {\n      // Do the init required for this component to work\n      this.element_.addEventListener('keydown', this.keyDownHandler_.bind(this.element_), true);\n\n      if(!Number.isInteger(this.element_.getAttribute('tabindex'))) {\n        this.element_.setAttribute('tabindex', 1);\n      }\n\n      [...this.element_.querySelectorAll(`.${BUTTON}`)].forEach( button =>\n        button.addEventListener('click', this.buttonClickHandler_.bind(button), false)\n      );\n\n      const figcaption = this.element_.querySelector('figcaption');\n      if(figcaption) {\n        figcaption.addEventListener('click', this.buttonClickHandler_.bind(figcaption), false);\n      }\n\n      const footer = this.element_.querySelector('footer');\n      if(footer) {\n        footer.addEventListener('click', this.buttonClickHandler_.bind(footer), false);\n      }\n\n      const img = this.element_.querySelector('img');\n      if(img) {\n        img.addEventListener('load', this.imgLoadHandler_.bind(this.element_), false);\n        img.addEventListener('click', e => e.preventDefault(), true);\n        img.addEventListener('mousedown', this.imgDragHandler_.bind(img), true);\n        img.addEventListener('touchstart', this.imgDragHandler_.bind(img), true);\n      }\n      window.addEventListener('resize', fullThrottle( () => repositionDialog_(this.element_) ));\n      window.addEventListener('orientationchange', () => repositionDialog_(this.element_));\n\n      // Set upgraded flag\n      this.element_.classList.add(IS_UPGRADED);\n    }\n  };\n\n  /*\n   * Downgrade component\n   * E.g remove listeners and clean up resources\n   *\n   * Nothing to downgrade\n   *\n  MaterialExtLightbox.prototype.mdlDowngrade_ = function() {\n  };\n  */\n\n  /**\n   * The component registers itself. It can assume componentHandler is available in the global scope.\n   */\n  /* jshint undef:false */\n  componentHandler.register({\n    constructor: MaterialExtLightbox,\n    classAsString: 'MaterialExtLightbox',\n    cssClass: 'mdlext-js-lightbox'\n  });\n\n})();\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/lightbox/lightbox.js\n\n\n// WEBPACK FOOTER //\n// ./src/lightbox/lightbox.js","/**\n * @license\n * Copyright 2016 Leif Olsen. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * This code is built with Google Material Design Lite,\n * which is Licensed under the Apache License, Version 2.0\n */\n\n\n/**\n * A menu button is a button that opens a menu. It is often styled as a\n * typical push button with a downward pointing arrow or triangle to hint\n * that activating the button will display a menu.\n */\nimport { randomString } from '../utils/string-utils';\nimport fullThrottle from '../utils/full-throttle';\nimport {\n  VK_TAB,\n  VK_ENTER,\n  VK_ESC,\n  VK_SPACE,\n  VK_END,\n  VK_HOME,\n  VK_ARROW_LEFT,\n  VK_ARROW_UP,\n  VK_ARROW_RIGHT,\n  VK_ARROW_DOWN,\n  IS_UPGRADED,\n} from '../utils/constants';\n\nimport { getScrollParents, tether } from '../utils/dom-utils';\n\nconst JS_MENU_BUTTON = 'mdlext-js-menu-button';\nconst MENU_BUTTON_MENU = 'mdlext-menu';\nconst MENU_BUTTON_MENU_ITEM = 'mdlext-menu__item';\nconst MENU_BUTTON_MENU_ITEM_SEPARATOR = 'mdlext-menu__item-separator';\n//const MDL_LAYOUT_CONTENT = 'mdl-layout__content';\n\n/**\n * Creates the menu controlled by the menu button\n * @param element\n * @return {{element: Element, selected: Element, open: (function(*=)), removeListeners: (function()), downgrade: (function())}}\n */\n\nconst menuFactory = element => {\n\n  let ariaControls = null;\n  let parentNode = null;\n\n  const removeAllSelected = () => {\n    [...element.querySelectorAll(`.${MENU_BUTTON_MENU_ITEM}[aria-selected=\"true\"]`)]\n      .forEach(selectedItem => selectedItem.removeAttribute('aria-selected'));\n  };\n\n  const setSelected = (item, force=false) => {\n    if(force || (item && !item.hasAttribute('aria-selected'))) {\n      removeAllSelected();\n      if(item) {\n        item.setAttribute('aria-selected', 'true');\n      }\n    }\n  };\n\n  const getSelected = () => {\n    return element.querySelector(`.${MENU_BUTTON_MENU_ITEM}[aria-selected=\"true\"]`);\n  };\n\n  const isDisabled = item => item && item.hasAttribute('disabled');\n\n  const isSeparator = item => item && item.classList.contains(MENU_BUTTON_MENU_ITEM_SEPARATOR);\n\n  const focus = item => {\n    if(item) {\n      item = item.closest(`.${MENU_BUTTON_MENU_ITEM}`);\n    }\n    if(item) {\n      item.focus();\n    }\n  };\n\n  const nextItem = current => {\n    let n = current.nextElementSibling;\n    if(!n) {\n      n = element.firstElementChild;\n    }\n    if(!isDisabled(n) && !isSeparator(n)) {\n      focus(n);\n    }\n    else {\n      let i = element.children.length;\n      while(n && i-- > 0) {\n        if(isDisabled(n) || isSeparator(n)) {\n          n = n.nextElementSibling;\n          if(!n) {\n            n = element.firstElementChild;\n          }\n        }\n        else {\n          focus(n);\n          break;\n        }\n      }\n    }\n  };\n\n  const previousItem = current => {\n    let p = current.previousElementSibling;\n    if(!p) {\n      p = element.lastElementChild;\n    }\n    if(!isDisabled(p) && !isSeparator(p)) {\n      focus(p);\n    }\n    else {\n      let i = element.children.length;\n      while(p && i-- > 0) {\n        if(isDisabled(p) || isSeparator(p)) {\n          p = p.previousElementSibling;\n          if(!p) {\n            p = element.lastElementChild;\n          }\n        }\n        else {\n          focus(p);\n          break;\n        }\n      }\n    }\n  };\n\n  const firstItem = () => {\n    const item = element.firstElementChild;\n    if(isDisabled(item) || isSeparator(item) ) {\n      nextItem(item);\n    }\n    else {\n      focus(item);\n    }\n  };\n\n  const lastItem = () => {\n    const item = element.lastElementChild;\n    if(isDisabled(item) || isSeparator(item)) {\n      previousItem(item);\n    }\n    else {\n      focus(item);\n    }\n  };\n\n  const selectItem = item => {\n    if(item && !isDisabled(item) && !isSeparator(item)) {\n      setSelected(item);\n      close(true, item);\n    }\n  };\n\n  const keyDownHandler = event => {\n\n    const item = event.target.closest(`.${MENU_BUTTON_MENU_ITEM}`);\n\n    switch (event.keyCode) {\n      case VK_ARROW_UP:\n      case VK_ARROW_LEFT:\n        if(item) {\n          previousItem(item);\n        }\n        else {\n          firstItem();\n        }\n        break;\n\n      case VK_ARROW_DOWN:\n      case VK_ARROW_RIGHT:\n        if(item) {\n          nextItem(item);\n        }\n        else {\n          lastItem();\n        }\n        break;\n\n      case VK_HOME:\n        firstItem();\n        break;\n\n      case VK_END:\n        lastItem();\n        break;\n\n      case VK_SPACE:\n      case VK_ENTER:\n        selectItem(item);\n        break;\n\n      case VK_ESC:\n        close(true);\n        break;\n\n      case VK_TAB:\n        // We do not have a \"natural\" tab order from menu, so the best we can do is to set focus back to the button\n        close(true);\n        break;\n\n      default:\n        return;\n    }\n    event.preventDefault();\n  };\n\n\n  const blurHandler = event => {\n\n    // See: https://github.com/facebook/react/issues/2011\n    const t = event.relatedTarget ||\n      event.explicitOriginalTarget || // FF\n      document.activeElement;         // IE11\n\n    //console.log('***** blur, target, relatedTarget', event.target, t);\n\n    try {\n      if (t) {\n        if (t.closest(`.${MENU_BUTTON_MENU}`) !== element && shouldClose(t)) {\n          close();\n        }\n      }\n      else {\n        close();\n      }\n    }\n    catch(err) {\n      // FF throws error: \"TypeError: n.closest is not a function\" if related target is a text node\n      close();\n    }\n  };\n\n  const clickHandler = event => {\n    //console.log('***** click, target', event.target);\n\n    event.preventDefault();\n    const t = event.target;\n    if (t && t.closest(`.${MENU_BUTTON_MENU}`) === element) {\n      const item = t.closest(`.${MENU_BUTTON_MENU_ITEM}`);\n      if (item) {\n        selectItem(item);\n      }\n    }\n    else {\n      if (shouldClose(t)) {\n        close();\n      }\n    }\n  };\n\n  const touchStartHandler = event => {\n    //console.log('***** touchStart, target', event.target);\n\n    const t = event.target;\n    if(!(t && t.closest(`.${MENU_BUTTON_MENU}`) === element)) {\n      if (event.type === 'touchstart') {\n        event.preventDefault();\n      }\n      close();\n    }\n  };\n\n  const addListeners = () => {\n    element.addEventListener('keydown', keyDownHandler, false);\n    element.addEventListener('blur', blurHandler, true);\n    element.addEventListener('click', clickHandler, true);\n    document.documentElement.addEventListener('touchstart', touchStartHandler, true);\n  };\n\n  const removeListeners = () => {\n    element.removeEventListener('keydown', keyDownHandler, false);\n    element.removeEventListener('blur', blurHandler, true);\n    element.removeEventListener('click', clickHandler, true);\n    document.documentElement.removeEventListener('touchstart', touchStartHandler, true);\n  };\n\n  const open = (controlElement, position='first') => {\n\n    ariaControls = controlElement.closest(`.${JS_MENU_BUTTON}`);\n\n    element.style['min-width'] = `${Math.max(124, controlElement.getBoundingClientRect().width)}px`;\n    element.removeAttribute('hidden');\n    tether(controlElement, element);\n\n    let item;\n    switch (position.toLowerCase()) {\n      case 'first':\n        firstItem();\n        break;\n\n      case 'last':\n        lastItem();\n        break;\n\n      case 'selected':\n        item = getSelected();\n        if(item && !item.hasAttribute('disabled')) {\n          focus(item);\n        }\n        else {\n          firstItem();\n        }\n        break;\n    }\n\n    addListeners();\n  };\n\n\n  const shouldClose = target => {\n    //console.log('***** shouldClose');\n\n    let result = false;\n    const btn = (target && target.closest(`.${JS_MENU_BUTTON}`)) || null;\n    if(!btn) {\n      result = true;\n    }\n    else if(btn.getAttribute('aria-controls') === element.id) {\n      if(btn !== ariaControls) {\n        result = true;\n      }\n    }\n    else {\n      result = true;\n    }\n    return result;\n  };\n\n  const close = (forceFocus = false, item = null) => {\n    removeListeners();\n\n    element.dispatchEvent(\n      new CustomEvent('_closemenu', {\n        bubbles: true,\n        cancelable: true,\n        detail: { forceFocus: forceFocus, item: item }\n      })\n    );\n  };\n\n  const addWaiAria = () => {\n    if (!element.hasAttribute('id')) {\n      // Generate a random id\n      element.id = `menu-button-${randomString()}`;\n    }\n    element.setAttribute('tabindex', '-1');\n    element.setAttribute('role', 'menu');\n    element.setAttribute('hidden', '');\n\n    [...element.querySelectorAll(`.${MENU_BUTTON_MENU_ITEM}`)].forEach( menuitem => {\n      menuitem.setAttribute('tabindex', '-1');\n      menuitem.setAttribute('role', 'menuitem');\n    });\n\n    [...element.querySelectorAll(`.${MENU_BUTTON_MENU_ITEM_SEPARATOR}`)].forEach( menuitem => {\n      menuitem.setAttribute('role', 'separator');\n    });\n  };\n\n  const init = () => {\n    addWaiAria();\n    parentNode = element.parentNode;\n    element.classList.add('is-upgraded');\n  };\n\n  const downgrade = () => {\n    removeListeners();\n    if(element.parentNode !== parentNode) {\n      parentNode.appendChild(element);\n    }\n    element.classList.remove('is-upgraded');\n  };\n\n  init();\n\n  return {\n    /**\n     * Get the menu element\n     * @returns {Element} the menu element\n     */\n    get element() {\n      return element;\n    },\n\n    /**\n     * Set selected menu item\n     * @param item\n     */\n    set selected(item) {\n      setSelected(item, true);\n    },\n\n    /**\n     * Open menu\n     * @param {Element} controlElement the element where the menu should be aligned to\n     * @param {String} position menuElement item to receive focus after menu element is opened\n     */\n    open: (controlElement, position='first') => open(controlElement, position),\n\n    /**\n     * Remove event listeners.\n     */\n    removeListeners: () => removeListeners(),\n\n    /**\n     * Downgrade menu\n     */\n    downgrade: () => downgrade(),\n  };\n};\n\n\n/**\n * The menubutton component\n */\n\nclass MenuButton {\n\n  constructor(element) {\n    this.element = element;\n    this.focusElement = undefined;\n    this.focusElementLastScrollPosition = undefined;\n    this.scrollElements = [];\n    this.menu = undefined;\n    this.selectedItem = null;\n    this.init();\n  }\n\n  keyDownHandler = event => {\n    if(!this.isDisabled()) {\n      switch (event.keyCode) {\n        case VK_ARROW_UP:\n          this.openMenu('last');\n          break;\n\n        case VK_ARROW_DOWN:\n          this.openMenu();\n          break;\n\n        case VK_SPACE:\n        case VK_ENTER:\n          this.openMenu('selected');\n          break;\n\n        case VK_ESC:\n          this.closeMenu();\n          break;\n\n        case VK_TAB:\n          this.closeMenu();\n          return;\n\n        default:\n          return;\n      }\n    }\n    //event.stopPropagation();\n    event.preventDefault();\n  };\n\n  clickHandler = () => {\n    if(!this.isDisabled()) {\n      if(this.element.getAttribute('aria-expanded').toLowerCase() === 'true') {\n        this.closeMenu(true);\n      }\n      else {\n        this.openMenu('selected');\n      }\n    }\n  };\n\n  /**\n   * Re-position menu if content is scrolled, window is resized or orientation change\n   * @see https://javascriptweblog.wordpress.com/2015/11/02/of-classes-and-arrow-functions-a-cautionary-tale/\n   */\n  recalcMenuPosition = fullThrottle( () => {\n    const c = this.focusElement.getBoundingClientRect();\n    const dx = this.focusElementLastScrollPosition.left - c.left;\n    const dy = this.focusElementLastScrollPosition.top - c.top;\n    const left = (parseFloat(this.menu.element.style.left) || 0) - dx;\n    const top = (parseFloat(this.menu.element.style.top) || 0) - dy;\n\n    this.menu.element.style.left = `${left}px`;\n    this.menu.element.style.top = `${top}px`;\n    this.focusElementLastScrollPosition = c;\n  });\n\n\n  positionChangeHandler = () => {\n    this.recalcMenuPosition(this);\n  };\n\n  closeMenuHandler = event => {\n    if(event && event.detail) {\n      if(event.detail.item && event.detail.item !== this.selectedItem) {\n        this.selectedItem = event.detail.item;\n        this.dispatchMenuSelect();\n      }\n      this.closeMenu(event.detail.forceFocus);\n    }\n  };\n\n  dispatchMenuSelect() {\n    this.element.dispatchEvent(\n      new CustomEvent('menuselect', {\n        bubbles: true,\n        cancelable: true,\n        detail: { source: this.selectedItem }\n      })\n    );\n  }\n\n  isDisabled() {\n    return this.element.hasAttribute('disabled');\n  }\n\n  removeListeners() {\n    this.element.removeEventListener('keydown', this.keyDownHandler);\n    this.element.removeEventListener('click', this.clickHandler);\n  }\n\n  openMenu(position='first') {\n\n    if(!this.isDisabled() && this.menu) {\n\n      // Close the menu if button position change\n      this.scrollElements = getScrollParents(this.element);\n      this.scrollElements.forEach(el => el.addEventListener('scroll', this.positionChangeHandler));\n\n      window.addEventListener('resize', this.positionChangeHandler);\n      window.addEventListener('orientationchange', this.positionChangeHandler);\n      this.menu.element.addEventListener('_closemenu', this.closeMenuHandler);\n\n      this.menu.selected = this.selectedItem;\n      this.menu.open(this.focusElement, position);\n      this.element.setAttribute('aria-expanded', 'true');\n\n      this.focusElementLastScrollPosition = this.focusElement.getBoundingClientRect();\n    }\n  }\n\n  closeMenu(forceFocus = false) {\n    if(this.menu) {\n      this.menu.removeListeners();\n      this.scrollElements.forEach(el => el.removeEventListener('scroll', this.positionChangeHandler));\n      window.removeEventListener('resize', this.positionChangeHandler);\n      window.removeEventListener('orientationchange', this.positionChangeHandler);\n      this.menu.element.removeEventListener('_closemenu', this.closeMenuHandler);\n\n      if (forceFocus) {\n        this.focus();\n      }\n      this.element.setAttribute('aria-expanded', 'false');\n      this.menu.element.setAttribute('hidden', '');\n    }\n  }\n\n  focus() {\n    if(!this.isDisabled()) {\n      this.focusElement.focus();\n    }\n  }\n\n  init() {\n    const addListeners = () => {\n      this.element.addEventListener('keydown', this.keyDownHandler);\n      this.element.addEventListener('click', this.clickHandler);\n    };\n\n    const addWaiAria = () => {\n      this.element.setAttribute('role', 'button');\n      this.element.setAttribute('aria-expanded', 'false');\n      this.element.setAttribute('aria-haspopup', 'true');\n    };\n\n    const addFocusElement = () => {\n      this.focusElement = this.element.querySelector('input[type=\"text\"]');\n      if(!this.focusElement) {\n        this.focusElement = this.element;\n\n        if(!(this.focusElement.tagName.toLowerCase() === 'button' || this.focusElement.tagName.toLowerCase() === 'input')) {\n          if (!this.focusElement.hasAttribute('tabindex')) {\n            this.focusElement.setAttribute('tabindex', '0');\n          }\n        }\n      }\n    };\n\n    const moveElementToDocumentBody = (element) => {\n      // To position an element on top of all other z-indexed elements, the element should be moved to document.body\n      //       See: https://philipwalton.com/articles/what-no-one-told-you-about-z-index/\n\n      if(element.parentNode !== document.body) {\n        return document.body.appendChild(element);\n      }\n      return element;\n    };\n\n    const findMenuElement = () => {\n      let menuElement;\n      const menuElementId = this.element.getAttribute('aria-controls');\n      if(menuElementId !== null) {\n        menuElement = document.querySelector(`#${menuElementId }`);\n      }\n      else {\n        menuElement = this.element.parentNode.querySelector(`.${MENU_BUTTON_MENU}`);\n      }\n      return menuElement;\n    };\n\n    const addMenu = () => {\n      const menuElement = findMenuElement();\n      if(menuElement) {\n        if(menuElement.componentInstance) {\n          this.menu = menuElement.componentInstance;\n        }\n        else {\n          this.menu = menuFactory(menuElement);\n          menuElement.componentInstance = this.menu;\n          moveElementToDocumentBody(menuElement);\n        }\n        this.element.setAttribute('aria-controls', this.menu.element.id);\n      }\n    };\n\n    addFocusElement();\n    addWaiAria();\n    addMenu();\n    this.removeListeners();\n    addListeners();\n  }\n\n  downgrade() {\n    if(this.menu) {\n      // Do not downgrade menu if there are other buttons sharing this menu\n      const related = [...document.querySelectorAll(`.${JS_MENU_BUTTON}[aria-controls=\"${this.element.getAttribute('aria-controls')}\"]`)];\n      if(related.filter( c => c !== this.element && c.getAttribute('data-upgraded').indexOf('MaterialExtMenuButton') >= 0).length === 0) {\n        this.menu.downgrade();\n      }\n    }\n    this.removeListeners();\n  }\n\n}\n\n(function() {\n  'use strict';\n\n  /**\n   * https://github.com/google/material-design-lite/issues/4205\n   * @constructor\n   * @param {Element} element The element that will be upgraded.\n   */\n  const MaterialExtMenuButton = function MaterialExtMenuButton(element) {\n    this.element_ = element;\n    this.menuButton_ = null;\n\n    // Initialize instance.\n    this.init();\n  };\n  window['MaterialExtMenuButton'] = MaterialExtMenuButton;\n\n\n  // Public methods.\n\n  /**\n   * Get the menu element controlled by this button, null if no menu is controlled by this button\n   * @public\n   */\n  MaterialExtMenuButton.prototype.getMenuElement = function() {\n    return this.menuButton_.menu ? this.menuButton_.menu.element : null;\n  };\n  MaterialExtMenuButton.prototype['getMenuElement'] = MaterialExtMenuButton.prototype.getMenuElement;\n\n  /**\n   * Open menu\n   * @public\n   * @param {String} position one of \"first\", \"last\" or \"selected\"\n   */\n  MaterialExtMenuButton.prototype.openMenu = function(position) {\n    this.menuButton_.openMenu(position);\n  };\n  MaterialExtMenuButton.prototype['openMenu'] = MaterialExtMenuButton.prototype.openMenu;\n\n  /**\n   * Close menu\n   * @public\n   */\n  MaterialExtMenuButton.prototype.closeMenu = function() {\n    this.menuButton_.closeMenu(true);\n  };\n  MaterialExtMenuButton.prototype['closeMenu'] = MaterialExtMenuButton.prototype.closeMenu;\n\n  /**\n   * Get selected menu item\n   * @public\n   * @returns {Element} The selected menu item or null if no item selected\n   */\n  MaterialExtMenuButton.prototype.getSelectedMenuItem = function() {\n    return this.menuButton_.selectedItem;\n  };\n  MaterialExtMenuButton.prototype['getSelectedMenuItem'] = MaterialExtMenuButton.prototype.getSelectedMenuItem;\n\n\n  /**\n   * Set (default) selected menu item\n   * @param {Element} item\n   */\n  MaterialExtMenuButton.prototype.setSelectedMenuItem = function(item) {\n    this.menuButton_.selectedItem = item;\n  };\n  MaterialExtMenuButton.prototype['setSelectedMenuItem'] = MaterialExtMenuButton.prototype.setSelectedMenuItem;\n\n  /**\n   * Initialize component\n   */\n  MaterialExtMenuButton.prototype.init = function() {\n    if (this.element_) {\n      this.menuButton_ = new MenuButton(this.element_);\n      this.element_.addEventListener('mdl-componentdowngraded', this.mdlDowngrade_.bind(this));\n      this.element_.classList.add(IS_UPGRADED);\n    }\n  };\n\n  /**\n   * Downgrade component\n   * E.g remove listeners and clean up resources\n   */\n  MaterialExtMenuButton.prototype.mdlDowngrade_ = function() {\n    this.menuButton_.downgrade();\n  };\n\n  // The component registers itself. It can assume componentHandler is available\n  // in the global scope.\n  /* eslint no-undef: 0 */\n  componentHandler.register({\n    constructor: MaterialExtMenuButton,\n    classAsString: 'MaterialExtMenuButton',\n    cssClass: JS_MENU_BUTTON,\n    widget: true\n  });\n})();\n\n\n\n// WEBPACK FOOTER //\n// ./src/menu-button/menu-button.js\n\n\n// WEBPACK FOOTER //\n// ./src/menu-button/menu-button.js","/**\n * @license\n * Copyright 2016 Leif Olsen. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * This code is built with Google Material Design Lite,\n * which is Licensed under the Apache License, Version 2.0\n */\n\n/*\n * Copied/Modified from https://github.com/google/material-design-lite/tree/master/src/textfield\n */\n\nimport { randomString } from '../utils/string-utils';\nimport {\n  IS_DIRTY,\n  IS_FOCUSED,\n  IS_DISABLED,\n  IS_INVALID,\n  IS_UPGRADED\n} from '../utils/constants';\n\n(function() {\n  'use strict';\n  const LABEL = 'mdlext-selectfield__label';\n  const INPUT = 'mdlext-selectfield__select';\n\n  /**\n   * Class constructor for Selectfield MDLEXT component.\n   * Implements MDL component design pattern defined at:\n   * https://github.com/jasonmayes/mdl-component-design-pattern\n   *\n   * @constructor\n   * @param {HTMLElement} element The element that will be upgraded.\n   */\n  const MaterialExtSelectfield = function MaterialExtSelectfield(element) {\n    this.element_ = element;\n    this.init(); // Initialize instance.\n  };\n\n  window['MaterialExtSelectfield'] = MaterialExtSelectfield;\n\n  /**\n   * Handle focus.\n   *\n   * @param {Event} event The event that fired.\n   * @private\n   */\n  /*eslint no-unused-vars: 0*/\n  MaterialExtSelectfield.prototype.onFocus_ = function( /*event*/ ) {\n    this.element_.classList.add(IS_FOCUSED);\n  };\n\n  /**\n   * Handle lost focus.\n   *\n   * @param {Event} event The event that fired.\n   * @private\n   */\n  /*eslint no-unused-vars: 0*/\n  MaterialExtSelectfield.prototype.onBlur_ = function( /*event*/ ) {\n    this.element_.classList.remove(IS_FOCUSED);\n  };\n\n  /**\n   * Handle reset event from out side.\n   *\n   * @param {Event} event The event that fired.\n   * @private\n   */\n  MaterialExtSelectfield.prototype.onReset_ = function( /*event*/ ) {\n    this.updateClasses_();\n  };\n\n  /**\n   * Handle class updates.\n   *\n   * @private\n   */\n  MaterialExtSelectfield.prototype.updateClasses_ = function() {\n    this.checkDisabled();\n    this.checkValidity();\n    this.checkDirty();\n    this.checkFocus();\n  };\n\n  // Public methods.\n\n  /**\n   * Check the disabled state and update field accordingly.\n   *\n   * @public\n   */\n  MaterialExtSelectfield.prototype.checkDisabled = function() {\n    if (this.select_.disabled) {\n      this.element_.classList.add(IS_DISABLED);\n    } else {\n      this.element_.classList.remove(IS_DISABLED);\n    }\n  };\n  MaterialExtSelectfield.prototype['checkDisabled'] = MaterialExtSelectfield.prototype.checkDisabled;\n\n\n  /**\n   * Check the focus state and update field accordingly.\n   *\n   * @public\n   */\n  MaterialExtSelectfield.prototype.checkFocus = function() {\n    // Note: element.querySelector(':focus') always return null in JsDom, even if select element has focus\n    /*eslint no-extra-boolean-cast: 0*/\n    if (Boolean(this.element_.querySelector(':focus'))) {\n      this.element_.classList.add(IS_FOCUSED);\n    } else {\n      this.element_.classList.remove(IS_FOCUSED);\n    }\n  };\n\n  MaterialExtSelectfield.prototype['checkFocus'] = MaterialExtSelectfield.prototype.checkFocus;\n\n\n  /**\n   * Check the validity state and update field accordingly.\n   *\n   * @public\n   */\n  MaterialExtSelectfield.prototype.checkValidity = function() {\n\n    /* Don't think it makes any sense to check validity.\n       Tests I've done, so far, indicates that setting an illegal value via JS returns selectedIndex=0\n\n    if (this.select_.validity) {\n      if (this.select_.validity.valid) {\n        this.element_.classList.remove(this.CssClasses_.IS_INVALID);\n      } else {\n        this.element_.classList.add(this.CssClasses_.IS_INVALID);\n      }\n    }\n    */\n  };\n\n  MaterialExtSelectfield.prototype['checkValidity'] = MaterialExtSelectfield.prototype.checkValidity;\n\n  /**\n   * Check the dirty state and update field accordingly.\n   *\n   * @public\n   */\n  MaterialExtSelectfield.prototype.checkDirty = function() {\n    if (this.select_.value && this.select_.value.length > 0) {\n      this.element_.classList.add(IS_DIRTY);\n    } else {\n      this.element_.classList.remove(IS_DIRTY);\n    }\n  };\n\n  MaterialExtSelectfield.prototype['checkDirty'] = MaterialExtSelectfield.prototype.checkDirty;\n\n  /**\n   * Disable select field.\n   *\n   * @public\n   */\n  MaterialExtSelectfield.prototype.disable = function() {\n    this.select_.disabled = true;\n    this.updateClasses_();\n  };\n\n  MaterialExtSelectfield.prototype['disable'] = MaterialExtSelectfield.prototype.disable;\n\n  /**\n   * Enable select field.\n   *\n   * @public\n   */\n  MaterialExtSelectfield.prototype.enable = function() {\n    this.select_.disabled = false;\n    this.updateClasses_();\n  };\n\n  MaterialExtSelectfield.prototype['enable'] = MaterialExtSelectfield.prototype.enable;\n\n  /**\n   * Update select field value.\n   *\n   * @param {string} value The value to which to set the control (optional).\n   * @public\n   */\n  MaterialExtSelectfield.prototype.change = function(value) {\n    this.select_.value = value || '';\n    this.updateClasses_();\n  };\n  MaterialExtSelectfield.prototype['change'] = MaterialExtSelectfield.prototype.change;\n\n  /**\n   * Initialize element.\n   */\n  MaterialExtSelectfield.prototype.init = function() {\n    if (this.element_) {\n      this.label_ = this.element_.querySelector(`.${LABEL}`);\n      this.select_ = this.element_.querySelector(`.${INPUT}`);\n\n      if (this.select_) {\n        // Remove listeners, just in case ...\n        this.select_.removeEventListener('change', this.updateClasses_);\n        this.select_.removeEventListener('focus', this.onFocus_);\n        this.select_.removeEventListener('blur', this.onBlur_);\n        this.select_.removeEventListener('reset', this.onReset_);\n\n        this.select_.addEventListener('change', this.updateClasses_.bind(this));\n        this.select_.addEventListener('focus', this.onFocus_.bind(this));\n        this.select_.addEventListener('blur', this.onBlur_.bind(this));\n        this.select_.addEventListener('reset', this.onReset_.bind(this));\n\n        if(this.label_) {\n          let id;\n          if(!this.select_.hasAttribute('id')) {\n            id = `select-${randomString()}`;\n            this.select_.id = id;\n          }\n          else {\n            id = this.select_.id;\n          }\n\n          if(!this.label_.hasAttribute('for')) {\n            this.label_.setAttribute('for', id);\n          }\n        }\n\n        const invalid = this.element_.classList.contains(IS_INVALID);\n        this.updateClasses_();\n        this.element_.classList.add(IS_UPGRADED);\n\n        if (invalid) {\n          this.element_.classList.add(IS_INVALID);\n        }\n        if (this.select_.hasAttribute('autofocus')) {\n          this.element_.focus();\n          this.checkFocus();\n        }\n      }\n    }\n  };\n\n  /**\n   * Downgrade component\n   * E.g remove listeners and clean up resources\n   *\n   * Nothing to downgrade\n   *\n  MaterialExtSelectfield.prototype.mdlDowngrade_ = function() {\n    'use strict';\n    console.log('***** MaterialExtSelectfield.mdlDowngrade ');\n  };\n  */\n\n  // The component registers itself. It can assume componentHandler is available\n  // in the global scope.\n  /*eslint no-undef: 0*/\n  componentHandler.register({\n    constructor: MaterialExtSelectfield,\n    classAsString: 'MaterialExtSelectfield',\n    cssClass: 'mdlext-js-selectfield',\n    widget: true\n  });\n})();\n\n\n\n// WEBPACK FOOTER //\n// ./src/selectfield/selectfield.js\n\n\n// WEBPACK FOOTER //\n// ./src/selectfield/selectfield.js","/**\n * @license\n * Copyright 2016 Leif Olsen. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * This code is built with Google Material Design Lite,\n * which is Licensed under the Apache License, Version 2.0\n */\n\n/**\n * A sticky header makes site navigation easily accessible anywhere on the page and saves content space at the same.\n * The header should auto-hide, i.e. hiding the header automatically when a user starts scrolling down the page and\n * bringing the header back when a user might need it: they reach the bottom of the page or start scrolling up.\n */\n\nimport fullThrottle from '../utils/full-throttle';\nimport { jsonStringToObject } from '../utils/json-utils';\nimport {\n  IS_UPGRADED\n} from '../utils/constants';\n\n\n(function() {\n  'use strict';\n  const MDL_LAYOUT_CONTENT  = 'mdl-layout__content';\n  const IS_SCROLL_CLASS  = 'mdlext-is-scroll';\n\n\n  /**\n   * @constructor\n   * @param {Element} element The element that will be upgraded.\n   */\n  const MaterialExtStickyHeader = function MaterialExtStickyHeader(element) {\n    // Stores the element.\n    this.header_ = element;\n\n    // Heder listens to scroll events from content\n    this.content_ = null;\n    this.lastScrollTop_ = 0;\n\n    // Default config\n    this.config_ = {\n      visibleAtScrollEnd: false\n    };\n\n    this.mutationObserver_ = null;\n\n    this.drawing_ = false;\n\n    // Initialize instance.\n    this.init();\n  };\n\n  window['MaterialExtStickyHeader'] = MaterialExtStickyHeader;\n\n\n  /**\n   * Update header width\n   * @private\n   */\n  MaterialExtStickyHeader.prototype.recalcWidth_ = function() {\n    this.header_.style.width = `${this.content_.clientWidth}px`;\n  };\n\n  const throttleResize = fullThrottle(self => self.recalcWidth_() );\n\n  /**\n   * Adjust header width when window resizes or oreientation changes\n   * @param event\n   * @private\n   */\n  MaterialExtStickyHeader.prototype.resizeHandler_ = function( /* event */ ) {\n    throttleResize(this);\n  };\n\n\n  /**\n   * Update header position\n   * @private\n   */\n  MaterialExtStickyHeader.prototype.reposition_ = function() {\n\n    const currentContentScrollTop = this.content_.scrollTop;\n    const scrollDiff = this.lastScrollTop_ - currentContentScrollTop;\n\n    if(currentContentScrollTop <= 0) {\n      // Scrolled to the top. Header sticks to the top\n      this.header_.style.top = '0';\n      this.header_.classList.remove(IS_SCROLL_CLASS);\n    }\n    else if(scrollDiff > 0) {\n\n      if(scrollDiff >= this.header_.offsetHeight) {\n\n        // Scrolled up. Header slides in\n        const headerTop = (parseInt( window.getComputedStyle( this.header_ ).getPropertyValue( 'top' ) ) || 0);\n        if(headerTop != 0) {\n          this.header_.style.top = '0';\n          this.header_.classList.add(IS_SCROLL_CLASS);\n        }\n        this.lastScrollTop_ = currentContentScrollTop;\n      }\n      return;\n    }\n    else if(scrollDiff < 0) {\n      // Scrolled down\n      this.header_.classList.add(IS_SCROLL_CLASS);\n      let headerTop = (parseInt( window.getComputedStyle( this.header_ ).getPropertyValue( 'top' ) ) || 0);\n\n      if (this.content_.scrollHeight - this.content_.scrollTop <= this.content_.offsetHeight) {\n        // Bottom of content\n        if(headerTop != 0) {\n          this.header_.style.top = this.config_.visibleAtScrollEnd ? '0' : `-${this.header_.offsetHeight}px`;\n        }\n      }\n      else {\n        headerTop += scrollDiff;\n        const offsetHeight = this.header_.offsetHeight;\n        this.header_.style.top = `${( Math.abs( headerTop ) > offsetHeight ? -offsetHeight : headerTop )}px`;\n      }\n    }\n\n    this.lastScrollTop_ = currentContentScrollTop;\n  };\n\n\n  const throttleScroll = fullThrottle((self) => self.reposition_());\n\n  /**\n   * Scroll header when content scrolls\n   * @param event\n   * @private\n   */\n  MaterialExtStickyHeader.prototype.scrollHandler_ = function( /* event */ ) {\n    throttleScroll(this);\n  };\n\n  /**\n   * Init header position\n   * @private\n   */\n  MaterialExtStickyHeader.prototype.updatePosition_ = function( /* event */ ) {\n    this.recalcWidth_();\n    this.reposition_();\n  };\n\n  /**\n   * Add mutation observer\n   * @private\n   */\n  MaterialExtStickyHeader.prototype.addMutationObserver_ = function() {\n\n    // jsdom does not support MutationObserver - so this is not testable\n    /* istanbul ignore next */\n    this.mutationObserver_ = new MutationObserver( ( /*mutations*/ ) => {\n      // Adjust header width if content changes (e.g. in a SPA)\n      this.updatePosition_();\n    });\n\n    this.mutationObserver_.observe( this.content_, {\n      attributes: false,\n      childList: true,\n      characterData: false,\n      subtree: true\n    });\n  };\n\n    /**\n   * Removes event listeners\n   * @private\n   */\n  MaterialExtStickyHeader.prototype.removeListeners_ = function() {\n\n    window.removeEventListener('resize', this.resizeHandler_);\n    window.removeEventListener('orientationchange', this.resizeHandler_);\n\n    if(this.content_) {\n      this.content_.removeEventListener('scroll', this.scrollHandler_);\n    }\n\n    if(this.mutationObserver_) {\n      this.mutationObserver_.disconnect();\n      this.mutationObserver_ = null;\n    }\n  };\n\n  /**\n   * Initialize component\n   */\n  MaterialExtStickyHeader.prototype.init = function() {\n\n    if (this.header_) {\n\n      this.removeListeners_();\n\n      if(this.header_.hasAttribute('data-config')) {\n        this.config_ = jsonStringToObject(this.header_.getAttribute('data-config'));\n      }\n\n      this.content_ = this.header_.parentNode.querySelector(`.${MDL_LAYOUT_CONTENT}`) || null;\n\n      if(this.content_) {\n        this.content_.style.paddingTop = `${this.header_.offsetHeight}px`;  // Make room for sticky header\n        this.lastScrollTop_ = this.content_.scrollTop;\n\n        this.content_.addEventListener('scroll', this.scrollHandler_.bind(this));\n        window.addEventListener('resize', this.resizeHandler_.bind(this));\n        window.addEventListener('orientationchange', this.resizeHandler_.bind(this));\n\n        this.addMutationObserver_();\n        this.updatePosition_();\n\n        // Set upgraded flag\n        this.header_.classList.add(IS_UPGRADED);\n      }\n    }\n  };\n\n  /*\n   * Downgrade component\n   * E.g remove listeners and clean up resources\n   *\n   * Nothing to clean\n   *\n   MaterialExtStickyHeader.prototype.mdlDowngrade_ = function() {\n     'use strict';\n     console.log('***** MaterialExtStickyHeader.prototype.mdlDowngrade_');\n   };\n   */\n\n\n  // The component registers itself. It can assume componentHandler is available\n  // in the global scope.\n  /* eslint no-undef: 0 */\n  componentHandler.register({\n    constructor: MaterialExtStickyHeader,\n    classAsString: 'MaterialExtStickyHeader',\n    cssClass: 'mdlext-js-sticky-header'\n  });\n})();\n\n\n\n// WEBPACK FOOTER //\n// ./src/sticky-header/sticky-header.js\n\n\n// WEBPACK FOOTER //\n// ./src/sticky-header/sticky-header.js","import './constants';\nimport './dom-utils';\nimport './string-utils';\nimport './json-utils';\nimport './full-throttle';\nimport './easing';\nimport './interval-function';\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/index.js\n\n\n// WEBPACK FOOTER //\n// ./src/utils/index.js","module.exports = { \"default\": require(\"core-js/library/fn/array/from\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/array/from.js\n// module id = 60\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/array/from.js\n// module id = 60\n// module chunks = 0 1","module.exports = { \"default\": require(\"core-js/library/fn/is-iterable\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/is-iterable.js\n// module id = 61\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/is-iterable.js\n// module id = 61\n// module chunks = 0 1","module.exports = { \"default\": require(\"core-js/library/fn/number/is-nan\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/number/is-nan.js\n// module id = 62\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/number/is-nan.js\n// module id = 62\n// module chunks = 0 1","module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/object/define-property.js\n// module id = 63\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/object/define-property.js\n// module id = 63\n// module chunks = 0 1","module.exports = { \"default\": require(\"core-js/library/fn/object/entries\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/object/entries.js\n// module id = 64\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/object/entries.js\n// module id = 64\n// module chunks = 0 1","module.exports = { \"default\": require(\"core-js/library/fn/object/keys\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/object/keys.js\n// module id = 65\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/object/keys.js\n// module id = 65\n// module chunks = 0 1","module.exports = { \"default\": require(\"core-js/library/fn/reflect/apply\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/reflect/apply.js\n// module id = 66\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/reflect/apply.js\n// module id = 66\n// module chunks = 0 1","\"use strict\";\n\nexports.__esModule = true;\n\nvar _isIterable2 = require(\"../core-js/is-iterable\");\n\nvar _isIterable3 = _interopRequireDefault(_isIterable2);\n\nvar _getIterator2 = require(\"../core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n  function sliceIterator(arr, i) {\n    var _arr = [];\n    var _n = true;\n    var _d = false;\n    var _e = undefined;\n\n    try {\n      for (var _i = (0, _getIterator3.default)(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {\n        _arr.push(_s.value);\n\n        if (i && _arr.length === i) break;\n      }\n    } catch (err) {\n      _d = true;\n      _e = err;\n    } finally {\n      try {\n        if (!_n && _i[\"return\"]) _i[\"return\"]();\n      } finally {\n        if (_d) throw _e;\n      }\n    }\n\n    return _arr;\n  }\n\n  return function (arr, i) {\n    if (Array.isArray(arr)) {\n      return arr;\n    } else if ((0, _isIterable3.default)(Object(arr))) {\n      return sliceIterator(arr, i);\n    } else {\n      throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n    }\n  };\n}();\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/helpers/slicedToArray.js\n// module id = 67\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/helpers/slicedToArray.js\n// module id = 67\n// module chunks = 0 1","require('../../modules/es6.string.iterator');\nrequire('../../modules/es6.array.from');\nmodule.exports = require('../../modules/_core').Array.from;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/fn/array/from.js\n// module id = 68\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/fn/array/from.js\n// module id = 68\n// module chunks = 0 1","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.get-iterator');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/fn/get-iterator.js\n// module id = 69\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/fn/get-iterator.js\n// module id = 69\n// module chunks = 0 1","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.is-iterable');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/fn/is-iterable.js\n// module id = 70\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/fn/is-iterable.js\n// module id = 70\n// module chunks = 0 1","require('../../modules/es6.number.is-integer');\nmodule.exports = require('../../modules/_core').Number.isInteger;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/fn/number/is-integer.js\n// module id = 71\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/fn/number/is-integer.js\n// module id = 71\n// module chunks = 0 1","require('../../modules/es6.number.is-nan');\nmodule.exports = require('../../modules/_core').Number.isNaN;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/fn/number/is-nan.js\n// module id = 72\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/fn/number/is-nan.js\n// module id = 72\n// module chunks = 0 1","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/fn/object/assign.js\n// module id = 73\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/fn/object/assign.js\n// module id = 73\n// module chunks = 0 1","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc){\n  return $Object.defineProperty(it, key, desc);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/fn/object/define-property.js\n// module id = 74\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/fn/object/define-property.js\n// module id = 74\n// module chunks = 0 1","require('../../modules/es7.object.entries');\nmodule.exports = require('../../modules/_core').Object.entries;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/fn/object/entries.js\n// module id = 75\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/fn/object/entries.js\n// module id = 75\n// module chunks = 0 1","require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/fn/object/keys.js\n// module id = 76\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/fn/object/keys.js\n// module id = 76\n// module chunks = 0 1","require('../../modules/es6.reflect.apply');\nmodule.exports = require('../../modules/_core').Reflect.apply;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/fn/reflect/apply.js\n// module id = 77\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/fn/reflect/apply.js\n// module id = 77\n// module chunks = 0 1","module.exports = function(){ /* empty */ };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_add-to-unscopables.js\n// module id = 78\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_add-to-unscopables.js\n// module id = 78\n// module chunks = 0 1","// false -> Array#indexOf\n// true  -> Array#includes\nvar toIObject = require('./_to-iobject')\n  , toLength  = require('./_to-length')\n  , toIndex   = require('./_to-index');\nmodule.exports = function(IS_INCLUDES){\n  return function($this, el, fromIndex){\n    var O      = toIObject($this)\n      , length = toLength(O.length)\n      , index  = toIndex(fromIndex, length)\n      , value;\n    // Array#includes uses SameValueZero equality algorithm\n    if(IS_INCLUDES && el != el)while(length > index){\n      value = O[index++];\n      if(value != value)return true;\n    // Array#toIndex ignores holes, Array#includes - not\n    } else for(;length > index; index++)if(IS_INCLUDES || index in O){\n      if(O[index] === el)return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_array-includes.js\n// module id = 79\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_array-includes.js\n// module id = 79\n// module chunks = 0 1","'use strict';\nvar $defineProperty = require('./_object-dp')\n  , createDesc      = require('./_property-desc');\n\nmodule.exports = function(object, index, value){\n  if(index in object)$defineProperty.f(object, index, createDesc(0, value));\n  else object[index] = value;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_create-property.js\n// module id = 80\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_create-property.js\n// module id = 80\n// module chunks = 0 1","module.exports = require('./_global').document && document.documentElement;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_html.js\n// module id = 81\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_html.js\n// module id = 81\n// module chunks = 0 1","module.exports = !require('./_descriptors') && !require('./_fails')(function(){\n  return Object.defineProperty(require('./_dom-create')('div'), 'a', {get: function(){ return 7; }}).a != 7;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_ie8-dom-define.js\n// module id = 82\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_ie8-dom-define.js\n// module id = 82\n// module chunks = 0 1","// check on default Array iterator\nvar Iterators  = require('./_iterators')\n  , ITERATOR   = require('./_wks')('iterator')\n  , ArrayProto = Array.prototype;\n\nmodule.exports = function(it){\n  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_is-array-iter.js\n// module id = 83\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_is-array-iter.js\n// module id = 83\n// module chunks = 0 1","// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object')\n  , floor    = Math.floor;\nmodule.exports = function isInteger(it){\n  return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_is-integer.js\n// module id = 84\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_is-integer.js\n// module id = 84\n// module chunks = 0 1","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function(iterator, fn, value, entries){\n  try {\n    return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n  // 7.4.6 IteratorClose(iterator, completion)\n  } catch(e){\n    var ret = iterator['return'];\n    if(ret !== undefined)anObject(ret.call(iterator));\n    throw e;\n  }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_iter-call.js\n// module id = 85\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_iter-call.js\n// module id = 85\n// module chunks = 0 1","'use strict';\nvar create         = require('./_object-create')\n  , descriptor     = require('./_property-desc')\n  , setToStringTag = require('./_set-to-string-tag')\n  , IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function(){ return this; });\n\nmodule.exports = function(Constructor, NAME, next){\n  Constructor.prototype = create(IteratorPrototype, {next: descriptor(1, next)});\n  setToStringTag(Constructor, NAME + ' Iterator');\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_iter-create.js\n// module id = 86\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_iter-create.js\n// module id = 86\n// module chunks = 0 1","var ITERATOR     = require('./_wks')('iterator')\n  , SAFE_CLOSING = false;\n\ntry {\n  var riter = [7][ITERATOR]();\n  riter['return'] = function(){ SAFE_CLOSING = true; };\n  Array.from(riter, function(){ throw 2; });\n} catch(e){ /* empty */ }\n\nmodule.exports = function(exec, skipClosing){\n  if(!skipClosing && !SAFE_CLOSING)return false;\n  var safe = false;\n  try {\n    var arr  = [7]\n      , iter = arr[ITERATOR]();\n    iter.next = function(){ return {done: safe = true}; };\n    arr[ITERATOR] = function(){ return iter; };\n    exec(arr);\n  } catch(e){ /* empty */ }\n  return safe;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_iter-detect.js\n// module id = 87\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_iter-detect.js\n// module id = 87\n// module chunks = 0 1","module.exports = function(done, value){\n  return {value: value, done: !!done};\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_iter-step.js\n// module id = 88\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_iter-step.js\n// module id = 88\n// module chunks = 0 1","module.exports = true;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_library.js\n// module id = 89\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_library.js\n// module id = 89\n// module chunks = 0 1","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys  = require('./_object-keys')\n  , gOPS     = require('./_object-gops')\n  , pIE      = require('./_object-pie')\n  , toObject = require('./_to-object')\n  , IObject  = require('./_iobject')\n  , $assign  = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function(){\n  var A = {}\n    , B = {}\n    , S = Symbol()\n    , K = 'abcdefghijklmnopqrst';\n  A[S] = 7;\n  K.split('').forEach(function(k){ B[k] = k; });\n  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source){ // eslint-disable-line no-unused-vars\n  var T     = toObject(target)\n    , aLen  = arguments.length\n    , index = 1\n    , getSymbols = gOPS.f\n    , isEnum     = pIE.f;\n  while(aLen > index){\n    var S      = IObject(arguments[index++])\n      , keys   = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S)\n      , length = keys.length\n      , j      = 0\n      , key;\n    while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key];\n  } return T;\n} : $assign;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_object-assign.js\n// module id = 90\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_object-assign.js\n// module id = 90\n// module chunks = 0 1","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject    = require('./_an-object')\n  , dPs         = require('./_object-dps')\n  , enumBugKeys = require('./_enum-bug-keys')\n  , IE_PROTO    = require('./_shared-key')('IE_PROTO')\n  , Empty       = function(){ /* empty */ }\n  , PROTOTYPE   = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function(){\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = require('./_dom-create')('iframe')\n    , i      = enumBugKeys.length\n    , lt     = '<'\n    , gt     = '>'\n    , iframeDocument;\n  iframe.style.display = 'none';\n  require('./_html').appendChild(iframe);\n  iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n  // createDict = iframe.contentWindow.Object;\n  // html.removeChild(iframe);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n  iframeDocument.close();\n  createDict = iframeDocument.F;\n  while(i--)delete createDict[PROTOTYPE][enumBugKeys[i]];\n  return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties){\n  var result;\n  if(O !== null){\n    Empty[PROTOTYPE] = anObject(O);\n    result = new Empty;\n    Empty[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = createDict();\n  return Properties === undefined ? result : dPs(result, Properties);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_object-create.js\n// module id = 91\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_object-create.js\n// module id = 91\n// module chunks = 0 1","var dP       = require('./_object-dp')\n  , anObject = require('./_an-object')\n  , getKeys  = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties){\n  anObject(O);\n  var keys   = getKeys(Properties)\n    , length = keys.length\n    , i = 0\n    , P;\n  while(length > i)dP.f(O, P = keys[i++], Properties[P]);\n  return O;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_object-dps.js\n// module id = 92\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_object-dps.js\n// module id = 92\n// module chunks = 0 1","exports.f = Object.getOwnPropertySymbols;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_object-gops.js\n// module id = 93\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_object-gops.js\n// module id = 93\n// module chunks = 0 1","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has         = require('./_has')\n  , toObject    = require('./_to-object')\n  , IE_PROTO    = require('./_shared-key')('IE_PROTO')\n  , ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function(O){\n  O = toObject(O);\n  if(has(O, IE_PROTO))return O[IE_PROTO];\n  if(typeof O.constructor == 'function' && O instanceof O.constructor){\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectProto : null;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_object-gpo.js\n// module id = 94\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_object-gpo.js\n// module id = 94\n// module chunks = 0 1","var has          = require('./_has')\n  , toIObject    = require('./_to-iobject')\n  , arrayIndexOf = require('./_array-includes')(false)\n  , IE_PROTO     = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function(object, names){\n  var O      = toIObject(object)\n    , i      = 0\n    , result = []\n    , key;\n  for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while(names.length > i)if(has(O, key = names[i++])){\n    ~arrayIndexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_object-keys-internal.js\n// module id = 95\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_object-keys-internal.js\n// module id = 95\n// module chunks = 0 1","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export')\n  , core    = require('./_core')\n  , fails   = require('./_fails');\nmodule.exports = function(KEY, exec){\n  var fn  = (core.Object || {})[KEY] || Object[KEY]\n    , exp = {};\n  exp[KEY] = exec(fn);\n  $export($export.S + $export.F * fails(function(){ fn(1); }), 'Object', exp);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_object-sap.js\n// module id = 96\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_object-sap.js\n// module id = 96\n// module chunks = 0 1","var getKeys   = require('./_object-keys')\n  , toIObject = require('./_to-iobject')\n  , isEnum    = require('./_object-pie').f;\nmodule.exports = function(isEntries){\n  return function(it){\n    var O      = toIObject(it)\n      , keys   = getKeys(O)\n      , length = keys.length\n      , i      = 0\n      , result = []\n      , key;\n    while(length > i)if(isEnum.call(O, key = keys[i++])){\n      result.push(isEntries ? [key, O[key]] : O[key]);\n    } return result;\n  };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_object-to-array.js\n// module id = 97\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_object-to-array.js\n// module id = 97\n// module chunks = 0 1","module.exports = require('./_hide');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_redefine.js\n// module id = 98\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_redefine.js\n// module id = 98\n// module chunks = 0 1","var toInteger = require('./_to-integer')\n  , defined   = require('./_defined');\n// true  -> String#at\n// false -> String#codePointAt\nmodule.exports = function(TO_STRING){\n  return function(that, pos){\n    var s = String(defined(that))\n      , i = toInteger(pos)\n      , l = s.length\n      , a, b;\n    if(i < 0 || i >= l)return TO_STRING ? '' : undefined;\n    a = s.charCodeAt(i);\n    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n      ? TO_STRING ? s.charAt(i) : a\n      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n  };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_string-at.js\n// module id = 99\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_string-at.js\n// module id = 99\n// module chunks = 0 1","var toInteger = require('./_to-integer')\n  , max       = Math.max\n  , min       = Math.min;\nmodule.exports = function(index, length){\n  index = toInteger(index);\n  return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_to-index.js\n// module id = 100\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_to-index.js\n// module id = 100\n// module chunks = 0 1","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function(it, S){\n  if(!isObject(it))return it;\n  var fn, val;\n  if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;\n  if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val;\n  if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_to-primitive.js\n// module id = 101\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/_to-primitive.js\n// module id = 101\n// module chunks = 0 1","var anObject = require('./_an-object')\n  , get      = require('./core.get-iterator-method');\nmodule.exports = require('./_core').getIterator = function(it){\n  var iterFn = get(it);\n  if(typeof iterFn != 'function')throw TypeError(it + ' is not iterable!');\n  return anObject(iterFn.call(it));\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/core.get-iterator.js\n// module id = 102\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/core.get-iterator.js\n// module id = 102\n// module chunks = 0 1","var classof   = require('./_classof')\n  , ITERATOR  = require('./_wks')('iterator')\n  , Iterators = require('./_iterators');\nmodule.exports = require('./_core').isIterable = function(it){\n  var O = Object(it);\n  return O[ITERATOR] !== undefined\n    || '@@iterator' in O\n    || Iterators.hasOwnProperty(classof(O));\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/core.is-iterable.js\n// module id = 103\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/core.is-iterable.js\n// module id = 103\n// module chunks = 0 1","'use strict';\nvar ctx            = require('./_ctx')\n  , $export        = require('./_export')\n  , toObject       = require('./_to-object')\n  , call           = require('./_iter-call')\n  , isArrayIter    = require('./_is-array-iter')\n  , toLength       = require('./_to-length')\n  , createProperty = require('./_create-property')\n  , getIterFn      = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function(iter){ Array.from(iter); }), 'Array', {\n  // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n  from: function from(arrayLike/*, mapfn = undefined, thisArg = undefined*/){\n    var O       = toObject(arrayLike)\n      , C       = typeof this == 'function' ? this : Array\n      , aLen    = arguments.length\n      , mapfn   = aLen > 1 ? arguments[1] : undefined\n      , mapping = mapfn !== undefined\n      , index   = 0\n      , iterFn  = getIterFn(O)\n      , length, result, step, iterator;\n    if(mapping)mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n    // if object isn't iterable or it's array with default iterator - use simple case\n    if(iterFn != undefined && !(C == Array && isArrayIter(iterFn))){\n      for(iterator = iterFn.call(O), result = new C; !(step = iterator.next()).done; index++){\n        createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n      }\n    } else {\n      length = toLength(O.length);\n      for(result = new C(length); length > index; index++){\n        createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n      }\n    }\n    result.length = index;\n    return result;\n  }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/es6.array.from.js\n// module id = 104\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/es6.array.from.js\n// module id = 104\n// module chunks = 0 1","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables')\n  , step             = require('./_iter-step')\n  , Iterators        = require('./_iterators')\n  , toIObject        = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function(iterated, kind){\n  this._t = toIObject(iterated); // target\n  this._i = 0;                   // next index\n  this._k = kind;                // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function(){\n  var O     = this._t\n    , kind  = this._k\n    , index = this._i++;\n  if(!O || index >= O.length){\n    this._t = undefined;\n    return step(1);\n  }\n  if(kind == 'keys'  )return step(0, index);\n  if(kind == 'values')return step(0, O[index]);\n  return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/es6.array.iterator.js\n// module id = 105\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/es6.array.iterator.js\n// module id = 105\n// module chunks = 0 1","// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', {isInteger: require('./_is-integer')});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/es6.number.is-integer.js\n// module id = 106\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/es6.number.is-integer.js\n// module id = 106\n// module chunks = 0 1","// 20.1.2.4 Number.isNaN(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', {\n  isNaN: function isNaN(number){\n    return number != number;\n  }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/es6.number.is-nan.js\n// module id = 107\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/es6.number.is-nan.js\n// module id = 107\n// module chunks = 0 1","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', {assign: require('./_object-assign')});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/es6.object.assign.js\n// module id = 108\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/es6.object.assign.js\n// module id = 108\n// module chunks = 0 1","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', {defineProperty: require('./_object-dp').f});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/es6.object.define-property.js\n// module id = 109\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/es6.object.define-property.js\n// module id = 109\n// module chunks = 0 1","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object')\n  , $keys    = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function(){\n  return function keys(it){\n    return $keys(toObject(it));\n  };\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/es6.object.keys.js\n// module id = 110\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/es6.object.keys.js\n// module id = 110\n// module chunks = 0 1","// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)\nvar $export   = require('./_export')\n  , aFunction = require('./_a-function')\n  , anObject  = require('./_an-object')\n  , rApply    = (require('./_global').Reflect || {}).apply\n  , fApply    = Function.apply;\n// MS Edge argumentsList argument is optional\n$export($export.S + $export.F * !require('./_fails')(function(){\n  rApply(function(){});\n}), 'Reflect', {\n  apply: function apply(target, thisArgument, argumentsList){\n    var T = aFunction(target)\n      , L = anObject(argumentsList);\n    return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L);\n  }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/es6.reflect.apply.js\n// module id = 111\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/es6.reflect.apply.js\n// module id = 111\n// module chunks = 0 1","// https://github.com/tc39/proposal-object-values-entries\nvar $export  = require('./_export')\n  , $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n  entries: function entries(it){\n    return $entries(it);\n  }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/es7.object.entries.js\n// module id = 112\n// module chunks = 0 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/~/core-js/library/modules/es7.object.entries.js\n// module id = 112\n// module chunks = 0 1","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/mdl-ext-build.scss\n// module id = 113\n// module chunks = 1\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/mdl-ext-build.scss\n// module id = 113\n// module chunks = 1"],"sourceRoot":""}
\ No newline at end of file