You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by sc...@apache.org on 2018/04/23 20:03:25 UTC

[15/51] [partial] nifi-fds git commit: [NIFIREG-168] upgrade to angular v5.2.0, angular-material v5.2.0, covalent v1.0.1

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/f85188ec/node_modules/@angular/cdk/bundles/cdk-a11y.umd.min.js.map
----------------------------------------------------------------------
diff --git a/node_modules/@angular/cdk/bundles/cdk-a11y.umd.min.js.map b/node_modules/@angular/cdk/bundles/cdk-a11y.umd.min.js.map
index 44053a7..6c6b0fb 100644
--- a/node_modules/@angular/cdk/bundles/cdk-a11y.umd.min.js.map
+++ b/node_modules/@angular/cdk/bundles/cdk-a11y.umd.min.js.map
@@ -1 +1 @@
-{"version":3,"sources":["/Users/karakara/repos/material2/dist/bundles/cdk-a11y.umd.js"],"names":["global","factory","exports","module","require","define","amd","ng","cdk","a11y","Rx","keycodes","rxjs","core","platform","coercion","Observable","common","this","rxjs_Subject","rxjs_Subscription","_angular_cdk_keycodes","_angular_cdk_rxjs","_angular_core","_angular_cdk_platform","_angular_cdk_coercion","rxjs_observable_of","_angular_common","__extends","d","b","__","constructor","extendStatics","prototype","Object","create","addAriaReferencedId","el","attr","id","ids","getAriaReferenceIds","some","existingId","trim","push","setAttribute","join","ID_DELIMINATOR","removeAriaReferencedId","filteredIds","filter","val","getAttribute","match","createMessageElement","message","messageElement","document","createElement","CDK_DESCRIBEDBY_ID_PREFIX","nextId","appendChild","createTextNode","messagesContainer","createMessagesContainer","messageRegistry","set","referenceCount","deleteMessageElement"
 ,"registeredMessage","get","removeChild","delete","MESSAGES_CONTAINER_ID","style","display","body","deleteMessagesContainer","removeCdkDescribedByReferenceIds","element","originalReferenceIds","indexOf","addMessageReference","CDK_DESCRIBEDBY_HOST_ATTRIBUTE","removeMessageReference","removeAttribute","isElementDescribedByMessage","referenceIds","messageId","ARIA_DESCRIBER_PROVIDER_FACTORY","parentDispatcher","AriaDescriber","isFakeMousedownFromScreenReader","event","buttons","hasGeometry","offsetWidth","offsetHeight","getClientRects","length","isNativeFormElement","nodeName","toLowerCase","isHiddenInput","isInputElement","type","isAnchorWithHref","isAnchorElement","hasAttribute","hasValidTabIndex","undefined","tabIndex","isNaN","parseInt","getTabIndexValue","isPotentiallyTabbableIOS","inputType","isPotentiallyFocusable","getWindow","node","ownerDocument","defaultView","window","LIVE_ANNOUNCER_PROVIDER_FACTORY","liveElement","LiveAnnouncer","FOCUS_MONITOR_PROVIDER_FACTORY","ngZone","F
 ocusMonitor","setPrototypeOf","__proto__","Array","p","hasOwnProperty","ListKeyManager","_items","_activeItemIndex","_wrap","_letterKeyStream","Subject","_typeaheadSubscription","Subscription","EMPTY","_pressedLetters","tabOut","withWrap","withTypeAhead","debounceInterval","_this","item","getLabel","Error","unsubscribe","RxChain","from","call","doOperator","keyCode","debounceTime","map","subscribe","inputString","items","toArray","i","index","disabled","toUpperCase","setActiveItem","_activeItem","onKeydown","DOWN_ARROW","setNextItemActive","UP_ARROW","setPreviousItemActive","TAB","next","key","toLocaleUpperCase","A","Z","ZERO","NINE","String","fromCharCode","preventDefault","defineProperty","enumerable","configurable","setFirstItemActive","_setActiveItemByIndex","setLastItemActive","_setActiveItemByDelta","updateActiveItemIndex","delta","_setActiveInWrapMode","_setActiveInDefaultMode","fallbackDelta","ActiveDescendantKeyManager","_super","apply","arguments","activeItem","setInactive
 Styles","setActiveStyles","Map","_platform","describe","hostElement","isBrowser","has","removeDescription","childNodes","ngOnDestroy","describedElements","querySelectorAll","clear","decorators","Injectable","ctorParameters","Platform","ARIA_DESCRIBER_PROVIDER","provide","deps","Optional","SkipSelf","useFactory","FocusKeyManager","focus","InteractivityChecker","isDisabled","isVisible","getComputedStyle","visibility","isTabbable","frameElement","frameType","BLINK","WEBKIT","tabIndexValue","TRIDENT","FIREFOX","IOS","isFocusable","FocusTrap","_element","_checker","_ngZone","deferAnchors","_enabled","attachAnchors","_startAnchor","_endAnchor","destroy","parentNode","_createAnchor","runOutsideAngular","addEventListener","focusLastTabbableElement","focusFirstTabbableElement","insertBefore","nextSibling","focusInitialElementWhenReady","Promise","resolve","_executeOnStable","focusInitialElement","focusFirstTabbableElementWhenReady","focusLastTabbableElementWhenReady","_getRegionBoundary","bo
 und","markers","console","warn","_getFirstTabbableElement","_getLastTabbableElement","redirectToElement","querySelector","root","children","tabbableChild","nodeType","Node","ELEMENT_NODE","anchor","classList","add","fn","isStable","first","onStable","asObservable","FocusTrapFactory","NgZone","FocusTrapDeprecatedDirective","_elementRef","_focusTrapFactory","focusTrap","nativeElement","enabled","coerceBooleanProperty","ngAfterContentInit","Directive","args","selector","ElementRef","propDecorators","Input","FocusTrapDirective","value","exportAs","LIVE_ANNOUNCER_ELEMENT_TOKEN","InjectionToken","elementToken","_liveElement","_createLiveElement","announce","politeness","textContent","setTimeout","liveEl","Inject","LIVE_ANNOUNCER_PROVIDER","_origin","_windowFocused","_elementInfo","WeakMap","_registerDocumentEvents","monitor","renderer","checkChildren","of","cachedInfo","subject","info","unlisten","focusListener","_onFocus","blurListener","_onBlur","removeEventListener","stopMonitoring","e
 lementInfo","complete","_setClasses","focusVia","origin","_setOriginForCurrentEventQueue","_lastTouchTarget","_touchTimeout","clearTimeout","target","toggleClass","className","shouldSet","addClass","removeClass","_wasCausedByTouch","focusTarget","contains","_lastFocusOrigin","relatedTarget","CdkMonitorFocus","_focusMonitor","cdkFocusChange","EventEmitter","_monitorSubscription","emit","Renderer2","Output","FOCUS_MONITOR_PROVIDER","A11yModule","NgModule","imports","CommonModule","PlatformModule","declarations","providers","TOUCH_BUFFER_MS"],"mappings":";;;;;;;CAOC,SAAUA,EAAQC,GACC,gBAAZC,UAA0C,mBAAXC,QAAyBF,EAAQC,QAASE,QAAQ,gBAAiBA,QAAQ,qBAAsBA,QAAQ,yBAA0BA,QAAQ,qBAAsBA,QAAQ,iBAAkBA,QAAQ,yBAA0BA,QAAQ,yBAA0BA,QAAQ,sBAAuBA,QAAQ,oBAC1T,kBAAXC,SAAyBA,OAAOC,IAAMD,QAAQ,UAAW,eAAgB,oBAAqB,wBAAyB,oBAAqB,gBAAiB,wBAAyB,wBAAyB,qBAAsB,mBAAoBJ,GAC/PA,GAASD,EAAOO,GAAKP,EAAOO,OAAUP,EAAOO,GAAGC,IAAMR,EAAOO,GAAGC,QAAWR,EAAOO,GAAGC,IAAIC,KAAOT,EAAOO,GAAGC,IAAIC,UAAYT,EAAOU,GAAGV,EAAOU,GAAGV,EAAOO,GAAGC
 ,IAAIG,SAASX,EAAOO,GAAGC,IAAII,KAAKZ,EAAOO,GAAGM,KAAKb,EAAOO,GAAGC,IAAIM,SAASd,EAAOO,GAAGC,IAAIO,SAASf,EAAOU,GAAGM,WAAWhB,EAAOO,GAAGU,SACpRC,KAAM,SAAWhB,EAAQiB,EAAaC,EAAkBC,EAAsBC,EAAkBC,EAAcC,EAAsBC,EAAsBC,EAAmBC,GAAmB,YAsBlM,SAASC,GAAUC,EAAGC,GAElB,QAASC,KAAOb,KAAKc,YAAcH,EADnCI,EAAcJ,EAAGC,GAEjBD,EAAEK,UAAkB,OAANJ,EAAaK,OAAOC,OAAON,IAAMC,EAAGG,UAAYJ,EAAEI,UAAW,GAAIH,IAmRnF,QAASM,GAAoBC,EAAIC,EAAMC,GACnC,GAAqBC,GAAMC,EAAoBJ,EAAIC,EAC/CE,GAAIE,KAAK,SAAUC,GAAc,MAAOA,GAAWC,QAAUL,EAAGK,WAGpEJ,EAAIK,KAAKN,EAAGK,QACZP,EAAGS,aAAaR,EAAME,EAAIO,KAAKC,KAUnC,QAASC,GAAuBZ,EAAIC,EAAMC,GACtC,GAAqBC,GAAMC,EAAoBJ,EAAIC,GAC9BY,EAAcV,EAAIW,OAAO,SAAUC,GAAO,MAAOA,IAAOb,EAAGK,QAChFP,GAAGS,aAAaR,EAAMY,EAAYH,KAAKC,IAS3C,QAASP,GAAoBJ,EAAIC,GAE7B,OAAQD,EAAGgB,aAAaf,IAAS,IAAIgB,MAAM,YAmH/C,QAASC,GAAqBC,GAC1B,GAAqBC,GAAiBC,SAASC,cAAc,MAC7DF,GAAeX,aAAa,KAAMc,EAA4B,IAAMC,KACpEJ,EAAeK,YAA+BJ,SAASK,eAAeP,IACjEQ,GACDC,IAEJ,EAAsBH,YAAYL,GAClCS,EAAgBC,IAAIX,GAAWC,eAAgBA,EAAgBW,eAAgB,IAOnF,QAASC,GAAqBb,GAC1B,GAAqBc
 ,GAAoBJ,EAAgBK,IAAIf,GACxCC,EAAiBa,GAAqBA,EAAkBb,cACzEO,IAAqBP,GACrBO,EAAkBQ,YAAYf,GAElCS,EAAgBO,OAAOjB,GAM3B,QAASS,KACLD,EAAoBN,SAASC,cAAc,OAC3CK,EAAkBlB,aAAa,KAAM4B,GACrCV,EAAkBlB,aAAa,cAAe,QAC9CkB,EAAkBW,MAAMC,QAAU,OAClClB,SAASmB,KAAKf,YAAYE,GAM9B,QAASc,KACLpB,SAASmB,KAAKL,YAA6B,GAC3CR,EAAoB,KAOxB,QAASe,GAAiCC,GAEtC,GAAqBC,GAAuBxC,EAAoBuC,EAAS,oBACpE7B,OAAO,SAAUZ,GAAM,MAAgD,IAAzCA,EAAG2C,QAAQtB,IAC9CoB,GAAQlC,aAAa,mBAAoBmC,EAAqBlC,KAAK,MASvE,QAASoC,GAAoBH,EAASxB,GAClC,GAAqBc,GAAsBJ,EAAgBK,IAAIf,EAE/DpB,GAAoB4C,EAAS,mBAAoBV,EAAkBb,eAAelB,IAClFyC,EAAQlC,aAAasC,EAAgC,IACrDd,EAAkBF,iBAStB,QAASiB,GAAuBL,EAASxB,GACrC,GAAqBc,GAAsBJ,EAAgBK,IAAIf,EAC/Dc,GAAkBF,iBAClBnB,EAAuB+B,EAAS,mBAAoBV,EAAkBb,eAAelB,IACrFyC,EAAQM,gBAAgBF,GAQ5B,QAASG,GAA4BP,EAASxB,GAC1C,GAAqBgC,GAAe/C,EAAoBuC,EAAS,oBAC5CV,EAAoBJ,EAAgBK,IAAIf,GACxCiC,EAAYnB,GAAqBA,EAAkBb,eAAelB,EACvF,SAASkD,IAAiD,GAApCD,EAAaN,QAAQO,GAQ/C,QAASC,GAAgCC,EAAkB9E,GACvD,MAAO8E,IAAoB,GAAIC,GAAc/E,GAwBjD,QAASgF,GAAgCC,GACrC,MAAyB,KAAlBA,EAAMC,Q
 AwJjB,QAASC,GAAYhB,GAGjB,SAAUA,EAAQiB,aAAejB,EAAQkB,cAAgBlB,EAAQmB,iBAAiBC,QAOtF,QAASC,GAAoBrB,GACzB,GAAqBsB,GAAWtB,EAAQsB,SAASC,aACjD,OAAoB,UAAbD,GACU,WAAbA,GACa,WAAbA,GACa,aAAbA,EAOR,QAASE,GAAcxB,GACnB,MAAOyB,GAAezB,IAA4B,UAAhBA,EAAQ0B,KAO9C,QAASC,GAAiB3B,GACtB,MAAO4B,GAAgB5B,IAAYA,EAAQ6B,aAAa,QAO5D,QAASJ,GAAezB,GACpB,MAAyC,SAAlCA,EAAQsB,SAASC,cAO5B,QAASK,GAAgB5B,GACrB,MAAyC,KAAlCA,EAAQsB,SAASC,cAO5B,QAASO,GAAiB9B,GACtB,IAAKA,EAAQ6B,aAAa,iBAAoCE,KAArB/B,EAAQgC,SAC7C,OAAO,CAEX,IAAqBA,GAAWhC,EAAQ3B,aAAa,WAErD,OAAgB,UAAZ2D,MAGMA,GAAaC,MAAMC,SAASF,EAAU,MAQpD,QAASG,GAAiBnC,GACtB,IAAK8B,EAAiB9B,GAClB,MAAO,KAGX,IAAqBgC,GAAWE,SAASlC,EAAQ3B,aAAa,aAAe,GAAI,GACjF,OAAO4D,OAAMD,IAAa,EAAIA,EAOlC,QAASI,GAAyBpC,GAC9B,GAAqBsB,GAAWtB,EAAQsB,SAASC,cAC5Bc,EAAyB,UAAbf,GAAwB,EAAYI,IACrE,OAAqB,SAAdW,GACc,aAAdA,GACa,WAAbf,GACa,aAAbA,EAQX,QAASgB,GAAuBtC,GAE5B,OAAIwB,EAAcxB,KAGXqB,EAAoBrB,IACvB2B,EAAiB3B,IACjBA,EAAQ6B,aAAa,oBACrBC,EAAiB9B,IAOzB,QAASuC,GAAUC,GACf,MAAOA,GAAKC,cAAcC,aAAeC,OA6d7C,QAASC,GAAgCjC
 ,EAAkBkC,EAAahH,GACpE,MAAO8E,IAAoB,GAAImC,IAAcD,EAAahH,GA4U9D,QAASkH,GAA+BpC,EAAkBqC,EAAQnH,GAC9D,MAAO8E,IAAoB,GAAIsC,IAAaD,EAAQnH,GA5lDxD,GAAImB,GAAgBE,OAAOgG,iBACpBC,uBAA2BC,QAAS,SAAUxG,EAAGC,GAAKD,EAAEuG,UAAYtG,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAIwG,KAAKxG,GAAOA,EAAEyG,eAAeD,KAAIzG,EAAEyG,GAAKxG,EAAEwG,KAYrEE,EAAkB,WAIlB,QAASA,GAAeC,GACpBvH,KAAKuH,OAASA,EACdvH,KAAKwH,kBAAoB,EACzBxH,KAAKyH,OAAQ,EACbzH,KAAK0H,iBAAmB,GAAIzH,GAAa0H,QACzC3H,KAAK4H,uBAAyB1H,EAAkB2H,aAAaC,MAC7D9H,KAAK+H,mBAKL/H,KAAKgI,OAAS,GAAI/H,GAAa0H,QAsNnC,MA/MAL,GAAetG,UAAUiH,SAAW,WAEhC,MADAjI,MAAKyH,OAAQ,EACNzH,MAOXsH,EAAetG,UAAUkH,cAAgB,SAAUC,GAC/C,GAAIC,GAAQpI,IAEZ,QADyB,KAArBmI,IAA+BA,EAAmB,KAClDnI,KAAKuH,OAAOpC,QAAUnF,KAAKuH,OAAO9F,KAAK,SAAU4G,GAAQ,MAAgC,kBAAlBA,GAAKC,WAC5E,KAAMC,OAAM,+EAyBhB,OAvBAvI,MAAK4H,uBAAuBY,cAI5BxI,KAAK4H,uBAAyBxH,EAAkBqI,QAAQC,KAAK1I,KAAK0H,kBAC7DiB,KAAKvI,EAAkBwI,WAAY,SAAUC,GAAW,MAAOT,GAAML,gBAAgBnG,KAAKiH,KAC1FF,KAAKvI,EAAkB0I,aAAcX,GACrCQ,KAAKvI,EAAkB8B,OAAQ,WAAc,MAAOkG,GAAML,gBAAgB5C,
 OAAS,IACnFwD,KAAKvI,EAAkB2I,IAAK,WAAc,MAAOX,GAAML,gBAAgBjG,KAAK,MAC5EkH,UAAU,SAAUC,GAIrB,IAAK,GAHgBC,GAAQd,EAAMb,OAAO4B,UAGhBC,EAAI,EAAGA,EAAIF,EAAM/D,OAAS,EAAGiE,IAAK,CACxD,GAAqBC,IAASjB,EAAMZ,iBAAmB4B,GAAKF,EAAM/D,OAC7CkD,EAAOa,EAAMG,EAClC,KAAKhB,EAAKiB,UAA8E,IAAhEjB,EAAc,WAAIkB,cAAc5H,OAAOsC,QAAQgF,GAAoB,CACvFb,EAAMoB,cAAcH,EACpB,QAGRjB,EAAML,qBAEH/H,MAOXsH,EAAetG,UAAUwI,cAAgB,SAAUH,GAC/CrJ,KAAKwH,iBAAmB6B,EACxBrJ,KAAKyJ,YAAczJ,KAAKuH,OAAO4B,UAAUE,IAO7C/B,EAAetG,UAAU0I,UAAY,SAAU7E,GAC3C,OAAQA,EAAMgE,SACV,IAAK1I,GAAsBwJ,WACvB3J,KAAK4J,mBACL,MACJ,KAAKzJ,GAAsB0J,SACvB7J,KAAK8J,uBACL,MACJ,KAAK3J,GAAsB4J,IAEvB,WADA/J,MAAKgI,OAAOgC,MAEhB,SACI,GAAqBnB,GAAUhE,EAAMgE,OAWrC,aARIhE,EAAMoF,KAA4B,IAArBpF,EAAMoF,IAAI9E,OACvBnF,KAAK0H,iBAAiBsC,KAAKnF,EAAMoF,IAAIC,sBAE/BrB,GAAW1I,EAAsBgK,GAAKtB,GAAW1I,EAAsBiK,GAAOvB,GAAW1I,EAAsBkK,MAAQxB,GAAW1I,EAAsBmK,OAC9JtK,KAAK0H,iBAAiBsC,KAAKO,OAAOC,aAAa3B,KAM3D7I,KAAK+H,mBACLlD,EAAM4F,kBAEVxJ,OAAOyJ,eAAepD,EAAetG,UAAW,mBAK5CsC,IAAK,WACD,MAAOtD,MAAKwH,kBAEh
 BmD,YAAY,EACZC,cAAc,IAElB3J,OAAOyJ,eAAepD,EAAetG,UAAW,cAK5CsC,IAAK,WACD,MAAOtD,MAAKyJ,aAEhBkB,YAAY,EACZC,cAAc,IAMlBtD,EAAetG,UAAU6J,mBAAqB,WAC1C7K,KAAK8K,sBAAsB,EAAG,IAMlCxD,EAAetG,UAAU+J,kBAAoB,WACzC/K,KAAK8K,sBAAsB9K,KAAKuH,OAAOpC,OAAS,GAAI,IAMxDmC,EAAetG,UAAU4I,kBAAoB,WACzC5J,KAAKwH,iBAAmB,EAAIxH,KAAK6K,qBAAuB7K,KAAKgL,sBAAsB,IAMvF1D,EAAetG,UAAU8I,sBAAwB,WAC7C9J,KAAKwH,iBAAmB,GAAKxH,KAAKyH,MAAQzH,KAAK+K,oBACzC/K,KAAKgL,uBAAuB,IAOtC1D,EAAetG,UAAUiK,sBAAwB,SAAU5B,GACvDrJ,KAAKwH,iBAAmB6B,GAU5B/B,EAAetG,UAAUgK,sBAAwB,SAAUE,EAAOhC,OAChD,KAAVA,IAAoBA,EAAQlJ,KAAKuH,OAAO4B,WAC5CnJ,KAAKyH,MAAQzH,KAAKmL,qBAAqBD,EAAOhC,GACxClJ,KAAKoL,wBAAwBF,EAAOhC,IAU9C5B,EAAetG,UAAUmK,qBAAuB,SAAUD,EAAOhC,GAE7DlJ,KAAKwH,kBACAxH,KAAKwH,iBAAmB0D,EAAQhC,EAAM/D,QAAU+D,EAAM/D,OAEvD+D,EAAMlJ,KAAKwH,kBAAkB8B,SAC7BtJ,KAAKmL,qBAAqBD,EAAOhC,GAGjClJ,KAAKwJ,cAAcxJ,KAAKwH,mBAWhCF,EAAetG,UAAUoK,wBAA0B,SAAUF,EAAOhC,GAChElJ,KAAK8K,sBAAsB9K,KAAKwH,iBAAmB0D,EAAOA,EAAOhC,IAWrE5B,EAAetG,UAAU8J,sBAAwB,SAAUzB,EAAOgC,EAAenC,GAE7
 E,OADc,KAAVA,IAAoBA,EAAQlJ,KAAKuH,OAAO4B,WACvCD,EAAMG,GAAX,CAGA,KAAOH,EAAMG,GAAOC,UAEhB,GADAD,GAASgC,GACJnC,EAAMG,GACP,MAGRrJ,MAAKwJ,cAAcH,KAEhB/B,KAGPgE,EAA8B,SAAUC,GAExC,QAASD,KACL,MAAkB,QAAXC,GAAmBA,EAAOC,MAAMxL,KAAMyL,YAAczL,KAkB/D,MApBAU,GAAU4K,EAA4BC,GAWtCD,EAA2BtK,UAAUwI,cAAgB,SAAUH,GACvDrJ,KAAK0L,YACL1L,KAAK0L,WAAWC,oBAEpBJ,EAAOvK,UAAUwI,cAAcb,KAAK3I,KAAMqJ,GACtCrJ,KAAK0L,YACL1L,KAAK0L,WAAWE,mBAGjBN,GACThE,GAKEvF,EAAiB,IA6CjB0B,EAAwB,oCAIxBd,EAA4B,0BAI5BwB,EAAiC,uBAIjCvB,EAAS,EAITK,EAAkB,GAAI4I,KAItB9I,EAAoB,KAOpB4B,EAAiB,WAIjB,QAASA,GAAcmH,GACnB9L,KAAK8L,UAAYA,EAqErB,MA3DAnH,GAAc3D,UAAU+K,SAAW,SAAUC,EAAazJ,GACjDvC,KAAK8L,UAAUG,WAAc1J,EAAQZ,SAGrCsB,EAAgBiJ,IAAI3J,IACrBD,EAAqBC,GAEpB+B,EAA4B0H,EAAazJ,IAC1C2B,EAAoB8H,EAAazJ,KASzCoC,EAAc3D,UAAUmL,kBAAoB,SAAUH,EAAazJ,GAC/D,GAAKvC,KAAK8L,UAAUG,WAAc1J,EAAQZ,OAA1C,CAGI2C,EAA4B0H,EAAazJ,IACzC6B,EAAuB4H,EAAazJ,EAExC,IAAqBc,GAAoBJ,EAAgBK,IAAIf,EACzDc,IAA0D,IAArCA,EAAkBF,gBACvCC,EAAqBb,GAErBQ,GAA6D,IAAxCA,EAAkBqJ,WAAWjH,QAClDtB,MAORc,E
 AAc3D,UAAUqL,YAAc,WAClC,GAAKrM,KAAK8L,UAAUG,UAApB,CAIA,IAAK,GADgBK,GAAoB7J,SAAS8J,iBAAiB,IAAMpI,EAAiC,KAChFiF,EAAI,EAAGA,EAAIkD,EAAkBnH,OAAQiE,IAC3DtF,EAAiCwI,EAAkBlD,IACnDkD,EAAkBlD,GAAG/E,gBAAgBF,EAErCpB,IACAc,IAEJZ,EAAgBuJ,UAEpB7H,EAAc8H,aACRhH,KAAMpF,EAAcqM,aAK1B/H,EAAcgI,eAAiB,WAAc,QACvClH,KAAMnF,EAAsBsM,YAE3BjI,KAgHPkI,GAEAC,QAASnI,EACToI,OACK,GAAI1M,GAAc2M,SAAY,GAAI3M,GAAc4M,SAAYtI,GAC7DrE,EAAsBsM,UAE1BM,WAAYzI,GAgBZ0I,EAAmB,SAAU5B,GAE7B,QAAS4B,KACL,MAAkB,QAAX5B,GAAmBA,EAAOC,MAAMxL,KAAMyL,YAAczL,KAc/D,MAhBAU,GAAUyM,EAAiB5B,GAU3B4B,EAAgBnM,UAAUwI,cAAgB,SAAUH,GAChDkC,EAAOvK,UAAUwI,cAAcb,KAAK3I,KAAMqJ,GACtCrJ,KAAK0L,YACL1L,KAAK0L,WAAW0B,SAGjBD,GACT7F,GAME+F,EAAwB,WAIxB,QAASA,GAAqBvB,GAC1B9L,KAAK8L,UAAYA,EAiHrB,MAzGAuB,GAAqBrM,UAAUsM,WAAa,SAAUvJ,GAGlD,MAAOA,GAAQ6B,aAAa,aAWhCyH,EAAqBrM,UAAUuM,UAAY,SAAUxJ,GACjD,MAAOgB,GAAYhB,IAAqD,YAAzCyJ,iBAAiBzJ,GAAS0J,YAS7DJ,EAAqBrM,UAAU0M,WAAa,SAAU3J,GAElD,IAAK/D,KAAK8L,UAAUG,UAChB,OAAO,CAEX,IAAqB0B,GAAgBrH,EAAUvC,GAAqB,YACpE,IAAI4J,EAAc,CACd,G
 AAqBC,GAAYD,GAAgBA,EAAatI,SAASC,aAEvE,KAAwC,IAApCY,EAAiByH,GACjB,OAAO,CAGX,KAAK3N,KAAK8L,UAAU+B,OAAS7N,KAAK8L,UAAUgC,SAAyB,WAAdF,EACnD,OAAO,CAGX,KAAK5N,KAAK8L,UAAU+B,OAAS7N,KAAK8L,UAAUgC,UAAY9N,KAAKuN,UAAUI,GACnE,OAAO,EAGf,GAAqBtI,GAAWtB,EAAQsB,SAASC,cAC5ByI,EAAgB7H,EAAiBnC,EACtD,IAAIA,EAAQ6B,aAAa,mBACrB,OAA0B,IAAnBmI,CAEX,IAAiB,WAAb1I,EAGA,OAAO,CAEX,IAAiB,UAAbA,EAAsB,CACtB,IAAKtB,EAAQ6B,aAAa,YAEtB,OAAO,CAEN,IAAI5F,KAAK8L,UAAU+B,MAEpB,OAAO,EAGf,GAAiB,UAAbxI,EAAsB,CACtB,IAAKtB,EAAQ6B,aAAa,aAAe5F,KAAK8L,UAAUkC,QAEpD,OAAO,CAEN,IAAIhO,KAAK8L,UAAU+B,OAAS7N,KAAK8L,UAAUmC,QAE5C,OAAO,EAGf,OAAiB,WAAb5I,IAA0BrF,KAAK8L,UAAU+B,QAAS7N,KAAK8L,UAAUgC,YAKjE9N,KAAK8L,UAAUgC,QAAU9N,KAAK8L,UAAUoC,MAAQ/H,EAAyBpC,KAGtEA,EAAQgC,UAAY,IAQ/BsH,EAAqBrM,UAAUmN,YAAc,SAAUpK,GAGnD,MAAOsC,GAAuBtC,KAAa/D,KAAKsN,WAAWvJ,IAAY/D,KAAKuN,UAAUxJ,IAE1FsJ,EAAqBZ,aACfhH,KAAMpF,EAAcqM,aAK1BW,EAAqBV,eAAiB,WAAc,QAC9ClH,KAAMnF,EAAsBsM,YAE3BS,KAoIPe,EAAa,WAQb,QAASA,GAAUC,EAAUvC,EAAWwC,EAAUC,EAASC,OAClC,KAAjBA,IAA2BA,GAAe,GAC9CxO
 ,KAAKqO,SAAWA,EAChBrO,KAAK8L,UAAYA,EACjB9L,KAAKsO,SAAWA,EAChBtO,KAAKuO,QAAUA,EACfvO,KAAKyO,UAAW,EACXD,GACDxO,KAAK0O,gBA+Nb,MA5NAzN,QAAOyJ,eAAe0D,EAAUpN,UAAW,WAKvCsC,IAAK,WAAc,MAAOtD,MAAKyO,UAK/BvL,IAAK,SAAUf,GACXnC,KAAKyO,SAAWtM,EACZnC,KAAK2O,cAAgB3O,KAAK4O,aAC1B5O,KAAK2O,aAAa5I,SAAW/F,KAAK4O,WAAW7I,SAAW/F,KAAKyO,SAAW,GAAK,IAGrF9D,YAAY,EACZC,cAAc,IAMlBwD,EAAUpN,UAAU6N,QAAU,WACtB7O,KAAK2O,cAAgB3O,KAAK2O,aAAaG,YACvC9O,KAAK2O,aAAaG,WAAWvL,YAAYvD,KAAK2O,cAE9C3O,KAAK4O,YAAc5O,KAAK4O,WAAWE,YACnC9O,KAAK4O,WAAWE,WAAWvL,YAAYvD,KAAK4O,YAEhD5O,KAAK2O,aAAe3O,KAAK4O,WAAa,MAO1CR,EAAUpN,UAAU0N,cAAgB,WAChC,GAAItG,GAAQpI,IAEPA,MAAK8L,UAAUG,YAGfjM,KAAK2O,eACN3O,KAAK2O,aAAe3O,KAAK+O,iBAExB/O,KAAK4O,aACN5O,KAAK4O,WAAa5O,KAAK+O,iBAE3B/O,KAAKuO,QAAQS,kBAAkB,WACzB5G,EAAmB,aAAE6G,iBAAiB,QAAS,WAC7C7G,EAAM8G,6BAER9G,EAAiB,WAAE6G,iBAAiB,QAAS,WAC3C7G,EAAM+G,8BAEN/G,EAAMiG,SAASS,aACf1G,EAAMiG,SAASS,WAAWM,aAAgChH,EAAmB,aAAGA,EAAMiG,UACtFjG,EAAMiG,SAASS,WAAWM,aAAgChH,EAAiB,WAAGA,EAAMiG,SAASgB,kBAUzGjB,EAAUpN,UAAU
 sO,6BAA+B,WAC/C,GAAIlH,GAAQpI,IACZ,OAAO,IAAIuP,SAAQ,SAAUC,GACzBpH,EAAMqH,iBAAiB,WAAc,MAAOD,GAAQpH,EAAMsH,4BASlEtB,EAAUpN,UAAU2O,mCAAqC,WACrD,GAAIvH,GAAQpI,IACZ,OAAO,IAAIuP,SAAQ,SAAUC,GACzBpH,EAAMqH,iBAAiB,WAAc,MAAOD,GAAQpH,EAAM+G,kCASlEf,EAAUpN,UAAU4O,kCAAoC,WACpD,GAAIxH,GAAQpI,IACZ,OAAO,IAAIuP,SAAQ,SAAUC,GACzBpH,EAAMqH,iBAAiB,WAAc,MAAOD,GAAQpH,EAAM8G,iCAQlEd,EAAUpN,UAAU6O,mBAAqB,SAAUC,GAI/C,IAAK,GAFgBC,GAAW/P,KAAKqO,SAAS9B,iBAAiB,qBAAuBuD,EAAQ,iBACzEA,EAAQ,KACH1G,EAAI,EAAGA,EAAI2G,EAAQ5K,OAAQiE,IAC7C2G,EAAQ3G,GAAGxD,aAAa,aAAekK,IACvCE,QAAQC,KAAK,gDAAkDH,EAAQ,4BACtCA,EAAQ,aAAeC,EAAQ3G,GAGxE,OAAa,SAAT0G,EACOC,EAAQ5K,OAAS4K,EAAQ,GAAK/P,KAAKkQ,yBAAyBlQ,KAAKqO,UAErE0B,EAAQ5K,OACX4K,EAAQA,EAAQ5K,OAAS,GAAKnF,KAAKmQ,wBAAwBnQ,KAAKqO,WAMxED,EAAUpN,UAAU0O,oBAAsB,WACtC,GAAqBU,GAAqBpQ,KAAKqO,SAASgC,cAAc,sBACtE,OAAID,IACAA,EAAkBhD,SACX,GAEJpN,KAAKmP,6BAMhBf,EAAUpN,UAAUmO,0BAA4B,WAC5C,GAAqBiB,GAAoBpQ,KAAK6P,mBAAmB,QAIjE,OAHIO,IACAA,EAAkBhD,UAEbgD,GAMbhC,EAAUpN,UAAUkO,yBAA2B,WAC3C,GAAqBkB,GAAoBpQ,
 KAAK6P,mBAAmB,MAIjE,OAHIO,IACAA,EAAkBhD,UAEbgD,GAObhC,EAAUpN,UAAUkP,yBAA2B,SAAUI,GACrD,GAAItQ,KAAKsO,SAASH,YAAYmC,IAAStQ,KAAKsO,SAASZ,WAAW4C,GAC5D,MAAOA,EAKX,KAAK,GADgBC,GAAWD,EAAKC,UAAYD,EAAKlE,WAC5BhD,EAAI,EAAGA,EAAImH,EAASpL,OAAQiE,IAAK,CACvD,GAAqBoH,GAAgBD,EAASnH,GAAGqH,WAAaC,KAAKC,aAC/D3Q,KAAKkQ,yBAA2CK,EAASnH,IACzD,IACJ,IAAIoH,EACA,MAAOA,GAGf,MAAO,OAOXpC,EAAUpN,UAAUmP,wBAA0B,SAAUG,GACpD,GAAItQ,KAAKsO,SAASH,YAAYmC,IAAStQ,KAAKsO,SAASZ,WAAW4C,GAC5D,MAAOA,EAIX,KAAK,GADgBC,GAAWD,EAAKC,UAAYD,EAAKlE,WAC5BhD,EAAImH,EAASpL,OAAS,EAAGiE,GAAK,EAAGA,IAAK,CAC5D,GAAqBoH,GAAgBD,EAASnH,GAAGqH,WAAaC,KAAKC,aAC/D3Q,KAAKmQ,wBAA0CI,EAASnH,IACxD,IACJ,IAAIoH,EACA,MAAOA,GAGf,MAAO,OAMXpC,EAAUpN,UAAU+N,cAAgB,WAChC,GAAqB6B,GAASnO,SAASC,cAAc,MAIrD,OAHAkO,GAAO7K,SAAW/F,KAAKyO,SAAW,GAAK,EACvCmC,EAAOC,UAAUC,IAAI,uBACrBF,EAAOC,UAAUC,IAAI,yBACdF,GAOXxC,EAAUpN,UAAUyO,iBAAmB,SAAUsB,GACzC/Q,KAAKuO,QAAQyC,SACbD,IAGA3Q,EAAkB6Q,MAAMtI,KAAK3I,KAAKuO,QAAQ2C,SAASC,gBAAgBnI,UAAU+H,IAG9E3C,KAKPgD,EAAoB,WAMpB,QAASA,GAAiB9
 C,EAAUxC,EAAWyC,GAC3CvO,KAAKsO,SAAWA,EAChBtO,KAAK8L,UAAYA,EACjB9L,KAAKuO,QAAUA,EAsBnB,MAfA6C,GAAiBpQ,UAAUE,OAAS,SAAU6C,EAASyK,GAEnD,WADqB,KAAjBA,IAA2BA,GAAe,GACvC,GAAIJ,GAAUrK,EAAS/D,KAAK8L,UAAW9L,KAAKsO,SAAUtO,KAAKuO,QAASC,IAE/E4C,EAAiB3E,aACXhH,KAAMpF,EAAcqM,aAK1B0E,EAAiBzE,eAAiB,WAAc,QAC1ClH,KAAM4H,IACN5H,KAAMnF,EAAsBsM,WAC5BnH,KAAMpF,EAAcgR,UAEnBD,KAMPE,EAAgC,WAKhC,QAASA,GAA6BC,EAAaC,GAC/CxR,KAAKuR,YAAcA,EACnBvR,KAAKwR,kBAAoBA,EACzBxR,KAAKyR,UAAYzR,KAAKwR,kBAAkBtQ,OAAOlB,KAAKuR,YAAYG,eAAe,GA6CnF,MA3CAzQ,QAAOyJ,eAAe4G,EAA6BtQ,UAAW,YAK1DsC,IAAK,WAAc,OAAQtD,KAAKyR,UAAUE,SAK1CzO,IAAK,SAAUf,GACXnC,KAAKyR,UAAUE,SAAWpR,EAAsBqR,sBAAsBzP,IAE1EwI,YAAY,EACZC,cAAc,IAKlB0G,EAA6BtQ,UAAUqL,YAAc,WACjDrM,KAAKyR,UAAU5C,WAKnByC,EAA6BtQ,UAAU6Q,mBAAqB,WACxD7R,KAAKyR,UAAU/C,iBAEnB4C,EAA6B7E,aACvBhH,KAAMpF,EAAcyR,UAAWC,OACrBC,SAAU,qBAM1BV,EAA6B3E,eAAiB,WAAc,QACtDlH,KAAMpF,EAAc4R,aACpBxM,KAAM2L,KAEZE,EAA6BY,gBACzB5I,WAAe7D,KAAMpF,EAAc8R,SAEhCb,KAKPc,GAAsB,WAKtB,QAASA,GAAmBb,EAAaC,GACrCxR,KAAKuR,YAAcA,E
 ACnBvR,KAAKwR,kBAAoBA,EACzBxR,KAAKyR,UAAYzR,KAAKwR,kBAAkBtQ,OAAOlB,KAAKuR,YAAYG,eAAe,GA4CnF,MA1CAzQ,QAAOyJ,eAAe0H,EAAmBpR,UAAW,WAKhDsC,IAAK,WAAc,MAAOtD,MAAKyR,UAAUE,SAKzCzO,IAAK,SAAUmP,GAASrS,KAAKyR,UAAUE,QAAUpR,EAAsBqR,sBAAsBS,IAC7F1H,YAAY,EACZC,cAAc,IAKlBwH,EAAmBpR,UAAUqL,YAAc,WACvCrM,KAAKyR,UAAU5C,WAKnBuD,EAAmBpR,UAAU6Q,mBAAqB,WAC9C7R,KAAKyR,UAAU/C,iBAEnB0D,EAAmB3F,aACbhH,KAAMpF,EAAcyR,UAAWC,OACrBC,SAAU,iBACVM,SAAU,mBAM1BF,EAAmBzF,eAAiB,WAAc,QAC5ClH,KAAMpF,EAAc4R,aACpBxM,KAAM2L,KAEZgB,EAAmBF,gBACfP,UAAclM,KAAMpF,EAAc8R,MAAOJ,MAAO,mBAE7CK,KAGPG,GAA+B,GAAIlS,GAAcmS,eAAe,wBAChE3L,GAAiB,WAKjB,QAASA,GAAc4L,EAAc7S,GAE7BA,EAASqM,YAITjM,KAAK0S,aAAeD,GAAgBzS,KAAK2S,sBAmDjD,MA1CA9L,GAAc7F,UAAU4R,SAAW,SAAUrQ,EAASsQ,GAClD,GAAIzK,GAAQpI,SACO,KAAf6S,IAAyBA,EAAa,UAC1C7S,KAAK0S,aAAaI,YAAc,GAEhC9S,KAAK0S,aAAa7Q,aAAa,YAAagR,GAM5CE,WAAW,WAAc,MAAO3K,GAAMsK,aAAaI,YAAcvQ,GAAY,MAKjFsE,EAAc7F,UAAUqL,YAAc,WAC9BrM,KAAK0S,cAAgB1S,KAAK0S,aAAa5D,YACvC9O,KAAK0S,aAAa5D,WAAWvL,YAAYvD,KAAK0S,eAMtD7L,EAAc7F,UAAU2
 R,mBAAqB,WACzC,GAAqBK,GAASvQ,SAASC,cAAc,MAKrD,OAJAsQ,GAAOnC,UAAUC,IAAI,uBACrBkC,EAAOnR,aAAa,cAAe,QACnCmR,EAAOnR,aAAa,YAAa,UACjCY,SAASmB,KAAKf,YAAYmQ,GACnBA,GAEXnM,EAAc4F,aACRhH,KAAMpF,EAAcqM,aAK1B7F,EAAc8F,eAAiB,WAAc,QACvClH,SAAMK,GAAW2G,aAAehH,KAAMpF,EAAc2M,WAAcvH,KAAMpF,EAAc4S,OAAQlB,MAAOQ,QACrG9M,KAAMnF,EAAsBsM,YAE3B/F,KAePqM,IAEApG,QAASjG,GACTkG,OACK,GAAI1M,GAAc2M,SAAY,GAAI3M,GAAc4M,SAAYpG,KAC5D,GAAIxG,GAAc2M,SAAY,GAAI3M,GAAc4S,OAAOV,KACxDjS,EAAsBsM,UAE1BM,WAAYvG,GASZK,GAAgB,WAKhB,QAASA,GAAauH,EAASzC,GAC3B,GAAI1D,GAAQpI,IACZA,MAAKuO,QAAUA,EACfvO,KAAK8L,UAAYA,EAIjB9L,KAAKmT,QAAU,KAIfnT,KAAKoT,gBAAiB,EAItBpT,KAAKqT,aAAe,GAAIC,SACxBtT,KAAKuO,QAAQS,kBAAkB,WAAc,MAAO5G,GAAMmL,4BAwO9D,MA9NAvM,GAAahG,UAAUwS,QAAU,SAAUzP,EAAS0P,EAAUC,GAC1D,GAAItL,GAAQpI,IAEZ,KAAKA,KAAK8L,UAAUG,UAChB,MAAOzL,GAAmBmT,GAAG,KAGjC,IAAI3T,KAAKqT,aAAanH,IAAInI,GAAU,CAChC,GAAqB6P,GAAa5T,KAAKqT,aAAa/P,IAAIS,EAExD,OADA,GAAe2P,cAAgBA,EACxB,EAAeG,QAAQ1C,eAGlC,GAAqB2C,IACjBC,SAAU,aACVL,cAAeA,EACfD,SAAUA,EACVI,QAAS,GAAI
 5T,GAAa0H,QAE9B3H,MAAKqT,aAAanQ,IAAIa,EAAS+P,EAE/B,IAAqBE,GAAgB,SAAUnP,GAAS,MAAOuD,GAAM6L,SAASpP,EAAOd,IAChEmQ,EAAe,SAAUrP,GAAS,MAAOuD,GAAM+L,QAAQtP,EAAOd,GAUnF,OATA/D,MAAKuO,QAAQS,kBAAkB,WAC3BjL,EAAQkL,iBAAiB,QAAS+E,GAAe,GACjDjQ,EAAQkL,iBAAiB,OAAQiF,GAAc,KAGnDJ,EAAKC,SAAW,WACZhQ,EAAQqQ,oBAAoB,QAASJ,GAAe,GACpDjQ,EAAQqQ,oBAAoB,OAAQF,GAAc,IAE/CJ,EAAKD,QAAQ1C,gBAOxBnK,EAAahG,UAAUqT,eAAiB,SAAUtQ,GAC9C,GAAqBuQ,GAActU,KAAKqT,aAAa/P,IAAIS,EACrDuQ,KACAA,EAAYP,WACZO,EAAYT,QAAQU,WACpBvU,KAAKwU,YAAYzQ,GACjB/D,KAAKqT,aAAa7P,OAAOO,KASjCiD,EAAahG,UAAUyT,SAAW,SAAU1Q,EAAS2Q,GACjD1U,KAAK2U,+BAA+BD,GACpC3Q,EAAQqJ,SAMZpG,EAAahG,UAAUuS,wBAA0B,WAC7C,GAAInL,GAAQpI,IAEPA,MAAK8L,UAAUG,YAMpBxJ,SAASwM,iBAAiB,UAAW,WACjC7G,EAAMwM,iBAAmB,KACzBxM,EAAMuM,+BAA+B,cACtC,GAGHlS,SAASwM,iBAAiB,YAAa,WAC9B7G,EAAMwM,kBACPxM,EAAMuM,+BAA+B,WAE1C,GAIHlS,SAASwM,iBAAiB,aAAc,SAAUpK,GACnB,MAAvBuD,EAAMyM,eACNC,aAAa1M,EAAMyM,eAEvBzM,EAAMwM,iBAAmB/P,EAAMkQ,OAC/B3M,EAAMyM,cAAgB9B,WAAW,WAAc,MAAO3K,GAAMwM,iBAAmB,MA7HrE,OA8HX,GAGHlO,OA
 AOuI,iBAAiB,QAAS,WAC7B7G,EAAMgL,gBAAiB,EACvBL,WAAW,WAAc,MAAO3K,GAAMgL,gBAAiB,GAAU,OASzEpM,EAAahG,UAAUwT,YAAc,SAAUzQ,EAAS2Q,GACpD,GAAqBJ,GAActU,KAAKqT,aAAa/P,IAAIS,EACzD,IAAIuQ,EAAa,CACb,GAAqBU,GAAc,SAAUC,EAAWC,GACpDA,EAAYZ,EAAYb,SAAS0B,SAASpR,EAASkR,GAC/CX,EAAYb,SAAS2B,YAAYrR,EAASkR,GAElDD,GAAY,gBAAiBN,GAC7BM,EAAY,oBAAgC,UAAXN,GACjCM,EAAY,uBAAmC,aAAXN,GACpCM,EAAY,oBAAgC,UAAXN,GACjCM,EAAY,sBAAkC,YAAXN,KAQ3C1N,EAAahG,UAAU2T,+BAAiC,SAAUD,GAC9D,GAAItM,GAAQpI,IACZA,MAAKmT,QAAUuB,EACf3B,WAAW,WAAc,MAAO3K,GAAM+K,QAAU,MAAS,IAO7DnM,EAAahG,UAAUqU,kBAAoB,SAAUxQ,GAkBjD,GAAqByQ,GAAczQ,EAAMkQ,MACzC,OAAO/U,MAAK4U,2BAA4BlE,OAAQ4E,YAAuB5E,QAClE4E,IAAgBtV,KAAK4U,kBAAoBU,EAAYC,SAASvV,KAAK4U,oBAQ5E5N,EAAahG,UAAUiT,SAAW,SAAUpP,EAAOd,GAO/C,GAAqBuQ,GAActU,KAAKqT,aAAa/P,IAAIS,EACpDuQ,KAAiBA,EAAYZ,eAAiB3P,IAAYc,EAAMkQ,UAShE/U,KAAKmT,UACFnT,KAAKoT,gBAAkBpT,KAAKwV,iBAC5BxV,KAAKmT,QAAUnT,KAAKwV,iBAEfxV,KAAKqV,kBAAkBxQ,GAC5B7E,KAAKmT,QAAU,QAGfnT,KAAKmT,QAAU,WAGvBnT,KAAKwU,YAAYzQ,EAAS/D,KAAKmT,SAC/BmB,EAAYT,QAAQ7
 J,KAAKhK,KAAKmT,SAC9BnT,KAAKwV,iBAAmBxV,KAAKmT,QAC7BnT,KAAKmT,QAAU,OAQnBnM,EAAahG,UAAUmT,QAAU,SAAUtP,EAAOd,GAG9C,GAAqBuQ,GAActU,KAAKqT,aAAa/P,IAAIS,IACpDuQ,GAAgBA,EAAYZ,eAAiB7O,EAAM4Q,wBAAyB/E,OAC7E3M,EAAQwR,SAAS1Q,EAAM4Q,iBAG3BzV,KAAKwU,YAAYzQ,GACjBuQ,EAAYT,QAAQ7J,KAAK,QAE7BhD,EAAayF,aACPhH,KAAMpF,EAAcqM,aAK1B1F,EAAa2F,eAAiB,WAAc,QACtClH,KAAMpF,EAAcgR,SACpB5L,KAAMnF,EAAsBsM,YAE3B5F,KAWP0O,GAAmB,WAMnB,QAASA,GAAgBnE,EAAaoE,EAAelC,GACjD,GAAIrL,GAAQpI,IACZA,MAAKuR,YAAcA,EACnBvR,KAAK2V,cAAgBA,EACrB3V,KAAK4V,eAAiB,GAAIvV,GAAcwV,aACxC7V,KAAK8V,qBAAuB9V,KAAK2V,cAAcnC,QAAQxT,KAAKuR,YAAYG,cAAe+B,EAAUzT,KAAKuR,YAAYG,cAAc9L,aAAa,2BACxIoD,UAAU,SAAU0L,GAAU,MAAOtM,GAAMwN,eAAeG,KAAKrB,KAyBxE,MApBAgB,GAAgB1U,UAAUqL,YAAc,WACpCrM,KAAK2V,cAActB,eAAerU,KAAKuR,YAAYG,eACnD1R,KAAK8V,qBAAqBtN,eAE9BkN,EAAgBjJ,aACVhH,KAAMpF,EAAcyR,UAAWC,OACrBC,SAAU,yDAM1B0D,EAAgB/I,eAAiB,WAAc,QACzClH,KAAMpF,EAAc4R,aACpBxM,KAAMuB,KACNvB,KAAMpF,EAAc2V,aAE1BN,EAAgBxD,gBACZ0D,iBAAqBnQ,KAAMpF,EAAc4V,UAEtCP,KAePQ,IAEApJ,QAAS9F,GAC
 T+F,OAAQ,GAAI1M,GAAc2M,SAAY,GAAI3M,GAAc4M,SAAYjG,IAAe3G,EAAcgR,OAAQ/Q,EAAsBsM,UAC/HM,WAAYpG,GAGZqP,GAAc,WACd,QAASA,MAqBT,MAnBAA,GAAW1J,aACLhH,KAAMpF,EAAc+V,SAAUrE,OACpBsE,SAAU5V,EAAgB6V,aAAchW,EAAsBiW,gBAC9DC,cAAepE,GAAoBd,EAA8BoE,IACjE1W,SAAUoT,GAAoBd,EAA8BoE,IAC5De,WACIpJ,EACA+D,EACAzM,EACAuO,GACArG,EACAqJ,QAOpBC,EAAWxJ,eAAiB,WAAc,UACnCwJ,IAGXnX,GAAQsM,2BAA6BA,EACrCtM,EAAQyE,sBAAwBA,EAChCzE,EAAQ2D,0BAA4BA,EACpC3D,EAAQmF,+BAAiCA,EACzCnF,EAAQ2F,cAAgBA,EACxB3F,EAAQyF,gCAAkCA,EAC1CzF,EAAQ6N,wBAA0BA,EAClC7N,EAAQ4F,gCAAkCA,EAC1C5F,EAAQmO,gBAAkBA,EAC1BnO,EAAQoP,UAAYA,EACpBpP,EAAQoS,iBAAmBA,EAC3BpS,EAAQsS,6BAA+BA,EACvCtS,EAAQoT,mBAAqBA,GAC7BpT,EAAQqO,qBAAuBA,EAC/BrO,EAAQsI,eAAiBA,EACzBtI,EAAQuT,6BAA+BA,GACvCvT,EAAQ6H,cAAgBA,GACxB7H,EAAQ2H,gCAAkCA,EAC1C3H,EAAQkU,wBAA0BA,GAClClU,EAAQ0X,gBAnXc,IAoXtB1X,EAAQgI,aAAeA,GACvBhI,EAAQ0W,gBAAkBA,GAC1B1W,EAAQ8H,+BAAiCA,EACzC9H,EAAQkX,uBAAyBA,GACjClX,EAAQmX,WAAaA,GAErBlV,OAAOyJ,eAAe1L,EAAS,cAAgBqT,OAAO","file":"/Users/karakara/repos/material2/dist/bun
 dles/cdk-a11y.umd.min.js"}
\ No newline at end of file
+{"version":3,"file":"cdk-a11y.umd.min.js","sources":["../../node_modules/tslib/tslib.es6.js","../../src/cdk/a11y/interactivity-checker/interactivity-checker.ts","../../src/cdk/a11y/aria-describer/aria-reference.ts","../../src/cdk/a11y/aria-describer/aria-describer.ts","../../src/cdk/a11y/live-announcer/live-announcer.ts","../../src/cdk/a11y/focus-monitor/focus-monitor.ts","../../src/cdk/a11y/fake-mousedown.ts","../../src/cdk/a11y/focus-trap/focus-trap.ts","../../src/cdk/a11y/key-manager/list-key-manager.ts","../../src/cdk/a11y/key-manager/activedescendant-key-manager.ts","../../src/cdk/a11y/key-manager/focus-key-manager.ts","../../src/cdk/a11y/a11y-module.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\
 r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = Object.setPrototypeOf ||\r\n    ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n    function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n\r\nexport function __extends(d, b) {\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, n
 ew __());\r\n}\r\n\r\nexport var __assign = Object.assign || function __assign(t) {\r\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n        s = arguments[i];\r\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n    }\r\n    return t;\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n            t[p[i]] = s[p[i]];\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r
  = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function s
 tep(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [0, t.value];\r\n            switch (op[0]) {\r\n 
                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0]
  ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n    if (m) return m.call(o);\r\n    return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n  
   }\r\n    return ar;\r\n}\r\n\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.val
 ue.v).then(fulfill, reject) : settle(q[0][2], r);  }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { if (o[n]) i[n] = function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; }; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator];\r\n    return m ? m.call(o) : typeof __values === \"function\" ? __values(o) : o[Symbol.iterator]();\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (O
 bject.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable} from '@angular/core';\nimport {Platform} from '@angular/cdk/platform';\n\n\n// The InteractivityChecker leans heavily on the ally.js accessibility utilities.\n// Methods like `isTabbable` are only covering specific edge-cases for the browsers which are\n// supported.\n\n/**\n * Utility for checking the interactivity of an element, such as whether is is focusable or\n * tabbable.\n */\n@Injectable()\nexport class InteractivityChecker {\n\n  constructor(private _platform: Platform) {}\n\n  /**\n   * Gets whether an element is disabled.\n   *\n   * @param element Element to be checked.\n   * @returns Whether the elemen
 t is disabled.\n   */\n  isDisabled(element: HTMLElement): boolean {\n    // This does not capture some cases, such as a non-form control with a disabled attribute or\n    // a form control inside of a disabled form, but should capture the most common cases.\n    return element.hasAttribute('disabled');\n  }\n\n  /**\n   * Gets whether an element is visible for the purposes of interactivity.\n   *\n   * This will capture states like `display: none` and `visibility: hidden`, but not things like\n   * being clipped by an `overflow: hidden` parent or being outside the viewport.\n   *\n   * @returns Whether the element is visible.\n   */\n  isVisible(element: HTMLElement): boolean {\n    return hasGeometry(element) && getComputedStyle(element).visibility === 'visible';\n  }\n\n  /**\n   * Gets whether an element can be reached via Tab key.\n   * Assumes that the element has already been checked with isFocusable.\n   *\n   * @param element Element to be checked.\n   * @returns Whether th
 e element is tabbable.\n   */\n  isTabbable(element: HTMLElement): boolean {\n    // Nothing is tabbable on the the server 😎\n    if (!this._platform.isBrowser) {\n      return false;\n    }\n\n    const frameElement = getFrameElement(getWindow(element));\n\n    if (frameElement) {\n      const frameType = frameElement && frameElement.nodeName.toLowerCase();\n\n      // Frame elements inherit their tabindex onto all child elements.\n      if (getTabIndexValue(frameElement) === -1) {\n        return false;\n      }\n\n      // Webkit and Blink consider anything inside of an <object> element as non-tabbable.\n      if ((this._platform.BLINK || this._platform.WEBKIT) && frameType === 'object') {\n        return false;\n      }\n\n      // Webkit and Blink disable tabbing to an element inside of an invisible frame.\n      if ((this._platform.BLINK || this._platform.WEBKIT) && !this.isVisible(frameElement)) {\n        return false;\n      }\n\n    }\n\n    let nodeName = element.nodeN
 ame.toLowerCase();\n    let tabIndexValue = getTabIndexValue(element);\n\n    if (element.hasAttribute('contenteditable')) {\n      return tabIndexValue !== -1;\n    }\n\n    if (nodeName === 'iframe') {\n      // The frames may be tabbable depending on content, but it's not possibly to reliably\n      // investigate the content of the frames.\n      return false;\n    }\n\n    if (nodeName === 'audio') {\n      if (!element.hasAttribute('controls')) {\n        // By default an <audio> element without the controls enabled is not tabbable.\n        return false;\n      } else if (this._platform.BLINK) {\n        // In Blink <audio controls> elements are always tabbable.\n        return true;\n      }\n    }\n\n    if (nodeName === 'video') {\n      if (!element.hasAttribute('controls') && this._platform.TRIDENT) {\n        // In Trident a <video> element without the controls enabled is not tabbable.\n        return false;\n      } else if (this._platform.BLINK || this._platform.FIREF
 OX) {\n        // In Chrome and Firefox <video controls> elements are always tabbable.\n        return true;\n      }\n    }\n\n    if (nodeName === 'object' && (this._platform.BLINK || this._platform.WEBKIT)) {\n      // In all Blink and WebKit based browsers <object> elements are never tabbable.\n      return false;\n    }\n\n    // In iOS the browser only considers some specific elements as tabbable.\n    if (this._platform.WEBKIT && this._platform.IOS && !isPotentiallyTabbableIOS(element)) {\n      return false;\n    }\n\n    return element.tabIndex >= 0;\n  }\n\n  /**\n   * Gets whether an element can be focused by the user.\n   *\n   * @param element Element to be checked.\n   * @returns Whether the element is focusable.\n   */\n  isFocusable(element: HTMLElement): boolean {\n    // Perform checks in order of left to most expensive.\n    // Again, naive approach that does not capture many edge cases and browser quirks.\n    return isPotentiallyFocusable(element) && !this.isDis
 abled(element) && this.isVisible(element);\n  }\n\n}\n\n/**\n * Returns the frame element from a window object. Since browsers like MS Edge throw errors if\n * the frameElement property is being accessed from a different host address, this property\n * should be accessed carefully.\n */\nfunction getFrameElement(window: Window) {\n  try {\n    return window.frameElement as HTMLElement;\n  } catch (e) {\n    return null;\n  }\n}\n\n/** Checks whether the specified element has any geometry / rectangles. */\nfunction hasGeometry(element: HTMLElement): boolean {\n  // Use logic from jQuery to check for an invisible element.\n  // See https://github.com/jquery/jquery/blob/master/src/css/hiddenVisibleSelectors.js#L12\n  return !!(element.offsetWidth || element.offsetHeight ||\n      (typeof element.getClientRects === 'function' && element.getClientRects().length));\n}\n\n/** Gets whether an element's  */\nfunction isNativeFormElement(element: Node) {\n  let nodeName = element.nodeName.toL
 owerCase();\n  return nodeName === 'input' ||\n      nodeName === 'select' ||\n      nodeName === 'button' ||\n      nodeName === 'textarea';\n}\n\n/** Gets whether an element is an `<input type=\"hidden\">`. */\nfunction isHiddenInput(element: HTMLElement): boolean {\n  return isInputElement(element) && element.type == 'hidden';\n}\n\n/** Gets whether an element is an anchor that has an href attribute. */\nfunction isAnchorWithHref(element: HTMLElement): boolean {\n  return isAnchorElement(element) && element.hasAttribute('href');\n}\n\n/** Gets whether an element is an input element. */\nfunction isInputElement(element: HTMLElement): element is HTMLInputElement {\n  return element.nodeName.toLowerCase() == 'input';\n}\n\n/** Gets whether an element is an anchor element. */\nfunction isAnchorElement(element: HTMLElement): element is HTMLAnchorElement {\n  return element.nodeName.toLowerCase() == 'a';\n}\n\n/** Gets whether an element has a valid tabindex. */\nfunction hasValidTabIn
 dex(element: HTMLElement): boolean {\n  if (!element.hasAttribute('tabindex') || element.tabIndex === undefined) {\n    return false;\n  }\n\n  let tabIndex = element.getAttribute('tabindex');\n\n  // IE11 parses tabindex=\"\" as the value \"-32768\"\n  if (tabIndex == '-32768') {\n    return false;\n  }\n\n  return !!(tabIndex && !isNaN(parseInt(tabIndex, 10)));\n}\n\n/**\n * Returns the parsed tabindex from the element attributes instead of returning the\n * evaluated tabindex from the browsers defaults.\n */\nfunction getTabIndexValue(element: HTMLElement): number | null {\n  if (!hasValidTabIndex(element)) {\n    return null;\n  }\n\n  // See browser issue in Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1128054\n  const tabIndex = parseInt(element.getAttribute('tabindex') || '', 10);\n\n  return isNaN(tabIndex) ? -1 : tabIndex;\n}\n\n/** Checks whether the specified element is potentially tabbable on iOS */\nfunction isPotentiallyTabbableIOS(element: HTMLElement): boolean 
 {\n  let nodeName = element.nodeName.toLowerCase();\n  let inputType = nodeName === 'input' && (element as HTMLInputElement).type;\n\n  return inputType === 'text'\n      || inputType === 'password'\n      || nodeName === 'select'\n      || nodeName === 'textarea';\n}\n\n/**\n * Gets whether an element is potentially focusable without taking current visible/disabled state\n * into account.\n */\nfunction isPotentiallyFocusable(element: HTMLElement): boolean {\n  // Inputs are potentially focusable *unless* they're type=\"hidden\".\n  if (isHiddenInput(element)) {\n    return false;\n  }\n\n  return isNativeFormElement(element) ||\n      isAnchorWithHref(element) ||\n      element.hasAttribute('contenteditable') ||\n      hasValidTabIndex(element);\n}\n\n/** Gets the parent window of a DOM node with regards of being inside of an iframe. */\nfunction getWindow(node: HTMLElement): Window {\n  return node.ownerDocument.defaultView || window;\n}\n","/**\n * @license\n * Copyright Google 
 LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** IDs are deliminated by an empty space, as per the spec. */\nconst ID_DELIMINATOR = ' ';\n\n/**\n * Adds the given ID to the specified ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\nexport function addAriaReferencedId(el: Element, attr: string, id: string) {\n  const ids = getAriaReferenceIds(el, attr);\n  if (ids.some(existingId => existingId.trim() == id.trim())) { return; }\n  ids.push(id.trim());\n\n  el.setAttribute(attr, ids.join(ID_DELIMINATOR));\n}\n\n/**\n * Removes the given ID from the specified ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\nexport function removeAriaReferencedId(el: Element, attr: string, id: string) {\n  const ids = getAriaReferenceIds(el, attr);\n  const filteredIds = ids.f
 ilter(val => val != id.trim());\n\n  el.setAttribute(attr, filteredIds.join(ID_DELIMINATOR));\n}\n\n/**\n * Gets the list of IDs referenced by the given ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\nexport function getAriaReferenceIds(el: Element, attr: string): string[] {\n  // Get string array of all individual ids (whitespace deliminated) in the attribute value\n  return (el.getAttribute(attr) || '').match(/\\S+/g) || [];\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable, Inject, InjectionToken, Optional, SkipSelf} from '@angular/core';\nimport {DOCUMENT} from '@angular/common';\nimport {addAriaReferencedId, getAriaReferenceIds, removeAriaReferencedId} from './aria-reference';\n\n/**\n * Interface used to register message elements and keep a 
 count of how many registrations have\n * the same message and the reference to the message element used for the `aria-describedby`.\n */\nexport interface RegisteredMessage {\n  /** The element containing the message. */\n  messageElement: Element;\n\n  /** The number of elements that reference this message element via `aria-describedby`. */\n  referenceCount: number;\n}\n\n/** ID used for the body container where all messages are appended. */\nexport const MESSAGES_CONTAINER_ID = 'cdk-describedby-message-container';\n\n/** ID prefix used for each created message element. */\nexport const CDK_DESCRIBEDBY_ID_PREFIX = 'cdk-describedby-message';\n\n/** Attribute given to each host element that is described by a message element. */\nexport const CDK_DESCRIBEDBY_HOST_ATTRIBUTE = 'cdk-describedby-host';\n\n/** Global incremental identifier for each registered message element. */\nlet nextId = 0;\n\n/** Global map of all registered message elements that have been placed into the document. 
 */\nconst messageRegistry = new Map<string, RegisteredMessage>();\n\n/** Container for all registered messages. */\nlet messagesContainer: HTMLElement | null = null;\n\n/**\n * Utility that creates visually hidden elements with a message content. Useful for elements that\n * want to use aria-describedby to further describe themselves without adding additional visual\n * content.\n * @docs-private\n */\n@Injectable()\nexport class AriaDescriber {\n  private _document: Document;\n\n  constructor(@Inject(DOCUMENT) _document: any) {\n    this._document = _document;\n  }\n\n  /**\n   * Adds to the host element an aria-describedby reference to a hidden element that contains\n   * the message. If the same message has already been registered, then it will reuse the created\n   * message element.\n   */\n  describe(hostElement: Element, message: string) {\n    if (!this._canBeDescribed(hostElement, message)) {\n      return;\n    }\n\n    if (!messageRegistry.has(message)) {\n      this._cre
 ateMessageElement(message);\n    }\n\n    if (!this._isElementDescribedByMessage(hostElement, message)) {\n      this._addMessageReference(hostElement, message);\n    }\n  }\n\n  /** Removes the host element's aria-describedby reference to the message element. */\n  removeDescription(hostElement: Element, message: string) {\n    if (!this._canBeDescribed(hostElement, message)) {\n      return;\n    }\n\n    if (this._isElementDescribedByMessage(hostElement, message)) {\n      this._removeMessageReference(hostElement, message);\n    }\n\n    const registeredMessage = messageRegistry.get(message);\n    if (registeredMessage && registeredMessage.referenceCount === 0) {\n      this._deleteMessageElement(message);\n    }\n\n    if (messagesContainer && messagesContainer.childNodes.length === 0) {\n      this._deleteMessagesContainer();\n    }\n  }\n\n  /** Unregisters all created message elements and removes the message container. */\n  ngOnDestroy() {\n    const describedElements =\n   
      this._document.querySelectorAll(`[${CDK_DESCRIBEDBY_HOST_ATTRIBUTE}]`);\n\n    for (let i = 0; i < describedElements.length; i++) {\n      this._removeCdkDescribedByReferenceIds(describedElements[i]);\n      describedElements[i].removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE);\n    }\n\n    if (messagesContainer) {\n      this._deleteMessagesContainer();\n    }\n\n    messageRegistry.clear();\n  }\n\n  /**\n   * Creates a new element in the visually hidden message container element with the message\n   * as its content and adds it to the message registry.\n   */\n  private _createMessageElement(message: string) {\n    const messageElement = this._document.createElement('div');\n    messageElement.setAttribute('id', `${CDK_DESCRIBEDBY_ID_PREFIX}-${nextId++}`);\n    messageElement.appendChild(this._document.createTextNode(message)!);\n\n    if (!messagesContainer) { this._createMessagesContainer(); }\n    messagesContainer!.appendChild(messageElement);\n\n    messageRegistry.set(
 message, {messageElement, referenceCount: 0});\n  }\n\n  /** Deletes the message element from the global messages container. */\n  private _deleteMessageElement(message: string) {\n    const registeredMessage = messageRegistry.get(message);\n    const messageElement = registeredMessage && registeredMessage.messageElement;\n    if (messagesContainer && messageElement) {\n      messagesContainer.removeChild(messageElement);\n    }\n    messageRegistry.delete(message);\n  }\n\n  /** Creates the global container for all aria-describedby messages. */\n  private _createMessagesContainer() {\n    messagesContainer = this._document.createElement('div');\n    messagesContainer.setAttribute('id', MESSAGES_CONTAINER_ID);\n    messagesContainer.setAttribute('aria-hidden', 'true');\n    messagesContainer.style.display = 'none';\n    this._document.body.appendChild(messagesContainer);\n  }\n\n  /** Deletes the global messages container. */\n  private _deleteMessagesContainer() {\n    if (messages
 Container && messagesContainer.parentNode) {\n      messagesContainer.parentNode.removeChild(messagesContainer);\n      messagesContainer = null;\n    }\n  }\n\n  /** Removes all cdk-describedby messages that are hosted through the element. */\n  private _removeCdkDescribedByReferenceIds(element: Element) {\n    // Remove all aria-describedby reference IDs that are prefixed by CDK_DESCRIBEDBY_ID_PREFIX\n    const originalReferenceIds = getAriaReferenceIds(element, 'aria-describedby')\n        .filter(id => id.indexOf(CDK_DESCRIBEDBY_ID_PREFIX) != 0);\n    element.setAttribute('aria-describedby', originalReferenceIds.join(' '));\n  }\n\n  /**\n   * Adds a message reference to the element using aria-describedby and increments the registered\n   * message's reference count.\n   */\n  private _addMessageReference(element: Element, message: string) {\n    const registeredMessage = messageRegistry.get(message)!;\n\n    // Add the aria-describedby reference and set the\n    // describedby_
 host attribute to mark the element.\n    addAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id);\n    element.setAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE, '');\n\n    registeredMessage.referenceCount++;\n  }\n\n  /**\n   * Removes a message reference from the element using aria-describedby\n   * and decrements the registered message's reference count.\n   */\n  private _removeMessageReference(element: Element, message: string) {\n    const registeredMessage = messageRegistry.get(message)!;\n    registeredMessage.referenceCount--;\n\n    removeAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id);\n    element.removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE);\n  }\n\n  /** Returns true if the element has been described by the provided message ID. */\n  private _isElementDescribedByMessage(element: Element, message: string): boolean {\n    const referenceIds = getAriaReferenceIds(element, 'aria-describedby');\n    const regist
 eredMessage = messageRegistry.get(message);\n    const messageId = registeredMessage && registeredMessage.messageElement.id;\n\n    return !!messageId && referenceIds.indexOf(messageId) != -1;\n  }\n\n  /** Determines whether a message can be described on a particular element. */\n  private _canBeDescribed(element: Element, message: string): boolean {\n    return element.nodeType === this._document.ELEMENT_NODE && message != null &&\n        !!`${message}`.trim();\n  }\n\n}\n\n/** @docs-private */\nexport function ARIA_DESCRIBER_PROVIDER_FACTORY(parentDispatcher: AriaDescriber, _document: any) {\n  return parentDispatcher || new AriaDescriber(_document);\n}\n\n/** @docs-private */\nexport const ARIA_DESCRIBER_PROVIDER = {\n  // If there is already an AriaDescriber available, use that. Otherwise, provide a new one.\n  provide: AriaDescriber,\n  deps: [\n    [new Optional(), new SkipSelf(), AriaDescriber],\n    DOCUMENT as InjectionToken<any>\n  ],\n  useFactory: ARIA_DESCRIBER_PROVID
 ER_FACTORY\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n  Injectable,\n  InjectionToken,\n  Optional,\n  Inject,\n  SkipSelf,\n  OnDestroy,\n} from '@angular/core';\nimport {DOCUMENT} from '@angular/common';\n\n\nexport const LIVE_ANNOUNCER_ELEMENT_TOKEN = new InjectionToken<HTMLElement>('liveAnnouncerElement');\n\n/** Possible politeness levels. */\nexport type AriaLivePoliteness = 'off' | 'polite' | 'assertive';\n\n@Injectable()\nexport class LiveAnnouncer implements OnDestroy {\n  private _liveElement: Element;\n\n  constructor(\n      @Optional() @Inject(LIVE_ANNOUNCER_ELEMENT_TOKEN) elementToken: any,\n      @Inject(DOCUMENT) private _document: any) {\n\n    // We inject the live element as `any` because the constructor signature cannot reference\n    // browser globals (HTMLElement) on non-browse
 r environments, since having a class decorator\n    // causes TypeScript to preserve the constructor signature types.\n    this._liveElement = elementToken || this._createLiveElement();\n  }\n\n  /**\n   * Announces a message to screenreaders.\n   * @param message Message to be announced to the screenreader\n   * @param politeness The politeness of the announcer element\n   * @returns Promise that will be resolved when the message is added to the DOM.\n   */\n  announce(message: string, politeness: AriaLivePoliteness = 'polite'): Promise<void> {\n    this._liveElement.textContent = '';\n\n    // TODO: ensure changing the politeness works on all environments we support.\n    this._liveElement.setAttribute('aria-live', politeness);\n\n    // This 100ms timeout is necessary for some browser + screen-reader combinations:\n    // - Both JAWS and NVDA over IE11 will not announce anything without a non-zero timeout.\n    // - With Chrome and IE11 with NVDA or JAWS, a repeated (identical) m
 essage won't be read a\n    //   second time without clearing and then using a non-zero delay.\n    // (using JAWS 17 at time of this writing).\n    return new Promise(resolve => {\n      setTimeout(() => {\n        this._liveElement.textContent = message;\n        resolve();\n      }, 100);\n    });\n  }\n\n  ngOnDestroy() {\n    if (this._liveElement && this._liveElement.parentNode) {\n      this._liveElement.parentNode.removeChild(this._liveElement);\n    }\n  }\n\n  private _createLiveElement(): Element {\n    let liveEl = this._document.createElement('div');\n\n    liveEl.classList.add('cdk-visually-hidden');\n    liveEl.setAttribute('aria-atomic', 'true');\n    liveEl.setAttribute('aria-live', 'polite');\n\n    this._document.body.appendChild(liveEl);\n\n    return liveEl;\n  }\n\n}\n\n/** @docs-private */\nexport function LIVE_ANNOUNCER_PROVIDER_FACTORY(\n    parentDispatcher: LiveAnnouncer, liveElement: any, _document: any) {\n  return parentDispatcher || new LiveAnnouncer(l
 iveElement, _document);\n}\n\n/** @docs-private */\nexport const LIVE_ANNOUNCER_PROVIDER = {\n  // If there is already a LiveAnnouncer available, use that. Otherwise, provide a new one.\n  provide: LiveAnnouncer,\n  deps: [\n    [new Optional(), new SkipSelf(), LiveAnnouncer],\n    [new Optional(), new Inject(LIVE_ANNOUNCER_ELEMENT_TOKEN)],\n    DOCUMENT,\n  ],\n  useFactory: LIVE_ANNOUNCER_PROVIDER_FACTORY\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Platform, supportsPassiveEventListeners} from '@angular/cdk/platform';\nimport {\n  Directive,\n  ElementRef,\n  EventEmitter,\n  Injectable,\n  NgZone,\n  OnDestroy,\n  Optional,\n  Output,\n  Renderer2,\n  SkipSelf,\n} from '@angular/core';\nimport {Observable} from 'rxjs/Observable';\nimport {of as observableOf} from 'rxjs/observable/of';\nimport {Subject}
  from 'rxjs/Subject';\nimport {Subscription} from 'rxjs/Subscription';\n\n\n// This is the value used by AngularJS Material. Through trial and error (on iPhone 6S) they found\n// that a value of around 650ms seems appropriate.\nexport const TOUCH_BUFFER_MS = 650;\n\n\nexport type FocusOrigin = 'touch' | 'mouse' | 'keyboard' | 'program' | null;\n\n\ntype MonitoredElementInfo = {\n  unlisten: Function,\n  checkChildren: boolean,\n  subject: Subject<FocusOrigin>\n};\n\n\n/** Monitors mouse and keyboard events to determine the cause of focus events. */\n@Injectable()\nexport class FocusMonitor implements OnDestroy {\n  /** The focus origin that the next focus event is a result of. */\n  private _origin: FocusOrigin = null;\n\n  /** The FocusOrigin of the last focus event tracked by the FocusMonitor. */\n  private _lastFocusOrigin: FocusOrigin;\n\n  /** Whether the window has just been focused. */\n  private _windowFocused = false;\n\n  /** The target of the last touch event. */\n  priva
 te _lastTouchTarget: EventTarget | null;\n\n  /** The timeout id of the touch timeout, used to cancel timeout later. */\n  private _touchTimeoutId: number;\n\n  /** The timeout id of the window focus timeout. */\n  private _windowFocusTimeoutId: number;\n\n  /** The timeout id of the origin clearing timeout. */\n  private _originTimeoutId: number;\n\n  /** Map of elements being monitored to their info. */\n  private _elementInfo = new Map<HTMLElement, MonitoredElementInfo>();\n\n  /** A map of global objects to lists of current listeners. */\n  private _unregisterGlobalListeners = () => {};\n\n  /** The number of elements currently being monitored. */\n  private _monitoredElementCount = 0;\n\n  constructor(private _ngZone: NgZone, private _platform: Platform) {}\n\n  /**\n   * @docs-private\n   * @deprecated renderer param no longer needed.\n   * @deletion-target 6.0.0\n   */\n  monitor(element: HTMLElement, renderer: Renderer2, checkChildren: boolean):\n      Observable<FocusOrigin
 >;\n  /**\n   * Monitors focus on an element and applies appropriate CSS classes.\n   * @param element The element to monitor\n   * @param checkChildren Whether to count the element as focused when its children are focused.\n   * @returns An observable that emits when the focus state of the element changes.\n   *     When the element is blurred, null will be emitted.\n   */\n  monitor(element: HTMLElement, checkChildren?: boolean): Observable<FocusOrigin>;\n  monitor(\n      element: HTMLElement,\n      renderer?: Renderer2 | boolean,\n      checkChildren?: boolean): Observable<FocusOrigin> {\n    // TODO(mmalerba): clean up after deprecated signature is removed.\n    if (!(renderer instanceof Renderer2)) {\n      checkChildren = renderer;\n    }\n    checkChildren = !!checkChildren;\n\n    // Do nothing if we're not on the browser platform.\n    if (!this._platform.isBrowser) {\n      return observableOf(null);\n    }\n    // Check if we're already monitoring this element.\n    if 
 (this._elementInfo.has(element)) {\n      let cachedInfo = this._elementInfo.get(element);\n      cachedInfo!.checkChildren = checkChildren;\n      return cachedInfo!.subject.asObservable();\n    }\n\n    // Create monitored element info.\n    let info: MonitoredElementInfo = {\n      unlisten: () => {},\n      checkChildren: checkChildren,\n      subject: new Subject<FocusOrigin>()\n    };\n    this._elementInfo.set(element, info);\n    this._incrementMonitoredElementCount();\n\n    // Start listening. We need to listen in capture phase since focus events don't bubble.\n    let focusListener = (event: FocusEvent) => this._onFocus(event, element);\n    let blurListener = (event: FocusEvent) => this._onBlur(event, element);\n    this._ngZone.runOutsideAngular(() => {\n      element.addEventListener('focus', focusListener, true);\n      element.addEventListener('blur', blurListener, true);\n    });\n\n    // Create an unlisten function for later.\n    info.unlisten = () => {\n      el
 ement.removeEventListener('focus', focusListener, true);\n      element.removeEventListener('blur', blurListener, true);\n    };\n\n    return info.subject.asObservable();\n  }\n\n  /**\n   * Stops monitoring an element and removes all focus classes.\n   * @param element The element to stop monitoring.\n   */\n  stopMonitoring(element: HTMLElement): void {\n    const elementInfo = this._elementInfo.get(element);\n\n    if (elementInfo) {\n      elementInfo.unlisten();\n      elementInfo.subject.complete();\n\n      this._setClasses(element);\n      this._elementInfo.delete(element);\n      this._decrementMonitoredElementCount();\n    }\n  }\n\n  /**\n   * Focuses the element via the specified focus origin.\n   * @param element The element to focus.\n   * @param origin The focus origin.\n   */\n  focusVia(element: HTMLElement, origin: FocusOrigin): void {\n    this._setOriginForCurrentEventQueue(origin);\n    element.focus();\n  }\n\n  ngOnDestroy() {\n    this._elementInfo.forEach((
 _info, element) => this.stopMonitoring(element));\n  }\n\n  /** Register necessary event listeners on the document and window. */\n  private _registerGlobalListeners() {\n    // Do nothing if we're not on the browser platform.\n    if (!this._platform.isBrowser) {\n      return;\n    }\n\n    // On keydown record the origin and clear any touch event that may be in progress.\n    let documentKeydownListener = () => {\n      this._lastTouchTarget = null;\n      this._setOriginForCurrentEventQueue('keyboard');\n    };\n\n    // On mousedown record the origin only if there is not touch target, since a mousedown can\n    // happen as a result of a touch event.\n    let documentMousedownListener = () => {\n      if (!this._lastTouchTarget) {\n        this._setOriginForCurrentEventQueue('mouse');\n      }\n    };\n\n    // When the touchstart event fires the focus event is not yet in the event queue. This means\n    // we can't rely on the trick used above (setting timeout of 0ms). Instead
  we wait 650ms to\n    // see if a focus happens.\n    let documentTouchstartListener = (event: TouchEvent) => {\n      if (this._touchTimeoutId != null) {\n        clearTimeout(this._touchTimeoutId);\n      }\n      this._lastTouchTarget = event.target;\n      this._touchTimeoutId = setTimeout(() => this._lastTouchTarget = null, TOUCH_BUFFER_MS);\n    };\n\n    // Make a note of when the window regains focus, so we can restore the origin info for the\n    // focused element.\n    let windowFocusListener = () => {\n      this._windowFocused = true;\n      this._windowFocusTimeoutId = setTimeout(() => this._windowFocused = false, 0);\n    };\n\n    // Note: we listen to events in the capture phase so we can detect them even if the user stops\n    // propagation.\n    this._ngZone.runOutsideAngular(() => {\n      document.addEventListener('keydown', documentKeydownListener, true);\n      document.addEventListener('mousedown', documentMousedownListener, true);\n      document.addEventL
 istener('touchstart', documentTouchstartListener,\n          supportsPassiveEventListeners() ? ({passive: true, capture: true} as any) : true);\n      window.addEventListener('focus', windowFocusListener);\n    });\n\n    this._unregisterGlobalListeners = () => {\n      document.removeEventListener('keydown', documentKeydownListener, true);\n      document.removeEventListener('mousedown', documentMousedownListener, true);\n      document.removeEventListener('touchstart', documentTouchstartListener,\n          supportsPassiveEventListeners() ? ({passive: true, capture: true} as any) : true);\n      window.removeEventListener('focus', windowFocusListener);\n\n      // Clear timeouts for all potentially pending timeouts to prevent the leaks.\n      clearTimeout(this._windowFocusTimeoutId);\n      clearTimeout(this._touchTimeoutId);\n      clearTimeout(this._originTimeoutId);\n    };\n  }\n\n  private _toggleClass(element: Element, className: string, shouldSet: boolean) {\n    if (shoul
 dSet) {\n      element.classList.add(className);\n    } else {\n      element.classList.remove(className);\n    }\n  }\n\n  /**\n   * Sets the focus classes on the element based on the given focus origin.\n   * @param element The element to update the classes on.\n   * @param origin The focus origin.\n   */\n  private _setClasses(element: HTMLElement, origin?: FocusOrigin): void {\n    const elementInfo = this._elementInfo.get(element);\n\n    if (elementInfo) {\n      this._toggleClass(element, 'cdk-focused', !!origin);\n      this._toggleClass(element, 'cdk-touch-focused', origin === 'touch');\n      this._toggleClass(element, 'cdk-keyboard-focused', origin === 'keyboard');\n      this._toggleClass(element, 'cdk-mouse-focused', origin === 'mouse');\n      this._toggleClass(element, 'cdk-program-focused', origin === 'program');\n    }\n  }\n\n  /**\n   * Sets the origin and schedules an async function to clear it at the end of the event queue.\n   * @param origin The origin to set.
 \n   */\n  private _setOriginForCurrentEventQueue(origin: FocusOrigin): void {\n    this._origin = origin;\n    this._originTimeoutId = setTimeout(() => this._origin = null, 0);\n  }\n\n  /**\n   * Checks whether the given focus event was caused by a touchstart event.\n   * @param event The focus event to check.\n   * @returns Whether the event was caused by a touch.\n   */\n  private _wasCausedByTouch(event: FocusEvent): boolean {\n    // Note(mmalerba): This implementation is not quite perfect, there is a small edge case.\n    // Consider the following dom structure:\n    //\n    // <div #parent tabindex=\"0\" cdkFocusClasses>\n    //   <div #child (click)=\"#parent.focus()\"></div>\n    // </div>\n    //\n    // If the user touches the #child element and the #parent is programmatically focused as a\n    // result, this code will still consider it to have been caused by the touch event and will\n    // apply the cdk-touch-focused class rather than the cdk-program-focused class. Th
 is is a\n    // relatively small edge-case that can be worked around by using\n    // focusVia(parentEl, 'program') to focus the parent element.\n    //\n    // If we decide that we absolutely must handle this case correctly, we can do so by listening\n    // for the first focus event after the touchstart, and then the first blur event after that\n    // focus event. When that blur event fires we know that whatever follows is not a result of the\n    // touchstart.\n    let focusTarget = event.target;\n    return this._lastTouchTarget instanceof Node && focusTarget instanceof Node &&\n        (focusTarget === this._lastTouchTarget || focusTarget.contains(this._lastTouchTarget));\n  }\n\n  /**\n   * Handles focus events on a registered element.\n   * @param event The focus event.\n   * @param element The monitored element.\n   */\n  private _onFocus(event: FocusEvent, element: HTMLElement) {\n    // NOTE(mmalerba): We currently set the classes based on the focus origin of the most re
 cent\n    // focus event affecting the monitored element. If we want to use the origin of the first event\n    // instead we should check for the cdk-focused class here and return if the element already has\n    // it. (This only matters for elements that have includesChildren = true).\n\n    // If we are not counting child-element-focus as focused, make sure that the event target is the\n    // monitored element itself.\n    const elementInfo = this._elementInfo.get(element);\n    if (!elementInfo || (!elementInfo.checkChildren && element !== event.target)) {\n      return;\n    }\n\n    // If we couldn't detect a cause for the focus event, it's due to one of three reasons:\n    // 1) The window has just regained focus, in which case we want to restore the focused state of\n    //    the element from before the window blurred.\n    // 2) It was caused by a touch event, in which case we mark the origin as 'touch'.\n    // 3) The element was programmatically focused, in which case we
  should mark the origin as\n    //    'program'.\n    if (!this._origin) {\n      if (this._windowFocused && this._lastFocusOrigin) {\n        this._origin = this._lastFocusOrigin;\n      } else if (this._wasCausedByTouch(event)) {\n        this._origin = 'touch';\n      } else {\n        this._origin = 'program';\n      }\n    }\n\n    this._setClasses(element, this._origin);\n    elementInfo.subject.next(this._origin);\n    this._lastFocusOrigin = this._origin;\n    this._origin = null;\n  }\n\n  /**\n   * Handles blur events on a registered element.\n   * @param event The blur event.\n   * @param element The monitored element.\n   */\n  _onBlur(event: FocusEvent, element: HTMLElement) {\n    // If we are counting child-element-focus as focused, make sure that we aren't just blurring in\n    // order to focus another child of the monitored element.\n    const elementInfo = this._elementInfo.get(element);\n\n    if (!elementInfo || (elementInfo.checkChildren && event.relatedTarget 
 instanceof Node &&\n        element.contains(event.relatedTarget))) {\n      return;\n    }\n\n    this._setClasses(element);\n    elementInfo.subject.next(null);\n  }\n\n  private _incrementMonitoredElementCount() {\n    // Register global listeners when first element is monitored.\n    if (++this._monitoredElementCount == 1) {\n      this._registerGlobalListeners();\n    }\n  }\n\n  private _decrementMonitoredElementCount() {\n    // Unregister global listeners when last element is unmonitored.\n    if (!--this._monitoredElementCount) {\n      this._unregisterGlobalListeners();\n      this._unregisterGlobalListeners = () => {};\n    }\n  }\n\n}\n\n\n/**\n * Directive that determines how a particular element was focused (via keyboard, mouse, touch, or\n * programmatically) and adds corresponding classes to the element.\n *\n * There are two variants of this directive:\n * 1) cdkMonitorElementFocus: does not consider an element to be focused if one of its children is\n *    focused.
 \n * 2) cdkMonitorSubtreeFocus: considers an element focused if it or any of its children are focused.\n */\n@Directive({\n  selector: '[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]',\n})\nexport class CdkMonitorFocus implements OnDestroy {\n  private _monitorSubscription: Subscription;\n  @Output() cdkFocusChange = new EventEmitter<FocusOrigin>();\n\n  constructor(private _elementRef: ElementRef, private _focusMonitor: FocusMonitor) {\n    this._monitorSubscription = this._focusMonitor.monitor(\n        this._elementRef.nativeElement,\n        this._elementRef.nativeElement.hasAttribute('cdkMonitorSubtreeFocus'))\n        .subscribe(origin => this.cdkFocusChange.emit(origin));\n  }\n\n  ngOnDestroy() {\n    this._focusMonitor.stopMonitoring(this._elementRef.nativeElement);\n    this._monitorSubscription.unsubscribe();\n  }\n}\n\n/** @docs-private */\nexport function FOCUS_MONITOR_PROVIDER_FACTORY(\n    parentDispatcher: FocusMonitor, ngZone: NgZone, platform: Platform) {\n  re
 turn parentDispatcher || new FocusMonitor(ngZone, platform);\n}\n\n/** @docs-private */\nexport const FOCUS_MONITOR_PROVIDER = {\n  // If there is already a FocusMonitor available, use that. Otherwise, provide a new one.\n  provide: FocusMonitor,\n  deps: [[new Optional(), new SkipSelf(), FocusMonitor], NgZone, Platform],\n  useFactory: FOCUS_MONITOR_PROVIDER_FACTORY\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Screenreaders will often fire fake mousedown events when a focusable element\n * is activated using the keyboard. We can typically distinguish between these faked\n * mousedown events and real mousedown events using the \"buttons\" property. While\n * real mousedowns will indicate the mouse button that was pressed (e.g. \"1\" for\n * the left mouse button), faked mousedowns will usually set the pr
 operty value to 0.\n */\nexport function isFakeMousedownFromScreenReader(event: MouseEvent): boolean {\n  return event.buttons === 0;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n  Directive,\n  ElementRef,\n  Input,\n  NgZone,\n  OnDestroy,\n  AfterContentInit,\n  Injectable,\n  Inject,\n} from '@angular/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {take} from 'rxjs/operators/take';\nimport {InteractivityChecker} from '../interactivity-checker/interactivity-checker';\nimport {DOCUMENT} from '@angular/common';\n\n\n/**\n * Class that allows for trapping focus within a DOM element.\n *\n * This class currently uses a relatively simple approach to focus trapping.\n * It assumes that the tab order is the same as DOM order, which is not necessarily true.\n * Things like `tabI
 ndex > 0`, flex `order`, and shadow roots can cause to two to misalign.\n */\nexport class FocusTrap {\n  private _startAnchor: HTMLElement | null;\n  private _endAnchor: HTMLElement | null;\n\n  /** Whether the focus trap is active. */\n  get enabled(): boolean { return this._enabled; }\n  set enabled(val: boolean) {\n    this._enabled = val;\n\n    if (this._startAnchor && this._endAnchor) {\n      this._startAnchor.tabIndex = this._endAnchor.tabIndex = this._enabled ? 0 : -1;\n    }\n  }\n  private _enabled: boolean = true;\n\n  constructor(\n    private _element: HTMLElement,\n    private _checker: InteractivityChecker,\n    private _ngZone: NgZone,\n    private _document: Document,\n    deferAnchors = false) {\n\n    if (!deferAnchors) {\n      this.attachAnchors();\n    }\n  }\n\n  /** Destroys the focus trap by cleaning up the anchors. */\n  destroy() {\n    if (this._startAnchor && this._startAnchor.parentNode) {\n      this._startAnchor.parentNode.removeChild(this._startAnc
 hor);\n    }\n\n    if (this._endAnchor && this._endAnchor.parentNode) {\n      this._endAnchor.parentNode.removeChild(this._endAnchor);\n    }\n\n    this._startAnchor = this._endAnchor = null;\n  }\n\n  /**\n   * Inserts the anchors into the DOM. This is usually done automatically\n   * in the constructor, but can be deferred for cases like directives with `*ngIf`.\n   */\n  attachAnchors(): void {\n    if (!this._startAnchor) {\n      this._startAnchor = this._createAnchor();\n    }\n\n    if (!this._endAnchor) {\n      this._endAnchor = this._createAnchor();\n    }\n\n    this._ngZone.runOutsideAngular(() => {\n      this._startAnchor!.addEventListener('focus', () => {\n        this.focusLastTabbableElement();\n      });\n\n      this._endAnchor!.addEventListener('focus', () => {\n        this.focusFirstTabbableElement();\n      });\n\n      if (this._element.parentNode) {\n        this._element.parentNode.insertBefore(this._startAnchor!, this._element);\n        this._element.p
 arentNode.insertBefore(this._endAnchor!, this._element.nextSibling);\n      }\n    });\n  }\n\n  /**\n   * Waits for the zone to stabilize, then either focuses the first element that the\n   * user specified, or the first tabbable element.\n   * @returns Returns a promise that resolves with a boolean, depending\n   * on whether focus was moved successfuly.\n   */\n  focusInitialElementWhenReady(): Promise<boolean> {\n    return new Promise<boolean>(resolve => {\n      this._executeOnStable(() => resolve(this.focusInitialElement()));\n    });\n  }\n\n  /**\n   * Waits for the zone to stabilize, then focuses\n   * the first tabbable element within the focus trap region.\n   * @returns Returns a promise that resolves with a boolean, depending\n   * on whether focus was moved successfuly.\n   */\n  focusFirstTabbableElementWhenReady(): Promise<boolean> {\n    return new Promise<boolean>(resolve => {\n      this._executeOnStable(() => resolve(this.focusFirstTabbableElement()));\n    });\
 n  }\n\n  /**\n   * Waits for the zone to stabilize, then focuses\n   * the last tabbable element within the focus trap region.\n   * @returns Returns a promise that resolves with a boolean, depending\n   * on whether focus was moved successfuly.\n   */\n  focusLastTabbableElementWhenReady(): Promise<boolean> {\n    return new Promise<boolean>(resolve => {\n      this._executeOnStable(() => resolve(this.focusLastTabbableElement()));\n    });\n  }\n\n  /**\n   * Get the specified boundary element of the trapped region.\n   * @param bound The boundary to get (start or end of trapped region).\n   * @returns The boundary element.\n   */\n  private _getRegionBoundary(bound: 'start' | 'end'): HTMLElement | null {\n    // Contains the deprecated version of selector, for temporary backwards comparability.\n    let markers = this._element.querySelectorAll(`[cdk-focus-region-${bound}], ` +\n                                                 `[cdkFocusRegion${bound}], ` +\n                      
                            `[cdk-focus-${bound}]`) as NodeListOf<HTMLElement>;\n\n    for (let i = 0; i < markers.length; i++) {\n      if (markers[i].hasAttribute(`cdk-focus-${bound}`)) {\n        console.warn(`Found use of deprecated attribute 'cdk-focus-${bound}',` +\n                     ` use 'cdkFocusRegion${bound}' instead.`, markers[i]);\n      } else if (markers[i].hasAttribute(`cdk-focus-region-${bound}`)) {\n        console.warn(`Found use of deprecated attribute 'cdk-focus-region-${bound}',` +\n                     ` use 'cdkFocusRegion${bound}' instead.`, markers[i]);\n      }\n    }\n\n    if (bound == 'start') {\n      return markers.length ? markers[0] : this._getFirstTabbableElement(this._element);\n    }\n    return markers.length ?\n        markers[markers.length - 1] : this._getLastTabbableElement(this._element);\n  }\n\n  /**\n   * Focuses the element that should be focused when the focus trap is initialized.\n   * @returns Whether focus was moved successfuly.\n
    */\n  focusInitialElement(): boolean {\n    // Contains the deprecated version of selector, for temporary backwards comparability.\n    const redirectToElement = this._element.querySelector(`[cdk-focus-initial], ` +\n                                                          `[cdkFocusInitial]`) as HTMLElement;\n\n    if (this._element.hasAttribute(`cdk-focus-initial`)) {\n      console.warn(`Found use of deprecated attribute 'cdk-focus-initial',` +\n                    ` use 'cdkFocusInitial' instead.`, this._element);\n    }\n\n    if (redirectToElement) {\n      redirectToElement.focus();\n      return true;\n    }\n\n    return this.focusFirstTabbableElement();\n  }\n\n  /**\n   * Focuses the first tabbable element within the focus trap region.\n   * @returns Whether focus was moved successfuly.\n   */\n  focusFirstTabbableElement(): boolean {\n    const redirectToElement = this._getRegionBoundary('start');\n\n    if (redirectToElement) {\n      redirectToElement.focus();\n   
  }\n\n    return !!redirectToElement;\n  }\n\n  /**\n   * Focuses the last tabbable element within the focus trap region.\n   * @returns Whether focus was moved successfuly.\n   */\n  focusLastTabbableElement(): boolean {\n    const redirectToElement = this._getRegionBoundary('end');\n\n    if (redirectToElement) {\n      redirectToElement.focus();\n    }\n\n    return !!redirectToElement;\n  }\n\n  /** Get the first tabbable element from a DOM subtree (inclusive). */\n  private _getFirstTabbableElement(root: HTMLElement): HTMLElement | null {\n    if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n      return root;\n    }\n\n    // Iterate in DOM order. Note that IE doesn't have `children` for SVG so we fall\n    // back to `childNodes` which includes text nodes, comments etc.\n    let children = root.children || root.childNodes;\n\n    for (let i = 0; i < children.length; i++) {\n      let tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE
  ?\n        this._getFirstTabbableElement(children[i] as HTMLElement) :\n        null;\n\n      if (tabbableChild) {\n        return tabbableChild;\n      }\n    }\n\n    return null;\n  }\n\n  /** Get the last tabbable element from a DOM subtree (inclusive). */\n  private _getLastTabbableElement(root: HTMLElement): HTMLElement | null {\n    if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n      return root;\n    }\n\n    // Iterate in reverse DOM order.\n    let children = root.children || root.childNodes;\n\n    for (let i = children.length - 1; i >= 0; i--) {\n      let tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE ?\n        this._getLastTabbableElement(children[i] as HTMLElement) :\n        null;\n\n      if (tabbableChild) {\n        return tabbableChild;\n      }\n    }\n\n    return null;\n  }\n\n  /** Creates an anchor element. */\n  private _createAnchor(): HTMLElement {\n    const anchor = this._document.createElement('div')
 ;\n    anchor.tabIndex = this._enabled ? 0 : -1;\n    anchor.classList.add('cdk-visually-hidden');\n    anchor.classList.add('cdk-focus-trap-anchor');\n    return anchor;\n  }\n\n  /** Executes a function when the zone is stable. */\n  private _executeOnStable(fn: () => any): void {\n    if (this._ngZone.isStable) {\n      fn();\n    } else {\n      this._ngZone.onStable.asObservable().pipe(take(1)).subscribe(fn);\n    }\n  }\n}\n\n\n/** Factory that allows easy instantiation of focus traps. */\n@Injectable()\nexport class FocusTrapFactory {\n  private _document: Document;\n\n  constructor(\n      private _checker: InteractivityChecker,\n      private _ngZone: NgZone,\n      @Inject(DOCUMENT) _document: any) {\n\n    this._document = _document;\n  }\n\n  /**\n   * Creates a focus-trapped region around the given element.\n   * @param element The element around which focus will be trapped.\n   * @param deferCaptureElements Defers the creation of focus-capturing elements to be done\n  
  *     manually by the user.\n   * @returns The created focus trap instance.\n   */\n  create(element: HTMLElement, deferCaptureElements: boolean = false): FocusTrap {\n    return new FocusTrap(\n        element, this._checker, this._ngZone, this._document, deferCaptureElements);\n  }\n}\n\n\n/**\n * Directive for trapping focus within a region.\n * @docs-private\n * @deprecated\n * @deletion-target 6.0.0\n */\n@Directive({\n  selector: 'cdk-focus-trap',\n})\nexport class FocusTrapDeprecatedDirective implements OnDestroy, AfterContentInit {\n  focusTrap: FocusTrap;\n\n  /** Whether the focus trap is active. */\n  @Input()\n  get disabled(): boolean { return !this.focusTrap.enabled; }\n  set disabled(val: boolean) {\n    this.focusTrap.enabled = !coerceBooleanProperty(val);\n  }\n\n  constructor(private _elementRef: ElementRef, private _focusTrapFactory: FocusTrapFactory) {\n    this.focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement, true);\n  }\n\n  ngOnDestro
 y() {\n    this.focusTrap.destroy();\n  }\n\n  ngAfterContentInit() {\n    this.focusTrap.attachAnchors();\n  }\n}\n\n\n/** Directive for trapping focus within a region. */\n@Directive({\n  selector: '[cdkTrapFocus]',\n  exportAs: 'cdkTrapFocus',\n})\nexport class CdkTrapFocus implements OnDestroy, AfterContentInit {\n  private _document: Document;\n\n  /** Underlying FocusTrap instance. */\n  focusTrap: FocusTrap;\n\n  /** Previously focused element to restore focus to upon destroy when using autoCapture. */\n  private _previouslyFocusedElement: HTMLElement | null = null;\n\n  /** Whether the focus trap is active. */\n  @Input('cdkTrapFocus')\n  get enabled(): boolean { return this.focusTrap.enabled; }\n  set enabled(value: boolean) { this.focusTrap.enabled = coerceBooleanProperty(value); }\n\n  /**\n   * Whether the directive should automatially move focus into the trapped region upon\n   * initialization and return focus to the previous activeElement upon destruction.\n   */\n  @
 Input('cdkTrapFocusAutoCapture')\n  get autoCapture(): boolean { return this._autoCapture; }\n  set autoCapture(value: boolean) { this._autoCapture = coerceBooleanProperty(value); }\n  private _autoCapture: boolean;\n\n  constructor(\n      private _elementRef: ElementRef,\n      private _focusTrapFactory: FocusTrapFactory,\n      @Inject(DOCUMENT) _document: any) {\n\n    this._document = _document;\n    this.focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement, true);\n  }\n\n  ngOnDestroy() {\n    this.focusTrap.destroy();\n\n    // If we stored a previously focused element when using autoCapture, return focus to that\n    // element now that the trapped region is being destroyed.\n    if (this._previouslyFocusedElement) {\n      this._previouslyFocusedElement.focus();\n      this._previouslyFocusedElement = null;\n    }\n  }\n\n  ngAfterContentInit() {\n    this.focusTrap.attachAnchors();\n\n    if (this.autoCapture) {\n      this._previouslyFocusedElement = 
 this._document.activeElement as HTMLElement;\n      this.focusTrap.focusInitialElementWhenReady();\n    }\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {QueryList} from '@angular/core';\nimport {Subject} from 'rxjs/Subject';\nimport {Subscription} from 'rxjs/Subscription';\nimport {\n  UP_ARROW,\n  DOWN_ARROW,\n  LEFT_ARROW,\n  RIGHT_ARROW,\n  TAB,\n  A,\n  Z,\n  ZERO,\n  NINE,\n} from '@angular/cdk/keycodes';\nimport {debounceTime} from 'rxjs/operators/debounceTime';\nimport {filter} from 'rxjs/operators/filter';\nimport {map} from 'rxjs/operators/map';\nimport {tap} from 'rxjs/operators/tap';\n\n/** This interface is for items that can be passed to a ListKeyManager. */\nexport interface ListKeyManagerOption {\n  /** Whether the option is disabled. */\n  disabled?: boolean;\n\n  /** Gets the label for
  this option. */\n  getLabel?(): string;\n}\n\n/**\n * This class manages keyboard events for selectable lists. If you pass it a query list\n * of items, it will set the active item correctly when arrow events occur.\n */\nexport class ListKeyManager<T extends ListKeyManagerOption> {\n  private _activeItemIndex = -1;\n  private _activeItem: T;\n  private _wrap = false;\n  private _letterKeyStream = new Subject<string>();\n  private _typeaheadSubscription = Subscription.EMPTY;\n  private _vertical = true;\n  private _horizontal: 'ltr' | 'rtl' | null;\n\n  /**\n   * Predicate function that can be used to check whether an item should be skipped\n   * by the key manager. By default, disabled items are skipped.\n   */\n  private _skipPredicateFn = (item: T) => item.disabled;\n\n  // Buffer for the letters that the user has pressed when the typeahead option is turned on.\n  private _pressedLetters: string[] = [];\n\n  constructor(private _items: QueryList<T>) {\n    _items.changes.subscri
 be((newItems: QueryList<T>) => {\n      if (this._activeItem) {\n        const itemArray = newItems.toArray();\n        const newIndex = itemArray.indexOf(this._activeItem);\n\n        if (newIndex > -1 && newIndex !== this._activeItemIndex) {\n          this._activeItemIndex = newIndex;\n        }\n      }\n    });\n  }\n\n  /**\n   * Stream that emits any time the TAB key is pressed, so components can react\n   * when focus is shifted off of the list.\n   */\n  tabOut: Subject<void> = new Subject<void>();\n\n  /** Stream that emits whenever the active item of the list manager changes. */\n  change = new Subject<number>();\n\n  /**\n   * Sets the predicate function that determines which items should be skipped by the\n   * list key manager.\n   * @param predicate Function that determines whether the given item should be skipped.\n   */\n  skipPredicate(predicate: (item: T) => boolean): this {\n    this._skipPredicateFn = predicate;\n    return this;\n  }\n\n  /**\n   * Turns on wra
 pping mode, which ensures that the active item will wrap to\n   * the other end of list when there are no more items in the given direction.\n   */\n  withWrap(): this {\n    this._wrap = true;\n    return thi

<TRUNCATED>