![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /proc/self/root/opt/mattermost/client/ |
Upload File : |
{"version":3,"file":"2868.a7fc1d97c7113f394036.js","mappings":"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R,CACDD,KAAM,IACNC,QAAS,+HACR,CACDD,KAAM,IACNC,QAAS,qCACR,CACDD,KAAM,IACNC,QAAS,2FACR,CACDD,KAAM,IACNC,QAAS,mHACR,CACDD,KAAM,KACNC,QAAS,aACR,CACDD,KAAM,KACNC,QAAS,aACR,CACDD,KAAM,IACNC,QAAS,uDACR,CACDD,KAAM,IACNC,QAAS,uGACR,CACDD,KAAM,KACNC,QAAS,aACR,CACDD,KAAM,KACNC,QAAS,aACR,CACDD,KAAM,IACNC,QAAS,yQACR,CACDD,KAAM,KACNC,QAAS,aACR,CACDD,KAAM,KACNC,QAAS,aACR,CACDD,KAAM,KACNC,QAAS,aACR,CACDD,KAAM,IACNC,QAAS,mEACR,CACDD,KAAM,IACNC,QAAS,2CACR,CACDD,KAAM,IACNC,QAAS,6GACR,CACDD,KAAM,IACNC,QAAS,6GACR,CACDD,KAAM,IACNC,QAAS,iGACR,CACDD,KAAM,KACNC,QAAS,aACR,CACDD,KAAM,IACNC,QAAS,mNACR,CACDD,KAAM,IACNC,QAAS,uDACR,CACDD,KAAM,KACNC,QAAS,aACR,CACDD,KAAM,IACNC,QAAS,mEACR,CACDD,KAAM,IACNC,QAAS,qCACR,CACDD,KAAM,IACNC,QAAS,iGACR,CACDD,KAAM,IACNC,QAAS,2FACR,CACDD,KAAM,IACNC,QAAS,yNACR,CACDD,KAAM,KACNC,QAAS,aACR,CACDD,KAAM,KACNC,QAAS,yBACR,CACDD,KAAM,KACNC,QAAS,aACR,CACDD,KAAM,KACNC,QAAS,aACR,CACDD,KAAM,KACNC,QAAS,mBACR,CACDD,KAAM,KACNC,QAAS,aACR,CACDD,KAAM,IACNC,QAAS,6DACR,CACDD,KAAM,IACNC,QAAS,qFACR,CACDD,KAAM,IACNC,QAAS,2FACR,CACDD,KAAM,KACNC,QAAS,mBACR,CACDD,KAAM,IACNC,QAAS,iMACR,CACDD,KAAM,IACNC,QAAS,2CACR,CACDD,KAAM,IACNC,QAAS,iGACR,CACDD,KAAM,IACNC,QAAS,iGACR,CACDD,KAAM,KACNC,QAAS,aACR,CACDD,KA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BA,EAAKqnC,WAAyBH,EAAclnC,EACrD,EAEA2nC,YAAa,SAAUlG,GAGrB,MAAO,QADPA,EAAUA,EAAQhV,QAAQ,OAAQ,OACR,MAC5B,GAGFka,EAAMuB,aAAe,CACnB5qB,OAAQ,CAAC,QAAS,QAAS,SAC3BqqB,YAAa,SAAUlG,GACrB,OAAOA,CACT,GAGFkF,EAAMwB,eAAiB,CAErB7qB,OAAQ,UACRqqB,YAAa,SAAUlG,EAASzhC,GAC9B,MAAiC,UAA7BA,EAAKmhC,WAAWkG,UAAwBrnC,EAAKmhC,WAAW0F,WAAW,KAAO7mC,EAAayhC,EACpF,EACT,+BCkNF32B,EAAQ,EA9SW,CACf,wBACA,2BACA,gCACA,kBACA,uBACA,mBACA,WACA,uBACA,gBACA,kBACA,OACA,2BACA,kBACA,iBACA,iBACA,iCACA,aACA,mBACA,eACA,oBACA,aACA,2BACA,cACA,+BACA,WACA,KACA,aACA,yBACA,mBACA,eACA,oBACA,YACA,oBACA,eACA,mBACA,WACA,eACA,eACA,mBACA,kBACA,aACA,mBACA,yBACA,yBACA,mBACA,iBACA,SACA,cACA,YACA,YACA,aACA,YACA,uBACA,eACA,QACA,yBACA,kBACA,mCACA,8BACA,eACA,eACA,gBACA,aACA,+BACA,0BACA,iBACA,gBACA,qBACA,QACA,uBACA,eACA,QACA,aACA,gBACA,YACA,cACA,UACA,eACA,sBACA,gBACA,eACA,YACA,cACA,kBACA,gBACA,mBACA,gBACA,OACA,gBACA,qBACA,gBACA,0BACA,yBACA,mBACA,wBACA,oBACA,cACA,iBACA,kBACA,cACA,2BACA,qBACA,0BACA,oBACA,2BACA,qBACA,6BACA,uBACA,WACA,kCACA,4BACA,2BACA,qBACA,8BACA,wBACA,2BACA,qBACA,yBACA,mBACA,gCACA,0BACA,0BACA,oBACA,2BACA,qBACA,0BACA,oBACA,yBACA,mBACA,iBACA,OACA,iBACA,eACA,OACA,gBACA,sBACA,iBACA,sBACA,aACA,kBACA,cACA,eACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,gBACA,gBACA,qBACA,uBACA,uBACA,oBACA,+BACA,gBACA,SACA,gBACA,UACA,gBACA,QACA,SACA,yBACA,qBACA,aACA,aACA,gBACA,sBACA,OACA,uBACA,sBACA,qBACA,uBACA,gBACA,SACA,WACA,sBACA,SACA,qBACA,cACA,kBACA,SACA,iBACA,eACA,OACA,oBACA,yBACA,mBACA,eACA,eACA,OACA,iBACA,gBACA,eACA,UACA,iBACA,aACA,YACA,YACA,aACA,UACA,eACA,OACA,8BACA,wBACA,gBACA,wBACA,uBACA,uBACA,iBACA,qBACA,aACA,YACA,uBACA,eACA,QACA,cACA,gBACA,UACA,mBACA,QACA,cACA,kBACA,YACA,QACA,iBACA,eACA,gBACA,gBACA,QACA,cACA,MACA,4BACA,eACA,OACA,iBACA,mBACA,WACA,OACA,QACA,qBACA,iBACA,mBACA,oBACA,WACA,iBACA,kBACA,wBACA,wBACA,UACA,gBACA,sBACA,UACA,cACA,cACA,eACA,OACA,iBACA,sBACA,iBACA,mBACA,wBACA,uBACA,iBACA,kBACA,UACA,4BACA,gBACA,SACA,8BACA,iBACA,gBACA,cACA,SACA,eACA,OACA,OACA,0BACA,2BACA,sBACA,cACA,aACA,eACA,uBACA,wBACA,mBACA,iBACA,SACA,mBACA,iBACA,wBACA,oBACA,OACA,SACA,gBACA,yBACA,cACA,mBACA,mBACA,4KC5SJ,MAAMs9B,EAAY,CAAC,WAAY,WAAY,YAAa,YAAa,WAAY,QAAS,cAAe,OAAQ,YAAa,WA2BxHC,GAAc,QAAO,MAAO,CAChC10C,KAAM,aACN20C,KAAM,OACNC,kBAAmB,CAAC9pC,EAAOinB,KACzB,MAAM,WACJ8iB,GACE/pC,EACJ,MAAO,CAACinB,EAAO+iB,KAAMD,EAAWE,UAAYhjB,EAAOgjB,SAAUhjB,EAAO8iB,EAAW16C,SAAU06C,EAAW11C,OAAS4yB,EAAO5yB,MAAkC,aAA3B01C,EAAWG,aAA8BjjB,EAAOjsB,SAAU+uC,EAAWI,UAAYljB,EAAOkjB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AAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,GAAI,IAAK,EAAG,EAA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EACjB5Q,EAAO72D,QAAQynE,IAAMA,EAErB5Q,EAAO72D,QAAQ2nE,IAAM,SAAUnnF,EAAS2sE,GACtC,OAAIt7D,MAAMqe,QAAQi9C,GACTA,EAAW/hE,QAAO,SAAU4V,EAAKwmC,GAEtC,OADAxmC,EAAIwmC,GAAQ/9C,EAAMjJ,EAASgnD,GAAQ,IAC5BxmC,CACT,GAAG,CAAC,GAEGvX,EAAMjJ,EAAS2sE,GAAc,GAExC,8BC3DArsE,OAAOif,eAAeC,EAAS,aAAc,CAAE7W,OAAO,IACtD6W,EAAQ4yE,eAAiB5yE,EAAQ6yE,kBAAe,EAChD7yE,EAAQ6yE,aAAe,IAAIC,IAAI,CAC3B,WACA,cACA,eACA,eACA,gBACA,mBACA,WACA,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,eACA,gBACA,WACA,iBACA,iBACA,YACFtrF,KAAI,SAAU8rB,GAAO,MAAO,CAACA,EAAIxC,cAAewC,EAAM,KACxDtT,EAAQ4yE,eAAiB,IAAIE,IAAI,CAC7B,gBACA,gBACA,gBACA,gBACA,cACA,WACA,gBACA,kBACA,WACA,cACA,WACA,oBACA,gBACA,eACA,mBACA,YACA,aACA,WACA,eACA,oBACA,eACA,cACA,cACA,mBACA,YACA,aACA,aACA,sBACA,mBACA,eACA,YACA,YACA,YACA,gBACA,sBACA,iBACA,OACA,OACA,cACA,YACA,qBACA,mBACA,mBACA,mBACA,eACA,cACA,eACA,cACA,eACA,iBACA,cACA,UACA,UACA,aACA,UACA,aACA,mBACA,mBACA,cACFtrF,KAAI,SAAU8rB,GAAO,MAAO,CAACA,EAAIxC,cAAewC,EAAM,wCCrGxD,IAAIy/D,EAAYnqF,MAAQA,KAAKmqF,UAAa,WAStC,OARAA,EAAWjyF,OAAOc,QAAU,SAAShB,GACjC,IAAK,IAAIF,EAAGU,EAAI,EAAGkL,EAAI6E,UAAU9P,OAAQD,EAAIkL,EAAGlL,IAE5C,IAAK,IAAIP,KADTH,EAAIyQ,UAAU/P,GACON,OAAOC,UAAUC,eAAeC,KAAKP,EAAGG,KACzDD,EAAEC,GAAKH,EAAEG,IAEjB,OAAOD,CACX,EACOmyF,EAAS/gF,MAAMpJ,KAAMuI,UAChC,EACI6hF,EAAmBpqF,MAAQA,KAAKoqF,kBAAqBlyF,OAAOikB,OAAS,SAAU1Z,EAAGs7B,EAAGqT,EAAGi5C,QAC7E7hF,IAAP6hF,IAAkBA,EAAKj5C,GAC3B,IAAIsoC,EAAOxhF,OAAOoyF,yBAAyBvsD,EAAGqT,GACzCsoC,KAAS,QAASA,GAAQ37C,EAAE1lB,WAAaqhE,EAAK/gE,UAAY+gE,EAAKhhE,gBAClEghE,EAAO,CAAEjhE,YAAY,EAAMsmE,IAAK,WAAa,OAAOhhD,EAAEqT,EAAI,IAE5Dl5C,OAAOif,eAAe1U,EAAG4nF,EAAI3Q,EAChC,EAAI,SAAUj3E,EAAGs7B,EAAGqT,EAAGi5C,QACT7hF,IAAP6hF,IAAkBA,EAAKj5C,GAC3B3uC,EAAE4nF,GAAMtsD,EAAEqT,EACb,GACGm5C,EAAsBvqF,MAAQA,KAAKuqF,qBAAwBryF,OAAOikB,OAAS,SAAU1Z,EAAG87B,GACxFrmC,OAAOif,eAAe1U,EAAG,UAAW,CAAEgW,YAAY,EAAMlY,MAAOg+B,GAClE,EAAI,SAAS97B,EAAG87B,GACb97B,EAAW,QAAI87B,CACnB,GACIisD,EAAgBxqF,MAAQA,KAAKwqF,cAAiB,SAAUC,GACxD,GAAIA,GAAOA,EAAIpyE,WAAY,OAAOoyE,EAClC,IAAIh4C,EAAS,CAAC,EACd,GAAW,MAAPg4C,EAAa,IAAK,IAAIr5C,KAAKq5C,EAAe,YAANr5C,GAAmBl5C,OAAOC,UAAUC,eAAeC,KAAKoyF,EAAKr5C,IAAIg5C,EAAgB33C,EAAQg4C,EAAKr5C,GAEtI,OADAm5C,EAAmB93C,EAAQg4C,GACpBh4C,CACX,EACAv6C,OAAOif,eAAeC,EAAS,aAAc,CAAE7W,OAAO,IACtD6W,EAAQ/J,YAAS,EAIjB,IAAIq9E,EAAcF,EAAa,EAAQ,QACnCG,EAAa,EAAQ,OAOrBC,EAAoB,EAAQ,OAC5BC,EAAoB,IAAI/f,IAAI,CAC5B,QACA,SACA,MACA,SACA,UACA,WACA,YACA,aAEJ,SAASggB,EAAcvqF,GACnB,OAAOA,EAAMw4B,QAAQ,KAAM,SAC/B,CA+BA,IAAIgyD,EAAY,IAAIjgB,IAAI,CACpB,OACA,OACA,WACA,KACA,MACA,UACA,QACA,QACA,KACA,MACA,QACA,UACA,SACA,OACA,OACA,QACA,SACA,QACA,QAUJ,SAASz9D,EAAOf,EAAM8a,QACF,IAAZA,IAAsBA,EAAU,CAAC,GAGrC,IAFA,IAAIwnB,GAAQ,WAAYtiC,EAAOA,EAAO,CAACA,IACnCszD,EAAS,GACJpnE,EAAI,EAAGA,EAAIo2C,EAAMn2C,OAAQD,IAC9BonE,GAAUorB,EAAWp8C,EAAMp2C,GAAI4uB,GAEnC,OAAOw4C,CACX,CAGA,SAASorB,EAAW1+E,EAAM8a,GACtB,OAAQ9a,EAAKjR,MACT,KAAKqvF,EAAY1mC,KACb,OAAO32C,EAAOf,EAAKrE,SAAUmf,GAEjC,KAAKsjE,EAAYO,QACjB,KAAKP,EAAYQ,UACb,MAmED,IAAI1gF,OAnEoB8B,EAmERzK,KAAM,KAlEzB,KAAK6oF,EAAYS,QACb,MAsFD,UAAO3gF,OAtFe8B,EAsFHzK,KAAM,UArF5B,KAAK6oF,EAAYU,MACb,OAgFZ,SAAqBC,GACjB,MAAO,YAAY7gF,OAAO6gF,EAAKpjF,SAAS,GAAGpG,KAAM,MACrD,CAlFmBypF,CAAYh/E,GACvB,KAAKo+E,EAAYa,OACjB,KAAKb,EAAYc,MACjB,KAAKd,EAAYe,IACb,OAiBZ,SAAmBJ,EAAM1R,GACrB,IAAIhiF,EAEiB,YAAjBgiF,EAAK+R,UAELL,EAAKprF,KAAgE,QAAxDtI,EAAKizF,EAAkBX,aAAalL,IAAIsM,EAAKprF,aAA0B,IAAPtI,EAAgBA,EAAK0zF,EAAKprF,KAEnGorF,EAAKz+D,QACL++D,EAA6B/M,IAAIyM,EAAKz+D,OAAO3sB,QAC7C05E,EAAOwQ,EAASA,EAAS,CAAC,EAAGxQ,GAAO,CAAE+R,SAAS,OAGlD/R,EAAK+R,SAAWE,EAAgBhN,IAAIyM,EAAKprF,QAC1C05E,EAAOwQ,EAASA,EAAS,CAAC,EAAGxQ,GAAO,CAAE+R,QAAS,aAEnD,IAAIh/C,EAAM,IAAIliC,OAAO6gF,EAAKprF,MACtB4rF,EAnHR,SAA0BC,EAAYnS,GAClC,IAAIhiF,EACJ,GAAKm0F,EAAL,CAEA,IAAI7U,GAA+F,KAAtD,QAA9Bt/E,EAAKgiF,EAAKoS,sBAAmC,IAAPp0F,EAAgBA,EAAKgiF,EAAKqS,gBACzElB,EACAnR,EAAK+R,SAAmC,SAAxB/R,EAAKoS,eACjBpB,EAAWsB,UACXtB,EAAWuB,gBACrB,OAAOh0F,OAAO8X,KAAK87E,GACdltF,KAAI,SAAU8D,GACf,IAAI/K,EAAIw0F,EACJ5rF,EAAmC,QAA1B5I,EAAKm0F,EAAWppF,UAAyB,IAAP/K,EAAgBA,EAAK,GAKpE,MAJqB,YAAjBgiF,EAAK+R,UAELhpF,EAA2D,QAApDypF,EAAKvB,EAAkBZ,eAAejL,IAAIr8E,UAAyB,IAAPypF,EAAgBA,EAAKzpF,GAEvFi3E,EAAKyS,YAAezS,EAAK+R,SAAqB,KAAVnrF,EAGlC,GAAGiK,OAAO9H,EAAK,MAAO8H,OAAOysE,EAAO12E,GAAQ,KAFxCmC,CAGf,IACK5J,KAAK,IAnBA,CAoBd,CA4FkBuzF,CAAiBhB,EAAKQ,QAASlS,GAuB7C,OAtBIkS,IACAn/C,GAAO,IAAIliC,OAAOqhF,IAEO,IAAzBR,EAAKpjF,SAASxP,SACbkhF,EAAK+R,SAE2B,IAAzB/R,EAAK2S,gBAEL3S,EAAK2S,iBAAmBvB,EAAUnM,IAAIyM,EAAKprF,QAC9C05E,EAAK+R,UACNh/C,GAAO,KACXA,GAAO,OAGPA,GAAO,IACH2+C,EAAKpjF,SAASxP,OAAS,IACvBi0C,GAAOr/B,EAAOg+E,EAAKpjF,SAAU0xE,KAE7BA,EAAK+R,SAAYX,EAAUnM,IAAIyM,EAAKprF,QACpCysC,GAAO,KAAKliC,OAAO6gF,EAAKprF,KAAM,OAG/BysC,CACX,CAzDmB6/C,CAAUjgF,EAAM8a,GAC3B,KAAKsjE,EAAY8B,KACb,OA2DZ,SAAoBnB,EAAM1R,GACtB,IAAIhiF,EACAkK,EAAOwpF,EAAKxpF,MAAQ,GAWxB,OAT0F,KAAtD,QAA9BlK,EAAKgiF,EAAKoS,sBAAmC,IAAPp0F,EAAgBA,EAAKgiF,EAAKqS,kBAC/DrS,EAAK+R,SACJL,EAAKz+D,QACLi+D,EAAkBjM,IAAIyM,EAAKz+D,OAAO3sB,QACtC4B,EACI83E,EAAK+R,SAAmC,SAAxB/R,EAAKoS,gBACf,EAAIpB,EAAWsB,WAAWpqF,IAC1B,EAAI8oF,EAAW8B,YAAY5qF,IAElCA,CACX,CAzEmB6qF,CAAWpgF,EAAM8a,GAEpC,CArBAhQ,EAAQ/J,OAASA,EACjB+J,EAAA,QAAkB/J,EAqBlB,IAAIs+E,EAA+B,IAAI7gB,IAAI,CACvC,KACA,KACA,KACA,KACA,QACA,iBACA,gBACA,OACA,UAEA8gB,EAAkB,IAAI9gB,IAAI,CAAC,MAAO,qCC/JtC,IAAI4f,EAHJxyF,OAAOif,eAAeC,EAAS,aAAc,CAAE7W,OAAO,IACtD6W,EAAQ6zE,QAAU7zE,EAAQg0E,MAAQh0E,EAAQq0E,IAAMr0E,EAAQo0E,MAAQp0E,EAAQm0E,OAASn0E,EAAQ+zE,QAAU/zE,EAAQ8zE,UAAY9zE,EAAQo1E,KAAOp1E,EAAQ4sC,KAAO5sC,EAAQu1E,MAAQv1E,EAAQszE,iBAAc,EAG3L,SAAWA,GAEPA,EAAkB,KAAI,OAEtBA,EAAkB,KAAI,OAEtBA,EAAuB,UAAI,YAE3BA,EAAqB,QAAI,UAEzBA,EAAoB,OAAI,SAExBA,EAAmB,MAAI,QAEvBA,EAAiB,IAAI,MAErBA,EAAmB,MAAI,QAEvBA,EAAqB,QAAI,SAC5B,CAnBD,CAmBGA,EAActzE,EAAQszE,cAAgBtzE,EAAQszE,YAAc,CAAC,IAWhEtzE,EAAQu1E,MALR,SAAetB,GACX,OAAQA,EAAKhwF,OAASqvF,EAAYe,KAC9BJ,EAAKhwF,OAASqvF,EAAYa,QAC1BF,EAAKhwF,OAASqvF,EAAYc,KAClC,EAIAp0E,EAAQ4sC,KAAO0mC,EAAY1mC,KAE3B5sC,EAAQo1E,KAAO9B,EAAY8B,KAE3Bp1E,EAAQ8zE,UAAYR,EAAYQ,UAEhC9zE,EAAQ+zE,QAAUT,EAAYS,QAE9B/zE,EAAQm0E,OAASb,EAAYa,OAE7Bn0E,EAAQo0E,MAAQd,EAAYc,MAE5Bp0E,EAAQq0E,IAAMf,EAAYe,IAE1Br0E,EAAQg0E,MAAQV,EAAYU,MAE5Bh0E,EAAQ6zE,QAAUP,EAAYO,2CCrD9B,IAAIb,EAAmBpqF,MAAQA,KAAKoqF,kBAAqBlyF,OAAOikB,OAAS,SAAU1Z,EAAGs7B,EAAGqT,EAAGi5C,QAC7E7hF,IAAP6hF,IAAkBA,EAAKj5C,GAC3B,IAAIsoC,EAAOxhF,OAAOoyF,yBAAyBvsD,EAAGqT,GACzCsoC,KAAS,QAASA,GAAQ37C,EAAE1lB,WAAaqhE,EAAK/gE,UAAY+gE,EAAKhhE,gBAClEghE,EAAO,CAAEjhE,YAAY,EAAMsmE,IAAK,WAAa,OAAOhhD,EAAEqT,EAAI,IAE5Dl5C,OAAOif,eAAe1U,EAAG4nF,EAAI3Q,EAChC,EAAI,SAAUj3E,EAAGs7B,EAAGqT,EAAGi5C,QACT7hF,IAAP6hF,IAAkBA,EAAKj5C,GAC3B3uC,EAAE4nF,GAAMtsD,EAAEqT,EACb,GACGw7C,EAAgB5sF,MAAQA,KAAK4sF,cAAiB,SAAS7uD,EAAG3mB,GAC1D,IAAK,IAAInf,KAAK8lC,EAAa,YAAN9lC,GAAoBC,OAAOC,UAAUC,eAAeC,KAAK+e,EAASnf,IAAImyF,EAAgBhzE,EAAS2mB,EAAG9lC,EAC3H,EACAC,OAAOif,eAAeC,EAAS,aAAc,CAAE7W,OAAO,IACtD6W,EAAQy1E,gBAAa,EACrB,IAAIC,EAAmB,EAAQ,OAC3BC,EAAY,EAAQ,OACxBH,EAAa,EAAQ,OAAcx1E,GAEnC,IAAI41E,EAAc,CACdC,kBAAkB,EAClBC,gBAAgB,EAChBxB,SAAS,GAETmB,EAA4B,WAM5B,SAASA,EAAWtrE,EAAU6F,EAAS+lE,GAEnCntF,KAAKotF,IAAM,GAEXptF,KAAK+0C,KAAO,IAAIg4C,EAAUM,SAASrtF,KAAKotF,KAExCptF,KAAKstF,MAAO,EAEZttF,KAAKutF,SAAW,CAACvtF,KAAK+0C,MAEtB/0C,KAAKwtF,SAAW,KAEhBxtF,KAAKytF,OAAS,KAES,mBAAZrmE,IACP+lE,EAAY/lE,EACZA,EAAU4lE,GAEU,iBAAbzrE,IACP6F,EAAU7F,EACVA,OAAW/Y,GAEfxI,KAAKuhB,SAAWA,QAA2CA,EAAW,KACtEvhB,KAAKonB,QAAUA,QAAyCA,EAAU4lE,EAClEhtF,KAAKmtF,UAAYA,QAA6CA,EAAY,IAC9E,CAwGA,OAvGAN,EAAW10F,UAAUu1F,aAAe,SAAUD,GAC1CztF,KAAKytF,OAASA,CAClB,EAEAZ,EAAW10F,UAAUw1F,QAAU,WAC3B3tF,KAAKotF,IAAM,GACXptF,KAAK+0C,KAAO,IAAIg4C,EAAUM,SAASrtF,KAAKotF,KACxCptF,KAAKstF,MAAO,EACZttF,KAAKutF,SAAW,CAACvtF,KAAK+0C,MACtB/0C,KAAKwtF,SAAW,KAChBxtF,KAAKytF,OAAS,IAClB,EAEAZ,EAAW10F,UAAUy1F,MAAQ,WACrB5tF,KAAKstF,OAETttF,KAAKstF,MAAO,EACZttF,KAAKytF,OAAS,KACdztF,KAAK6tF,eAAe,MACxB,EACAhB,EAAW10F,UAAUg4E,QAAU,SAAUn/C,GACrChxB,KAAK6tF,eAAe78D,EACxB,EACA67D,EAAW10F,UAAU21F,WAAa,WAC9B9tF,KAAKwtF,SAAW,KAChB,IAAInC,EAAOrrF,KAAKutF,SAASQ,MACrB/tF,KAAKonB,QAAQ8lE,iBACb7B,EAAKrnB,SAAWhkE,KAAKytF,OAAOzpB,UAE5BhkE,KAAKmtF,WACLntF,KAAKmtF,UAAU9B,EACvB,EACAwB,EAAW10F,UAAU61F,UAAY,SAAU/tF,EAAM4rF,GAC7C,IAAIxwF,EAAO2E,KAAKonB,QAAQskE,QAAUoB,EAAiBpC,YAAYe,SAAMjjF,EACjE5Q,EAAU,IAAIm1F,EAAUkB,QAAQhuF,EAAM4rF,OAASrjF,EAAWnN,GAC9D2E,KAAKkuF,QAAQt2F,GACboI,KAAKutF,SAAS16E,KAAKjb,EACvB,EACAi1F,EAAW10F,UAAUg2F,OAAS,SAAUtsF,GACpC,IAAI2rF,EAAWxtF,KAAKwtF,SACpB,GAAIA,GAAYA,EAASnyF,OAASyxF,EAAiBpC,YAAY8B,KAC3DgB,EAAS3rF,MAAQA,EACb7B,KAAKonB,QAAQ8lE,iBACbM,EAASxpB,SAAWhkE,KAAKytF,OAAOzpB,cAGnC,CACD,IAAI13D,EAAO,IAAIygF,EAAUP,KAAK3qF,GAC9B7B,KAAKkuF,QAAQ5hF,GACbtM,KAAKwtF,SAAWlhF,CACpB,CACJ,EACAugF,EAAW10F,UAAUi2F,UAAY,SAAUvsF,GACvC,GAAI7B,KAAKwtF,UAAYxtF,KAAKwtF,SAASnyF,OAASyxF,EAAiBpC,YAAYS,QACrEnrF,KAAKwtF,SAAS3rF,MAAQA,MAD1B,CAIA,IAAIyK,EAAO,IAAIygF,EAAU5B,QAAQtpF,GACjC7B,KAAKkuF,QAAQ5hF,GACbtM,KAAKwtF,SAAWlhF,CAHhB,CAIJ,EACAugF,EAAW10F,UAAUk2F,aAAe,WAChCruF,KAAKwtF,SAAW,IACpB,EACAX,EAAW10F,UAAUm2F,aAAe,WAChC,IAAIj3F,EAAO,IAAI01F,EAAUP,KAAK,IAC1BlgF,EAAO,IAAIygF,EAAU3B,MAAM,CAAC/zF,IAChC2I,KAAKkuF,QAAQ5hF,GACbjV,EAAKu1B,OAAStgB,EACdtM,KAAKwtF,SAAWn2F,CACpB,EACAw1F,EAAW10F,UAAUo2F,WAAa,WAC9BvuF,KAAKwtF,SAAW,IACpB,EACAX,EAAW10F,UAAUq2F,wBAA0B,SAAUvuF,EAAM4B,GAC3D,IAAIyK,EAAO,IAAIygF,EAAU0B,sBAAsBxuF,EAAM4B,GACrD7B,KAAKkuF,QAAQ5hF,EACjB,EACAugF,EAAW10F,UAAU01F,eAAiB,SAAU78D,GAC5C,GAA6B,mBAAlBhxB,KAAKuhB,SACZvhB,KAAKuhB,SAASyP,EAAOhxB,KAAKotF,UAEzB,GAAIp8D,EACL,MAAMA,CAEd,EACA67D,EAAW10F,UAAU+1F,QAAU,SAAU5hF,GACrC,IAAIsgB,EAAS5sB,KAAKutF,SAASvtF,KAAKutF,SAAS90F,OAAS,GAC9Ci2F,EAAkB9hE,EAAO3kB,SAAS2kB,EAAO3kB,SAASxP,OAAS,GAC3DuH,KAAKonB,QAAQ6lE,mBACb3gF,EAAK6F,WAAanS,KAAKytF,OAAOt7E,YAE9BnS,KAAKonB,QAAQ8lE,iBACb5gF,EAAK03D,SAAWhkE,KAAKytF,OAAOzpB,UAEhCp3C,EAAO3kB,SAAS4K,KAAKvG,GACjBoiF,IACApiF,EAAKk/C,KAAOkjC,EACZA,EAAgBh/C,KAAOpjC,GAE3BA,EAAKsgB,OAASA,EACd5sB,KAAKwtF,SAAW,IACpB,EACOX,CACX,CAxI+B,GAyI/Bz1E,EAAQy1E,WAAaA,EACrBz1E,EAAA,QAAkBy1E,sCCnKlB,IACQ7P,EADJuB,EAAav+E,MAAQA,KAAKu+E,YACtBvB,EAAgB,SAAU3qD,EAAGjqB,GAI7B,OAHA40E,EAAgB9kF,OAAOkkB,gBAClB,CAAEjC,UAAW,cAAgBlR,OAAS,SAAUopB,EAAGjqB,GAAKiqB,EAAElY,UAAY/R,CAAG,GAC1E,SAAUiqB,EAAGjqB,GAAK,IAAK,IAAInQ,KAAKmQ,EAAOlQ,OAAOC,UAAUC,eAAeC,KAAK+P,EAAGnQ,KAAIo6B,EAAEp6B,GAAKmQ,EAAEnQ,GAAI,EAC7F+kF,EAAc3qD,EAAGjqB,EAC5B,EACO,SAAUiqB,EAAGjqB,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAI0R,UAAU,uBAAyBmO,OAAO7f,GAAK,iCAE7D,SAASo2E,IAAOx+E,KAAKH,YAAcwyB,CAAG,CADtC2qD,EAAc3qD,EAAGjqB,GAEjBiqB,EAAEl6B,UAAkB,OAANiQ,EAAalQ,OAAOikB,OAAO/T,IAAMo2E,EAAGrmF,UAAYiQ,EAAEjQ,UAAW,IAAIqmF,EACnF,GAEA2L,EAAYnqF,MAAQA,KAAKmqF,UAAa,WAStC,OARAA,EAAWjyF,OAAOc,QAAU,SAAShB,GACjC,IAAK,IAAIF,EAAGU,EAAI,EAAGkL,EAAI6E,UAAU9P,OAAQD,EAAIkL,EAAGlL,IAE5C,IAAK,IAAIP,KADTH,EAAIyQ,UAAU/P,GACON,OAAOC,UAAUC,eAAeC,KAAKP,EAAGG,KACzDD,EAAEC,GAAKH,EAAEG,IAEjB,OAAOD,CACX,EACOmyF,EAAS/gF,MAAMpJ,KAAMuI,UAChC,EACArQ,OAAOif,eAAeC,EAAS,aAAc,CAAE7W,OAAO,IACtD6W,EAAQu3E,UAAYv3E,EAAQw3E,YAAcx3E,EAAQy3E,WAAaz3E,EAAQ03E,YAAc13E,EAAQ23E,UAAY33E,EAAQ43E,OAAS53E,EAAQ63E,QAAU73E,EAAQu1E,MAAQv1E,EAAQ62E,QAAU72E,EAAQi2E,SAAWj2E,EAAQg0E,MAAQh0E,EAAQ83E,iBAAmB93E,EAAQq3E,sBAAwBr3E,EAAQ+zE,QAAU/zE,EAAQo1E,KAAOp1E,EAAQ+3E,SAAW/3E,EAAQg4E,UAAO,EAC/U,IAAItC,EAAmB,EAAQ,OAK3BsC,EAAsB,WACtB,SAASA,IAELpvF,KAAK4sB,OAAS,KAEd5sB,KAAKwrD,KAAO,KAEZxrD,KAAK0vC,KAAO,KAEZ1vC,KAAKmS,WAAa,KAElBnS,KAAKgkE,SAAW,IACpB,CAsDA,OArDA9rE,OAAOif,eAAei4E,EAAKj3F,UAAW,aAAc,CAMhD4mF,IAAK,WACD,OAAO/+E,KAAK4sB,MAChB,EACAiyD,IAAK,SAAUjyD,GACX5sB,KAAK4sB,OAASA,CAClB,EACAnU,YAAY,EACZC,cAAc,IAElBxgB,OAAOif,eAAei4E,EAAKj3F,UAAW,kBAAmB,CAKrD4mF,IAAK,WACD,OAAO/+E,KAAKwrD,IAChB,EACAqzB,IAAK,SAAUrzB,GACXxrD,KAAKwrD,KAAOA,CAChB,EACA/yC,YAAY,EACZC,cAAc,IAElBxgB,OAAOif,eAAei4E,EAAKj3F,UAAW,cAAe,CAKjD4mF,IAAK,WACD,OAAO/+E,KAAK0vC,IAChB,EACAmvC,IAAK,SAAUnvC,GACX1vC,KAAK0vC,KAAOA,CAChB,EACAj3B,YAAY,EACZC,cAAc,IAQlB02E,EAAKj3F,UAAUw2F,UAAY,SAAUU,GAEjC,YADkB,IAAdA,IAAwBA,GAAY,GACjCV,EAAU3uF,KAAMqvF,EAC3B,EACOD,CACX,CAnEyB,GAoEzBh4E,EAAQg4E,KAAOA,EAIf,IAAID,EAA0B,SAAU7N,GAKpC,SAAS6N,EAASttF,GACd,IAAIyI,EAAQg3E,EAAOjpF,KAAK2H,OAASA,KAEjC,OADAsK,EAAMzI,KAAOA,EACNyI,CACX,CAeA,OAvBAi0E,EAAU4Q,EAAU7N,GASpBppF,OAAOif,eAAeg4E,EAASh3F,UAAW,YAAa,CAKnD4mF,IAAK,WACD,OAAO/+E,KAAK6B,IAChB,EACAg9E,IAAK,SAAUh9E,GACX7B,KAAK6B,KAAOA,CAChB,EACA4W,YAAY,EACZC,cAAc,IAEXy2E,CACX,CAzB6B,CAyB3BC,GACFh4E,EAAQ+3E,SAAWA,EAInB,IAAI3C,EAAsB,SAAUlL,GAEhC,SAASkL,IACL,IAAIliF,EAAmB,OAAXg3E,GAAmBA,EAAOl4E,MAAMpJ,KAAMuI,YAAcvI,KAEhE,OADAsK,EAAMjP,KAAOyxF,EAAiBpC,YAAY8B,KACnCliF,CACX,CAQA,OAbAi0E,EAAUiO,EAAMlL,GAMhBppF,OAAOif,eAAeq1E,EAAKr0F,UAAW,WAAY,CAC9C4mF,IAAK,WACD,OAAO,CACX,EACAtmE,YAAY,EACZC,cAAc,IAEX8zE,CACX,CAfyB,CAevB2C,GACF/3E,EAAQo1E,KAAOA,EAIf,IAAIrB,EAAyB,SAAU7J,GAEnC,SAAS6J,IACL,IAAI7gF,EAAmB,OAAXg3E,GAAmBA,EAAOl4E,MAAMpJ,KAAMuI,YAAcvI,KAEhE,OADAsK,EAAMjP,KAAOyxF,EAAiBpC,YAAYS,QACnC7gF,CACX,CAQA,OAbAi0E,EAAU4M,EAAS7J,GAMnBppF,OAAOif,eAAeg0E,EAAQhzF,UAAW,WAAY,CACjD4mF,IAAK,WACD,OAAO,CACX,EACAtmE,YAAY,EACZC,cAAc,IAEXyyE,CACX,CAf4B,CAe1BgE,GACF/3E,EAAQ+zE,QAAUA,EAIlB,IAAIsD,EAAuC,SAAUnN,GAEjD,SAASmN,EAAsBxuF,EAAM4B,GACjC,IAAIyI,EAAQg3E,EAAOjpF,KAAK2H,KAAM6B,IAAS7B,KAGvC,OAFAsK,EAAMrK,KAAOA,EACbqK,EAAMjP,KAAOyxF,EAAiBpC,YAAYQ,UACnC5gF,CACX,CAQA,OAdAi0E,EAAUkQ,EAAuBnN,GAOjCppF,OAAOif,eAAes3E,EAAsBt2F,UAAW,WAAY,CAC/D4mF,IAAK,WACD,OAAO,CACX,EACAtmE,YAAY,EACZC,cAAc,IAEX+1E,CACX,CAhB0C,CAgBxCU,GACF/3E,EAAQq3E,sBAAwBA,EAIhC,IAAIS,EAAkC,SAAU5N,GAK5C,SAAS4N,EAAiBjnF,GACtB,IAAIqC,EAAQg3E,EAAOjpF,KAAK2H,OAASA,KAEjC,OADAsK,EAAMrC,SAAWA,EACVqC,CACX,CAmCA,OA3CAi0E,EAAU2Q,EAAkB5N,GAS5BppF,OAAOif,eAAe+3E,EAAiB/2F,UAAW,aAAc,CAG5D4mF,IAAK,WACD,IAAIpnF,EACJ,OAAmC,QAA3BA,EAAKqI,KAAKiI,SAAS,UAAuB,IAAPtQ,EAAgBA,EAAK,IACpE,EACA8gB,YAAY,EACZC,cAAc,IAElBxgB,OAAOif,eAAe+3E,EAAiB/2F,UAAW,YAAa,CAE3D4mF,IAAK,WACD,OAAO/+E,KAAKiI,SAASxP,OAAS,EACxBuH,KAAKiI,SAASjI,KAAKiI,SAASxP,OAAS,GACrC,IACV,EACAggB,YAAY,EACZC,cAAc,IAElBxgB,OAAOif,eAAe+3E,EAAiB/2F,UAAW,aAAc,CAK5D4mF,IAAK,WACD,OAAO/+E,KAAKiI,QAChB,EACA42E,IAAK,SAAU52E,GACXjI,KAAKiI,SAAWA,CACpB,EACAwQ,YAAY,EACZC,cAAc,IAEXw2E,CACX,CA7CqC,CA6CnCE,GACFh4E,EAAQ83E,iBAAmBA,EAC3B,IAAI9D,EAAuB,SAAU9J,GAEjC,SAAS8J,IACL,IAAI9gF,EAAmB,OAAXg3E,GAAmBA,EAAOl4E,MAAMpJ,KAAMuI,YAAcvI,KAEhE,OADAsK,EAAMjP,KAAOyxF,EAAiBpC,YAAYU,MACnC9gF,CACX,CAQA,OAbAi0E,EAAU6M,EAAO9J,GAMjBppF,OAAOif,eAAei0E,EAAMjzF,UAAW,WAAY,CAC/C4mF,IAAK,WACD,OAAO,CACX,EACAtmE,YAAY,EACZC,cAAc,IAEX0yE,CACX,CAf0B,CAexB8D,GACF93E,EAAQg0E,MAAQA,EAIhB,IAAIiC,EAA0B,SAAU/L,GAEpC,SAAS+L,IACL,IAAI/iF,EAAmB,OAAXg3E,GAAmBA,EAAOl4E,MAAMpJ,KAAMuI,YAAcvI,KAEhE,OADAsK,EAAMjP,KAAOyxF,EAAiBpC,YAAY1mC,KACnC15C,CACX,CAQA,OAbAi0E,EAAU8O,EAAU/L,GAMpBppF,OAAOif,eAAek2E,EAASl1F,UAAW,WAAY,CAClD4mF,IAAK,WACD,OAAO,CACX,EACAtmE,YAAY,EACZC,cAAc,IAEX20E,CACX,CAf6B,CAe3B6B,GACF93E,EAAQi2E,SAAWA,EAInB,IAAIY,EAAyB,SAAU3M,GAOnC,SAAS2M,EAAQhuF,EAAM4rF,EAAS5jF,EAAU5M,QACrB,IAAb4M,IAAuBA,EAAW,SACzB,IAAT5M,IAAmBA,EAAgB,WAAT4E,EACxB6sF,EAAiBpC,YAAYa,OACpB,UAATtrF,EACI6sF,EAAiBpC,YAAYc,MAC7BsB,EAAiBpC,YAAYe,KACvC,IAAInhF,EAAQg3E,EAAOjpF,KAAK2H,KAAMiI,IAAajI,KAI3C,OAHAsK,EAAMrK,KAAOA,EACbqK,EAAMuhF,QAAUA,EAChBvhF,EAAMjP,KAAOA,EACNiP,CACX,CAuCA,OAzDAi0E,EAAU0P,EAAS3M,GAmBnBppF,OAAOif,eAAe82E,EAAQ91F,UAAW,WAAY,CACjD4mF,IAAK,WACD,OAAO,CACX,EACAtmE,YAAY,EACZC,cAAc,IAElBxgB,OAAOif,eAAe82E,EAAQ91F,UAAW,UAAW,CAMhD4mF,IAAK,WACD,OAAO/+E,KAAKC,IAChB,EACA4+E,IAAK,SAAU5+E,GACXD,KAAKC,KAAOA,CAChB,EACAwY,YAAY,EACZC,cAAc,IAElBxgB,OAAOif,eAAe82E,EAAQ91F,UAAW,aAAc,CACnD4mF,IAAK,WACD,IAAIz0E,EAAQtK,KACZ,OAAO9H,OAAO8X,KAAKhQ,KAAK6rF,SAASjtF,KAAI,SAAUqB,GAC3C,IAAItI,EAAIw0F,EACR,MAAO,CACHlsF,KAAMA,EACNM,MAAO+J,EAAMuhF,QAAQ5rF,GACrBqvF,UAAkD,QAAtC33F,EAAK2S,EAAM,6BAA0C,IAAP3S,OAAgB,EAASA,EAAGsI,GACtFwpB,OAA4C,QAAnC0iE,EAAK7hF,EAAM,0BAAuC,IAAP6hF,OAAgB,EAASA,EAAGlsF,GAExF,GACJ,EACAwY,YAAY,EACZC,cAAc,IAEXu1E,CACX,CA3D4B,CA2D1BiB,GAMF,SAASvC,EAAMrgF,GACX,OAAO,EAAIwgF,EAAiBH,OAAOrgF,EACvC,CAMA,SAAS2iF,EAAQ3iF,GACb,OAAOA,EAAKjR,OAASyxF,EAAiBpC,YAAYU,KACtD,CAMA,SAAS4D,EAAO1iF,GACZ,OAAOA,EAAKjR,OAASyxF,EAAiBpC,YAAY8B,IACtD,CAMA,SAASuC,EAAUziF,GACf,OAAOA,EAAKjR,OAASyxF,EAAiBpC,YAAYS,OACtD,CAMA,SAAS2D,EAAYxiF,GACjB,OAAOA,EAAKjR,OAASyxF,EAAiBpC,YAAYQ,SACtD,CAMA,SAAS2D,EAAWviF,GAChB,OAAOA,EAAKjR,OAASyxF,EAAiBpC,YAAY1mC,IACtD,CAgBA,SAAS2qC,EAAUriF,EAAM+iF,GAErB,IAAI58C,EACJ,QAFkB,IAAd48C,IAAwBA,GAAY,GAEpCL,EAAO1iF,GACPmmC,EAAS,IAAI+5C,EAAKlgF,EAAKzK,WAEtB,GAAIktF,EAAUziF,GACfmmC,EAAS,IAAI04C,EAAQ7+E,EAAKzK,WAEzB,GAAI8qF,EAAMrgF,GAAO,CAClB,IAAIrE,EAAWonF,EAAYE,EAAcjjF,EAAKrE,UAAY,GACtDunF,EAAU,IAAIvB,EAAQ3hF,EAAKrM,KAAMkqF,EAAS,CAAC,EAAG79E,EAAKu/E,SAAU5jF,GACjEA,EAASpS,SAAQ,SAAUoxC,GAAS,OAAQA,EAAMra,OAAS4iE,CAAU,IAC/C,MAAlBljF,EAAKgjF,YACLE,EAAQF,UAAYhjF,EAAKgjF,WAEzBhjF,EAAK,wBACLkjF,EAAQ,sBAAwBrF,EAAS,CAAC,EAAG79E,EAAK,wBAElDA,EAAK,qBACLkjF,EAAQ,mBAAqBrF,EAAS,CAAC,EAAG79E,EAAK,qBAEnDmmC,EAAS+8C,CACb,MACK,GAAIP,EAAQ3iF,GAAO,CAChBrE,EAAWonF,EAAYE,EAAcjjF,EAAKrE,UAAY,GAA1D,IACIwnF,EAAU,IAAIrE,EAAMnjF,GACxBA,EAASpS,SAAQ,SAAUoxC,GAAS,OAAQA,EAAMra,OAAS6iE,CAAU,IACrEh9C,EAASg9C,CACb,MACK,GAAIZ,EAAWviF,GAAO,CACnBrE,EAAWonF,EAAYE,EAAcjjF,EAAKrE,UAAY,GAA1D,IACIynF,EAAU,IAAIrC,EAASplF,GAC3BA,EAASpS,SAAQ,SAAUoxC,GAAS,OAAQA,EAAMra,OAAS8iE,CAAU,IACjEpjF,EAAK,YACLojF,EAAQ,UAAYpjF,EAAK,WAE7BmmC,EAASi9C,CACb,KACK,KAAIZ,EAAYxiF,GAUjB,MAAM,IAAI1M,MAAM,wBAAwB4K,OAAO8B,EAAKjR,OATpD,IAAIs0F,EAAc,IAAIlB,EAAsBniF,EAAKrM,KAAMqM,EAAKzK,MACtC,MAAlByK,EAAK,YACLqjF,EAAY,UAAYrjF,EAAK,UAC7BqjF,EAAY,cAAgBrjF,EAAK,cACjCqjF,EAAY,cAAgBrjF,EAAK,eAErCmmC,EAASk9C,CAIb,CAMA,OALAl9C,EAAOtgC,WAAa7F,EAAK6F,WACzBsgC,EAAOuxB,SAAW13D,EAAK03D,SACQ,MAA3B13D,EAAKsjF,qBACLn9C,EAAOm9C,mBAAqBtjF,EAAKsjF,oBAE9Bn9C,CACX,CAEA,SAAS88C,EAAcM,GAEnB,IADA,IAAI5nF,EAAW4nF,EAAOjxF,KAAI,SAAUqoC,GAAS,OAAO0nD,EAAU1nD,GAAO,EAAO,IACnEzuC,EAAI,EAAGA,EAAIyP,EAASxP,OAAQD,IACjCyP,EAASzP,GAAGgzD,KAAOvjD,EAASzP,EAAI,GAChCyP,EAASzP,EAAI,GAAGk3C,KAAOznC,EAASzP,GAEpC,OAAOyP,CACX,CAjIAmP,EAAQ62E,QAAUA,EAQlB72E,EAAQu1E,MAAQA,EAQhBv1E,EAAQ63E,QAAUA,EAQlB73E,EAAQ43E,OAASA,EAQjB53E,EAAQ23E,UAAYA,EAQpB33E,EAAQ03E,YAAcA,EAQtB13E,EAAQy3E,WAAaA,EAQrBz3E,EAAQw3E,YAHR,SAAqBtiF,GACjB,OAAOpU,OAAOC,UAAUC,eAAeC,KAAKiU,EAAM,WACtD,EAkEA8K,EAAQu3E,UAAYA,gCChdpBz2F,OAAOif,eAAeC,EAAS,aAAc,CAAE7W,OAAO,IACtD6W,EAAQ04E,aAAU,EAClB,IAAIC,EAAiB,EAAQ,OACzBC,EAAc,EAAQ,OAgB1B54E,EAAQ04E,QARR,SAAiBtyC,GACb,IAAIyyC,EAAWC,EAAcC,EAAa3yC,GAC1C,OAAQyyC,EAEgB,SAAlBA,EAAShwF,KAWnB,SAAqBgwF,GACjB,IAAIt4F,EACAk4F,EAASI,EAAShoF,SAClBmoF,EAAO,CACP/0F,KAAM,OACNiX,OAAO,EAAI09E,EAAYK,sBAAsB,QAASR,GAAQjxF,KAAI,SAAUgN,GACxE,IAAIjU,EACAsQ,EAAW2D,EAAK3D,SAChBqoF,EAAQ,CAAEC,MAAOC,EAAiBvoF,IACtCwoF,EAAiBH,EAAO,KAAM,KAAMroF,GACpCwoF,EAAiBH,EAAO,QAAS,QAASroF,GAC1C,IAAIqqD,EAAkD,QAA1C36D,EAAKu4F,EAAc,OAAQjoF,UAA8B,IAAPtQ,OAAgB,EAASA,EAAGk0F,QAAc,KACpGv5B,IACAg+B,EAAMI,KAAOp+B,GAEjB,IAAIsiB,EAAc+b,EAAM,UAAW1oF,IAAa0oF,EAAM,UAAW1oF,GAC7D2sE,IACA0b,EAAM1b,YAAcA,GAExB,IAAIgc,EAAUD,EAAM,UAAW1oF,GAI/B,OAHI2oF,IACAN,EAAMM,QAAU,IAAIngE,KAAKmgE,IAEtBN,CACX,KAEJG,EAAiBL,EAAM,KAAM,KAAMP,GACnCY,EAAiBL,EAAM,QAAS,QAASP,GACzC,IAAIv9B,EAAgD,QAAxC36D,EAAKu4F,EAAc,OAAQL,UAA4B,IAAPl4F,OAAgB,EAASA,EAAGk0F,QAAc,KAClGv5B,IACA89B,EAAKM,KAAOp+B,GAEhBm+B,EAAiBL,EAAM,cAAe,WAAYP,GAClD,IAAIgB,EAAUF,EAAM,UAAWd,GAK/B,OAJIgB,IACAT,EAAKS,QAAU,IAAIpgE,KAAKogE,IAE5BJ,EAAiBL,EAAM,SAAU,QAASP,GAAQ,GAC3CO,CACX,CAjDcU,CAAYb,GAwD1B,SAAoBA,GAChB,IAAIt4F,EAAIw0F,EACJ0D,EAAwH,QAA9G1D,EAA4D,QAAtDx0F,EAAKu4F,EAAc,UAAWD,EAAShoF,iBAA8B,IAAPtQ,OAAgB,EAASA,EAAGsQ,gBAA6B,IAAPkkF,EAAgBA,EAAK,GACrJiE,EAAO,CACP/0F,KAAM40F,EAAShwF,KAAKy/B,OAAO,EAAG,GAC9B2G,GAAI,GACJ/zB,OAAO,EAAI09E,EAAYK,sBAAsB,OAAQJ,EAAShoF,UAAUrJ,KAAI,SAAUgN,GAClF,IAAI3D,EAAW2D,EAAK3D,SAChBqoF,EAAQ,CAAEC,MAAOC,EAAiBvoF,IACtCwoF,EAAiBH,EAAO,KAAM,OAAQroF,GACtCwoF,EAAiBH,EAAO,QAAS,QAASroF,GAC1CwoF,EAAiBH,EAAO,OAAQ,OAAQroF,GACxCwoF,EAAiBH,EAAO,cAAe,cAAeroF,GACtD,IAAI2oF,EAAUD,EAAM,UAAW1oF,IAAa0oF,EAAM,UAAW1oF,GAG7D,OAFI2oF,IACAN,EAAMM,QAAU,IAAIngE,KAAKmgE,IACtBN,CACX,KAEJG,EAAiBL,EAAM,QAAS,QAASP,GACzCY,EAAiBL,EAAM,OAAQ,OAAQP,GACvCY,EAAiBL,EAAM,cAAe,cAAeP,GACrD,IAAIgB,EAAUF,EAAM,gBAAiBd,GAKrC,OAJIgB,IACAT,EAAKS,QAAU,IAAIpgE,KAAKogE,IAE5BJ,EAAiBL,EAAM,SAAU,iBAAkBP,GAAQ,GACpDO,CACX,CAnFcW,CAAWd,GAHf,IAIV,EAmFA,IAAIe,EAAoB,CAAC,MAAO,OAAQ,QACpCC,EAAiB,CACjB,WACA,UACA,YACA,eACA,WACA,WACA,SACA,SAQJ,SAAST,EAAiBU,GACtB,OAAO,EAAIlB,EAAYK,sBAAsB,gBAAiBa,GAAOtyF,KAAI,SAAUysF,GAM/E,IALA,IAAIQ,EAAUR,EAAKQ,QACf0E,EAAQ,CACRY,OAAQtF,EAAgB,OACxB9vF,YAAa8vF,EAAmB,WAE3B7nD,EAAK,EAAGotD,EAAsBJ,EAAmBhtD,EAAKotD,EAAoB34F,OAAQurC,IAEnF6nD,EADAwF,EAASD,EAAoBptD,MAE7BusD,EAAMc,GAAUxF,EAAQwF,IAGhC,IAAK,IAAI15F,EAAK,EAAG25F,EAAmBL,EAAgBt5F,EAAK25F,EAAiB74F,OAAQd,IAAM,CACpF,IAAI05F,EACAxF,EADAwF,EAASC,EAAiB35F,MAE1B44F,EAAMc,GAAUxtF,SAASgoF,EAAQwF,GAAS,IAElD,CAIA,OAHIxF,EAAoB,aACpB0E,EAAMgB,WAAa1F,EAAoB,YAEpC0E,CACX,GACJ,CAQA,SAASL,EAAcltE,EAAS1W,GAC5B,OAAO,EAAI0jF,EAAYK,sBAAsBrtE,EAAS1W,GAAM,EAAM,GAAG,EACzE,CASA,SAASqkF,EAAM3tE,EAASkuE,EAAOM,GAE3B,YADgB,IAAZA,IAAsBA,GAAU,IAC7B,EAAIzB,EAAe56B,cAAa,EAAI66B,EAAYK,sBAAsBrtE,EAASkuE,EAAOM,EAAS,IAAI3nE,MAC9G,CAUA,SAAS4mE,EAAiBr4E,EAAKwmC,EAAM57B,EAASkuE,EAAOM,QACjC,IAAZA,IAAsBA,GAAU,GACpC,IAAI9mE,EAAMimE,EAAM3tE,EAASkuE,EAAOM,GAC5B9mE,IACAtS,EAAIwmC,GAAQl0B,EACpB,CAOA,SAASylE,EAAY5vF,GACjB,MAAiB,QAAVA,GAA6B,SAAVA,GAA8B,YAAVA,CAClD,+BC5LArI,OAAOif,eAAeC,EAAS,aAAc,CAAE7W,OAAO,IACtD6W,EAAQq6E,WAAar6E,EAAQs6E,wBAA0Bt6E,EAAQu6E,iBAAmBv6E,EAAQw6E,mBAAgB,EAC1G,IAwCID,EAxCAE,EAAe,EAAQ,MA0E3B,SAASH,EAAwBI,EAAOC,GACpC,IAAIC,EAAW,GACXC,EAAW,GACf,GAAIH,IAAUC,EACV,OAAO,EAGX,IADA,IAAI7mF,GAAU,EAAI2mF,EAAajD,aAAakD,GAASA,EAAQA,EAAMllE,OAC5D1hB,GACH8mF,EAASxe,QAAQtoE,GACjBA,EAAUA,EAAQ0hB,OAGtB,IADA1hB,GAAU,EAAI2mF,EAAajD,aAAamD,GAASA,EAAQA,EAAMnlE,OACxD1hB,GACH+mF,EAASze,QAAQtoE,GACjBA,EAAUA,EAAQ0hB,OAItB,IAFA,IAAIslE,EAASxxF,KAAKF,IAAIwxF,EAASv5F,OAAQw5F,EAASx5F,QAC5CijD,EAAM,EACHA,EAAMw2C,GAAUF,EAASt2C,KAASu2C,EAASv2C,IAC9CA,IAEJ,GAAY,IAARA,EACA,OAAOi2C,EAAiBQ,aAE5B,IAAIC,EAAeJ,EAASt2C,EAAM,GAC9B22C,EAAWD,EAAanqF,SACxBqqF,EAAWN,EAASt2C,GACpB62C,EAAWN,EAASv2C,GACxB,OAAI22C,EAAS/5F,QAAQg6F,GAAYD,EAAS/5F,QAAQi6F,GAC1CH,IAAiBL,EACVJ,EAAiBa,UAAYb,EAAiBc,aAElDd,EAAiBa,UAExBJ,IAAiBN,EACVH,EAAiBe,UAAYf,EAAiBgB,SAElDhB,EAAiBe,SAC5B,CA7EAt7E,EAAQw6E,cA1BR,SAAuBhjD,GAMnB,IALA,IAAI8M,EAAM9M,EAAMn2C,SAKPijD,GAAO,GAAG,CACf,IAAIpvC,EAAOsiC,EAAM8M,GAMjB,GAAIA,EAAM,GAAK9M,EAAMgkD,YAAYtmF,EAAMovC,EAAM,IAAM,EAC/C9M,EAAMsT,OAAOxG,EAAK,QAGtB,IAAK,IAAIm3C,EAAWvmF,EAAKsgB,OAAQimE,EAAUA,EAAWA,EAASjmE,OAC3D,GAAIgiB,EAAM/1C,SAASg6F,GAAW,CAC1BjkD,EAAMsT,OAAOxG,EAAK,GAClB,KACJ,CAER,CACA,OAAO9M,CACX,EAOA,SAAW+iD,GACPA,EAAiBA,EAA+B,aAAI,GAAK,eACzDA,EAAiBA,EAA4B,UAAI,GAAK,YACtDA,EAAiBA,EAA4B,UAAI,GAAK,YACtDA,EAAiBA,EAA2B,SAAI,GAAK,WACrDA,EAAiBA,EAA+B,aAAI,IAAM,cAC7D,CAND,CAMGA,EAAmBv6E,EAAQu6E,mBAAqBv6E,EAAQu6E,iBAAmB,CAAC,IAkE/Ev6E,EAAQs6E,wBAA0BA,EAwBlCt6E,EAAQq6E,WAdR,SAAoB7iD,GAYhB,OAXAA,EAAQA,EAAMhlB,QAAO,SAAUtd,EAAM9T,EAAGmxB,GAAO,OAAQA,EAAI9wB,SAASyT,EAAM9T,EAAI,EAAI,KAC5EikD,MAAK,SAAUt0C,EAAGC,GACpB,IAAI0qF,EAAWpB,EAAwBvpF,EAAGC,GAC1C,OAAI0qF,EAAWnB,EAAiBe,WACpB,EAEHI,EAAWnB,EAAiBa,UAC1B,EAEJ,CACX,IACO5jD,CACX,sCC1IA,IAAIw7C,EAAmBpqF,MAAQA,KAAKoqF,kBAAqBlyF,OAAOikB,OAAS,SAAU1Z,EAAGs7B,EAAGqT,EAAGi5C,QAC7E7hF,IAAP6hF,IAAkBA,EAAKj5C,GAC3B,IAAIsoC,EAAOxhF,OAAOoyF,yBAAyBvsD,EAAGqT,GACzCsoC,KAAS,QAASA,GAAQ37C,EAAE1lB,WAAaqhE,EAAK/gE,UAAY+gE,EAAKhhE,gBAClEghE,EAAO,CAAEjhE,YAAY,EAAMsmE,IAAK,WAAa,OAAOhhD,EAAEqT,EAAI,IAE5Dl5C,OAAOif,eAAe1U,EAAG4nF,EAAI3Q,EAChC,EAAI,SAAUj3E,EAAGs7B,EAAGqT,EAAGi5C,QACT7hF,IAAP6hF,IAAkBA,EAAKj5C,GAC3B3uC,EAAE4nF,GAAMtsD,EAAEqT,EACb,GACGw7C,EAAgB5sF,MAAQA,KAAK4sF,cAAiB,SAAS7uD,EAAG3mB,GAC1D,IAAK,IAAInf,KAAK8lC,EAAa,YAAN9lC,GAAoBC,OAAOC,UAAUC,eAAeC,KAAK+e,EAASnf,IAAImyF,EAAgBhzE,EAAS2mB,EAAG9lC,EAC3H,EACAC,OAAOif,eAAeC,EAAS,aAAc,CAAE7W,OAAO,IACtD6W,EAAQw3E,YAAcx3E,EAAQy3E,WAAaz3E,EAAQ23E,UAAY33E,EAAQ43E,OAAS53E,EAAQ63E,QAAU73E,EAAQu1E,WAAQ,EAClHC,EAAa,EAAQ,OAAmBx1E,GACxCw1E,EAAa,EAAQ,OAAmBx1E,GACxCw1E,EAAa,EAAQ,OAAsBx1E,GAC3Cw1E,EAAa,EAAQ,OAAkBx1E,GACvCw1E,EAAa,EAAQ,OAAgBx1E,GACrCw1E,EAAa,EAAQ,MAAiBx1E,GACtCw1E,EAAa,EAAQ,OAAex1E,GAEpC,IAAIy6E,EAAe,EAAQ,MAC3B35F,OAAOif,eAAeC,EAAS,QAAS,CAAEqB,YAAY,EAAMsmE,IAAK,WAAc,OAAO8S,EAAalF,KAAO,IAC1Gz0F,OAAOif,eAAeC,EAAS,UAAW,CAAEqB,YAAY,EAAMsmE,IAAK,WAAc,OAAO8S,EAAa5C,OAAS,IAC9G/2F,OAAOif,eAAeC,EAAS,SAAU,CAAEqB,YAAY,EAAMsmE,IAAK,WAAc,OAAO8S,EAAa7C,MAAQ,IAC5G92F,OAAOif,eAAeC,EAAS,YAAa,CAAEqB,YAAY,EAAMsmE,IAAK,WAAc,OAAO8S,EAAa9C,SAAW,IAClH72F,OAAOif,eAAeC,EAAS,aAAc,CAAEqB,YAAY,EAAMsmE,IAAK,WAAc,OAAO8S,EAAahD,UAAY,IACpH32F,OAAOif,eAAeC,EAAS,cAAe,CAAEqB,YAAY,EAAMsmE,IAAK,WAAc,OAAO8S,EAAajD,WAAa,kCC9BtH12F,OAAOif,eAAeC,EAAS,aAAc,CAAE7W,OAAO,IACtD6W,EAAQ27E,qBAAuB37E,EAAQi5E,qBAAuBj5E,EAAQ47E,eAAiB57E,EAAQ67E,YAAc77E,EAAQ87E,iBAAc,EACnI,IAAIrB,EAAe,EAAQ,MACvBsB,EAAgB,EAAQ,OAIxBC,EAAS,CACTC,SAAU,SAAUpzF,GAChB,MAAoB,mBAATA,EACA,SAAUorF,GAAQ,OAAO,EAAIwG,EAAalF,OAAOtB,IAASprF,EAAKorF,EAAKprF,KAAO,EAEpE,MAATA,EACE4xF,EAAalF,MAEjB,SAAUtB,GAAQ,OAAO,EAAIwG,EAAalF,OAAOtB,IAASA,EAAKprF,OAASA,CAAM,CACzF,EACAqzF,SAAU,SAAUj4F,GAChB,MAAoB,mBAATA,EACA,SAAUgwF,GAAQ,OAAOhwF,EAAKgwF,EAAKhwF,KAAO,EAE9C,SAAUgwF,GAAQ,OAAOA,EAAKhwF,OAASA,CAAM,CACxD,EACAk4F,aAAc,SAAU1xF,GACpB,MAAoB,mBAATA,EACA,SAAUwpF,GAAQ,OAAO,EAAIwG,EAAa7C,QAAQ3D,IAASxpF,EAAKwpF,EAAKxpF,KAAO,EAEhF,SAAUwpF,GAAQ,OAAO,EAAIwG,EAAa7C,QAAQ3D,IAASA,EAAKxpF,OAASA,CAAM,CAC1F,GAWJ,SAAS2xF,EAAenC,EAAQ9wF,GAC5B,MAAqB,mBAAVA,EACA,SAAU8qF,GAAQ,OAAO,EAAIwG,EAAalF,OAAOtB,IAAS9qF,EAAM8qF,EAAKQ,QAAQwF,GAAU,EAE3F,SAAUhG,GAAQ,OAAO,EAAIwG,EAAalF,OAAOtB,IAASA,EAAKQ,QAAQwF,KAAY9wF,CAAO,CACrG,CAUA,SAASkzF,EAAatrF,EAAGC,GACrB,OAAO,SAAUijF,GAAQ,OAAOljF,EAAEkjF,IAASjjF,EAAEijF,EAAO,CACxD,CASA,SAASqI,EAAYtsE,GACjB,IAAIizB,EAAQniD,OAAO8X,KAAKoX,GAASxoB,KAAI,SAAU8D,GAC3C,IAAInC,EAAQ6mB,EAAQ1kB,GACpB,OAAOxK,OAAOC,UAAUC,eAAeC,KAAK+6F,EAAQ1wF,GAC9C0wF,EAAO1wF,GAAKnC,GACZizF,EAAe9wF,EAAKnC,EAC9B,IACA,OAAwB,IAAjB85C,EAAM5hD,OAAe,KAAO4hD,EAAM73C,OAAOixF,EACpD,CAaAr8E,EAAQ87E,YAJR,SAAqB9rE,EAAS9a,GAC1B,IAAI+e,EAAOqoE,EAAYtsE,GACvB,OAAOiE,GAAOA,EAAK/e,EACvB,EAiBA8K,EAAQ67E,YALR,SAAqB7rE,EAASwnB,EAAO4iD,EAASmC,QAC5B,IAAVA,IAAoBA,EAAQnL,KAChC,IAAIn9D,EAAOqoE,EAAYtsE,GACvB,OAAOiE,GAAO,EAAI8nE,EAAcvpE,QAAQyB,EAAMujB,EAAO4iD,EAASmC,GAAS,EAC3E,EAiBAv8E,EAAQ47E,eANR,SAAwB3sD,EAAIuI,EAAO4iD,GAI/B,YAHgB,IAAZA,IAAsBA,GAAU,GAC/BvoF,MAAMqe,QAAQsnB,KACfA,EAAQ,CAACA,KACN,EAAIukD,EAAcS,SAASJ,EAAe,KAAMntD,GAAKuI,EAAO4iD,EACvE,EAiBAp6E,EAAQi5E,qBALR,SAA8BrtE,EAAS4rB,EAAO4iD,EAASmC,GAGnD,YAFgB,IAAZnC,IAAsBA,GAAU,QACtB,IAAVmC,IAAoBA,EAAQnL,MACzB,EAAI2K,EAAcvpE,QAAQwpE,EAAiB,SAAEpwE,GAAU4rB,EAAO4iD,EAASmC,EAClF,EAiBAv8E,EAAQ27E,qBALR,SAA8B13F,EAAMuzC,EAAO4iD,EAASmC,GAGhD,YAFgB,IAAZnC,IAAsBA,GAAU,QACtB,IAAVmC,IAAoBA,EAAQnL,MACzB,EAAI2K,EAAcvpE,QAAQwpE,EAAiB,SAAE/3F,GAAOuzC,EAAO4iD,EAASmC,EAC/E,8BC7IA,SAASE,EAAcxI,GAKnB,GAJIA,EAAK7/B,OACL6/B,EAAK7/B,KAAK9b,KAAO27C,EAAK37C,MACtB27C,EAAK37C,OACL27C,EAAK37C,KAAK8b,KAAO6/B,EAAK7/B,MACtB6/B,EAAKz+D,OAAQ,CACb,IAAIijE,EAASxE,EAAKz+D,OAAO3kB,SACrB6rF,EAAcjE,EAAO+C,YAAYvH,GACjCyI,GAAe,GACfjE,EAAO3tC,OAAO4xC,EAAa,EAEnC,CACAzI,EAAK37C,KAAO,KACZ27C,EAAK7/B,KAAO,KACZ6/B,EAAKz+D,OAAS,IAClB,CAvBA10B,OAAOif,eAAeC,EAAS,aAAc,CAAE7W,OAAO,IACtD6W,EAAQ28E,QAAU38E,EAAQ48E,aAAe58E,EAAQ68E,OAAS78E,EAAQyO,YAAczO,EAAQ88E,eAAiB98E,EAAQy8E,mBAAgB,EAuBjIz8E,EAAQy8E,cAAgBA,EAwBxBz8E,EAAQ88E,eAhBR,SAAwB7I,EAAMp3C,GAC1B,IAAIuX,EAAQvX,EAAYuX,KAAO6/B,EAAK7/B,KAChCA,IACAA,EAAK9b,KAAOuE,GAEhB,IAAIvE,EAAQuE,EAAYvE,KAAO27C,EAAK37C,KAChCA,IACAA,EAAK8b,KAAOvX,GAEhB,IAAIrnB,EAAUqnB,EAAYrnB,OAASy+D,EAAKz+D,OACxC,GAAIA,EAAQ,CACR,IAAIijE,EAASjjE,EAAO3kB,SACpB4nF,EAAOA,EAAO+C,YAAYvH,IAASp3C,EACnCo3C,EAAKz+D,OAAS,IAClB,CACJ,EAsBAxV,EAAQyO,YAbR,SAAqB+G,EAAQqa,GAIzB,GAHA4sD,EAAc5sD,GACdA,EAAMyI,KAAO,KACbzI,EAAMra,OAASA,EACXA,EAAO3kB,SAAS4K,KAAKo0B,GAAS,EAAG,CACjC,IAAIktD,EAAUvnE,EAAO3kB,SAAS2kB,EAAO3kB,SAASxP,OAAS,GACvD07F,EAAQzkD,KAAOzI,EACfA,EAAMukB,KAAO2oC,CACjB,MAEIltD,EAAMukB,KAAO,IAErB,EA4BAp0C,EAAQ68E,OAnBR,SAAgB5I,EAAM37C,GAClBmkD,EAAcnkD,GACd,IAAI9iB,EAASy+D,EAAKz+D,OACdwnE,EAAW/I,EAAK37C,KAKpB,GAJAA,EAAKA,KAAO0kD,EACZ1kD,EAAK8b,KAAO6/B,EACZA,EAAK37C,KAAOA,EACZA,EAAK9iB,OAASA,EACVwnE,GAEA,GADAA,EAAS5oC,KAAO9b,EACZ9iB,EAAQ,CACR,IAAIijE,EAASjjE,EAAO3kB,SACpB4nF,EAAO3tC,OAAO2tC,EAAO+C,YAAYwB,GAAW,EAAG1kD,EACnD,OAEK9iB,GACLA,EAAO3kB,SAAS4K,KAAK68B,EAE7B,EAsBAt4B,EAAQ48E,aAbR,SAAsBpnE,EAAQqa,GAI1B,GAHA4sD,EAAc5sD,GACdA,EAAMra,OAASA,EACfqa,EAAMukB,KAAO,KAC0B,IAAnC5+B,EAAO3kB,SAASurE,QAAQvsC,GAAc,CACtC,IAAIktD,EAAUvnE,EAAO3kB,SAAS,GAC9BksF,EAAQ3oC,KAAOvkB,EACfA,EAAMyI,KAAOykD,CACjB,MAEIltD,EAAMyI,KAAO,IAErB,EAwBAt4B,EAAQ28E,QAfR,SAAiB1I,EAAM7/B,GACnBqoC,EAAcroC,GACd,IAAI5+B,EAASy+D,EAAKz+D,OAClB,GAAIA,EAAQ,CACR,IAAIijE,EAASjjE,EAAO3kB,SACpB4nF,EAAO3tC,OAAO2tC,EAAOv3F,QAAQ+yF,GAAO,EAAG7/B,EAC3C,CACI6/B,EAAK7/B,OACL6/B,EAAK7/B,KAAK9b,KAAO8b,GAErBA,EAAK5+B,OAASA,EACd4+B,EAAKA,KAAO6/B,EAAK7/B,KACjBA,EAAK9b,KAAO27C,EACZA,EAAK7/B,KAAOA,CAChB,gCC3IAtzD,OAAOif,eAAeC,EAAS,aAAc,CAAE7W,OAAO,IACtD6W,EAAQi9E,QAAUj9E,EAAQk9E,UAAYl9E,EAAQw8E,QAAUx8E,EAAQm9E,aAAen9E,EAAQo9E,KAAOp9E,EAAQwS,YAAS,EAC/G,IAAIioE,EAAe,EAAQ,MA2B3B,SAAS2C,EAAKnpE,EAAMujB,EAAO4iD,EAASmC,GAMhC,IALA,IAAIlhD,EAAS,GAETgiD,EAAY,CAAC7lD,GAEb8lD,EAAa,CAAC,KAGd,GAAIA,EAAW,IAAMD,EAAU,GAAGh8F,OAAlC,CAEI,GAA0B,IAAtBi8F,EAAWj8F,OACX,OAAOg6C,EAGXgiD,EAAUryB,QACVsyB,EAAWtyB,OAGf,KAVA,CAWA,IAAIipB,EAAOoJ,EAAU,GAAGC,EAAW,MACnC,GAAIrpE,EAAKggE,KACL54C,EAAO5/B,KAAKw4E,KACNsI,GAAS,GACX,OAAOlhD,EAEX++C,IAAW,EAAIK,EAAajD,aAAavD,IAASA,EAAKpjF,SAASxP,OAAS,IAKzEi8F,EAAWlhB,QAAQ,GACnBihB,EAAUjhB,QAAQ6X,EAAKpjF,UAb3B,CAgBR,CA7CAmP,EAAQwS,OALR,SAAgByB,EAAM/e,EAAMklF,EAASmC,GAGjC,YAFgB,IAAZnC,IAAsBA,GAAU,QACtB,IAAVmC,IAAoBA,EAAQnL,KACzBgM,EAAKnpE,EAAMpiB,MAAMqe,QAAQhb,GAAQA,EAAO,CAACA,GAAOklF,EAASmC,EACpE,EA+CAv8E,EAAQo9E,KAAOA,EAafp9E,EAAQm9E,aAHR,SAAsBlpE,EAAMujB,GACxB,OAAOA,EAAM4lD,KAAKnpE,EACtB,EA4BAjU,EAAQw8E,QAjBR,SAASA,EAAQvoE,EAAMujB,EAAO4iD,QACV,IAAZA,IAAsBA,GAAU,GAEpC,IADA,IAAInG,EAAO,KACF7yF,EAAI,EAAGA,EAAIo2C,EAAMn2C,SAAW4yF,EAAM7yF,IAAK,CAC5C,IAAI8T,EAAOsiC,EAAMp2C,IACZ,EAAIq5F,EAAalF,OAAOrgF,KAGpB+e,EAAK/e,GACV++E,EAAO/+E,EAEFklF,GAAWllF,EAAKrE,SAASxP,OAAS,IACvC4yF,EAAOuI,EAAQvoE,EAAM/e,EAAKrE,UAAU,IAE5C,CACA,OAAOojF,CACX,EAgBAj0E,EAAQk9E,UANR,SAASA,EAAUjpE,EAAMujB,GACrB,OAAOA,EAAMlmB,MAAK,SAAU2jD,GACxB,OAAO,EAAIwlB,EAAalF,OAAOtgB,KAC1BhhD,EAAKghD,IAAYioB,EAAUjpE,EAAMghD,EAAQpkE,UAClD,GACJ,EAsCAmP,EAAQi9E,QA1BR,SAAiBhpE,EAAMujB,GAInB,IAHA,IAAI6D,EAAS,GACTgiD,EAAY,CAAC7lD,GACb8lD,EAAa,CAAC,KAEd,GAAIA,EAAW,IAAMD,EAAU,GAAGh8F,OAAlC,CACI,GAAyB,IAArBg8F,EAAUh8F,OACV,OAAOg6C,EAGXgiD,EAAUryB,QACVsyB,EAAWtyB,OAGf,KATA,CAUA,IAAIipB,EAAOoJ,EAAU,GAAGC,EAAW,OAC9B,EAAI7C,EAAalF,OAAOtB,KAEzBhgE,EAAKggE,IACL54C,EAAO5/B,KAAKw4E,GACZA,EAAKpjF,SAASxP,OAAS,IACvBi8F,EAAWlhB,QAAQ,GACnBihB,EAAUjhB,QAAQ6X,EAAKpjF,WAR3B,CAWR,sCC3JA,IAAI0sF,EAAmB30F,MAAQA,KAAK20F,iBAAoB,SAAUlK,GAC9D,OAAQA,GAAOA,EAAIpyE,WAAcoyE,EAAM,CAAE,QAAWA,EACxD,EACAvyF,OAAOif,eAAeC,EAAS,aAAc,CAAE7W,OAAO,IACtD6W,EAAQ89C,UAAY99C,EAAQ+9C,YAAc/9C,EAAQw9E,QAAUx9E,EAAQy9E,aAAez9E,EAAQ09E,kBAAe,EAC1G,IAAIjD,EAAe,EAAQ,MACvBkD,EAAmBJ,EAAgB,EAAQ,OAC3C7H,EAAmB,EAAQ,OAQ/B,SAASgI,EAAaxoF,EAAM8a,GACxB,OAAO,EAAI2tE,EAAiBz4F,SAASgQ,EAAM8a,EAC/C,CACAhQ,EAAQ09E,aAAeA,EAavB19E,EAAQy9E,aALR,SAAsBvoF,EAAM8a,GACxB,OAAO,EAAIyqE,EAAajD,aAAatiF,GAC/BA,EAAKrE,SAASrJ,KAAI,SAAU0N,GAAQ,OAAOwoF,EAAaxoF,EAAM8a,EAAU,IAAGtuB,KAAK,IAChF,EACV,EAqBAse,EAAQw9E,QAXR,SAASA,EAAQtoF,GACb,OAAIrD,MAAMqe,QAAQhb,GACPA,EAAK1N,IAAIg2F,GAAS97F,KAAK,KAC9B,EAAI+4F,EAAalF,OAAOrgF,GACH,OAAdA,EAAKrM,KAAgB,KAAO20F,EAAQtoF,EAAKrE,WAChD,EAAI4pF,EAAa5C,SAAS3iF,GACnBsoF,EAAQtoF,EAAKrE,WACpB,EAAI4pF,EAAa7C,QAAQ1iF,GAClBA,EAAKzK,KACT,EACX,EAoBAuV,EAAQ+9C,YAVR,SAASA,EAAY7oD,GACjB,OAAIrD,MAAMqe,QAAQhb,GACPA,EAAK1N,IAAIu2D,GAAar8D,KAAK,KAClC,EAAI+4F,EAAajD,aAAatiF,MAAU,EAAIulF,EAAa9C,WAAWziF,GAC7D6oD,EAAY7oD,EAAKrE,WAExB,EAAI4pF,EAAa7C,QAAQ1iF,GAClBA,EAAKzK,KACT,EACX,EAoBAuV,EAAQ89C,UAVR,SAASA,EAAU5oD,GACf,OAAIrD,MAAMqe,QAAQhb,GACPA,EAAK1N,IAAIs2D,GAAWp8D,KAAK,KAChC,EAAI+4F,EAAajD,aAAatiF,KAAUA,EAAKjR,OAASyxF,EAAiBpC,YAAYe,MAAO,EAAIoG,EAAa5C,SAAS3iF,IAC7G4oD,EAAU5oD,EAAKrE,WAEtB,EAAI4pF,EAAa7C,QAAQ1iF,GAClBA,EAAKzK,KACT,EACX,gCCxFA3J,OAAOif,eAAeC,EAAS,aAAc,CAAE7W,OAAO,IACtD6W,EAAQ49E,mBAAqB59E,EAAQw9C,mBAAqBx9C,EAAQ69E,QAAU79E,EAAQ89E,UAAY99E,EAAQ+9E,kBAAoB/9E,EAAQg+E,YAAch+E,EAAQi+E,UAAYj+E,EAAQk+E,iBAAc,EAC5L,IAAIzD,EAAe,EAAQ,MAQ3B,SAASyD,EAAYjK,GACjB,OAAO,EAAIwG,EAAajD,aAAavD,GAAQA,EAAKpjF,SAAW,EACjE,CASA,SAASotF,EAAUhK,GACf,OAAOA,EAAKz+D,QAAU,IAC1B,CAVAxV,EAAQk+E,YAAcA,EAWtBl+E,EAAQi+E,UAAYA,EA6BpBj+E,EAAQg+E,YAjBR,SAAqB/J,GACjB,IACIz+D,EAASyoE,EAAUhK,GACvB,GAAc,MAAVz+D,EACA,OAAO0oE,EAAY1oE,GAGvB,IAFA,IAAIylE,EAAW,CAAChH,GACZ7/B,EAAO6/B,EAAK7/B,KAAM9b,EAAO27C,EAAK37C,KACnB,MAAR8b,GACH6mC,EAAS7e,QAAQhoB,GACLA,EAANA,EAAgBA,KAE1B,KAAe,MAAR9b,GACH2iD,EAASx/E,KAAK68B,GACFA,EAANA,EAAgBA,KAE1B,OAAO2iD,CACX,EAcAj7E,EAAQ+9E,kBAJR,SAA2B9J,EAAMprF,GAC7B,IAAItI,EACJ,OAA+B,QAAvBA,EAAK0zF,EAAKQ,eAA4B,IAAPl0F,OAAgB,EAASA,EAAGsI,EACvE,EAeAmX,EAAQ89E,UALR,SAAmB7J,EAAMprF,GACrB,OAAwB,MAAhBorF,EAAKQ,SACT3zF,OAAOC,UAAUC,eAAeC,KAAKgzF,EAAKQ,QAAS5rF,IAC7B,MAAtBorF,EAAKQ,QAAQ5rF,EACrB,EAYAmX,EAAQ69E,QAHR,SAAiB5J,GACb,OAAOA,EAAKprF,IAChB,EAiBAmX,EAAQw9C,mBAPR,SAA4By2B,GAGxB,IAFA,IACI37C,EAAO27C,EAAK37C,KACA,OAATA,KAAkB,EAAImiD,EAAalF,OAAOj9C,IACjCA,EAANA,EAAgBA,KAC1B,OAAOA,CACX,EAiBAt4B,EAAQ49E,mBAPR,SAA4B3J,GAGxB,IAFA,IACI7/B,EAAO6/B,EAAK7/B,KACA,OAATA,KAAkB,EAAIqmC,EAAalF,OAAOnhC,IACjCA,EAANA,EAAgBA,KAC1B,OAAOA,CACX,sCC1HA,IAAI4+B,EAAmBpqF,MAAQA,KAAKoqF,kBAAqBlyF,OAAOikB,OAAS,SAAU1Z,EAAGs7B,EAAGqT,EAAGi5C,QAC7E7hF,IAAP6hF,IAAkBA,EAAKj5C,GAC3B,IAAIsoC,EAAOxhF,OAAOoyF,yBAAyBvsD,EAAGqT,GACzCsoC,KAAS,QAASA,GAAQ37C,EAAE1lB,WAAaqhE,EAAK/gE,UAAY+gE,EAAKhhE,gBAClEghE,EAAO,CAAEjhE,YAAY,EAAMsmE,IAAK,WAAa,OAAOhhD,EAAEqT,EAAI,IAE5Dl5C,OAAOif,eAAe1U,EAAG4nF,EAAI3Q,EAChC,EAAI,SAAUj3E,EAAGs7B,EAAGqT,EAAGi5C,QACT7hF,IAAP6hF,IAAkBA,EAAKj5C,GAC3B3uC,EAAE4nF,GAAMtsD,EAAEqT,EACb,GACGm5C,EAAsBvqF,MAAQA,KAAKuqF,qBAAwBryF,OAAOikB,OAAS,SAAU1Z,EAAG87B,GACxFrmC,OAAOif,eAAe1U,EAAG,UAAW,CAAEgW,YAAY,EAAMlY,MAAOg+B,GAClE,EAAI,SAAS97B,EAAG87B,GACb97B,EAAW,QAAI87B,CACnB,GACIisD,EAAgBxqF,MAAQA,KAAKwqF,cAAiB,SAAUC,GACxD,GAAIA,GAAOA,EAAIpyE,WAAY,OAAOoyE,EAClC,IAAIh4C,EAAS,CAAC,EACd,GAAW,MAAPg4C,EAAa,IAAK,IAAIr5C,KAAKq5C,EAAe,YAANr5C,GAAmBl5C,OAAOC,UAAUC,eAAeC,KAAKoyF,EAAKr5C,IAAIg5C,EAAgB33C,EAAQg4C,EAAKr5C,GAEtI,OADAm5C,EAAmB93C,EAAQg4C,GACpBh4C,CACX,EACIkiD,EAAmB30F,MAAQA,KAAK20F,iBAAoB,SAAUlK,GAC9D,OAAQA,GAAOA,EAAIpyE,WAAcoyE,EAAM,CAAE,QAAWA,EACxD,EACAvyF,OAAOif,eAAeC,EAAS,aAAc,CAAE7W,OAAO,IACtD6W,EAAQm+E,UAAYn+E,EAAQo+E,iBAAmBp+E,EAAQq+E,oBAAsBr+E,EAAQs+E,WAAat+E,EAAQu+E,gBAAkBv+E,EAAQw+E,cAAgBx+E,EAAQy+E,aAAez+E,EAAQ0+E,aAAe1+E,EAAQ2+E,cAAgB3+E,EAAQ4+E,iBAAmB5+E,EAAQ6+E,gBAAkB7+E,EAAQ8+E,cAAgB9+E,EAAQ++E,oBAAiB,EAChU,IAAIC,EAAwBzB,EAAgB,EAAQ,QACpDv9E,EAAQ++E,eAAiBC,EAAsB95F,QAC/C,IAAI+5F,EAAuB1B,EAAgB,EAAQ,QACnDv9E,EAAQ8+E,cAAgBG,EAAqB/5F,QAC7C,IAAIg6F,EAAwB9L,EAAa,EAAQ,QACjDpzE,EAAQ6+E,gBAAkBK,EAAsBh6F,QAChD,IAGIi6F,EAiBAT,EA2BAU,EAQAX,EAvDAY,EAAwB,EAAQ,OA0BpC,SAASv/F,EAAS00E,GACd,OAAOA,GAAQ2qB,EAAUG,MAAQ9qB,GAAQ2qB,EAAUI,IACvD,CA3BAz+F,OAAOif,eAAeC,EAAS,mBAAoB,CAAEqB,YAAY,EAAMsmE,IAAK,WAAc,OAAO0X,EAAsBT,gBAAkB,IACzI99F,OAAOif,eAAeC,EAAS,gBAAiB,CAAEqB,YAAY,EAAMsmE,IAAK,WAAc,OAAO0X,EAAsBV,aAAe,IAEnI,SAAWQ,GACPA,EAAUA,EAAe,IAAI,IAAM,MACnCA,EAAUA,EAAgB,KAAI,IAAM,OACpCA,EAAUA,EAAkB,OAAI,IAAM,SACtCA,EAAUA,EAAgB,KAAI,IAAM,OACpCA,EAAUA,EAAgB,KAAI,IAAM,OACpCA,EAAUA,EAAmB,QAAI,IAAM,UACvCA,EAAUA,EAAmB,QAAI,KAAO,UACxCA,EAAUA,EAAmB,QAAI,KAAO,UACxCA,EAAUA,EAAmB,QAAI,KAAO,UACxCA,EAAUA,EAAmB,QAAI,IAAM,UACvCA,EAAUA,EAAmB,QAAI,IAAM,UACvCA,EAAUA,EAAmB,QAAI,IAAM,SAC1C,CAbD,CAaGA,IAAcA,EAAY,CAAC,IAI9B,SAAWT,GACPA,EAAaA,EAA2B,aAAI,OAAS,eACrDA,EAAaA,EAA4B,cAAI,OAAS,gBACtDA,EAAaA,EAAyB,WAAI,KAAO,YACpD,CAJD,CAIGA,EAAe1+E,EAAQ0+E,eAAiB1+E,EAAQ0+E,aAAe,CAAC,IAuBnE,SAAWU,GACPA,EAAmBA,EAAgC,YAAI,GAAK,cAC5DA,EAAmBA,EAAiC,aAAI,GAAK,eAC7DA,EAAmBA,EAAmC,eAAI,GAAK,iBAC/DA,EAAmBA,EAA+B,WAAI,GAAK,aAC3DA,EAAmBA,EAAgC,YAAI,GAAK,aAC/D,CAND,CAMGA,IAAuBA,EAAqB,CAAC,IAEhD,SAAWX,GAEPA,EAAaA,EAAqB,OAAI,GAAK,SAE3CA,EAAaA,EAAqB,OAAI,GAAK,SAE3CA,EAAaA,EAAwB,UAAI,GAAK,WACjD,CAPD,CAOGA,EAAez+E,EAAQy+E,eAAiBz+E,EAAQy+E,aAAe,CAAC,IAInE,IAAID,EAA+B,WAC/B,SAASA,EAETgB,EAUAC,EAEAC,GACI92F,KAAK42F,WAAaA,EAClB52F,KAAK62F,cAAgBA,EACrB72F,KAAK82F,OAASA,EAEd92F,KAAK6O,MAAQ2nF,EAAmBO,YAEhC/2F,KAAKg3F,SAAW,EAOhBh3F,KAAKyyC,OAAS,EAEdzyC,KAAKi3F,UAAY,EAEjBj3F,KAAKk3F,OAAS,EAEdl3F,KAAKm3F,WAAatB,EAAauB,MACnC,CAkRA,OAhRAxB,EAAcz9F,UAAUk/F,YAAc,SAAUF,GAC5Cn3F,KAAKm3F,WAAaA,EAClBn3F,KAAK6O,MAAQ2nF,EAAmBO,YAChC/2F,KAAKyyC,OAAS,EACdzyC,KAAKi3F,UAAY,EACjBj3F,KAAKk3F,OAAS,EACdl3F,KAAKg3F,SAAW,CACpB,EAYApB,EAAcz9F,UAAUq/E,MAAQ,SAAU1+C,EAAKlrB,GAC3C,OAAQ5N,KAAK6O,OACT,KAAK2nF,EAAmBO,YACpB,OAAIj+D,EAAIuU,WAAWz/B,KAAY2oF,EAAUe,KACrCt3F,KAAK6O,MAAQ2nF,EAAmBe,aAChCv3F,KAAKg3F,UAAY,EACVh3F,KAAKw3F,kBAAkB1+D,EAAKlrB,EAAS,KAEhD5N,KAAK6O,MAAQ2nF,EAAmBiB,YACzBz3F,KAAK03F,iBAAiB5+D,EAAKlrB,IAEtC,KAAK4oF,EAAmBe,aACpB,OAAOv3F,KAAKw3F,kBAAkB1+D,EAAKlrB,GAEvC,KAAK4oF,EAAmBmB,eACpB,OAAO33F,KAAK43F,oBAAoB9+D,EAAKlrB,GAEzC,KAAK4oF,EAAmBqB,WACpB,OAAO73F,KAAK83F,gBAAgBh/D,EAAKlrB,GAErC,KAAK4oF,EAAmBiB,YACpB,OAAOz3F,KAAK03F,iBAAiB5+D,EAAKlrB,GAG9C,EAUAgoF,EAAcz9F,UAAUq/F,kBAAoB,SAAU1+D,EAAKlrB,GACvD,OAAIA,GAAUkrB,EAAIrgC,QACN,GA7ID,GA+INqgC,EAAIuU,WAAWz/B,MAA4B2oF,EAAUwB,SACtD/3F,KAAK6O,MAAQ2nF,EAAmBqB,WAChC73F,KAAKg3F,UAAY,EACVh3F,KAAK83F,gBAAgBh/D,EAAKlrB,EAAS,KAE9C5N,KAAK6O,MAAQ2nF,EAAmBmB,eACzB33F,KAAK43F,oBAAoB9+D,EAAKlrB,GACzC,EACAgoF,EAAcz9F,UAAU6/F,mBAAqB,SAAUl/D,EAAKxO,EAAOy5C,EAAKprC,GACpE,GAAIrO,IAAUy5C,EAAK,CACf,IAAIk0B,EAAal0B,EAAMz5C,EACvBtqB,KAAKyyC,OACDzyC,KAAKyyC,OAAS/xC,KAAKm8E,IAAIlkD,EAAMs/D,GACzBp0F,SAASi1B,EAAI4G,OAAOpV,EAAO2tE,GAAat/D,GAChD34B,KAAKg3F,UAAYiB,CACrB,CACJ,EAUArC,EAAcz9F,UAAU2/F,gBAAkB,SAAUh/D,EAAKlrB,GAErD,IADA,IAhKwBg+D,EAgKpBssB,EAAWtqF,EACRA,EAASkrB,EAAIrgC,QAAQ,CACxB,IAAI0/F,EAAOr/D,EAAIuU,WAAWz/B,GAC1B,KAAI1W,EAASihG,KAnKOvsB,EAmKyBusB,EAlK5CvsB,GAAQ2qB,EAAU6B,SAAWxsB,GAAQ2qB,EAAU8B,SACnDzsB,GAAQ2qB,EAAU+B,SAAW1sB,GAAQ2qB,EAAUgC,UAsKxC,OADAv4F,KAAKg4F,mBAAmBl/D,EAAKo/D,EAAUtqF,EAAQ,IACxC5N,KAAKw4F,kBAAkBL,EAAM,GAJpCvqF,GAAU,CAMlB,CAEA,OADA5N,KAAKg4F,mBAAmBl/D,EAAKo/D,EAAUtqF,EAAQ,KACvC,CACZ,EAUAgoF,EAAcz9F,UAAUy/F,oBAAsB,SAAU9+D,EAAKlrB,GAEzD,IADA,IAAIsqF,EAAWtqF,EACRA,EAASkrB,EAAIrgC,QAAQ,CACxB,IAAI0/F,EAAOr/D,EAAIuU,WAAWz/B,GAC1B,IAAI1W,EAASihG,GAKT,OADAn4F,KAAKg4F,mBAAmBl/D,EAAKo/D,EAAUtqF,EAAQ,IACxC5N,KAAKw4F,kBAAkBL,EAAM,GAJpCvqF,GAAU,CAMlB,CAEA,OADA5N,KAAKg4F,mBAAmBl/D,EAAKo/D,EAAUtqF,EAAQ,KACvC,CACZ,EAcAgoF,EAAcz9F,UAAUqgG,kBAAoB,SAAUC,EAAQC,GAC1D,IAAI/gG,EAEJ,GAAIqI,KAAKg3F,UAAY0B,EAEjB,OADuB,QAAtB/gG,EAAKqI,KAAK82F,cAA2B,IAAPn/F,GAAyBA,EAAGghG,2CAA2C34F,KAAKg3F,UACpG,EAGX,GAAIyB,IAAWlC,EAAUqC,KACrB54F,KAAKg3F,UAAY,OAEhB,GAAIh3F,KAAKm3F,aAAetB,EAAauB,OACtC,OAAO,EASX,OAPAp3F,KAAK62F,eAAc,EAAIP,EAAsBN,kBAAkBh2F,KAAKyyC,QAASzyC,KAAKg3F,UAC9Eh3F,KAAK82F,SACD2B,IAAWlC,EAAUqC,MACrB54F,KAAK82F,OAAO+B,0CAEhB74F,KAAK82F,OAAOgC,kCAAkC94F,KAAKyyC,SAEhDzyC,KAAKg3F,QAChB,EAUApB,EAAcz9F,UAAUu/F,iBAAmB,SAAU5+D,EAAKlrB,GAKtD,IAJA,IAAIgpF,EAAa52F,KAAK42F,WAClB1rF,EAAU0rF,EAAW52F,KAAKi3F,WAE1B8B,GAAe7tF,EAAU4qF,EAAakD,eAAiB,GACpDprF,EAASkrB,EAAIrgC,OAAQmV,IAAU5N,KAAKk3F,SAAU,CACjD,IAAIiB,EAAOr/D,EAAIuU,WAAWz/B,GAE1B,GADA5N,KAAKi3F,UAAYtB,EAAgBiB,EAAY1rF,EAASlL,KAAKi3F,UAAYv2F,KAAKD,IAAI,EAAGs4F,GAAcZ,GAC7Fn4F,KAAKi3F,UAAY,EACjB,OAAuB,IAAhBj3F,KAAKyyC,QAEPzyC,KAAKm3F,aAAetB,EAAaoD,YAEb,IAAhBF,KAjPcntB,EAmPmBusB,KAlPtC5B,EAAU2C,QAZ9B,SAA6BttB,GACzB,OAASA,GAAQ2qB,EAAU6B,SAAWxsB,GAAQ2qB,EAAU4C,SACnDvtB,GAAQ2qB,EAAU+B,SAAW1sB,GAAQ2qB,EAAU6C,SAChDliG,EAAS00E,EACjB,CAQwCytB,CAAoBztB,KAmPtC,EACA5rE,KAAKs5F,+BAKf,GAAoB,IAFpBP,IADA7tF,EAAU0rF,EAAW52F,KAAKi3F,YACDnB,EAAakD,eAAiB,IAEhC,CAEnB,GAAIb,IAAS5B,EAAUqC,KACnB,OAAO54F,KAAKu5F,oBAAoBv5F,KAAKi3F,UAAW8B,EAAa/4F,KAAKg3F,SAAWh3F,KAAKk3F,QAGlFl3F,KAAKm3F,aAAetB,EAAauB,SACjCp3F,KAAKyyC,OAASzyC,KAAKi3F,UACnBj3F,KAAKg3F,UAAYh3F,KAAKk3F,OACtBl3F,KAAKk3F,OAAS,EAEtB,CACJ,CAtQR,IAAuCtrB,EAuQ/B,OAAQ,CACZ,EAMAgqB,EAAcz9F,UAAUmhG,6BAA+B,WACnD,IAAI3hG,EACW86C,EAANzyC,KAAkByyC,OACvBsmD,GADK/4F,KAA0C42F,WACrBnkD,GAAUqjD,EAAakD,eAAiB,GAGtE,OAFAh5F,KAAKu5F,oBAAoB9mD,EAAQsmD,EAAa/4F,KAAKg3F,UAC5B,QAAtBr/F,EAAKqI,KAAK82F,cAA2B,IAAPn/F,GAAyBA,EAAGkhG,0CACpD74F,KAAKg3F,QAChB,EAUApB,EAAcz9F,UAAUohG,oBAAsB,SAAU9mD,EAAQsmD,EAAa/B,GACzE,IAAIJ,EAAa52F,KAAK42F,WAQtB,OAPA52F,KAAK62F,cAA8B,IAAhBkC,EACbnC,EAAWnkD,IAAWqjD,EAAakD,aACnCpC,EAAWnkD,EAAS,GAAIukD,GACV,IAAhB+B,GAEA/4F,KAAK62F,cAAcD,EAAWnkD,EAAS,GAAIukD,GAExCA,CACX,EAQApB,EAAcz9F,UAAU4rE,IAAM,WAC1B,IAAIpsE,EACJ,OAAQqI,KAAK6O,OACT,KAAK2nF,EAAmBiB,YAEpB,OAAuB,IAAhBz3F,KAAKyyC,QACPzyC,KAAKm3F,aAAetB,EAAaoD,WAC9Bj5F,KAAKyyC,SAAWzyC,KAAKi3F,UAEvB,EADAj3F,KAAKs5F,+BAIf,KAAK9C,EAAmBmB,eACpB,OAAO33F,KAAKw4F,kBAAkB,EAAG,GAErC,KAAKhC,EAAmBqB,WACpB,OAAO73F,KAAKw4F,kBAAkB,EAAG,GAErC,KAAKhC,EAAmBe,aAEpB,OADuB,QAAtB5/F,EAAKqI,KAAK82F,cAA2B,IAAPn/F,GAAyBA,EAAGghG,2CAA2C34F,KAAKg3F,UACpG,EAEX,KAAKR,EAAmBO,YAEpB,OAAO,EAGnB,EACOnB,CACX,CAvTkC,GA+TlC,SAAS4D,EAAW5C,GAChB,IAAI6C,EAAM,GACNC,EAAU,IAAI9D,EAAcgB,GAAY,SAAU99D,GAAO,OAAQ2gE,IAAO,EAAInD,EAAsBP,eAAej9D,EAAO,IAC5H,OAAO,SAAwBA,EAAKq+D,GAGhC,IAFA,IAAI/xD,EAAY,EACZx3B,EAAS,GACLA,EAASkrB,EAAIxgC,QAAQ,IAAKsV,KAAY,GAAG,CAC7C6rF,GAAO3gE,EAAIz1B,MAAM+hC,EAAWx3B,GAC5B8rF,EAAQrC,YAAYF,GACpB,IAAInmD,EAAM0oD,EAAQliB,MAAM1+C,EAExBlrB,EAAS,GACT,GAAIojC,EAAM,EAAG,CACT5L,EAAYx3B,EAAS8rF,EAAQ31B,MAC7B,KACJ,CACA3+B,EAAYx3B,EAASojC,EAErBpjC,EAAiB,IAARojC,EAAY5L,EAAY,EAAIA,CACzC,CACA,IAAIqN,EAASgnD,EAAM3gE,EAAIz1B,MAAM+hC,GAG7B,OADAq0D,EAAM,GACChnD,CACX,CACJ,CAWA,SAASkjD,EAAgBiB,EAAY1rF,EAASyuF,EAASxB,GACnD,IAAIyB,GAAe1uF,EAAU4qF,EAAa+D,gBAAkB,EACxDC,EAAa5uF,EAAU4qF,EAAaiE,WAExC,GAAoB,IAAhBH,EACA,OAAsB,IAAfE,GAAoB3B,IAAS2B,EAAaH,GAAW,EAGhE,GAAIG,EAAY,CACZ,IAAIv5F,EAAQ43F,EAAO2B,EACnB,OAAOv5F,EAAQ,GAAKA,GAASq5F,GACtB,EACDhD,EAAW+C,EAAUp5F,GAAS,CACxC,CAKA,IAFA,IAAIy5F,EAAKL,EACLM,EAAKD,EAAKJ,EAAc,EACrBI,GAAMC,GAAI,CACb,IAAIC,EAAOF,EAAKC,IAAQ,EACpBE,EAASvD,EAAWsD,GACxB,GAAIC,EAAShC,EACT6B,EAAKE,EAAM,MAEV,MAAIC,EAAShC,GAId,OAAOvB,EAAWsD,EAAMN,GAHxBK,EAAKC,EAAM,CAIf,CACJ,CACA,OAAQ,CACZ,CA3EA9iF,EAAQw+E,cAAgBA,EA4ExBx+E,EAAQu+E,gBAAkBA,EAC1B,IAAIyE,EAAcZ,EAAWpD,EAAsB95F,SAC/C+9F,EAAab,EAAWnD,EAAqB/5F,SAYjD8a,EAAQs+E,WAJR,SAAoB58D,EAAKue,GAErB,YADa,IAATA,IAAmBA,EAAOw+C,EAAayE,QACpCF,EAAYthE,EAAKue,EAC5B,EAWAjgC,EAAQq+E,oBAHR,SAA6B38D,GACzB,OAAOshE,EAAYthE,EAAK+8D,EAAaoD,UACzC,EAWA7hF,EAAQo+E,iBAHR,SAA0B18D,GACtB,OAAOshE,EAAYthE,EAAK+8D,EAAauB,OACzC,EAWAhgF,EAAQm+E,UAHR,SAAmBz8D,GACf,OAAOuhE,EAAWvhE,EAAK+8D,EAAauB,OACxC,8BCnhBA,IAAIz/F,EACJO,OAAOif,eAAeC,EAAS,aAAc,CAAE7W,OAAO,IACtD6W,EAAQ4+E,iBAAmB5+E,EAAQ2+E,mBAAgB,EACnD,IAAIwE,EAAY,IAAIrQ,IAAI,CACpB,CAAC,EAAG,OAEJ,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,OAsBV,SAAS8L,EAAiBwE,GACtB,IAAI7iG,EACJ,OAAK6iG,GAAa,OAAUA,GAAa,OAAWA,EAAY,QACrD,MAEgC,QAAnC7iG,EAAK4iG,EAAUxb,IAAIyb,UAA+B,IAAP7iG,EAAgBA,EAAK6iG,CAC5E,CAvBApjF,EAAQ2+E,cAEwB,QAA/Bp+F,EAAKswB,OAAO8tE,qBAAkC,IAAPp+F,EAAgBA,EAAK,SAAU6iG,GACnE,IAAI56B,EAAS,GAOb,OANI46B,EAAY,QACZA,GAAa,MACb56B,GAAU33C,OAAOwyE,aAAeD,IAAc,GAAM,KAAS,OAC7DA,EAAY,MAAsB,KAAZA,GAE1B56B,EAAU33C,OAAOwyE,aAAaD,EAElC,EAaApjF,EAAQ4+E,iBAAmBA,EAW3B5+E,EAAA,QAHA,SAAyBojF,GACrB,OAAO,EAAIpjF,EAAQ2+E,eAAeC,EAAiBwE,GACvD,sCCxEA,IAAI7F,EAAmB30F,MAAQA,KAAK20F,iBAAoB,SAAUlK,GAC9D,OAAQA,GAAOA,EAAIpyE,WAAcoyE,EAAM,CAAE,QAAWA,EACxD,EACAvyF,OAAOif,eAAeC,EAAS,aAAc,CAAE7W,OAAO,IACtD6W,EAAQsjF,mBAAqBtjF,EAAQujF,gBAAa,EAClD,IAAIC,EAAmBjG,EAAgB,EAAQ,QAC3CkG,EAAc,EAAQ,OACtBC,EAAe,sCA4BnB,SAASC,EAAiBC,EAAQliE,GAI9B,IAHA,IAEIr1B,EAFAg2F,EAAM,GACNwB,EAAU,EAEwB,QAA9Bx3F,EAAQu3F,EAAOhoD,KAAKla,KAAgB,CACxC,IAAItgC,EAAIiL,EAAME,MACd81F,GAAO3gE,EAAIopC,UAAU+4B,EAASziG,GAC9B,IAAI2/F,EAAOr/D,EAAIuU,WAAW70C,GACtBk3C,EAAOkrD,EAAiBt+F,QAAQyiF,IAAIoZ,GACxC,GAAoB,iBAATzoD,EAAmB,CAE1B,GAAIl3C,EAAI,EAAIsgC,EAAIrgC,OAAQ,CACpB,IAAIyiG,EAAWpiE,EAAIuU,WAAW70C,EAAI,GAC9B+H,EAA0B,iBAAXmvC,EAAKhsC,EAClBgsC,EAAKhsC,IAAMw3F,EACPxrD,EAAKjtC,OACL+F,EACJknC,EAAKhsC,EAAEq7E,IAAImc,GACjB,QAAc1yF,IAAVjI,EAAqB,CACrBk5F,GAAOl5F,EACP06F,EAAUD,EAAO51D,WAAa,EAC9B,QACJ,CACJ,CACAsK,EAAOA,EAAKnR,CAChB,CAEA,QAAa/1B,IAATknC,EACA+pD,GAAO/pD,EACPurD,EAAUziG,EAAI,MAEb,CACD,IAAI2iG,GAAK,EAAIN,EAAYO,cAActiE,EAAKtgC,GAC5CihG,GAAO,MAAMjvF,OAAO2wF,EAAGj6F,SAAS,IAAK,KAErC+5F,EAAUD,EAAO51D,WAAaxhC,OAAOu3F,IAAOhD,EAChD,CACJ,CACA,OAAOsB,EAAM3gE,EAAI4G,OAAOu7D,EAC5B,CApDA7jF,EAAQujF,WAHR,SAAoB94F,GAChB,OAAOk5F,EAAiBD,EAAcj5F,EAC1C,EAaAuV,EAAQsjF,mBAHR,SAA4B74F,GACxB,OAAOk5F,EAAiBF,EAAYQ,YAAax5F,EACrD,8BCjCA3J,OAAOif,eAAeC,EAAS,aAAc,CAAE7W,OAAO,IACtD6W,EAAQq1E,WAAar1E,EAAQ80E,gBAAkB90E,EAAQkkF,WAAalkF,EAAQmkF,OAASnkF,EAAQ60E,UAAY70E,EAAQgkF,aAAehkF,EAAQikF,iBAAc,EACtJjkF,EAAQikF,YAAc,uBACtB,IAAIG,EAAa,IAAItR,IAAI,CACrB,CAAC,GAAI,UACL,CAAC,GAAI,SACL,CAAC,GAAI,UACL,CAAC,GAAI,QACL,CAAC,GAAI,UAuBT,SAAS+B,EAAUnzD,GAIf,IAHA,IAEIr1B,EAFAg2F,EAAM,GACNwB,EAAU,EAEqC,QAA3Cx3F,EAAQ2T,EAAQikF,YAAYroD,KAAKla,KAAgB,CACrD,IAAItgC,EAAIiL,EAAME,MACVw0F,EAAOr/D,EAAIuU,WAAW70C,GACtBk3C,EAAO8rD,EAAWzc,IAAIoZ,QACb3vF,IAATknC,GACA+pD,GAAO3gE,EAAIopC,UAAU+4B,EAASziG,GAAKk3C,EACnCurD,EAAUziG,EAAI,IAGdihG,GAAO,GAAGjvF,OAAOsuB,EAAIopC,UAAU+4B,EAASziG,GAAI,OAAOgS,QAAO,EAAI4M,EAAQgkF,cAActiE,EAAKtgC,GAAG0I,SAAS,IAAK,KAE1G+5F,EAAU7jF,EAAQikF,YAAYj2D,WAAaxhC,OAA2B,QAAZ,MAAPu0F,IAE3D,CACA,OAAOsB,EAAM3gE,EAAI4G,OAAOu7D,EAC5B,CAsBA,SAASQ,EAAWC,EAAO98F,GACvB,OAAO,SAAgBiD,GAInB,IAHA,IAAI4B,EACAw3F,EAAU,EACVxoD,EAAS,GACLhvC,EAAQi4F,EAAM1oD,KAAKnxC,IACnBo5F,IAAYx3F,EAAME,QAClB8uC,GAAU5wC,EAAKqgE,UAAU+4B,EAASx3F,EAAME,QAG5C8uC,GAAU7zC,EAAImgF,IAAIt7E,EAAM,GAAG4pC,WAAW,IAEtC4tD,EAAUx3F,EAAME,MAAQ,EAE5B,OAAO8uC,EAAS5wC,EAAKqgE,UAAU+4B,EACnC,CACJ,CA7EA7jF,EAAQgkF,aAEwB,MAAhCnzE,OAAO9vB,UAAUwjG,YACX,SAAU7iE,EAAKn1B,GAAS,OAAOm1B,EAAI6iE,YAAYh4F,EAAQ,EAErD,SAAU45B,EAAG55B,GACT,OAA0C,QAAZ,MAAtB45B,EAAE8P,WAAW1pC,IACkB,MAAhC45B,EAAE8P,WAAW1pC,GAAS,OACrB45B,EAAE8P,WAAW1pC,EAAQ,GACrB,MACA,MACF45B,EAAE8P,WAAW1pC,EACvB,EA4BRyT,EAAQ60E,UAAYA,EAUpB70E,EAAQmkF,OAAStP,EAmCjB70E,EAAQkkF,WAAaG,EAAW,WAAYD,GAO5CpkF,EAAQ80E,gBAAkBuP,EAAW,cAAe,IAAIvR,IAAI,CACxD,CAAC,GAAI,UACL,CAAC,GAAI,SACL,CAAC,IAAK,aAQV9yE,EAAQq1E,WAAagP,EAAW,eAAgB,IAAIvR,IAAI,CACpD,CAAC,GAAI,SACL,CAAC,GAAI,QACL,CAAC,GAAI,QACL,CAAC,IAAK,yCCrHVhyF,OAAOif,eAAeC,EAAS,aAAc,CAAE7W,OAAO,IACtD6W,EAAA,QAAkB,IAAIwkF,YAEtB,2keACKz5F,MAAM,IACNvD,KAAI,SAAU2+B,GAAK,OAAOA,EAAE8P,WAAW,EAAI,iCCLhDn1C,OAAOif,eAAeC,EAAS,aAAc,CAAE7W,OAAO,IACtD6W,EAAA,QAAkB,IAAIwkF,YAEtB,sCACKz5F,MAAM,IACNvD,KAAI,SAAU2+B,GAAK,OAAOA,EAAE8P,WAAW,EAAI,iCCJhD,SAASwuD,EAAYlyE,GACjB,IAAK,IAAInxB,EAAI,EAAGA,EAAImxB,EAAIlxB,OAAQD,IAC5BmxB,EAAInxB,GAAG,IAAMmxB,EAAInxB,EAAI,GAAG,GAAK,EAEjC,OAAOmxB,CACX,CANAzxB,OAAOif,eAAeC,EAAS,aAAc,CAAE7W,OAAO,IAQtD6W,EAAA,QAAkB,IAAI8yE,IAAoB2R,EAAY,CAAC,CAAC,EAAG,SAAU,CAAC,EAAG,aAAc,CAAC,GAAI,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,GAAI,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,CAAEt9D,EAAG,OAAQ76B,EAAG,KAAMjB,EAAG,WAAa,CAAC,EAAG,CAAE87B,EAAG,WAAY76B,EAAG,KAAMjB,EAAG,UAAY,CAAC,EAAG,CAAE87B,EAAG,OAAQ76B,EAAG,KAAMjB,EAAG,WAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,GAAI,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,sBAAuB,CAAC,EAAG,CAAEiB,EAAG,IAAKjB,EAAG,YAAc,CAAC,GAAI,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,GAAI,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,cAAe,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,eAAgB,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,eAAgB,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC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AU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,KAAM,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,eAAgB,CAAC,EAAG,YAAa,CAAC,EAAG,yBAA0B,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG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","sources":["webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/components/heading/Heading.constants.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/components/heading/Heading.mixins.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/components/heading/Heading.root.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/components/heading/Heading.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/components/heading/index.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/components/icon-button/IconButton.constants.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/utilities/elevation/Elevation.constants.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/foundations/shape/Shape.constants.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/foundations/shape/Shape.mixins.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/foundations/shape/Shape.root.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/utilities/elevation/Elevation.mixins.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/components/icon-button/IconButton.root.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/components/icon-button/IconButton.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/components/icon-button/index.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/components/status-icon/StatusIcon.constants.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/components/status-icon/StatusIcon.root.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/components/status-icon/StatusIcon.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/components/status-icon/index.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/components/text/Text.constants.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/components/text/Text.mixins.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/components/text/Text.root.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/components/text/Text.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/components/text/index.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/foundations/colors/default-colors/blue.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/foundations/colors/default-colors/green.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/foundations/colors/default-colors/indigo.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/foundations/colors/default-colors/neutral.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/foundations/colors/default-colors/orange.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/foundations/colors/default-colors/purple.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/foundations/colors/default-colors/red.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/foundations/colors/default-colors/teal.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/foundations/colors/default-colors/yellow.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/foundations/icon/Icon.constants.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/foundations/icon/Icon.root.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/foundations/icon/Icon.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/foundations/icon/index.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/shared/constants.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/shared/utils.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/shared/color-utils.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/utilities/layout/Flex.constants.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/utilities/layout/Flex.root.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/utilities/layout/Flex.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/utilities/spacing/Spacing.constants.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/utilities/spacing/Spacing.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/utilities/spacing/Spacing.mixins.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/utilities/spacing/index.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/utilities/theme/global-styles/reset-styles.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/utilities/theme/global-styles/font-faces.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/utilities/theme/global-styles/default-styles.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/utilities/theme/global-styles/index.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/utilities/theme/themes/theme.dark.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/utilities/theme/themes/theme.light.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/utilities/theme/theme-provider.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/utilities/theme/themes/theme.sidebar.js","webpack://mattermost-webapp/./node_modules/@mattermost/compass-components/utilities/theme/index.js","webpack://mattermost-webapp/./node_modules/dynamic-virtualized-list/node_modules/memoize-one/esm/index.js","webpack://mattermost-webapp/./node_modules/dynamic-virtualized-list/dist/index.esm.js","webpack://mattermost-webapp/./node_modules/react-custom-scrollbars/lib/Scrollbars/defaultRenderElements.js","webpack://mattermost-webapp/./node_modules/react-custom-scrollbars/lib/Scrollbars/index.js","webpack://mattermost-webapp/./node_modules/react-custom-scrollbars/lib/Scrollbars/styles.js","webpack://mattermost-webapp/./node_modules/react-custom-scrollbars/lib/index.js","webpack://mattermost-webapp/./node_modules/react-custom-scrollbars/lib/utils/getInnerHeight.js","webpack://mattermost-webapp/./node_modules/react-custom-scrollbars/lib/utils/getInnerWidth.js","webpack://mattermost-webapp/./node_modules/react-custom-scrollbars/lib/utils/getScrollbarWidth.js","webpack://mattermost-webapp/./node_modules/react-custom-scrollbars/lib/utils/isString.js","webpack://mattermost-webapp/./node_modules/react-custom-scrollbars/lib/utils/returnFalse.js","webpack://mattermost-webapp/./node_modules/react-select/async/dist/react-select.browser.esm.js","webpack://mattermost-webapp/./node_modules/react-select/creatable/dist/react-select.browser.esm.js","webpack://mattermost-webapp/./node_modules/react-select/dist/chunk-762c4cd6.browser.esm.js","webpack://mattermost-webapp/../node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","webpack://mattermost-webapp/./node_modules/react-select/node_modules/memoize-one/dist/memoize-one.esm.js","webpack://mattermost-webapp/./node_modules/react-select/dist/chunk-f5c2e42b.browser.esm.js","webpack://mattermost-webapp/./node_modules/react-select/dist/react-select.browser.esm.js","webpack://mattermost-webapp/../node_modules/@emotion/sheet/dist/sheet.browser.esm.js","webpack://mattermost-webapp/../node_modules/@emotion/cache/dist/cache.browser.esm.js","webpack://mattermost-webapp/../node_modules/@emotion/utils/dist/utils.browser.esm.js","webpack://mattermost-webapp/../node_modules/@emotion/core/dist/emotion-element-04d85134.browser.esm.js","webpack://mattermost-webapp/../node_modules/@emotion/core/dist/core.browser.esm.js","webpack://mattermost-webapp/../node_modules/@emotion/css/dist/css.browser.esm.js","webpack://mattermost-webapp/../node_modules/@emotion/hash/dist/hash.browser.esm.js","webpack://mattermost-webapp/../node_modules/@emotion/serialize/node_modules/@emotion/memoize/dist/memoize.browser.esm.js","webpack://mattermost-webapp/../node_modules/@emotion/serialize/dist/serialize.browser.esm.js","webpack://mattermost-webapp/../node_modules/@guyplusplus/turndown-plugin-gfm/lib/turndown-plugin-gfm.es.js","webpack://mattermost-webapp/../node_modules/@mattermost/compass-icons/IconGlyphs.js","webpack://mattermost-webapp/../node_modules/@mui/material/Divider/Divider.js","webpack://mattermost-webapp/../node_modules/@mui/material/Divider/dividerClasses.js","webpack://mattermost-webapp/../node_modules/@mui/material/List/ListContext.js","webpack://mattermost-webapp/../node_modules/@mui/material/styles/getOverlayAlpha.js","webpack://mattermost-webapp/../node_modules/@mui/material/Paper/paperClasses.js","webpack://mattermost-webapp/../node_modules/@mui/material/Paper/Paper.js","webpack://mattermost-webapp/../node_modules/@mui/utils/esm/ownerWindow/ownerWindow.js","webpack://mattermost-webapp/../node_modules/@mui/material/utils/ownerWindow.js","webpack://mattermost-webapp/../node_modules/@mui/material/transitions/utils.js","webpack://mattermost-webapp/../node_modules/@mui/material/Grow/Grow.js","webpack://mattermost-webapp/../node_modules/@mui/utils/esm/createChainedFunction/createChainedFunction.js","webpack://mattermost-webapp/../node_modules/@mui/material/node_modules/@mui/base/Portal/Portal.js","webpack://mattermost-webapp/../node_modules/@mui/material/node_modules/@mui/base/ModalUnstyled/ModalManager.js","webpack://mattermost-webapp/../node_modules/@mui/material/node_modules/@mui/base/FocusTrap/FocusTrap.js","webpack://mattermost-webapp/../node_modules/@mui/material/node_modules/@mui/base/ModalUnstyled/modalUnstyledClasses.js","webpack://mattermost-webapp/../node_modules/@mui/material/node_modules/@mui/base/utils/isHostComponent.js","webpack://mattermost-webapp/../node_modules/@mui/material/node_modules/@mui/base/utils/omitEventHandlers.js","webpack://mattermost-webapp/../node_modules/@mui/material/node_modules/@mui/base/utils/resolveComponentProps.js","webpack://mattermost-webapp/../node_modules/@mui/material/node_modules/@mui/base/utils/useSlotProps.js","webpack://mattermost-webapp/../node_modules/@mui/material/node_modules/@mui/base/utils/mergeSlotProps.js","webpack://mattermost-webapp/../node_modules/@mui/material/node_modules/@mui/base/utils/extractEventHandlers.js","webpack://mattermost-webapp/../node_modules/@mui/material/node_modules/@mui/base/utils/appendOwnerState.js","webpack://mattermost-webapp/../node_modules/@mui/material/node_modules/@mui/base/utils/ClassNameConfigurator.js","webpack://mattermost-webapp/../node_modules/@mui/material/node_modules/@mui/base/ModalUnstyled/ModalUnstyled.js","webpack://mattermost-webapp/../node_modules/@mui/material/Fade/Fade.js","webpack://mattermost-webapp/../node_modules/@mui/material/Backdrop/backdropClasses.js","webpack://mattermost-webapp/../node_modules/@mui/material/Backdrop/Backdrop.js","webpack://mattermost-webapp/../node_modules/@mui/material/Modal/Modal.js","webpack://mattermost-webapp/../node_modules/@mui/material/Popover/popoverClasses.js","webpack://mattermost-webapp/../node_modules/@mui/material/Popover/Popover.js","webpack://mattermost-webapp/../node_modules/@mui/utils/esm/debounce/debounce.js","webpack://mattermost-webapp/../node_modules/@mui/material/Menu/menuClasses.js","webpack://mattermost-webapp/../node_modules/@mui/material/Menu/Menu.js","webpack://mattermost-webapp/../node_modules/@mui/material/utils/useEventCallback.js","webpack://mattermost-webapp/../node_modules/@mui/utils/esm/useTimeout/useTimeout.js","webpack://mattermost-webapp/../node_modules/@mui/utils/esm/useIsFocusVisible/useIsFocusVisible.js","webpack://mattermost-webapp/../node_modules/@mui/material/utils/useIsFocusVisible.js","webpack://mattermost-webapp/../node_modules/react-transition-group/esm/utils/ChildMapping.js","webpack://mattermost-webapp/../node_modules/react-transition-group/esm/TransitionGroup.js","webpack://mattermost-webapp/../node_modules/@mui/material/ButtonBase/touchRippleClasses.js","webpack://mattermost-webapp/../node_modules/@mui/material/ButtonBase/TouchRipple.js","webpack://mattermost-webapp/../node_modules/@mui/material/ButtonBase/Ripple.js","webpack://mattermost-webapp/../node_modules/@mui/material/ButtonBase/buttonBaseClasses.js","webpack://mattermost-webapp/../node_modules/@mui/material/ButtonBase/ButtonBase.js","webpack://mattermost-webapp/../node_modules/@mui/material/ListItemIcon/listItemIconClasses.js","webpack://mattermost-webapp/../node_modules/@mui/material/ListItemText/listItemTextClasses.js","webpack://mattermost-webapp/../node_modules/@mui/material/MenuItem/menuItemClasses.js","webpack://mattermost-webapp/../node_modules/@mui/material/MenuItem/MenuItem.js","webpack://mattermost-webapp/../node_modules/@mui/material/List/listClasses.js","webpack://mattermost-webapp/../node_modules/@mui/material/List/List.js","webpack://mattermost-webapp/../node_modules/@mui/material/utils/getScrollbarSize.js","webpack://mattermost-webapp/../node_modules/@mui/material/MenuList/MenuList.js","webpack://mattermost-webapp/../node_modules/@mui/material/node_modules/react-is/cjs/react-is.production.min.js","webpack://mattermost-webapp/../node_modules/@mui/material/node_modules/react-is/index.js","webpack://mattermost-webapp/../node_modules/@mui/material/colors/common.js","webpack://mattermost-webapp/../node_modules/@mui/material/colors/grey.js","webpack://mattermost-webapp/../node_modules/@mui/material/colors/purple.js","webpack://mattermost-webapp/../node_modules/@mui/material/colors/red.js","webpack://mattermost-webapp/../node_modules/@mui/material/colors/orange.js","webpack://mattermost-webapp/../node_modules/@mui/material/colors/blue.js","webpack://mattermost-webapp/../node_modules/@mui/material/colors/lightBlue.js","webpack://mattermost-webapp/../node_modules/@mui/material/colors/green.js","webpack://mattermost-webapp/../node_modules/@mui/material/styles/createPalette.js","webpack://mattermost-webapp/../node_modules/@mui/material/styles/createTypography.js","webpack://mattermost-webapp/../node_modules/@mui/material/styles/shadows.js","webpack://mattermost-webapp/../node_modules/@mui/material/styles/createTransitions.js","webpack://mattermost-webapp/../node_modules/@mui/material/styles/zIndex.js","webpack://mattermost-webapp/../node_modules/@mui/material/styles/createTheme.js","webpack://mattermost-webapp/../node_modules/@mui/material/styles/createMixins.js","webpack://mattermost-webapp/../node_modules/@mui/material/styles/defaultTheme.js","webpack://mattermost-webapp/../node_modules/@mui/system/esm/createStyled.js","webpack://mattermost-webapp/../node_modules/@mui/material/styles/styled.js","webpack://mattermost-webapp/../node_modules/@mui/styled-engine-sc/index.js","webpack://mattermost-webapp/../node_modules/@mui/material/styles/useTheme.js","webpack://mattermost-webapp/../node_modules/@mui/utils/esm/resolveProps/resolveProps.js","webpack://mattermost-webapp/../node_modules/@mui/system/esm/useThemeProps/getThemeProps.js","webpack://mattermost-webapp/../node_modules/@mui/material/styles/useThemeProps.js","webpack://mattermost-webapp/../node_modules/@mui/system/esm/useThemeProps/useThemeProps.js","webpack://mattermost-webapp/../node_modules/@mui/material/utils/ownerDocument.js","webpack://mattermost-webapp/../node_modules/@mui/material/utils/useEnhancedEffect.js","webpack://mattermost-webapp/../node_modules/@mui/material/utils/useForkRef.js","webpack://mattermost-webapp/../node_modules/@mui/private-theming/useTheme/ThemeContext.js","webpack://mattermost-webapp/../node_modules/@mui/private-theming/useTheme/useTheme.js","webpack://mattermost-webapp/../node_modules/@mui/private-theming/ThemeProvider/nested.js","webpack://mattermost-webapp/../node_modules/@mui/private-theming/ThemeProvider/ThemeProvider.js","webpack://mattermost-webapp/../node_modules/@mui/system/esm/RtlProvider/index.js","webpack://mattermost-webapp/../node_modules/@mui/system/esm/DefaultPropsProvider/DefaultPropsProvider.js","webpack://mattermost-webapp/../node_modules/@mui/system/esm/ThemeProvider/ThemeProvider.js","webpack://mattermost-webapp/../node_modules/@mui/system/esm/breakpoints.js","webpack://mattermost-webapp/../node_modules/@mui/utils/esm/clamp/clamp.js","webpack://mattermost-webapp/../node_modules/@mui/system/esm/colorManipulator.js","webpack://mattermost-webapp/../node_modules/@mui/system/esm/createTheme/createBreakpoints.js","webpack://mattermost-webapp/../node_modules/@mui/system/esm/createTheme/shape.js","webpack://mattermost-webapp/../node_modules/@mui/system/esm/createTheme/applyStyles.js","webpack://mattermost-webapp/../node_modules/@mui/system/esm/createTheme/createTheme.js","webpack://mattermost-webapp/../node_modules/@mui/system/esm/createTheme/createSpacing.js","webpack://mattermost-webapp/../node_modules/@mui/system/esm/merge.js","webpack://mattermost-webapp/../node_modules/@mui/system/esm/spacing.js","webpack://mattermost-webapp/../node_modules/@mui/system/esm/memoize.js","webpack://mattermost-webapp/../node_modules/@mui/system/esm/style.js","webpack://mattermost-webapp/../node_modules/@mui/system/esm/compose.js","webpack://mattermost-webapp/../node_modules/@mui/system/esm/borders.js","webpack://mattermost-webapp/../node_modules/@mui/system/esm/cssGrid.js","webpack://mattermost-webapp/../node_modules/@mui/system/esm/palette.js","webpack://mattermost-webapp/../node_modules/@mui/system/esm/sizing.js","webpack://mattermost-webapp/../node_modules/@mui/system/esm/styleFunctionSx/defaultSxConfig.js","webpack://mattermost-webapp/../node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js","webpack://mattermost-webapp/../node_modules/@mui/system/esm/useTheme.js","webpack://mattermost-webapp/../node_modules/@mui/system/esm/useThemeWithoutDefault.js","webpack://mattermost-webapp/../node_modules/@mui/utils/esm/capitalize/capitalize.js","webpack://mattermost-webapp/../node_modules/@mui/utils/esm/composeClasses/composeClasses.js","webpack://mattermost-webapp/../node_modules/@mui/utils/esm/deepmerge/deepmerge.js","webpack://mattermost-webapp/../node_modules/@mui/utils/esm/formatMuiErrorMessage/formatMuiErrorMessage.js","webpack://mattermost-webapp/../node_modules/@mui/utils/esm/ClassNameGenerator/ClassNameGenerator.js","webpack://mattermost-webapp/../node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js","webpack://mattermost-webapp/../node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js","webpack://mattermost-webapp/../node_modules/@mui/utils/esm/getScrollbarSize/getScrollbarSize.js","webpack://mattermost-webapp/../node_modules/@mui/utils/esm/ownerDocument/ownerDocument.js","webpack://mattermost-webapp/../node_modules/@mui/utils/esm/setRef/setRef.js","webpack://mattermost-webapp/../node_modules/@mui/utils/esm/useEnhancedEffect/useEnhancedEffect.js","webpack://mattermost-webapp/../node_modules/@mui/utils/esm/useEventCallback/useEventCallback.js","webpack://mattermost-webapp/../node_modules/@mui/utils/esm/useForkRef/useForkRef.js","webpack://mattermost-webapp/../node_modules/add-px-to-style/index.js","webpack://mattermost-webapp/../node_modules/axios/index.js","webpack://mattermost-webapp/../node_modules/axios/lib/adapters/xhr.js","webpack://mattermost-webapp/../node_modules/axios/lib/axios.js","webpack://mattermost-webapp/../node_modules/axios/lib/cancel/Cancel.js","webpack://mattermost-webapp/../node_modules/axios/lib/cancel/CancelToken.js","webpack://mattermost-webapp/../node_modules/axios/lib/cancel/isCancel.js","webpack://mattermost-webapp/../node_modules/axios/lib/core/Axios.js","webpack://mattermost-webapp/../node_modules/axios/lib/core/InterceptorManager.js","webpack://mattermost-webapp/../node_modules/axios/lib/core/buildFullPath.js","webpack://mattermost-webapp/../node_modules/axios/lib/core/createError.js","webpack://mattermost-webapp/../node_modules/axios/lib/core/dispatchRequest.js","webpack://mattermost-webapp/../node_modules/axios/lib/core/enhanceError.js","webpack://mattermost-webapp/../node_modules/axios/lib/core/mergeConfig.js","webpack://mattermost-webapp/../node_modules/axios/lib/core/settle.js","webpack://mattermost-webapp/../node_modules/axios/lib/core/transformData.js","webpack://mattermost-webapp/../node_modules/axios/lib/defaults.js","webpack://mattermost-webapp/../node_modules/axios/lib/helpers/bind.js","webpack://mattermost-webapp/../node_modules/axios/lib/helpers/buildURL.js","webpack://mattermost-webapp/../node_modules/axios/lib/helpers/combineURLs.js","webpack://mattermost-webapp/../node_modules/axios/lib/helpers/cookies.js","webpack://mattermost-webapp/../node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://mattermost-webapp/../node_modules/axios/lib/helpers/isAxiosError.js","webpack://mattermost-webapp/../node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://mattermost-webapp/../node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://mattermost-webapp/../node_modules/axios/lib/helpers/parseHeaders.js","webpack://mattermost-webapp/../node_modules/axios/lib/helpers/spread.js","webpack://mattermost-webapp/../node_modules/axios/lib/helpers/validator.js","webpack://mattermost-webapp/../node_modules/axios/lib/utils.js","webpack://mattermost-webapp/../node_modules/clsx/dist/clsx.m.js","webpack://mattermost-webapp/../node_modules/color-contrast-checker/src/color-contrast-checker.js","webpack://mattermost-webapp/../node_modules/color-hash/dist/color-hash.js","webpack://mattermost-webapp/../node_modules/core-js/internals/array-buffer-basic-detection.js","webpack://mattermost-webapp/../node_modules/core-js/internals/array-buffer.js","webpack://mattermost-webapp/../node_modules/core-js/internals/array-fill.js","webpack://mattermost-webapp/../node_modules/core-js/internals/ieee754.js","webpack://mattermost-webapp/../node_modules/core-js/internals/string-trim-end.js","webpack://mattermost-webapp/../node_modules/core-js/internals/to-index.js","webpack://mattermost-webapp/../node_modules/core-js/modules/es.array-buffer.slice.js","webpack://mattermost-webapp/../node_modules/core-js/modules/es.string.trim-end.js","webpack://mattermost-webapp/../node_modules/core-js/modules/es.string.trim-right.js","webpack://mattermost-webapp/../node_modules/dom-css/index.js","webpack://mattermost-webapp/../node_modules/dom-serializer/lib/foreignNames.js","webpack://mattermost-webapp/../node_modules/dom-serializer/lib/index.js","webpack://mattermost-webapp/../node_modules/domelementtype/lib/index.js","webpack://mattermost-webapp/../node_modules/domhandler/lib/index.js","webpack://mattermost-webapp/../node_modules/domhandler/lib/node.js","webpack://mattermost-webapp/../node_modules/domutils/lib/feeds.js","webpack://mattermost-webapp/../node_modules/domutils/lib/helpers.js","webpack://mattermost-webapp/../node_modules/domutils/lib/index.js","webpack://mattermost-webapp/../node_modules/domutils/lib/legacy.js","webpack://mattermost-webapp/../node_modules/domutils/lib/manipulation.js","webpack://mattermost-webapp/../node_modules/domutils/lib/querying.js","webpack://mattermost-webapp/../node_modules/domutils/lib/stringify.js","webpack://mattermost-webapp/../node_modules/domutils/lib/traversal.js","webpack://mattermost-webapp/../node_modules/entities/lib/decode.js","webpack://mattermost-webapp/../node_modules/entities/lib/decode_codepoint.js","webpack://mattermost-webapp/../node_modules/entities/lib/encode.js","webpack://mattermost-webapp/../node_modules/entities/lib/escape.js","webpack://mattermost-webapp/../node_modules/entities/lib/generated/decode-data-html.js","webpack://mattermost-webapp/../node_modules/entities/lib/generated/decode-data-xml.js","webpack://mattermost-webapp/../node_modules/entities/lib/generated/encode-html.js","webpack://mattermost-webapp/../node_modules/entities/lib/index.js","webpack://mattermost-webapp/../node_modules/exif2css/src/index.js","webpack://mattermost-webapp/../node_modules/fast-deep-equal/index.js","webpack://mattermost-webapp/../node_modules/html-to-react/index.js","webpack://mattermost-webapp/../node_modules/html-to-react/lib/camel-case-attribute-names.js","webpack://mattermost-webapp/../node_modules/html-to-react/lib/is-valid-node-definitions.js","webpack://mattermost-webapp/../node_modules/html-to-react/lib/parser.js","webpack://mattermost-webapp/../node_modules/html-to-react/lib/process-node-definitions.js","webpack://mattermost-webapp/../node_modules/html-to-react/lib/processing-instructions.js","webpack://mattermost-webapp/../node_modules/html-to-react/lib/should-process-node-definitions.js","webpack://mattermost-webapp/../node_modules/html-to-react/lib/utils.js","webpack://mattermost-webapp/../node_modules/htmlparser2/lib/Parser.js","webpack://mattermost-webapp/../node_modules/htmlparser2/lib/Tokenizer.js","webpack://mattermost-webapp/../node_modules/htmlparser2/lib/index.js","webpack://mattermost-webapp/../node_modules/lodash.camelcase/index.js","webpack://mattermost-webapp/../node_modules/lodash.kebabcase/index.js","webpack://mattermost-webapp/../node_modules/lodash/_apply.js","webpack://mattermost-webapp/../node_modules/lodash/_arrayEach.js","webpack://mattermost-webapp/../node_modules/lodash/_asciiSize.js","webpack://mattermost-webapp/../node_modules/lodash/_asciiToArray.js","webpack://mattermost-webapp/../node_modules/lodash/_assignValue.js","webpack://mattermost-webapp/../node_modules/lodash/_baseAssign.js","webpack://mattermost-webapp/../node_modules/lodash/_baseAssignIn.js","webpack://mattermost-webapp/../node_modules/lodash/_baseAssignValue.js","webpack://mattermost-webapp/../node_modules/lodash/_baseClone.js","webpack://mattermost-webapp/../node_modules/lodash/_baseCreate.js","webpack://mattermost-webapp/../node_modules/lodash/_baseIntersection.js","webpack://mattermost-webapp/../node_modules/lodash/_baseIsMap.js","webpack://mattermost-webapp/../node_modules/lodash/_baseIsRegExp.js","webpack://mattermost-webapp/../node_modules/lodash/_baseIsSet.js","webpack://mattermost-webapp/../node_modules/lodash/_baseKeysIn.js","webpack://mattermost-webapp/../node_modules/lodash/_baseRest.js","webpack://mattermost-webapp/../node_modules/lodash/_baseSetToString.js","webpack://mattermost-webapp/../node_modules/lodash/_baseZipObject.js","webpack://mattermost-webapp/../node_modules/lodash/_castArrayLikeObject.js","webpack://mattermost-webapp/../node_modules/lodash/_castSlice.js","webpack://mattermost-webapp/../node_modules/lodash/_cloneArrayBuffer.js","webpack://mattermost-webapp/../node_modules/lodash/_cloneBuffer.js","webpack://mattermost-webapp/../node_modules/lodash/_cloneDataView.js","webpack://mattermost-webapp/../node_modules/lodash/_cloneRegExp.js","webpack://mattermost-webapp/../node_modules/lodash/_cloneSymbol.js","webpack://mattermost-webapp/../node_modules/lodash/_cloneTypedArray.js","webpack://mattermost-webapp/../node_modules/lodash/_copyArray.js","webpack://mattermost-webapp/../node_modules/lodash/_copyObject.js","webpack://mattermost-webapp/../node_modules/lodash/_copySymbols.js","webpack://mattermost-webapp/../node_modules/lodash/_copySymbolsIn.js","webpack://mattermost-webapp/../node_modules/lodash/_createCaseFirst.js","webpack://mattermost-webapp/../node_modules/lodash/_defineProperty.js","webpack://mattermost-webapp/../node_modules/lodash/_getAllKeysIn.js","webpack://mattermost-webapp/../node_modules/lodash/_getPrototype.js","webpack://mattermost-webapp/../node_modules/lodash/_getSymbolsIn.js","webpack://mattermost-webapp/../node_modules/lodash/_hasUnicode.js","webpack://mattermost-webapp/../node_modules/lodash/_initCloneArray.js","webpack://mattermost-webapp/../node_modules/lodash/_initCloneByTag.js","webpack://mattermost-webapp/../node_modules/lodash/_initCloneObject.js","webpack://mattermost-webapp/../node_modules/lodash/_nativeKeysIn.js","webpack://mattermost-webapp/../node_modules/lodash/_overRest.js","webpack://mattermost-webapp/../node_modules/lodash/_setToString.js","webpack://mattermost-webapp/../node_modules/lodash/_shortOut.js","webpack://mattermost-webapp/../node_modules/lodash/_stringSize.js","webpack://mattermost-webapp/../node_modules/lodash/_stringToArray.js","webpack://mattermost-webapp/../node_modules/lodash/_unicodeSize.js","webpack://mattermost-webapp/../node_modules/lodash/_unicodeToArray.js","webpack://mattermost-webapp/../node_modules/lodash/capitalize.js","webpack://mattermost-webapp/../node_modules/lodash/cloneDeep.js","webpack://mattermost-webapp/../node_modules/lodash/constant.js","webpack://mattermost-webapp/../node_modules/lodash/intersection.js","webpack://mattermost-webapp/../node_modules/lodash/isArrayLikeObject.js","webpack://mattermost-webapp/../node_modules/lodash/isEmpty.js","webpack://mattermost-webapp/../node_modules/lodash/isMap.js","webpack://mattermost-webapp/../node_modules/lodash/isPlainObject.js","webpack://mattermost-webapp/../node_modules/lodash/isRegExp.js","webpack://mattermost-webapp/../node_modules/lodash/isSet.js","webpack://mattermost-webapp/../node_modules/lodash/keysIn.js","webpack://mattermost-webapp/../node_modules/lodash/toFinite.js","webpack://mattermost-webapp/../node_modules/lodash/toInteger.js","webpack://mattermost-webapp/../node_modules/lodash/truncate.js","webpack://mattermost-webapp/../node_modules/lodash/upperFirst.js","webpack://mattermost-webapp/../node_modules/lodash/zipObject.js","webpack://mattermost-webapp/../node_modules/object-assign/index.js","webpack://mattermost-webapp/../node_modules/performance-now/lib/performance-now.js","webpack://mattermost-webapp/../node_modules/prefix-style/index.js","webpack://mattermost-webapp/../node_modules/raf/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/locale/en-US/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/isDate/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/toDate/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/_lib/toInteger/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/_lib/defaultOptions/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/_lib/format/formatters/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/_lib/format/longFormatters/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/_lib/defaultLocale/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/format/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/isValid/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/subMilliseconds/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/addMilliseconds/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/endOfMonth/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/startOfDay/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/startOfMonth/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/isSameYear/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/setMonth/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/getDaysInMonth/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/setYear/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/startOfYear/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/addMonths/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/isBefore/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/isSameMonth/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/differenceInCalendarMonths/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/addDays/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/startOfWeek/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/startOfISOWeek/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/getUnixTime/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/getTime/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/isSameDay/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/isAfter/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/differenceInCalendarDays/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/subDays/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/addWeeks/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/addYears/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/endOfWeek/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/endOfISOWeek/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/max/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/min/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/differenceInCalendarWeeks/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/getWeeksInMonth/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/lastDayOfMonth/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/getISOWeek/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/startOfISOWeekYear/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/getISOWeekYear/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/getWeek/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/startOfWeekYear/index.js","webpack://mattermost-webapp/../node_modules/date-fns/esm/getWeekYear/index.js","webpack://mattermost-webapp/../node_modules/react-day-picker/dist/index.esm.js","webpack://mattermost-webapp/../node_modules/react-input-autosize/lib/AutosizeInput.js","webpack://mattermost-webapp/../node_modules/react-transition-group/node_modules/dom-helpers/esm/removeClass.js","webpack://mattermost-webapp/../node_modules/react-transition-group/esm/CSSTransition.js","webpack://mattermost-webapp/../node_modules/react-transition-group/node_modules/dom-helpers/esm/addClass.js","webpack://mattermost-webapp/../node_modules/react-transition-group/node_modules/dom-helpers/esm/hasClass.js","webpack://mattermost-webapp/../node_modules/react-transition-group/esm/Transition.js","webpack://mattermost-webapp/../node_modules/react-transition-group/esm/TransitionGroupContext.js","webpack://mattermost-webapp/../node_modules/react-transition-group/esm/utils/reflow.js","webpack://mattermost-webapp/../node_modules/react-virtualized-auto-sizer/dist/index.esm.js","webpack://mattermost-webapp/../node_modules/react-window-infinite-loader/dist/index.esm.js","webpack://mattermost-webapp/../node_modules/react-window/node_modules/memoize-one/dist/memoize-one.esm.js","webpack://mattermost-webapp/../node_modules/react-window/dist/index.esm.js","webpack://mattermost-webapp/../node_modules/react/cjs/react-jsx-runtime.production.min.js","webpack://mattermost-webapp/../node_modules/react/jsx-runtime.js","webpack://mattermost-webapp/../node_modules/regenerator-runtime/runtime.js","webpack://mattermost-webapp/../node_modules/rudder-sdk-js/index.js","webpack://mattermost-webapp/../node_modules/to-camel-case/index.js","webpack://mattermost-webapp/../node_modules/to-no-case/index.js","webpack://mattermost-webapp/../node_modules/to-space-case/index.js","webpack://mattermost-webapp/../node_modules/turndown/lib/turndown.browser.es.js","webpack://mattermost-webapp/../node_modules/highlight.js/lib/core.js","webpack://mattermost-webapp/./node_modules/@floating-ui/react/dist/floating-ui.react.utils.mjs","webpack://mattermost-webapp/../node_modules/tabbable/dist/index.esm.js","webpack://mattermost-webapp/./node_modules/@floating-ui/react/dist/floating-ui.react.mjs","webpack://mattermost-webapp/../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://mattermost-webapp/../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://mattermost-webapp/../node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://mattermost-webapp/../node_modules/@babel/runtime/helpers/esm/extends.js","webpack://mattermost-webapp/../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://mattermost-webapp/../node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://mattermost-webapp/../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://mattermost-webapp/../node_modules/@babel/runtime/helpers/esm/objectSpread.js","webpack://mattermost-webapp/../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack://mattermost-webapp/../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://mattermost-webapp/../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://mattermost-webapp/../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://mattermost-webapp/../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","webpack://mattermost-webapp/../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","webpack://mattermost-webapp/../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","webpack://mattermost-webapp/../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs","webpack://mattermost-webapp/../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","webpack://mattermost-webapp/../node_modules/highlight.js/es/core.js","webpack://mattermost-webapp/../node_modules/compute-scroll-into-view/dist/index.js","webpack://mattermost-webapp/../node_modules/scroll-into-view-if-needed/dist/index.js","webpack://mattermost-webapp/../node_modules/smooth-scroll-into-view-if-needed/dist/index.js","webpack://mattermost-webapp/../node_modules/tinycolor2/esm/tinycolor.js","webpack://mattermost-webapp/../node_modules/web-vitals/dist/web-vitals.attribution.js"],"sourcesContent":["import { Utils, FONT_COLORS, FONT_MARGINS, FONT_WEIGHTS } from '../../shared';\nconst DEFAULT_HEADING_SIZE = 100;\nconst HEADING_ELEMENTS = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\nconst DEFAULT_HEADING_ELEMENT_SIZES = {\n h1: 800,\n h2: 700,\n h3: 600,\n h4: 500,\n h5: 400,\n h6: 300,\n};\nconst HEADING_SIZES = [\n 0, 25, 50, 75, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000,\n];\nconst HEADING_DEFINITIONS = {\n 0: {\n size: 8,\n lineHeight: 14,\n },\n 25: {\n size: 10,\n lineHeight: 16,\n },\n 50: {\n size: 11,\n lineHeight: 16,\n },\n 75: {\n size: 12,\n lineHeight: 16,\n },\n 100: {\n size: 14,\n lineHeight: 20,\n },\n 200: {\n size: 16,\n lineHeight: 24,\n },\n 300: {\n size: 18,\n lineHeight: 24,\n },\n 400: {\n size: 20,\n lineHeight: 28,\n },\n 500: {\n size: 22,\n lineHeight: 28,\n },\n 600: {\n size: 25,\n lineHeight: 30,\n },\n 700: {\n size: 28,\n lineHeight: 36,\n },\n 800: {\n size: 32,\n lineHeight: 40,\n },\n 900: {\n size: 36,\n lineHeight: 44,\n },\n 1000: {\n size: 40,\n lineHeight: 48,\n },\n};\nHEADING_SIZES.forEach((sizeToken) => {\n HEADING_DEFINITIONS[sizeToken].marginTop = Utils.getFontMargin(HEADING_DEFINITIONS[sizeToken].size, 8 / 9);\n HEADING_DEFINITIONS[sizeToken].marginBottom = Utils.getFontMargin(HEADING_DEFINITIONS[sizeToken].size, 0.5);\n});\nconst DEFAULT_HEADING_ELEMENT = 'h6';\nconst DEFAULT_HEADING_WEIGHT = 'bold';\nconst DEFAULT_HEADING_MARGIN = 'both';\nconst DEFAULT_HEADING_COLOR = 'inherit';\nexport { HEADING_DEFINITIONS, HEADING_SIZES, DEFAULT_HEADING_SIZE, HEADING_ELEMENTS, DEFAULT_HEADING_ELEMENT, DEFAULT_HEADING_ELEMENT_SIZES, FONT_WEIGHTS as HEADING_WEIGHTS, DEFAULT_HEADING_WEIGHT, FONT_MARGINS as HEADING_MARGINS, DEFAULT_HEADING_MARGIN, FONT_COLORS as HEADING_COLORS, DEFAULT_HEADING_COLOR, };\n","import { css } from 'styled-components';\nimport { FONT_TYPE_FAMILIES, FONT_WEIGHT_MAP, Utils } from '../../shared';\nimport { HEADING_DEFINITIONS } from './Heading.constants';\nconst applyHeadingStyles = ({ inheritLineHeight, size, weight, }) => css `\n font-family: ${FONT_TYPE_FAMILIES.heading};\n ${weight\n ? css `\n font-weight: ${FONT_WEIGHT_MAP[weight]};\n `\n : null};\n ${Utils.isNumber(size)\n ? css `\n font-size: ${HEADING_DEFINITIONS[size].size}px;\n line-height: ${inheritLineHeight\n ? 'inherit'\n : `${HEADING_DEFINITIONS[size].lineHeight}px`};\n `\n : null};\n`;\nconst applyHeadingMargin = ({ margin, size, }) => {\n if (!margin || !size) {\n return null;\n }\n let marginValue = `${HEADING_DEFINITIONS[size].marginTop}px 0 ${HEADING_DEFINITIONS[size].marginBottom}px`;\n switch (margin) {\n case 'none':\n marginValue = '0';\n break;\n case 'bottom':\n marginValue = `0 0 ${HEADING_DEFINITIONS[size].marginBottom}px`;\n break;\n case 'top':\n marginValue = `${HEADING_DEFINITIONS[size].marginTop}px 0 0`;\n break;\n default:\n }\n return css `\n margin: ${marginValue};\n `;\n};\nconst applyHeadingColor = ({ color, theme }) => {\n if (color === 'inherit') {\n return css `\n color: inherit;\n `;\n }\n if (Utils.isColor(color)) {\n return css `\n color: ${color};\n `;\n }\n return css `\n color: ${(theme === null || theme === void 0 ? void 0 : theme.text[color]) || 'inherit'};\n `;\n};\nexport { applyHeadingStyles, applyHeadingColor, applyHeadingMargin };\n","import styled, { css } from 'styled-components';\nimport { Utils } from '../../shared';\nimport { applyHeadingColor, applyHeadingMargin, applyHeadingStyles } from './Heading.mixins';\nconst HeadingRoot = styled.h6.withConfig({\n shouldForwardProp: (property, validator) => Utils.blockProperty(property) && validator(property),\n})(({ theme, inheritLineHeight, color, margin, size, weight, }) => css `\n ${applyHeadingStyles({ inheritLineHeight, size, weight })};\n ${applyHeadingColor({ color, theme })};\n ${applyHeadingMargin({ margin, size })};\n\n // animation\n body.enable-animations & {\n transition: color ${theme.animation.fastest} 0s ease-in-out;\n }\n `);\nexport default HeadingRoot;\n","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React from 'react';\nimport { Utils } from '../../shared';\nimport { DEFAULT_HEADING_COLOR, DEFAULT_HEADING_ELEMENT, DEFAULT_HEADING_MARGIN, DEFAULT_HEADING_SIZE, DEFAULT_HEADING_WEIGHT, HEADING_COLORS, HEADING_ELEMENTS, HEADING_MARGINS, HEADING_SIZES, HEADING_WEIGHTS, } from './Heading.constants';\nimport HeadingRoot from './Heading.root';\nconst Heading = (_a) => {\n var { inheritLineHeight = false, color = DEFAULT_HEADING_COLOR, element = DEFAULT_HEADING_ELEMENT, margin = DEFAULT_HEADING_MARGIN, size = DEFAULT_HEADING_SIZE, weight = DEFAULT_HEADING_WEIGHT } = _a, rest = __rest(_a, [\"inheritLineHeight\", \"color\", \"element\", \"margin\", \"size\", \"weight\"]);\n // Whenever this component is used with an element that is not supported within the headings throw an error!\n Utils.assert(HEADING_ELEMENTS.includes(element) || React.isValidElement(element), `Compass Components: Heading component was used with an unsupported element '${element}'.\n Please provide one from these available options: ${HEADING_ELEMENTS.join(', ')}, or a valid \\`ReactElement\\`.`);\n Utils.assert(HEADING_COLORS.includes(color) || Utils.isColor(color), `Compass Components - Heading: component was used with an unsupported color '${color}'.\n Please provide one from these available options: ${HEADING_COLORS.join(', ')}, or a valid CSS color value`, true);\n Utils.assert(HEADING_SIZES.includes(size), `Compass Components - Heading: component was used with an unsupported size '${size}'.\n Please provide one from these available options: ${HEADING_SIZES.join(', ')}.`, true);\n Utils.assert(HEADING_MARGINS.includes(margin), `Compass Components - Heading: component was used with an unsupported margin '${margin}'.\n Please provide one from these available options: ${HEADING_MARGINS.join(', ')}.`, true);\n Utils.assert(HEADING_WEIGHTS.includes(weight), `Compass Components - Heading: component was used with an unsupported weight '${weight}'.\n Please provide one from these available options: ${HEADING_WEIGHTS.join(', ')}.`, true);\n const rootProperties = Object.assign({ inheritLineHeight,\n color,\n margin,\n size,\n weight }, rest);\n return React.createElement(HeadingRoot, Object.assign({ as: element }, rootProperties));\n};\nexport default Heading;\n","import HeadingRoot from './Heading';\nexport * from './Heading.constants';\nexport * from './Heading.mixins';\nexport * from './Heading.props';\nexport * from './Heading.types';\nexport default HeadingRoot;\n","const ICON_BUTTON_SIZES = ['xs', 'sm', 'md', 'lg'];\nconst ICON_BUTTON_SIZE_LABELS = {\n xs: 'x-small',\n sm: 'small',\n md: 'medium',\n lg: 'large',\n};\nconst DEFAULT_ICON_BUTTON_SIZE = 'md';\nconst ICON_BUTTON_ELEMENTS = ['div', 'button', 'checkbox'];\nconst DEFAULT_ICON_BUTTON_ELEMENT = 'button';\n/**\n * TODO@all: since the IconButton will be the only component that supports a\n * compact version we will have an extra property in the definitions\n * for that. Once we have more than this we should definitely try to\n * extract that to the `applyMargin` and `applyPadding` functions.\n */\nconst ICON_BUTTON_DEFINITIONS = {\n xs: {\n compactSpacing: 50,\n spacing: 75,\n iconSize: 12,\n fontSize: 75,\n },\n sm: {\n compactSpacing: 75,\n spacing: 100,\n iconSize: 16,\n fontSize: 100,\n },\n md: {\n compactSpacing: 100,\n spacing: 125,\n iconSize: 20,\n fontSize: 100,\n },\n lg: {\n compactSpacing: 100,\n spacing: 125,\n iconSize: 28,\n fontSize: 200,\n },\n};\nexport { ICON_BUTTON_SIZES, ICON_BUTTON_ELEMENTS, DEFAULT_ICON_BUTTON_ELEMENT, DEFAULT_ICON_BUTTON_SIZE, ICON_BUTTON_SIZE_LABELS, ICON_BUTTON_DEFINITIONS, };\n","const ELEVATION_LEVELS = [0, 1, 2, 3, 4, 5, 6];\nconst DEFAULT_ELEVATION_LEVEL = 0;\nconst ELEVATION_DEFINITIONS = {\n 0: { offsetY: 0, blurRadius: 0 },\n 1: { offsetY: 2, blurRadius: 3 },\n 2: { offsetY: 4, blurRadius: 6 },\n 3: { offsetY: 6, blurRadius: 14 },\n 4: { offsetY: 8, blurRadius: 24 },\n 5: { offsetY: 12, blurRadius: 32 },\n 6: { offsetY: 20, blurRadius: 32 },\n};\nexport { ELEVATION_LEVELS, DEFAULT_ELEVATION_LEVEL, ELEVATION_DEFINITIONS };\n","import { DEFAULT_ELEVATION_LEVEL } from '../../utilities/elevation';\nconst SHAPE_BORDER_RADII = [0, 2, 4, 8, 12, 16, 20, 24, 'circle', 'pill'];\nconst DEFAULT_SHAPE_BORDER_RADIUS = 4;\nconst SHAPE_ELEMENTS = ['div', 'span', 'section', 'aside', 'button'];\nconst DEFAULT_SHAPE_ELEMENT = 'div';\nexport { DEFAULT_ELEVATION_LEVEL as DEFAULT_SHAPE_ELEVATION_LEVEL, SHAPE_BORDER_RADII, DEFAULT_SHAPE_BORDER_RADIUS, SHAPE_ELEMENTS, DEFAULT_SHAPE_ELEMENT, };\n","import { css } from 'styled-components';\nimport { Utils } from '../../shared';\nimport { DEFAULT_SHAPE_BORDER_RADIUS, SHAPE_BORDER_RADII } from './Shape.constants';\n/**\n * apply a shape to a given element without the use of an additional wrapping Shape component.\n *\n * @param {(number|string)?} width\n * @param {(number|string)?} height\n * @param {TShapeBorderRadius} radius\n * @returns {FlattenSimpleInterpolation}\n */\nfunction applyShape({ width, height, radius = DEFAULT_SHAPE_BORDER_RADIUS, }) {\n // define the variant by checking for string\n const variant = Utils.isString(radius) ? radius : 'rectangle';\n if (variant === 'circle') {\n // the circle variant has to have numerical width set for it to work\n Utils.assert(Utils.isNumber(width), 'applyShape: When choosing `circle` as value for `radius` the width needs to be of type `number`');\n }\n // check if the value for border-radius is in the pre-defined range\n Utils.assert(SHAPE_BORDER_RADII.includes(radius), `applyShape: Please provide a \\`radius\\` value that meets the requirement. Valid options are: ${SHAPE_BORDER_RADII.join(', ')}.`);\n const RADII = {\n rectangle: `${radius}px`,\n circle: '50%',\n pill: '1000px',\n };\n // checking for width >= 0 is necesary here, since we might have the\n // possibility of \"hidden\" shapes (with width = 0 and height = 0)\n if (variant === 'circle' && Utils.isNumber(width) && width >= 0) {\n return css `\n border-radius: ${RADII[variant]};\n\n width: ${Utils.getPxValue(width)};\n height: ${Utils.getPxValue(width)};\n\n flex-basis: ${Utils.getPxValue(width)}; // adding this in for flex: 0 elements\n `;\n }\n return css `\n border-radius: ${RADII[variant]};\n\n ${width\n ? css `\n width: ${Utils.getPxValue(width)};\n flex-basis: ${Utils.getPxValue(width)};\n `\n : null};\n height: ${height ? Utils.getPxValue(height) : null};\n `;\n}\nexport default applyShape;\n","import styled, { css } from 'styled-components';\nimport applyElevation from '../../utilities/elevation';\nimport { applyMargin, applyPadding } from '../../utilities/spacing';\nimport { Utils } from '../../shared';\nimport applyShape from './Shape.mixins';\nconst ShapeRoot = styled.div.withConfig({\n shouldForwardProp: (property, validator) => Utils.blockProperty(property, ['width', 'height', 'radius', 'elevation', 'element']) &&\n validator(property),\n})(({ radius, elevation, elevationOnHover, width, height, theme, padding, margin, backgroundColor = theme.background.shape, }) => css `\n display: flex;\n background-color: ${backgroundColor};\n\n ${applyShape({ width, height, radius })};\n ${applyElevation({ elevation, elevationOnHover }, theme.type === 'dark')};\n\n ${padding && applyPadding(padding)};\n ${margin && applyMargin(margin)};\n `);\nexport default ShapeRoot;\n","import { css } from 'styled-components';\nimport { ELEVATION_DEFINITIONS } from './Elevation.constants';\n/**\n * Apply elevation styles to a styled component.\n * When the elevationOnHover is not the same as the elevation value\n * it will create hover styles as well.\n *\n * @param {number} elevation\n * @param {number} elevationOnHover\n * @param {boolean} darkTheme\n * @returns {FlattenSimpleInterpolation}\n */\nfunction applyElevation({ elevation = 0, elevationOnHover = elevation }, darkTheme) {\n if (elevation === 0 && elevationOnHover === 0) {\n return null;\n }\n const { offsetY, blurRadius } = ELEVATION_DEFINITIONS[elevation];\n const opacity = darkTheme ? 0.32 : 0.08;\n if (elevation !== elevationOnHover) {\n const { offsetY: hoverOffsetY, blurRadius: hoverBlurRadius } = ELEVATION_DEFINITIONS[elevationOnHover];\n return css `\n box-shadow: 0 ${offsetY}px ${blurRadius}px rgba(0, 0, 0, ${opacity});\n z-index: ${elevation || 0};\n\n &:hover {\n box-shadow: 0 ${hoverOffsetY}px ${hoverBlurRadius}px rgba(0, 0, 0, ${opacity});\n }\n `;\n }\n return css `\n box-shadow: 0 ${offsetY}px ${blurRadius}px rgba(0, 0, 0, ${opacity});\n z-index: ${elevation || 0};\n `;\n}\nexport default applyElevation;\n","import styled, { css } from 'styled-components';\nimport { setAlpha, Utils } from '../../shared';\nimport { resetButton } from '../../utilities/theme/global-styles/reset-styles';\nimport Spacing, { applyMargin, applyPadding } from '../../utilities/spacing';\nimport { applyShape } from '../../foundations/shape';\nimport { applyTextStyles } from '../text';\nimport { ICON_BUTTON_DEFINITIONS } from './IconButton.constants';\nconst IconButtonRoot = styled.button.withConfig({\n shouldForwardProp: (property, validator) => Utils.blockProperty(property) && validator(property),\n})(({ size, compact, inverted, toggled, active, destructive, disabled, theme: { palette, action, text, animation, noStyleReset }, }) => {\n const isDefault = !inverted && !destructive && !toggled;\n const { main, contrast } = destructive && !toggled ? palette.alert : palette.primary;\n const { spacing, compactSpacing, fontSize } = ICON_BUTTON_DEFINITIONS[size];\n const colors = {\n background: main,\n text: toggled ? contrast : text.primary,\n };\n const opacities = {\n background: {\n default: toggled ? 1 : 0,\n hover: toggled ? 0.92 : 0.08,\n active: inverted ? 0.16 : 0.08,\n },\n text: {\n default: toggled ? 1 : 0.56,\n hover: toggled ? 1 : 0.72,\n active: 1,\n },\n };\n if (inverted) {\n colors.background = contrast;\n colors.text = toggled ? main : contrast;\n }\n if (destructive && !toggled) {\n colors.background = main;\n colors.text = inverted ? contrast : main;\n opacities.background.hover = inverted ? 0.8 : 0.08;\n opacities.background.active = inverted ? 1 : 0.16;\n }\n // override some values for disabled icon-buttons\n if (disabled) {\n // set colors to the 'disabled'-grey\n colors.text = action.disabled;\n // icon and text are slightly opaque with disabled buttons\n opacities.background.default = 0;\n opacities.text.default = 0.32;\n }\n const activeStyles = css `\n background: ${setAlpha(colors.background, opacities.background.active)};\n color: ${setAlpha(inverted ? contrast : main, opacities.text.active)};\n `;\n const actionStyles = disabled\n ? css `\n cursor: not-allowed;\n `\n : css `\n :hover {\n background: ${setAlpha(isDefault ? action.hover : colors.background, opacities.background.hover)};\n color: ${setAlpha(colors.text, opacities.text.hover)};\n }\n\n :active {\n ${activeStyles};\n }\n\n &:focus {\n box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.32),\n inset 0 0 0 2px ${destructive ? palette.alert.main : main};\n }\n\n &:focus:not(:focus-visible) {\n box-shadow: none;\n }\n\n &:focus-visible {\n box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.32),\n inset 0 0 0 2px ${destructive ? palette.alert.main : main};\n }\n `;\n return css `\n ${noStyleReset && resetButton}\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n cursor: pointer;\n\n color: ${setAlpha(colors.text, opacities.text.default)};\n background: ${setAlpha(colors.background, opacities.background.default)};\n\n ${applyShape({ radius: 4 })};\n ${applyPadding(Spacing.all(compact ? compactSpacing : spacing))};\n\n span {\n ${applyMargin(Spacing.only('left', 75))};\n ${applyTextStyles({\n size: fontSize,\n weight: 'bold',\n inheritLineHeight: true,\n })};\n }\n\n ${actionStyles};\n\n ${active && activeStyles}\n\n transition: background ${animation.fast} ease-in-out,\n color ${animation.fast} ease-in-out, box-shadow ${animation.fast} ease-in-out;\n `;\n});\nexport default IconButtonRoot;\n","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React from 'react';\nimport Icon from '../../foundations/icon';\nimport { Utils } from '../../shared';\nimport { DEFAULT_ICON_BUTTON_ELEMENT, DEFAULT_ICON_BUTTON_SIZE, ICON_BUTTON_DEFINITIONS, } from './IconButton.constants';\nimport IconButtonRoot from './IconButton.root';\n/**\n * we need to pass it into `React.forwardRef`, since functional components do\n * not allow refs to be passed on in any other way.\n *\n * This is needed for some components to hold a reference to the `parent`- or\n * `trigger`-component (such as in the `Popover` component)\n */\nconst IconButton = React.forwardRef((_a, reference) => {\n var { icon, element = DEFAULT_ICON_BUTTON_ELEMENT, size = DEFAULT_ICON_BUTTON_SIZE, compact = false, inverted = false, toggled = false, active = false, destructive = false, disabled = false, label, onClick } = _a, rest = __rest(_a, [\"icon\", \"element\", \"size\", \"compact\", \"inverted\", \"toggled\", \"active\", \"destructive\", \"disabled\", \"label\", \"onClick\"]);\n Utils.assert((!destructive && !toggled) || (destructive && !toggled) || (toggled && !destructive), 'Compass Components: IconButton component was used with both `destructive` and `toggled` properties set to true. Please use only one of the options', true);\n const isDisabled = disabled || !Utils.isFunction(onClick);\n const rootProperties = {\n size,\n compact,\n inverted,\n toggled,\n active,\n destructive,\n disabled: isDisabled,\n onClick,\n };\n return (React.createElement(IconButtonRoot, Object.assign({ ref: reference, as: element }, rootProperties, rest),\n React.createElement(Icon, { glyph: icon, size: ICON_BUTTON_DEFINITIONS[size].iconSize }),\n label && React.createElement(\"span\", null, label)));\n});\nexport default IconButton;\n","import IconButton from './IconButton';\nexport * from './IconButton.constants';\nexport * from './IconButton.props';\nexport * from './IconButton.types';\nexport default IconButton;\n","const STATUSICON_SIZES = ['xs', 'sm', 'md', 'lg', 'xl'];\nconst DEFAULT_STATUSICON_SIZE = 'md';\nconst STATUSICON_STATUSES = ['online', 'away', 'dnd', 'offline'];\nconst DEFAULT_STATUSICON_STATUS = 'offline';\nconst STATUSICON_SIZE_MAP = {\n xs: 10,\n sm: 12,\n md: 16,\n lg: 20,\n xl: 32,\n};\nconst STATUSICON_SIZE_LABELS = {\n xs: 'x-small',\n sm: 'small',\n md: 'medium',\n lg: 'large',\n xl: 'x-large',\n};\nconst STATUSICON_STATUS_LABELS = {\n online: 'online',\n away: 'away',\n dnd: 'do not disturb',\n offline: 'offline',\n};\nexport { STATUSICON_SIZES, DEFAULT_STATUSICON_SIZE, STATUSICON_SIZE_MAP, STATUSICON_SIZE_LABELS, STATUSICON_STATUSES, DEFAULT_STATUSICON_STATUS, STATUSICON_STATUS_LABELS, };\n","import styled, { css } from 'styled-components';\nimport Icon from '../../foundations/icon';\nimport { Utils } from '../../shared';\nconst StatusIconRoot = styled(Icon).withConfig({\n shouldForwardProp: (property, validator) => Utils.forceForwardProperty(property, ['glyph', 'size']) ||\n (Utils.blockProperty(property) && validator(property)),\n})(({ theme, status, }) => css `\n color: ${theme.badges[status]};\n `);\nexport default StatusIconRoot;\n","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React from 'react';\nimport { DEFAULT_STATUSICON_SIZE, STATUSICON_SIZE_MAP } from './StatusIcon.constants';\nimport StatusIconRoot from './StatusIcon.root';\nconst StatusIcon = (_a) => {\n var { status, size = DEFAULT_STATUSICON_SIZE } = _a, rest = __rest(_a, [\"status\", \"size\"]);\n let glyph = 'circle-outline';\n switch (status) {\n case 'away':\n glyph = 'clock';\n break;\n case 'dnd':\n glyph = 'minus-circle';\n break;\n case 'online':\n glyph = 'check-circle';\n break;\n case 'offline':\n default:\n }\n const rootProperties = Object.assign({ status,\n glyph, size: STATUSICON_SIZE_MAP[size] }, rest);\n return React.createElement(StatusIconRoot, Object.assign({}, rootProperties));\n};\nexport default StatusIcon;\n","import StatusIcon from './StatusIcon';\nexport * from './StatusIcon.constants';\nexport * from './StatusIcon.props';\nexport * from './StatusIcon.types';\nexport default StatusIcon;\n","import { Utils, FONT_COLORS } from '../../shared';\nconst TEXT_SIZES = [25, 50, 75, 100, 200, 300];\nconst DEFAULT_TEXT_SIZE = 100;\nconst TEXT_ELEMENTS = ['p', 'span', 'label'];\nconst DEFAULT_TEXT_ELEMENT = 'p';\nconst TEXT_WEIGHTS = ['light', 'regular', 'bold'];\nconst DEFAULT_TEXT_WEIGHT = 'regular';\nconst TEXT_MARGINS = ['none', 'both', 'bottom', 'top'];\nconst DEFAULT_TEXT_MARGIN = 'both';\nconst DEFAULT_TEXT_COLOR = 'inherit';\nconst TEXT_DEFINITIONS = {\n 25: {\n size: 10,\n lineHeight: 16,\n },\n 50: {\n size: 11,\n lineHeight: 16,\n },\n 75: {\n size: 12,\n lineHeight: 16,\n },\n 100: {\n size: 14,\n lineHeight: 20,\n },\n 200: {\n size: 16,\n lineHeight: 24,\n },\n 300: {\n size: 18,\n lineHeight: 28,\n },\n};\nTEXT_SIZES.forEach((sizeToken) => {\n TEXT_DEFINITIONS[sizeToken].margin = Utils.getFontMargin(TEXT_DEFINITIONS[sizeToken].size, 0.75);\n});\nexport { TEXT_SIZES, DEFAULT_TEXT_SIZE, TEXT_ELEMENTS, DEFAULT_TEXT_ELEMENT, TEXT_WEIGHTS, DEFAULT_TEXT_WEIGHT, TEXT_MARGINS, DEFAULT_TEXT_MARGIN, FONT_COLORS as TEXT_COLORS, DEFAULT_TEXT_COLOR, TEXT_DEFINITIONS, };\n","import { css } from 'styled-components';\nimport { FONT_TYPE_FAMILIES, FONT_WEIGHT_MAP, Utils } from '../../shared';\nimport { DEFAULT_TEXT_MARGIN, DEFAULT_TEXT_SIZE, DEFAULT_TEXT_WEIGHT, TEXT_DEFINITIONS, } from './Text.constants';\nconst applyTextStyles = ({ inheritLineHeight = false, size = DEFAULT_TEXT_SIZE, weight = DEFAULT_TEXT_WEIGHT, }) => {\n const lineHeight = inheritLineHeight ? 'inherit' : `${TEXT_DEFINITIONS[size].lineHeight}px`;\n return css `\n font-family: ${FONT_TYPE_FAMILIES.body};\n font-weight: ${FONT_WEIGHT_MAP[weight]};\n font-size: ${TEXT_DEFINITIONS[size].size}px;\n line-height: ${lineHeight};\n `;\n};\nconst applyTextMargin = ({ margin = DEFAULT_TEXT_MARGIN, size = DEFAULT_TEXT_SIZE, }) => {\n if (margin === 'none') {\n return css `\n margin: 0;\n `;\n }\n let marginValue = `${TEXT_DEFINITIONS[size].margin}px 0`;\n switch (margin) {\n case 'bottom':\n marginValue = `0 0 ${TEXT_DEFINITIONS[size].margin}px`;\n break;\n case 'top':\n marginValue = `${TEXT_DEFINITIONS[size].margin}px 0 0`;\n break;\n default:\n }\n return css `\n margin: ${marginValue};\n `;\n};\nconst applyTextColor = ({ color, theme }) => {\n if (color === 'inherit') {\n return css `\n color: inherit;\n `;\n }\n if (Utils.isColor(color)) {\n return css `\n color: ${color};\n `;\n }\n return css `\n color: ${(theme === null || theme === void 0 ? void 0 : theme.text[color]) || 'inherit'};\n `;\n};\nexport { applyTextStyles, applyTextColor, applyTextMargin };\n","import styled, { css } from 'styled-components';\nimport { Utils } from '../../shared';\nimport { applyTextColor, applyTextMargin, applyTextStyles } from './Text.mixins';\nconst TextRoot = styled.p.withConfig({\n shouldForwardProp: (property, validator) => Utils.blockProperty(property, ['color', 'size']) && validator(property),\n})(({ theme, inheritLineHeight, color, margin, size, weight, }) => css `\n ${applyTextStyles({ inheritLineHeight, size, weight })};\n ${applyTextColor({ color, theme })};\n ${applyTextMargin({ margin, size })};\n\n body.enable-animations & {\n transition: color ${theme.animation.fastest} 0s ease-in-out;\n }\n `);\nexport default TextRoot;\n","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React from 'react';\nimport { Utils } from '../../shared';\nimport { DEFAULT_TEXT_COLOR, DEFAULT_TEXT_ELEMENT, DEFAULT_TEXT_MARGIN, DEFAULT_TEXT_SIZE, DEFAULT_TEXT_WEIGHT, TEXT_COLORS, TEXT_ELEMENTS, TEXT_MARGINS, TEXT_SIZES, TEXT_WEIGHTS, } from './Text.constants';\nimport TextRoot from './Text.root';\nconst Text = (_a) => {\n var { inheritLineHeight = false, color = DEFAULT_TEXT_COLOR, element = DEFAULT_TEXT_ELEMENT, margin = DEFAULT_TEXT_MARGIN, size = DEFAULT_TEXT_SIZE, weight = DEFAULT_TEXT_WEIGHT } = _a, rest = __rest(_a, [\"inheritLineHeight\", \"color\", \"element\", \"margin\", \"size\", \"weight\"]);\n Utils.assert(TEXT_ELEMENTS.includes(element) || React.isValidElement(element), `Compass Components - Text: component was used with an unsupported element '${element}'.\n Please provide one from these available options: ${TEXT_ELEMENTS.join(', ')}, or a valid \\`ReactElement\\``, true);\n Utils.assert(TEXT_COLORS.includes(color) || Utils.isColor(color), `Compass Components - Text: component was used with an unsupported color '${color}'.\n Please provide one from these available options: ${TEXT_WEIGHTS.join(', ')}, or a valid CSS color value`, true);\n Utils.assert(TEXT_SIZES.includes(size), `Compass Components - Text: component was used with an unsupported size '${size}'.\n Please provide one from these available options: ${TEXT_SIZES.join(', ')}.`, true);\n Utils.assert(TEXT_MARGINS.includes(margin), `Compass Components - Text: component was used with an unsupported margin '${margin}'.\n Please provide one from these available options: ${TEXT_MARGINS.join(', ')}.`, true);\n Utils.assert(TEXT_WEIGHTS.includes(weight), `Compass Components - Text: component was used with an unsupported weight '${weight}'.\n Please provide one from these available options: ${TEXT_WEIGHTS.join(', ')}.`, true);\n const rootProperties = Object.assign({ inheritLineHeight,\n color,\n margin,\n size,\n weight }, rest);\n return React.createElement(TextRoot, Object.assign({ as: element }, rootProperties));\n};\nexport default Text;\n","import Text from './Text';\nexport * from './Text.constants';\nexport * from './Text.mixins';\nexport * from './Text.props';\nexport * from './Text.types';\nexport default Text;\n","const blue = {\n 100: 'rgb(165, 190, 243)',\n 200: 'rgb(129, 163, 239)',\n 300: 'rgb(93, 137, 234)',\n 400: 'rgb(56, 111, 229)',\n 500: 'rgb(28, 88, 217)',\n 600: 'rgb(23, 73, 181)',\n 700: 'rgb(19, 59, 144)',\n 800: 'rgb(14, 44, 108)',\n};\nexport default blue;\n","const green = {\n 100: 'rgb(179, 230, 209)',\n 200: 'rgb(148, 219, 191)',\n 300: 'rgb(117, 209, 172)',\n 400: 'rgb(87, 199, 154)',\n 500: 'rgb(61, 184, 135)',\n 600: 'rgb(51, 153, 112)',\n 700: 'rgb(41, 122, 90)',\n 800: 'rgb(31, 92, 67)',\n};\nexport default green;\n","const indigo = {\n 100: 'rgb(116, 146, 210)',\n 200: 'rgb(60, 100, 185)',\n 300: 'rgb(50, 83, 154)',\n 400: 'rgb(40, 66, 123)',\n 500: 'rgb(30, 50, 92)',\n 600: 'rgb(20, 33, 62)',\n 700: 'rgb(15, 25, 46)',\n 800: 'rgb(10, 17, 31)',\n};\nexport default indigo;\n","const neutral = {\n 0: 'rgb(255, 255, 255)',\n 50: 'rgb(244, 244, 246)',\n 100: 'rgb(232, 233, 237)',\n 150: 'rgb(221, 223, 228)',\n 200: 'rgb(209, 212, 219)',\n 250: 'rgb(198, 201, 210)',\n 300: 'rgb(186, 190, 201)',\n 350: 'rgb(175, 179, 192)',\n 400: 'rgb(164, 169, 183)',\n 450: 'rgb(152, 158, 174)',\n 500: 'rgb(141, 147, 165)',\n 550: 'rgb(129, 136, 156)',\n 600: 'rgb(118, 125, 147)',\n 650: 'rgb(108, 115, 137)',\n 700: 'rgb(99, 105, 126)',\n 750: 'rgb(90, 96, 114)',\n 800: 'rgb(81, 86, 103)',\n 850: 'rgb(72, 77, 91)',\n 900: 'rgb(63, 67, 80)',\n 950: 'rgb(54, 58, 69)',\n 1000: 'rgb(45, 48, 57)',\n 1050: 'rgb(36, 38, 46)',\n 1100: 'rgb(27, 29, 34)',\n 1150: 'rgb(18, 19, 23)',\n 1200: 'rgb(9, 10, 11)',\n 1250: 'rgb(0, 0, 0)',\n};\nexport default neutral;\n","const orange = {\n 100: 'rgb(246, 201, 162)',\n 200: 'rgb(243, 180, 124)',\n 300: 'rgb(239, 158, 87)',\n 400: 'rgb(236, 137, 50)',\n 500: 'rgb(224, 116, 21)',\n 600: 'rgb(187, 96, 17)',\n 700: 'rgb(149, 77, 14)',\n 800: 'rgb(112, 58, 10)',\n};\nexport default orange;\n","const purple = {\n 100: 'rgb(183, 186, 225)',\n 200: 'rgb(154, 158, 213)',\n 300: 'rgb(126, 131, 201)',\n 400: 'rgb(97, 103, 189)',\n 500: 'rgb(72, 79, 173)',\n 600: 'rgb(60, 66, 144)',\n 700: 'rgb(48, 53, 115)',\n 800: 'rgb(36, 39, 86)',\n};\nexport default purple;\n","const red = {\n 100: 'rgb(235, 173, 174)',\n 200: 'rgb(226, 141, 142)',\n 300: 'rgb(218, 108, 110)',\n 400: 'rgb(210, 75, 78)',\n 500: 'rgb(196, 49, 51)',\n 600: 'rgb(163, 41, 43)',\n 700: 'rgb(131, 33, 34)',\n 800: 'rgb(98, 24, 26)',\n};\nexport default red;\n","const teal = {\n 100: 'rgb(164, 244, 244)',\n 200: 'rgb(127, 240, 240)',\n 300: 'rgb(91, 236, 236)',\n 400: 'rgb(54, 231, 231)',\n 500: 'rgb(26, 219, 219)',\n 600: 'rgb(21, 183, 183)',\n 700: 'rgb(17, 146, 146)',\n 800: 'rgb(13, 110, 110)',\n};\nexport default teal;\n","const yellow = {\n 100: 'rgb(255, 224, 153)',\n 200: 'rgb(255, 212, 112)',\n 300: 'rgb(255, 200, 71)',\n 400: 'rgb(255, 188, 31)',\n 500: 'rgb(245, 171, 0)',\n 600: 'rgb(204, 143, 0)',\n 700: 'rgb(163, 114, 0)',\n 800: 'rgb(122, 86, 0)',\n};\nexport default yellow;\n","import IconGlyphs from '@mattermost/compass-icons/IconGlyphs';\nconst DEFAULT_ICON_SIZE = 20;\nconst ICON_SIZES = [8, 10, 12, 16, 20, 28, 32, 40, 52, 64, 104];\nconst ICON_FONT_SIZES = {\n 8: 10,\n 10: 12,\n 12: 14,\n 16: 18,\n 20: 24,\n 28: 31,\n 32: 36,\n 40: 48,\n 52: 60,\n 64: 72,\n 104: 120,\n};\nconst ICON_GLYPHS = [\n 'none',\n ...IconGlyphs.map((glyph) => glyph),\n];\nconst DEFAULT_ICON_GLYPH = 'mattermost';\nconst ICON_COLORS = [\n 'inherit',\n 'primary',\n 'secondary',\n 'alert',\n 'warning',\n 'success',\n];\nconst DEFAULT_ICON_COLOR = 'inherit';\nexport { ICON_SIZES, DEFAULT_ICON_SIZE, ICON_FONT_SIZES, ICON_GLYPHS, DEFAULT_ICON_GLYPH, ICON_COLORS, DEFAULT_ICON_COLOR, };\n","import styled, { css } from 'styled-components';\nimport { Utils } from '../../shared';\nimport { DEFAULT_ICON_SIZE, ICON_FONT_SIZES } from './Icon.constants';\nfunction getIconSizes({ size }) {\n return css `\n height: ${size}px;\n width: ${size}px;\n\n &::before {\n font-size: ${ICON_FONT_SIZES[size]}px;\n letter-spacing: ${ICON_FONT_SIZES[size]}px;\n }\n `;\n}\nconst IconRoot = styled.i.withConfig({\n shouldForwardProp: (property, validator) => Utils.blockProperty(property) && validator(property),\n})(({ theme, color }) => css `\n // element container base styles\n position: relative;\n justify-content: center;\n width: 20px;\n height: 20px;\n padding: 0;\n\n display: inline-flex;\n align-items: center;\n\n color: inherit;\n\n // sub elements\n &::before {\n font-size: ${ICON_FONT_SIZES[DEFAULT_ICON_SIZE]}px;\n line-height: 1;\n letter-spacing: ${ICON_FONT_SIZES[DEFAULT_ICON_SIZE]}px;\n margin: 0; // remove margins added by fontello\n }\n\n ${getIconSizes};\n\n ${color &&\n color !== 'inherit' &&\n css `\n color: ${theme.palette[color].main};\n `}\n\n // animation\n body.enable-animations & {\n transition: color ${theme.animation.fastest} 0s ease-in-out;\n }\n `);\nexport default IconRoot;\n","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React from 'react';\nimport { Utils } from '../../shared';\nimport IconRoot from './Icon.root';\nimport { DEFAULT_ICON_COLOR, DEFAULT_ICON_GLYPH, DEFAULT_ICON_SIZE, ICON_GLYPHS, } from './Icon.constants';\nconst Icon = (_a) => {\n var { glyph = DEFAULT_ICON_GLYPH, size = DEFAULT_ICON_SIZE, color = DEFAULT_ICON_COLOR, className = '' } = _a, rest = __rest(_a, [\"glyph\", \"size\", \"color\", \"className\"]);\n Utils.assert(ICON_GLYPHS.includes(glyph), `Compass Components - Icon: please provide a valid option for the \\`iconGlyph\\` property. Choose from the following: ${ICON_GLYPHS.join(', ')}.`);\n const rootProperties = {\n size,\n color,\n glyph,\n className: `${className} icon-${glyph}`,\n };\n return React.createElement(IconRoot, Object.assign({}, rootProperties, rest));\n};\nexport default Icon;\n","import IconRoot from './Icon';\nexport * from './Icon.types';\nexport * from './Icon.props';\nexport * from './Icon.constants';\nexport default IconRoot;\n","const FONT_TYPE_FAMILIES = {\n body: 'Open Sans, sans-serif',\n heading: 'Metropolis, sans-serif',\n};\nconst FONT_WEIGHTS = ['light', 'regular', 'bold'];\nconst FONT_WEIGHT_MAP = {\n light: 300,\n regular: 400,\n bold: 600,\n};\nconst FONT_MARGINS = ['none', 'both', 'bottom', 'top'];\nconst FONT_COLORS = ['primary', 'secondary', 'disabled', 'inherit'];\nconst DEFAULT_ARGUMENTS_TABLE_EXCLUSION = ['children'];\nconst DEFAULT_PROPERTY_WHITELIST = [\n 'children',\n 'className',\n 'disabled',\n 'role',\n 'selected',\n 'type',\n 'onClick',\n 'checked',\n 'defaultChecked',\n];\nconst COMPONENT_SIZES = [\n 'xxxs',\n 'xxs',\n 'xs',\n 'sm',\n 'md',\n 'lg',\n 'xl',\n 'xxl',\n 'xxxl',\n];\nexport { COMPONENT_SIZES, DEFAULT_ARGUMENTS_TABLE_EXCLUSION, DEFAULT_PROPERTY_WHITELIST, FONT_TYPE_FAMILIES, FONT_COLORS, FONT_MARGINS, FONT_WEIGHTS, FONT_WEIGHT_MAP, };\n","import kebabCase from 'lodash.kebabcase';\nimport axios from 'axios';\nimport { DEFAULT_PROPERTY_WHITELIST } from './constants';\nfunction isColor(colorString) {\n const s = new Option().style;\n s.color = colorString;\n return s.color === colorString;\n}\nfunction getStoryDocumentationUrl(storyParameters) {\n const storyPathParts = storyParameters.title.split('/');\n const storyPath = storyPathParts.map((part) => kebabCase(part)).join('-');\n if (storyParameters.includeStories.length === 0) {\n return `/?path=/docs/${storyPath}--page`;\n }\n return `/?path=/docs/${storyPath}--${kebabCase(storyParameters.includeStories[0])}`;\n}\n/**\n * this is to prevent all properties to be passed down to the underlying\n * component, except for the ones we want to. (e.g. `type=\"button\"`)\n * Leave the blackList empty or do not pass a value to allow all properties\n * to be passed dow.\n *\n * `data-*` and `aria-*` attributes are always passed down.\n *\n * It is to be used in the styled components `shouldForwardProp` config\n *\n * @example\n * ```typescript\n * // pass down `width` and `height` properties\n * const StyledDiv = styled.div.withConfig({\n * shouldForwardProp: (property, validator) =>\n * Utils.blockProperty(property, ['width', 'height']) && validator(property),\n * })<PDiv>` ... `\n *\n * // allow all properties to be passed down\n * const StyledSection = styled.section.withConfig({\n * shouldForwardProp: (property, validator) =>\n * Utils.blockProperty(property) && validator(property),\n * })<PSection>` ... `\n * ```\n * */\nconst blockProperty = (property, blackList = []) => \n// forward the property when it is a `data-*`attribute\nproperty.toString().startsWith('data-') ||\n // forward the property when it is a `aria-*`attribute\n property.toString().startsWith('aria-') ||\n // always forward the property when it is defined within the property-whitelist\n DEFAULT_PROPERTY_WHITELIST.includes(property.toString()) ||\n // forward the property when it is defined within the passed property-whitelist\n !blackList.includes(property.toString());\n/**\n * this function \"force-forwards\" a property.\n * it is especially helpful when you need to pass properties from an extended\n * root component to the component it inherits from\n *\n * in this example we want to force-forward (pass) properties to the\n * Icon component ButtonIconRoot is extending from, but since the default\n * validator function from styled-components does not handle 'glyph' and 'size'\n * as standard HTML attributes it blocks them fropm being passed on\n *\n * @example\n * ```typescript\n * const ButtonIconRoot = styled(Icon).withConfig<PButtonIconRoot>({\n * shouldForwardProp: (property, validator) =>\n * Utils.forceForwardProperty(property, ['glyph', 'size']) ||\n * (Utils.blockProperty(property, ['width']) && validator(property)),\n * })(\n * ({ margin, marginPosition }) => css`\n * margin-${marginPosition}: ${margin}px;\n * `\n * );\n * ```\n */\nconst forceForwardProperty = (property, whitelist = []) => whitelist.includes(property.toString());\n/**\n * hide the properties that come with the styled component API\n * @returns {THiddenArgtypes}\n */\nfunction hideStyledComponentProperties() {\n return {\n forwardedAs: { table: { disable: true } },\n theme: { table: { disable: true } },\n ref: { table: { disable: true } },\n as: { table: { disable: true } },\n };\n}\n/**\n * hide the components listed in the blacklist array\n * @param {string[]} [blacklist]\n * @returns {THiddenArgtypes}\n */\nfunction hideComponentProperties(blacklist = []) {\n return blacklist.reduce((o, key) => Object.assign(o, { [key]: { table: { disable: true } } }), hideStyledComponentProperties());\n}\n/* eslint-disable @typescript-eslint/no-explicit-any,no-console */\nconst isNumber = (x) => typeof x === 'number';\nconst isString = (x) => typeof x === 'string';\nconst isFunction = (x) => typeof x === 'function';\nfunction warn(message, ...rest) {\n console.warn(message, ...rest);\n}\n/**\n * check if the provided component is classified as functional component\n * @param {*} component\n * @returns {boolean}\n */\nconst isFunctionalComponent = (component) => isFunction(component) && !(component.prototype && component.prototype.isReactComponent);\n/* eslint-enable @typescript-eslint/no-explicit-any,no-console */\nconst getFontMargin = (fontSize, multiplier) => Math.max(Math.round((fontSize * multiplier) / 4) * 4, 8);\nconst getPxValue = (value) => (isNumber(value) ? `${value}px` : value);\n/**\n * Returns a number whose value is limited to the given range.\n * @param {number} value The value to be clamped\n * @param {number} min The lower boundary of the output range\n * @param {number} max The upper boundary of the output range\n * @returns {number} A number in the range [min, max]\n */\nfunction clamp(value, min = 0, max = 1) {\n if (value < min || value > max) {\n throw new Error(`Compass Components: The value provided ${value} is out of range [${min}, ${max}].`);\n }\n return Math.min(Math.max(min, value), max);\n}\nfunction getBase64(url) {\n return axios\n .get(url, {\n responseType: 'arraybuffer',\n })\n .then((response) => {\n const dataString = Buffer.from(response.data, 'binary').toString('base64');\n const dataType = response.headers['content-type'];\n return `data:${dataType};base64,${dataString}`;\n });\n}\nclass CompassError extends Error {\n constructor(message) {\n super(message);\n this.name = 'CompassError';\n }\n}\n/**\n * Asserts if a certain check is true. If not throw a CompassError with the provided message\n * @param {boolean} assertion\n * @param {string} message\n * @param {boolean} warnOnly\n */\nfunction assert(assertion, message, warnOnly = false) {\n if (!assertion) {\n if (warnOnly) {\n // eslint-disable-next-line no-console\n console.warn(message);\n return;\n }\n throw new CompassError(message);\n }\n}\n/**\n * This LITERALLY does NOTHING! :D\n * @returns {void}\n */\nfunction noop() { }\nconst Utils = {\n warn,\n assert,\n clamp,\n isColor,\n isNumber,\n isFunction,\n isString,\n isFunctionalComponent,\n blockProperty,\n forceForwardProperty,\n getBase64,\n getStoryDocumentationUrl,\n hideComponentProperties,\n getFontMargin,\n getPxValue,\n noop,\n};\nexport { CompassError };\nexport default Utils;\n","import { normal } from 'color-blend';\nimport Utils from './utils';\n/**\n * We only support those values as valid color inputs\n */\nconst supportedColorTypes = ['rgb', 'rgba', 'hsl', 'hsla'];\n/**\n * The property name (100 | 200 | ... | 800) describes the swatch shade.\n * Values stored for each shade are the luminance values for HSL\n */\nconst shadeLuminanceValues = {\n 100: 0.8,\n 200: 0.72,\n 300: 0.64,\n 400: 0.56,\n 500: 0.48,\n 600: 0.4,\n 700: 0.32,\n 800: 0.24,\n};\n/**\n * Converts a color from CSS hex format to CSS rgb format.\n * @param {string} color - Hex color, i.e. #nnn or #nnnnnn\n * @returns {string} A CSS rgb color string\n */\nfunction hexToRgb(color) {\n const colorValues = color.slice(1);\n const re = new RegExp(`.{1,${colorValues.length >= 6 ? 2 : 1}}`, 'gu');\n let splitColors = colorValues.match(re);\n if (splitColors && splitColors[0].length === 1) {\n splitColors = splitColors.map((n) => n + n);\n }\n return splitColors\n ? `rgb${splitColors.length === 4 ? 'a' : ''}(${splitColors\n .map((n, index) => index < 3\n ? Number.parseInt(n, 16)\n : Math.round((Number.parseInt(n, 16) / 255) * 1000) / 1000)\n .join(', ')})`\n : '';\n}\n/**\n * convert a int value to the corresponding hex value\n * e.g. 255 => FF\n * @param {number} int - the int value in the range of 0-255\n * @returns {string}\n */\nfunction intToHex(int) {\n const hex = int.toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n}\n/**\n * Converts a color from CSS rgb format to CSS hex format.\n * @param {string} color - RGB color, i.e. rgb(n, n, n)\n * @returns {string} A CSS rgb color string, i.e. #nnnnnn\n */\nfunction rgbToHex(color) {\n // Idempotent\n if (color.indexOf('#') === 0) {\n return color;\n }\n const { values } = decomposeColor(color);\n return `#${values.map((n) => intToHex(n)).join('')}`;\n}\n/**\n * Converts a color from CSS rgb format to CSS hsl format.\n * @param {string} color - RGB color, i.e. rgb(n, n, n)\n * @returns {string} A CSS rgb color string, i.e. #nnnnnn\n */\nfunction rgbToHsl(color) {\n const { values } = decomposeColor(color);\n const hslValues = rgbToHslValues(values);\n const type = `hsl${values.length > 3 ? 'a' : ''}`;\n return recomposeColor({ type, values: hslValues });\n}\n/**\n * Converts an array of rgb values to hsl values\n * @param {number[]} rgbArray - RGB color-array\n * @returns {number[]} array that holds hsl values\n */\nfunction rgbToHslValues(rgbArray) {\n const r = rgbArray[0] / 255;\n const g = rgbArray[1] / 255;\n const b = rgbArray[2] / 255;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n // Calculate L:\n let h = 0;\n let s = 0;\n let l = (max + min) / 2;\n if (max !== min) {\n // Calculate S:\n s = l < 0.5 ? (max - min) / (max + min) : (max - min) / (2 - max - min);\n // Calculate H:\n switch (true) {\n case r === max:\n h = (g - b) / (max - min);\n break;\n case g === max:\n h = 2 + (b - r) / (max - min);\n break;\n case b === max:\n h = 4 + (r - g) / (max - min);\n break;\n default:\n break;\n }\n }\n h = Math.round(h * 60);\n s = Math.round(s * 100);\n l = Math.round(l * 100);\n if (h < 0) {\n h += 360;\n }\n if (rgbArray[3] || rgbArray[3] === 0) {\n return [h, s, l, Utils.clamp(rgbArray[3])];\n }\n return [h, s, l];\n}\n/**\n * Converts a color from hsl format to rgb format.\n * @param {string} color - HSL color values\n * @returns {string} rgb color values\n */\nfunction hslToRgb(color) {\n const decomposedColor = decomposeColor(color);\n const { values } = decomposedColor;\n const [h] = values;\n const s = values[1] / 100;\n const l = values[2] / 100;\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n let type = 'rgb';\n const rgb = [Math.round(f(0) * 255), Math.round(f(8) * 255), Math.round(f(4) * 255)];\n if (decomposedColor.type === 'hsla') {\n type += 'a';\n rgb.push(values[3]);\n }\n return recomposeColor({ type, values: rgb });\n}\n/**\n * Returns an object with the typography and values of a color.\n *\n * Note: Does not support rgb % values.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {object} - A MUI color object: {typography: string, values: number[]}\n */\nfunction decomposeColor(color) {\n if (color.charAt(0) === '#') {\n return decomposeColor(hexToRgb(color));\n }\n const marker = color.indexOf('(');\n const type = color.slice(0, Math.max(0, marker));\n if (!supportedColorTypes.includes(type)) {\n throw new Error('Compass Components: Unsupported `%s` color.\\n' +\n 'The following formats are supported: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla().');\n }\n const valueString = color.slice(marker + 1, -1);\n const values = valueString.split(',').map((value) => Number.parseFloat(value));\n return { type, values };\n}\n/**\n * Converts a color object with typography and values to a string.\n * @param {object} color - Decomposed color\n * @param {string} color.typography - One of: 'rgb', 'rgba', 'hsl', 'hsla'\n * @param {array} color.values - [n,n,n] or [n,n,n,n]\n * @returns {string} A CSS color string\n */\nfunction recomposeColor(color) {\n const { type, values } = color;\n let newValues = values;\n if (type.includes('rgb')) {\n // Only convert the first 3 values to int (i.e. not alpha)\n newValues = values.map((n, index) => (index < 3 ? Number.parseInt(n.toString(), 10) : n));\n }\n else if (type.includes('hsl')) {\n newValues[1] = `${values[1]}%`;\n newValues[2] = `${values[2]}%`;\n }\n return `${type}(${newValues.join(', ')})`;\n}\n/**\n * Converts a color object with typography and values to a string.\n * @param {object} color - Decomposed color\n * @param {string} color.typography - One of: 'rgb', 'rgba', 'hsl', 'hsla'\n * @param {array} color.values - [n,n,n] or [n,n,n,n]\n * @param {number} shade - 100 | 200 | ... | 800\n * @returns {string} A CSS color string\n */\nfunction recomposeColorWithShade(color, shade) {\n const { values, type } = color;\n const hslValues = [];\n hslValues[0] = `${values[0]}`;\n hslValues[1] = `${values[1]}%`;\n hslValues[2] = `${shadeLuminanceValues[shade] * 100}%`;\n const hslString = `${type}(${hslValues.join(', ')})`;\n return hslToRgb(hslString);\n}\n/**\n * Create a full map of all shades for a given color\n * @param {string} color\n * @returns {Record<string, string>}\n */\nfunction createColorShades(color) {\n const decomposedColor = decomposeColor(color);\n const colorShadeMap = {};\n if (!decomposedColor.type.includes('hsl')) {\n decomposedColor.type = 'hsl';\n decomposedColor.values = rgbToHslValues(decomposedColor.values);\n }\n for (const key of Object.keys(shadeLuminanceValues)) {\n colorShadeMap[key] = recomposeColorWithShade(decomposedColor, key);\n }\n return colorShadeMap;\n}\n/**\n * Converts any given valid and supported color string to rgb\n * @param {string} color - color string\n * @returns {string} rgb color string\n */\nfunction convertToRgb(color) {\n const colorString = color.startsWith('hsl') ? hslToRgb(color) : color;\n const decomposedColor = decomposeColor(colorString);\n return recomposeColor(decomposedColor);\n}\n/**\n * Set the absolute transparency of a color.\n * Any existing alpha values are overwritten.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} value - value to set the alpha channel to in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nfunction setAlpha(color, value) {\n const decomposedColor = decomposeColor(color);\n const clampedValue = Utils.clamp(value);\n if (decomposedColor.type === 'rgb' || decomposedColor.type === 'hsl') {\n decomposedColor.type += 'a';\n }\n decomposedColor.values[3] = clampedValue;\n return recomposeColor(decomposedColor);\n}\n/**\n * Calculates the contrast ratio between two colors.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} foreground - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {string} background - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} A contrast ratio value in the range 0 - 21.\n */\nfunction getContrastRatio(foreground, background) {\n const lumA = getLuminance(foreground);\n const lumB = getLuminance(background);\n return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);\n}\n/**\n * The relative brightness of any point in a color space,\n * normalized to 0 for darkest black and 1 for lightest white.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} The relative brightness of the color in the range 0 - 1\n */\nfunction getLuminance(color) {\n const decomposedColor = decomposeColor(color);\n let rgb = decomposedColor.type === 'hsl'\n ? decomposeColor(hslToRgb(color)).values\n : decomposedColor.values;\n rgb = rgb.map((value) => {\n const normalizedValue = value / 255;\n return normalizedValue <= 0.03928\n ? normalizedValue / 12.92\n : Math.pow(((normalizedValue + 0.055) / 1.055), 2.4);\n });\n // Truncate at 3 digits\n return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));\n}\n/**\n * Darkens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nfunction darken(color, coefficient) {\n const decomposedColor = decomposeColor(color);\n const clampedCoefficient = Utils.clamp(coefficient);\n if (decomposedColor.type.includes('hsl')) {\n decomposedColor.values[2] *= 1 - clampedCoefficient;\n }\n else if (decomposedColor.type.includes('rgb')) {\n for (let index = 0; index < 3; index += 1) {\n decomposedColor.values[index] *= 1 - clampedCoefficient;\n }\n }\n return recomposeColor(decomposedColor);\n}\n/**\n * Lightens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nfunction lighten(color, coefficient) {\n const decomposedColor = decomposeColor(color);\n const clampedCoefficient = Utils.clamp(coefficient);\n if (decomposedColor.type.includes('hsl')) {\n decomposedColor.values[2] += (100 - decomposedColor.values[2]) * clampedCoefficient;\n }\n else if (decomposedColor.type.includes('rgb')) {\n for (let index = 0; index < 3; index += 1) {\n decomposedColor.values[index] +=\n (255 - decomposedColor.values[index]) * clampedCoefficient;\n }\n }\n return recomposeColor(decomposedColor);\n}\n/**\n * Blends to colors in normal mode\n * @param {string} background - the background color\n * @param {string} foreground - the foreground color layered on top\n * @returns {string} rgb color string\n */\nfunction blendColors(background, foreground) {\n const decomposedBackground = decomposeColor(convertToRgb(background));\n const decomposedForeground = decomposeColor(convertToRgb(foreground));\n const base = {\n r: decomposedBackground.values[0],\n g: decomposedBackground.values[1],\n b: decomposedBackground.values[2],\n a: decomposedBackground.values[3] === undefined ||\n Number.isNaN(decomposedBackground.values[3])\n ? 1\n : decomposedBackground.values[3],\n };\n const layer = {\n r: decomposedForeground.values[0],\n g: decomposedForeground.values[1],\n b: decomposedForeground.values[2],\n a: decomposedForeground.values[3] === undefined ||\n Number.isNaN(decomposedForeground.values[3])\n ? 1\n : decomposedForeground.values[3],\n };\n const mixed = normal(base, layer);\n return recomposeColor({ type: 'rgba', values: [mixed.r, mixed.g, mixed.b, mixed.a] });\n}\nexport { setAlpha, convertToRgb, decomposeColor, recomposeColor, recomposeColorWithShade, hexToRgb, hslToRgb, rgbToHex, rgbToHsl, createColorShades, blendColors, darken, lighten, getContrastRatio, };\n","const FLEX_ELEMENTS = [\n 'div',\n 'span',\n 'article',\n 'aside',\n 'details',\n 'figcaption',\n 'figure',\n 'footer',\n 'header',\n 'main',\n 'mark',\n 'nav',\n 'section',\n 'summary',\n 'time',\n 'ul',\n 'li',\n];\nconst DEFAULT_FLEX_COMPONENT = 'div';\nconst DEFAULT_FLEX_ROW = false;\nconst DEFAULT_FLEX_WRAP = false;\nconst DEFAULT_FLEX_FLEX = 'initial';\nconst FLEX_ALIGNMENTS = [\n 'initial',\n 'baseline',\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n];\nconst DEFAULT_FLEX_ALIGNMENT = 'initial';\nconst FLEX_JUSTIFIES = [\n 'initial',\n 'flex-start',\n 'center',\n 'flex-end',\n 'stretch',\n 'space-around',\n 'space-between',\n 'space-evenly',\n];\nconst DEFAULT_FLEX_JUSTIFY = 'initial';\nexport { FLEX_ELEMENTS, DEFAULT_FLEX_COMPONENT, DEFAULT_FLEX_ROW, DEFAULT_FLEX_WRAP, DEFAULT_FLEX_FLEX, FLEX_ALIGNMENTS, DEFAULT_FLEX_ALIGNMENT, FLEX_JUSTIFIES, DEFAULT_FLEX_JUSTIFY, };\n","import styled, { css } from 'styled-components';\nimport { Utils } from '../../shared';\nimport { parseSpacing } from '../spacing';\nconst FlexRoot = styled.div.withConfig({\n shouldForwardProp: (property, validator) => Utils.blockProperty(property, [\n 'flex',\n 'wrap',\n 'row',\n 'padding',\n 'margin',\n 'width',\n 'height',\n ]) && validator(property),\n})(({ flex, wrap, row, justify, alignment, padding, margin, width, height }) => css `\n display: flex;\n flex: ${flex};\n flex-wrap: ${wrap ? 'wrap' : 'nowrap'};\n flex-direction: ${row ? 'row' : 'column'};\n align-items: ${alignment};\n justify-content: ${justify};\n padding: ${padding ? parseSpacing(padding) : '0'};\n margin: ${margin ? parseSpacing(margin) : '0'};\n ${(Utils.isNumber(width) || Utils.isString(width)) &&\n css `\n max-width: ${Utils.getPxValue(width)};\n `}\n ${(Utils.isNumber(height) || Utils.isString(height)) &&\n css `\n max-height: ${Utils.getPxValue(height)};\n `}\n `);\nexport default FlexRoot;\n","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React from 'react';\nimport { Utils } from '../../shared';\nimport { DEFAULT_FLEX_ALIGNMENT, DEFAULT_FLEX_COMPONENT, DEFAULT_FLEX_FLEX, DEFAULT_FLEX_JUSTIFY, DEFAULT_FLEX_ROW, DEFAULT_FLEX_WRAP, FLEX_ALIGNMENTS, FLEX_ELEMENTS, FLEX_JUSTIFIES, } from './Flex.constants';\nimport FlexRoot from './Flex.root';\nconst Flex = function (_a) {\n var { element = DEFAULT_FLEX_COMPONENT, alignment = DEFAULT_FLEX_ALIGNMENT, justify = DEFAULT_FLEX_JUSTIFY, flex = DEFAULT_FLEX_FLEX, row = DEFAULT_FLEX_ROW, wrap = DEFAULT_FLEX_WRAP } = _a, rest = __rest(_a, [\"element\", \"alignment\", \"justify\", \"flex\", \"row\", \"wrap\"]);\n Utils.assert(FLEX_ALIGNMENTS.includes(alignment), `Compass Components - Flex: incompatible alignment property (${alignment}) set on Flex component. Please choose from the following: ${FLEX_ALIGNMENTS.join(', ')}`);\n Utils.assert(FLEX_JUSTIFIES.includes(justify), `Compass Components - Flex: incompatible justify property (${justify}) set on Flex component. Please choose from the following: ${FLEX_JUSTIFIES.join(', ')}`);\n Utils.assert(FLEX_ELEMENTS.includes(element) || Utils.isFunctionalComponent(element), `Compass Components - Flex: incompatible element property (${element}) used in Flex component. Please choose from the following: ${FLEX_ELEMENTS.join(', ')}`);\n const rootProperties = Object.assign({ alignment,\n justify,\n flex,\n row,\n wrap }, rest);\n return React.createElement(FlexRoot, Object.assign({}, rootProperties, { as: element }));\n};\nexport default Flex;\n","const SIZES = {\n 0: 0,\n 25: 2,\n 50: 4,\n 75: 6,\n 100: 8,\n 125: 10,\n 150: 12,\n 175: 16,\n 200: 20,\n 250: 24,\n 300: 28,\n 350: 32,\n 400: 40,\n 450: 48,\n 500: 56,\n 600: 64,\n 700: 72,\n 800: 80,\n};\nconst SPACING_TOKENS = [\n 0, 25, 50, 75, 100, 125, 150, 175, 200, 250, 300, 350, 400, 450, 500, 600, 700, 800,\n];\nexport { SIZES, SPACING_TOKENS };\nexport default SIZES;\n","import { Utils } from '../../shared';\nimport { SIZES } from './Spacing.constants';\nconst Spacing = {\n all(spacingToken) {\n return [spacingToken, spacingToken, spacingToken, spacingToken];\n },\n trbl({ top = 0, right = 0, bottom = 0, left = 0 }) {\n return [top, right, bottom, left];\n },\n only(side, spacingToken) {\n const trbl = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n };\n trbl[side] = spacingToken;\n return this.trbl(trbl);\n },\n symmetric({ vertical = 0, horizontal = 0 }) {\n return this.trbl({\n top: vertical,\n right: horizontal,\n bottom: vertical,\n left: horizontal,\n });\n },\n};\nconst parseSpacing = (spacing) => spacing.map((s) => (s ? Utils.getPxValue(SIZES[s]) : 0)).join(' ');\nexport { parseSpacing };\nexport default Spacing;\n","import { css } from 'styled-components';\nimport { parseSpacing } from './Spacing';\nfunction applyPadding(spacing) {\n return css `\n padding: ${parseSpacing(spacing)};\n `;\n}\nfunction applyMargin(spacing) {\n return css `\n margin: ${parseSpacing(spacing)};\n `;\n}\nexport { applyPadding, applyMargin };\n","import Spacing from './Spacing';\nexport * from './Spacing';\nexport * from './Spacing.mixins';\nexport * from './Spacing.constants';\nexport * from './Spacing.types';\nexport default Spacing;\n","import { css } from 'styled-components';\nconst resetButton = css `\n border: none;\n margin: 0;\n padding: 0;\n width: auto;\n overflow: visible;\n background: transparent;\n color: inherit;\n font: inherit;\n text-align: inherit;\n outline: none;\n line-height: inherit;\n -webkit-appearance: none;\n`;\nconst reset = css `\n /* https://meyerweb.com/eric/tools/css/reset/\n v4.0 | 20180602\n License: none (public domain)\n */\n html,\n body,\n div,\n span,\n applet,\n object,\n iframe,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n p,\n blockquote,\n pre,\n a,\n abbr,\n acronym,\n address,\n big,\n cite,\n code,\n del,\n dfn,\n em,\n img,\n ins,\n kbd,\n q,\n s,\n samp,\n small,\n strike,\n strong,\n sub,\n sup,\n tt,\n var,\n b,\n u,\n i,\n center,\n dl,\n dt,\n dd,\n ol,\n ul,\n li,\n fieldset,\n form,\n label,\n legend,\n table,\n caption,\n tbody,\n tfoot,\n thead,\n tr,\n th,\n td,\n article,\n aside,\n canvas,\n details,\n embed,\n figure,\n figcaption,\n footer,\n header,\n hgroup,\n main,\n menu,\n nav,\n output,\n ruby,\n section,\n summary,\n time,\n mark,\n audio,\n video {\n margin: 0;\n padding: 0;\n border: 0;\n font: inherit;\n font-size: 100%;\n vertical-align: baseline;\n }\n /* HTML5 display-role reset for older browsers */\n article,\n aside,\n details,\n figcaption,\n figure,\n footer,\n header,\n hgroup,\n main,\n menu,\n nav,\n section {\n display: block;\n }\n /* HTML5 hidden-attribute fix for newer browsers */\n *[hidden] {\n display: none;\n }\n body {\n line-height: 1;\n }\n ol,\n ul {\n list-style: none;\n }\n blockquote,\n q {\n quotes: none;\n }\n blockquote:before,\n blockquote:after,\n q:before,\n q:after {\n content: '';\n content: none;\n }\n table {\n border-collapse: collapse;\n border-spacing: 0;\n }\n /* https://www.paulirish.com/2012/box-sizing-border-box-ftw/ (2015/04/28)*/\n html,\n *,\n *:before,\n *:after {\n box-sizing: border-box;\n }\n /* Additional resets */\n a {\n text-decoration: none;\n color: inherit;\n }\n button {\n ${resetButton}\n }\n /* Fix antialiasing */\n *,\n *:before,\n *:after {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n /* Disable user select on everything but texts */\n *,\n *:before,\n *:after {\n user-select: none;\n }\n p,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n blockquote,\n pre,\n ul,\n ol,\n li,\n table,\n tr,\n th,\n td,\n input,\n textarea {\n user-select: text;\n }\n`;\nexport { resetButton };\nexport default reset;\n","import { css } from 'styled-components';\nimport MetropolisSemiBold from '../../../assets/fonts/Metropolis-SemiBold.woff2';\nimport MetropolisSemiBoldItalic from '../../../assets/fonts/Metropolis-SemiBoldItalic.woff2';\nimport MetropolisRegular from '../../../assets/fonts/Metropolis-Regular.woff2';\nimport MetropolisRegularItalic from '../../../assets/fonts/Metropolis-RegularItalic.woff2';\nimport MetropolisLight from '../../../assets/fonts/Metropolis-Light.woff2';\nimport MetropolisLightItalic from '../../../assets/fonts/Metropolis-LightItalic.woff2';\nimport OpenSansSemiBold from '../../../assets/fonts/OpenSans-SemiBold.woff2';\nimport OpenSansSemiBoldItalic from '../../../assets/fonts/OpenSans-SemiBoldItalic.woff2';\nimport OpenSansRegular from '../../../assets/fonts/OpenSans-Regular.woff2';\nimport OpenSansItalic from '../../../assets/fonts/OpenSans-Italic.woff2';\nimport OpenSansLight from '../../../assets/fonts/OpenSans-Light.woff2';\nimport OpenSansLightItalic from '../../../assets/fonts/OpenSans-LightItalic.woff2';\nconst VFontFaces = css `\n // Metropolis font definitions\n @font-face {\n font-family: 'Metropolis';\n src: url(${MetropolisSemiBold}) format('woff2');\n font-weight: 600;\n font-style: normal;\n }\n @font-face {\n font-family: 'Metropolis';\n src: url(${MetropolisSemiBoldItalic}) format('woff2');\n font-weight: 600;\n font-style: italic;\n }\n @font-face {\n font-family: 'Metropolis';\n src: url(${MetropolisRegular}) format('woff2');\n font-weight: 400;\n font-style: normal;\n }\n @font-face {\n font-family: 'Metropolis';\n src: url(${MetropolisRegularItalic}) format('woff2');\n font-weight: 400;\n font-style: italic;\n }\n @font-face {\n font-family: 'Metropolis';\n src: url(${MetropolisLight}) format('woff2');\n font-weight: 300;\n font-style: normal;\n }\n @font-face {\n font-family: 'Metropolis';\n src: url(${MetropolisLightItalic}) format('woff2');\n font-weight: 300;\n font-style: italic;\n }\n\n // OpenSans font definitions\n @font-face {\n font-family: 'Open Sans';\n src: url(${OpenSansSemiBold}) format('woff2');\n font-weight: 600;\n font-style: normal;\n }\n @font-face {\n font-family: 'Open Sans';\n src: url(${OpenSansSemiBoldItalic}) format('woff2');\n font-weight: 600;\n font-style: italic;\n }\n @font-face {\n font-family: 'Open Sans';\n src: url(${OpenSansRegular}) format('woff2');\n font-weight: 400;\n font-style: normal;\n }\n @font-face {\n font-family: 'Open Sans';\n src: url(${OpenSansItalic}) format('woff2');\n font-weight: 400;\n font-style: italic;\n }\n @font-face {\n font-family: 'Open Sans';\n src: url(${OpenSansLight}) format('woff2');\n font-weight: 300;\n font-style: normal;\n }\n @font-face {\n font-family: 'Open Sans';\n src: url(${OpenSansLightItalic}) format('woff2');\n font-weight: 300;\n font-style: italic;\n }\n`;\nexport default VFontFaces;\n","import { css } from 'styled-components';\nimport { DEFAULT_HEADING_ELEMENT_SIZES, DEFAULT_HEADING_SIZE, DEFAULT_HEADING_WEIGHT, HEADING_DEFINITIONS, HEADING_ELEMENTS, } from '../../../components/heading';\nimport { DEFAULT_TEXT_SIZE, DEFAULT_TEXT_WEIGHT, TEXT_DEFINITIONS } from '../../../components/text';\nimport { FONT_TYPE_FAMILIES } from '../../../shared';\nconst generateDefaultHeadingStyles = () => HEADING_ELEMENTS.map((headingElement) => {\n const size = DEFAULT_HEADING_ELEMENT_SIZES[headingElement];\n return css `\n ${headingElement} {\n font-size: ${HEADING_DEFINITIONS[size].size}px;\n line-height: ${HEADING_DEFINITIONS[size].lineHeight}px;\n margin: ${HEADING_DEFINITIONS[size].marginTop}px 0\n ${HEADING_DEFINITIONS[size].marginBottom}px;\n }\n `;\n});\nconst VDefaultStyles = css `\n font-family: ${FONT_TYPE_FAMILIES.body};\n font-size: ${TEXT_DEFINITIONS[DEFAULT_TEXT_SIZE].size}px;\n font-weight: ${DEFAULT_TEXT_WEIGHT};\n line-height: ${TEXT_DEFINITIONS[DEFAULT_TEXT_SIZE].lineHeight}px;\n\n p,\n span,\n label {\n // set body type styles\n // - defaults\n margin: ${TEXT_DEFINITIONS[DEFAULT_TEXT_SIZE].margin}px 0;\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n // set heading type styles\n // - defaults\n font-family: ${FONT_TYPE_FAMILIES.heading};\n font-weight: ${DEFAULT_HEADING_WEIGHT};\n margin: ${HEADING_DEFINITIONS[DEFAULT_HEADING_SIZE].marginTop}px 0\n ${HEADING_DEFINITIONS[DEFAULT_HEADING_SIZE].marginBottom}px;\n }\n\n ${generateDefaultHeadingStyles()}\n\n html, body {\n background: ${({ theme }) => theme.background.default};\n }\n`;\nexport default VDefaultStyles;\n","import { createGlobalStyle } from 'styled-components';\n// eslint-disable-next-line import/no-unassigned-import\nimport '@mattermost/compass-icons/css/compass-icons.css';\nimport { setAlpha } from '../../../shared';\nimport fontFaces from './font-faces';\nimport reset from './reset-styles';\nimport defaultStyles from './default-styles';\nconst GlobalStyle = createGlobalStyle `\n ${({ theme }) => theme.noStyleReset ? null : reset};\n ${({ theme }) => theme.noFontFaces ? null : fontFaces};\n ${({ theme }) => theme.noDefaultStyle ? null : defaultStyles};\n\n // TODO@all: these styles need to be extracted (and adjusted) to the Skeleton component once it is ready to be built\n .skeleton {\n display: block;\n flex: 1;\n align-self: stretch;\n background: ${({ theme }) => theme.background.skeleton};\n overflow: hidden;\n position: relative;\n\n &::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n transform: translateX(-100%);\n background: linear-gradient(\n 90deg,\n ${({ theme }) => setAlpha(theme.background.shimmer, 0)} 0,\n ${({ theme }) => setAlpha(theme.background.shimmer, 0.25)} 40%,\n ${({ theme }) => setAlpha(theme.background.shimmer, 0.5)} 75%,\n ${({ theme }) => setAlpha(theme.background.shimmer, 0)}\n );\n animation: shimmer 1.5s infinite;\n content: '';\n }\n }\n\n @keyframes shimmer {\n 100% {\n transform: translateX(100%);\n }\n }\n`;\nexport default GlobalStyle;\n","import { setAlpha } from '../../../shared';\nimport { indigo, green, red, neutral, orange, purple, teal } from '../../../foundations/colors';\nconst darkTheme = {\n type: 'dark',\n elevationOpacity: 0.32,\n noStyleReset: false,\n noFontFaces: false,\n noDefaultStyle: false,\n palette: {\n primary: {\n lighter: purple[200],\n light: purple[300],\n main: purple[500],\n dark: purple[700],\n darker: purple[800],\n contrast: neutral[0],\n },\n secondary: {\n lighter: teal[200],\n light: teal[300],\n main: teal[500],\n dark: teal[700],\n darker: teal[800],\n contrast: neutral[0],\n },\n alert: {\n lighter: red[200],\n light: red[300],\n main: red[500],\n dark: red[700],\n darker: red[800],\n contrast: neutral[0],\n },\n warning: {\n lighter: orange[100],\n light: orange[200],\n main: orange[400],\n dark: orange[600],\n darker: orange[700],\n contrast: neutral[0],\n },\n success: {\n lighter: green[300],\n light: green[400],\n main: green[600],\n dark: green[700],\n darker: green[800],\n contrast: neutral[0],\n },\n info: {\n lighter: indigo[100],\n light: indigo[200],\n main: indigo[300],\n dark: indigo[500],\n darker: indigo[600],\n contrast: neutral[0],\n },\n },\n action: {\n hover: neutral[0],\n disabled: neutral[100],\n },\n badges: {\n online: green[600],\n away: orange[400],\n dnd: red[500],\n offline: setAlpha(neutral[350], 0.64),\n },\n text: {\n accent: neutral[150],\n primary: neutral[50],\n secondary: neutral[300],\n disabled: neutral[700],\n contrast: neutral[100],\n },\n border: {\n accent: neutral[150],\n primary: neutral[50],\n secondary: neutral[300],\n disabled: neutral[700],\n contrast: neutral[100],\n },\n background: {\n badge: neutral[1250],\n default: neutral[1100],\n shape: neutral[1000],\n skeleton: neutral[900],\n shimmer: neutral[800],\n contrast: neutral[50],\n },\n animation: {\n instant: 0,\n fastest: 100,\n fast: 250,\n normal: 300,\n slow: 450,\n slowest: 600,\n },\n highlight: {\n mention: red[200],\n },\n};\nexport default darkTheme;\n","import { setAlpha } from '../../../shared';\nimport { neutral, green, red, blue, indigo, orange, yellow } from '../../../foundations/colors';\nconst lightTheme = {\n type: 'light',\n elevationOpacity: 0.08,\n noStyleReset: false,\n noFontFaces: false,\n noDefaultStyle: false,\n palette: {\n primary: {\n lighter: blue[300],\n light: blue[400],\n main: blue[500],\n dark: blue[600],\n darker: blue[700],\n contrast: neutral[0],\n },\n secondary: {\n lighter: indigo[300],\n light: indigo[400],\n main: indigo[500],\n dark: indigo[600],\n darker: indigo[700],\n contrast: neutral[0],\n },\n alert: {\n lighter: red[200],\n light: red[300],\n main: red[500],\n dark: red[700],\n darker: red[800],\n contrast: neutral[0],\n },\n warning: {\n lighter: orange[100],\n light: orange[200],\n main: orange[400],\n dark: orange[600],\n darker: orange[700],\n contrast: neutral[0],\n },\n success: {\n lighter: green[300],\n light: green[400],\n main: green[600],\n dark: green[700],\n darker: green[800],\n contrast: neutral[0],\n },\n info: {\n lighter: indigo[100],\n light: indigo[200],\n main: indigo[300],\n dark: indigo[500],\n darker: indigo[600],\n contrast: neutral[0],\n },\n },\n action: {\n hover: neutral[900],\n disabled: neutral[1000],\n },\n badges: {\n online: green[600],\n away: orange[400],\n dnd: red[500],\n offline: setAlpha(neutral[350], 0.64),\n },\n text: {\n primary: neutral[1100],\n accent: neutral[900],\n secondary: neutral[800],\n disabled: neutral[500],\n contrast: neutral[0],\n },\n border: {\n primary: neutral[1100],\n accent: neutral[900],\n secondary: neutral[800],\n disabled: neutral[500],\n contrast: neutral[0],\n },\n background: {\n badge: neutral[500],\n default: neutral[50],\n shape: neutral[0],\n skeleton: neutral[100],\n shimmer: neutral[0],\n contrast: neutral[1100],\n },\n animation: {\n instant: 0,\n fastest: 100,\n fast: 250,\n normal: 300,\n slow: 450,\n slowest: 600,\n },\n highlight: {\n mention: yellow[300],\n },\n};\nexport default lightTheme;\n","import React from 'react';\nimport { ThemeProvider as StyledThemeProvider } from 'styled-components';\nimport GlobalStyle from './global-styles';\nimport { lightTheme } from './themes';\nconst ThemeProvider = ({ children = null, theme = lightTheme }) => (React.createElement(StyledThemeProvider, { theme: theme },\n React.createElement(GlobalStyle, null),\n children));\nexport { StyledThemeProvider as SectionThemeProvider };\nexport default ThemeProvider;\n","import { setAlpha } from '../../../shared';\nimport { blue, indigo, green, red, neutral, orange, teal } from '../../../foundations/colors';\nconst sidebarTheme = {\n type: 'dark',\n elevationOpacity: 0.32,\n noStyleReset: false,\n noFontFaces: false,\n noDefaultStyle: false,\n palette: {\n primary: {\n lighter: green[100],\n light: green[200],\n main: green[400],\n dark: green[600],\n darker: green[700],\n contrast: neutral[0],\n },\n secondary: {\n lighter: teal[200],\n light: teal[300],\n main: teal[500],\n dark: teal[700],\n darker: teal[800],\n contrast: neutral[0],\n },\n alert: {\n lighter: red[200],\n light: red[300],\n main: red[500],\n dark: red[700],\n darker: red[800],\n contrast: neutral[0],\n },\n warning: {\n lighter: orange[100],\n light: orange[200],\n main: orange[400],\n dark: orange[600],\n darker: orange[700],\n contrast: neutral[0],\n },\n success: {\n lighter: green[300],\n light: green[400],\n main: green[600],\n dark: green[700],\n darker: green[800],\n contrast: neutral[0],\n },\n info: {\n lighter: indigo[100],\n light: indigo[200],\n main: indigo[300],\n dark: indigo[500],\n darker: indigo[600],\n contrast: neutral[0],\n },\n },\n action: {\n hover: neutral[0],\n disabled: neutral[100],\n },\n badges: {\n online: green[600],\n away: orange[400],\n dnd: red[500],\n offline: setAlpha(neutral[350], 0.64),\n },\n text: {\n primary: neutral[50],\n accent: neutral[150],\n secondary: neutral[300],\n disabled: neutral[700],\n contrast: neutral[100],\n },\n border: {\n primary: neutral[50],\n accent: neutral[150],\n secondary: neutral[300],\n disabled: neutral[700],\n contrast: neutral[100],\n },\n background: {\n badge: blue[800],\n default: blue[700],\n shape: blue[500],\n contrast: neutral[50],\n skeleton: neutral[100],\n shimmer: neutral[0],\n },\n animation: {\n instant: 0,\n fastest: 100,\n fast: 250,\n normal: 300,\n slow: 450,\n slowest: 600,\n },\n highlight: {\n mention: red[200],\n },\n};\nexport default sidebarTheme;\n","import ThemeProvider from './theme-provider';\nexport * from './theme-provider';\nexport * from './themes';\nexport default ThemeProvider;\n","\n\nvar simpleIsEqual = function simpleIsEqual(a, b) {\n return a === b;\n};\n\nexport default function (resultFn) {\n var isEqual = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : simpleIsEqual;\n\n var lastThis = void 0;\n var lastArgs = [];\n var lastResult = void 0;\n var calledOnce = false;\n\n var isNewArgEqualToLast = function isNewArgEqualToLast(newArg, index) {\n return isEqual(newArg, lastArgs[index]);\n };\n\n var result = function result() {\n for (var _len = arguments.length, newArgs = Array(_len), _key = 0; _key < _len; _key++) {\n newArgs[_key] = arguments[_key];\n }\n\n if (calledOnce && lastThis === this && newArgs.length === lastArgs.length && newArgs.every(isNewArgEqualToLast)) {\n return lastResult;\n }\n\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n lastResult = resultFn.apply(this, newArgs);\n return lastResult;\n };\n\n return result;\n}","import _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport React, { Component, createElement, PureComponent } from 'react';\nimport { findDOMNode } from 'react-dom';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport memoizeOne from 'memoize-one';\n\nfunction isBrowserSafari() {\n var userAgent = window.navigator.userAgent;\n return userAgent.indexOf('Safari') !== -1 && userAgent.indexOf('Chrome') === -1;\n}\n\nvar isSafari = /*#__PURE__*/isBrowserSafari();\nvar scrollBarWidth = 8;\nvar scrollableContainerStyles = {\n display: 'inline',\n width: '0px',\n height: '0px',\n zIndex: '-1',\n overflow: 'hidden',\n margin: '0px',\n padding: '0px'\n};\nvar scrollableWrapperStyle = {\n position: 'absolute',\n flex: '0 0 auto',\n overflow: 'hidden',\n visibility: 'hidden',\n zIndex: '-1',\n width: '100%',\n height: '100%',\n left: '0px',\n top: '0px'\n};\nvar expandShrinkContainerStyles = {\n flex: '0 0 auto',\n overflow: 'hidden',\n zIndex: '-1',\n visibility: 'hidden',\n left: \"-\" + (scrollBarWidth + 1) + \"px\",\n //8px(scrollbar width) + 1px\n bottom: \"-\" + scrollBarWidth + \"px\",\n //8px because of scrollbar width\n right: \"-\" + scrollBarWidth + \"px\",\n //8px because of scrollbar width\n top: \"-\" + (scrollBarWidth + 1) + \"px\" //8px(scrollbar width) + 1px\n\n};\nvar expandShrinkStyles = {\n position: 'absolute',\n flex: '0 0 auto',\n visibility: 'hidden',\n overflow: 'scroll',\n zIndex: '-1',\n width: '100%',\n height: '100%'\n};\nvar shrinkChildStyle = {\n position: 'absolute',\n height: '200%',\n width: '200%'\n}; //values below need to be changed when scrollbar width changes\n//TODO: change these to be dynamic\n\nvar shrinkScrollDelta = 2 * scrollBarWidth + 1; // 17 = 2* scrollbar width(8px) + 1px as buffer\n// 27 = 2* scrollbar width(8px) + 1px as buffer + 10px(this value is based of off lib(Link below). Probably not needed but doesnt hurt to leave)\n//https://github.com/wnr/element-resize-detector/blob/27983e59dce9d8f1296d8f555dc2340840fb0804/src/detection-strategy/scroll.js#L246\n\nvar expandScrollDelta = shrinkScrollDelta + 10;\n\nvar ItemMeasurer = /*#__PURE__*/function (_Component) {\n _inheritsLoose(ItemMeasurer, _Component);\n\n function ItemMeasurer() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this._node = null;\n _this._resizeSensorExpand = React.createRef();\n _this._resizeSensorShrink = React.createRef();\n _this._positionScrollbarsRef = null;\n _this._measureItemAnimFrame = null;\n\n _this.positionScrollBars = function (height, width) {\n if (height === void 0) {\n height = _this.props.size;\n }\n\n if (width === void 0) {\n width = _this.props.width;\n }\n\n //we are position these hiiden div scroll bars to the end so they can emit\n //scroll event when height in the div changes\n //Heavily inspired from https://github.com/marcj/css-element-queries/blob/master/src/ResizeSensor.js\n //and https://github.com/wnr/element-resize-detector/blob/master/src/detection-strategy/scroll.js\n //For more info http://www.backalleycoder.com/2013/03/18/cross-browser-event-based-element-resize-detection/#comment-244\n if (_this._positionScrollbarsRef) {\n window.cancelAnimationFrame(_this._positionScrollbarsRef);\n }\n\n _this._positionScrollbarsRef = window.requestAnimationFrame(function () {\n _this._resizeSensorExpand.current.scrollTop = height + expandScrollDelta;\n _this._resizeSensorShrink.current.scrollTop = 2 * height + shrinkScrollDelta;\n });\n };\n\n _this.scrollingDiv = function (event) {\n if (event.target.offsetHeight !== _this.props.size) {\n _this._measureItem(event.target.offsetWidth !== _this.props.width);\n }\n };\n\n _this.renderItems = function () {\n var item = _this.props.item;\n var expandChildStyle = {\n position: 'absolute',\n left: '0',\n top: '0',\n height: _this.props.size + expandScrollDelta + \"px\",\n width: '100%'\n };\n var renderItem = /*#__PURE__*/React.createElement(\"div\", {\n role: \"listitem\",\n style: {\n position: 'relative'\n }\n }, item, /*#__PURE__*/React.createElement(\"div\", {\n style: scrollableContainerStyles\n }, /*#__PURE__*/React.createElement(\"div\", {\n dir: \"ltr\",\n style: scrollableWrapperStyle\n }, /*#__PURE__*/React.createElement(\"div\", {\n style: expandShrinkContainerStyles\n }, /*#__PURE__*/React.createElement(\"div\", {\n style: expandShrinkStyles,\n ref: _this._resizeSensorExpand,\n onScroll: _this.scrollingDiv\n }, /*#__PURE__*/React.createElement(\"div\", {\n style: expandChildStyle\n })), /*#__PURE__*/React.createElement(\"div\", {\n style: expandShrinkStyles,\n ref: _this._resizeSensorShrink,\n onScroll: _this.scrollingDiv\n }, /*#__PURE__*/React.createElement(\"div\", {\n style: shrinkChildStyle\n }))))));\n return renderItem;\n };\n\n _this._measureItem = function (forceScrollCorrection) {\n var _this$props = _this.props,\n handleNewMeasurements = _this$props.handleNewMeasurements,\n oldSize = _this$props.size,\n itemId = _this$props.itemId;\n var node = _this._node;\n\n if (node && node.ownerDocument && node.ownerDocument.defaultView && node instanceof node.ownerDocument.defaultView.HTMLElement) {\n var newSize = Math.ceil(node.offsetHeight);\n\n if (oldSize !== newSize) {\n handleNewMeasurements(itemId, newSize, forceScrollCorrection);\n }\n }\n };\n\n return _this;\n }\n\n var _proto = ItemMeasurer.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n var _this2 = this;\n\n this._node = findDOMNode(this); // Force sync measure for the initial mount.\n // This is necessary to support the DynamicSizeList layout logic.\n\n if (isSafari && this.props.size) {\n this._measureItemAnimFrame = window.requestAnimationFrame(function () {\n _this2._measureItem(false);\n });\n } else {\n this._measureItem(false);\n }\n\n if (this.props.size) {\n // Don't wait for positioning scrollbars when we have size\n // This is needed triggering an event for remounting a post\n this.positionScrollBars();\n }\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (prevProps.size === 0 && this.props.size !== 0 || prevProps.size !== this.props.size) {\n this.positionScrollBars();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this._positionScrollbarsRef) {\n window.cancelAnimationFrame(this._positionScrollbarsRef);\n }\n\n if (this._measureItemAnimFrame) {\n window.cancelAnimationFrame(this._measureItemAnimFrame);\n }\n\n var _this$props2 = this.props,\n onUnmount = _this$props2.onUnmount,\n itemId = _this$props2.itemId,\n index = _this$props2.index;\n\n if (onUnmount) {\n onUnmount(itemId, index);\n }\n };\n\n _proto.render = function render() {\n return this.renderItems();\n };\n\n return ItemMeasurer;\n}(Component);\n\nvar atBottomMargin = 10;\n\nvar getItemMetadata = function getItemMetadata(props, index, listMetaData) {\n var itemOffsetMap = listMetaData.itemOffsetMap,\n itemSizeMap = listMetaData.itemSizeMap;\n var itemData = props.itemData; // If the specified item has not yet been measured,\n // Just return an estimated size for now.\n\n if (!itemSizeMap[itemData[index]]) {\n return {\n offset: 0,\n size: 0\n };\n }\n\n var offset = itemOffsetMap[itemData[index]] || 0;\n var size = itemSizeMap[itemData[index]] || 0;\n return {\n offset: offset,\n size: size\n };\n};\n\nvar getItemOffset = function getItemOffset(props, index, listMetaData) {\n return getItemMetadata(props, index, listMetaData).offset;\n};\n\nvar getOffsetForIndexAndAlignment = function getOffsetForIndexAndAlignment(props, index, align, scrollOffset, listMetaData) {\n var height = props.height;\n var itemMetadata = getItemMetadata(props, index, listMetaData); // Get estimated total size after ItemMetadata is computed,\n // To ensure it reflects actual measurements instead of just estimates.\n\n var estimatedTotalSize = listMetaData.totalMeasuredSize;\n var maxOffset = Math.max(0, itemMetadata.offset + itemMetadata.size - height);\n var minOffset = Math.max(0, itemMetadata.offset);\n\n switch (align) {\n case 'start':\n return minOffset;\n\n case 'end':\n return maxOffset;\n\n case 'center':\n return Math.round(minOffset - height / 2 + itemMetadata.size / 2);\n\n case 'auto':\n default:\n if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n return estimatedTotalSize - (scrollOffset + height);\n } else if (scrollOffset - minOffset < maxOffset - scrollOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n\n }\n};\n\nvar findNearestItem = function findNearestItem(props, listMetaData, high, low, scrollOffset) {\n var index = low;\n\n while (low <= high) {\n var currentOffset = getItemMetadata(props, low, listMetaData).offset;\n\n if (scrollOffset - currentOffset <= 0) {\n index = low;\n }\n\n low++;\n }\n\n return index;\n};\n\nvar getStartIndexForOffset = function getStartIndexForOffset(props, offset, listMetaData) {\n var totalMeasuredSize = listMetaData.totalMeasuredSize;\n var itemData = props.itemData; // If we've already positioned and measured past this point,\n // Use a binary search to find the closets cell.\n\n if (offset <= totalMeasuredSize) {\n return findNearestItem(props, listMetaData, itemData.length, 0, offset);\n } // Otherwise render a new batch of items starting from where 0.\n\n\n return 0;\n};\n\nvar getStopIndexForStartIndex = function getStopIndexForStartIndex(props, startIndex, scrollOffset, listMetaData) {\n var itemData = props.itemData;\n var stopIndex = startIndex;\n var maxOffset = scrollOffset + props.height;\n var itemMetadata = getItemMetadata(props, stopIndex, listMetaData);\n var offset = itemMetadata.offset + (itemMetadata.size || 0);\n var closestOffsetIndex = 0;\n\n while (stopIndex > 0 && offset <= maxOffset) {\n var _itemMetadata = getItemMetadata(props, stopIndex, listMetaData);\n\n offset = _itemMetadata.offset + _itemMetadata.size;\n stopIndex--;\n }\n\n if (stopIndex >= itemData.length) {\n return closestOffsetIndex;\n }\n\n return stopIndex;\n};\n\nvar getItemSize = function getItemSize(props, index, listMetaData) {\n // Do not hard-code item dimensions.\n // We don't know them initially.\n // Even once we do, changes in item content or list size should reflow.\n return getItemMetadata(props, index, listMetaData).size;\n};\n\nvar DynamicSizeList = /*#__PURE__*/function (_PureComponent) {\n _inheritsLoose(DynamicSizeList, _PureComponent);\n\n // Always use explicit constructor for React components.\n // It produces less code after transpilation. (#26)\n // eslint-disable-next-line no-useless-constructor\n function DynamicSizeList(_props) {\n var _this;\n\n _this = _PureComponent.call(this, _props) || this;\n _this._listMetaData = {\n itemOffsetMap: {},\n itemSizeMap: {},\n totalMeasuredSize: 0,\n atBottom: true\n };\n _this._itemStyleCache = {};\n _this._outerRef = void 0;\n _this._scrollCorrectionInProgress = false;\n _this._scrollByCorrection = null;\n _this._keepScrollPosition = false;\n _this._keepScrollToBottom = false;\n _this._mountingCorrections = 0;\n _this._correctedInstances = 0;\n _this.state = {\n scrollDirection: 'backward',\n scrollOffset: typeof _this.props.initialScrollOffset === 'number' ? _this.props.initialScrollOffset : 0,\n scrollUpdateWasRequested: false,\n scrollDelta: 0,\n scrollHeight: 0,\n localOlderPostsToRender: []\n };\n\n _this.scrollBy = function (scrollOffset, scrollBy) {\n return function () {\n var element = _this._outerRef;\n\n if (typeof element.scrollBy === 'function' && scrollBy) {\n element.scrollBy(0, scrollBy);\n } else if (scrollOffset) {\n element.scrollTop = scrollOffset;\n }\n\n _this._scrollCorrectionInProgress = false;\n };\n };\n\n _this._callOnItemsRendered = memoizeOne(function (overscanStartIndex, overscanStopIndex, visibleStartIndex, visibleStopIndex) {\n return _this.props.onItemsRendered({\n overscanStartIndex: overscanStartIndex,\n overscanStopIndex: overscanStopIndex,\n visibleStartIndex: visibleStartIndex,\n visibleStopIndex: visibleStopIndex\n });\n });\n _this._callOnScroll = memoizeOne(function (scrollDirection, scrollOffset, scrollUpdateWasRequested, scrollHeight, clientHeight) {\n return _this.props.onScroll({\n scrollDirection: scrollDirection,\n scrollOffset: scrollOffset,\n scrollUpdateWasRequested: scrollUpdateWasRequested,\n scrollHeight: scrollHeight,\n clientHeight: clientHeight\n });\n });\n\n _this._commitHook = function () {\n if (!_this.state.scrolledToInitIndex && Object.keys(_this._listMetaData.itemOffsetMap).length) {\n var _this$props$initScrol = _this.props.initScrollToIndex(),\n index = _this$props$initScrol.index,\n position = _this$props$initScrol.position,\n offset = _this$props$initScrol.offset;\n\n _this.scrollToItem(index, position, offset);\n\n _this.setState({\n scrolledToInitIndex: true\n });\n\n if (index === 0) {\n _this._keepScrollToBottom = true;\n } else {\n _this._keepScrollPosition = true;\n }\n }\n };\n\n _this._dataChange = function () {\n if (_this._listMetaData.totalMeasuredSize < _this.props.height) {\n _this.props.canLoadMorePosts();\n }\n };\n\n _this._heightChange = function (prevHeight, prevOffset) {\n var wasAtBottom = prevOffset + prevHeight >= _this._listMetaData.totalMeasuredSize - atBottomMargin;\n\n if (window.logDSLEvents) {\n console.log('DynamicSizeList._heightChange', 'prevHeight=' + prevHeight, 'prevOffset=' + prevOffset, 'totalMeasuredSize=' + _this._listMetaData.totalMeasuredSize, 'wasAtBottom=' + wasAtBottom);\n }\n\n if (wasAtBottom) {\n if (window.logDSLEvents) {\n console.log('DynamicSizeList._heightChange - keeping at end');\n }\n\n _this.scrollToItem(0, 'end');\n\n return;\n } else {\n if (window.logDSLEvents) {\n console.log('DynamicSizeList._heightChange - not keeping at end');\n }\n }\n };\n\n _this._widthChange = function (prevHeight, prevOffset) {\n var wasAtBottom = prevOffset + prevHeight >= _this._listMetaData.totalMeasuredSize - atBottomMargin;\n\n if (window.logDSLEvents) {\n console.log('DynamicSizeList._widthChange', 'prevHeight=' + prevHeight, 'prevOffset=' + prevOffset, 'totalMeasuredSize=' + _this._listMetaData.totalMeasuredSize, 'wasAtBottom=' + (prevOffset + prevHeight >= _this._listMetaData.totalMeasuredSize - atBottomMargin));\n }\n\n if (wasAtBottom) {\n if (window.logDSLEvents) {\n console.log('DynamicSizeList._widthChange - keeping at end');\n }\n\n _this.scrollToItem(0, 'end');\n\n return;\n } else {\n if (window.logDSLEvents) {\n console.log('DynamicSizeList._widthChange - not keeping at end');\n }\n }\n };\n\n _this._getItemStyle = function (index) {\n var itemData = _this.props.itemData;\n var itemStyleCache = _this._itemStyleCache;\n var style;\n\n if (itemStyleCache.hasOwnProperty(itemData[index])) {\n style = itemStyleCache[itemData[index]];\n } else {\n itemStyleCache[itemData[index]] = style = {\n left: 0,\n top: getItemOffset(_this.props, index, _this._listMetaData),\n height: getItemSize(_this.props, index, _this._listMetaData),\n width: '100%'\n };\n }\n\n return style;\n };\n\n _this._correctScroll = function () {\n var scrollOffset = _this.state.scrollOffset;\n var element = _this._outerRef;\n\n if (element) {\n element.scrollTop = scrollOffset;\n _this._scrollCorrectionInProgress = false;\n _this._correctedInstances = 0;\n _this._mountingCorrections = 0;\n }\n };\n\n _this._generateOffsetMeasurements = function () {\n var _this$_listMetaData = _this._listMetaData,\n itemOffsetMap = _this$_listMetaData.itemOffsetMap,\n itemSizeMap = _this$_listMetaData.itemSizeMap;\n var itemData = _this.props.itemData;\n _this._listMetaData.totalMeasuredSize = 0;\n\n for (var i = itemData.length - 1; i >= 0; i--) {\n var prevOffset = itemOffsetMap[itemData[i + 1]] || 0; // In some browsers (e.g. Firefox) fast scrolling may skip rows.\n // In this case, our assumptions about last measured indices may be incorrect.\n // Handle this edge case to prevent NaN values from breaking styles.\n // Slow scrolling back over these skipped rows will adjust their sizes.\n\n var prevSize = itemSizeMap[itemData[i + 1]] || 0;\n itemOffsetMap[itemData[i]] = prevOffset + prevSize;\n _this._listMetaData.totalMeasuredSize += itemSizeMap[itemData[i]] || 0; // Reset cached style to clear stale position.\n\n delete _this._itemStyleCache[itemData[i]];\n }\n };\n\n _this._handleNewMeasurements = function (key, newSize, forceScrollCorrection) {\n var itemSizeMap = _this._listMetaData.itemSizeMap;\n var itemData = _this.props.itemData;\n var index = itemData.findIndex(function (item) {\n return item === key;\n }); // In some browsers (e.g. Firefox) fast scrolling may skip rows.\n // In this case, our assumptions about last measured indices may be incorrect.\n // Handle this edge case to prevent NaN values from breaking styles.\n // Slow scrolling back over these skipped rows will adjust their sizes.\n\n var oldSize = itemSizeMap[key] || 0;\n\n if (oldSize === newSize) {\n return;\n }\n\n itemSizeMap[key] = newSize;\n\n if (!_this.state.scrolledToInitIndex) {\n _this._generateOffsetMeasurements();\n\n return;\n }\n\n var element = _this._outerRef;\n var wasAtBottom = _this.props.height + element.scrollTop >= _this._listMetaData.totalMeasuredSize - atBottomMargin;\n\n if (window.logDSLEvents) {\n console.log('DynamicSizeList._handleNewMeasurements', 'props.height=' + _this.props.height, 'element.scrollTop=' + element.scrollTop, 'totalMeasuredSize=' + _this._listMetaData.totalMeasuredSize, 'wasAtBottom=' + wasAtBottom, '_keepScrollToBottom=' + _this._keepScrollToBottom, 'props.correctScrollToBottom=' + _this.props.correctScrollToBottom);\n }\n\n if ((wasAtBottom || _this._keepScrollToBottom) && _this.props.correctScrollToBottom) {\n if (window.logDSLEvents) {\n console.log('DynamicSizeList._handleNewMeasurements - keeping at end');\n }\n\n _this._generateOffsetMeasurements();\n\n _this.scrollToItem(0, 'end');\n\n _this.forceUpdate();\n\n return;\n } else {\n if (window.logDSLEvents) {\n console.log('DynamicSizeList._handleNewMeasurements - not keeping at end');\n }\n }\n\n if (forceScrollCorrection || _this._keepScrollPosition) {\n var delta = newSize - oldSize;\n\n var _this$_getRangeToRend = _this._getRangeToRender(_this.state.scrollOffset),\n _visibleStartIndex = _this$_getRangeToRend[2];\n\n _this._generateOffsetMeasurements();\n\n if (index < _visibleStartIndex + 1) {\n return;\n }\n\n _this._scrollCorrectionInProgress = true;\n\n _this.setState(function (prevState) {\n var deltaValue;\n\n if (_this._mountingCorrections === 0) {\n deltaValue = delta;\n } else {\n deltaValue = prevState.scrollDelta + delta;\n }\n\n _this._mountingCorrections++;\n var newOffset = prevState.scrollOffset + delta;\n return {\n scrollOffset: newOffset,\n scrollDelta: deltaValue\n };\n }, function () {\n // $FlowFixMe Property scrollBy is missing in HTMLDivElement\n _this._correctedInstances++;\n\n if (_this._mountingCorrections === _this._correctedInstances) {\n _this._correctScroll();\n }\n });\n\n return;\n }\n\n _this._generateOffsetMeasurements();\n };\n\n _this._onItemRowUnmount = function (itemId, index) {\n var _assertThisInitialize = _assertThisInitialized(_this),\n props = _assertThisInitialize.props;\n\n if (props.itemData[index] === itemId) {\n return;\n }\n\n var doesItemExist = props.itemData.includes(itemId);\n\n if (!doesItemExist) {\n delete _this._listMetaData.itemSizeMap[itemId];\n delete _this._listMetaData.itemOffsetMap[itemId];\n var element = _this._outerRef;\n var atBottom = element.offsetHeight + element.scrollTop >= _this._listMetaData.totalMeasuredSize - atBottomMargin;\n\n if (window.logDSLEvents) {\n console.log('DynamicSizeList._onItemRowUnmount', 'element.offsetHeight=' + element.offsetHeight, 'element.scrollTop=' + element.scrollTop, 'totalMeasuredSize=' + _this._listMetaData.totalMeasuredSize, 'atBottom=' + atBottom, '_keepScrollToBottom=' + _this._keepScrollToBottom, 'props.correctScrollToBottom=' + _this.props.correctScrollToBottom);\n }\n\n _this._generateOffsetMeasurements();\n\n if (atBottom) {\n if (window.logDSLEvents) {\n console.log('DynamicSizeList._onItemRowUnmount - keeping at end');\n }\n\n _this.scrollToItem(0, 'end');\n } else {\n if (window.logDSLEvents) {\n console.log('DynamicSizeList._onItemRowUnmount - not keeping at end at end');\n }\n }\n\n _this.forceUpdate();\n }\n };\n\n _this._renderItems = function () {\n var _this$props = _this.props,\n children = _this$props.children,\n direction = _this$props.direction,\n itemData = _this$props.itemData,\n loaderId = _this$props.loaderId;\n var width = _this.innerRefWidth;\n\n var _this$_getRangeToRend2 = _this._getRangeToRender(),\n startIndex = _this$_getRangeToRend2[0],\n stopIndex = _this$_getRangeToRend2[1];\n\n var itemCount = itemData.length;\n var items = [];\n\n if (itemCount > 0) {\n for (var index = itemCount - 1; index >= 0; index--) {\n var _getItemMetadata = getItemMetadata(_this.props, index, _this._listMetaData),\n size = _getItemMetadata.size;\n\n var _this$state$localOlde = _this.state.localOlderPostsToRender,\n localOlderPostsToRenderStartIndex = _this$state$localOlde[0],\n localOlderPostsToRenderStopIndex = _this$state$localOlde[1];\n var isItemInLocalPosts = index >= localOlderPostsToRenderStartIndex && index < localOlderPostsToRenderStopIndex + 1 && localOlderPostsToRenderStartIndex === stopIndex + 1;\n var isLoader = itemData[index] === loaderId;\n var itemId = itemData[index]; // It's important to read style after fetching item metadata.\n // getItemMetadata() will clear stale styles.\n\n var style = _this._getItemStyle(index);\n\n if (index >= startIndex && index < stopIndex + 1 || isItemInLocalPosts || isLoader) {\n var item = createElement(children, {\n data: itemData,\n itemId: itemId\n }); // Always wrap children in a ItemMeasurer to detect changes in size.\n\n items.push(createElement(ItemMeasurer, {\n direction: direction,\n handleNewMeasurements: _this._handleNewMeasurements,\n index: index,\n item: item,\n key: itemId,\n size: size,\n itemId: itemId,\n width: width,\n onUnmount: _this._onItemRowUnmount,\n itemCount: itemCount\n }));\n } else {\n items.push(createElement('div', {\n key: itemId,\n style: style\n }));\n }\n }\n }\n\n return items;\n };\n\n _this._onScrollVertical = function (event) {\n if (!_this.state.scrolledToInitIndex) {\n return;\n }\n\n var _event$currentTarget = event.currentTarget,\n scrollTop = _event$currentTarget.scrollTop,\n scrollHeight = _event$currentTarget.scrollHeight;\n\n if (_this._scrollCorrectionInProgress) {\n if (_this.state.scrollUpdateWasRequested) {\n _this.setState(function () {\n return {\n scrollUpdateWasRequested: false\n };\n });\n }\n\n return;\n }\n\n if (scrollHeight !== _this.state.scrollHeight) {\n _this.setState({\n scrollHeight: scrollHeight\n });\n }\n\n _this.setState(function (prevState) {\n if (prevState.scrollOffset === scrollTop) {\n // Scroll position may have been updated by cDM/cDU,\n // In which case we don't need to trigger another render,\n return null;\n }\n\n return {\n scrollDirection: prevState.scrollOffset < scrollTop ? 'forward' : 'backward',\n scrollOffset: scrollTop,\n scrollUpdateWasRequested: false,\n scrollHeight: scrollHeight,\n scrollTop: scrollTop,\n scrollDelta: 0\n };\n });\n };\n\n _this._outerRefSetter = function (ref) {\n var outerRef = _this.props.outerRef;\n _this.innerRefWidth = _this.props.innerRef.current.clientWidth;\n _this._outerRef = ref;\n\n if (typeof outerRef === 'function') {\n outerRef(ref);\n } else if (outerRef != null && typeof outerRef === 'object' && outerRef.hasOwnProperty('current')) {\n outerRef.current = ref;\n }\n };\n\n return _this;\n }\n\n DynamicSizeList.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n validateProps(props);\n return null;\n };\n\n var _proto = DynamicSizeList.prototype;\n\n _proto.scrollTo = function scrollTo(scrollOffset, scrollByValue, useAnimationFrame) {\n var _this2 = this;\n\n if (useAnimationFrame === void 0) {\n useAnimationFrame = false;\n }\n\n this._scrollCorrectionInProgress = true;\n this.setState(function (prevState) {\n return {\n scrollDirection: prevState.scrollOffset >= scrollOffset ? 'backward' : 'forward',\n scrollOffset: scrollOffset,\n scrollUpdateWasRequested: true,\n scrollByValue: scrollByValue\n };\n }, function () {\n if (useAnimationFrame) {\n _this2._scrollByCorrection = window.requestAnimationFrame(_this2.scrollBy(_this2.state.scrollOffset, _this2.state.scrollByValue));\n } else {\n _this2.scrollBy(_this2.state.scrollOffset, _this2.state.scrollByValue)();\n }\n });\n this.forceUpdate();\n };\n\n _proto.scrollToItem = function scrollToItem(index, align, offset) {\n if (align === void 0) {\n align = 'auto';\n }\n\n if (offset === void 0) {\n offset = 0;\n }\n\n var scrollOffset = this.state.scrollOffset; //Ideally the below scrollTo works fine but firefox has 6px issue and stays 6px from bottom when corrected\n //so manually keeping scroll position bottom for now\n\n var element = this._outerRef;\n\n if (index === 0 && align === 'end') {\n this.scrollTo(element.scrollHeight - this.props.height);\n return;\n }\n\n var offsetOfItem = getOffsetForIndexAndAlignment(this.props, index, align, scrollOffset, this._listMetaData);\n\n if (!offsetOfItem) {\n var itemSize = getItemSize(this.props, index, this._listMetaData);\n\n if (!itemSize && this.props.scrollToFailed) {\n if (this.state.scrolledToInitIndex) {\n this.props.scrollToFailed(index);\n } else {\n console.warn('Failed to do initial scroll correction', this.props.initRangeToRender, index);\n }\n }\n }\n\n this.scrollTo(offsetOfItem + offset);\n };\n\n _proto.componentDidMount = function componentDidMount() {\n var initialScrollOffset = this.props.initialScrollOffset;\n\n if (typeof initialScrollOffset === 'number' && this._outerRef !== null) {\n var element = this._outerRef;\n element.scrollTop = initialScrollOffset;\n }\n\n this._commitHook();\n };\n\n _proto.getSnapshotBeforeUpdate = function getSnapshotBeforeUpdate(prevProps, prevState) {\n if (prevState.localOlderPostsToRender[0] !== this.state.localOlderPostsToRender[0] || prevState.localOlderPostsToRender[1] !== this.state.localOlderPostsToRender[1]) {\n var element = this._outerRef;\n var previousScrollTop = element.scrollTop;\n var previousScrollHeight = element.scrollHeight;\n return {\n previousScrollTop: previousScrollTop,\n previousScrollHeight: previousScrollHeight\n };\n }\n\n return null;\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState, snapshot) {\n if (this.state.scrolledToInitIndex) {\n var _this$state = this.state,\n _scrollDirection = _this$state.scrollDirection,\n _scrollOffset = _this$state.scrollOffset,\n _scrollUpdateWasRequested = _this$state.scrollUpdateWasRequested,\n _scrollHeight = _this$state.scrollHeight;\n var prevScrollDirection = prevState.scrollDirection,\n prevScrollOffset = prevState.scrollOffset,\n prevScrollUpdateWasRequested = prevState.scrollUpdateWasRequested,\n previousScrollHeight = prevState.scrollHeight;\n\n if (_scrollDirection !== prevScrollDirection || _scrollOffset !== prevScrollOffset || _scrollUpdateWasRequested !== prevScrollUpdateWasRequested || _scrollHeight !== previousScrollHeight) {\n this._callPropsCallbacks();\n }\n\n if (!prevState.scrolledToInitIndex) {\n this._keepScrollPosition = false;\n this._keepScrollToBottom = false;\n }\n }\n\n this._commitHook();\n\n if (prevProps.itemData !== this.props.itemData) {\n this._dataChange();\n }\n\n if (prevProps.height !== this.props.height) {\n this._heightChange(prevProps.height, prevState.scrollOffset);\n }\n\n if (prevState.scrolledToInitIndex !== this.state.scrolledToInitIndex) {\n this._dataChange(); // though this is not data change we are checking for first load change\n\n }\n\n if (prevProps.width !== this.props.width) {\n this.innerRefWidth = this.props.innerRef.current.clientWidth;\n\n this._widthChange(prevProps.height, prevState.scrollOffset);\n }\n\n if (prevState.localOlderPostsToRender[0] !== this.state.localOlderPostsToRender[0] || prevState.localOlderPostsToRender[1] !== this.state.localOlderPostsToRender[1]) {\n var postlistScrollHeight = this._outerRef.scrollHeight;\n var scrollValue = snapshot.previousScrollTop + (postlistScrollHeight - snapshot.previousScrollHeight);\n this.scrollTo(scrollValue, scrollValue - snapshot.previousScrollTop, true);\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this._scrollByCorrection) {\n window.cancelAnimationFrame(this._scrollByCorrection);\n }\n };\n\n _proto.render = function render() {\n var _this$props2 = this.props,\n className = _this$props2.className,\n innerRef = _this$props2.innerRef,\n innerTagName = _this$props2.innerTagName,\n outerTagName = _this$props2.outerTagName,\n style = _this$props2.style,\n innerListStyle = _this$props2.innerListStyle;\n var onScroll = this._onScrollVertical;\n\n var items = this._renderItems();\n\n return createElement(outerTagName, {\n className: className,\n onScroll: onScroll,\n ref: this._outerRefSetter,\n style: _extends({\n WebkitOverflowScrolling: 'touch',\n overflowY: 'auto',\n overflowAnchor: 'none',\n willChange: 'transform',\n width: '100%'\n }, style)\n }, createElement(innerTagName, {\n children: items,\n ref: innerRef,\n role: 'list',\n style: innerListStyle\n }));\n };\n\n _proto._callPropsCallbacks = function _callPropsCallbacks() {\n var _this$props3 = this.props,\n itemData = _this$props3.itemData,\n height = _this$props3.height;\n var _this$state2 = this.state,\n scrollDirection = _this$state2.scrollDirection,\n scrollOffset = _this$state2.scrollOffset,\n scrollUpdateWasRequested = _this$state2.scrollUpdateWasRequested,\n scrollHeight = _this$state2.scrollHeight;\n var itemCount = itemData.length;\n\n if (typeof this.props.onItemsRendered === 'function') {\n if (itemCount > 0) {\n var _this$_getRangeToRend3 = this._getRangeToRender(),\n _overscanStartIndex = _this$_getRangeToRend3[0],\n _overscanStopIndex = _this$_getRangeToRend3[1],\n _visibleStartIndex2 = _this$_getRangeToRend3[2],\n _visibleStopIndex = _this$_getRangeToRend3[3];\n\n this._callOnItemsRendered(_overscanStartIndex, _overscanStopIndex, _visibleStartIndex2, _visibleStopIndex);\n\n if (scrollDirection === 'backward' && scrollOffset < 1000 && _overscanStopIndex !== itemCount - 1) {\n var sizeOfNextElement = getItemSize(this.props, _overscanStopIndex + 1, this._listMetaData).size;\n\n if (!sizeOfNextElement && this.state.scrolledToInitIndex) {\n this.setState(function (prevState) {\n if (prevState.localOlderPostsToRender[0] !== _overscanStopIndex + 1) {\n return {\n localOlderPostsToRender: [_overscanStopIndex + 1, _overscanStopIndex + 50]\n };\n }\n\n return null;\n });\n }\n }\n }\n }\n\n if (typeof this.props.onScroll === 'function') {\n this._callOnScroll(scrollDirection, scrollOffset, scrollUpdateWasRequested, scrollHeight, height);\n }\n } // This method is called after mount and update.\n // List implementations can override this method to be notified.\n ;\n\n _proto._getRangeToRender = function _getRangeToRender(scrollTop, scrollHeight) {\n var _this$props4 = this.props,\n itemData = _this$props4.itemData,\n overscanCountForward = _this$props4.overscanCountForward,\n overscanCountBackward = _this$props4.overscanCountBackward;\n var _this$state3 = this.state,\n scrollDirection = _this$state3.scrollDirection,\n scrollOffset = _this$state3.scrollOffset;\n var itemCount = itemData.length;\n\n if (itemCount === 0) {\n return [0, 0, 0, 0];\n }\n\n var scrollOffsetValue = scrollTop >= 0 ? scrollTop : scrollOffset;\n var startIndex = getStartIndexForOffset(this.props, scrollOffsetValue, this._listMetaData);\n var stopIndex = getStopIndexForStartIndex(this.props, startIndex, scrollOffsetValue, this._listMetaData); // Overscan by one item in each direction so that tab/focus works.\n // If there isn't at least one extra item, tab loops back around.\n\n var overscanBackward = scrollDirection === 'backward' ? overscanCountBackward : Math.max(1, overscanCountForward);\n var overscanForward = scrollDirection === 'forward' ? overscanCountBackward : Math.max(1, overscanCountForward);\n var minValue = Math.max(0, stopIndex - overscanBackward);\n var maxValue = Math.max(0, Math.min(itemCount - 1, startIndex + overscanForward));\n\n while (!getItemSize(this.props, maxValue, this._listMetaData) && maxValue > 0 && this._listMetaData.totalMeasuredSize > this.props.height) {\n maxValue--;\n }\n\n if (!this.state.scrolledToInitIndex && this.props.initRangeToRender.length) {\n return this.props.initRangeToRender;\n }\n\n return [minValue, maxValue, startIndex, stopIndex];\n };\n\n return DynamicSizeList;\n}(PureComponent); // NOTE: I considered further wrapping individual items with a pure ListItem component.\n// This would avoid ever calling the render function for the same index more than once,\n// But it would also add the overhead of a lot of components/fibers.\n// I assume people already do this (render function returning a class component),\n// So my doing it would just unnecessarily double the wrappers.\n\n\nDynamicSizeList.defaultProps = {\n innerTagName: 'div',\n itemData: undefined,\n outerTagName: 'div',\n overscanCountForward: 30,\n overscanCountBackward: 10\n};\n\nvar validateProps = function validateProps(_ref) {\n var children = _ref.children,\n itemSize = _ref.itemSize;\n\n if (process.env.NODE_ENV !== 'production') {\n if (children == null) {\n throw Error('An invalid \"children\" prop has been specified. ' + 'Value should be a React component. ' + (\"\\\"\" + (children === null ? 'null' : typeof children) + \"\\\" was specified.\"));\n }\n\n if (itemSize !== undefined) {\n throw Error('An unexpected \"itemSize\" prop has been provided.');\n }\n }\n};\n\nexport { DynamicSizeList };\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.renderViewDefault = renderViewDefault;\nexports.renderTrackHorizontalDefault = renderTrackHorizontalDefault;\nexports.renderTrackVerticalDefault = renderTrackVerticalDefault;\nexports.renderThumbHorizontalDefault = renderThumbHorizontalDefault;\nexports.renderThumbVerticalDefault = renderThumbVerticalDefault;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\n/* eslint-disable react/prop-types */\n\nfunction renderViewDefault(props) {\n return _react2[\"default\"].createElement('div', props);\n}\n\nfunction renderTrackHorizontalDefault(_ref) {\n var style = _ref.style,\n props = _objectWithoutProperties(_ref, ['style']);\n\n var finalStyle = _extends({}, style, {\n right: 2,\n bottom: 2,\n left: 2,\n borderRadius: 3\n });\n return _react2[\"default\"].createElement('div', _extends({ style: finalStyle }, props));\n}\n\nfunction renderTrackVerticalDefault(_ref2) {\n var style = _ref2.style,\n props = _objectWithoutProperties(_ref2, ['style']);\n\n var finalStyle = _extends({}, style, {\n right: 2,\n bottom: 2,\n top: 2,\n borderRadius: 3\n });\n return _react2[\"default\"].createElement('div', _extends({ style: finalStyle }, props));\n}\n\nfunction renderThumbHorizontalDefault(_ref3) {\n var style = _ref3.style,\n props = _objectWithoutProperties(_ref3, ['style']);\n\n var finalStyle = _extends({}, style, {\n cursor: 'pointer',\n borderRadius: 'inherit',\n backgroundColor: 'rgba(0,0,0,.2)'\n });\n return _react2[\"default\"].createElement('div', _extends({ style: finalStyle }, props));\n}\n\nfunction renderThumbVerticalDefault(_ref4) {\n var style = _ref4.style,\n props = _objectWithoutProperties(_ref4, ['style']);\n\n var finalStyle = _extends({}, style, {\n cursor: 'pointer',\n borderRadius: 'inherit',\n backgroundColor: 'rgba(0,0,0,.2)'\n });\n return _react2[\"default\"].createElement('div', _extends({ style: finalStyle }, props));\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _raf2 = require('raf');\n\nvar _raf3 = _interopRequireDefault(_raf2);\n\nvar _domCss = require('dom-css');\n\nvar _domCss2 = _interopRequireDefault(_domCss);\n\nvar _react = require('react');\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _isString = require('../utils/isString');\n\nvar _isString2 = _interopRequireDefault(_isString);\n\nvar _getScrollbarWidth = require('../utils/getScrollbarWidth');\n\nvar _getScrollbarWidth2 = _interopRequireDefault(_getScrollbarWidth);\n\nvar _returnFalse = require('../utils/returnFalse');\n\nvar _returnFalse2 = _interopRequireDefault(_returnFalse);\n\nvar _getInnerWidth = require('../utils/getInnerWidth');\n\nvar _getInnerWidth2 = _interopRequireDefault(_getInnerWidth);\n\nvar _getInnerHeight = require('../utils/getInnerHeight');\n\nvar _getInnerHeight2 = _interopRequireDefault(_getInnerHeight);\n\nvar _styles = require('./styles');\n\nvar _defaultRenderElements = require('./defaultRenderElements');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Scrollbars = function (_Component) {\n _inherits(Scrollbars, _Component);\n\n function Scrollbars(props) {\n var _ref;\n\n _classCallCheck(this, Scrollbars);\n\n for (var _len = arguments.length, rest = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n rest[_key - 1] = arguments[_key];\n }\n\n var _this = _possibleConstructorReturn(this, (_ref = Scrollbars.__proto__ || Object.getPrototypeOf(Scrollbars)).call.apply(_ref, [this, props].concat(rest)));\n\n _this.getScrollLeft = _this.getScrollLeft.bind(_this);\n _this.getScrollTop = _this.getScrollTop.bind(_this);\n _this.getScrollWidth = _this.getScrollWidth.bind(_this);\n _this.getScrollHeight = _this.getScrollHeight.bind(_this);\n _this.getClientWidth = _this.getClientWidth.bind(_this);\n _this.getClientHeight = _this.getClientHeight.bind(_this);\n _this.getValues = _this.getValues.bind(_this);\n _this.getThumbHorizontalWidth = _this.getThumbHorizontalWidth.bind(_this);\n _this.getThumbVerticalHeight = _this.getThumbVerticalHeight.bind(_this);\n _this.getScrollLeftForOffset = _this.getScrollLeftForOffset.bind(_this);\n _this.getScrollTopForOffset = _this.getScrollTopForOffset.bind(_this);\n\n _this.scrollLeft = _this.scrollLeft.bind(_this);\n _this.scrollTop = _this.scrollTop.bind(_this);\n _this.scrollToLeft = _this.scrollToLeft.bind(_this);\n _this.scrollToTop = _this.scrollToTop.bind(_this);\n _this.scrollToRight = _this.scrollToRight.bind(_this);\n _this.scrollToBottom = _this.scrollToBottom.bind(_this);\n\n _this.handleTrackMouseEnter = _this.handleTrackMouseEnter.bind(_this);\n _this.handleTrackMouseLeave = _this.handleTrackMouseLeave.bind(_this);\n _this.handleHorizontalTrackMouseDown = _this.handleHorizontalTrackMouseDown.bind(_this);\n _this.handleVerticalTrackMouseDown = _this.handleVerticalTrackMouseDown.bind(_this);\n _this.handleHorizontalThumbMouseDown = _this.handleHorizontalThumbMouseDown.bind(_this);\n _this.handleVerticalThumbMouseDown = _this.handleVerticalThumbMouseDown.bind(_this);\n _this.handleWindowResize = _this.handleWindowResize.bind(_this);\n _this.handleScroll = _this.handleScroll.bind(_this);\n _this.handleDrag = _this.handleDrag.bind(_this);\n _this.handleDragEnd = _this.handleDragEnd.bind(_this);\n\n _this.state = {\n didMountUniversal: false\n };\n return _this;\n }\n\n _createClass(Scrollbars, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.addListeners();\n this.update();\n this.componentDidMountUniversal();\n }\n }, {\n key: 'componentDidMountUniversal',\n value: function componentDidMountUniversal() {\n // eslint-disable-line react/sort-comp\n var universal = this.props.universal;\n\n if (!universal) return;\n this.setState({ didMountUniversal: true });\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n this.update();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.removeListeners();\n (0, _raf2.cancel)(this.requestFrame);\n clearTimeout(this.hideTracksTimeout);\n clearInterval(this.detectScrollingInterval);\n }\n }, {\n key: 'getScrollLeft',\n value: function getScrollLeft() {\n if (!this.view) return 0;\n return this.view.scrollLeft;\n }\n }, {\n key: 'getScrollTop',\n value: function getScrollTop() {\n if (!this.view) return 0;\n return this.view.scrollTop;\n }\n }, {\n key: 'getScrollWidth',\n value: function getScrollWidth() {\n if (!this.view) return 0;\n return this.view.scrollWidth;\n }\n }, {\n key: 'getScrollHeight',\n value: function getScrollHeight() {\n if (!this.view) return 0;\n return this.view.scrollHeight;\n }\n }, {\n key: 'getClientWidth',\n value: function getClientWidth() {\n if (!this.view) return 0;\n return this.view.clientWidth;\n }\n }, {\n key: 'getClientHeight',\n value: function getClientHeight() {\n if (!this.view) return 0;\n return this.view.clientHeight;\n }\n }, {\n key: 'getValues',\n value: function getValues() {\n var _ref2 = this.view || {},\n _ref2$scrollLeft = _ref2.scrollLeft,\n scrollLeft = _ref2$scrollLeft === undefined ? 0 : _ref2$scrollLeft,\n _ref2$scrollTop = _ref2.scrollTop,\n scrollTop = _ref2$scrollTop === undefined ? 0 : _ref2$scrollTop,\n _ref2$scrollWidth = _ref2.scrollWidth,\n scrollWidth = _ref2$scrollWidth === undefined ? 0 : _ref2$scrollWidth,\n _ref2$scrollHeight = _ref2.scrollHeight,\n scrollHeight = _ref2$scrollHeight === undefined ? 0 : _ref2$scrollHeight,\n _ref2$clientWidth = _ref2.clientWidth,\n clientWidth = _ref2$clientWidth === undefined ? 0 : _ref2$clientWidth,\n _ref2$clientHeight = _ref2.clientHeight,\n clientHeight = _ref2$clientHeight === undefined ? 0 : _ref2$clientHeight;\n\n return {\n left: scrollLeft / (scrollWidth - clientWidth) || 0,\n top: scrollTop / (scrollHeight - clientHeight) || 0,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n scrollWidth: scrollWidth,\n scrollHeight: scrollHeight,\n clientWidth: clientWidth,\n clientHeight: clientHeight\n };\n }\n }, {\n key: 'getThumbHorizontalWidth',\n value: function getThumbHorizontalWidth() {\n var _props = this.props,\n thumbSize = _props.thumbSize,\n thumbMinSize = _props.thumbMinSize;\n var _view = this.view,\n scrollWidth = _view.scrollWidth,\n clientWidth = _view.clientWidth;\n\n var trackWidth = (0, _getInnerWidth2[\"default\"])(this.trackHorizontal);\n var width = Math.ceil(clientWidth / scrollWidth * trackWidth);\n if (trackWidth === width) return 0;\n if (thumbSize) return thumbSize;\n return Math.max(width, thumbMinSize);\n }\n }, {\n key: 'getThumbVerticalHeight',\n value: function getThumbVerticalHeight() {\n var _props2 = this.props,\n thumbSize = _props2.thumbSize,\n thumbMinSize = _props2.thumbMinSize;\n var _view2 = this.view,\n scrollHeight = _view2.scrollHeight,\n clientHeight = _view2.clientHeight;\n\n var trackHeight = (0, _getInnerHeight2[\"default\"])(this.trackVertical);\n var height = Math.ceil(clientHeight / scrollHeight * trackHeight);\n if (trackHeight === height) return 0;\n if (thumbSize) return thumbSize;\n return Math.max(height, thumbMinSize);\n }\n }, {\n key: 'getScrollLeftForOffset',\n value: function getScrollLeftForOffset(offset) {\n var _view3 = this.view,\n scrollWidth = _view3.scrollWidth,\n clientWidth = _view3.clientWidth;\n\n var trackWidth = (0, _getInnerWidth2[\"default\"])(this.trackHorizontal);\n var thumbWidth = this.getThumbHorizontalWidth();\n return offset / (trackWidth - thumbWidth) * (scrollWidth - clientWidth);\n }\n }, {\n key: 'getScrollTopForOffset',\n value: function getScrollTopForOffset(offset) {\n var _view4 = this.view,\n scrollHeight = _view4.scrollHeight,\n clientHeight = _view4.clientHeight;\n\n var trackHeight = (0, _getInnerHeight2[\"default\"])(this.trackVertical);\n var thumbHeight = this.getThumbVerticalHeight();\n return offset / (trackHeight - thumbHeight) * (scrollHeight - clientHeight);\n }\n }, {\n key: 'scrollLeft',\n value: function scrollLeft() {\n var left = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (!this.view) return;\n this.view.scrollLeft = left;\n }\n }, {\n key: 'scrollTop',\n value: function scrollTop() {\n var top = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (!this.view) return;\n this.view.scrollTop = top;\n }\n }, {\n key: 'scrollToLeft',\n value: function scrollToLeft() {\n if (!this.view) return;\n this.view.scrollLeft = 0;\n }\n }, {\n key: 'scrollToTop',\n value: function scrollToTop() {\n if (!this.view) return;\n this.view.scrollTop = 0;\n }\n }, {\n key: 'scrollToRight',\n value: function scrollToRight() {\n if (!this.view) return;\n this.view.scrollLeft = this.view.scrollWidth;\n }\n }, {\n key: 'scrollToBottom',\n value: function scrollToBottom() {\n if (!this.view) return;\n this.view.scrollTop = this.view.scrollHeight;\n }\n }, {\n key: 'addListeners',\n value: function addListeners() {\n /* istanbul ignore if */\n if (typeof document === 'undefined' || !this.view) return;\n var view = this.view,\n trackHorizontal = this.trackHorizontal,\n trackVertical = this.trackVertical,\n thumbHorizontal = this.thumbHorizontal,\n thumbVertical = this.thumbVertical;\n\n view.addEventListener('scroll', this.handleScroll);\n if (!(0, _getScrollbarWidth2[\"default\"])()) return;\n trackHorizontal.addEventListener('mouseenter', this.handleTrackMouseEnter);\n trackHorizontal.addEventListener('mouseleave', this.handleTrackMouseLeave);\n trackHorizontal.addEventListener('mousedown', this.handleHorizontalTrackMouseDown);\n trackVertical.addEventListener('mouseenter', this.handleTrackMouseEnter);\n trackVertical.addEventListener('mouseleave', this.handleTrackMouseLeave);\n trackVertical.addEventListener('mousedown', this.handleVerticalTrackMouseDown);\n thumbHorizontal.addEventListener('mousedown', this.handleHorizontalThumbMouseDown);\n thumbVertical.addEventListener('mousedown', this.handleVerticalThumbMouseDown);\n window.addEventListener('resize', this.handleWindowResize);\n }\n }, {\n key: 'removeListeners',\n value: function removeListeners() {\n /* istanbul ignore if */\n if (typeof document === 'undefined' || !this.view) return;\n var view = this.view,\n trackHorizontal = this.trackHorizontal,\n trackVertical = this.trackVertical,\n thumbHorizontal = this.thumbHorizontal,\n thumbVertical = this.thumbVertical;\n\n view.removeEventListener('scroll', this.handleScroll);\n if (!(0, _getScrollbarWidth2[\"default\"])()) return;\n trackHorizontal.removeEventListener('mouseenter', this.handleTrackMouseEnter);\n trackHorizontal.removeEventListener('mouseleave', this.handleTrackMouseLeave);\n trackHorizontal.removeEventListener('mousedown', this.handleHorizontalTrackMouseDown);\n trackVertical.removeEventListener('mouseenter', this.handleTrackMouseEnter);\n trackVertical.removeEventListener('mouseleave', this.handleTrackMouseLeave);\n trackVertical.removeEventListener('mousedown', this.handleVerticalTrackMouseDown);\n thumbHorizontal.removeEventListener('mousedown', this.handleHorizontalThumbMouseDown);\n thumbVertical.removeEventListener('mousedown', this.handleVerticalThumbMouseDown);\n window.removeEventListener('resize', this.handleWindowResize);\n // Possibly setup by `handleDragStart`\n this.teardownDragging();\n }\n }, {\n key: 'handleScroll',\n value: function handleScroll(event) {\n var _this2 = this;\n\n var _props3 = this.props,\n onScroll = _props3.onScroll,\n onScrollFrame = _props3.onScrollFrame;\n\n if (onScroll) onScroll(event);\n this.update(function (values) {\n var scrollLeft = values.scrollLeft,\n scrollTop = values.scrollTop;\n\n _this2.viewScrollLeft = scrollLeft;\n _this2.viewScrollTop = scrollTop;\n if (onScrollFrame) onScrollFrame(values);\n });\n this.detectScrolling();\n }\n }, {\n key: 'handleScrollStart',\n value: function handleScrollStart() {\n var onScrollStart = this.props.onScrollStart;\n\n if (onScrollStart) onScrollStart();\n this.handleScrollStartAutoHide();\n }\n }, {\n key: 'handleScrollStartAutoHide',\n value: function handleScrollStartAutoHide() {\n var autoHide = this.props.autoHide;\n\n if (!autoHide) return;\n this.showTracks();\n }\n }, {\n key: 'handleScrollStop',\n value: function handleScrollStop() {\n var onScrollStop = this.props.onScrollStop;\n\n if (onScrollStop) onScrollStop();\n this.handleScrollStopAutoHide();\n }\n }, {\n key: 'handleScrollStopAutoHide',\n value: function handleScrollStopAutoHide() {\n var autoHide = this.props.autoHide;\n\n if (!autoHide) return;\n this.hideTracks();\n }\n }, {\n key: 'handleWindowResize',\n value: function handleWindowResize() {\n this.update();\n }\n }, {\n key: 'handleHorizontalTrackMouseDown',\n value: function handleHorizontalTrackMouseDown(event) {\n event.preventDefault();\n var target = event.target,\n clientX = event.clientX;\n\n var _target$getBoundingCl = target.getBoundingClientRect(),\n targetLeft = _target$getBoundingCl.left;\n\n var thumbWidth = this.getThumbHorizontalWidth();\n var offset = Math.abs(targetLeft - clientX) - thumbWidth / 2;\n this.view.scrollLeft = this.getScrollLeftForOffset(offset);\n }\n }, {\n key: 'handleVerticalTrackMouseDown',\n value: function handleVerticalTrackMouseDown(event) {\n event.preventDefault();\n var target = event.target,\n clientY = event.clientY;\n\n var _target$getBoundingCl2 = target.getBoundingClientRect(),\n targetTop = _target$getBoundingCl2.top;\n\n var thumbHeight = this.getThumbVerticalHeight();\n var offset = Math.abs(targetTop - clientY) - thumbHeight / 2;\n this.view.scrollTop = this.getScrollTopForOffset(offset);\n }\n }, {\n key: 'handleHorizontalThumbMouseDown',\n value: function handleHorizontalThumbMouseDown(event) {\n event.preventDefault();\n this.handleDragStart(event);\n var target = event.target,\n clientX = event.clientX;\n var offsetWidth = target.offsetWidth;\n\n var _target$getBoundingCl3 = target.getBoundingClientRect(),\n left = _target$getBoundingCl3.left;\n\n this.prevPageX = offsetWidth - (clientX - left);\n }\n }, {\n key: 'handleVerticalThumbMouseDown',\n value: function handleVerticalThumbMouseDown(event) {\n event.preventDefault();\n this.handleDragStart(event);\n var target = event.target,\n clientY = event.clientY;\n var offsetHeight = target.offsetHeight;\n\n var _target$getBoundingCl4 = target.getBoundingClientRect(),\n top = _target$getBoundingCl4.top;\n\n this.prevPageY = offsetHeight - (clientY - top);\n }\n }, {\n key: 'setupDragging',\n value: function setupDragging() {\n (0, _domCss2[\"default\"])(document.body, _styles.disableSelectStyle);\n document.addEventListener('mousemove', this.handleDrag);\n document.addEventListener('mouseup', this.handleDragEnd);\n document.onselectstart = _returnFalse2[\"default\"];\n }\n }, {\n key: 'teardownDragging',\n value: function teardownDragging() {\n (0, _domCss2[\"default\"])(document.body, _styles.disableSelectStyleReset);\n document.removeEventListener('mousemove', this.handleDrag);\n document.removeEventListener('mouseup', this.handleDragEnd);\n document.onselectstart = undefined;\n }\n }, {\n key: 'handleDragStart',\n value: function handleDragStart(event) {\n this.dragging = true;\n event.stopImmediatePropagation();\n this.setupDragging();\n }\n }, {\n key: 'handleDrag',\n value: function handleDrag(event) {\n if (this.prevPageX) {\n var clientX = event.clientX;\n\n var _trackHorizontal$getB = this.trackHorizontal.getBoundingClientRect(),\n trackLeft = _trackHorizontal$getB.left;\n\n var thumbWidth = this.getThumbHorizontalWidth();\n var clickPosition = thumbWidth - this.prevPageX;\n var offset = -trackLeft + clientX - clickPosition;\n this.view.scrollLeft = this.getScrollLeftForOffset(offset);\n }\n if (this.prevPageY) {\n var clientY = event.clientY;\n\n var _trackVertical$getBou = this.trackVertical.getBoundingClientRect(),\n trackTop = _trackVertical$getBou.top;\n\n var thumbHeight = this.getThumbVerticalHeight();\n var _clickPosition = thumbHeight - this.prevPageY;\n var _offset = -trackTop + clientY - _clickPosition;\n this.view.scrollTop = this.getScrollTopForOffset(_offset);\n }\n return false;\n }\n }, {\n key: 'handleDragEnd',\n value: function handleDragEnd() {\n this.dragging = false;\n this.prevPageX = this.prevPageY = 0;\n this.teardownDragging();\n this.handleDragEndAutoHide();\n }\n }, {\n key: 'handleDragEndAutoHide',\n value: function handleDragEndAutoHide() {\n var autoHide = this.props.autoHide;\n\n if (!autoHide) return;\n this.hideTracks();\n }\n }, {\n key: 'handleTrackMouseEnter',\n value: function handleTrackMouseEnter() {\n this.trackMouseOver = true;\n this.handleTrackMouseEnterAutoHide();\n }\n }, {\n key: 'handleTrackMouseEnterAutoHide',\n value: function handleTrackMouseEnterAutoHide() {\n var autoHide = this.props.autoHide;\n\n if (!autoHide) return;\n this.showTracks();\n }\n }, {\n key: 'handleTrackMouseLeave',\n value: function handleTrackMouseLeave() {\n this.trackMouseOver = false;\n this.handleTrackMouseLeaveAutoHide();\n }\n }, {\n key: 'handleTrackMouseLeaveAutoHide',\n value: function handleTrackMouseLeaveAutoHide() {\n var autoHide = this.props.autoHide;\n\n if (!autoHide) return;\n this.hideTracks();\n }\n }, {\n key: 'showTracks',\n value: function showTracks() {\n clearTimeout(this.hideTracksTimeout);\n (0, _domCss2[\"default\"])(this.trackHorizontal, { opacity: 1 });\n (0, _domCss2[\"default\"])(this.trackVertical, { opacity: 1 });\n }\n }, {\n key: 'hideTracks',\n value: function hideTracks() {\n var _this3 = this;\n\n if (this.dragging) return;\n if (this.scrolling) return;\n if (this.trackMouseOver) return;\n var autoHideTimeout = this.props.autoHideTimeout;\n\n clearTimeout(this.hideTracksTimeout);\n this.hideTracksTimeout = setTimeout(function () {\n (0, _domCss2[\"default\"])(_this3.trackHorizontal, { opacity: 0 });\n (0, _domCss2[\"default\"])(_this3.trackVertical, { opacity: 0 });\n }, autoHideTimeout);\n }\n }, {\n key: 'detectScrolling',\n value: function detectScrolling() {\n var _this4 = this;\n\n if (this.scrolling) return;\n this.scrolling = true;\n this.handleScrollStart();\n this.detectScrollingInterval = setInterval(function () {\n if (_this4.lastViewScrollLeft === _this4.viewScrollLeft && _this4.lastViewScrollTop === _this4.viewScrollTop) {\n clearInterval(_this4.detectScrollingInterval);\n _this4.scrolling = false;\n _this4.handleScrollStop();\n }\n _this4.lastViewScrollLeft = _this4.viewScrollLeft;\n _this4.lastViewScrollTop = _this4.viewScrollTop;\n }, 100);\n }\n }, {\n key: 'raf',\n value: function raf(callback) {\n var _this5 = this;\n\n if (this.requestFrame) _raf3[\"default\"].cancel(this.requestFrame);\n this.requestFrame = (0, _raf3[\"default\"])(function () {\n _this5.requestFrame = undefined;\n callback();\n });\n }\n }, {\n key: 'update',\n value: function update(callback) {\n var _this6 = this;\n\n this.raf(function () {\n return _this6._update(callback);\n });\n }\n }, {\n key: '_update',\n value: function _update(callback) {\n var _props4 = this.props,\n onUpdate = _props4.onUpdate,\n hideTracksWhenNotNeeded = _props4.hideTracksWhenNotNeeded;\n\n var values = this.getValues();\n if ((0, _getScrollbarWidth2[\"default\"])()) {\n var scrollLeft = values.scrollLeft,\n clientWidth = values.clientWidth,\n scrollWidth = values.scrollWidth;\n\n var trackHorizontalWidth = (0, _getInnerWidth2[\"default\"])(this.trackHorizontal);\n var thumbHorizontalWidth = this.getThumbHorizontalWidth();\n var thumbHorizontalX = scrollLeft / (scrollWidth - clientWidth) * (trackHorizontalWidth - thumbHorizontalWidth);\n var thumbHorizontalStyle = {\n width: thumbHorizontalWidth,\n transform: 'translateX(' + thumbHorizontalX + 'px)'\n };\n var scrollTop = values.scrollTop,\n clientHeight = values.clientHeight,\n scrollHeight = values.scrollHeight;\n\n var trackVerticalHeight = (0, _getInnerHeight2[\"default\"])(this.trackVertical);\n var thumbVerticalHeight = this.getThumbVerticalHeight();\n var thumbVerticalY = scrollTop / (scrollHeight - clientHeight) * (trackVerticalHeight - thumbVerticalHeight);\n var thumbVerticalStyle = {\n height: thumbVerticalHeight,\n transform: 'translateY(' + thumbVerticalY + 'px)'\n };\n if (hideTracksWhenNotNeeded) {\n var trackHorizontalStyle = {\n visibility: scrollWidth > clientWidth ? 'visible' : 'hidden'\n };\n var trackVerticalStyle = {\n visibility: scrollHeight > clientHeight ? 'visible' : 'hidden'\n };\n (0, _domCss2[\"default\"])(this.trackHorizontal, trackHorizontalStyle);\n (0, _domCss2[\"default\"])(this.trackVertical, trackVerticalStyle);\n }\n (0, _domCss2[\"default\"])(this.thumbHorizontal, thumbHorizontalStyle);\n (0, _domCss2[\"default\"])(this.thumbVertical, thumbVerticalStyle);\n }\n if (onUpdate) onUpdate(values);\n if (typeof callback !== 'function') return;\n callback(values);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this7 = this;\n\n var scrollbarWidth = (0, _getScrollbarWidth2[\"default\"])();\n /* eslint-disable no-unused-vars */\n\n var _props5 = this.props,\n onScroll = _props5.onScroll,\n onScrollFrame = _props5.onScrollFrame,\n onScrollStart = _props5.onScrollStart,\n onScrollStop = _props5.onScrollStop,\n onUpdate = _props5.onUpdate,\n renderView = _props5.renderView,\n renderTrackHorizontal = _props5.renderTrackHorizontal,\n renderTrackVertical = _props5.renderTrackVertical,\n renderThumbHorizontal = _props5.renderThumbHorizontal,\n renderThumbVertical = _props5.renderThumbVertical,\n tagName = _props5.tagName,\n hideTracksWhenNotNeeded = _props5.hideTracksWhenNotNeeded,\n autoHide = _props5.autoHide,\n autoHideTimeout = _props5.autoHideTimeout,\n autoHideDuration = _props5.autoHideDuration,\n thumbSize = _props5.thumbSize,\n thumbMinSize = _props5.thumbMinSize,\n universal = _props5.universal,\n autoHeight = _props5.autoHeight,\n autoHeightMin = _props5.autoHeightMin,\n autoHeightMax = _props5.autoHeightMax,\n style = _props5.style,\n children = _props5.children,\n props = _objectWithoutProperties(_props5, ['onScroll', 'onScrollFrame', 'onScrollStart', 'onScrollStop', 'onUpdate', 'renderView', 'renderTrackHorizontal', 'renderTrackVertical', 'renderThumbHorizontal', 'renderThumbVertical', 'tagName', 'hideTracksWhenNotNeeded', 'autoHide', 'autoHideTimeout', 'autoHideDuration', 'thumbSize', 'thumbMinSize', 'universal', 'autoHeight', 'autoHeightMin', 'autoHeightMax', 'style', 'children']);\n /* eslint-enable no-unused-vars */\n\n var didMountUniversal = this.state.didMountUniversal;\n\n\n var containerStyle = _extends({}, _styles.containerStyleDefault, autoHeight && _extends({}, _styles.containerStyleAutoHeight, {\n minHeight: autoHeightMin,\n maxHeight: autoHeightMax\n }), style);\n\n var viewStyle = _extends({}, _styles.viewStyleDefault, {\n // Hide scrollbars by setting a negative margin\n marginRight: scrollbarWidth ? -scrollbarWidth : 0,\n marginBottom: scrollbarWidth ? -scrollbarWidth : 0\n }, autoHeight && _extends({}, _styles.viewStyleAutoHeight, {\n // Add scrollbarWidth to autoHeight in order to compensate negative margins\n minHeight: (0, _isString2[\"default\"])(autoHeightMin) ? 'calc(' + autoHeightMin + ' + ' + scrollbarWidth + 'px)' : autoHeightMin + scrollbarWidth,\n maxHeight: (0, _isString2[\"default\"])(autoHeightMax) ? 'calc(' + autoHeightMax + ' + ' + scrollbarWidth + 'px)' : autoHeightMax + scrollbarWidth\n }), autoHeight && universal && !didMountUniversal && {\n minHeight: autoHeightMin,\n maxHeight: autoHeightMax\n }, universal && !didMountUniversal && _styles.viewStyleUniversalInitial);\n\n var trackAutoHeightStyle = {\n transition: 'opacity ' + autoHideDuration + 'ms',\n opacity: 0\n };\n\n var trackHorizontalStyle = _extends({}, _styles.trackHorizontalStyleDefault, autoHide && trackAutoHeightStyle, (!scrollbarWidth || universal && !didMountUniversal) && {\n display: 'none'\n });\n\n var trackVerticalStyle = _extends({}, _styles.trackVerticalStyleDefault, autoHide && trackAutoHeightStyle, (!scrollbarWidth || universal && !didMountUniversal) && {\n display: 'none'\n });\n\n return (0, _react.createElement)(tagName, _extends({}, props, { style: containerStyle, ref: function ref(_ref3) {\n _this7.container = _ref3;\n } }), [(0, _react.cloneElement)(renderView({ style: viewStyle }), { key: 'view', ref: function ref(_ref4) {\n _this7.view = _ref4;\n } }, children), (0, _react.cloneElement)(renderTrackHorizontal({ style: trackHorizontalStyle }), { key: 'trackHorizontal', ref: function ref(_ref5) {\n _this7.trackHorizontal = _ref5;\n } }, (0, _react.cloneElement)(renderThumbHorizontal({ style: _styles.thumbHorizontalStyleDefault }), { ref: function ref(_ref6) {\n _this7.thumbHorizontal = _ref6;\n } })), (0, _react.cloneElement)(renderTrackVertical({ style: trackVerticalStyle }), { key: 'trackVertical', ref: function ref(_ref7) {\n _this7.trackVertical = _ref7;\n } }, (0, _react.cloneElement)(renderThumbVertical({ style: _styles.thumbVerticalStyleDefault }), { ref: function ref(_ref8) {\n _this7.thumbVertical = _ref8;\n } }))]);\n }\n }]);\n\n return Scrollbars;\n}(_react.Component);\n\nexports[\"default\"] = Scrollbars;\n\n\nScrollbars.propTypes = {\n onScroll: _propTypes2[\"default\"].func,\n onScrollFrame: _propTypes2[\"default\"].func,\n onScrollStart: _propTypes2[\"default\"].func,\n onScrollStop: _propTypes2[\"default\"].func,\n onUpdate: _propTypes2[\"default\"].func,\n renderView: _propTypes2[\"default\"].func,\n renderTrackHorizontal: _propTypes2[\"default\"].func,\n renderTrackVertical: _propTypes2[\"default\"].func,\n renderThumbHorizontal: _propTypes2[\"default\"].func,\n renderThumbVertical: _propTypes2[\"default\"].func,\n tagName: _propTypes2[\"default\"].string,\n thumbSize: _propTypes2[\"default\"].number,\n thumbMinSize: _propTypes2[\"default\"].number,\n hideTracksWhenNotNeeded: _propTypes2[\"default\"].bool,\n autoHide: _propTypes2[\"default\"].bool,\n autoHideTimeout: _propTypes2[\"default\"].number,\n autoHideDuration: _propTypes2[\"default\"].number,\n autoHeight: _propTypes2[\"default\"].bool,\n autoHeightMin: _propTypes2[\"default\"].oneOfType([_propTypes2[\"default\"].number, _propTypes2[\"default\"].string]),\n autoHeightMax: _propTypes2[\"default\"].oneOfType([_propTypes2[\"default\"].number, _propTypes2[\"default\"].string]),\n universal: _propTypes2[\"default\"].bool,\n style: _propTypes2[\"default\"].object,\n children: _propTypes2[\"default\"].node\n};\n\nScrollbars.defaultProps = {\n renderView: _defaultRenderElements.renderViewDefault,\n renderTrackHorizontal: _defaultRenderElements.renderTrackHorizontalDefault,\n renderTrackVertical: _defaultRenderElements.renderTrackVerticalDefault,\n renderThumbHorizontal: _defaultRenderElements.renderThumbHorizontalDefault,\n renderThumbVertical: _defaultRenderElements.renderThumbVerticalDefault,\n tagName: 'div',\n thumbMinSize: 30,\n hideTracksWhenNotNeeded: false,\n autoHide: false,\n autoHideTimeout: 1000,\n autoHideDuration: 200,\n autoHeight: false,\n autoHeightMin: 0,\n autoHeightMax: 200,\n universal: false\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar containerStyleDefault = exports.containerStyleDefault = {\n position: 'relative',\n overflow: 'hidden',\n width: '100%',\n height: '100%'\n};\n\n// Overrides containerStyleDefault properties\nvar containerStyleAutoHeight = exports.containerStyleAutoHeight = {\n height: 'auto'\n};\n\nvar viewStyleDefault = exports.viewStyleDefault = {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n overflow: 'scroll',\n WebkitOverflowScrolling: 'touch'\n};\n\n// Overrides viewStyleDefault properties\nvar viewStyleAutoHeight = exports.viewStyleAutoHeight = {\n position: 'relative',\n top: undefined,\n left: undefined,\n right: undefined,\n bottom: undefined\n};\n\nvar viewStyleUniversalInitial = exports.viewStyleUniversalInitial = {\n overflow: 'hidden',\n marginRight: 0,\n marginBottom: 0\n};\n\nvar trackHorizontalStyleDefault = exports.trackHorizontalStyleDefault = {\n position: 'absolute',\n height: 6\n};\n\nvar trackVerticalStyleDefault = exports.trackVerticalStyleDefault = {\n position: 'absolute',\n width: 6\n};\n\nvar thumbHorizontalStyleDefault = exports.thumbHorizontalStyleDefault = {\n position: 'relative',\n display: 'block',\n height: '100%'\n};\n\nvar thumbVerticalStyleDefault = exports.thumbVerticalStyleDefault = {\n position: 'relative',\n display: 'block',\n width: '100%'\n};\n\nvar disableSelectStyle = exports.disableSelectStyle = {\n userSelect: 'none'\n};\n\nvar disableSelectStyleReset = exports.disableSelectStyleReset = {\n userSelect: ''\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Scrollbars = undefined;\n\nvar _Scrollbars = require('./Scrollbars');\n\nvar _Scrollbars2 = _interopRequireDefault(_Scrollbars);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nexports[\"default\"] = _Scrollbars2[\"default\"];\nexports.Scrollbars = _Scrollbars2[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = getInnerHeight;\nfunction getInnerHeight(el) {\n var clientHeight = el.clientHeight;\n\n var _getComputedStyle = getComputedStyle(el),\n paddingTop = _getComputedStyle.paddingTop,\n paddingBottom = _getComputedStyle.paddingBottom;\n\n return clientHeight - parseFloat(paddingTop) - parseFloat(paddingBottom);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = getInnerWidth;\nfunction getInnerWidth(el) {\n var clientWidth = el.clientWidth;\n\n var _getComputedStyle = getComputedStyle(el),\n paddingLeft = _getComputedStyle.paddingLeft,\n paddingRight = _getComputedStyle.paddingRight;\n\n return clientWidth - parseFloat(paddingLeft) - parseFloat(paddingRight);\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = getScrollbarWidth;\n\nvar _domCss = require('dom-css');\n\nvar _domCss2 = _interopRequireDefault(_domCss);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar scrollbarWidth = false;\n\nfunction getScrollbarWidth() {\n if (scrollbarWidth !== false) return scrollbarWidth;\n /* istanbul ignore else */\n if (typeof document !== 'undefined') {\n var div = document.createElement('div');\n (0, _domCss2[\"default\"])(div, {\n width: 100,\n height: 100,\n position: 'absolute',\n top: -9999,\n overflow: 'scroll',\n MsOverflowStyle: 'scrollbar'\n });\n document.body.appendChild(div);\n scrollbarWidth = div.offsetWidth - div.clientWidth;\n document.body.removeChild(div);\n } else {\n scrollbarWidth = 0;\n }\n return scrollbarWidth || 0;\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = isString;\nfunction isString(maybe) {\n return typeof maybe === 'string';\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = returnFalse;\nfunction returnFalse() {\n return false;\n}","import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport '@babel/runtime/helpers/esm/toConsumableArray';\nimport '@babel/runtime/helpers/esm/objectSpread';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport React, { Component } from 'react';\nimport 'memoize-one';\nimport '@emotion/core';\nimport 'react-dom';\nimport 'prop-types';\nimport '@babel/runtime/helpers/esm/typeof';\nimport 'raf';\nimport { G as handleInputChange } from '../../dist/chunk-762c4cd6.browser.esm.js';\nimport { a as manageState, b as Select } from '../../dist/chunk-f5c2e42b.browser.esm.js';\nimport '@emotion/css';\nimport '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport 'react-input-autosize';\n\nvar defaultProps = {\n cacheOptions: false,\n defaultOptions: false,\n filterOption: null\n};\nvar makeAsyncSelect = function makeAsyncSelect(SelectComponent) {\n var _class, _temp;\n\n return _temp = _class =\n /*#__PURE__*/\n function (_Component) {\n _inherits(Async, _Component);\n\n function Async(props) {\n var _this;\n\n _classCallCheck(this, Async);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Async).call(this));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"select\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"lastRequest\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"mounted\", false);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"optionsCache\", {});\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleInputChange\", function (newValue, actionMeta) {\n var _this$props = _this.props,\n cacheOptions = _this$props.cacheOptions,\n onInputChange = _this$props.onInputChange; // TODO\n\n var inputValue = handleInputChange(newValue, actionMeta, onInputChange);\n\n if (!inputValue) {\n delete _this.lastRequest;\n\n _this.setState({\n inputValue: '',\n loadedInputValue: '',\n loadedOptions: [],\n isLoading: false,\n passEmptyOptions: false\n });\n\n return;\n }\n\n if (cacheOptions && _this.optionsCache[inputValue]) {\n _this.setState({\n inputValue: inputValue,\n loadedInputValue: inputValue,\n loadedOptions: _this.optionsCache[inputValue],\n isLoading: false,\n passEmptyOptions: false\n });\n } else {\n var request = _this.lastRequest = {};\n\n _this.setState({\n inputValue: inputValue,\n isLoading: true,\n passEmptyOptions: !_this.state.loadedInputValue\n }, function () {\n _this.loadOptions(inputValue, function (options) {\n if (!_this.mounted) return;\n\n if (options) {\n _this.optionsCache[inputValue] = options;\n }\n\n if (request !== _this.lastRequest) return;\n delete _this.lastRequest;\n\n _this.setState({\n isLoading: false,\n loadedInputValue: inputValue,\n loadedOptions: options || [],\n passEmptyOptions: false\n });\n });\n });\n }\n\n return inputValue;\n });\n\n _this.state = {\n defaultOptions: Array.isArray(props.defaultOptions) ? props.defaultOptions : undefined,\n inputValue: typeof props.inputValue !== 'undefined' ? props.inputValue : '',\n isLoading: props.defaultOptions === true ? true : false,\n loadedOptions: [],\n passEmptyOptions: false\n };\n return _this;\n }\n\n _createClass(Async, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n this.mounted = true;\n var defaultOptions = this.props.defaultOptions;\n var inputValue = this.state.inputValue;\n\n if (defaultOptions === true) {\n this.loadOptions(inputValue, function (options) {\n if (!_this2.mounted) return;\n var isLoading = !!_this2.lastRequest;\n\n _this2.setState({\n defaultOptions: options || [],\n isLoading: isLoading\n });\n });\n }\n }\n }, {\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(nextProps) {\n // if the cacheOptions prop changes, clear the cache\n if (nextProps.cacheOptions !== this.props.cacheOptions) {\n this.optionsCache = {};\n }\n\n if (nextProps.defaultOptions !== this.props.defaultOptions) {\n this.setState({\n defaultOptions: Array.isArray(nextProps.defaultOptions) ? nextProps.defaultOptions : undefined\n });\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.mounted = false;\n }\n }, {\n key: \"focus\",\n value: function focus() {\n this.select.focus();\n }\n }, {\n key: \"blur\",\n value: function blur() {\n this.select.blur();\n }\n }, {\n key: \"loadOptions\",\n value: function loadOptions(inputValue, callback) {\n var loadOptions = this.props.loadOptions;\n if (!loadOptions) return callback();\n var loader = loadOptions(inputValue, callback);\n\n if (loader && typeof loader.then === 'function') {\n loader.then(callback, function () {\n return callback();\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var _this$props2 = this.props,\n loadOptions = _this$props2.loadOptions,\n props = _objectWithoutProperties(_this$props2, [\"loadOptions\"]);\n\n var _this$state = this.state,\n defaultOptions = _this$state.defaultOptions,\n inputValue = _this$state.inputValue,\n isLoading = _this$state.isLoading,\n loadedInputValue = _this$state.loadedInputValue,\n loadedOptions = _this$state.loadedOptions,\n passEmptyOptions = _this$state.passEmptyOptions;\n var options = passEmptyOptions ? [] : inputValue && loadedInputValue ? loadedOptions : defaultOptions || [];\n return React.createElement(SelectComponent, _extends({}, props, {\n ref: function ref(_ref) {\n _this3.select = _ref;\n },\n options: options,\n isLoading: isLoading,\n onInputChange: this.handleInputChange\n }));\n }\n }]);\n\n return Async;\n }(Component), _defineProperty(_class, \"defaultProps\", defaultProps), _temp;\n};\nvar SelectState = manageState(Select);\nvar Async = makeAsyncSelect(SelectState);\n\nexport default Async;\nexport { defaultProps, makeAsyncSelect };\n","import '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';\nimport _objectSpread from '@babel/runtime/helpers/esm/objectSpread';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport React, { Component } from 'react';\nimport 'memoize-one';\nimport '@emotion/core';\nimport 'react-dom';\nimport 'prop-types';\nimport '@babel/runtime/helpers/esm/typeof';\nimport 'raf';\nimport { B as cleanValue } from '../../dist/chunk-762c4cd6.browser.esm.js';\nimport { a as manageState, b as Select } from '../../dist/chunk-f5c2e42b.browser.esm.js';\nimport '@emotion/css';\nimport '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport 'react-input-autosize';\n\nvar compareOption = function compareOption() {\n var inputValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var option = arguments.length > 1 ? arguments[1] : undefined;\n var candidate = String(inputValue).toLowerCase();\n var optionValue = String(option.value).toLowerCase();\n var optionLabel = String(option.label).toLowerCase();\n return optionValue === candidate || optionLabel === candidate;\n};\n\nvar builtins = {\n formatCreateLabel: function formatCreateLabel(inputValue) {\n return \"Create \\\"\".concat(inputValue, \"\\\"\");\n },\n isValidNewOption: function isValidNewOption(inputValue, selectValue, selectOptions) {\n return !(!inputValue || selectValue.some(function (option) {\n return compareOption(inputValue, option);\n }) || selectOptions.some(function (option) {\n return compareOption(inputValue, option);\n }));\n },\n getNewOptionData: function getNewOptionData(inputValue, optionLabel) {\n return {\n label: optionLabel,\n value: inputValue,\n __isNew__: true\n };\n }\n};\nvar defaultProps = _objectSpread({\n allowCreateWhileLoading: false,\n createOptionPosition: 'last'\n}, builtins);\nvar makeCreatableSelect = function makeCreatableSelect(SelectComponent) {\n var _class, _temp;\n\n return _temp = _class =\n /*#__PURE__*/\n function (_Component) {\n _inherits(Creatable, _Component);\n\n function Creatable(props) {\n var _this;\n\n _classCallCheck(this, Creatable);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Creatable).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"select\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onChange\", function (newValue, actionMeta) {\n var _this$props = _this.props,\n getNewOptionData = _this$props.getNewOptionData,\n inputValue = _this$props.inputValue,\n isMulti = _this$props.isMulti,\n onChange = _this$props.onChange,\n onCreateOption = _this$props.onCreateOption,\n value = _this$props.value;\n\n if (actionMeta.action !== 'select-option') {\n return onChange(newValue, actionMeta);\n }\n\n var newOption = _this.state.newOption;\n var valueArray = Array.isArray(newValue) ? newValue : [newValue];\n\n if (valueArray[valueArray.length - 1] === newOption) {\n if (onCreateOption) onCreateOption(inputValue);else {\n var newOptionData = getNewOptionData(inputValue, inputValue);\n var newActionMeta = {\n action: 'create-option'\n };\n\n if (isMulti) {\n onChange([].concat(_toConsumableArray(cleanValue(value)), [newOptionData]), newActionMeta);\n } else {\n onChange(newOptionData, newActionMeta);\n }\n }\n return;\n }\n\n onChange(newValue, actionMeta);\n });\n\n var options = props.options || [];\n _this.state = {\n newOption: undefined,\n options: options\n };\n return _this;\n }\n\n _createClass(Creatable, [{\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(nextProps) {\n var allowCreateWhileLoading = nextProps.allowCreateWhileLoading,\n createOptionPosition = nextProps.createOptionPosition,\n formatCreateLabel = nextProps.formatCreateLabel,\n getNewOptionData = nextProps.getNewOptionData,\n inputValue = nextProps.inputValue,\n isLoading = nextProps.isLoading,\n isValidNewOption = nextProps.isValidNewOption,\n value = nextProps.value;\n var options = nextProps.options || [];\n var newOption = this.state.newOption;\n\n if (isValidNewOption(inputValue, cleanValue(value), options)) {\n newOption = getNewOptionData(inputValue, formatCreateLabel(inputValue));\n } else {\n newOption = undefined;\n }\n\n this.setState({\n newOption: newOption,\n options: (allowCreateWhileLoading || !isLoading) && newOption ? createOptionPosition === 'first' ? [newOption].concat(_toConsumableArray(options)) : [].concat(_toConsumableArray(options), [newOption]) : options\n });\n }\n }, {\n key: \"focus\",\n value: function focus() {\n this.select.focus();\n }\n }, {\n key: \"blur\",\n value: function blur() {\n this.select.blur();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var props = _extends({}, this.props);\n\n var options = this.state.options;\n return React.createElement(SelectComponent, _extends({}, props, {\n ref: function ref(_ref) {\n _this2.select = _ref;\n },\n options: options,\n onChange: this.onChange\n }));\n }\n }]);\n\n return Creatable;\n }(Component), _defineProperty(_class, \"defaultProps\", defaultProps), _temp;\n}; // TODO: do this in package entrypoint\n\nvar SelectCreatable = makeCreatableSelect(Select);\nvar Creatable = manageState(SelectCreatable);\n\nexport default Creatable;\nexport { defaultProps, makeCreatableSelect };\n","import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectSpread from '@babel/runtime/helpers/esm/objectSpread';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport { Component } from 'react';\nimport { jsx, keyframes, ClassNames } from '@emotion/core';\nimport { createPortal } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport _typeof from '@babel/runtime/helpers/esm/typeof';\nimport raf from 'raf';\nimport _css from '@emotion/css';\nimport _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport AutosizeInput from 'react-input-autosize';\n\n// ==============================\n// NO OP\n// ==============================\nvar noop = function noop() {};\n// Class Name Prefixer\n// ==============================\n\n/**\n String representation of component state for styling with class names.\n\n Expects an array of strings OR a string/object pair:\n - className(['comp', 'comp-arg', 'comp-arg-2'])\n @returns 'react-select__comp react-select__comp-arg react-select__comp-arg-2'\n - className('comp', { some: true, state: false })\n @returns 'react-select__comp react-select__comp--some'\n*/\n\nfunction applyPrefixToName(prefix, name) {\n if (!name) {\n return prefix;\n } else if (name[0] === '-') {\n return prefix + name;\n } else {\n return prefix + '__' + name;\n }\n}\n\nfunction classNames(prefix, state, className) {\n var arr = [className];\n\n if (state && prefix) {\n for (var key in state) {\n if (state.hasOwnProperty(key) && state[key]) {\n arr.push(\"\".concat(applyPrefixToName(prefix, key)));\n }\n }\n }\n\n return arr.filter(function (i) {\n return i;\n }).map(function (i) {\n return String(i).trim();\n }).join(' ');\n} // ==============================\n// Clean Value\n// ==============================\n\nvar cleanValue = function cleanValue(value) {\n if (Array.isArray(value)) return value.filter(Boolean);\n if (_typeof(value) === 'object' && value !== null) return [value];\n return [];\n}; // ==============================\n// Handle Input Change\n// ==============================\n\nfunction handleInputChange(inputValue, actionMeta, onInputChange) {\n if (onInputChange) {\n var newValue = onInputChange(inputValue, actionMeta);\n if (typeof newValue === 'string') return newValue;\n }\n\n return inputValue;\n} // ==============================\n// Scroll Helpers\n// ==============================\n\nfunction isDocumentElement(el) {\n return [document.documentElement, document.body, window].indexOf(el) > -1;\n} // Normalized Scroll Top\n// ------------------------------\n\nfunction getScrollTop(el) {\n if (isDocumentElement(el)) {\n return window.pageYOffset;\n }\n\n return el.scrollTop;\n}\nfunction scrollTo(el, top) {\n // with a scroll distance, we perform scroll on the element\n if (isDocumentElement(el)) {\n window.scrollTo(0, top);\n return;\n }\n\n el.scrollTop = top;\n} // Get Scroll Parent\n// ------------------------------\n\nfunction getScrollParent(element) {\n var style = getComputedStyle(element);\n var excludeStaticParent = style.position === 'absolute';\n var overflowRx = /(auto|scroll)/;\n var docEl = document.documentElement; // suck it, flow...\n\n if (style.position === 'fixed') return docEl;\n\n for (var parent = element; parent = parent.parentElement;) {\n style = getComputedStyle(parent);\n\n if (excludeStaticParent && style.position === 'static') {\n continue;\n }\n\n if (overflowRx.test(style.overflow + style.overflowY + style.overflowX)) {\n return parent;\n }\n }\n\n return docEl;\n} // Animated Scroll To\n// ------------------------------\n\n/**\n @param t: time (elapsed)\n @param b: initial value\n @param c: amount of change\n @param d: duration\n*/\n\nfunction easeOutCubic(t, b, c, d) {\n return c * ((t = t / d - 1) * t * t + 1) + b;\n}\n\nfunction animatedScrollTo(element, to) {\n var duration = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 200;\n var callback = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : noop;\n var start = getScrollTop(element);\n var change = to - start;\n var increment = 10;\n var currentTime = 0;\n\n function animateScroll() {\n currentTime += increment;\n var val = easeOutCubic(currentTime, start, change, duration);\n scrollTo(element, val);\n\n if (currentTime < duration) {\n raf(animateScroll);\n } else {\n callback(element);\n }\n }\n\n animateScroll();\n} // Scroll Into View\n// ------------------------------\n\nfunction scrollIntoView(menuEl, focusedEl) {\n var menuRect = menuEl.getBoundingClientRect();\n var focusedRect = focusedEl.getBoundingClientRect();\n var overScroll = focusedEl.offsetHeight / 3;\n\n if (focusedRect.bottom + overScroll > menuRect.bottom) {\n scrollTo(menuEl, Math.min(focusedEl.offsetTop + focusedEl.clientHeight - menuEl.offsetHeight + overScroll, menuEl.scrollHeight));\n } else if (focusedRect.top - overScroll < menuRect.top) {\n scrollTo(menuEl, Math.max(focusedEl.offsetTop - overScroll, 0));\n }\n} // ==============================\n// Get bounding client object\n// ==============================\n// cannot get keys using array notation with DOMRect\n\nfunction getBoundingClientObj(element) {\n var rect = element.getBoundingClientRect();\n return {\n bottom: rect.bottom,\n height: rect.height,\n left: rect.left,\n right: rect.right,\n top: rect.top,\n width: rect.width\n };\n}\n// Touch Capability Detector\n// ==============================\n\nfunction isTouchCapable() {\n try {\n document.createEvent('TouchEvent');\n return true;\n } catch (e) {\n return false;\n }\n} // ==============================\n// Mobile Device Detector\n// ==============================\n\nfunction isMobileDevice() {\n try {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n } catch (e) {\n return false;\n }\n}\n\nfunction getMenuPlacement(_ref) {\n var maxHeight = _ref.maxHeight,\n menuEl = _ref.menuEl,\n minHeight = _ref.minHeight,\n placement = _ref.placement,\n shouldScroll = _ref.shouldScroll,\n isFixedPosition = _ref.isFixedPosition,\n theme = _ref.theme;\n var spacing = theme.spacing;\n var scrollParent = getScrollParent(menuEl);\n var defaultState = {\n placement: 'bottom',\n maxHeight: maxHeight\n }; // something went wrong, return default state\n\n if (!menuEl || !menuEl.offsetParent) return defaultState; // we can't trust `scrollParent.scrollHeight` --> it may increase when\n // the menu is rendered\n\n var _scrollParent$getBoun = scrollParent.getBoundingClientRect(),\n scrollHeight = _scrollParent$getBoun.height;\n\n var _menuEl$getBoundingCl = menuEl.getBoundingClientRect(),\n menuBottom = _menuEl$getBoundingCl.bottom,\n menuHeight = _menuEl$getBoundingCl.height,\n menuTop = _menuEl$getBoundingCl.top;\n\n var _menuEl$offsetParent$ = menuEl.offsetParent.getBoundingClientRect(),\n containerTop = _menuEl$offsetParent$.top;\n\n var viewHeight = window.innerHeight;\n var scrollTop = getScrollTop(scrollParent);\n var marginBottom = parseInt(getComputedStyle(menuEl).marginBottom, 10);\n var marginTop = parseInt(getComputedStyle(menuEl).marginTop, 10);\n var viewSpaceAbove = containerTop - marginTop;\n var viewSpaceBelow = viewHeight - menuTop;\n var scrollSpaceAbove = viewSpaceAbove + scrollTop;\n var scrollSpaceBelow = scrollHeight - scrollTop - menuTop;\n var scrollDown = menuBottom - viewHeight + scrollTop + marginBottom;\n var scrollUp = scrollTop + menuTop - marginTop;\n var scrollDuration = 160;\n\n switch (placement) {\n case 'auto':\n case 'bottom':\n // 1: the menu will fit, do nothing\n if (viewSpaceBelow >= menuHeight) {\n return {\n placement: 'bottom',\n maxHeight: maxHeight\n };\n } // 2: the menu will fit, if scrolled\n\n\n if (scrollSpaceBelow >= menuHeight && !isFixedPosition) {\n if (shouldScroll) {\n animatedScrollTo(scrollParent, scrollDown, scrollDuration);\n }\n\n return {\n placement: 'bottom',\n maxHeight: maxHeight\n };\n } // 3: the menu will fit, if constrained\n\n\n if (!isFixedPosition && scrollSpaceBelow >= minHeight || isFixedPosition && viewSpaceBelow >= minHeight) {\n if (shouldScroll) {\n animatedScrollTo(scrollParent, scrollDown, scrollDuration);\n } // we want to provide as much of the menu as possible to the user,\n // so give them whatever is available below rather than the minHeight.\n\n\n var constrainedHeight = isFixedPosition ? viewSpaceBelow - marginBottom : scrollSpaceBelow - marginBottom;\n return {\n placement: 'bottom',\n maxHeight: constrainedHeight\n };\n } // 4. Forked beviour when there isn't enough space below\n // AUTO: flip the menu, render above\n\n\n if (placement === 'auto' || isFixedPosition) {\n // may need to be constrained after flipping\n var _constrainedHeight = maxHeight;\n var spaceAbove = isFixedPosition ? viewSpaceAbove : scrollSpaceAbove;\n\n if (spaceAbove >= minHeight) {\n _constrainedHeight = Math.min(spaceAbove - marginBottom - spacing.controlHeight, maxHeight);\n }\n\n return {\n placement: 'top',\n maxHeight: _constrainedHeight\n };\n } // BOTTOM: allow browser to increase scrollable area and immediately set scroll\n\n\n if (placement === 'bottom') {\n scrollTo(scrollParent, scrollDown);\n return {\n placement: 'bottom',\n maxHeight: maxHeight\n };\n }\n\n break;\n\n case 'top':\n // 1: the menu will fit, do nothing\n if (viewSpaceAbove >= menuHeight) {\n return {\n placement: 'top',\n maxHeight: maxHeight\n };\n } // 2: the menu will fit, if scrolled\n\n\n if (scrollSpaceAbove >= menuHeight && !isFixedPosition) {\n if (shouldScroll) {\n animatedScrollTo(scrollParent, scrollUp, scrollDuration);\n }\n\n return {\n placement: 'top',\n maxHeight: maxHeight\n };\n } // 3: the menu will fit, if constrained\n\n\n if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n var _constrainedHeight2 = maxHeight; // we want to provide as much of the menu as possible to the user,\n // so give them whatever is available below rather than the minHeight.\n\n if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n _constrainedHeight2 = isFixedPosition ? viewSpaceAbove - marginTop : scrollSpaceAbove - marginTop;\n }\n\n if (shouldScroll) {\n animatedScrollTo(scrollParent, scrollUp, scrollDuration);\n }\n\n return {\n placement: 'top',\n maxHeight: _constrainedHeight2\n };\n } // 4. not enough space, the browser WILL NOT increase scrollable area when\n // absolutely positioned element rendered above the viewport (only below).\n // Flip the menu, render below\n\n\n return {\n placement: 'bottom',\n maxHeight: maxHeight\n };\n\n default:\n throw new Error(\"Invalid placement provided \\\"\".concat(placement, \"\\\".\"));\n } // fulfil contract with flow: implicit return value of undefined\n\n\n return defaultState;\n} // Menu Component\n// ------------------------------\n\nfunction alignToControl(placement) {\n var placementToCSSProp = {\n bottom: 'top',\n top: 'bottom'\n };\n return placement ? placementToCSSProp[placement] : 'bottom';\n}\n\nvar coercePlacement = function coercePlacement(p) {\n return p === 'auto' ? 'bottom' : p;\n};\n\nvar menuCSS = function menuCSS(_ref2) {\n var _ref3;\n\n var placement = _ref2.placement,\n _ref2$theme = _ref2.theme,\n borderRadius = _ref2$theme.borderRadius,\n spacing = _ref2$theme.spacing,\n colors = _ref2$theme.colors;\n return _ref3 = {\n label: 'menu'\n }, _defineProperty(_ref3, alignToControl(placement), '100%'), _defineProperty(_ref3, \"backgroundColor\", colors.neutral0), _defineProperty(_ref3, \"borderRadius\", borderRadius), _defineProperty(_ref3, \"boxShadow\", '0 0 0 1px hsla(0, 0%, 0%, 0.1), 0 4px 11px hsla(0, 0%, 0%, 0.1)'), _defineProperty(_ref3, \"marginBottom\", spacing.menuGutter), _defineProperty(_ref3, \"marginTop\", spacing.menuGutter), _defineProperty(_ref3, \"position\", 'absolute'), _defineProperty(_ref3, \"width\", '100%'), _defineProperty(_ref3, \"zIndex\", 1), _ref3;\n}; // NOTE: internal only\n\nvar MenuPlacer =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(MenuPlacer, _Component);\n\n function MenuPlacer() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, MenuPlacer);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(MenuPlacer)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n maxHeight: _this.props.maxMenuHeight,\n placement: null\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getPlacement\", function (ref) {\n var _this$props = _this.props,\n minMenuHeight = _this$props.minMenuHeight,\n maxMenuHeight = _this$props.maxMenuHeight,\n menuPlacement = _this$props.menuPlacement,\n menuPosition = _this$props.menuPosition,\n menuShouldScrollIntoView = _this$props.menuShouldScrollIntoView,\n theme = _this$props.theme;\n var getPortalPlacement = _this.context.getPortalPlacement;\n if (!ref) return; // DO NOT scroll if position is fixed\n\n var isFixedPosition = menuPosition === 'fixed';\n var shouldScroll = menuShouldScrollIntoView && !isFixedPosition;\n var state = getMenuPlacement({\n maxHeight: maxMenuHeight,\n menuEl: ref,\n minHeight: minMenuHeight,\n placement: menuPlacement,\n shouldScroll: shouldScroll,\n isFixedPosition: isFixedPosition,\n theme: theme\n });\n if (getPortalPlacement) getPortalPlacement(state);\n\n _this.setState(state);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getUpdatedProps\", function () {\n var menuPlacement = _this.props.menuPlacement;\n var placement = _this.state.placement || coercePlacement(menuPlacement);\n return _objectSpread({}, _this.props, {\n placement: placement,\n maxHeight: _this.state.maxHeight\n });\n });\n\n return _this;\n }\n\n _createClass(MenuPlacer, [{\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n return children({\n ref: this.getPlacement,\n placerProps: this.getUpdatedProps()\n });\n }\n }]);\n\n return MenuPlacer;\n}(Component);\n\n_defineProperty(MenuPlacer, \"contextTypes\", {\n getPortalPlacement: PropTypes.func\n});\n\nvar Menu = function Menu(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerRef = props.innerRef,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('menu', props),\n className: cx({\n menu: true\n }, className)\n }, innerProps, {\n ref: innerRef\n }), children);\n};\n// Menu List\n// ==============================\n\nvar menuListCSS = function menuListCSS(_ref4) {\n var maxHeight = _ref4.maxHeight,\n baseUnit = _ref4.theme.spacing.baseUnit;\n return {\n maxHeight: maxHeight,\n overflowY: 'auto',\n paddingBottom: baseUnit,\n paddingTop: baseUnit,\n position: 'relative',\n // required for offset[Height, Top] > keyboard scroll\n WebkitOverflowScrolling: 'touch'\n };\n};\nvar MenuList = function MenuList(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n isMulti = props.isMulti,\n innerRef = props.innerRef;\n return jsx(\"div\", {\n css: getStyles('menuList', props),\n className: cx({\n 'menu-list': true,\n 'menu-list--is-multi': isMulti\n }, className),\n ref: innerRef\n }, children);\n}; // ==============================\n// Menu Notices\n// ==============================\n\nvar noticeCSS = function noticeCSS(_ref5) {\n var _ref5$theme = _ref5.theme,\n baseUnit = _ref5$theme.spacing.baseUnit,\n colors = _ref5$theme.colors;\n return {\n color: colors.neutral40,\n padding: \"\".concat(baseUnit * 2, \"px \").concat(baseUnit * 3, \"px\"),\n textAlign: 'center'\n };\n};\n\nvar noOptionsMessageCSS = noticeCSS;\nvar loadingMessageCSS = noticeCSS;\nvar NoOptionsMessage = function NoOptionsMessage(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('noOptionsMessage', props),\n className: cx({\n 'menu-notice': true,\n 'menu-notice--no-options': true\n }, className)\n }, innerProps), children);\n};\nNoOptionsMessage.defaultProps = {\n children: 'No options'\n};\nvar LoadingMessage = function LoadingMessage(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('loadingMessage', props),\n className: cx({\n 'menu-notice': true,\n 'menu-notice--loading': true\n }, className)\n }, innerProps), children);\n};\nLoadingMessage.defaultProps = {\n children: 'Loading...'\n}; // ==============================\n// Menu Portal\n// ==============================\n\nvar menuPortalCSS = function menuPortalCSS(_ref6) {\n var rect = _ref6.rect,\n offset = _ref6.offset,\n position = _ref6.position;\n return {\n left: rect.left,\n position: position,\n top: offset,\n width: rect.width,\n zIndex: 1\n };\n};\nvar MenuPortal =\n/*#__PURE__*/\nfunction (_Component2) {\n _inherits(MenuPortal, _Component2);\n\n function MenuPortal() {\n var _getPrototypeOf3;\n\n var _this2;\n\n _classCallCheck(this, MenuPortal);\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n _this2 = _possibleConstructorReturn(this, (_getPrototypeOf3 = _getPrototypeOf(MenuPortal)).call.apply(_getPrototypeOf3, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this2)), \"state\", {\n placement: null\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this2)), \"getPortalPlacement\", function (_ref7) {\n var placement = _ref7.placement;\n var initialPlacement = coercePlacement(_this2.props.menuPlacement); // avoid re-renders if the placement has not changed\n\n if (placement !== initialPlacement) {\n _this2.setState({\n placement: placement\n });\n }\n });\n\n return _this2;\n }\n\n _createClass(MenuPortal, [{\n key: \"getChildContext\",\n value: function getChildContext() {\n return {\n getPortalPlacement: this.getPortalPlacement\n };\n } // callback for occassions where the menu must \"flip\"\n\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n appendTo = _this$props2.appendTo,\n children = _this$props2.children,\n controlElement = _this$props2.controlElement,\n menuPlacement = _this$props2.menuPlacement,\n position = _this$props2.menuPosition,\n getStyles = _this$props2.getStyles;\n var isFixed = position === 'fixed'; // bail early if required elements aren't present\n\n if (!appendTo && !isFixed || !controlElement) {\n return null;\n }\n\n var placement = this.state.placement || coercePlacement(menuPlacement);\n var rect = getBoundingClientObj(controlElement);\n var scrollDistance = isFixed ? 0 : window.pageYOffset;\n var offset = rect[placement] + scrollDistance;\n var state = {\n offset: offset,\n position: position,\n rect: rect\n }; // same wrapper element whether fixed or portalled\n\n var menuWrapper = jsx(\"div\", {\n css: getStyles('menuPortal', state)\n }, children);\n return appendTo ? createPortal(menuWrapper, appendTo) : menuWrapper;\n }\n }]);\n\n return MenuPortal;\n}(Component);\n\n_defineProperty(MenuPortal, \"childContextTypes\", {\n getPortalPlacement: PropTypes.func\n});\n\nvar isArray = Array.isArray;\nvar keyList = Object.keys;\nvar hasProp = Object.prototype.hasOwnProperty;\n\nfunction equal(a, b) {\n // fast-deep-equal index.js 2.0.1\n if (a === b) return true;\n\n if (a && b && _typeof(a) == 'object' && _typeof(b) == 'object') {\n var arrA = isArray(a),\n arrB = isArray(b),\n i,\n length,\n key;\n\n if (arrA && arrB) {\n length = a.length;\n if (length != b.length) return false;\n\n for (i = length; i-- !== 0;) {\n if (!equal(a[i], b[i])) return false;\n }\n\n return true;\n }\n\n if (arrA != arrB) return false;\n var dateA = a instanceof Date,\n dateB = b instanceof Date;\n if (dateA != dateB) return false;\n if (dateA && dateB) return a.getTime() == b.getTime();\n var regexpA = a instanceof RegExp,\n regexpB = b instanceof RegExp;\n if (regexpA != regexpB) return false;\n if (regexpA && regexpB) return a.toString() == b.toString();\n var keys = keyList(a);\n length = keys.length;\n\n if (length !== keyList(b).length) {\n return false;\n }\n\n for (i = length; i-- !== 0;) {\n if (!hasProp.call(b, keys[i])) return false;\n } // end fast-deep-equal\n // Custom handling for React\n\n\n for (i = length; i-- !== 0;) {\n key = keys[i];\n\n if (key === '_owner' && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner.\n // _owner contains circular references\n // and is not needed when comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of a react element\n continue;\n } else {\n // all other properties should be traversed as usual\n if (!equal(a[key], b[key])) return false;\n }\n } // fast-deep-equal index.js 2.0.1\n\n\n return true;\n }\n\n return a !== a && b !== b;\n} // end fast-deep-equal\n\n\nfunction exportedEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (error.message && error.message.match(/stack|recursion/i)) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('Warning: react-fast-compare does not handle circular references.', error.name, error.message);\n return false;\n } // some other error. we should definitely know about these\n\n\n throw error;\n }\n}\n\nvar containerCSS = function containerCSS(_ref) {\n var isDisabled = _ref.isDisabled,\n isRtl = _ref.isRtl;\n return {\n label: 'container',\n direction: isRtl ? 'rtl' : null,\n pointerEvents: isDisabled ? 'none' : null,\n // cancel mouse events when disabled\n position: 'relative'\n };\n};\nvar SelectContainer = function SelectContainer(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps,\n isDisabled = props.isDisabled,\n isRtl = props.isRtl;\n return jsx(\"div\", _extends({\n css: getStyles('container', props),\n className: cx({\n '--is-disabled': isDisabled,\n '--is-rtl': isRtl\n }, className)\n }, innerProps), children);\n}; // ==============================\n// Value Container\n// ==============================\n\nvar valueContainerCSS = function valueContainerCSS(_ref2) {\n var spacing = _ref2.theme.spacing;\n return {\n alignItems: 'center',\n display: 'flex',\n flex: 1,\n flexWrap: 'wrap',\n padding: \"\".concat(spacing.baseUnit / 2, \"px \").concat(spacing.baseUnit * 2, \"px\"),\n WebkitOverflowScrolling: 'touch',\n position: 'relative',\n overflow: 'hidden'\n };\n};\nvar ValueContainer =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ValueContainer, _Component);\n\n function ValueContainer() {\n _classCallCheck(this, ValueContainer);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ValueContainer).apply(this, arguments));\n }\n\n _createClass(ValueContainer, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n children = _this$props.children,\n className = _this$props.className,\n cx = _this$props.cx,\n isMulti = _this$props.isMulti,\n getStyles = _this$props.getStyles,\n hasValue = _this$props.hasValue;\n return jsx(\"div\", {\n css: getStyles('valueContainer', this.props),\n className: cx({\n 'value-container': true,\n 'value-container--is-multi': isMulti,\n 'value-container--has-value': hasValue\n }, className)\n }, children);\n }\n }]);\n\n return ValueContainer;\n}(Component); // ==============================\n// Indicator Container\n// ==============================\n\nvar indicatorsContainerCSS = function indicatorsContainerCSS() {\n return {\n alignItems: 'center',\n alignSelf: 'stretch',\n display: 'flex',\n flexShrink: 0\n };\n};\nvar IndicatorsContainer = function IndicatorsContainer(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles;\n return jsx(\"div\", {\n css: getStyles('indicatorsContainer', props),\n className: cx({\n indicators: true\n }, className)\n }, children);\n};\n\nfunction _templateObject() {\n var data = _taggedTemplateLiteral([\"\\n 0%, 80%, 100% { opacity: 0; }\\n 40% { opacity: 1; }\\n\"]);\n\n _templateObject = function _templateObject() {\n return data;\n };\n\n return data;\n}\n\nvar _ref2 = process.env.NODE_ENV === \"production\" ? {\n name: \"19bqh2r\",\n styles: \"display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0;\"\n} : {\n name: \"19bqh2r\",\n styles: \"display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0;\",\n map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGljYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0JJIiwiZmlsZSI6ImluZGljYXRvcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyB0eXBlIE5vZGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3gsIGtleWZyYW1lcyB9IGZyb20gJ0BlbW90aW9uL2NvcmUnO1xuXG5pbXBvcnQgdHlwZSB7IENvbW1vblByb3BzLCBUaGVtZSB9IGZyb20gJy4uL3R5cGVzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEcm9wZG93biAmIENsZWFyIEljb25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgU3ZnID0gKHsgc2l6ZSwgLi4ucHJvcHMgfTogeyBzaXplOiBudW1iZXIgfSkgPT4gKFxuICA8c3ZnXG4gICAgaGVpZ2h0PXtzaXplfVxuICAgIHdpZHRoPXtzaXplfVxuICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxuICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxuICAgIGNzcz17e1xuICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICBmaWxsOiAnY3VycmVudENvbG9yJyxcbiAgICAgIGxpbmVIZWlnaHQ6IDEsXG4gICAgICBzdHJva2U6ICdjdXJyZW50Q29sb3InLFxuICAgICAgc3Ryb2tlV2lkdGg6IDAsXG4gICAgfX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuXG5leHBvcnQgY29uc3QgQ3Jvc3NJY29uID0gKHByb3BzOiBhbnkpID0+IChcbiAgPFN2ZyBzaXplPXsyMH0gey4uLnByb3BzfT5cbiAgICA8cGF0aCBkPVwiTTE0LjM0OCAxNC44NDljLTAuNDY5IDAuNDY5LTEuMjI5IDAuNDY5LTEuNjk3IDBsLTIuNjUxLTMuMDMwLTIuNjUxIDMuMDI5Yy0wLjQ2OSAwLjQ2OS0xLjIyOSAwLjQ2OS0xLjY5NyAwLTAuNDY5LTAuNDY5LTAuNDY5LTEuMjI5IDAtMS42OTdsMi43NTgtMy4xNS0yLjc1OS0zLjE1MmMtMC40NjktMC40NjktMC40NjktMS4yMjggMC0xLjY5N3MxLjIyOC0wLjQ2OSAxLjY5NyAwbDIuNjUyIDMuMDMxIDIuNjUxLTMuMDMxYzAuNDY5LTAuNDY5IDEuMjI4LTAuNDY5IDEuNjk3IDBzMC40NjkgMS4yMjkgMCAxLjY5N2wtMi43NTggMy4xNTIgMi43NTggMy4xNWMwLjQ2OSAwLjQ2OSAwLjQ2OSAxLjIyOSAwIDEuNjk4elwiIC8+XG4gIDwvU3ZnPlxuKTtcbmV4cG9ydCBjb25zdCBEb3duQ2hldnJvbiA9IChwcm9wczogYW55KSA9PiAoXG4gIDxTdmcgc2l6ZT17MjB9IHsuLi5wcm9wc30+XG4gICAgPHBhdGggZD1cIk00LjUxNiA3LjU0OGMwLjQzNi0wLjQ0NiAxLjA0My0wLjQ4MSAxLjU3NiAwbDMuOTA4IDMuNzQ3IDMuOTA4LTMuNzQ3YzAuNTMzLTAuNDgxIDEuMTQxLTAuNDQ2IDEuNTc0IDAgMC40MzYgMC40NDUgMC40MDggMS4xOTcgMCAxLjYxNS0wLjQwNiAwLjQxOC00LjY5NSA0LjUwMi00LjY5NSA0LjUwMi0wLjIxNyAwLjIyMy0wLjUwMiAwLjMzNS0wLjc4NyAwLjMzNXMtMC41Ny0wLjExMi0wLjc4OS0wLjMzNWMwIDAtNC4yODctNC4wODQtNC42OTUtNC41MDJzLTAuNDM2LTEuMTcgMC0xLjYxNXpcIiAvPlxuICA8L1N2Zz5cbik7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRHJvcGRvd24gJiBDbGVhciBCdXR0b25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgSW5kaWNhdG9yUHJvcHMgPSBDb21tb25Qcm9wcyAmIHtcbiAgLyoqIFRoZSBjaGlsZHJlbiB0byBiZSByZW5kZXJlZCBpbnNpZGUgdGhlIGluZGljYXRvci4gKi9cbiAgY2hpbGRyZW46IE5vZGUsXG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogYW55LFxuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuLFxuICAvKiogV2hldGhlciB0aGUgdGV4dCBpcyByaWdodCB0byBsZWZ0ICovXG4gIGlzUnRsOiBib29sZWFuLFxufTtcblxuY29uc3QgYmFzZUNTUyA9ICh7XG4gIGlzRm9jdXNlZCxcbiAgdGhlbWU6IHtcbiAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gICAgY29sb3JzLFxuICB9LFxufTogSW5kaWNhdG9yUHJvcHMpID0+ICh7XG4gIGxhYmVsOiAnaW5kaWNhdG9yQ29udGFpbmVyJyxcbiAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIHBhZGRpbmc6IGJhc2VVbml0ICogMixcbiAgdHJhbnNpdGlvbjogJ2NvbG9yIDE1MG1zJyxcblxuICAnOmhvdmVyJzoge1xuICAgIGNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMubmV1dHJhbDgwIDogY29sb3JzLm5ldXRyYWw0MCxcbiAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgZHJvcGRvd25JbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IERyb3Bkb3duSW5kaWNhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGN4LCBnZXRTdHlsZXMsIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2Ryb3Bkb3duSW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnZHJvcGRvd24taW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8RG93bkNoZXZyb24gLz59XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgY2xlYXJJbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IENsZWFySW5kaWNhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGN4LCBnZXRTdHlsZXMsIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2NsZWFySW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnY2xlYXItaW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8Q3Jvc3NJY29uIC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTZXBhcmF0b3Jcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG50eXBlIFNlcGFyYXRvclN0YXRlID0geyBpc0Rpc2FibGVkOiBib29sZWFuIH07XG5cbmV4cG9ydCBjb25zdCBpbmRpY2F0b3JTZXBhcmF0b3JDU1MgPSAoe1xuICBpc0Rpc2FibGVkLFxuICB0aGVtZToge1xuICAgIHNwYWNpbmc6IHsgYmFzZVVuaXQgfSxcbiAgICBjb2xvcnMsXG4gIH0sXG59OiBDb21tb25Qcm9wcyAmIFNlcGFyYXRvclN0YXRlKSA9PiAoe1xuICBsYWJlbDogJ2luZGljYXRvclNlcGFyYXRvcicsXG4gIGFsaWduU2VsZjogJ3N0cmV0Y2gnLFxuICBiYWNrZ3JvdW5kQ29sb3I6IGlzRGlzYWJsZWQgPyBjb2xvcnMubmV1dHJhbDEwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgbWFyZ2luQm90dG9tOiBiYXNlVW5pdCAqIDIsXG4gIG1hcmdpblRvcDogYmFzZVVuaXQgKiAyLFxuICB3aWR0aDogMSxcbn0pO1xuXG5leHBvcnQgY29uc3QgSW5kaWNhdG9yU2VwYXJhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNsYXNzTmFtZSwgY3gsIGdldFN0eWxlcywgaW5uZXJQcm9wcyB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPHNwYW5cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2luZGljYXRvclNlcGFyYXRvcicsIHByb3BzKX1cbiAgICAgIGNsYXNzTmFtZT17Y3goeyAnaW5kaWNhdG9yLXNlcGFyYXRvcic6IHRydWUgfSwgY2xhc3NOYW1lKX1cbiAgICAvPlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMb2FkaW5nXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgbG9hZGluZ0RvdEFuaW1hdGlvbnMgPSBrZXlmcmFtZXNgXG4gIDAlLCA4MCUsIDEwMCUgeyBvcGFjaXR5OiAwOyB9XG4gIDQwJSB7IG9wYWNpdHk6IDE7IH1cbmA7XG5cbmV4cG9ydCBjb25zdCBsb2FkaW5nSW5kaWNhdG9yQ1NTID0gKHtcbiAgaXNGb2N1c2VkLFxuICBzaXplLFxuICB0aGVtZToge1xuICAgIGNvbG9ycyxcbiAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gIH0sXG59OiB7XG4gIGlzRm9jdXNlZDogYm9vbGVhbixcbiAgc2l6ZTogbnVtYmVyLFxuICB0aGVtZTogVGhlbWUsXG59KSA9PiAoe1xuICBsYWJlbDogJ2xvYWRpbmdJbmRpY2F0b3InLFxuICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw2MCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgcGFkZGluZzogYmFzZVVuaXQgKiAyLFxuICB0cmFuc2l0aW9uOiAnY29sb3IgMTUwbXMnLFxuICBhbGlnblNlbGY6ICdjZW50ZXInLFxuICBmb250U2l6ZTogc2l6ZSxcbiAgbGluZUhlaWdodDogMSxcbiAgbWFyZ2luUmlnaHQ6IHNpemUsXG4gIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnLFxufSk7XG5cbnR5cGUgRG90UHJvcHMgPSB7IGNvbG9yOiBzdHJpbmcsIGRlbGF5OiBudW1iZXIsIG9mZnNldDogYm9vbGVhbiB9O1xuY29uc3QgTG9hZGluZ0RvdCA9ICh7IGNvbG9yLCBkZWxheSwgb2Zmc2V0IH06IERvdFByb3BzKSA9PiAoXG4gIDxzcGFuXG4gICAgY3NzPXt7XG4gICAgICBhbmltYXRpb246IGAke2xvYWRpbmdEb3RBbmltYXRpb25zfSAxcyBlYXNlLWluLW91dCAke2RlbGF5fW1zIGluZmluaXRlO2AsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnMWVtOycsXG4gICAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrOycsXG4gICAgICBtYXJnaW5MZWZ0OiBvZmZzZXQgPyAnMWVtOycgOiBudWxsLFxuICAgICAgaGVpZ2h0OiAnMWVtOycsXG4gICAgICB2ZXJ0aWNhbEFsaWduOiAndG9wOycsXG4gICAgICB3aWR0aDogJzFlbTsnLFxuICAgIH19XG4gIC8+XG4pO1xuXG5leHBvcnQgdHlwZSBMb2FkaW5nSWNvblByb3BzID0ge1xuICAvKiogUHJvcHMgdGhhdCB3aWxsIGJlIHBhc3NlZCBvbiB0byB0aGUgY2hpbGRyZW4uICovXG4gIGlubmVyUHJvcHM6IGFueSxcbiAgLyoqIFRoZSBmb2N1c2VkIHN0YXRlIG9mIHRoZSBzZWxlY3QuICovXG4gIGlzRm9jdXNlZDogYm9vbGVhbixcbiAgLyoqIFdoZXRoZXIgdGhlIHRleHQgaXMgcmlnaHQgdG8gbGVmdCAqL1xuICBpc1J0bDogYm9vbGVhbixcbn0gJiBDb21tb25Qcm9wcyAmIHtcbiAgICAvKiogU2V0IHNpemUgb2YgdGhlIGNvbnRhaW5lci4gKi9cbiAgICBzaXplOiBudW1iZXIsXG4gIH07XG5leHBvcnQgY29uc3QgTG9hZGluZ0luZGljYXRvciA9IChwcm9wczogTG9hZGluZ0ljb25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgY2xhc3NOYW1lLFxuICAgIGN4LFxuICAgIGdldFN0eWxlcyxcbiAgICBpbm5lclByb3BzLFxuICAgIGlzRm9jdXNlZCxcbiAgICBpc1J0bCxcbiAgICB0aGVtZTogeyBjb2xvcnMgfSxcbiAgfSA9IHByb3BzO1xuICBjb25zdCBjb2xvciA9IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsODAgOiBjb2xvcnMubmV1dHJhbDIwO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgey4uLmlubmVyUHJvcHN9XG4gICAgICBjc3M9e2dldFN0eWxlcygnbG9hZGluZ0luZGljYXRvcicsIHByb3BzKX1cbiAgICAgIGNsYXNzTmFtZT17Y3goXG4gICAgICAgIHtcbiAgICAgICAgICBpbmRpY2F0b3I6IHRydWUsXG4gICAgICAgICAgJ2xvYWRpbmctaW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApfVxuICAgID5cbiAgICAgIDxMb2FkaW5nRG90IGNvbG9yPXtjb2xvcn0gZGVsYXk9ezB9IG9mZnNldD17aXNSdGx9IC8+XG4gICAgICA8TG9hZGluZ0RvdCBjb2xvcj17Y29sb3J9IGRlbGF5PXsxNjB9IG9mZnNldCAvPlxuICAgICAgPExvYWRpbmdEb3QgY29sb3I9e2NvbG9yfSBkZWxheT17MzIwfSBvZmZzZXQ9eyFpc1J0bH0gLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5Mb2FkaW5nSW5kaWNhdG9yLmRlZmF1bHRQcm9wcyA9IHsgc2l6ZTogNCB9O1xuIl19 */\"\n};\n\n// ==============================\n// Dropdown & Clear Icons\n// ==============================\nvar Svg = function Svg(_ref) {\n var size = _ref.size,\n props = _objectWithoutProperties(_ref, [\"size\"]);\n\n return jsx(\"svg\", _extends({\n height: size,\n width: size,\n viewBox: \"0 0 20 20\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n css: _ref2\n }, props));\n};\n\nvar CrossIcon = function CrossIcon(props) {\n return jsx(Svg, _extends({\n size: 20\n }, props), jsx(\"path\", {\n d: \"M14.348 14.849c-0.469 0.469-1.229 0.469-1.697 0l-2.651-3.030-2.651 3.029c-0.469 0.469-1.229 0.469-1.697 0-0.469-0.469-0.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-0.469-0.469-0.469-1.228 0-1.697s1.228-0.469 1.697 0l2.652 3.031 2.651-3.031c0.469-0.469 1.228-0.469 1.697 0s0.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c0.469 0.469 0.469 1.229 0 1.698z\"\n }));\n};\nvar DownChevron = function DownChevron(props) {\n return jsx(Svg, _extends({\n size: 20\n }, props), jsx(\"path\", {\n d: \"M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z\"\n }));\n}; // ==============================\n// Dropdown & Clear Buttons\n// ==============================\n\nvar baseCSS = function baseCSS(_ref3) {\n var isFocused = _ref3.isFocused,\n _ref3$theme = _ref3.theme,\n baseUnit = _ref3$theme.spacing.baseUnit,\n colors = _ref3$theme.colors;\n return {\n label: 'indicatorContainer',\n color: isFocused ? colors.neutral60 : colors.neutral20,\n display: 'flex',\n padding: baseUnit * 2,\n transition: 'color 150ms',\n ':hover': {\n color: isFocused ? colors.neutral80 : colors.neutral40\n }\n };\n};\n\nvar dropdownIndicatorCSS = baseCSS;\nvar DropdownIndicator = function DropdownIndicator(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({}, innerProps, {\n css: getStyles('dropdownIndicator', props),\n className: cx({\n indicator: true,\n 'dropdown-indicator': true\n }, className)\n }), children || jsx(DownChevron, null));\n};\nvar clearIndicatorCSS = baseCSS;\nvar ClearIndicator = function ClearIndicator(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({}, innerProps, {\n css: getStyles('clearIndicator', props),\n className: cx({\n indicator: true,\n 'clear-indicator': true\n }, className)\n }), children || jsx(CrossIcon, null));\n}; // ==============================\n// Separator\n// ==============================\n\nvar indicatorSeparatorCSS = function indicatorSeparatorCSS(_ref4) {\n var isDisabled = _ref4.isDisabled,\n _ref4$theme = _ref4.theme,\n baseUnit = _ref4$theme.spacing.baseUnit,\n colors = _ref4$theme.colors;\n return {\n label: 'indicatorSeparator',\n alignSelf: 'stretch',\n backgroundColor: isDisabled ? colors.neutral10 : colors.neutral20,\n marginBottom: baseUnit * 2,\n marginTop: baseUnit * 2,\n width: 1\n };\n};\nvar IndicatorSeparator = function IndicatorSeparator(props) {\n var className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return jsx(\"span\", _extends({}, innerProps, {\n css: getStyles('indicatorSeparator', props),\n className: cx({\n 'indicator-separator': true\n }, className)\n }));\n}; // ==============================\n// Loading\n// ==============================\n\nvar loadingDotAnimations = keyframes(_templateObject());\nvar loadingIndicatorCSS = function loadingIndicatorCSS(_ref5) {\n var isFocused = _ref5.isFocused,\n size = _ref5.size,\n _ref5$theme = _ref5.theme,\n colors = _ref5$theme.colors,\n baseUnit = _ref5$theme.spacing.baseUnit;\n return {\n label: 'loadingIndicator',\n color: isFocused ? colors.neutral60 : colors.neutral20,\n display: 'flex',\n padding: baseUnit * 2,\n transition: 'color 150ms',\n alignSelf: 'center',\n fontSize: size,\n lineHeight: 1,\n marginRight: size,\n textAlign: 'center',\n verticalAlign: 'middle'\n };\n};\n\nvar LoadingDot = function LoadingDot(_ref6) {\n var color = _ref6.color,\n delay = _ref6.delay,\n offset = _ref6.offset;\n return jsx(\"span\", {\n css:\n /*#__PURE__*/\n _css({\n animation: \"\".concat(loadingDotAnimations, \" 1s ease-in-out \").concat(delay, \"ms infinite;\"),\n backgroundColor: color,\n borderRadius: '1em;',\n display: 'inline-block;',\n marginLeft: offset ? '1em;' : null,\n height: '1em;',\n verticalAlign: 'top;',\n width: '1em;'\n }, process.env.NODE_ENV === \"production\" ? \"\" : \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGljYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0xJIiwiZmlsZSI6ImluZGljYXRvcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyB0eXBlIE5vZGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3gsIGtleWZyYW1lcyB9IGZyb20gJ0BlbW90aW9uL2NvcmUnO1xuXG5pbXBvcnQgdHlwZSB7IENvbW1vblByb3BzLCBUaGVtZSB9IGZyb20gJy4uL3R5cGVzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEcm9wZG93biAmIENsZWFyIEljb25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgU3ZnID0gKHsgc2l6ZSwgLi4ucHJvcHMgfTogeyBzaXplOiBudW1iZXIgfSkgPT4gKFxuICA8c3ZnXG4gICAgaGVpZ2h0PXtzaXplfVxuICAgIHdpZHRoPXtzaXplfVxuICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxuICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxuICAgIGNzcz17e1xuICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICBmaWxsOiAnY3VycmVudENvbG9yJyxcbiAgICAgIGxpbmVIZWlnaHQ6IDEsXG4gICAgICBzdHJva2U6ICdjdXJyZW50Q29sb3InLFxuICAgICAgc3Ryb2tlV2lkdGg6IDAsXG4gICAgfX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuXG5leHBvcnQgY29uc3QgQ3Jvc3NJY29uID0gKHByb3BzOiBhbnkpID0+IChcbiAgPFN2ZyBzaXplPXsyMH0gey4uLnByb3BzfT5cbiAgICA8cGF0aCBkPVwiTTE0LjM0OCAxNC44NDljLTAuNDY5IDAuNDY5LTEuMjI5IDAuNDY5LTEuNjk3IDBsLTIuNjUxLTMuMDMwLTIuNjUxIDMuMDI5Yy0wLjQ2OSAwLjQ2OS0xLjIyOSAwLjQ2OS0xLjY5NyAwLTAuNDY5LTAuNDY5LTAuNDY5LTEuMjI5IDAtMS42OTdsMi43NTgtMy4xNS0yLjc1OS0zLjE1MmMtMC40NjktMC40NjktMC40NjktMS4yMjggMC0xLjY5N3MxLjIyOC0wLjQ2OSAxLjY5NyAwbDIuNjUyIDMuMDMxIDIuNjUxLTMuMDMxYzAuNDY5LTAuNDY5IDEuMjI4LTAuNDY5IDEuNjk3IDBzMC40NjkgMS4yMjkgMCAxLjY5N2wtMi43NTggMy4xNTIgMi43NTggMy4xNWMwLjQ2OSAwLjQ2OSAwLjQ2OSAxLjIyOSAwIDEuNjk4elwiIC8+XG4gIDwvU3ZnPlxuKTtcbmV4cG9ydCBjb25zdCBEb3duQ2hldnJvbiA9IChwcm9wczogYW55KSA9PiAoXG4gIDxTdmcgc2l6ZT17MjB9IHsuLi5wcm9wc30+XG4gICAgPHBhdGggZD1cIk00LjUxNiA3LjU0OGMwLjQzNi0wLjQ0NiAxLjA0My0wLjQ4MSAxLjU3NiAwbDMuOTA4IDMuNzQ3IDMuOTA4LTMuNzQ3YzAuNTMzLTAuNDgxIDEuMTQxLTAuNDQ2IDEuNTc0IDAgMC40MzYgMC40NDUgMC40MDggMS4xOTcgMCAxLjYxNS0wLjQwNiAwLjQxOC00LjY5NSA0LjUwMi00LjY5NSA0LjUwMi0wLjIxNyAwLjIyMy0wLjUwMiAwLjMzNS0wLjc4NyAwLjMzNXMtMC41Ny0wLjExMi0wLjc4OS0wLjMzNWMwIDAtNC4yODctNC4wODQtNC42OTUtNC41MDJzLTAuNDM2LTEuMTcgMC0xLjYxNXpcIiAvPlxuICA8L1N2Zz5cbik7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRHJvcGRvd24gJiBDbGVhciBCdXR0b25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgSW5kaWNhdG9yUHJvcHMgPSBDb21tb25Qcm9wcyAmIHtcbiAgLyoqIFRoZSBjaGlsZHJlbiB0byBiZSByZW5kZXJlZCBpbnNpZGUgdGhlIGluZGljYXRvci4gKi9cbiAgY2hpbGRyZW46IE5vZGUsXG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogYW55LFxuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuLFxuICAvKiogV2hldGhlciB0aGUgdGV4dCBpcyByaWdodCB0byBsZWZ0ICovXG4gIGlzUnRsOiBib29sZWFuLFxufTtcblxuY29uc3QgYmFzZUNTUyA9ICh7XG4gIGlzRm9jdXNlZCxcbiAgdGhlbWU6IHtcbiAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gICAgY29sb3JzLFxuICB9LFxufTogSW5kaWNhdG9yUHJvcHMpID0+ICh7XG4gIGxhYmVsOiAnaW5kaWNhdG9yQ29udGFpbmVyJyxcbiAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIHBhZGRpbmc6IGJhc2VVbml0ICogMixcbiAgdHJhbnNpdGlvbjogJ2NvbG9yIDE1MG1zJyxcblxuICAnOmhvdmVyJzoge1xuICAgIGNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMubmV1dHJhbDgwIDogY29sb3JzLm5ldXRyYWw0MCxcbiAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgZHJvcGRvd25JbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IERyb3Bkb3duSW5kaWNhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGN4LCBnZXRTdHlsZXMsIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2Ryb3Bkb3duSW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnZHJvcGRvd24taW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8RG93bkNoZXZyb24gLz59XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgY2xlYXJJbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IENsZWFySW5kaWNhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGN4LCBnZXRTdHlsZXMsIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2NsZWFySW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnY2xlYXItaW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8Q3Jvc3NJY29uIC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTZXBhcmF0b3Jcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG50eXBlIFNlcGFyYXRvclN0YXRlID0geyBpc0Rpc2FibGVkOiBib29sZWFuIH07XG5cbmV4cG9ydCBjb25zdCBpbmRpY2F0b3JTZXBhcmF0b3JDU1MgPSAoe1xuICBpc0Rpc2FibGVkLFxuICB0aGVtZToge1xuICAgIHNwYWNpbmc6IHsgYmFzZVVuaXQgfSxcbiAgICBjb2xvcnMsXG4gIH0sXG59OiBDb21tb25Qcm9wcyAmIFNlcGFyYXRvclN0YXRlKSA9PiAoe1xuICBsYWJlbDogJ2luZGljYXRvclNlcGFyYXRvcicsXG4gIGFsaWduU2VsZjogJ3N0cmV0Y2gnLFxuICBiYWNrZ3JvdW5kQ29sb3I6IGlzRGlzYWJsZWQgPyBjb2xvcnMubmV1dHJhbDEwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgbWFyZ2luQm90dG9tOiBiYXNlVW5pdCAqIDIsXG4gIG1hcmdpblRvcDogYmFzZVVuaXQgKiAyLFxuICB3aWR0aDogMSxcbn0pO1xuXG5leHBvcnQgY29uc3QgSW5kaWNhdG9yU2VwYXJhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNsYXNzTmFtZSwgY3gsIGdldFN0eWxlcywgaW5uZXJQcm9wcyB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPHNwYW5cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2luZGljYXRvclNlcGFyYXRvcicsIHByb3BzKX1cbiAgICAgIGNsYXNzTmFtZT17Y3goeyAnaW5kaWNhdG9yLXNlcGFyYXRvcic6IHRydWUgfSwgY2xhc3NOYW1lKX1cbiAgICAvPlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMb2FkaW5nXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgbG9hZGluZ0RvdEFuaW1hdGlvbnMgPSBrZXlmcmFtZXNgXG4gIDAlLCA4MCUsIDEwMCUgeyBvcGFjaXR5OiAwOyB9XG4gIDQwJSB7IG9wYWNpdHk6IDE7IH1cbmA7XG5cbmV4cG9ydCBjb25zdCBsb2FkaW5nSW5kaWNhdG9yQ1NTID0gKHtcbiAgaXNGb2N1c2VkLFxuICBzaXplLFxuICB0aGVtZToge1xuICAgIGNvbG9ycyxcbiAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gIH0sXG59OiB7XG4gIGlzRm9jdXNlZDogYm9vbGVhbixcbiAgc2l6ZTogbnVtYmVyLFxuICB0aGVtZTogVGhlbWUsXG59KSA9PiAoe1xuICBsYWJlbDogJ2xvYWRpbmdJbmRpY2F0b3InLFxuICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw2MCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgcGFkZGluZzogYmFzZVVuaXQgKiAyLFxuICB0cmFuc2l0aW9uOiAnY29sb3IgMTUwbXMnLFxuICBhbGlnblNlbGY6ICdjZW50ZXInLFxuICBmb250U2l6ZTogc2l6ZSxcbiAgbGluZUhlaWdodDogMSxcbiAgbWFyZ2luUmlnaHQ6IHNpemUsXG4gIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnLFxufSk7XG5cbnR5cGUgRG90UHJvcHMgPSB7IGNvbG9yOiBzdHJpbmcsIGRlbGF5OiBudW1iZXIsIG9mZnNldDogYm9vbGVhbiB9O1xuY29uc3QgTG9hZGluZ0RvdCA9ICh7IGNvbG9yLCBkZWxheSwgb2Zmc2V0IH06IERvdFByb3BzKSA9PiAoXG4gIDxzcGFuXG4gICAgY3NzPXt7XG4gICAgICBhbmltYXRpb246IGAke2xvYWRpbmdEb3RBbmltYXRpb25zfSAxcyBlYXNlLWluLW91dCAke2RlbGF5fW1zIGluZmluaXRlO2AsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnMWVtOycsXG4gICAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrOycsXG4gICAgICBtYXJnaW5MZWZ0OiBvZmZzZXQgPyAnMWVtOycgOiBudWxsLFxuICAgICAgaGVpZ2h0OiAnMWVtOycsXG4gICAgICB2ZXJ0aWNhbEFsaWduOiAndG9wOycsXG4gICAgICB3aWR0aDogJzFlbTsnLFxuICAgIH19XG4gIC8+XG4pO1xuXG5leHBvcnQgdHlwZSBMb2FkaW5nSWNvblByb3BzID0ge1xuICAvKiogUHJvcHMgdGhhdCB3aWxsIGJlIHBhc3NlZCBvbiB0byB0aGUgY2hpbGRyZW4uICovXG4gIGlubmVyUHJvcHM6IGFueSxcbiAgLyoqIFRoZSBmb2N1c2VkIHN0YXRlIG9mIHRoZSBzZWxlY3QuICovXG4gIGlzRm9jdXNlZDogYm9vbGVhbixcbiAgLyoqIFdoZXRoZXIgdGhlIHRleHQgaXMgcmlnaHQgdG8gbGVmdCAqL1xuICBpc1J0bDogYm9vbGVhbixcbn0gJiBDb21tb25Qcm9wcyAmIHtcbiAgICAvKiogU2V0IHNpemUgb2YgdGhlIGNvbnRhaW5lci4gKi9cbiAgICBzaXplOiBudW1iZXIsXG4gIH07XG5leHBvcnQgY29uc3QgTG9hZGluZ0luZGljYXRvciA9IChwcm9wczogTG9hZGluZ0ljb25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgY2xhc3NOYW1lLFxuICAgIGN4LFxuICAgIGdldFN0eWxlcyxcbiAgICBpbm5lclByb3BzLFxuICAgIGlzRm9jdXNlZCxcbiAgICBpc1J0bCxcbiAgICB0aGVtZTogeyBjb2xvcnMgfSxcbiAgfSA9IHByb3BzO1xuICBjb25zdCBjb2xvciA9IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsODAgOiBjb2xvcnMubmV1dHJhbDIwO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgey4uLmlubmVyUHJvcHN9XG4gICAgICBjc3M9e2dldFN0eWxlcygnbG9hZGluZ0luZGljYXRvcicsIHByb3BzKX1cbiAgICAgIGNsYXNzTmFtZT17Y3goXG4gICAgICAgIHtcbiAgICAgICAgICBpbmRpY2F0b3I6IHRydWUsXG4gICAgICAgICAgJ2xvYWRpbmctaW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApfVxuICAgID5cbiAgICAgIDxMb2FkaW5nRG90IGNvbG9yPXtjb2xvcn0gZGVsYXk9ezB9IG9mZnNldD17aXNSdGx9IC8+XG4gICAgICA8TG9hZGluZ0RvdCBjb2xvcj17Y29sb3J9IGRlbGF5PXsxNjB9IG9mZnNldCAvPlxuICAgICAgPExvYWRpbmdEb3QgY29sb3I9e2NvbG9yfSBkZWxheT17MzIwfSBvZmZzZXQ9eyFpc1J0bH0gLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5Mb2FkaW5nSW5kaWNhdG9yLmRlZmF1bHRQcm9wcyA9IHsgc2l6ZTogNCB9O1xuIl19 */\")\n });\n};\n\nvar LoadingIndicator = function LoadingIndicator(props) {\n var className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps,\n isFocused = props.isFocused,\n isRtl = props.isRtl,\n colors = props.theme.colors;\n var color = isFocused ? colors.neutral80 : colors.neutral20;\n return jsx(\"div\", _extends({}, innerProps, {\n css: getStyles('loadingIndicator', props),\n className: cx({\n indicator: true,\n 'loading-indicator': true\n }, className)\n }), jsx(LoadingDot, {\n color: color,\n delay: 0,\n offset: isRtl\n }), jsx(LoadingDot, {\n color: color,\n delay: 160,\n offset: true\n }), jsx(LoadingDot, {\n color: color,\n delay: 320,\n offset: !isRtl\n }));\n};\nLoadingIndicator.defaultProps = {\n size: 4\n};\n\nvar css = function css(_ref) {\n var isDisabled = _ref.isDisabled,\n isFocused = _ref.isFocused,\n _ref$theme = _ref.theme,\n colors = _ref$theme.colors,\n borderRadius = _ref$theme.borderRadius,\n spacing = _ref$theme.spacing;\n return {\n label: 'control',\n alignItems: 'center',\n backgroundColor: isDisabled ? colors.neutral5 : colors.neutral0,\n borderColor: isDisabled ? colors.neutral10 : isFocused ? colors.primary : colors.neutral20,\n borderRadius: borderRadius,\n borderStyle: 'solid',\n borderWidth: 1,\n boxShadow: isFocused ? \"0 0 0 1px \".concat(colors.primary) : null,\n cursor: 'default',\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'space-between',\n minHeight: spacing.controlHeight,\n outline: '0 !important',\n position: 'relative',\n transition: 'all 100ms',\n '&:hover': {\n borderColor: isFocused ? colors.primary : colors.neutral30\n }\n };\n};\n\nvar Control = function Control(props) {\n var children = props.children,\n cx = props.cx,\n getStyles = props.getStyles,\n className = props.className,\n isDisabled = props.isDisabled,\n isFocused = props.isFocused,\n innerRef = props.innerRef,\n innerProps = props.innerProps,\n menuIsOpen = props.menuIsOpen;\n return jsx(\"div\", _extends({\n ref: innerRef,\n css: getStyles('control', props),\n className: cx({\n control: true,\n 'control--is-disabled': isDisabled,\n 'control--is-focused': isFocused,\n 'control--menu-is-open': menuIsOpen\n }, className)\n }, innerProps), children);\n};\n\nvar groupCSS = function groupCSS(_ref) {\n var spacing = _ref.theme.spacing;\n return {\n paddingBottom: spacing.baseUnit * 2,\n paddingTop: spacing.baseUnit * 2\n };\n};\n\nvar Group = function Group(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n Heading = props.Heading,\n headingProps = props.headingProps,\n label = props.label,\n theme = props.theme,\n selectProps = props.selectProps;\n return jsx(\"div\", {\n css: getStyles('group', props),\n className: cx({\n group: true\n }, className)\n }, jsx(Heading, _extends({}, headingProps, {\n selectProps: selectProps,\n theme: theme,\n getStyles: getStyles,\n cx: cx\n }), label), jsx(\"div\", null, children));\n};\n\nvar groupHeadingCSS = function groupHeadingCSS(_ref2) {\n var spacing = _ref2.theme.spacing;\n return {\n label: 'group',\n color: '#999',\n cursor: 'default',\n display: 'block',\n fontSize: '75%',\n fontWeight: '500',\n marginBottom: '0.25em',\n paddingLeft: spacing.baseUnit * 3,\n paddingRight: spacing.baseUnit * 3,\n textTransform: 'uppercase'\n };\n};\nvar GroupHeading = function GroupHeading(props) {\n var className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n theme = props.theme,\n selectProps = props.selectProps,\n cleanProps = _objectWithoutProperties(props, [\"className\", \"cx\", \"getStyles\", \"theme\", \"selectProps\"]);\n\n return jsx(\"div\", _extends({\n css: getStyles('groupHeading', _objectSpread({\n theme: theme\n }, cleanProps)),\n className: cx({\n 'group-heading': true\n }, className)\n }, cleanProps));\n};\n\nvar inputCSS = function inputCSS(_ref) {\n var isDisabled = _ref.isDisabled,\n _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n colors = _ref$theme.colors;\n return {\n margin: spacing.baseUnit / 2,\n paddingBottom: spacing.baseUnit / 2,\n paddingTop: spacing.baseUnit / 2,\n visibility: isDisabled ? 'hidden' : 'visible',\n color: colors.neutral80\n };\n};\n\nvar inputStyle = function inputStyle(isHidden) {\n return {\n label: 'input',\n background: 0,\n border: 0,\n fontSize: 'inherit',\n opacity: isHidden ? 0 : 1,\n outline: 0,\n padding: 0,\n color: 'inherit'\n };\n};\n\nvar Input = function Input(_ref2) {\n var className = _ref2.className,\n cx = _ref2.cx,\n getStyles = _ref2.getStyles,\n innerRef = _ref2.innerRef,\n isHidden = _ref2.isHidden,\n isDisabled = _ref2.isDisabled,\n theme = _ref2.theme,\n selectProps = _ref2.selectProps,\n props = _objectWithoutProperties(_ref2, [\"className\", \"cx\", \"getStyles\", \"innerRef\", \"isHidden\", \"isDisabled\", \"theme\", \"selectProps\"]);\n\n return jsx(\"div\", {\n css: getStyles('input', _objectSpread({\n theme: theme\n }, props))\n }, jsx(AutosizeInput, _extends({\n className: cx({\n input: true\n }, className),\n inputRef: innerRef,\n inputStyle: inputStyle(isHidden),\n disabled: isDisabled\n }, props)));\n};\n\nvar multiValueCSS = function multiValueCSS(_ref) {\n var _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n borderRadius = _ref$theme.borderRadius,\n colors = _ref$theme.colors;\n return {\n label: 'multiValue',\n backgroundColor: colors.neutral10,\n borderRadius: borderRadius / 2,\n display: 'flex',\n margin: spacing.baseUnit / 2,\n minWidth: 0 // resolves flex/text-overflow bug\n\n };\n};\nvar multiValueLabelCSS = function multiValueLabelCSS(_ref2) {\n var _ref2$theme = _ref2.theme,\n borderRadius = _ref2$theme.borderRadius,\n colors = _ref2$theme.colors,\n cropWithEllipsis = _ref2.cropWithEllipsis;\n return {\n borderRadius: borderRadius / 2,\n color: colors.neutral80,\n fontSize: '85%',\n overflow: 'hidden',\n padding: 3,\n paddingLeft: 6,\n textOverflow: cropWithEllipsis ? 'ellipsis' : null,\n whiteSpace: 'nowrap'\n };\n};\nvar multiValueRemoveCSS = function multiValueRemoveCSS(_ref3) {\n var _ref3$theme = _ref3.theme,\n spacing = _ref3$theme.spacing,\n borderRadius = _ref3$theme.borderRadius,\n colors = _ref3$theme.colors,\n isFocused = _ref3.isFocused;\n return {\n alignItems: 'center',\n borderRadius: borderRadius / 2,\n backgroundColor: isFocused && colors.dangerLight,\n display: 'flex',\n paddingLeft: spacing.baseUnit,\n paddingRight: spacing.baseUnit,\n ':hover': {\n backgroundColor: colors.dangerLight,\n color: colors.danger\n }\n };\n};\nvar MultiValueGeneric = function MultiValueGeneric(_ref4) {\n var children = _ref4.children,\n innerProps = _ref4.innerProps;\n return jsx(\"div\", innerProps, children);\n};\nvar MultiValueContainer = MultiValueGeneric;\nvar MultiValueLabel = MultiValueGeneric;\nvar MultiValueRemove =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(MultiValueRemove, _Component);\n\n function MultiValueRemove() {\n _classCallCheck(this, MultiValueRemove);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(MultiValueRemove).apply(this, arguments));\n }\n\n _createClass(MultiValueRemove, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n children = _this$props.children,\n innerProps = _this$props.innerProps;\n return jsx(\"div\", innerProps, children || jsx(CrossIcon, {\n size: 14\n }));\n }\n }]);\n\n return MultiValueRemove;\n}(Component);\n\nvar MultiValue =\n/*#__PURE__*/\nfunction (_Component2) {\n _inherits(MultiValue, _Component2);\n\n function MultiValue() {\n _classCallCheck(this, MultiValue);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(MultiValue).apply(this, arguments));\n }\n\n _createClass(MultiValue, [{\n key: \"render\",\n value: function render() {\n var _this = this;\n\n var _this$props2 = this.props,\n children = _this$props2.children,\n className = _this$props2.className,\n components = _this$props2.components,\n cx = _this$props2.cx,\n data = _this$props2.data,\n getStyles = _this$props2.getStyles,\n innerProps = _this$props2.innerProps,\n isDisabled = _this$props2.isDisabled,\n removeProps = _this$props2.removeProps,\n selectProps = _this$props2.selectProps;\n var Container = components.Container,\n Label = components.Label,\n Remove = components.Remove;\n return jsx(ClassNames, null, function (_ref5) {\n var css = _ref5.css,\n emotionCx = _ref5.cx;\n return jsx(Container, {\n data: data,\n innerProps: _objectSpread({}, innerProps, {\n className: emotionCx(css(getStyles('multiValue', _this.props)), cx({\n 'multi-value': true,\n 'multi-value--is-disabled': isDisabled\n }, className))\n }),\n selectProps: selectProps\n }, jsx(Label, {\n data: data,\n innerProps: {\n className: emotionCx(css(getStyles('multiValueLabel', _this.props)), cx({\n 'multi-value__label': true\n }, className))\n },\n selectProps: selectProps\n }, children), jsx(Remove, {\n data: data,\n innerProps: _objectSpread({\n className: emotionCx(css(getStyles('multiValueRemove', _this.props)), cx({\n 'multi-value__remove': true\n }, className))\n }, removeProps),\n selectProps: selectProps\n }));\n });\n }\n }]);\n\n return MultiValue;\n}(Component);\n\n_defineProperty(MultiValue, \"defaultProps\", {\n cropWithEllipsis: true\n});\n\nvar optionCSS = function optionCSS(_ref) {\n var isDisabled = _ref.isDisabled,\n isFocused = _ref.isFocused,\n isSelected = _ref.isSelected,\n _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n colors = _ref$theme.colors;\n return {\n label: 'option',\n backgroundColor: isSelected ? colors.primary : isFocused ? colors.primary25 : 'transparent',\n color: isDisabled ? colors.neutral20 : isSelected ? colors.neutral0 : 'inherit',\n cursor: 'default',\n display: 'block',\n fontSize: 'inherit',\n padding: \"\".concat(spacing.baseUnit * 2, \"px \").concat(spacing.baseUnit * 3, \"px\"),\n width: '100%',\n userSelect: 'none',\n WebkitTapHighlightColor: 'rgba(0, 0, 0, 0)',\n // provide some affordance on touch devices\n ':active': {\n backgroundColor: !isDisabled && (isSelected ? colors.primary : colors.primary50)\n }\n };\n};\n\nvar Option = function Option(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n isDisabled = props.isDisabled,\n isFocused = props.isFocused,\n isSelected = props.isSelected,\n innerRef = props.innerRef,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('option', props),\n className: cx({\n option: true,\n 'option--is-disabled': isDisabled,\n 'option--is-focused': isFocused,\n 'option--is-selected': isSelected\n }, className),\n ref: innerRef\n }, innerProps), children);\n};\n\nvar placeholderCSS = function placeholderCSS(_ref) {\n var _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n colors = _ref$theme.colors;\n return {\n label: 'placeholder',\n color: colors.neutral50,\n marginLeft: spacing.baseUnit / 2,\n marginRight: spacing.baseUnit / 2,\n position: 'absolute',\n top: '50%',\n transform: 'translateY(-50%)'\n };\n};\n\nvar Placeholder = function Placeholder(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('placeholder', props),\n className: cx({\n placeholder: true\n }, className)\n }, innerProps), children);\n};\n\nvar css$1 = function css(_ref) {\n var isDisabled = _ref.isDisabled,\n _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n colors = _ref$theme.colors;\n return {\n label: 'singleValue',\n color: isDisabled ? colors.neutral40 : colors.neutral80,\n marginLeft: spacing.baseUnit / 2,\n marginRight: spacing.baseUnit / 2,\n maxWidth: \"calc(100% - \".concat(spacing.baseUnit * 2, \"px)\"),\n overflow: 'hidden',\n position: 'absolute',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n top: '50%',\n transform: 'translateY(-50%)'\n };\n};\n\nvar SingleValue = function SingleValue(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n isDisabled = props.isDisabled,\n innerProps = props.innerProps;\n return jsx(\"div\", _extends({\n css: getStyles('singleValue', props),\n className: cx({\n 'single-value': true,\n 'single-value--is-disabled': isDisabled\n }, className)\n }, innerProps), children);\n};\n\nvar components = {\n ClearIndicator: ClearIndicator,\n Control: Control,\n DropdownIndicator: DropdownIndicator,\n DownChevron: DownChevron,\n CrossIcon: CrossIcon,\n Group: Group,\n GroupHeading: GroupHeading,\n IndicatorsContainer: IndicatorsContainer,\n IndicatorSeparator: IndicatorSeparator,\n Input: Input,\n LoadingIndicator: LoadingIndicator,\n Menu: Menu,\n MenuList: MenuList,\n MenuPortal: MenuPortal,\n LoadingMessage: LoadingMessage,\n NoOptionsMessage: NoOptionsMessage,\n MultiValue: MultiValue,\n MultiValueContainer: MultiValueContainer,\n MultiValueLabel: MultiValueLabel,\n MultiValueRemove: MultiValueRemove,\n Option: Option,\n Placeholder: Placeholder,\n SelectContainer: SelectContainer,\n SingleValue: SingleValue,\n ValueContainer: ValueContainer\n};\nvar defaultComponents = function defaultComponents(props) {\n return _objectSpread({}, components, props.components);\n};\n\nexport { exportedEqual as A, cleanValue as B, scrollIntoView as C, classNames as D, noop as E, MenuPlacer as F, handleInputChange as G, components as H, clearIndicatorCSS as a, containerCSS as b, css as c, dropdownIndicatorCSS as d, groupCSS as e, groupHeadingCSS as f, indicatorsContainerCSS as g, indicatorSeparatorCSS as h, inputCSS as i, loadingIndicatorCSS as j, loadingMessageCSS as k, menuCSS as l, menuListCSS as m, menuPortalCSS as n, multiValueCSS as o, multiValueLabelCSS as p, multiValueRemoveCSS as q, noOptionsMessageCSS as r, optionCSS as s, placeholderCSS as t, css$1 as u, valueContainerCSS as v, isTouchCapable as w, isMobileDevice as x, defaultComponents as y, isDocumentElement as z };\n","function _taggedTemplateLiteral(e, t) {\n return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, {\n raw: {\n value: Object.freeze(t)\n }\n }));\n}\nexport { _taggedTemplateLiteral as default };","var safeIsNaN = Number.isNaN ||\n function ponyfill(value) {\n return typeof value === 'number' && value !== value;\n };\nfunction isEqual(first, second) {\n if (first === second) {\n return true;\n }\n if (safeIsNaN(first) && safeIsNaN(second)) {\n return true;\n }\n return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for (var i = 0; i < newInputs.length; i++) {\n if (!isEqual(newInputs[i], lastInputs[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n if (isEqual === void 0) { isEqual = areInputsEqual; }\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\n function memoized() {\n var newArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n return lastResult;\n }\n lastResult = resultFn.apply(this, newArgs);\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n return lastResult;\n }\n return memoized;\n}\n\nexport default memoizeOne;\n","import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';\nimport _objectSpread from '@babel/runtime/helpers/esm/objectSpread';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport React, { Component, PureComponent } from 'react';\nimport memoizeOne from 'memoize-one';\nimport { jsx } from '@emotion/core';\nimport { findDOMNode } from 'react-dom';\nimport { a as clearIndicatorCSS, b as containerCSS, c as css, d as dropdownIndicatorCSS, e as groupCSS, f as groupHeadingCSS, g as indicatorsContainerCSS, h as indicatorSeparatorCSS, i as inputCSS, j as loadingIndicatorCSS, k as loadingMessageCSS, l as menuCSS, m as menuListCSS, n as menuPortalCSS, o as multiValueCSS, p as multiValueLabelCSS, q as multiValueRemoveCSS, r as noOptionsMessageCSS, s as optionCSS, t as placeholderCSS, u as css$1, v as valueContainerCSS, w as isTouchCapable, x as isMobileDevice, y as defaultComponents, z as isDocumentElement, A as exportedEqual, B as cleanValue, C as scrollIntoView, D as classNames, E as noop, F as MenuPlacer } from './chunk-762c4cd6.browser.esm.js';\nimport _css from '@emotion/css';\n\nvar diacritics = [{\n base: 'A',\n letters: /[\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F]/g\n}, {\n base: 'AA',\n letters: /[\\uA732]/g\n}, {\n base: 'AE',\n letters: /[\\u00C6\\u01FC\\u01E2]/g\n}, {\n base: 'AO',\n letters: /[\\uA734]/g\n}, {\n base: 'AU',\n letters: /[\\uA736]/g\n}, {\n base: 'AV',\n letters: /[\\uA738\\uA73A]/g\n}, {\n base: 'AY',\n letters: /[\\uA73C]/g\n}, {\n base: 'B',\n letters: /[\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181]/g\n}, {\n base: 'C',\n letters: /[\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E]/g\n}, {\n base: 'D',\n letters: /[\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779]/g\n}, {\n base: 'DZ',\n letters: /[\\u01F1\\u01C4]/g\n}, {\n base: 'Dz',\n letters: /[\\u01F2\\u01C5]/g\n}, {\n base: 'E',\n letters: /[\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E]/g\n}, {\n base: 'F',\n letters: /[\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B]/g\n}, {\n base: 'G',\n letters: /[\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E]/g\n}, {\n base: 'H',\n letters: /[\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D]/g\n}, {\n base: 'I',\n letters: /[\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197]/g\n}, {\n base: 'J',\n letters: /[\\u004A\\u24BF\\uFF2A\\u0134\\u0248]/g\n}, {\n base: 'K',\n letters: /[\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2]/g\n}, {\n base: 'L',\n letters: /[\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780]/g\n}, {\n base: 'LJ',\n letters: /[\\u01C7]/g\n}, {\n base: 'Lj',\n letters: /[\\u01C8]/g\n}, {\n base: 'M',\n letters: /[\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C]/g\n}, {\n base: 'N',\n letters: /[\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4]/g\n}, {\n base: 'NJ',\n letters: /[\\u01CA]/g\n}, {\n base: 'Nj',\n letters: /[\\u01CB]/g\n}, {\n base: 'O',\n letters: /[\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C]/g\n}, {\n base: 'OI',\n letters: /[\\u01A2]/g\n}, {\n base: 'OO',\n letters: /[\\uA74E]/g\n}, {\n base: 'OU',\n letters: /[\\u0222]/g\n}, {\n base: 'P',\n letters: /[\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754]/g\n}, {\n base: 'Q',\n letters: /[\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A]/g\n}, {\n base: 'R',\n letters: /[\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782]/g\n}, {\n base: 'S',\n letters: /[\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784]/g\n}, {\n base: 'T',\n letters: /[\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786]/g\n}, {\n base: 'TZ',\n letters: /[\\uA728]/g\n}, {\n base: 'U',\n letters: /[\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244]/g\n}, {\n base: 'V',\n letters: /[\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245]/g\n}, {\n base: 'VY',\n letters: /[\\uA760]/g\n}, {\n base: 'W',\n letters: /[\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72]/g\n}, {\n base: 'X',\n letters: /[\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C]/g\n}, {\n base: 'Y',\n letters: /[\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE]/g\n}, {\n base: 'Z',\n letters: /[\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762]/g\n}, {\n base: 'a',\n letters: /[\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250]/g\n}, {\n base: 'aa',\n letters: /[\\uA733]/g\n}, {\n base: 'ae',\n letters: /[\\u00E6\\u01FD\\u01E3]/g\n}, {\n base: 'ao',\n letters: /[\\uA735]/g\n}, {\n base: 'au',\n letters: /[\\uA737]/g\n}, {\n base: 'av',\n letters: /[\\uA739\\uA73B]/g\n}, {\n base: 'ay',\n letters: /[\\uA73D]/g\n}, {\n base: 'b',\n letters: /[\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253]/g\n}, {\n base: 'c',\n letters: /[\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184]/g\n}, {\n base: 'd',\n letters: /[\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A]/g\n}, {\n base: 'dz',\n letters: /[\\u01F3\\u01C6]/g\n}, {\n base: 'e',\n letters: /[\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD]/g\n}, {\n base: 'f',\n letters: /[\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C]/g\n}, {\n base: 'g',\n letters: /[\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F]/g\n}, {\n base: 'h',\n letters: /[\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265]/g\n}, {\n base: 'hv',\n letters: /[\\u0195]/g\n}, {\n base: 'i',\n letters: /[\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131]/g\n}, {\n base: 'j',\n letters: /[\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249]/g\n}, {\n base: 'k',\n letters: /[\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3]/g\n}, {\n base: 'l',\n letters: /[\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747]/g\n}, {\n base: 'lj',\n letters: /[\\u01C9]/g\n}, {\n base: 'm',\n letters: /[\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F]/g\n}, {\n base: 'n',\n letters: /[\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5]/g\n}, {\n base: 'nj',\n letters: /[\\u01CC]/g\n}, {\n base: 'o',\n letters: /[\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275]/g\n}, {\n base: 'oi',\n letters: /[\\u01A3]/g\n}, {\n base: 'ou',\n letters: /[\\u0223]/g\n}, {\n base: 'oo',\n letters: /[\\uA74F]/g\n}, {\n base: 'p',\n letters: /[\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755]/g\n}, {\n base: 'q',\n letters: /[\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759]/g\n}, {\n base: 'r',\n letters: /[\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783]/g\n}, {\n base: 's',\n letters: /[\\u0073\\u24E2\\uFF53\\u00DF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B]/g\n}, {\n base: 't',\n letters: /[\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787]/g\n}, {\n base: 'tz',\n letters: /[\\uA729]/g\n}, {\n base: 'u',\n letters: /[\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289]/g\n}, {\n base: 'v',\n letters: /[\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C]/g\n}, {\n base: 'vy',\n letters: /[\\uA761]/g\n}, {\n base: 'w',\n letters: /[\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73]/g\n}, {\n base: 'x',\n letters: /[\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D]/g\n}, {\n base: 'y',\n letters: /[\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF]/g\n}, {\n base: 'z',\n letters: /[\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763]/g\n}];\nvar stripDiacritics = function stripDiacritics(str) {\n for (var i = 0; i < diacritics.length; i++) {\n str = str.replace(diacritics[i].letters, diacritics[i].base);\n }\n\n return str;\n};\n\nvar trimString = function trimString(str) {\n return str.replace(/^\\s+|\\s+$/g, '');\n};\n\nvar defaultStringify = function defaultStringify(option) {\n return \"\".concat(option.label, \" \").concat(option.value);\n};\n\nvar createFilter = function createFilter(config) {\n return function (option, rawInput) {\n var _ignoreCase$ignoreAcc = _objectSpread({\n ignoreCase: true,\n ignoreAccents: true,\n stringify: defaultStringify,\n trim: true,\n matchFrom: 'any'\n }, config),\n ignoreCase = _ignoreCase$ignoreAcc.ignoreCase,\n ignoreAccents = _ignoreCase$ignoreAcc.ignoreAccents,\n stringify = _ignoreCase$ignoreAcc.stringify,\n trim = _ignoreCase$ignoreAcc.trim,\n matchFrom = _ignoreCase$ignoreAcc.matchFrom;\n\n var input = trim ? trimString(rawInput) : rawInput;\n var candidate = trim ? trimString(stringify(option)) : stringify(option);\n\n if (ignoreCase) {\n input = input.toLowerCase();\n candidate = candidate.toLowerCase();\n }\n\n if (ignoreAccents) {\n input = stripDiacritics(input);\n candidate = stripDiacritics(candidate);\n }\n\n return matchFrom === 'start' ? candidate.substr(0, input.length) === input : candidate.indexOf(input) > -1;\n };\n};\n\nvar _ref = process.env.NODE_ENV === \"production\" ? {\n name: \"1laao21-a11yText\",\n styles: \"label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap;\"\n} : {\n name: \"1laao21-a11yText\",\n styles: \"label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap;\",\n map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkExMXlUZXh0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFNIiwiZmlsZSI6IkExMXlUZXh0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQGZsb3dcbi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsgdHlwZSBFbGVtZW50Q29uZmlnIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAnQGVtb3Rpb24vY29yZSc7XG5cbi8vIEFzc2lzdGl2ZSB0ZXh0IHRvIGRlc2NyaWJlIHZpc3VhbCBlbGVtZW50cy4gSGlkZGVuIGZvciBzaWdodGVkIHVzZXJzLlxuY29uc3QgQTExeVRleHQgPSAocHJvcHM6IEVsZW1lbnRDb25maWc8J3NwYW4nPikgPT4gKFxuICAgIDxzcGFuXG4gICAgICBjc3M9e3tcbiAgICAgICAgbGFiZWw6ICdhMTF5VGV4dCcsXG4gICAgICAgIHpJbmRleDogOTk5OSxcbiAgICAgICAgYm9yZGVyOiAwLFxuICAgICAgICBjbGlwOiAncmVjdCgxcHgsIDFweCwgMXB4LCAxcHgpJyxcbiAgICAgICAgaGVpZ2h0OiAxLFxuICAgICAgICB3aWR0aDogMSxcbiAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gICAgICB9fVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4pO1xuXG5leHBvcnQgZGVmYXVsdCBBMTF5VGV4dDtcbiJdfQ== */\"\n};\n\nvar A11yText = function A11yText(props) {\n return jsx(\"span\", _extends({\n css: _ref\n }, props));\n};\n\nvar DummyInput =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(DummyInput, _Component);\n\n function DummyInput() {\n _classCallCheck(this, DummyInput);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(DummyInput).apply(this, arguments));\n }\n\n _createClass(DummyInput, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n inProp = _this$props.in,\n out = _this$props.out,\n onExited = _this$props.onExited,\n appear = _this$props.appear,\n enter = _this$props.enter,\n exit = _this$props.exit,\n innerRef = _this$props.innerRef,\n emotion = _this$props.emotion,\n props = _objectWithoutProperties(_this$props, [\"in\", \"out\", \"onExited\", \"appear\", \"enter\", \"exit\", \"innerRef\", \"emotion\"]);\n\n return jsx(\"input\", _extends({\n ref: innerRef\n }, props, {\n css:\n /*#__PURE__*/\n _css({\n label: 'dummyInput',\n // get rid of any default styles\n background: 0,\n border: 0,\n fontSize: 'inherit',\n outline: 0,\n padding: 0,\n // important! without `width` browsers won't allow focus\n width: 1,\n // remove cursor on desktop\n color: 'transparent',\n // remove cursor on mobile whilst maintaining \"scroll into view\" behaviour\n left: -100,\n opacity: 0,\n position: 'relative',\n transform: 'scale(0)'\n }, process.env.NODE_ENV === \"production\" ? \"\" : \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkR1bW15SW5wdXQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBWVEiLCJmaWxlIjoiRHVtbXlJbnB1dC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEBmbG93XG4vKiogQGpzeCBqc3ggKi9cbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ0BlbW90aW9uL2NvcmUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEdW1teUlucHV0IGV4dGVuZHMgQ29tcG9uZW50PGFueT4ge1xuICByZW5kZXIgKCkge1xuICAgIGNvbnN0IHsgaW46IGluUHJvcCwgb3V0LCBvbkV4aXRlZCwgYXBwZWFyLCBlbnRlciwgZXhpdCwgaW5uZXJSZWYsIGVtb3Rpb24sIC4uLnByb3BzIH0gPSB0aGlzLnByb3BzO1xuICAgIHJldHVybihcbiAgICAgIDxpbnB1dFxuICAgICAgICByZWY9e2lubmVyUmVmfVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgIGNzcz17e1xuICAgICAgICAgIGxhYmVsOiAnZHVtbXlJbnB1dCcsXG4gICAgICAgICAgLy8gZ2V0IHJpZCBvZiBhbnkgZGVmYXVsdCBzdHlsZXNcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAwLFxuICAgICAgICAgIGJvcmRlcjogMCxcbiAgICAgICAgICBmb250U2l6ZTogJ2luaGVyaXQnLFxuICAgICAgICAgIG91dGxpbmU6IDAsXG4gICAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgICAvLyBpbXBvcnRhbnQhIHdpdGhvdXQgYHdpZHRoYCBicm93c2VycyB3b24ndCBhbGxvdyBmb2N1c1xuICAgICAgICAgIHdpZHRoOiAxLFxuXG4gICAgICAgICAgLy8gcmVtb3ZlIGN1cnNvciBvbiBkZXNrdG9wXG4gICAgICAgICAgY29sb3I6ICd0cmFuc3BhcmVudCcsXG5cbiAgICAgICAgICAvLyByZW1vdmUgY3Vyc29yIG9uIG1vYmlsZSB3aGlsc3QgbWFpbnRhaW5pbmcgXCJzY3JvbGwgaW50byB2aWV3XCIgYmVoYXZpb3VyXG4gICAgICAgICAgbGVmdDogLTEwMCxcbiAgICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgIHRyYW5zZm9ybTogJ3NjYWxlKDApJyxcbiAgICAgICAgfX1cbiAgICAgIC8+XG4gICAgKTtcbiAgfVxufVxuIl19 */\")\n }));\n }\n }]);\n\n return DummyInput;\n}(Component);\n\nvar NodeResolver =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(NodeResolver, _Component);\n\n function NodeResolver() {\n _classCallCheck(this, NodeResolver);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(NodeResolver).apply(this, arguments));\n }\n\n _createClass(NodeResolver, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.props.innerRef(findDOMNode(this));\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.props.innerRef(null);\n }\n }, {\n key: \"render\",\n value: function render() {\n return this.props.children;\n }\n }]);\n\n return NodeResolver;\n}(Component);\n\nvar STYLE_KEYS = ['boxSizing', 'height', 'overflow', 'paddingRight', 'position'];\nvar LOCK_STYLES = {\n boxSizing: 'border-box',\n // account for possible declaration `width: 100%;` on body\n overflow: 'hidden',\n position: 'relative',\n height: '100%'\n};\n\nfunction preventTouchMove(e) {\n e.preventDefault();\n}\nfunction allowTouchMove(e) {\n e.stopPropagation();\n}\nfunction preventInertiaScroll() {\n var top = this.scrollTop;\n var totalScroll = this.scrollHeight;\n var currentScroll = top + this.offsetHeight;\n\n if (top === 0) {\n this.scrollTop = 1;\n } else if (currentScroll === totalScroll) {\n this.scrollTop = top - 1;\n }\n} // `ontouchstart` check works on most browsers\n// `maxTouchPoints` works on IE10/11 and Surface\n\nfunction isTouchDevice() {\n return 'ontouchstart' in window || navigator.maxTouchPoints;\n}\n\nvar canUseDOM = !!(window.document && window.document.createElement);\nvar activeScrollLocks = 0;\n\nvar ScrollLock =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ScrollLock, _Component);\n\n function ScrollLock() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, ScrollLock);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ScrollLock)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"originalStyles\", {});\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"listenerOptions\", {\n capture: false,\n passive: false\n });\n\n return _this;\n }\n\n _createClass(ScrollLock, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n if (!canUseDOM) return;\n var _this$props = this.props,\n accountForScrollbars = _this$props.accountForScrollbars,\n touchScrollTarget = _this$props.touchScrollTarget;\n var target = document.body;\n var targetStyle = target && target.style;\n\n if (accountForScrollbars) {\n // store any styles already applied to the body\n STYLE_KEYS.forEach(function (key) {\n var val = targetStyle && targetStyle[key];\n _this2.originalStyles[key] = val;\n });\n } // apply the lock styles and padding if this is the first scroll lock\n\n\n if (accountForScrollbars && activeScrollLocks < 1) {\n var currentPadding = parseInt(this.originalStyles.paddingRight, 10) || 0;\n var clientWidth = document.body ? document.body.clientWidth : 0;\n var adjustedPadding = window.innerWidth - clientWidth + currentPadding || 0;\n Object.keys(LOCK_STYLES).forEach(function (key) {\n var val = LOCK_STYLES[key];\n\n if (targetStyle) {\n targetStyle[key] = val;\n }\n });\n\n if (targetStyle) {\n targetStyle.paddingRight = \"\".concat(adjustedPadding, \"px\");\n }\n } // account for touch devices\n\n\n if (target && isTouchDevice()) {\n // Mobile Safari ignores { overflow: hidden } declaration on the body.\n target.addEventListener('touchmove', preventTouchMove, this.listenerOptions); // Allow scroll on provided target\n\n if (touchScrollTarget) {\n touchScrollTarget.addEventListener('touchstart', preventInertiaScroll, this.listenerOptions);\n touchScrollTarget.addEventListener('touchmove', allowTouchMove, this.listenerOptions);\n }\n } // increment active scroll locks\n\n\n activeScrollLocks += 1;\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n var _this3 = this;\n\n if (!canUseDOM) return;\n var _this$props2 = this.props,\n accountForScrollbars = _this$props2.accountForScrollbars,\n touchScrollTarget = _this$props2.touchScrollTarget;\n var target = document.body;\n var targetStyle = target && target.style; // safely decrement active scroll locks\n\n activeScrollLocks = Math.max(activeScrollLocks - 1, 0); // reapply original body styles, if any\n\n if (accountForScrollbars && activeScrollLocks < 1) {\n STYLE_KEYS.forEach(function (key) {\n var val = _this3.originalStyles[key];\n\n if (targetStyle) {\n targetStyle[key] = val;\n }\n });\n } // remove touch listeners\n\n\n if (target && isTouchDevice()) {\n target.removeEventListener('touchmove', preventTouchMove, this.listenerOptions);\n\n if (touchScrollTarget) {\n touchScrollTarget.removeEventListener('touchstart', preventInertiaScroll, this.listenerOptions);\n touchScrollTarget.removeEventListener('touchmove', allowTouchMove, this.listenerOptions);\n }\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return null;\n }\n }]);\n\n return ScrollLock;\n}(Component);\n\n_defineProperty(ScrollLock, \"defaultProps\", {\n accountForScrollbars: true\n});\n\nvar _ref$1 = process.env.NODE_ENV === \"production\" ? {\n name: \"1dsbpcp\",\n styles: \"position:fixed;left:0;bottom:0;right:0;top:0;\"\n} : {\n name: \"1dsbpcp\",\n styles: \"position:fixed;left:0;bottom:0;right:0;top:0;\",\n map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNjcm9sbEJsb2NrLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTZEVSIsImZpbGUiOiJTY3JvbGxCbG9jay5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEBmbG93XG4vKiogQGpzeCBqc3ggKi9cbmltcG9ydCB7IFB1cmVDb21wb25lbnQsIHR5cGUgRWxlbWVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ0BlbW90aW9uL2NvcmUnO1xuaW1wb3J0IE5vZGVSZXNvbHZlciBmcm9tICcuL05vZGVSZXNvbHZlcic7XG5pbXBvcnQgU2Nyb2xsTG9jayBmcm9tICcuL1Njcm9sbExvY2svaW5kZXgnO1xuXG50eXBlIFByb3BzID0ge1xuICBjaGlsZHJlbjogRWxlbWVudDwqPixcbiAgaXNFbmFibGVkOiBib29sZWFuLFxufTtcbnR5cGUgU3RhdGUgPSB7XG4gIHRvdWNoU2Nyb2xsVGFyZ2V0OiBIVE1MRWxlbWVudCB8IG51bGwsXG59O1xuXG4vLyBOT1RFOlxuLy8gV2Ugc2hvdWxkbid0IG5lZWQgdGhpcyBhZnRlciB1cGRhdGluZyB0byBSZWFjdCB2MTYuMy4wLCB3aGljaCBpbnRyb2R1Y2VzOlxuLy8gLSBjcmVhdGVSZWYoKSBodHRwczovL3JlYWN0anMub3JnL2RvY3MvcmVhY3QtYXBpLmh0bWwjcmVhY3RjcmVhdGVyZWZcbi8vIC0gZm9yd2FyZFJlZigpIGh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9yZWFjdC1hcGkuaHRtbCNyZWFjdGZvcndhcmRyZWZcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2Nyb2xsQmxvY2sgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PFByb3BzLCBTdGF0ZT4ge1xuICBzdGF0ZSA9IHsgdG91Y2hTY3JvbGxUYXJnZXQ6IG51bGwgfTtcblxuICAvLyBtdXN0IGJlIGluIHN0YXRlIHRvIHRyaWdnZXIgYSByZS1yZW5kZXIsIG9ubHkgcnVucyBvbmNlIHBlciBpbnN0YW5jZVxuICBnZXRTY3JvbGxUYXJnZXQgPSAocmVmOiBIVE1MRWxlbWVudCkgPT4ge1xuICAgIGlmIChyZWYgPT09IHRoaXMuc3RhdGUudG91Y2hTY3JvbGxUYXJnZXQpIHJldHVybjtcbiAgICB0aGlzLnNldFN0YXRlKHsgdG91Y2hTY3JvbGxUYXJnZXQ6IHJlZiB9KTtcbiAgfTtcblxuICAvLyB0aGlzIHdpbGwgY2xvc2UgdGhlIG1lbnUgd2hlbiBhIHVzZXIgY2xpY2tzIG91dHNpZGVcbiAgYmx1clNlbGVjdElucHV0ID0gKCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50KSB7XG4gICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXIoKTtcbiAgICB9XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgY2hpbGRyZW4sIGlzRW5hYmxlZCB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7IHRvdWNoU2Nyb2xsVGFyZ2V0IH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgLy8gYmFpbCBlYXJseSBpZiBub3QgZW5hYmxlZFxuICAgIGlmICghaXNFbmFibGVkKSByZXR1cm4gY2hpbGRyZW47XG5cbiAgICAvKlxuICAgICAqIERpdlxuICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAqIGJsb2NrcyBzY3JvbGxpbmcgb24gbm9uLWJvZHkgZWxlbWVudHMgYmVoaW5kIHRoZSBtZW51XG5cbiAgICAgKiBOb2RlUmVzb2x2ZXJcbiAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgKiB3ZSBuZWVkIGEgcmVmZXJlbmNlIHRvIHRoZSBzY3JvbGxhYmxlIGVsZW1lbnQgdG8gXCJ1bmxvY2tcIiBzY3JvbGwgb25cbiAgICAgKiBtb2JpbGUgZGV2aWNlc1xuXG4gICAgICogU2Nyb2xsTG9ja1xuICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAqIGFjdHVhbGx5IGRvZXMgdGhlIHNjcm9sbCBsb2NraW5nXG4gICAgICovXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBvbkNsaWNrPXt0aGlzLmJsdXJTZWxlY3RJbnB1dH1cbiAgICAgICAgICBjc3M9e3sgcG9zaXRpb246ICdmaXhlZCcsIGxlZnQ6IDAsIGJvdHRvbTogMCwgcmlnaHQ6IDAsIHRvcDogMCB9fVxuICAgICAgICAvPlxuICAgICAgICA8Tm9kZVJlc29sdmVyIGlubmVyUmVmPXt0aGlzLmdldFNjcm9sbFRhcmdldH0+e2NoaWxkcmVufTwvTm9kZVJlc29sdmVyPlxuICAgICAgICB7dG91Y2hTY3JvbGxUYXJnZXQgPyAoXG4gICAgICAgICAgPFNjcm9sbExvY2sgdG91Y2hTY3JvbGxUYXJnZXQ9e3RvdWNoU2Nyb2xsVGFyZ2V0fSAvPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbn1cbiJdfQ== */\"\n};\n\n// NOTE:\n// We shouldn't need this after updating to React v16.3.0, which introduces:\n// - createRef() https://reactjs.org/docs/react-api.html#reactcreateref\n// - forwardRef() https://reactjs.org/docs/react-api.html#reactforwardref\nvar ScrollBlock =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ScrollBlock, _PureComponent);\n\n function ScrollBlock() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, ScrollBlock);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ScrollBlock)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n touchScrollTarget: null\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getScrollTarget\", function (ref) {\n if (ref === _this.state.touchScrollTarget) return;\n\n _this.setState({\n touchScrollTarget: ref\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"blurSelectInput\", function () {\n if (document.activeElement) {\n document.activeElement.blur();\n }\n });\n\n return _this;\n }\n\n _createClass(ScrollBlock, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n children = _this$props.children,\n isEnabled = _this$props.isEnabled;\n var touchScrollTarget = this.state.touchScrollTarget; // bail early if not enabled\n\n if (!isEnabled) return children;\n /*\n * Div\n * ------------------------------\n * blocks scrolling on non-body elements behind the menu\n * NodeResolver\n * ------------------------------\n * we need a reference to the scrollable element to \"unlock\" scroll on\n * mobile devices\n * ScrollLock\n * ------------------------------\n * actually does the scroll locking\n */\n\n return jsx(\"div\", null, jsx(\"div\", {\n onClick: this.blurSelectInput,\n css: _ref$1\n }), jsx(NodeResolver, {\n innerRef: this.getScrollTarget\n }, children), touchScrollTarget ? jsx(ScrollLock, {\n touchScrollTarget: touchScrollTarget\n }) : null);\n }\n }]);\n\n return ScrollBlock;\n}(PureComponent);\n\nvar ScrollCaptor =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ScrollCaptor, _Component);\n\n function ScrollCaptor() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, ScrollCaptor);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ScrollCaptor)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"isBottom\", false);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"isTop\", false);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"scrollTarget\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"touchStart\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"cancelScroll\", function (event) {\n event.preventDefault();\n event.stopPropagation();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleEventDelta\", function (event, delta) {\n var _this$props = _this.props,\n onBottomArrive = _this$props.onBottomArrive,\n onBottomLeave = _this$props.onBottomLeave,\n onTopArrive = _this$props.onTopArrive,\n onTopLeave = _this$props.onTopLeave;\n var _this$scrollTarget = _this.scrollTarget,\n scrollTop = _this$scrollTarget.scrollTop,\n scrollHeight = _this$scrollTarget.scrollHeight,\n clientHeight = _this$scrollTarget.clientHeight;\n var target = _this.scrollTarget;\n var isDeltaPositive = delta > 0;\n var availableScroll = scrollHeight - clientHeight - scrollTop;\n var shouldCancelScroll = false; // reset bottom/top flags\n\n if (availableScroll > delta && _this.isBottom) {\n if (onBottomLeave) onBottomLeave(event);\n _this.isBottom = false;\n }\n\n if (isDeltaPositive && _this.isTop) {\n if (onTopLeave) onTopLeave(event);\n _this.isTop = false;\n } // bottom limit\n\n\n if (isDeltaPositive && delta > availableScroll) {\n if (onBottomArrive && !_this.isBottom) {\n onBottomArrive(event);\n }\n\n target.scrollTop = scrollHeight;\n shouldCancelScroll = true;\n _this.isBottom = true; // top limit\n } else if (!isDeltaPositive && -delta > scrollTop) {\n if (onTopArrive && !_this.isTop) {\n onTopArrive(event);\n }\n\n target.scrollTop = 0;\n shouldCancelScroll = true;\n _this.isTop = true;\n } // cancel scroll\n\n\n if (shouldCancelScroll) {\n _this.cancelScroll(event);\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onWheel\", function (event) {\n _this.handleEventDelta(event, event.deltaY);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onTouchStart\", function (event) {\n // set touch start so we can calculate touchmove delta\n _this.touchStart = event.changedTouches[0].clientY;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onTouchMove\", function (event) {\n var deltaY = _this.touchStart - event.changedTouches[0].clientY;\n\n _this.handleEventDelta(event, deltaY);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getScrollTarget\", function (ref) {\n _this.scrollTarget = ref;\n });\n\n return _this;\n }\n\n _createClass(ScrollCaptor, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.startListening(this.scrollTarget);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.stopListening(this.scrollTarget);\n }\n }, {\n key: \"startListening\",\n value: function startListening(el) {\n // bail early if no scroll available\n if (!el) return;\n if (el.scrollHeight <= el.clientHeight) return; // all the if statements are to appease Flow 😢\n\n if (typeof el.addEventListener === 'function') {\n el.addEventListener('wheel', this.onWheel, false);\n }\n\n if (typeof el.addEventListener === 'function') {\n el.addEventListener('touchstart', this.onTouchStart, false);\n }\n\n if (typeof el.addEventListener === 'function') {\n el.addEventListener('touchmove', this.onTouchMove, false);\n }\n }\n }, {\n key: \"stopListening\",\n value: function stopListening(el) {\n // bail early if no scroll available\n if (el.scrollHeight <= el.clientHeight) return; // all the if statements are to appease Flow 😢\n\n if (typeof el.removeEventListener === 'function') {\n el.removeEventListener('wheel', this.onWheel, false);\n }\n\n if (typeof el.removeEventListener === 'function') {\n el.removeEventListener('touchstart', this.onTouchStart, false);\n }\n\n if (typeof el.removeEventListener === 'function') {\n el.removeEventListener('touchmove', this.onTouchMove, false);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return React.createElement(NodeResolver, {\n innerRef: this.getScrollTarget\n }, this.props.children);\n }\n }]);\n\n return ScrollCaptor;\n}(Component);\n\nvar ScrollCaptorSwitch =\n/*#__PURE__*/\nfunction (_Component2) {\n _inherits(ScrollCaptorSwitch, _Component2);\n\n function ScrollCaptorSwitch() {\n _classCallCheck(this, ScrollCaptorSwitch);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ScrollCaptorSwitch).apply(this, arguments));\n }\n\n _createClass(ScrollCaptorSwitch, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n isEnabled = _this$props2.isEnabled,\n props = _objectWithoutProperties(_this$props2, [\"isEnabled\"]);\n\n return isEnabled ? React.createElement(ScrollCaptor, props) : this.props.children;\n }\n }]);\n\n return ScrollCaptorSwitch;\n}(Component);\n\n_defineProperty(ScrollCaptorSwitch, \"defaultProps\", {\n isEnabled: true\n});\n\nvar instructionsAriaMessage = function instructionsAriaMessage(event) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var isSearchable = context.isSearchable,\n isMulti = context.isMulti,\n label = context.label,\n isDisabled = context.isDisabled;\n\n switch (event) {\n case 'menu':\n return \"Use Up and Down to choose options\".concat(isDisabled ? '' : ', press Enter to select the currently focused option', \", press Escape to exit the menu, press Tab to select the option and exit the menu.\");\n\n case 'input':\n return \"\".concat(label ? label : 'Select', \" is focused \").concat(isSearchable ? ',type to refine list' : '', \", press Down to open the menu, \").concat(isMulti ? ' press left to focus selected values' : '');\n\n case 'value':\n return 'Use left and right to toggle between focused values, press Backspace to remove the currently focused value';\n }\n};\nvar valueEventAriaMessage = function valueEventAriaMessage(event, context) {\n var value = context.value,\n isDisabled = context.isDisabled;\n if (!value) return;\n\n switch (event) {\n case 'deselect-option':\n case 'pop-value':\n case 'remove-value':\n return \"option \".concat(value, \", deselected.\");\n\n case 'select-option':\n return isDisabled ? \"option \".concat(value, \" is disabled. Select another option.\") : \"option \".concat(value, \", selected.\");\n }\n};\nvar valueFocusAriaMessage = function valueFocusAriaMessage(_ref) {\n var focusedValue = _ref.focusedValue,\n getOptionLabel = _ref.getOptionLabel,\n selectValue = _ref.selectValue;\n return \"value \".concat(getOptionLabel(focusedValue), \" focused, \").concat(selectValue.indexOf(focusedValue) + 1, \" of \").concat(selectValue.length, \".\");\n};\nvar optionFocusAriaMessage = function optionFocusAriaMessage(_ref2) {\n var focusedOption = _ref2.focusedOption,\n getOptionLabel = _ref2.getOptionLabel,\n options = _ref2.options;\n return \"option \".concat(getOptionLabel(focusedOption), \" focused\").concat(focusedOption.isDisabled ? ' disabled' : '', \", \").concat(options.indexOf(focusedOption) + 1, \" of \").concat(options.length, \".\");\n};\nvar resultsAriaMessage = function resultsAriaMessage(_ref3) {\n var inputValue = _ref3.inputValue,\n screenReaderMessage = _ref3.screenReaderMessage;\n return \"\".concat(screenReaderMessage).concat(inputValue ? ' for search term ' + inputValue : '', \".\");\n};\n\nvar formatGroupLabel = function formatGroupLabel(group) {\n return group.label;\n};\nvar getOptionLabel = function getOptionLabel(option) {\n return option.label;\n};\nvar getOptionValue = function getOptionValue(option) {\n return option.value;\n};\nvar isOptionDisabled = function isOptionDisabled(option) {\n return !!option.isDisabled;\n};\n\nvar defaultStyles = {\n clearIndicator: clearIndicatorCSS,\n container: containerCSS,\n control: css,\n dropdownIndicator: dropdownIndicatorCSS,\n group: groupCSS,\n groupHeading: groupHeadingCSS,\n indicatorsContainer: indicatorsContainerCSS,\n indicatorSeparator: indicatorSeparatorCSS,\n input: inputCSS,\n loadingIndicator: loadingIndicatorCSS,\n loadingMessage: loadingMessageCSS,\n menu: menuCSS,\n menuList: menuListCSS,\n menuPortal: menuPortalCSS,\n multiValue: multiValueCSS,\n multiValueLabel: multiValueLabelCSS,\n multiValueRemove: multiValueRemoveCSS,\n noOptionsMessage: noOptionsMessageCSS,\n option: optionCSS,\n placeholder: placeholderCSS,\n singleValue: css$1,\n valueContainer: valueContainerCSS\n}; // Merge Utility\n// Allows consumers to extend a base Select with additional styles\n\nfunction mergeStyles(source) {\n var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // initialize with source styles\n var styles = _objectSpread({}, source); // massage in target styles\n\n\n Object.keys(target).forEach(function (key) {\n if (source[key]) {\n styles[key] = function (rsCss, props) {\n return target[key](source[key](rsCss, props), props);\n };\n } else {\n styles[key] = target[key];\n }\n });\n return styles;\n}\n\nvar colors = {\n primary: '#2684FF',\n primary75: '#4C9AFF',\n primary50: '#B2D4FF',\n primary25: '#DEEBFF',\n danger: '#DE350B',\n dangerLight: '#FFBDAD',\n neutral0: 'hsl(0, 0%, 100%)',\n neutral5: 'hsl(0, 0%, 95%)',\n neutral10: 'hsl(0, 0%, 90%)',\n neutral20: 'hsl(0, 0%, 80%)',\n neutral30: 'hsl(0, 0%, 70%)',\n neutral40: 'hsl(0, 0%, 60%)',\n neutral50: 'hsl(0, 0%, 50%)',\n neutral60: 'hsl(0, 0%, 40%)',\n neutral70: 'hsl(0, 0%, 30%)',\n neutral80: 'hsl(0, 0%, 20%)',\n neutral90: 'hsl(0, 0%, 10%)'\n};\nvar borderRadius = 4;\nvar baseUnit = 4;\n/* Used to calculate consistent margin/padding on elements */\n\nvar controlHeight = 38;\n/* The minimum height of the control */\n\nvar menuGutter = baseUnit * 2;\n/* The amount of space between the control and menu */\n\nvar spacing = {\n baseUnit: baseUnit,\n controlHeight: controlHeight,\n menuGutter: menuGutter\n};\nvar defaultTheme = {\n borderRadius: borderRadius,\n colors: colors,\n spacing: spacing\n};\n\nvar defaultProps = {\n backspaceRemovesValue: true,\n blurInputOnSelect: isTouchCapable(),\n captureMenuScroll: !isTouchCapable(),\n closeMenuOnSelect: true,\n closeMenuOnScroll: false,\n components: {},\n controlShouldRenderValue: true,\n escapeClearsValue: false,\n filterOption: createFilter(),\n formatGroupLabel: formatGroupLabel,\n getOptionLabel: getOptionLabel,\n getOptionValue: getOptionValue,\n isDisabled: false,\n isLoading: false,\n isMulti: false,\n isRtl: false,\n isSearchable: true,\n isOptionDisabled: isOptionDisabled,\n loadingMessage: function loadingMessage() {\n return 'Loading...';\n },\n maxMenuHeight: 300,\n minMenuHeight: 140,\n menuIsOpen: false,\n menuPlacement: 'bottom',\n menuPosition: 'absolute',\n menuShouldBlockScroll: false,\n menuShouldScrollIntoView: !isMobileDevice(),\n noOptionsMessage: function noOptionsMessage() {\n return 'No options';\n },\n openMenuOnFocus: false,\n openMenuOnClick: true,\n options: [],\n pageSize: 5,\n placeholder: 'Select...',\n screenReaderStatus: function screenReaderStatus(_ref) {\n var count = _ref.count;\n return \"\".concat(count, \" result\").concat(count !== 1 ? 's' : '', \" available\");\n },\n styles: {},\n tabIndex: '0',\n tabSelectsValue: true\n};\nvar instanceId = 1;\n\nvar Select =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(Select, _Component);\n\n // Misc. Instance Properties\n // ------------------------------\n // TODO\n // Refs\n // ------------------------------\n // Lifecycle\n // ------------------------------\n function Select(_props) {\n var _this;\n\n _classCallCheck(this, Select);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Select).call(this, _props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n ariaLiveSelection: '',\n ariaLiveContext: '',\n focusedOption: null,\n focusedValue: null,\n inputIsHidden: false,\n isFocused: false,\n menuOptions: {\n render: [],\n focusable: []\n },\n selectValue: []\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"blockOptionHover\", false);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"isComposing\", false);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"clearFocusValueOnUpdate\", false);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"commonProps\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"components\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"hasGroups\", false);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"initialTouchX\", 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"initialTouchY\", 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"inputIsHiddenAfterUpdate\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"instancePrefix\", '');\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"openAfterFocus\", false);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"scrollToFocusedOptionOnUpdate\", false);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"userIsDragging\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"controlRef\", null);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getControlRef\", function (ref) {\n _this.controlRef = ref;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"focusedOptionRef\", null);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getFocusedOptionRef\", function (ref) {\n _this.focusedOptionRef = ref;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"menuListRef\", null);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getMenuListRef\", function (ref) {\n _this.menuListRef = ref;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"inputRef\", null);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getInputRef\", function (ref) {\n _this.inputRef = ref;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"cacheComponents\", function (components) {\n _this.components = defaultComponents({\n components: components\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"focus\", _this.focusInput);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"blur\", _this.blurInput);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onChange\", function (newValue, actionMeta) {\n var _this$props = _this.props,\n onChange = _this$props.onChange,\n name = _this$props.name;\n onChange(newValue, _objectSpread({}, actionMeta, {\n name: name\n }));\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setValue\", function (newValue) {\n var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'set-value';\n var option = arguments.length > 2 ? arguments[2] : undefined;\n var _this$props2 = _this.props,\n closeMenuOnSelect = _this$props2.closeMenuOnSelect,\n isMulti = _this$props2.isMulti;\n\n _this.onInputChange('', {\n action: 'set-value'\n });\n\n if (closeMenuOnSelect) {\n _this.inputIsHiddenAfterUpdate = !isMulti;\n\n _this.onMenuClose();\n } // when the select value should change, we should reset focusedValue\n\n\n _this.clearFocusValueOnUpdate = true;\n\n _this.onChange(newValue, {\n action: action,\n option: option\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"selectOption\", function (newValue) {\n var _this$props3 = _this.props,\n blurInputOnSelect = _this$props3.blurInputOnSelect,\n isMulti = _this$props3.isMulti;\n var selectValue = _this.state.selectValue;\n\n if (isMulti) {\n if (_this.isOptionSelected(newValue, selectValue)) {\n var candidate = _this.getOptionValue(newValue);\n\n _this.setValue(selectValue.filter(function (i) {\n return _this.getOptionValue(i) !== candidate;\n }), 'deselect-option', newValue);\n\n _this.announceAriaLiveSelection({\n event: 'deselect-option',\n context: {\n value: _this.getOptionLabel(newValue)\n }\n });\n } else {\n if (!_this.isOptionDisabled(newValue, selectValue)) {\n _this.setValue([].concat(_toConsumableArray(selectValue), [newValue]), 'select-option', newValue);\n\n _this.announceAriaLiveSelection({\n event: 'select-option',\n context: {\n value: _this.getOptionLabel(newValue)\n }\n });\n } else {\n // announce that option is disabled\n _this.announceAriaLiveSelection({\n event: 'select-option',\n context: {\n value: _this.getOptionLabel(newValue),\n isDisabled: true\n }\n });\n }\n }\n } else {\n if (!_this.isOptionDisabled(newValue, selectValue)) {\n _this.setValue(newValue, 'select-option');\n\n _this.announceAriaLiveSelection({\n event: 'select-option',\n context: {\n value: _this.getOptionLabel(newValue)\n }\n });\n } else {\n // announce that option is disabled\n _this.announceAriaLiveSelection({\n event: 'select-option',\n context: {\n value: _this.getOptionLabel(newValue),\n isDisabled: true\n }\n });\n }\n }\n\n if (blurInputOnSelect) {\n _this.blurInput();\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"removeValue\", function (removedValue) {\n var selectValue = _this.state.selectValue;\n\n var candidate = _this.getOptionValue(removedValue);\n\n var newValue = selectValue.filter(function (i) {\n return _this.getOptionValue(i) !== candidate;\n });\n\n _this.onChange(newValue.length ? newValue : null, {\n action: 'remove-value',\n removedValue: removedValue\n });\n\n _this.announceAriaLiveSelection({\n event: 'remove-value',\n context: {\n value: removedValue ? _this.getOptionLabel(removedValue) : ''\n }\n });\n\n _this.focusInput();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"clearValue\", function () {\n var isMulti = _this.props.isMulti;\n\n _this.onChange(isMulti ? [] : null, {\n action: 'clear'\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"popValue\", function () {\n var selectValue = _this.state.selectValue;\n var lastSelectedValue = selectValue[selectValue.length - 1];\n var newValue = selectValue.slice(0, selectValue.length - 1);\n\n _this.announceAriaLiveSelection({\n event: 'pop-value',\n context: {\n value: lastSelectedValue ? _this.getOptionLabel(lastSelectedValue) : ''\n }\n });\n\n _this.onChange(newValue.length ? newValue : null, {\n action: 'pop-value',\n removedValue: lastSelectedValue\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getOptionLabel\", function (data) {\n return _this.props.getOptionLabel(data);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getOptionValue\", function (data) {\n return _this.props.getOptionValue(data);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getStyles\", function (key, props) {\n var base = defaultStyles[key](props);\n base.boxSizing = 'border-box';\n var custom = _this.props.styles[key];\n return custom ? custom(base, props) : base;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getElementId\", function (element) {\n return \"\".concat(_this.instancePrefix, \"-\").concat(element);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getActiveDescendentId\", function () {\n var menuIsOpen = _this.props.menuIsOpen;\n var _this$state = _this.state,\n menuOptions = _this$state.menuOptions,\n focusedOption = _this$state.focusedOption;\n if (!focusedOption || !menuIsOpen) return undefined;\n var index = menuOptions.focusable.indexOf(focusedOption);\n var option = menuOptions.render[index];\n return option && option.key;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"announceAriaLiveSelection\", function (_ref2) {\n var event = _ref2.event,\n context = _ref2.context;\n\n _this.setState({\n ariaLiveSelection: valueEventAriaMessage(event, context)\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"announceAriaLiveContext\", function (_ref3) {\n var event = _ref3.event,\n context = _ref3.context;\n\n _this.setState({\n ariaLiveContext: instructionsAriaMessage(event, _objectSpread({}, context, {\n label: _this.props['aria-label']\n }))\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onMenuMouseDown\", function (event) {\n if (event.button !== 0) {\n return;\n }\n\n event.stopPropagation();\n event.preventDefault();\n\n _this.focusInput();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onMenuMouseMove\", function (event) {\n _this.blockOptionHover = false;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onControlMouseDown\", function (event) {\n var openMenuOnClick = _this.props.openMenuOnClick;\n\n if (!_this.state.isFocused) {\n if (openMenuOnClick) {\n _this.openAfterFocus = true;\n }\n\n _this.focusInput();\n } else if (!_this.props.menuIsOpen) {\n if (openMenuOnClick) {\n _this.openMenu('first');\n }\n } else {\n //$FlowFixMe\n if (event.target.tagName !== 'INPUT') {\n _this.onMenuClose();\n }\n } //$FlowFixMe\n\n\n if (event.target.tagName !== 'INPUT') {\n event.preventDefault();\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onDropdownIndicatorMouseDown\", function (event) {\n // ignore mouse events that weren't triggered by the primary button\n if (event && event.type === 'mousedown' && event.button !== 0) {\n return;\n }\n\n if (_this.props.isDisabled) return;\n var _this$props4 = _this.props,\n isMulti = _this$props4.isMulti,\n menuIsOpen = _this$props4.menuIsOpen;\n\n _this.focusInput();\n\n if (menuIsOpen) {\n _this.inputIsHiddenAfterUpdate = !isMulti;\n\n _this.onMenuClose();\n } else {\n _this.openMenu('first');\n }\n\n event.preventDefault();\n event.stopPropagation();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClearIndicatorMouseDown\", function (event) {\n // ignore mouse events that weren't triggered by the primary button\n if (event && event.type === 'mousedown' && event.button !== 0) {\n return;\n }\n\n _this.clearValue();\n\n event.stopPropagation();\n _this.openAfterFocus = false;\n setTimeout(function () {\n return _this.focusInput();\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onScroll\", function (event) {\n if (typeof _this.props.closeMenuOnScroll === 'boolean') {\n if (event.target instanceof HTMLElement && isDocumentElement(event.target)) {\n _this.props.onMenuClose();\n }\n } else if (typeof _this.props.closeMenuOnScroll === 'function') {\n if (_this.props.closeMenuOnScroll(event)) {\n _this.props.onMenuClose();\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onCompositionStart\", function () {\n _this.isComposing = true;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onCompositionEnd\", function () {\n _this.isComposing = false;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onTouchStart\", function (_ref4) {\n var touches = _ref4.touches;\n var touch = touches.item(0);\n\n if (!touch) {\n return;\n }\n\n _this.initialTouchX = touch.clientX;\n _this.initialTouchY = touch.clientY;\n _this.userIsDragging = false;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onTouchMove\", function (_ref5) {\n var touches = _ref5.touches;\n var touch = touches.item(0);\n\n if (!touch) {\n return;\n }\n\n var deltaX = Math.abs(touch.clientX - _this.initialTouchX);\n var deltaY = Math.abs(touch.clientY - _this.initialTouchY);\n var moveThreshold = 5;\n _this.userIsDragging = deltaX > moveThreshold || deltaY > moveThreshold;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onTouchEnd\", function (event) {\n if (_this.userIsDragging) return; // close the menu if the user taps outside\n // we're checking on event.target here instead of event.currentTarget, because we want to assert information\n // on events on child elements, not the document (which we've attached this handler to).\n\n if (_this.controlRef && !_this.controlRef.contains(event.target) && _this.menuListRef && !_this.menuListRef.contains(event.target)) {\n _this.blurInput();\n } // reset move vars\n\n\n _this.initialTouchX = 0;\n _this.initialTouchY = 0;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onControlTouchEnd\", function (event) {\n if (_this.userIsDragging) return;\n\n _this.onControlMouseDown(event);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onClearIndicatorTouchEnd\", function (event) {\n if (_this.userIsDragging) return;\n\n _this.onClearIndicatorMouseDown(event);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onDropdownIndicatorTouchEnd\", function (event) {\n if (_this.userIsDragging) return;\n\n _this.onDropdownIndicatorMouseDown(event);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleInputChange\", function (event) {\n var inputValue = event.currentTarget.value;\n _this.inputIsHiddenAfterUpdate = false;\n\n _this.onInputChange(inputValue, {\n action: 'input-change'\n });\n\n _this.onMenuOpen();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onInputFocus\", function (event) {\n var _this$props5 = _this.props,\n isSearchable = _this$props5.isSearchable,\n isMulti = _this$props5.isMulti;\n\n if (_this.props.onFocus) {\n _this.props.onFocus(event);\n }\n\n _this.inputIsHiddenAfterUpdate = false;\n\n _this.announceAriaLiveContext({\n event: 'input',\n context: {\n isSearchable: isSearchable,\n isMulti: isMulti\n }\n });\n\n _this.setState({\n isFocused: true\n });\n\n if (_this.openAfterFocus || _this.props.openMenuOnFocus) {\n _this.openMenu('first');\n }\n\n _this.openAfterFocus = false;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onInputBlur\", function (event) {\n if (_this.menuListRef && _this.menuListRef.contains(document.activeElement)) {\n _this.inputRef.focus();\n\n return;\n }\n\n if (_this.props.onBlur) {\n _this.props.onBlur(event);\n }\n\n _this.onInputChange('', {\n action: 'input-blur'\n });\n\n _this.onMenuClose();\n\n _this.setState({\n focusedValue: null,\n isFocused: false\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onOptionHover\", function (focusedOption) {\n if (_this.blockOptionHover || _this.state.focusedOption === focusedOption) {\n return;\n }\n\n _this.setState({\n focusedOption: focusedOption\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"shouldHideSelectedOptions\", function () {\n var _this$props6 = _this.props,\n hideSelectedOptions = _this$props6.hideSelectedOptions,\n isMulti = _this$props6.isMulti;\n if (hideSelectedOptions === undefined) return isMulti;\n return hideSelectedOptions;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onKeyDown\", function (event) {\n var _this$props7 = _this.props,\n isMulti = _this$props7.isMulti,\n backspaceRemovesValue = _this$props7.backspaceRemovesValue,\n escapeClearsValue = _this$props7.escapeClearsValue,\n inputValue = _this$props7.inputValue,\n isClearable = _this$props7.isClearable,\n isDisabled = _this$props7.isDisabled,\n menuIsOpen = _this$props7.menuIsOpen,\n onKeyDown = _this$props7.onKeyDown,\n tabSelectsValue = _this$props7.tabSelectsValue,\n openMenuOnFocus = _this$props7.openMenuOnFocus;\n var _this$state2 = _this.state,\n focusedOption = _this$state2.focusedOption,\n focusedValue = _this$state2.focusedValue,\n selectValue = _this$state2.selectValue;\n if (isDisabled) return;\n\n if (typeof onKeyDown === 'function') {\n onKeyDown(event);\n\n if (event.defaultPrevented) {\n return;\n }\n } // Block option hover events when the user has just pressed a key\n\n\n _this.blockOptionHover = true;\n\n switch (event.key) {\n case 'ArrowLeft':\n if (!isMulti || inputValue) return;\n\n _this.focusValue('previous');\n\n break;\n\n case 'ArrowRight':\n if (!isMulti || inputValue) return;\n\n _this.focusValue('next');\n\n break;\n\n case 'Delete':\n case 'Backspace':\n if (inputValue) return;\n\n if (focusedValue) {\n _this.removeValue(focusedValue);\n } else {\n if (!backspaceRemovesValue) return;\n\n if (isMulti) {\n _this.popValue();\n } else if (isClearable) {\n _this.clearValue();\n }\n }\n\n break;\n\n case 'Tab':\n if (_this.isComposing) return;\n\n if (event.shiftKey || !menuIsOpen || !tabSelectsValue || !focusedOption || // don't capture the event if the menu opens on focus and the focused\n // option is already selected; it breaks the flow of navigation\n openMenuOnFocus && _this.isOptionSelected(focusedOption, selectValue)) {\n return;\n }\n\n _this.selectOption(focusedOption);\n\n break;\n\n case 'Enter':\n if (event.keyCode === 229) {\n // ignore the keydown event from an Input Method Editor(IME)\n // ref. https://www.w3.org/TR/uievents/#determine-keydown-keyup-keyCode\n break;\n }\n\n if (menuIsOpen) {\n if (!focusedOption) return;\n if (_this.isComposing) return;\n\n _this.selectOption(focusedOption);\n\n break;\n }\n\n return;\n\n case 'Escape':\n if (menuIsOpen) {\n _this.inputIsHiddenAfterUpdate = false;\n\n _this.onInputChange('', {\n action: 'menu-close'\n });\n\n _this.onMenuClose();\n } else if (isClearable && escapeClearsValue) {\n _this.clearValue();\n }\n\n break;\n\n case ' ':\n // space\n if (inputValue) {\n return;\n }\n\n if (!menuIsOpen) {\n _this.openMenu('first');\n\n break;\n }\n\n if (!focusedOption) return;\n\n _this.selectOption(focusedOption);\n\n break;\n\n case 'ArrowUp':\n if (menuIsOpen) {\n _this.focusOption('up');\n } else {\n _this.openMenu('last');\n }\n\n break;\n\n case 'ArrowDown':\n if (menuIsOpen) {\n _this.focusOption('down');\n } else {\n _this.openMenu('first');\n }\n\n break;\n\n case 'PageUp':\n if (!menuIsOpen) return;\n\n _this.focusOption('pageup');\n\n break;\n\n case 'PageDown':\n if (!menuIsOpen) return;\n\n _this.focusOption('pagedown');\n\n break;\n\n case 'Home':\n if (!menuIsOpen) return;\n\n _this.focusOption('first');\n\n break;\n\n case 'End':\n if (!menuIsOpen) return;\n\n _this.focusOption('last');\n\n break;\n\n default:\n return;\n }\n\n event.preventDefault();\n });\n\n var value = _props.value;\n _this.cacheComponents = memoizeOne(_this.cacheComponents, exportedEqual).bind(_assertThisInitialized(_assertThisInitialized(_this)));\n\n _this.cacheComponents(_props.components);\n\n _this.instancePrefix = 'react-select-' + (_this.props.instanceId || ++instanceId);\n\n var _selectValue = cleanValue(value);\n\n var _menuOptions = _this.buildMenuOptions(_props, _selectValue);\n\n _this.state.menuOptions = _menuOptions;\n _this.state.selectValue = _selectValue;\n return _this;\n }\n\n _createClass(Select, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.startListeningComposition();\n this.startListeningToTouch();\n\n if (this.props.closeMenuOnScroll && document && document.addEventListener) {\n // Listen to all scroll events, and filter them out inside of 'onScroll'\n document.addEventListener('scroll', this.onScroll, true);\n }\n\n if (this.props.autoFocus) {\n this.focusInput();\n }\n }\n }, {\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(nextProps) {\n var _this$props8 = this.props,\n options = _this$props8.options,\n value = _this$props8.value,\n inputValue = _this$props8.inputValue; // re-cache custom components\n\n this.cacheComponents(nextProps.components); // rebuild the menu options\n\n if (nextProps.value !== value || nextProps.options !== options || nextProps.inputValue !== inputValue) {\n var selectValue = cleanValue(nextProps.value);\n var menuOptions = this.buildMenuOptions(nextProps, selectValue);\n var focusedValue = this.getNextFocusedValue(selectValue);\n var focusedOption = this.getNextFocusedOption(menuOptions.focusable);\n this.setState({\n menuOptions: menuOptions,\n selectValue: selectValue,\n focusedOption: focusedOption,\n focusedValue: focusedValue\n });\n } // some updates should toggle the state of the input visibility\n\n\n if (this.inputIsHiddenAfterUpdate != null) {\n this.setState({\n inputIsHidden: this.inputIsHiddenAfterUpdate\n });\n delete this.inputIsHiddenAfterUpdate;\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this$props9 = this.props,\n isDisabled = _this$props9.isDisabled,\n menuIsOpen = _this$props9.menuIsOpen;\n var isFocused = this.state.isFocused;\n\n if ( // ensure focus is restored correctly when the control becomes enabled\n isFocused && !isDisabled && prevProps.isDisabled || // ensure focus is on the Input when the menu opens\n isFocused && menuIsOpen && !prevProps.menuIsOpen) {\n this.focusInput();\n } // scroll the focused option into view if necessary\n\n\n if (this.menuListRef && this.focusedOptionRef && this.scrollToFocusedOptionOnUpdate) {\n scrollIntoView(this.menuListRef, this.focusedOptionRef);\n }\n\n this.scrollToFocusedOptionOnUpdate = false;\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.stopListeningComposition();\n this.stopListeningToTouch();\n document.removeEventListener('scroll', this.onScroll, true);\n }\n }, {\n key: \"onMenuOpen\",\n // ==============================\n // Consumer Handlers\n // ==============================\n value: function onMenuOpen() {\n this.props.onMenuOpen();\n }\n }, {\n key: \"onMenuClose\",\n value: function onMenuClose() {\n var _this$props10 = this.props,\n isSearchable = _this$props10.isSearchable,\n isMulti = _this$props10.isMulti;\n this.announceAriaLiveContext({\n event: 'input',\n context: {\n isSearchable: isSearchable,\n isMulti: isMulti\n }\n });\n this.onInputChange('', {\n action: 'menu-close'\n });\n this.props.onMenuClose();\n }\n }, {\n key: \"onInputChange\",\n value: function onInputChange(newValue, actionMeta) {\n this.props.onInputChange(newValue, actionMeta);\n } // ==============================\n // Methods\n // ==============================\n\n }, {\n key: \"focusInput\",\n value: function focusInput() {\n if (!this.inputRef) return;\n this.inputRef.focus();\n }\n }, {\n key: \"blurInput\",\n value: function blurInput() {\n if (!this.inputRef) return;\n this.inputRef.blur();\n } // aliased for consumers\n\n }, {\n key: \"openMenu\",\n value: function openMenu(focusOption) {\n var _this$state3 = this.state,\n menuOptions = _this$state3.menuOptions,\n selectValue = _this$state3.selectValue,\n isFocused = _this$state3.isFocused;\n var isMulti = this.props.isMulti;\n var openAtIndex = focusOption === 'first' ? 0 : menuOptions.focusable.length - 1;\n\n if (!isMulti) {\n var selectedIndex = menuOptions.focusable.indexOf(selectValue[0]);\n\n if (selectedIndex > -1) {\n openAtIndex = selectedIndex;\n }\n } // only scroll if the menu isn't already open\n\n\n this.scrollToFocusedOptionOnUpdate = !(isFocused && this.menuListRef);\n this.inputIsHiddenAfterUpdate = false;\n this.onMenuOpen();\n this.setState({\n focusedValue: null,\n focusedOption: menuOptions.focusable[openAtIndex]\n });\n this.announceAriaLiveContext({\n event: 'menu'\n });\n }\n }, {\n key: \"focusValue\",\n value: function focusValue(direction) {\n var _this$props11 = this.props,\n isMulti = _this$props11.isMulti,\n isSearchable = _this$props11.isSearchable;\n var _this$state4 = this.state,\n selectValue = _this$state4.selectValue,\n focusedValue = _this$state4.focusedValue; // Only multiselects support value focusing\n\n if (!isMulti) return;\n this.setState({\n focusedOption: null\n });\n var focusedIndex = selectValue.indexOf(focusedValue);\n\n if (!focusedValue) {\n focusedIndex = -1;\n this.announceAriaLiveContext({\n event: 'value'\n });\n }\n\n var lastIndex = selectValue.length - 1;\n var nextFocus = -1;\n if (!selectValue.length) return;\n\n switch (direction) {\n case 'previous':\n if (focusedIndex === 0) {\n // don't cycle from the start to the end\n nextFocus = 0;\n } else if (focusedIndex === -1) {\n // if nothing is focused, focus the last value first\n nextFocus = lastIndex;\n } else {\n nextFocus = focusedIndex - 1;\n }\n\n break;\n\n case 'next':\n if (focusedIndex > -1 && focusedIndex < lastIndex) {\n nextFocus = focusedIndex + 1;\n }\n\n break;\n }\n\n if (nextFocus === -1) {\n this.announceAriaLiveContext({\n event: 'input',\n context: {\n isSearchable: isSearchable,\n isMulti: isMulti\n }\n });\n }\n\n this.setState({\n inputIsHidden: nextFocus === -1 ? false : true,\n focusedValue: selectValue[nextFocus]\n });\n }\n }, {\n key: \"focusOption\",\n value: function focusOption() {\n var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'first';\n var pageSize = this.props.pageSize;\n var _this$state5 = this.state,\n focusedOption = _this$state5.focusedOption,\n menuOptions = _this$state5.menuOptions;\n var options = menuOptions.focusable;\n if (!options.length) return;\n var nextFocus = 0; // handles 'first'\n\n var focusedIndex = options.indexOf(focusedOption);\n\n if (!focusedOption) {\n focusedIndex = -1;\n this.announceAriaLiveContext({\n event: 'menu'\n });\n }\n\n if (direction === 'up') {\n nextFocus = focusedIndex > 0 ? focusedIndex - 1 : options.length - 1;\n } else if (direction === 'down') {\n nextFocus = (focusedIndex + 1) % options.length;\n } else if (direction === 'pageup') {\n nextFocus = focusedIndex - pageSize;\n if (nextFocus < 0) nextFocus = 0;\n } else if (direction === 'pagedown') {\n nextFocus = focusedIndex + pageSize;\n if (nextFocus > options.length - 1) nextFocus = options.length - 1;\n } else if (direction === 'last') {\n nextFocus = options.length - 1;\n }\n\n this.scrollToFocusedOptionOnUpdate = true;\n this.setState({\n focusedOption: options[nextFocus],\n focusedValue: null\n });\n this.announceAriaLiveContext({\n event: 'menu',\n context: {\n isDisabled: isOptionDisabled(options[nextFocus])\n }\n });\n }\n }, {\n key: \"getTheme\",\n // ==============================\n // Getters\n // ==============================\n value: function getTheme() {\n // Use the default theme if there are no customizations.\n if (!this.props.theme) {\n return defaultTheme;\n } // If the theme prop is a function, assume the function\n // knows how to merge the passed-in default theme with\n // its own modifications.\n\n\n if (typeof this.props.theme === 'function') {\n return this.props.theme(defaultTheme);\n } // Otherwise, if a plain theme object was passed in,\n // overlay it with the default theme.\n\n\n return _objectSpread({}, defaultTheme, this.props.theme);\n }\n }, {\n key: \"getCommonProps\",\n value: function getCommonProps() {\n var clearValue = this.clearValue,\n getStyles = this.getStyles,\n setValue = this.setValue,\n selectOption = this.selectOption,\n props = this.props;\n var classNamePrefix = props.classNamePrefix,\n isMulti = props.isMulti,\n isRtl = props.isRtl,\n options = props.options;\n var selectValue = this.state.selectValue;\n var hasValue = this.hasValue();\n\n var getValue = function getValue() {\n return selectValue;\n };\n\n var cx = classNames.bind(null, classNamePrefix);\n return {\n cx: cx,\n clearValue: clearValue,\n getStyles: getStyles,\n getValue: getValue,\n hasValue: hasValue,\n isMulti: isMulti,\n isRtl: isRtl,\n options: options,\n selectOption: selectOption,\n setValue: setValue,\n selectProps: props,\n theme: this.getTheme()\n };\n }\n }, {\n key: \"getNextFocusedValue\",\n value: function getNextFocusedValue(nextSelectValue) {\n if (this.clearFocusValueOnUpdate) {\n this.clearFocusValueOnUpdate = false;\n return null;\n }\n\n var _this$state6 = this.state,\n focusedValue = _this$state6.focusedValue,\n lastSelectValue = _this$state6.selectValue;\n var lastFocusedIndex = lastSelectValue.indexOf(focusedValue);\n\n if (lastFocusedIndex > -1) {\n var nextFocusedIndex = nextSelectValue.indexOf(focusedValue);\n\n if (nextFocusedIndex > -1) {\n // the focused value is still in the selectValue, return it\n return focusedValue;\n } else if (lastFocusedIndex < nextSelectValue.length) {\n // the focusedValue is not present in the next selectValue array by\n // reference, so return the new value at the same index\n return nextSelectValue[lastFocusedIndex];\n }\n }\n\n return null;\n }\n }, {\n key: \"getNextFocusedOption\",\n value: function getNextFocusedOption(options) {\n var lastFocusedOption = this.state.focusedOption;\n return lastFocusedOption && options.indexOf(lastFocusedOption) > -1 ? lastFocusedOption : options[0];\n }\n }, {\n key: \"hasValue\",\n value: function hasValue() {\n var selectValue = this.state.selectValue;\n return selectValue.length > 0;\n }\n }, {\n key: \"hasOptions\",\n value: function hasOptions() {\n return !!this.state.menuOptions.render.length;\n }\n }, {\n key: \"countOptions\",\n value: function countOptions() {\n return this.state.menuOptions.focusable.length;\n }\n }, {\n key: \"isClearable\",\n value: function isClearable() {\n var _this$props12 = this.props,\n isClearable = _this$props12.isClearable,\n isMulti = _this$props12.isMulti; // single select, by default, IS NOT clearable\n // multi select, by default, IS clearable\n\n if (isClearable === undefined) return isMulti;\n return isClearable;\n }\n }, {\n key: \"isOptionDisabled\",\n value: function isOptionDisabled(option, selectValue) {\n return typeof this.props.isOptionDisabled === 'function' ? this.props.isOptionDisabled(option, selectValue) : false;\n }\n }, {\n key: \"isOptionSelected\",\n value: function isOptionSelected(option, selectValue) {\n var _this2 = this;\n\n if (selectValue.indexOf(option) > -1) return true;\n\n if (typeof this.props.isOptionSelected === 'function') {\n return this.props.isOptionSelected(option, selectValue);\n }\n\n var candidate = this.getOptionValue(option);\n return selectValue.some(function (i) {\n return _this2.getOptionValue(i) === candidate;\n });\n }\n }, {\n key: \"filterOption\",\n value: function filterOption(option, inputValue) {\n return this.props.filterOption ? this.props.filterOption(option, inputValue) : true;\n }\n }, {\n key: \"formatOptionLabel\",\n value: function formatOptionLabel(data, context) {\n if (typeof this.props.formatOptionLabel === 'function') {\n var inputValue = this.props.inputValue;\n var selectValue = this.state.selectValue;\n return this.props.formatOptionLabel(data, {\n context: context,\n inputValue: inputValue,\n selectValue: selectValue\n });\n } else {\n return this.getOptionLabel(data);\n }\n }\n }, {\n key: \"formatGroupLabel\",\n value: function formatGroupLabel(data) {\n return this.props.formatGroupLabel(data);\n } // ==============================\n // Mouse Handlers\n // ==============================\n\n }, {\n key: \"startListeningComposition\",\n // ==============================\n // Composition Handlers\n // ==============================\n value: function startListeningComposition() {\n if (document && document.addEventListener) {\n document.addEventListener('compositionstart', this.onCompositionStart, false);\n document.addEventListener('compositionend', this.onCompositionEnd, false);\n }\n }\n }, {\n key: \"stopListeningComposition\",\n value: function stopListeningComposition() {\n if (document && document.removeEventListener) {\n document.removeEventListener('compositionstart', this.onCompositionStart);\n document.removeEventListener('compositionend', this.onCompositionEnd);\n }\n }\n }, {\n key: \"startListeningToTouch\",\n // ==============================\n // Touch Handlers\n // ==============================\n value: function startListeningToTouch() {\n if (document && document.addEventListener) {\n document.addEventListener('touchstart', this.onTouchStart, false);\n document.addEventListener('touchmove', this.onTouchMove, false);\n document.addEventListener('touchend', this.onTouchEnd, false);\n }\n }\n }, {\n key: \"stopListeningToTouch\",\n value: function stopListeningToTouch() {\n if (document && document.removeEventListener) {\n document.removeEventListener('touchstart', this.onTouchStart);\n document.removeEventListener('touchmove', this.onTouchMove);\n document.removeEventListener('touchend', this.onTouchEnd);\n }\n }\n }, {\n key: \"buildMenuOptions\",\n // ==============================\n // Menu Options\n // ==============================\n value: function buildMenuOptions(props, selectValue) {\n var _this3 = this;\n\n var _props$inputValue = props.inputValue,\n inputValue = _props$inputValue === void 0 ? '' : _props$inputValue,\n options = props.options;\n\n var toOption = function toOption(option, id) {\n var isDisabled = _this3.isOptionDisabled(option, selectValue);\n\n var isSelected = _this3.isOptionSelected(option, selectValue);\n\n var label = _this3.getOptionLabel(option);\n\n var value = _this3.getOptionValue(option);\n\n if (_this3.shouldHideSelectedOptions() && isSelected || !_this3.filterOption({\n label: label,\n value: value,\n data: option\n }, inputValue)) {\n return;\n }\n\n var onHover = isDisabled ? undefined : function () {\n return _this3.onOptionHover(option);\n };\n var onSelect = isDisabled ? undefined : function () {\n return _this3.selectOption(option);\n };\n var optionId = \"\".concat(_this3.getElementId('option'), \"-\").concat(id);\n return {\n innerProps: {\n id: optionId,\n onClick: onSelect,\n onMouseMove: onHover,\n onMouseOver: onHover,\n tabIndex: -1\n },\n data: option,\n isDisabled: isDisabled,\n isSelected: isSelected,\n key: optionId,\n label: label,\n type: 'option',\n value: value\n };\n };\n\n return options.reduce(function (acc, item, itemIndex) {\n if (item.options) {\n // TODO needs a tidier implementation\n if (!_this3.hasGroups) _this3.hasGroups = true;\n var items = item.options;\n var children = items.map(function (child, i) {\n var option = toOption(child, \"\".concat(itemIndex, \"-\").concat(i));\n if (option) acc.focusable.push(child);\n return option;\n }).filter(Boolean);\n\n if (children.length) {\n var groupId = \"\".concat(_this3.getElementId('group'), \"-\").concat(itemIndex);\n acc.render.push({\n type: 'group',\n key: groupId,\n data: item,\n options: children\n });\n }\n } else {\n var option = toOption(item, \"\".concat(itemIndex));\n\n if (option) {\n acc.render.push(option);\n acc.focusable.push(item);\n }\n }\n\n return acc;\n }, {\n render: [],\n focusable: []\n });\n } // ==============================\n // Renderers\n // ==============================\n\n }, {\n key: \"constructAriaLiveMessage\",\n value: function constructAriaLiveMessage() {\n var _this$state7 = this.state,\n ariaLiveContext = _this$state7.ariaLiveContext,\n selectValue = _this$state7.selectValue,\n focusedValue = _this$state7.focusedValue,\n focusedOption = _this$state7.focusedOption;\n var _this$props13 = this.props,\n options = _this$props13.options,\n menuIsOpen = _this$props13.menuIsOpen,\n inputValue = _this$props13.inputValue,\n screenReaderStatus = _this$props13.screenReaderStatus; // An aria live message representing the currently focused value in the select.\n\n var focusedValueMsg = focusedValue ? valueFocusAriaMessage({\n focusedValue: focusedValue,\n getOptionLabel: this.getOptionLabel,\n selectValue: selectValue\n }) : ''; // An aria live message representing the currently focused option in the select.\n\n var focusedOptionMsg = focusedOption && menuIsOpen ? optionFocusAriaMessage({\n focusedOption: focusedOption,\n getOptionLabel: this.getOptionLabel,\n options: options\n }) : ''; // An aria live message representing the set of focusable results and current searchterm/inputvalue.\n\n var resultsMsg = resultsAriaMessage({\n inputValue: inputValue,\n screenReaderMessage: screenReaderStatus({\n count: this.countOptions()\n })\n });\n return \"\".concat(focusedValueMsg, \" \").concat(focusedOptionMsg, \" \").concat(resultsMsg, \" \").concat(ariaLiveContext);\n }\n }, {\n key: \"renderInput\",\n value: function renderInput() {\n var _this$props14 = this.props,\n isDisabled = _this$props14.isDisabled,\n isSearchable = _this$props14.isSearchable,\n inputId = _this$props14.inputId,\n inputValue = _this$props14.inputValue,\n tabIndex = _this$props14.tabIndex;\n var Input = this.components.Input;\n var inputIsHidden = this.state.inputIsHidden;\n var id = inputId || this.getElementId('input');\n\n if (!isSearchable) {\n // use a dummy input to maintain focus/blur functionality\n return React.createElement(DummyInput, {\n id: id,\n innerRef: this.getInputRef,\n onBlur: this.onInputBlur,\n onChange: noop,\n onFocus: this.onInputFocus,\n readOnly: true,\n disabled: isDisabled,\n tabIndex: tabIndex,\n value: \"\"\n });\n } // aria attributes makes the JSX \"noisy\", separated for clarity\n\n\n var ariaAttributes = {\n 'aria-autocomplete': 'list',\n 'aria-label': this.props['aria-label'],\n 'aria-labelledby': this.props['aria-labelledby']\n };\n var _this$commonProps = this.commonProps,\n cx = _this$commonProps.cx,\n theme = _this$commonProps.theme,\n selectProps = _this$commonProps.selectProps;\n return React.createElement(Input, _extends({\n autoCapitalize: \"none\",\n autoComplete: \"off\",\n autoCorrect: \"off\",\n cx: cx,\n getStyles: this.getStyles,\n id: id,\n innerRef: this.getInputRef,\n isDisabled: isDisabled,\n isHidden: inputIsHidden,\n onBlur: this.onInputBlur,\n onChange: this.handleInputChange,\n onFocus: this.onInputFocus,\n selectProps: selectProps,\n spellCheck: \"false\",\n tabIndex: tabIndex,\n theme: theme,\n type: \"text\",\n value: inputValue\n }, ariaAttributes));\n }\n }, {\n key: \"renderPlaceholderOrValue\",\n value: function renderPlaceholderOrValue() {\n var _this4 = this;\n\n var _this$components = this.components,\n MultiValue = _this$components.MultiValue,\n MultiValueContainer = _this$components.MultiValueContainer,\n MultiValueLabel = _this$components.MultiValueLabel,\n MultiValueRemove = _this$components.MultiValueRemove,\n SingleValue = _this$components.SingleValue,\n Placeholder = _this$components.Placeholder;\n var commonProps = this.commonProps;\n var _this$props15 = this.props,\n controlShouldRenderValue = _this$props15.controlShouldRenderValue,\n isDisabled = _this$props15.isDisabled,\n isMulti = _this$props15.isMulti,\n inputValue = _this$props15.inputValue,\n placeholder = _this$props15.placeholder;\n var _this$state8 = this.state,\n selectValue = _this$state8.selectValue,\n focusedValue = _this$state8.focusedValue,\n isFocused = _this$state8.isFocused;\n\n if (!this.hasValue() || !controlShouldRenderValue) {\n return inputValue ? null : React.createElement(Placeholder, _extends({}, commonProps, {\n key: \"placeholder\",\n isDisabled: isDisabled,\n isFocused: isFocused\n }), placeholder);\n }\n\n if (isMulti) {\n var selectValues = selectValue.map(function (opt) {\n var isOptionFocused = opt === focusedValue;\n return React.createElement(MultiValue, _extends({}, commonProps, {\n components: {\n Container: MultiValueContainer,\n Label: MultiValueLabel,\n Remove: MultiValueRemove\n },\n isFocused: isOptionFocused,\n isDisabled: isDisabled,\n key: _this4.getOptionValue(opt),\n removeProps: {\n onClick: function onClick() {\n return _this4.removeValue(opt);\n },\n onTouchEnd: function onTouchEnd() {\n return _this4.removeValue(opt);\n },\n onMouseDown: function onMouseDown(e) {\n e.preventDefault();\n e.stopPropagation();\n }\n },\n data: opt\n }), _this4.formatOptionLabel(opt, 'value'));\n });\n return selectValues;\n }\n\n if (inputValue) {\n return null;\n }\n\n var singleValue = selectValue[0];\n return React.createElement(SingleValue, _extends({}, commonProps, {\n data: singleValue,\n isDisabled: isDisabled\n }), this.formatOptionLabel(singleValue, 'value'));\n }\n }, {\n key: \"renderClearIndicator\",\n value: function renderClearIndicator() {\n var ClearIndicator = this.components.ClearIndicator;\n var commonProps = this.commonProps;\n var _this$props16 = this.props,\n isDisabled = _this$props16.isDisabled,\n isLoading = _this$props16.isLoading;\n var isFocused = this.state.isFocused;\n\n if (!this.isClearable() || !ClearIndicator || isDisabled || !this.hasValue() || isLoading) {\n return null;\n }\n\n var innerProps = {\n onMouseDown: this.onClearIndicatorMouseDown,\n onTouchEnd: this.onClearIndicatorTouchEnd,\n 'aria-hidden': 'true'\n };\n return React.createElement(ClearIndicator, _extends({}, commonProps, {\n innerProps: innerProps,\n isFocused: isFocused\n }));\n }\n }, {\n key: \"renderLoadingIndicator\",\n value: function renderLoadingIndicator() {\n var LoadingIndicator = this.components.LoadingIndicator;\n var commonProps = this.commonProps;\n var _this$props17 = this.props,\n isDisabled = _this$props17.isDisabled,\n isLoading = _this$props17.isLoading;\n var isFocused = this.state.isFocused;\n if (!LoadingIndicator || !isLoading) return null;\n var innerProps = {\n 'aria-hidden': 'true'\n };\n return React.createElement(LoadingIndicator, _extends({}, commonProps, {\n innerProps: innerProps,\n isDisabled: isDisabled,\n isFocused: isFocused\n }));\n }\n }, {\n key: \"renderIndicatorSeparator\",\n value: function renderIndicatorSeparator() {\n var _this$components2 = this.components,\n DropdownIndicator = _this$components2.DropdownIndicator,\n IndicatorSeparator = _this$components2.IndicatorSeparator; // separator doesn't make sense without the dropdown indicator\n\n if (!DropdownIndicator || !IndicatorSeparator) return null;\n var commonProps = this.commonProps;\n var isDisabled = this.props.isDisabled;\n var isFocused = this.state.isFocused;\n return React.createElement(IndicatorSeparator, _extends({}, commonProps, {\n isDisabled: isDisabled,\n isFocused: isFocused\n }));\n }\n }, {\n key: \"renderDropdownIndicator\",\n value: function renderDropdownIndicator() {\n var DropdownIndicator = this.components.DropdownIndicator;\n if (!DropdownIndicator) return null;\n var commonProps = this.commonProps;\n var isDisabled = this.props.isDisabled;\n var isFocused = this.state.isFocused;\n var innerProps = {\n onMouseDown: this.onDropdownIndicatorMouseDown,\n onTouchEnd: this.onDropdownIndicatorTouchEnd,\n 'aria-hidden': 'true'\n };\n return React.createElement(DropdownIndicator, _extends({}, commonProps, {\n innerProps: innerProps,\n isDisabled: isDisabled,\n isFocused: isFocused\n }));\n }\n }, {\n key: \"renderMenu\",\n value: function renderMenu() {\n var _this5 = this;\n\n var _this$components3 = this.components,\n Group = _this$components3.Group,\n GroupHeading = _this$components3.GroupHeading,\n Menu = _this$components3.Menu,\n MenuList = _this$components3.MenuList,\n MenuPortal = _this$components3.MenuPortal,\n LoadingMessage = _this$components3.LoadingMessage,\n NoOptionsMessage = _this$components3.NoOptionsMessage,\n Option = _this$components3.Option;\n var commonProps = this.commonProps;\n var _this$state9 = this.state,\n focusedOption = _this$state9.focusedOption,\n menuOptions = _this$state9.menuOptions;\n var _this$props18 = this.props,\n captureMenuScroll = _this$props18.captureMenuScroll,\n inputValue = _this$props18.inputValue,\n isLoading = _this$props18.isLoading,\n loadingMessage = _this$props18.loadingMessage,\n minMenuHeight = _this$props18.minMenuHeight,\n maxMenuHeight = _this$props18.maxMenuHeight,\n menuIsOpen = _this$props18.menuIsOpen,\n menuPlacement = _this$props18.menuPlacement,\n menuPosition = _this$props18.menuPosition,\n menuPortalTarget = _this$props18.menuPortalTarget,\n menuShouldBlockScroll = _this$props18.menuShouldBlockScroll,\n menuShouldScrollIntoView = _this$props18.menuShouldScrollIntoView,\n noOptionsMessage = _this$props18.noOptionsMessage,\n onMenuScrollToTop = _this$props18.onMenuScrollToTop,\n onMenuScrollToBottom = _this$props18.onMenuScrollToBottom;\n if (!menuIsOpen) return null; // TODO: Internal Option Type here\n\n var render = function render(props) {\n // for performance, the menu options in state aren't changed when the\n // focused option changes so we calculate additional props based on that\n var isFocused = focusedOption === props.data;\n props.innerRef = isFocused ? _this5.getFocusedOptionRef : undefined;\n return React.createElement(Option, _extends({}, commonProps, props, {\n isFocused: isFocused\n }), _this5.formatOptionLabel(props.data, 'menu'));\n };\n\n var menuUI;\n\n if (this.hasOptions()) {\n menuUI = menuOptions.render.map(function (item) {\n if (item.type === 'group') {\n var type = item.type,\n group = _objectWithoutProperties(item, [\"type\"]);\n\n var headingId = \"\".concat(item.key, \"-heading\");\n return React.createElement(Group, _extends({}, commonProps, group, {\n Heading: GroupHeading,\n headingProps: {\n id: headingId\n },\n label: _this5.formatGroupLabel(item.data)\n }), item.options.map(function (option) {\n return render(option);\n }));\n } else if (item.type === 'option') {\n return render(item);\n }\n });\n } else if (isLoading) {\n var message = loadingMessage({\n inputValue: inputValue\n });\n if (message === null) return null;\n menuUI = React.createElement(LoadingMessage, commonProps, message);\n } else {\n var _message = noOptionsMessage({\n inputValue: inputValue\n });\n\n if (_message === null) return null;\n menuUI = React.createElement(NoOptionsMessage, commonProps, _message);\n }\n\n var menuPlacementProps = {\n minMenuHeight: minMenuHeight,\n maxMenuHeight: maxMenuHeight,\n menuPlacement: menuPlacement,\n menuPosition: menuPosition,\n menuShouldScrollIntoView: menuShouldScrollIntoView\n };\n var menuElement = React.createElement(MenuPlacer, _extends({}, commonProps, menuPlacementProps), function (_ref6) {\n var ref = _ref6.ref,\n _ref6$placerProps = _ref6.placerProps,\n placement = _ref6$placerProps.placement,\n maxHeight = _ref6$placerProps.maxHeight;\n return React.createElement(Menu, _extends({}, commonProps, menuPlacementProps, {\n innerRef: ref,\n innerProps: {\n onMouseDown: _this5.onMenuMouseDown,\n onMouseMove: _this5.onMenuMouseMove\n },\n isLoading: isLoading,\n placement: placement\n }), React.createElement(ScrollCaptorSwitch, {\n isEnabled: captureMenuScroll,\n onTopArrive: onMenuScrollToTop,\n onBottomArrive: onMenuScrollToBottom\n }, React.createElement(ScrollBlock, {\n isEnabled: menuShouldBlockScroll\n }, React.createElement(MenuList, _extends({}, commonProps, {\n innerRef: _this5.getMenuListRef,\n isLoading: isLoading,\n maxHeight: maxHeight\n }), menuUI))));\n }); // positioning behaviour is almost identical for portalled and fixed,\n // so we use the same component. the actual portalling logic is forked\n // within the component based on `menuPosition`\n\n return menuPortalTarget || menuPosition === 'fixed' ? React.createElement(MenuPortal, _extends({}, commonProps, {\n appendTo: menuPortalTarget,\n controlElement: this.controlRef,\n menuPlacement: menuPlacement,\n menuPosition: menuPosition\n }), menuElement) : menuElement;\n }\n }, {\n key: \"renderFormField\",\n value: function renderFormField() {\n var _this6 = this;\n\n var _this$props19 = this.props,\n delimiter = _this$props19.delimiter,\n isDisabled = _this$props19.isDisabled,\n isMulti = _this$props19.isMulti,\n name = _this$props19.name;\n var selectValue = this.state.selectValue;\n if (!name || isDisabled) return;\n\n if (isMulti) {\n if (delimiter) {\n var value = selectValue.map(function (opt) {\n return _this6.getOptionValue(opt);\n }).join(delimiter);\n return React.createElement(\"input\", {\n name: name,\n type: \"hidden\",\n value: value\n });\n } else {\n var input = selectValue.length > 0 ? selectValue.map(function (opt, i) {\n return React.createElement(\"input\", {\n key: \"i-\".concat(i),\n name: name,\n type: \"hidden\",\n value: _this6.getOptionValue(opt)\n });\n }) : React.createElement(\"input\", {\n name: name,\n type: \"hidden\"\n });\n return React.createElement(\"div\", null, input);\n }\n } else {\n var _value = selectValue[0] ? this.getOptionValue(selectValue[0]) : '';\n\n return React.createElement(\"input\", {\n name: name,\n type: \"hidden\",\n value: _value\n });\n }\n }\n }, {\n key: \"renderLiveRegion\",\n value: function renderLiveRegion() {\n if (!this.state.isFocused) return null;\n return React.createElement(A11yText, {\n \"aria-live\": \"assertive\"\n }, React.createElement(\"p\", {\n id: \"aria-selection-event\"\n }, \"\\xA0\", this.state.ariaLiveSelection), React.createElement(\"p\", {\n id: \"aria-context\"\n }, \"\\xA0\", this.constructAriaLiveMessage()));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$components4 = this.components,\n Control = _this$components4.Control,\n IndicatorsContainer = _this$components4.IndicatorsContainer,\n SelectContainer = _this$components4.SelectContainer,\n ValueContainer = _this$components4.ValueContainer;\n var _this$props20 = this.props,\n className = _this$props20.className,\n id = _this$props20.id,\n isDisabled = _this$props20.isDisabled,\n menuIsOpen = _this$props20.menuIsOpen;\n var isFocused = this.state.isFocused;\n var commonProps = this.commonProps = this.getCommonProps();\n return React.createElement(SelectContainer, _extends({}, commonProps, {\n className: className,\n innerProps: {\n id: id,\n onKeyDown: this.onKeyDown\n },\n isDisabled: isDisabled,\n isFocused: isFocused\n }), this.renderLiveRegion(), React.createElement(Control, _extends({}, commonProps, {\n innerRef: this.getControlRef,\n innerProps: {\n onMouseDown: this.onControlMouseDown,\n onTouchEnd: this.onControlTouchEnd\n },\n isDisabled: isDisabled,\n isFocused: isFocused,\n menuIsOpen: menuIsOpen\n }), React.createElement(ValueContainer, _extends({}, commonProps, {\n isDisabled: isDisabled\n }), this.renderPlaceholderOrValue(), this.renderInput()), React.createElement(IndicatorsContainer, _extends({}, commonProps, {\n isDisabled: isDisabled\n }), this.renderClearIndicator(), this.renderLoadingIndicator(), this.renderIndicatorSeparator(), this.renderDropdownIndicator())), this.renderMenu(), this.renderFormField());\n }\n }]);\n\n return Select;\n}(Component);\n\n_defineProperty(Select, \"defaultProps\", defaultProps);\n\nvar defaultProps$1 = {\n defaultInputValue: '',\n defaultMenuIsOpen: false,\n defaultValue: null\n};\n\nvar manageState = function manageState(SelectComponent) {\n var _class, _temp;\n\n return _temp = _class =\n /*#__PURE__*/\n function (_Component) {\n _inherits(StateManager, _Component);\n\n function StateManager() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, StateManager);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(StateManager)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"select\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n inputValue: _this.props.inputValue !== undefined ? _this.props.inputValue : _this.props.defaultInputValue,\n menuIsOpen: _this.props.menuIsOpen !== undefined ? _this.props.menuIsOpen : _this.props.defaultMenuIsOpen,\n value: _this.props.value !== undefined ? _this.props.value : _this.props.defaultValue\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onChange\", function (value, actionMeta) {\n _this.callProp('onChange', value, actionMeta);\n\n _this.setState({\n value: value\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onInputChange\", function (value, actionMeta) {\n // TODO: for backwards compatibility, we allow the prop to return a new\n // value, but now inputValue is a controllable prop we probably shouldn't\n var newValue = _this.callProp('onInputChange', value, actionMeta);\n\n _this.setState({\n inputValue: newValue !== undefined ? newValue : value\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onMenuOpen\", function () {\n _this.callProp('onMenuOpen');\n\n _this.setState({\n menuIsOpen: true\n });\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"onMenuClose\", function () {\n _this.callProp('onMenuClose');\n\n _this.setState({\n menuIsOpen: false\n });\n });\n\n return _this;\n }\n\n _createClass(StateManager, [{\n key: \"focus\",\n value: function focus() {\n this.select.focus();\n }\n }, {\n key: \"blur\",\n value: function blur() {\n this.select.blur();\n } // FIXME: untyped flow code, return any\n\n }, {\n key: \"getProp\",\n value: function getProp(key) {\n return this.props[key] !== undefined ? this.props[key] : this.state[key];\n } // FIXME: untyped flow code, return any\n\n }, {\n key: \"callProp\",\n value: function callProp(name) {\n if (typeof this.props[name] === 'function') {\n var _this$props;\n\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n return (_this$props = this.props)[name].apply(_this$props, args);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props2 = this.props,\n defaultInputValue = _this$props2.defaultInputValue,\n defaultMenuIsOpen = _this$props2.defaultMenuIsOpen,\n defaultValue = _this$props2.defaultValue,\n props = _objectWithoutProperties(_this$props2, [\"defaultInputValue\", \"defaultMenuIsOpen\", \"defaultValue\"]);\n\n return React.createElement(SelectComponent, _extends({}, props, {\n ref: function ref(_ref) {\n _this2.select = _ref;\n },\n inputValue: this.getProp('inputValue'),\n menuIsOpen: this.getProp('menuIsOpen'),\n onChange: this.onChange,\n onInputChange: this.onInputChange,\n onMenuClose: this.onMenuClose,\n onMenuOpen: this.onMenuOpen,\n value: this.getProp('value')\n }));\n }\n }]);\n\n return StateManager;\n }(Component), _defineProperty(_class, \"defaultProps\", defaultProps$1), _temp;\n};\n\nexport { manageState as a, Select as b, mergeStyles as c, defaultTheme as d, createFilter as e };\n","import '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport '@babel/runtime/helpers/esm/extends';\nimport '@babel/runtime/helpers/esm/toConsumableArray';\nimport '@babel/runtime/helpers/esm/objectSpread';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport React, { Component } from 'react';\nimport memoizeOne from 'memoize-one';\nimport { CacheProvider } from '@emotion/core';\nimport 'react-dom';\nimport 'prop-types';\nimport '@babel/runtime/helpers/esm/typeof';\nimport 'raf';\nexport { H as components } from './chunk-762c4cd6.browser.esm.js';\nimport { a as manageState, b as Select } from './chunk-f5c2e42b.browser.esm.js';\nexport { e as createFilter, d as defaultTheme, c as mergeStyles } from './chunk-f5c2e42b.browser.esm.js';\nimport '@emotion/css';\nimport '@babel/runtime/helpers/esm/taggedTemplateLiteral';\nimport 'react-input-autosize';\nimport createCache from '@emotion/cache';\n\nvar NonceProvider =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(NonceProvider, _Component);\n\n function NonceProvider(props) {\n var _this;\n\n _classCallCheck(this, NonceProvider);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(NonceProvider).call(this, props));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"createEmotionCache\", function (nonce) {\n return createCache({\n nonce: nonce\n });\n });\n\n _this.createEmotionCache = memoizeOne(_this.createEmotionCache);\n return _this;\n }\n\n _createClass(NonceProvider, [{\n key: \"render\",\n value: function render() {\n var emotionCache = this.createEmotionCache(this.props.nonce);\n return React.createElement(CacheProvider, {\n value: emotionCache\n }, this.props.children);\n }\n }]);\n\n return NonceProvider;\n}(Component);\n\nvar index = manageState(Select);\n\nexport default index;\nexport { NonceProvider };\n","/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n // $FlowFixMe\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n // $FlowFixMe\n return document.styleSheets[i];\n }\n }\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n return tag;\n}\n\nvar StyleSheet =\n/*#__PURE__*/\nfunction () {\n function StyleSheet(options) {\n this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n var _tag = createStyleElement(this);\n\n var before;\n\n if (this.tags.length === 0) {\n before = this.before;\n } else {\n before = this.tags[this.tags.length - 1].nextSibling;\n }\n\n this.container.insertBefore(_tag, before);\n this.tags.push(_tag);\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is a really hot path\n // we check the second character first because having \"i\"\n // as the second character will happen less often than\n // having \"@\" as the first character\n var isImportRule = rule.charCodeAt(1) === 105 && rule.charCodeAt(0) === 64; // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n\n sheet.insertRule(rule, // we need to insert @import rules before anything else\n // otherwise there will be an error\n // technically this means that the @import rules will\n // _usually_(not always since there could be multiple style tags)\n // be the first ones in prod and generally later in dev\n // this shouldn't really matter in the real world though\n // @import is generally only used for font faces from google fonts and etc.\n // so while this could be technically correct then it would be slower and larger\n // for a tiny bit of correctness that won't matter in the real world\n isImportRule ? 0 : sheet.cssRules.length);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n }\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n // $FlowFixMe\n this.tags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","import { StyleSheet } from '@emotion/sheet';\nimport Stylis from '@emotion/stylis';\nimport '@emotion/weak-memoize';\n\n// https://github.com/thysultan/stylis.js/tree/master/plugins/rule-sheet\n// inlined to avoid umd wrapper and peerDep warnings/installing stylis\n// since we use stylis after closure compiler\nvar delimiter = '/*|*/';\nvar needle = delimiter + '}';\n\nfunction toSheet(block) {\n if (block) {\n Sheet.current.insert(block + '}');\n }\n}\n\nvar Sheet = {\n current: null\n};\nvar ruleSheet = function ruleSheet(context, content, selectors, parents, line, column, length, ns, depth, at) {\n switch (context) {\n // property\n case 1:\n {\n switch (content.charCodeAt(0)) {\n case 64:\n {\n // @import\n Sheet.current.insert(content + ';');\n return '';\n }\n // charcode for l\n\n case 108:\n {\n // charcode for b\n // this ignores label\n if (content.charCodeAt(2) === 98) {\n return '';\n }\n }\n }\n\n break;\n }\n // selector\n\n case 2:\n {\n if (ns === 0) return content + delimiter;\n break;\n }\n // at-rule\n\n case 3:\n {\n switch (ns) {\n // @font-face, @page\n case 102:\n case 112:\n {\n Sheet.current.insert(selectors[0] + content);\n return '';\n }\n\n default:\n {\n return content + (at === 0 ? delimiter : '');\n }\n }\n }\n\n case -2:\n {\n content.split(needle).forEach(toSheet);\n }\n }\n};\n\nvar createCache = function createCache(options) {\n if (options === undefined) options = {};\n var key = options.key || 'css';\n var stylisOptions;\n\n if (options.prefix !== undefined) {\n stylisOptions = {\n prefix: options.prefix\n };\n }\n\n var stylis = new Stylis(stylisOptions);\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe\n if (/[^a-z-]/.test(key)) {\n throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n }\n }\n\n var inserted = {}; // $FlowFixMe\n\n var container;\n\n {\n container = options.container || document.head;\n var nodes = document.querySelectorAll(\"style[data-emotion-\" + key + \"]\");\n Array.prototype.forEach.call(nodes, function (node) {\n var attrib = node.getAttribute(\"data-emotion-\" + key); // $FlowFixMe\n\n attrib.split(' ').forEach(function (id) {\n inserted[id] = true;\n });\n\n if (node.parentNode !== container) {\n container.appendChild(node);\n }\n });\n }\n\n var _insert;\n\n {\n stylis.use(options.stylisPlugins)(ruleSheet);\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n var name = serialized.name;\n Sheet.current = sheet;\n\n if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n var map = serialized.map;\n Sheet.current = {\n insert: function insert(rule) {\n sheet.insert(rule + map);\n }\n };\n }\n\n stylis(selector, serialized.styles);\n\n if (shouldCache) {\n cache.inserted[name] = true;\n }\n };\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // https://esbench.com/bench/5bf7371a4cd7e6009ef61d0a\n var commentStart = /\\/\\*/g;\n var commentEnd = /\\*\\//g;\n stylis.use(function (context, content) {\n switch (context) {\n case -1:\n {\n while (commentStart.test(content)) {\n commentEnd.lastIndex = commentStart.lastIndex;\n\n if (commentEnd.test(content)) {\n commentStart.lastIndex = commentEnd.lastIndex;\n continue;\n }\n\n throw new Error('Your styles have an unterminated comment (\"/*\" without corresponding \"*/\").');\n }\n\n commentStart.lastIndex = 0;\n break;\n }\n }\n });\n stylis.use(function (context, content, selectors) {\n switch (context) {\n case -1:\n {\n var flag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n var unsafePseudoClasses = content.match(/(:first|:nth|:nth-last)-child/g);\n\n if (unsafePseudoClasses && cache.compat !== true) {\n unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n var ignoreRegExp = new RegExp(unsafePseudoClass + \".*\\\\/\\\\* \" + flag + \" \\\\*\\\\/\");\n var ignore = ignoreRegExp.test(content);\n\n if (unsafePseudoClass && !ignore) {\n console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n }\n });\n }\n\n break;\n }\n }\n });\n }\n\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n return cache;\n};\n\nexport default createCache;\n","var isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className]);\n } else {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false && cache.compat !== undefined) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n var maybeStyles = cache.insert(\".\" + className, current, cache.sheet, true);\n\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles };\n","import '@babel/runtime/helpers/inheritsLoose';\nimport { createContext, forwardRef, createElement, Fragment } from 'react';\nimport createCache from '@emotion/cache';\nimport { getRegisteredStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar EmotionCacheContext = /*#__PURE__*/createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? createCache() : null);\nvar ThemeContext = /*#__PURE__*/createContext({});\nvar CacheProvider = EmotionCacheContext.Provider;\n\nvar withEmotionCache = function withEmotionCache(func) {\n var render = function render(props, ref) {\n return /*#__PURE__*/createElement(EmotionCacheContext.Consumer, null, function (cache) {\n return func(props, cache, ref);\n });\n }; // $FlowFixMe\n\n\n return /*#__PURE__*/forwardRef(render);\n};\n\n// thus we only need to replace what is a valid character for JS, but not for CSS\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n return identifier.replace(/\\$/g, '-');\n};\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // check if there is a css declaration\n props.css.indexOf(':') !== -1) {\n throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/css' like this: css`\" + props.css + \"`\");\n }\n\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key)) {\n newProps[key] = props[key];\n }\n }\n\n newProps[typePropName] = type; // TODO: check if this still works with all of those different JSX functions\n\n if (process.env.NODE_ENV !== 'production') {\n var error = new Error();\n\n if (error.stack) {\n // chrome\n var match = error.stack.match(/at (?:Object\\.|Module\\.|)(?:jsx|createEmotionProps).*\\n\\s+at (?:Object\\.|)([A-Z][A-Za-z$]+) /);\n\n if (!match) {\n // safari and firefox\n match = error.stack.match(/.*\\n([A-Z][A-Za-z$]+)@/);\n }\n\n if (match) {\n newProps[labelPropName] = sanitizeIdentifier(match[1]);\n }\n }\n }\n\n return newProps;\n};\n\nvar Noop = function Noop() {\n return null;\n};\n\nvar render = function render(cache, props, theme, ref) {\n var cssProp = theme === null ? props.css : props.css(theme); // so that using `css` from `emotion` and passing the result to the css prop works\n // not passing the registered cache to serializeStyles because it would\n // make certain babel optimisations not possible\n\n if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n cssProp = cache.registered[cssProp];\n }\n\n var type = props[typePropName];\n var registeredStyles = [cssProp];\n var className = '';\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(registeredStyles);\n\n if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n var labelFromStack = props[labelPropName];\n\n if (labelFromStack) {\n serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n }\n }\n\n var rules = insertStyles(cache, serialized, typeof type === 'string');\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n newProps[key] = props[key];\n }\n }\n\n newProps.ref = ref;\n newProps.className = className;\n var ele = /*#__PURE__*/createElement(type, newProps);\n var possiblyStyleElement = /*#__PURE__*/createElement(Noop, null);\n\n\n return /*#__PURE__*/createElement(Fragment, null, possiblyStyleElement, ele);\n}; // eslint-disable-next-line no-undef\n\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n if (typeof props.css === 'function') {\n return /*#__PURE__*/createElement(ThemeContext.Consumer, null, function (theme) {\n return render(cache, props, theme, ref);\n });\n }\n\n return render(cache, props, null, ref);\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Emotion.displayName = 'EmotionCssPropInternal';\n}\n\nexport { CacheProvider as C, Emotion as E, ThemeContext as T, createEmotionProps as c, hasOwnProperty as h, withEmotionCache as w };\n","import _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport { createElement, Component, Fragment } from 'react';\nimport '@emotion/cache';\nimport { h as hasOwnProperty, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext } from './emotion-element-04d85134.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, w as withEmotionCache } from './emotion-element-04d85134.browser.esm.js';\nimport { insertStyles, getRegisteredStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { StyleSheet } from '@emotion/sheet';\nimport css from '@emotion/css';\nexport { default as css } from '@emotion/css';\n\nvar jsx = function jsx(type, props) {\n var args = arguments;\n\n if (props == null || !hasOwnProperty.call(props, 'css')) {\n // $FlowFixMe\n return createElement.apply(undefined, args);\n }\n\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = Emotion;\n createElementArgArray[1] = createEmotionProps(type, props);\n\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n } // $FlowFixMe\n\n\n return createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false;\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n // probably using the custom createElement which\n // means it will be turned into a className prop\n // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n props.className || props.css)) {\n console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n warnedAboutCssPropForGlobal = true;\n }\n\n var styles = props.styles;\n\n if (typeof styles === 'function') {\n return /*#__PURE__*/createElement(ThemeContext.Consumer, null, function (theme) {\n var serialized = serializeStyles([styles(theme)]);\n return /*#__PURE__*/createElement(InnerGlobal, {\n serialized: serialized,\n cache: cache\n });\n });\n }\n\n var serialized = serializeStyles([styles]);\n return /*#__PURE__*/createElement(InnerGlobal, {\n serialized: serialized,\n cache: cache\n });\n});\n\n// maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\nvar InnerGlobal = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(InnerGlobal, _React$Component);\n\n function InnerGlobal(props, context, updater) {\n return _React$Component.call(this, props, context, updater) || this;\n }\n\n var _proto = InnerGlobal.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.sheet = new StyleSheet({\n key: this.props.cache.key + \"-global\",\n nonce: this.props.cache.sheet.nonce,\n container: this.props.cache.sheet.container\n }); // $FlowFixMe\n\n var node = document.querySelector(\"style[data-emotion-\" + this.props.cache.key + \"=\\\"\" + this.props.serialized.name + \"\\\"]\");\n\n if (node !== null) {\n this.sheet.tags.push(node);\n }\n\n if (this.props.cache.sheet.tags.length) {\n this.sheet.before = this.props.cache.sheet.tags[0];\n }\n\n this.insertStyles();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (prevProps.serialized.name !== this.props.serialized.name) {\n this.insertStyles();\n }\n };\n\n _proto.insertStyles = function insertStyles$1() {\n if (this.props.serialized.next !== undefined) {\n // insert keyframes\n insertStyles(this.props.cache, this.props.serialized.next, true);\n }\n\n if (this.sheet.tags.length) {\n // if this doesn't exist then it will be null so the style element will be appended\n var element = this.sheet.tags[this.sheet.tags.length - 1].nextElementSibling;\n this.sheet.before = element;\n this.sheet.flush();\n }\n\n this.props.cache.insert(\"\", this.props.serialized, this.sheet, false);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.sheet.flush();\n };\n\n _proto.render = function render() {\n\n return null;\n };\n\n return InnerGlobal;\n}(Component);\n\nvar keyframes = function keyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n return {\n name: name,\n styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n anim: 1,\n toString: function toString() {\n return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n }\n };\n};\n\nvar classnames = function classnames(args) {\n var len = args.length;\n var i = 0;\n var cls = '';\n\n for (; i < len; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (typeof arg) {\n case 'boolean':\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\n\nfunction merge(registered, css, className) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles);\n}\n\nvar Noop = function Noop() {\n return null;\n};\n\nvar ClassNames = withEmotionCache(function (props, context) {\n return /*#__PURE__*/createElement(ThemeContext.Consumer, null, function (theme) {\n var hasRendered = false;\n\n var css = function css() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('css can only be used during render');\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var serialized = serializeStyles(args, context.registered);\n\n {\n insertStyles(context, serialized, false);\n }\n\n return context.key + \"-\" + serialized.name;\n };\n\n var cx = function cx() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('cx can only be used during render');\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return merge(context.registered, css, classnames(args));\n };\n\n var content = {\n css: css,\n cx: cx,\n theme: theme\n };\n var ele = props.children(content);\n hasRendered = true;\n var possiblyStyleElement = /*#__PURE__*/createElement(Noop, null);\n\n\n return /*#__PURE__*/createElement(Fragment, null, possiblyStyleElement, ele);\n });\n});\n\nexport { ClassNames, Global, jsx as createElement, jsx, keyframes };\n","import { serializeStyles } from '@emotion/serialize';\n\nfunction css() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return serializeStyles(args);\n}\n\nexport default css;\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport default murmur2;\n","function memoize(fn) {\n var cache = {};\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport default memoize;\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n var contentValuePattern = /(attr|calc|counters?|url)\\(/;\n var contentValues = ['normal', 'none', 'counter', 'open-quote', 'close-quote', 'no-open-quote', 'no-close-quote', 'initial', 'inherit', 'unset'];\n var oldProcessStyleValue = processStyleValue;\n var msPattern = /^-ms-/;\n var hyphenPattern = /-(.)/g;\n var hyphenatedCache = {};\n\n processStyleValue = function processStyleValue(key, value) {\n if (key === 'content') {\n if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n console.error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n }\n }\n\n var processed = oldProcessStyleValue(key, value);\n\n if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n hyphenatedCache[key] = true;\n console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n return _char.toUpperCase();\n }) + \"?\");\n }\n\n return processed;\n };\n}\n\nvar shouldWarnAboutInterpolatingClassNameFromCss = true;\n\nfunction handleInterpolation(mergedProps, registered, interpolation, couldBeSelectorInterpolation) {\n if (interpolation == null) {\n return '';\n }\n\n if (interpolation.__emotion_styles !== undefined) {\n if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\n }\n\n return interpolation;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n if (interpolation.anim === 1) {\n cursor = {\n name: interpolation.name,\n styles: interpolation.styles,\n next: cursor\n };\n return interpolation.name;\n }\n\n if (interpolation.styles !== undefined) {\n var next = interpolation.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = interpolation.styles + \";\";\n\n if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n styles += interpolation.map;\n }\n\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result, couldBeSelectorInterpolation);\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n }\n\n break;\n }\n\n case 'string':\n if (process.env.NODE_ENV !== 'production') {\n var matched = [];\n var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n var fakeVarName = \"animation\" + matched.length;\n matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n return \"${\" + fakeVarName + \"}\";\n });\n\n if (matched.length) {\n console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n }\n }\n\n break;\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n if (registered == null) {\n return interpolation;\n }\n\n var cached = registered[interpolation];\n\n if (process.env.NODE_ENV !== 'production' && couldBeSelectorInterpolation && shouldWarnAboutInterpolatingClassNameFromCss && cached !== undefined) {\n console.error('Interpolating a className from css`` is not recommended and will cause problems with composition.\\n' + 'Interpolating a className from css`` will be completely unsupported in a future major version of Emotion');\n shouldWarnAboutInterpolatingClassNameFromCss = false;\n }\n\n return cached !== undefined && !couldBeSelectorInterpolation ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i], false);\n }\n } else {\n for (var _key in obj) {\n var value = obj[_key];\n\n if (typeof value !== 'object') {\n if (registered != null && registered[value] !== undefined) {\n string += _key + \"{\" + registered[value] + \"}\";\n } else if (isProcessableValue(value)) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n }\n } else {\n if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value, false);\n\n switch (_key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(_key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n }\n\n string += _key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*;/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings, false);\n } else {\n if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i], styles.charCodeAt(styles.length - 1) === 46);\n\n if (stringMode) {\n if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[i];\n }\n }\n\n var sourceMap;\n\n if (process.env.NODE_ENV !== 'production') {\n styles = styles.replace(sourceMapPattern, function (match) {\n sourceMap = match;\n return '';\n });\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + // $FlowFixMe we know it's not null\n match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n return {\n name: name,\n styles: styles,\n map: sourceMap,\n next: cursor,\n toString: function toString() {\n return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n }\n };\n }\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n};\n\nexport { serializeStyles };\n","var highlightRegExp = /highlight-(?:text|source)-([a-z0-9]+)/;\n\nfunction highlightedCodeBlock (turndownService) {\n turndownService.addRule('highlightedCodeBlock', {\n filter: function (node) {\n var firstChild = node.firstChild;\n return (\n node.nodeName === 'DIV' &&\n highlightRegExp.test(node.className) &&\n firstChild &&\n firstChild.nodeName === 'PRE'\n )\n },\n replacement: function (content, node, options) {\n var className = node.className || '';\n var language = (className.match(highlightRegExp) || [null, ''])[1];\n\n return (\n '\\n\\n' + options.fence + language + '\\n' +\n node.firstChild.textContent +\n '\\n' + options.fence + '\\n\\n'\n )\n }\n });\n}\n\nfunction strikethrough (turndownService) {\n turndownService.addRule('strikethrough', {\n filter: ['del', 's', 'strike'],\n replacement: function (content) {\n return '~' + content + '~'\n }\n });\n}\n\nvar indexOf = Array.prototype.indexOf;\nvar rules = {};\n\nrules.tableCell = {\n filter: ['th', 'td'],\n replacement: function (content, node) {\n return cell(content, node) + spannedCells(node, '')\n }\n};\n\nrules.tableRow = {\n filter: 'tr',\n replacement: function (content, node) {\n var borderCells = '';\n var alignMap = { left: ':--', right: '--:', center: ':-:' };\n\n if (isHeadingRow(node)) {\n for (var i = 0; i < node.childNodes.length; i++) {\n var border = '---';\n var align = (\n node.childNodes[i].getAttribute('align') || ''\n ).toLowerCase();\n\n if (align) border = alignMap[align] || border;\n\n borderCells += cell(border, node.childNodes[i]) + spannedCells(node.childNodes[i], border);\n }\n }\n return '\\n' + content + (borderCells ? '\\n' + borderCells : '')\n }\n};\n\nrules.table = {\n // Only convert tables that are not nested in another table, they are kept using `keep` (see below).\n // TODO: nested tables should be converted to plain text in a strict (non HTML) gfm\n filter: function (node) {\n return node.nodeName === 'TABLE' && !isNestedTable(node)\n },\n\n replacement: function (content) {\n // Ensure there are no blank lines\n content = content.replace('\\n\\n', '\\n');\n return '\\n\\n' + content + '\\n\\n'\n }\n};\n\nrules.tableSection = {\n filter: ['thead', 'tbody', 'tfoot'],\n replacement: function (content) {\n return content\n }\n};\n\nrules.captionSection = {\n // only return content if caption if the first node immediately after TABLE\n filter: 'caption',\n replacement: function (content, node) {\n if (node.parentNode.nodeName === 'TABLE' && node.parentNode.childNodes[0] === node) return content\n return ''\n }\n};\n\nfunction isHeadingRow (tr) {\n var parentNode = tr.parentNode;\n var tableNode = parentNode;\n if (parentNode.nodeName === 'THEAD' ||\n parentNode.nodeName === 'TFOOT' ||\n parentNode.nodeName === 'TBODY') {\n tableNode = parentNode.parentNode;\n }\n return (tableNode.nodeName === 'TABLE' && tableNode.rows[0] === tr)\n}\n\nfunction cell (content, node) {\n var index = indexOf.call(node.parentNode.childNodes, node);\n var prefix = ' ';\n if (index === 0) prefix = '| ';\n // Ensure single line per cell (both windows and unix EoL)\n // TODO: allow gfm non-strict mode to replace new lines by `<br/>`\n content = content.replace(/\\r\\n/g, '\\n').replace(/\\n/g, ' ');\n // | must be escaped as \\|\n content = content.replace(/\\|/g, '\\\\|');\n return prefix + content + ' |'\n}\n\nfunction spannedCells (node, spannedCellContent) {\n var colspan = node.getAttribute('colspan') || 1;\n if (colspan <= 1) return ''\n return (' ' + spannedCellContent + ' |').repeat(colspan - 1)\n}\n\nfunction isNestedTable (tableNode) {\n var currentNode = tableNode.parentNode;\n while (currentNode) {\n if (currentNode.nodeName === 'TABLE') return true\n currentNode = currentNode.parentNode;\n }\n return false\n}\n\nfunction tables (turndownService) {\n turndownService.keep(function (node) {\n return node.nodeName === 'TABLE' && isNestedTable(node)\n });\n for (var key in rules) turndownService.addRule(key, rules[key]);\n}\n\nfunction taskListItems (turndownService) {\n turndownService.addRule('taskListItems', {\n filter: function (node) {\n return node.type === 'checkbox' && node.parentNode.nodeName === 'LI'\n },\n replacement: function (content, node) {\n return (node.checked ? '[x]' : '[ ]') + ' '\n }\n });\n}\n\nfunction gfm (turndownService) {\n turndownService.use([\n highlightedCodeBlock,\n strikethrough,\n tables,\n taskListItems\n ]);\n}\n\nexport { gfm, highlightedCodeBlock, strikethrough, tables, taskListItems };\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst IconGlyphs = [\n 'account-minus-outline',\n 'account-multiple-outline',\n 'account-multiple-plus-outline',\n 'account-outline',\n 'account-plus-outline',\n 'airplane-variant',\n 'airplane',\n 'alert-circle-outline',\n 'alert-outline',\n 'application-cog',\n 'apps',\n 'archive-arrow-up-outline',\n 'archive-outline',\n 'arrow-back-ios',\n 'arrow-collapse',\n 'arrow-down-bold-circle-outline',\n 'arrow-down',\n 'arrow-expand-all',\n 'arrow-expand',\n 'arrow-forward-ios',\n 'arrow-left',\n 'arrow-right-bold-outline',\n 'arrow-right',\n 'arrow-up-bold-circle-outline',\n 'arrow-up',\n 'at',\n 'basketball',\n 'beach-umbrella-outline',\n 'bell-off-outline',\n 'bell-outline',\n 'bell-ring-outline',\n 'bluetooth',\n 'book-lock-outline',\n 'book-outline',\n 'bookmark-outline',\n 'bookmark',\n 'brand-gitlab',\n 'brand-google',\n 'brand-office-365',\n 'brand-one-login',\n 'brand-zoom',\n 'bullhorn-outline',\n 'calendar-check-outline',\n 'calendar-month-outline',\n 'calendar-outline',\n 'camera-outline',\n 'cancel',\n 'car-outline',\n 'cellphone',\n 'chart-bar',\n 'chart-line',\n 'check-all',\n 'check-circle-outline',\n 'check-circle',\n 'check',\n 'checkbox-blank-outline',\n 'checkbox-marked',\n 'checkbox-multiple-marked-outline',\n 'chevron-down-circle-outline',\n 'chevron-down',\n 'chevron-left',\n 'chevron-right',\n 'chevron-up',\n 'circle-multiple-outline-lock',\n 'circle-multiple-outline',\n 'circle-outline',\n 'clock-outline',\n 'clock-send-outline',\n 'clock',\n 'close-circle-outline',\n 'close-circle',\n 'close',\n 'code-block',\n 'code-brackets',\n 'code-tags',\n 'cog-outline',\n 'console',\n 'content-copy',\n 'credit-card-outline',\n 'crown-outline',\n 'currency-usd',\n 'dock-left',\n 'dock-window',\n 'dots-horizontal',\n 'dots-vertical',\n 'download-outline',\n 'drag-vertical',\n 'draw',\n 'email-outline',\n 'email-plus-outline',\n 'email-variant',\n 'emoticon-custom-outline',\n 'emoticon-happy-outline',\n 'emoticon-outline',\n 'emoticon-plus-outline',\n 'exclamation-thick',\n 'exit-to-app',\n 'export-variant',\n 'eye-off-outline',\n 'eye-outline',\n 'file-audio-outline-large',\n 'file-audio-outline',\n 'file-code-outline-large',\n 'file-code-outline',\n 'file-excel-outline-large',\n 'file-excel-outline',\n 'file-generic-outline-large',\n 'file-generic-outline',\n 'file-gif',\n 'file-image-broken-outline-large',\n 'file-image-broken-outline',\n 'file-image-outline-large',\n 'file-image-outline',\n 'file-multiple-outline-large',\n 'file-multiple-outline',\n 'file-patch-outline-large',\n 'file-patch-outline',\n 'file-pdf-outline-large',\n 'file-pdf-outline',\n 'file-powerpoint-outline-large',\n 'file-powerpoint-outline',\n 'file-text-outline-large',\n 'file-text-outline',\n 'file-video-outline-large',\n 'file-video-outline',\n 'file-word-outline-large',\n 'file-word-outline',\n 'file-zip-outline-large',\n 'file-zip-outline',\n 'filter-variant',\n 'fire',\n 'flag-checkered',\n 'flag-outline',\n 'flag',\n 'flask-outline',\n 'folder-move-outline',\n 'folder-outline',\n 'folder-plus-outline',\n 'food-apple',\n 'food-fork-drink',\n 'format-bold',\n 'format-clear',\n 'format-header-1',\n 'format-header-2',\n 'format-header-3',\n 'format-header-4',\n 'format-header-5',\n 'format-header-6',\n 'format-header',\n 'format-italic',\n 'format-letter-case',\n 'format-list-bulleted',\n 'format-list-numbered',\n 'format-quote-open',\n 'format-strikethrough-variant',\n 'forum-outline',\n 'gfycat',\n 'github-circle',\n 'glasses',\n 'globe-checked',\n 'globe',\n 'hammer',\n 'hand-right-outline-off',\n 'hand-right-outline',\n 'hand-right',\n 'headphones',\n 'heart-outline',\n 'help-circle-outline',\n 'help',\n 'home-variant-outline',\n 'iframe-list-outline',\n 'image-area-outline',\n 'image-broken-outline',\n 'image-outline',\n 'import',\n 'infinity',\n 'information-outline',\n 'kanban',\n 'key-variant-circle',\n 'key-variant',\n 'keyboard-return',\n 'laptop',\n 'layers-outline',\n 'leaf-outline',\n 'leaf',\n 'lightbulb-outline',\n 'lightning-bolt-outline',\n 'link-variant-off',\n 'link-variant',\n 'lock-outline',\n 'lock',\n 'logout-variant',\n 'magnify-minus',\n 'magnify-plus',\n 'magnify',\n 'mark-as-unread',\n 'mattermost',\n 'menu-down',\n 'menu-left',\n 'menu-right',\n 'menu-up',\n 'menu-variant',\n 'menu',\n 'message-arrow-right-outline',\n 'message-check-outline',\n 'message-check',\n 'message-minus-outline',\n 'message-plus-outline',\n 'message-text-outline',\n 'microphone-off',\n 'microphone-outline',\n 'microphone',\n 'minus-box',\n 'minus-circle-outline',\n 'minus-circle',\n 'minus',\n 'monitor-off',\n 'monitor-share',\n 'monitor',\n 'notebook-outline',\n 'oauth',\n 'open-in-new',\n 'palette-outline',\n 'paperclip',\n 'pause',\n 'pencil-outline',\n 'phone-hangup',\n 'phone-in-talk',\n 'phone-outline',\n 'phone',\n 'pin-outline',\n 'pin',\n 'play-box-multiple-outline',\n 'play-outline',\n 'play',\n 'playlist-check',\n 'plus-box-outline',\n 'plus-box',\n 'plus',\n 'pound',\n 'power-plug-outline',\n 'product-boards',\n 'product-channels',\n 'product-playbooks',\n 'products',\n 'radiobox-blank',\n 'radiobox-marked',\n 'record-circle-outline',\n 'record-square-outline',\n 'refresh',\n 'reply-outline',\n 'resize-bottom-right',\n 'restore',\n 'robot-happy',\n 'search-list',\n 'send-outline',\n 'send',\n 'server-outline',\n 'server-variant-plus',\n 'server-variant',\n 'settings-outline',\n 'share-variant-outline',\n 'shield-alert-outline',\n 'shield-outline',\n 'shuffle-variant',\n 'sitemap',\n 'slash-forward-box-outline',\n 'slash-forward',\n 'soccer',\n 'sort-alphabetical-ascending',\n 'sort-ascending',\n 'source-branch',\n 'source-pull',\n 'square',\n 'star-outline',\n 'star',\n 'sync',\n 'table-column-plus-after',\n 'table-column-plus-before',\n 'table-column-remove',\n 'table-large',\n 'table-plus',\n 'table-remove',\n 'table-row-plus-after',\n 'table-row-plus-before',\n 'table-row-remove',\n 'table-settings',\n 'tablet',\n 'text-box-outline',\n 'thumbs-up-down',\n 'timeline-text-outline',\n 'trash-can-outline',\n 'tune',\n 'update',\n 'video-outline',\n 'view-grid-plus-outline',\n 'volume-high',\n 'webhook-incoming',\n 'webhook-outgoing',\n 'webhook',\n];\nexports.default = IconGlyphs;\n","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"absolute\", \"children\", \"className\", \"component\", \"flexItem\", \"light\", \"orientation\", \"role\", \"textAlign\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getDividerUtilityClass } from './dividerClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n absolute,\n children,\n classes,\n flexItem,\n light,\n orientation,\n textAlign,\n variant\n } = ownerState;\n const slots = {\n root: ['root', absolute && 'absolute', variant, light && 'light', orientation === 'vertical' && 'vertical', flexItem && 'flexItem', children && 'withChildren', children && orientation === 'vertical' && 'withChildrenVertical', textAlign === 'right' && orientation !== 'vertical' && 'textAlignRight', textAlign === 'left' && orientation !== 'vertical' && 'textAlignLeft'],\n wrapper: ['wrapper', orientation === 'vertical' && 'wrapperVertical']\n };\n return composeClasses(slots, getDividerUtilityClass, classes);\n};\nconst DividerRoot = styled('div', {\n name: 'MuiDivider',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.absolute && styles.absolute, styles[ownerState.variant], ownerState.light && styles.light, ownerState.orientation === 'vertical' && styles.vertical, ownerState.flexItem && styles.flexItem, ownerState.children && styles.withChildren, ownerState.children && ownerState.orientation === 'vertical' && styles.withChildrenVertical, ownerState.textAlign === 'right' && ownerState.orientation !== 'vertical' && styles.textAlignRight, ownerState.textAlign === 'left' && ownerState.orientation !== 'vertical' && styles.textAlignLeft];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n margin: 0,\n // Reset browser default style.\n flexShrink: 0,\n borderWidth: 0,\n borderStyle: 'solid',\n borderColor: (theme.vars || theme).palette.divider,\n borderBottomWidth: 'thin'\n}, ownerState.absolute && {\n position: 'absolute',\n bottom: 0,\n left: 0,\n width: '100%'\n}, ownerState.light && {\n borderColor: theme.vars ? `rgba(${theme.vars.palette.dividerChannel} / 0.08)` : alpha(theme.palette.divider, 0.08)\n}, ownerState.variant === 'inset' && {\n marginLeft: 72\n}, ownerState.variant === 'middle' && ownerState.orientation === 'horizontal' && {\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(2)\n}, ownerState.variant === 'middle' && ownerState.orientation === 'vertical' && {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1)\n}, ownerState.orientation === 'vertical' && {\n height: '100%',\n borderBottomWidth: 0,\n borderRightWidth: 'thin'\n}, ownerState.flexItem && {\n alignSelf: 'stretch',\n height: 'auto'\n}), ({\n theme,\n ownerState\n}) => _extends({}, ownerState.children && {\n display: 'flex',\n whiteSpace: 'nowrap',\n textAlign: 'center',\n border: 0,\n '&::before, &::after': {\n position: 'relative',\n width: '100%',\n borderTop: `thin solid ${(theme.vars || theme).palette.divider}`,\n top: '50%',\n content: '\"\"',\n transform: 'translateY(50%)'\n }\n}), ({\n theme,\n ownerState\n}) => _extends({}, ownerState.children && ownerState.orientation === 'vertical' && {\n flexDirection: 'column',\n '&::before, &::after': {\n height: '100%',\n top: '0%',\n left: '50%',\n borderTop: 0,\n borderLeft: `thin solid ${(theme.vars || theme).palette.divider}`,\n transform: 'translateX(0%)'\n }\n}), ({\n ownerState\n}) => _extends({}, ownerState.textAlign === 'right' && ownerState.orientation !== 'vertical' && {\n '&::before': {\n width: '90%'\n },\n '&::after': {\n width: '10%'\n }\n}, ownerState.textAlign === 'left' && ownerState.orientation !== 'vertical' && {\n '&::before': {\n width: '10%'\n },\n '&::after': {\n width: '90%'\n }\n}));\nconst DividerWrapper = styled('span', {\n name: 'MuiDivider',\n slot: 'Wrapper',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.wrapper, ownerState.orientation === 'vertical' && styles.wrapperVertical];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'inline-block',\n paddingLeft: `calc(${theme.spacing(1)} * 1.2)`,\n paddingRight: `calc(${theme.spacing(1)} * 1.2)`\n}, ownerState.orientation === 'vertical' && {\n paddingTop: `calc(${theme.spacing(1)} * 1.2)`,\n paddingBottom: `calc(${theme.spacing(1)} * 1.2)`\n}));\nconst Divider = /*#__PURE__*/React.forwardRef(function Divider(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiDivider'\n });\n const {\n absolute = false,\n children,\n className,\n component = children ? 'div' : 'hr',\n flexItem = false,\n light = false,\n orientation = 'horizontal',\n role = component !== 'hr' ? 'separator' : undefined,\n textAlign = 'center',\n variant = 'fullWidth'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n absolute,\n component,\n flexItem,\n light,\n orientation,\n role,\n textAlign,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(DividerRoot, _extends({\n as: component,\n className: clsx(classes.root, className),\n role: role,\n ref: ref,\n ownerState: ownerState\n }, other, {\n children: children ? /*#__PURE__*/_jsx(DividerWrapper, {\n className: classes.wrapper,\n ownerState: ownerState,\n children: children\n }) : null\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Divider.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * Absolutely position the element.\n * @default false\n */\n absolute: PropTypes.bool,\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, a vertical divider will have the correct height when used in flex container.\n * (By default, a vertical divider will have a calculated height of `0px` if it is the child of a flex container.)\n * @default false\n */\n flexItem: PropTypes.bool,\n /**\n * If `true`, the divider will have a lighter color.\n * @default false\n */\n light: PropTypes.bool,\n /**\n * The component orientation.\n * @default 'horizontal'\n */\n orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n /**\n * @ignore\n */\n role: PropTypes /* @typescript-to-proptypes-ignore */.string,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The text alignment.\n * @default 'center'\n */\n textAlign: PropTypes.oneOf(['center', 'left', 'right']),\n /**\n * The variant to use.\n * @default 'fullWidth'\n */\n variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['fullWidth', 'inset', 'middle']), PropTypes.string])\n} : void 0;\nexport default Divider;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getDividerUtilityClass(slot) {\n return generateUtilityClass('MuiDivider', slot);\n}\nconst dividerClasses = generateUtilityClasses('MuiDivider', ['root', 'absolute', 'fullWidth', 'inset', 'middle', 'flexItem', 'light', 'vertical', 'withChildren', 'withChildrenVertical', 'textAlignRight', 'textAlignLeft', 'wrapper', 'wrapperVertical']);\nexport default dividerClasses;","import * as React from 'react';\n\n/**\n * @ignore - internal component.\n */\nconst ListContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n ListContext.displayName = 'ListContext';\n}\nexport default ListContext;","// Inspired by https://github.com/material-components/material-components-ios/blob/bca36107405594d5b7b16265a5b0ed698f85a5ee/components/Elevation/src/UIColor%2BMaterialElevation.m#L61\nconst getOverlayAlpha = elevation => {\n let alphaValue;\n if (elevation < 1) {\n alphaValue = 5.11916 * elevation ** 2;\n } else {\n alphaValue = 4.5 * Math.log(elevation + 1) + 2;\n }\n return (alphaValue / 100).toFixed(2);\n};\nexport default getOverlayAlpha;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getPaperUtilityClass(slot) {\n return generateUtilityClass('MuiPaper', slot);\n}\nconst paperClasses = generateUtilityClasses('MuiPaper', ['root', 'rounded', 'outlined', 'elevation', 'elevation0', 'elevation1', 'elevation2', 'elevation3', 'elevation4', 'elevation5', 'elevation6', 'elevation7', 'elevation8', 'elevation9', 'elevation10', 'elevation11', 'elevation12', 'elevation13', 'elevation14', 'elevation15', 'elevation16', 'elevation17', 'elevation18', 'elevation19', 'elevation20', 'elevation21', 'elevation22', 'elevation23', 'elevation24']);\nexport default paperClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"component\", \"elevation\", \"square\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes, integerPropType } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport styled from '../styles/styled';\nimport getOverlayAlpha from '../styles/getOverlayAlpha';\nimport useThemeProps from '../styles/useThemeProps';\nimport useTheme from '../styles/useTheme';\nimport { getPaperUtilityClass } from './paperClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n square,\n elevation,\n variant,\n classes\n } = ownerState;\n const slots = {\n root: ['root', variant, !square && 'rounded', variant === 'elevation' && `elevation${elevation}`]\n };\n return composeClasses(slots, getPaperUtilityClass, classes);\n};\nconst PaperRoot = styled('div', {\n name: 'MuiPaper',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[ownerState.variant], !ownerState.square && styles.rounded, ownerState.variant === 'elevation' && styles[`elevation${ownerState.elevation}`]];\n }\n})(({\n theme,\n ownerState\n}) => {\n var _theme$vars$overlays;\n return _extends({\n backgroundColor: (theme.vars || theme).palette.background.paper,\n color: (theme.vars || theme).palette.text.primary,\n transition: theme.transitions.create('box-shadow')\n }, !ownerState.square && {\n borderRadius: theme.shape.borderRadius\n }, ownerState.variant === 'outlined' && {\n border: `1px solid ${(theme.vars || theme).palette.divider}`\n }, ownerState.variant === 'elevation' && _extends({\n boxShadow: (theme.vars || theme).shadows[ownerState.elevation]\n }, !theme.vars && theme.palette.mode === 'dark' && {\n backgroundImage: `linear-gradient(${alpha('#fff', getOverlayAlpha(ownerState.elevation))}, ${alpha('#fff', getOverlayAlpha(ownerState.elevation))})`\n }, theme.vars && {\n backgroundImage: (_theme$vars$overlays = theme.vars.overlays) == null ? void 0 : _theme$vars$overlays[ownerState.elevation]\n }));\n});\nconst Paper = /*#__PURE__*/React.forwardRef(function Paper(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiPaper'\n });\n const {\n className,\n component = 'div',\n elevation = 1,\n square = false,\n variant = 'elevation'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n component,\n elevation,\n square,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const theme = useTheme();\n if (theme.shadows[elevation] === undefined) {\n console.error([`MUI: The elevation provided <Paper elevation={${elevation}}> is not available in the theme.`, `Please make sure that \\`theme.shadows[${elevation}]\\` is defined.`].join('\\n'));\n }\n }\n return /*#__PURE__*/_jsx(PaperRoot, _extends({\n as: component,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Paper.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * Shadow depth, corresponds to `dp` in the spec.\n * It accepts values between 0 and 24 inclusive.\n * @default 1\n */\n elevation: chainPropTypes(integerPropType, props => {\n const {\n elevation,\n variant\n } = props;\n if (elevation > 0 && variant === 'outlined') {\n return new Error(`MUI: Combining \\`elevation={${elevation}}\\` with \\`variant=\"${variant}\"\\` has no effect. Either use \\`elevation={0}\\` or use a different \\`variant\\`.`);\n }\n return null;\n }),\n /**\n * If `true`, rounded corners are disabled.\n * @default false\n */\n square: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The variant to use.\n * @default 'elevation'\n */\n variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['elevation', 'outlined']), PropTypes.string])\n} : void 0;\nexport default Paper;","import ownerDocument from '../ownerDocument';\nexport default function ownerWindow(node) {\n const doc = ownerDocument(node);\n return doc.defaultView || window;\n}","import { unstable_ownerWindow as ownerWindow } from '@mui/utils';\nexport default ownerWindow;","export const reflow = node => node.scrollTop;\nexport function getTransitionProps(props, options) {\n var _style$transitionDura, _style$transitionTimi;\n const {\n timeout,\n easing,\n style = {}\n } = props;\n return {\n duration: (_style$transitionDura = style.transitionDuration) != null ? _style$transitionDura : typeof timeout === 'number' ? timeout : timeout[options.mode] || 0,\n easing: (_style$transitionTimi = style.transitionTimingFunction) != null ? _style$transitionTimi : typeof easing === 'object' ? easing[options.mode] : easing,\n delay: style.transitionDelay\n };\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"addEndListener\", \"appear\", \"children\", \"easing\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"style\", \"timeout\", \"TransitionComponent\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { elementAcceptingRef } from '@mui/utils';\nimport { Transition } from 'react-transition-group';\nimport useTheme from '../styles/useTheme';\nimport { getTransitionProps, reflow } from '../transitions/utils';\nimport useForkRef from '../utils/useForkRef';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction getScale(value) {\n return `scale(${value}, ${value ** 2})`;\n}\nconst styles = {\n entering: {\n opacity: 1,\n transform: getScale(1)\n },\n entered: {\n opacity: 1,\n transform: 'none'\n }\n};\n\n/*\n TODO v6: remove\n Conditionally apply a workaround for the CSS transition bug in Safari 15.4 / WebKit browsers.\n */\nconst isWebKit154 = typeof navigator !== 'undefined' && /^((?!chrome|android).)*(safari|mobile)/i.test(navigator.userAgent) && /(os |version\\/)15(.|_)4/i.test(navigator.userAgent);\n\n/**\n * The Grow transition is used by the [Tooltip](/material-ui/react-tooltip/) and\n * [Popover](/material-ui/react-popover/) components.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\nconst Grow = /*#__PURE__*/React.forwardRef(function Grow(props, ref) {\n const {\n addEndListener,\n appear = true,\n children,\n easing,\n in: inProp,\n onEnter,\n onEntered,\n onEntering,\n onExit,\n onExited,\n onExiting,\n style,\n timeout = 'auto',\n // eslint-disable-next-line react/prop-types\n TransitionComponent = Transition\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const timer = React.useRef();\n const autoTimeout = React.useRef();\n const theme = useTheme();\n const nodeRef = React.useRef(null);\n const handleRef = useForkRef(nodeRef, children.ref, ref);\n const normalizedTransitionCallback = callback => maybeIsAppearing => {\n if (callback) {\n const node = nodeRef.current;\n\n // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n if (maybeIsAppearing === undefined) {\n callback(node);\n } else {\n callback(node, maybeIsAppearing);\n }\n }\n };\n const handleEntering = normalizedTransitionCallback(onEntering);\n const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n reflow(node); // So the animation always start from the start.\n\n const {\n duration: transitionDuration,\n delay,\n easing: transitionTimingFunction\n } = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'enter'\n });\n let duration;\n if (timeout === 'auto') {\n duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n autoTimeout.current = duration;\n } else {\n duration = transitionDuration;\n }\n node.style.transition = [theme.transitions.create('opacity', {\n duration,\n delay\n }), theme.transitions.create('transform', {\n duration: isWebKit154 ? duration : duration * 0.666,\n delay,\n easing: transitionTimingFunction\n })].join(',');\n if (onEnter) {\n onEnter(node, isAppearing);\n }\n });\n const handleEntered = normalizedTransitionCallback(onEntered);\n const handleExiting = normalizedTransitionCallback(onExiting);\n const handleExit = normalizedTransitionCallback(node => {\n const {\n duration: transitionDuration,\n delay,\n easing: transitionTimingFunction\n } = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'exit'\n });\n let duration;\n if (timeout === 'auto') {\n duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n autoTimeout.current = duration;\n } else {\n duration = transitionDuration;\n }\n node.style.transition = [theme.transitions.create('opacity', {\n duration,\n delay\n }), theme.transitions.create('transform', {\n duration: isWebKit154 ? duration : duration * 0.666,\n delay: isWebKit154 ? delay : delay || duration * 0.333,\n easing: transitionTimingFunction\n })].join(',');\n node.style.opacity = 0;\n node.style.transform = getScale(0.75);\n if (onExit) {\n onExit(node);\n }\n });\n const handleExited = normalizedTransitionCallback(onExited);\n const handleAddEndListener = next => {\n if (timeout === 'auto') {\n timer.current = setTimeout(next, autoTimeout.current || 0);\n }\n if (addEndListener) {\n // Old call signature before `react-transition-group` implemented `nodeRef`\n addEndListener(nodeRef.current, next);\n }\n };\n React.useEffect(() => {\n return () => {\n clearTimeout(timer.current);\n };\n }, []);\n return /*#__PURE__*/_jsx(TransitionComponent, _extends({\n appear: appear,\n in: inProp,\n nodeRef: nodeRef,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n onExiting: handleExiting,\n addEndListener: handleAddEndListener,\n timeout: timeout === 'auto' ? null : timeout\n }, other, {\n children: (state, childProps) => {\n return /*#__PURE__*/React.cloneElement(children, _extends({\n style: _extends({\n opacity: 0,\n transform: getScale(0.75),\n visibility: state === 'exited' && !inProp ? 'hidden' : undefined\n }, styles[state], style, children.props.style),\n ref: handleRef\n }, childProps));\n }\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Grow.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * Add a custom transition end trigger. Called with the transitioning DOM\n * node and a done callback. Allows for more fine grained transition end\n * logic. Note: Timeouts are still used as a fallback if provided.\n */\n addEndListener: PropTypes.func,\n /**\n * Perform the enter transition when it first mounts if `in` is also `true`.\n * Set this to `false` to disable this behavior.\n * @default true\n */\n appear: PropTypes.bool,\n /**\n * A single child content element.\n */\n children: elementAcceptingRef.isRequired,\n /**\n * The transition timing function.\n * You may specify a single easing or a object containing enter and exit values.\n */\n easing: PropTypes.oneOfType([PropTypes.shape({\n enter: PropTypes.string,\n exit: PropTypes.string\n }), PropTypes.string]),\n /**\n * If `true`, the component will transition in.\n */\n in: PropTypes.bool,\n /**\n * @ignore\n */\n onEnter: PropTypes.func,\n /**\n * @ignore\n */\n onEntered: PropTypes.func,\n /**\n * @ignore\n */\n onEntering: PropTypes.func,\n /**\n * @ignore\n */\n onExit: PropTypes.func,\n /**\n * @ignore\n */\n onExited: PropTypes.func,\n /**\n * @ignore\n */\n onExiting: PropTypes.func,\n /**\n * @ignore\n */\n style: PropTypes.object,\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n *\n * Set to 'auto' to automatically calculate transition time based on height.\n * @default 'auto'\n */\n timeout: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })])\n} : void 0;\nGrow.muiSupportAuto = true;\nexport default Grow;","/**\n * Safe chained function.\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n */\nexport default function createChainedFunction(...funcs) {\n return funcs.reduce((acc, func) => {\n if (func == null) {\n return acc;\n }\n return function chainedFunction(...args) {\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, () => {});\n}","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { exactProp, HTMLElementType, unstable_useEnhancedEffect as useEnhancedEffect, unstable_useForkRef as useForkRef, unstable_setRef as setRef } from '@mui/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction getContainer(container) {\n return typeof container === 'function' ? container() : container;\n}\n\n/**\n * Portals provide a first-class way to render children into a DOM node\n * that exists outside the DOM hierarchy of the parent component.\n *\n * Demos:\n *\n * - [Portal](https://mui.com/base/react-portal/)\n *\n * API:\n *\n * - [Portal API](https://mui.com/base/react-portal/components-api/#portal)\n */\nconst Portal = /*#__PURE__*/React.forwardRef(function Portal(props, ref) {\n const {\n children,\n container,\n disablePortal = false\n } = props;\n const [mountNode, setMountNode] = React.useState(null);\n // @ts-expect-error TODO upstream fix\n const handleRef = useForkRef( /*#__PURE__*/React.isValidElement(children) ? children.ref : null, ref);\n useEnhancedEffect(() => {\n if (!disablePortal) {\n setMountNode(getContainer(container) || document.body);\n }\n }, [container, disablePortal]);\n useEnhancedEffect(() => {\n if (mountNode && !disablePortal) {\n setRef(ref, mountNode);\n return () => {\n setRef(ref, null);\n };\n }\n return undefined;\n }, [ref, mountNode, disablePortal]);\n if (disablePortal) {\n if ( /*#__PURE__*/React.isValidElement(children)) {\n const newProps = {\n ref: handleRef\n };\n return /*#__PURE__*/React.cloneElement(children, newProps);\n }\n return /*#__PURE__*/_jsx(React.Fragment, {\n children: children\n });\n }\n return /*#__PURE__*/_jsx(React.Fragment, {\n children: mountNode ? /*#__PURE__*/ReactDOM.createPortal(children, mountNode) : mountNode\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Portal.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The children to render into the `container`.\n */\n children: PropTypes.node,\n /**\n * An HTML element or function that returns one.\n * The `container` will have the portal children appended to it.\n *\n * By default, it uses the body of the top-level document object,\n * so it's simply `document.body` most of the time.\n */\n container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n /**\n * The `children` will be under the DOM hierarchy of the parent component.\n * @default false\n */\n disablePortal: PropTypes.bool\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line\n Portal['propTypes' + ''] = exactProp(Portal.propTypes);\n}\nexport default Portal;","import { unstable_ownerWindow as ownerWindow, unstable_ownerDocument as ownerDocument, unstable_getScrollbarSize as getScrollbarSize } from '@mui/utils';\n// Is a vertical scrollbar displayed?\nfunction isOverflowing(container) {\n const doc = ownerDocument(container);\n if (doc.body === container) {\n return ownerWindow(container).innerWidth > doc.documentElement.clientWidth;\n }\n return container.scrollHeight > container.clientHeight;\n}\nexport function ariaHidden(element, show) {\n if (show) {\n element.setAttribute('aria-hidden', 'true');\n } else {\n element.removeAttribute('aria-hidden');\n }\n}\nfunction getPaddingRight(element) {\n return parseInt(ownerWindow(element).getComputedStyle(element).paddingRight, 10) || 0;\n}\nfunction isAriaHiddenForbiddenOnElement(element) {\n // The forbidden HTML tags are the ones from ARIA specification that\n // can be children of body and can't have aria-hidden attribute.\n // cf. https://www.w3.org/TR/html-aria/#docconformance\n const forbiddenTagNames = ['TEMPLATE', 'SCRIPT', 'STYLE', 'LINK', 'MAP', 'META', 'NOSCRIPT', 'PICTURE', 'COL', 'COLGROUP', 'PARAM', 'SLOT', 'SOURCE', 'TRACK'];\n const isForbiddenTagName = forbiddenTagNames.indexOf(element.tagName) !== -1;\n const isInputHidden = element.tagName === 'INPUT' && element.getAttribute('type') === 'hidden';\n return isForbiddenTagName || isInputHidden;\n}\nfunction ariaHiddenSiblings(container, mountElement, currentElement, elementsToExclude, show) {\n const blacklist = [mountElement, currentElement, ...elementsToExclude];\n [].forEach.call(container.children, element => {\n const isNotExcludedElement = blacklist.indexOf(element) === -1;\n const isNotForbiddenElement = !isAriaHiddenForbiddenOnElement(element);\n if (isNotExcludedElement && isNotForbiddenElement) {\n ariaHidden(element, show);\n }\n });\n}\nfunction findIndexOf(items, callback) {\n let idx = -1;\n items.some((item, index) => {\n if (callback(item)) {\n idx = index;\n return true;\n }\n return false;\n });\n return idx;\n}\nfunction handleContainer(containerInfo, props) {\n const restoreStyle = [];\n const container = containerInfo.container;\n if (!props.disableScrollLock) {\n if (isOverflowing(container)) {\n // Compute the size before applying overflow hidden to avoid any scroll jumps.\n const scrollbarSize = getScrollbarSize(ownerDocument(container));\n restoreStyle.push({\n value: container.style.paddingRight,\n property: 'padding-right',\n el: container\n });\n // Use computed style, here to get the real padding to add our scrollbar width.\n container.style.paddingRight = `${getPaddingRight(container) + scrollbarSize}px`;\n\n // .mui-fixed is a global helper.\n const fixedElements = ownerDocument(container).querySelectorAll('.mui-fixed');\n [].forEach.call(fixedElements, element => {\n restoreStyle.push({\n value: element.style.paddingRight,\n property: 'padding-right',\n el: element\n });\n element.style.paddingRight = `${getPaddingRight(element) + scrollbarSize}px`;\n });\n }\n let scrollContainer;\n if (container.parentNode instanceof DocumentFragment) {\n scrollContainer = ownerDocument(container).body;\n } else {\n // Improve Gatsby support\n // https://css-tricks.com/snippets/css/force-vertical-scrollbar/\n const parent = container.parentElement;\n const containerWindow = ownerWindow(container);\n scrollContainer = (parent == null ? void 0 : parent.nodeName) === 'HTML' && containerWindow.getComputedStyle(parent).overflowY === 'scroll' ? parent : container;\n }\n\n // Block the scroll even if no scrollbar is visible to account for mobile keyboard\n // screensize shrink.\n restoreStyle.push({\n value: scrollContainer.style.overflow,\n property: 'overflow',\n el: scrollContainer\n }, {\n value: scrollContainer.style.overflowX,\n property: 'overflow-x',\n el: scrollContainer\n }, {\n value: scrollContainer.style.overflowY,\n property: 'overflow-y',\n el: scrollContainer\n });\n scrollContainer.style.overflow = 'hidden';\n }\n const restore = () => {\n restoreStyle.forEach(({\n value,\n el,\n property\n }) => {\n if (value) {\n el.style.setProperty(property, value);\n } else {\n el.style.removeProperty(property);\n }\n });\n };\n return restore;\n}\nfunction getHiddenSiblings(container) {\n const hiddenSiblings = [];\n [].forEach.call(container.children, element => {\n if (element.getAttribute('aria-hidden') === 'true') {\n hiddenSiblings.push(element);\n }\n });\n return hiddenSiblings;\n}\n/**\n * @ignore - do not document.\n *\n * Proper state management for containers and the modals in those containers.\n * Simplified, but inspired by react-overlay's ModalManager class.\n * Used by the Modal to ensure proper styling of containers.\n */\nexport default class ModalManager {\n constructor() {\n this.containers = void 0;\n this.modals = void 0;\n this.modals = [];\n this.containers = [];\n }\n add(modal, container) {\n let modalIndex = this.modals.indexOf(modal);\n if (modalIndex !== -1) {\n return modalIndex;\n }\n modalIndex = this.modals.length;\n this.modals.push(modal);\n\n // If the modal we are adding is already in the DOM.\n if (modal.modalRef) {\n ariaHidden(modal.modalRef, false);\n }\n const hiddenSiblings = getHiddenSiblings(container);\n ariaHiddenSiblings(container, modal.mount, modal.modalRef, hiddenSiblings, true);\n const containerIndex = findIndexOf(this.containers, item => item.container === container);\n if (containerIndex !== -1) {\n this.containers[containerIndex].modals.push(modal);\n return modalIndex;\n }\n this.containers.push({\n modals: [modal],\n container,\n restore: null,\n hiddenSiblings\n });\n return modalIndex;\n }\n mount(modal, props) {\n const containerIndex = findIndexOf(this.containers, item => item.modals.indexOf(modal) !== -1);\n const containerInfo = this.containers[containerIndex];\n if (!containerInfo.restore) {\n containerInfo.restore = handleContainer(containerInfo, props);\n }\n }\n remove(modal, ariaHiddenState = true) {\n const modalIndex = this.modals.indexOf(modal);\n if (modalIndex === -1) {\n return modalIndex;\n }\n const containerIndex = findIndexOf(this.containers, item => item.modals.indexOf(modal) !== -1);\n const containerInfo = this.containers[containerIndex];\n containerInfo.modals.splice(containerInfo.modals.indexOf(modal), 1);\n this.modals.splice(modalIndex, 1);\n\n // If that was the last modal in a container, clean up the container.\n if (containerInfo.modals.length === 0) {\n // The modal might be closed before it had the chance to be mounted in the DOM.\n if (containerInfo.restore) {\n containerInfo.restore();\n }\n if (modal.modalRef) {\n // In case the modal wasn't in the DOM yet.\n ariaHidden(modal.modalRef, ariaHiddenState);\n }\n ariaHiddenSiblings(containerInfo.container, modal.mount, modal.modalRef, containerInfo.hiddenSiblings, false);\n this.containers.splice(containerIndex, 1);\n } else {\n // Otherwise make sure the next top modal is visible to a screen reader.\n const nextTop = containerInfo.modals[containerInfo.modals.length - 1];\n // as soon as a modal is adding its modalRef is undefined. it can't set\n // aria-hidden because the dom element doesn't exist either\n // when modal was unmounted before modalRef gets null\n if (nextTop.modalRef) {\n ariaHidden(nextTop.modalRef, false);\n }\n }\n return modalIndex;\n }\n isTopModal(modal) {\n return this.modals.length > 0 && this.modals[this.modals.length - 1] === modal;\n }\n}","/* eslint-disable consistent-return, jsx-a11y/no-noninteractive-tabindex */\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { exactProp, elementAcceptingRef, unstable_useForkRef as useForkRef, unstable_ownerDocument as ownerDocument } from '@mui/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n// Inspired by https://github.com/focus-trap/tabbable\nconst candidatesSelector = ['input', 'select', 'textarea', 'a[href]', 'button', '[tabindex]', 'audio[controls]', 'video[controls]', '[contenteditable]:not([contenteditable=\"false\"])'].join(',');\nfunction getTabIndex(node) {\n const tabindexAttr = parseInt(node.getAttribute('tabindex') || '', 10);\n if (!Number.isNaN(tabindexAttr)) {\n return tabindexAttr;\n }\n\n // Browsers do not return `tabIndex` correctly for contentEditable nodes;\n // https://bugs.chromium.org/p/chromium/issues/detail?id=661108&q=contenteditable%20tabindex&can=2\n // so if they don't have a tabindex attribute specifically set, assume it's 0.\n // in Chrome, <details/>, <audio controls/> and <video controls/> elements get a default\n // `tabIndex` of -1 when the 'tabindex' attribute isn't specified in the DOM,\n // yet they are still part of the regular tab order; in FF, they get a default\n // `tabIndex` of 0; since Chrome still puts those elements in the regular tab\n // order, consider their tab index to be 0.\n if (node.contentEditable === 'true' || (node.nodeName === 'AUDIO' || node.nodeName === 'VIDEO' || node.nodeName === 'DETAILS') && node.getAttribute('tabindex') === null) {\n return 0;\n }\n return node.tabIndex;\n}\nfunction isNonTabbableRadio(node) {\n if (node.tagName !== 'INPUT' || node.type !== 'radio') {\n return false;\n }\n if (!node.name) {\n return false;\n }\n const getRadio = selector => node.ownerDocument.querySelector(`input[type=\"radio\"]${selector}`);\n let roving = getRadio(`[name=\"${node.name}\"]:checked`);\n if (!roving) {\n roving = getRadio(`[name=\"${node.name}\"]`);\n }\n return roving !== node;\n}\nfunction isNodeMatchingSelectorFocusable(node) {\n if (node.disabled || node.tagName === 'INPUT' && node.type === 'hidden' || isNonTabbableRadio(node)) {\n return false;\n }\n return true;\n}\nfunction defaultGetTabbable(root) {\n const regularTabNodes = [];\n const orderedTabNodes = [];\n Array.from(root.querySelectorAll(candidatesSelector)).forEach((node, i) => {\n const nodeTabIndex = getTabIndex(node);\n if (nodeTabIndex === -1 || !isNodeMatchingSelectorFocusable(node)) {\n return;\n }\n if (nodeTabIndex === 0) {\n regularTabNodes.push(node);\n } else {\n orderedTabNodes.push({\n documentOrder: i,\n tabIndex: nodeTabIndex,\n node: node\n });\n }\n });\n return orderedTabNodes.sort((a, b) => a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex).map(a => a.node).concat(regularTabNodes);\n}\nfunction defaultIsEnabled() {\n return true;\n}\n\n/**\n * Utility component that locks focus inside the component.\n *\n * Demos:\n *\n * - [Focus Trap](https://mui.com/base/react-focus-trap/)\n *\n * API:\n *\n * - [FocusTrap API](https://mui.com/base/react-focus-trap/components-api/#focus-trap)\n */\nfunction FocusTrap(props) {\n const {\n children,\n disableAutoFocus = false,\n disableEnforceFocus = false,\n disableRestoreFocus = false,\n getTabbable = defaultGetTabbable,\n isEnabled = defaultIsEnabled,\n open\n } = props;\n const ignoreNextEnforceFocus = React.useRef(false);\n const sentinelStart = React.useRef(null);\n const sentinelEnd = React.useRef(null);\n const nodeToRestore = React.useRef(null);\n const reactFocusEventTarget = React.useRef(null);\n // This variable is useful when disableAutoFocus is true.\n // It waits for the active element to move into the component to activate.\n const activated = React.useRef(false);\n const rootRef = React.useRef(null);\n // @ts-expect-error TODO upstream fix\n const handleRef = useForkRef(children.ref, rootRef);\n const lastKeydown = React.useRef(null);\n React.useEffect(() => {\n // We might render an empty child.\n if (!open || !rootRef.current) {\n return;\n }\n activated.current = !disableAutoFocus;\n }, [disableAutoFocus, open]);\n React.useEffect(() => {\n // We might render an empty child.\n if (!open || !rootRef.current) {\n return;\n }\n const doc = ownerDocument(rootRef.current);\n if (!rootRef.current.contains(doc.activeElement)) {\n if (!rootRef.current.hasAttribute('tabIndex')) {\n if (process.env.NODE_ENV !== 'production') {\n console.error(['MUI: The modal content node does not accept focus.', 'For the benefit of assistive technologies, ' + 'the tabIndex of the node is being set to \"-1\".'].join('\\n'));\n }\n rootRef.current.setAttribute('tabIndex', '-1');\n }\n if (activated.current) {\n rootRef.current.focus();\n }\n }\n return () => {\n // restoreLastFocus()\n if (!disableRestoreFocus) {\n // In IE11 it is possible for document.activeElement to be null resulting\n // in nodeToRestore.current being null.\n // Not all elements in IE11 have a focus method.\n // Once IE11 support is dropped the focus() call can be unconditional.\n if (nodeToRestore.current && nodeToRestore.current.focus) {\n ignoreNextEnforceFocus.current = true;\n nodeToRestore.current.focus();\n }\n nodeToRestore.current = null;\n }\n };\n // Missing `disableRestoreFocus` which is fine.\n // We don't support changing that prop on an open FocusTrap\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open]);\n React.useEffect(() => {\n // We might render an empty child.\n if (!open || !rootRef.current) {\n return;\n }\n const doc = ownerDocument(rootRef.current);\n const contain = nativeEvent => {\n const {\n current: rootElement\n } = rootRef;\n\n // Cleanup functions are executed lazily in React 17.\n // Contain can be called between the component being unmounted and its cleanup function being run.\n if (rootElement === null) {\n return;\n }\n if (!doc.hasFocus() || disableEnforceFocus || !isEnabled() || ignoreNextEnforceFocus.current) {\n ignoreNextEnforceFocus.current = false;\n return;\n }\n if (!rootElement.contains(doc.activeElement)) {\n // if the focus event is not coming from inside the children's react tree, reset the refs\n if (nativeEvent && reactFocusEventTarget.current !== nativeEvent.target || doc.activeElement !== reactFocusEventTarget.current) {\n reactFocusEventTarget.current = null;\n } else if (reactFocusEventTarget.current !== null) {\n return;\n }\n if (!activated.current) {\n return;\n }\n let tabbable = [];\n if (doc.activeElement === sentinelStart.current || doc.activeElement === sentinelEnd.current) {\n tabbable = getTabbable(rootRef.current);\n }\n if (tabbable.length > 0) {\n var _lastKeydown$current, _lastKeydown$current2;\n const isShiftTab = Boolean(((_lastKeydown$current = lastKeydown.current) == null ? void 0 : _lastKeydown$current.shiftKey) && ((_lastKeydown$current2 = lastKeydown.current) == null ? void 0 : _lastKeydown$current2.key) === 'Tab');\n const focusNext = tabbable[0];\n const focusPrevious = tabbable[tabbable.length - 1];\n if (typeof focusNext !== 'string' && typeof focusPrevious !== 'string') {\n if (isShiftTab) {\n focusPrevious.focus();\n } else {\n focusNext.focus();\n }\n }\n } else {\n rootElement.focus();\n }\n }\n };\n const loopFocus = nativeEvent => {\n lastKeydown.current = nativeEvent;\n if (disableEnforceFocus || !isEnabled() || nativeEvent.key !== 'Tab') {\n return;\n }\n\n // Make sure the next tab starts from the right place.\n // doc.activeElement refers to the origin.\n if (doc.activeElement === rootRef.current && nativeEvent.shiftKey) {\n // We need to ignore the next contain as\n // it will try to move the focus back to the rootRef element.\n ignoreNextEnforceFocus.current = true;\n if (sentinelEnd.current) {\n sentinelEnd.current.focus();\n }\n }\n };\n doc.addEventListener('focusin', contain);\n doc.addEventListener('keydown', loopFocus, true);\n\n // With Edge, Safari and Firefox, no focus related events are fired when the focused area stops being a focused area.\n // e.g. https://bugzilla.mozilla.org/show_bug.cgi?id=559561.\n // Instead, we can look if the active element was restored on the BODY element.\n //\n // The whatwg spec defines how the browser should behave but does not explicitly mention any events:\n // https://html.spec.whatwg.org/multipage/interaction.html#focus-fixup-rule.\n const interval = setInterval(() => {\n if (doc.activeElement && doc.activeElement.tagName === 'BODY') {\n contain(null);\n }\n }, 50);\n return () => {\n clearInterval(interval);\n doc.removeEventListener('focusin', contain);\n doc.removeEventListener('keydown', loopFocus, true);\n };\n }, [disableAutoFocus, disableEnforceFocus, disableRestoreFocus, isEnabled, open, getTabbable]);\n const onFocus = event => {\n if (nodeToRestore.current === null) {\n nodeToRestore.current = event.relatedTarget;\n }\n activated.current = true;\n reactFocusEventTarget.current = event.target;\n const childrenPropsHandler = children.props.onFocus;\n if (childrenPropsHandler) {\n childrenPropsHandler(event);\n }\n };\n const handleFocusSentinel = event => {\n if (nodeToRestore.current === null) {\n nodeToRestore.current = event.relatedTarget;\n }\n activated.current = true;\n };\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(\"div\", {\n tabIndex: open ? 0 : -1,\n onFocus: handleFocusSentinel,\n ref: sentinelStart,\n \"data-testid\": \"sentinelStart\"\n }), /*#__PURE__*/React.cloneElement(children, {\n ref: handleRef,\n onFocus\n }), /*#__PURE__*/_jsx(\"div\", {\n tabIndex: open ? 0 : -1,\n onFocus: handleFocusSentinel,\n ref: sentinelEnd,\n \"data-testid\": \"sentinelEnd\"\n })]\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? FocusTrap.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * A single child content element.\n */\n children: elementAcceptingRef,\n /**\n * If `true`, the focus trap will not automatically shift focus to itself when it opens, and\n * replace it to the last focused element when it closes.\n * This also works correctly with any focus trap children that have the `disableAutoFocus` prop.\n *\n * Generally this should never be set to `true` as it makes the focus trap less\n * accessible to assistive technologies, like screen readers.\n * @default false\n */\n disableAutoFocus: PropTypes.bool,\n /**\n * If `true`, the focus trap will not prevent focus from leaving the focus trap while open.\n *\n * Generally this should never be set to `true` as it makes the focus trap less\n * accessible to assistive technologies, like screen readers.\n * @default false\n */\n disableEnforceFocus: PropTypes.bool,\n /**\n * If `true`, the focus trap will not restore focus to previously focused element once\n * focus trap is hidden or unmounted.\n * @default false\n */\n disableRestoreFocus: PropTypes.bool,\n /**\n * Returns an array of ordered tabbable nodes (i.e. in tab order) within the root.\n * For instance, you can provide the \"tabbable\" npm dependency.\n * @param {HTMLElement} root\n */\n getTabbable: PropTypes.func,\n /**\n * This prop extends the `open` prop.\n * It allows to toggle the open state without having to wait for a rerender when changing the `open` prop.\n * This prop should be memoized.\n * It can be used to support multiple focus trap mounted at the same time.\n * @default function defaultIsEnabled(): boolean {\n * return true;\n * }\n */\n isEnabled: PropTypes.func,\n /**\n * If `true`, focus is locked.\n */\n open: PropTypes.bool.isRequired\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line\n FocusTrap['propTypes' + ''] = exactProp(FocusTrap.propTypes);\n}\nexport default FocusTrap;","import generateUtilityClasses from '../generateUtilityClasses';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getModalUtilityClass(slot) {\n return generateUtilityClass('MuiModal', slot);\n}\nconst modalUnstyledClasses = generateUtilityClasses('MuiModal', ['root', 'hidden', 'backdrop']);\nexport default modalUnstyledClasses;","/**\n * Determines if a given element is a DOM element name (i.e. not a React component).\n */\nexport default function isHostComponent(element) {\n return typeof element === 'string';\n}","/**\n * Removes event handlers from the given object.\n * A field is considered an event handler if it is a function with a name beginning with `on`.\n *\n * @param object Object to remove event handlers from.\n * @returns Object with event handlers removed.\n */\nexport default function omitEventHandlers(object) {\n if (object === undefined) {\n return {};\n }\n const result = {};\n Object.keys(object).filter(prop => !(prop.match(/^on[A-Z]/) && typeof object[prop] === 'function')).forEach(prop => {\n result[prop] = object[prop];\n });\n return result;\n}","/**\n * If `componentProps` is a function, calls it with the provided `ownerState`.\n * Otherwise, just returns `componentProps`.\n */\nexport default function resolveComponentProps(componentProps, ownerState) {\n if (typeof componentProps === 'function') {\n return componentProps(ownerState);\n }\n return componentProps;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"elementType\", \"externalSlotProps\", \"ownerState\"];\nimport { unstable_useForkRef as useForkRef } from '@mui/utils';\nimport appendOwnerState from './appendOwnerState';\nimport mergeSlotProps from './mergeSlotProps';\nimport resolveComponentProps from './resolveComponentProps';\n/**\n * @ignore - do not document.\n * Builds the props to be passed into the slot of an unstyled component.\n * It merges the internal props of the component with the ones supplied by the user, allowing to customize the behavior.\n * If the slot component is not a host component, it also merges in the `ownerState`.\n *\n * @param parameters.getSlotProps - A function that returns the props to be passed to the slot component.\n */\nexport default function useSlotProps(parameters) {\n var _parameters$additiona;\n const {\n elementType,\n externalSlotProps,\n ownerState\n } = parameters,\n rest = _objectWithoutPropertiesLoose(parameters, _excluded);\n const resolvedComponentsProps = resolveComponentProps(externalSlotProps, ownerState);\n const {\n props: mergedProps,\n internalRef\n } = mergeSlotProps(_extends({}, rest, {\n externalSlotProps: resolvedComponentsProps\n }));\n const ref = useForkRef(internalRef, resolvedComponentsProps == null ? void 0 : resolvedComponentsProps.ref, (_parameters$additiona = parameters.additionalProps) == null ? void 0 : _parameters$additiona.ref);\n const props = appendOwnerState(elementType, _extends({}, mergedProps, {\n ref\n }), ownerState);\n return props;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport clsx from 'clsx';\nimport extractEventHandlers from './extractEventHandlers';\nimport omitEventHandlers from './omitEventHandlers';\n/**\n * Merges the slot component internal props (usually coming from a hook)\n * with the externally provided ones.\n *\n * The merge order is (the latter overrides the former):\n * 1. The internal props (specified as a getter function to work with get*Props hook result)\n * 2. Additional props (specified internally on an unstyled component)\n * 3. External props specified on the owner component. These should only be used on a root slot.\n * 4. External props specified in the `slotProps.*` prop.\n * 5. The `className` prop - combined from all the above.\n * @param parameters\n * @returns\n */\nexport default function mergeSlotProps(parameters) {\n const {\n getSlotProps,\n additionalProps,\n externalSlotProps,\n externalForwardedProps,\n className\n } = parameters;\n if (!getSlotProps) {\n // The simpler case - getSlotProps is not defined, so no internal event handlers are defined,\n // so we can simply merge all the props without having to worry about extracting event handlers.\n const joinedClasses = clsx(externalForwardedProps == null ? void 0 : externalForwardedProps.className, externalSlotProps == null ? void 0 : externalSlotProps.className, className, additionalProps == null ? void 0 : additionalProps.className);\n const mergedStyle = _extends({}, additionalProps == null ? void 0 : additionalProps.style, externalForwardedProps == null ? void 0 : externalForwardedProps.style, externalSlotProps == null ? void 0 : externalSlotProps.style);\n const props = _extends({}, additionalProps, externalForwardedProps, externalSlotProps);\n if (joinedClasses.length > 0) {\n props.className = joinedClasses;\n }\n if (Object.keys(mergedStyle).length > 0) {\n props.style = mergedStyle;\n }\n return {\n props,\n internalRef: undefined\n };\n }\n\n // In this case, getSlotProps is responsible for calling the external event handlers.\n // We don't need to include them in the merged props because of this.\n\n const eventHandlers = extractEventHandlers(_extends({}, externalForwardedProps, externalSlotProps));\n const componentsPropsWithoutEventHandlers = omitEventHandlers(externalSlotProps);\n const otherPropsWithoutEventHandlers = omitEventHandlers(externalForwardedProps);\n const internalSlotProps = getSlotProps(eventHandlers);\n\n // The order of classes is important here.\n // Emotion (that we use in libraries consuming MUI Base) depends on this order\n // to properly override style. It requires the most important classes to be last\n // (see https://github.com/mui/material-ui/pull/33205) for the related discussion.\n const joinedClasses = clsx(internalSlotProps == null ? void 0 : internalSlotProps.className, additionalProps == null ? void 0 : additionalProps.className, className, externalForwardedProps == null ? void 0 : externalForwardedProps.className, externalSlotProps == null ? void 0 : externalSlotProps.className);\n const mergedStyle = _extends({}, internalSlotProps == null ? void 0 : internalSlotProps.style, additionalProps == null ? void 0 : additionalProps.style, externalForwardedProps == null ? void 0 : externalForwardedProps.style, externalSlotProps == null ? void 0 : externalSlotProps.style);\n const props = _extends({}, internalSlotProps, additionalProps, otherPropsWithoutEventHandlers, componentsPropsWithoutEventHandlers);\n if (joinedClasses.length > 0) {\n props.className = joinedClasses;\n }\n if (Object.keys(mergedStyle).length > 0) {\n props.style = mergedStyle;\n }\n return {\n props,\n internalRef: internalSlotProps.ref\n };\n}","/**\n * Extracts event handlers from a given object.\n * A prop is considered an event handler if it is a function and its name starts with `on`.\n *\n * @param object An object to extract event handlers from.\n * @param excludeKeys An array of keys to exclude from the returned object.\n */\nexport default function extractEventHandlers(object, excludeKeys = []) {\n if (object === undefined) {\n return {};\n }\n const result = {};\n Object.keys(object).filter(prop => prop.match(/^on[A-Z]/) && typeof object[prop] === 'function' && !excludeKeys.includes(prop)).forEach(prop => {\n result[prop] = object[prop];\n });\n return result;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport isHostComponent from './isHostComponent';\n\n/**\n * Type of the ownerState based on the type of an element it applies to.\n * This resolves to the provided OwnerState for React components and `undefined` for host components.\n * Falls back to `OwnerState | undefined` when the exact type can't be determined in development time.\n */\n\n/**\n * Appends the ownerState object to the props, merging with the existing one if necessary.\n *\n * @param elementType Type of the element that owns the `existingProps`. If the element is a DOM node or undefined, `ownerState` is not applied.\n * @param otherProps Props of the element.\n * @param ownerState\n */\nexport default function appendOwnerState(elementType, otherProps, ownerState) {\n if (elementType === undefined || isHostComponent(elementType)) {\n return otherProps;\n }\n return _extends({}, otherProps, {\n ownerState: _extends({}, otherProps.ownerState, ownerState)\n });\n}","import * as React from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultContextValue = {\n disableDefaultClasses: false\n};\nconst ClassNameConfiguratorContext = /*#__PURE__*/React.createContext(defaultContextValue);\n/**\n * @ignore - internal hook.\n *\n * Wraps the `generateUtilityClass` function and controls how the classes are generated.\n * Currently it only affects whether the classes are applied or not.\n *\n * @returns Function to be called with the `generateUtilityClass` function specific to a component to generate the classes.\n */\nexport function useClassNamesOverride(generateUtilityClass) {\n const {\n disableDefaultClasses\n } = React.useContext(ClassNameConfiguratorContext);\n return slot => {\n if (disableDefaultClasses) {\n return '';\n }\n return generateUtilityClass(slot);\n };\n}\n\n/**\n * Allows to configure the components within to not apply any built-in classes.\n */\nexport default function ClassNameConfigurator(props) {\n const {\n disableDefaultClasses,\n children\n } = props;\n const contextValue = React.useMemo(() => ({\n disableDefaultClasses: disableDefaultClasses != null ? disableDefaultClasses : false\n }), [disableDefaultClasses]);\n return /*#__PURE__*/_jsx(ClassNameConfiguratorContext.Provider, {\n value: contextValue,\n children: children\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"closeAfterTransition\", \"component\", \"container\", \"disableAutoFocus\", \"disableEnforceFocus\", \"disableEscapeKeyDown\", \"disablePortal\", \"disableRestoreFocus\", \"disableScrollLock\", \"hideBackdrop\", \"keepMounted\", \"manager\", \"onBackdropClick\", \"onClose\", \"onKeyDown\", \"open\", \"onTransitionEnter\", \"onTransitionExited\", \"slotProps\", \"slots\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { elementAcceptingRef, HTMLElementType, unstable_ownerDocument as ownerDocument, unstable_useForkRef as useForkRef, unstable_createChainedFunction as createChainedFunction, unstable_useEventCallback as useEventCallback } from '@mui/utils';\nimport composeClasses from '../composeClasses';\nimport Portal from '../Portal';\nimport ModalManager, { ariaHidden } from './ModalManager';\nimport FocusTrap from '../FocusTrap';\nimport { getModalUtilityClass } from './modalUnstyledClasses';\nimport { useSlotProps } from '../utils';\nimport { useClassNamesOverride } from '../utils/ClassNameConfigurator';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n open,\n exited\n } = ownerState;\n const slots = {\n root: ['root', !open && exited && 'hidden'],\n backdrop: ['backdrop']\n };\n return composeClasses(slots, useClassNamesOverride(getModalUtilityClass));\n};\nfunction getContainer(container) {\n return typeof container === 'function' ? container() : container;\n}\nfunction getHasTransition(children) {\n return children ? children.props.hasOwnProperty('in') : false;\n}\n\n// A modal manager used to track and manage the state of open Modals.\n// Modals don't open on the server so this won't conflict with concurrent requests.\nconst defaultManager = new ModalManager();\n\n/**\n * Modal is a lower-level construct that is leveraged by the following components:\n *\n * * [Dialog](https://mui.com/material-ui/api/dialog/)\n * * [Drawer](https://mui.com/material-ui/api/drawer/)\n * * [Menu](https://mui.com/material-ui/api/menu/)\n * * [Popover](https://mui.com/material-ui/api/popover/)\n *\n * If you are creating a modal dialog, you probably want to use the [Dialog](https://mui.com/material-ui/api/dialog/) component\n * rather than directly using Modal.\n *\n * This component shares many concepts with [react-overlays](https://react-bootstrap.github.io/react-overlays/#modals).\n *\n * Demos:\n *\n * - [Unstyled Modal](https://mui.com/base/react-modal/)\n *\n * API:\n *\n * - [ModalUnstyled API](https://mui.com/base/react-modal/components-api/#modal-unstyled)\n */\nconst ModalUnstyled = /*#__PURE__*/React.forwardRef(function ModalUnstyled(props, forwardedRef) {\n var _props$ariaHidden, _ref;\n const {\n children,\n closeAfterTransition = false,\n component,\n container,\n disableAutoFocus = false,\n disableEnforceFocus = false,\n disableEscapeKeyDown = false,\n disablePortal = false,\n disableRestoreFocus = false,\n disableScrollLock = false,\n hideBackdrop = false,\n keepMounted = false,\n // private\n manager = defaultManager,\n onBackdropClick,\n onClose,\n onKeyDown,\n open,\n onTransitionEnter,\n onTransitionExited,\n slotProps = {},\n slots = {}\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const [exited, setExited] = React.useState(!open);\n const modal = React.useRef({});\n const mountNodeRef = React.useRef(null);\n const modalRef = React.useRef(null);\n const handleRef = useForkRef(modalRef, forwardedRef);\n const hasTransition = getHasTransition(children);\n const ariaHiddenProp = (_props$ariaHidden = props['aria-hidden']) != null ? _props$ariaHidden : true;\n const getDoc = () => ownerDocument(mountNodeRef.current);\n const getModal = () => {\n modal.current.modalRef = modalRef.current;\n modal.current.mountNode = mountNodeRef.current;\n return modal.current;\n };\n const handleMounted = () => {\n manager.mount(getModal(), {\n disableScrollLock\n });\n\n // Fix a bug on Chrome where the scroll isn't initially 0.\n if (modalRef.current) {\n modalRef.current.scrollTop = 0;\n }\n };\n const handleOpen = useEventCallback(() => {\n const resolvedContainer = getContainer(container) || getDoc().body;\n manager.add(getModal(), resolvedContainer);\n\n // The element was already mounted.\n if (modalRef.current) {\n handleMounted();\n }\n });\n const isTopModal = React.useCallback(() => manager.isTopModal(getModal()), [manager]);\n const handlePortalRef = useEventCallback(node => {\n mountNodeRef.current = node;\n if (!node || !modalRef.current) {\n return;\n }\n if (open && isTopModal()) {\n handleMounted();\n } else {\n ariaHidden(modalRef.current, ariaHiddenProp);\n }\n });\n const handleClose = React.useCallback(() => {\n manager.remove(getModal(), ariaHiddenProp);\n }, [manager, ariaHiddenProp]);\n React.useEffect(() => {\n return () => {\n handleClose();\n };\n }, [handleClose]);\n React.useEffect(() => {\n if (open) {\n handleOpen();\n } else if (!hasTransition || !closeAfterTransition) {\n handleClose();\n }\n }, [open, handleClose, hasTransition, closeAfterTransition, handleOpen]);\n const ownerState = _extends({}, props, {\n closeAfterTransition,\n disableAutoFocus,\n disableEnforceFocus,\n disableEscapeKeyDown,\n disablePortal,\n disableRestoreFocus,\n disableScrollLock,\n exited,\n hideBackdrop,\n keepMounted\n });\n const classes = useUtilityClasses(ownerState);\n const handleEnter = () => {\n setExited(false);\n if (onTransitionEnter) {\n onTransitionEnter();\n }\n };\n const handleExited = () => {\n setExited(true);\n if (onTransitionExited) {\n onTransitionExited();\n }\n if (closeAfterTransition) {\n handleClose();\n }\n };\n const handleBackdropClick = event => {\n if (event.target !== event.currentTarget) {\n return;\n }\n if (onBackdropClick) {\n onBackdropClick(event);\n }\n if (onClose) {\n onClose(event, 'backdropClick');\n }\n };\n const handleKeyDown = event => {\n if (onKeyDown) {\n onKeyDown(event);\n }\n\n // The handler doesn't take event.defaultPrevented into account:\n //\n // event.preventDefault() is meant to stop default behaviors like\n // clicking a checkbox to check it, hitting a button to submit a form,\n // and hitting left arrow to move the cursor in a text input etc.\n // Only special HTML elements have these default behaviors.\n if (event.key !== 'Escape' || !isTopModal()) {\n return;\n }\n if (!disableEscapeKeyDown) {\n // Swallow the event, in case someone is listening for the escape key on the body.\n event.stopPropagation();\n if (onClose) {\n onClose(event, 'escapeKeyDown');\n }\n }\n };\n const childProps = {};\n if (children.props.tabIndex === undefined) {\n childProps.tabIndex = '-1';\n }\n\n // It's a Transition like component\n if (hasTransition) {\n childProps.onEnter = createChainedFunction(handleEnter, children.props.onEnter);\n childProps.onExited = createChainedFunction(handleExited, children.props.onExited);\n }\n const Root = (_ref = component != null ? component : slots.root) != null ? _ref : 'div';\n const rootProps = useSlotProps({\n elementType: Root,\n externalSlotProps: slotProps.root,\n externalForwardedProps: other,\n additionalProps: {\n ref: handleRef,\n role: 'presentation',\n onKeyDown: handleKeyDown\n },\n className: classes.root,\n ownerState\n });\n const BackdropComponent = slots.backdrop;\n const backdropProps = useSlotProps({\n elementType: BackdropComponent,\n externalSlotProps: slotProps.backdrop,\n additionalProps: {\n 'aria-hidden': true,\n onClick: handleBackdropClick,\n open\n },\n className: classes.backdrop,\n ownerState\n });\n if (!keepMounted && !open && (!hasTransition || exited)) {\n return null;\n }\n return /*#__PURE__*/_jsx(Portal\n // @ts-expect-error TODO: include ref to MUI Base Portal props\n , {\n ref: handlePortalRef,\n container: container,\n disablePortal: disablePortal,\n children: /*#__PURE__*/_jsxs(Root, _extends({}, rootProps, {\n children: [!hideBackdrop && BackdropComponent ? /*#__PURE__*/_jsx(BackdropComponent, _extends({}, backdropProps)) : null, /*#__PURE__*/_jsx(FocusTrap, {\n disableEnforceFocus: disableEnforceFocus,\n disableAutoFocus: disableAutoFocus,\n disableRestoreFocus: disableRestoreFocus,\n isEnabled: isTopModal,\n open: open,\n children: /*#__PURE__*/React.cloneElement(children, childProps)\n })]\n }))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? ModalUnstyled.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * A single child content element.\n */\n children: elementAcceptingRef.isRequired,\n /**\n * When set to true the Modal waits until a nested Transition is completed before closing.\n * @default false\n */\n closeAfterTransition: PropTypes.bool,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * An HTML element or function that returns one.\n * The `container` will have the portal children appended to it.\n *\n * By default, it uses the body of the top-level document object,\n * so it's simply `document.body` most of the time.\n */\n container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n /**\n * If `true`, the modal will not automatically shift focus to itself when it opens, and\n * replace it to the last focused element when it closes.\n * This also works correctly with any modal children that have the `disableAutoFocus` prop.\n *\n * Generally this should never be set to `true` as it makes the modal less\n * accessible to assistive technologies, like screen readers.\n * @default false\n */\n disableAutoFocus: PropTypes.bool,\n /**\n * If `true`, the modal will not prevent focus from leaving the modal while open.\n *\n * Generally this should never be set to `true` as it makes the modal less\n * accessible to assistive technologies, like screen readers.\n * @default false\n */\n disableEnforceFocus: PropTypes.bool,\n /**\n * If `true`, hitting escape will not fire the `onClose` callback.\n * @default false\n */\n disableEscapeKeyDown: PropTypes.bool,\n /**\n * The `children` will be under the DOM hierarchy of the parent component.\n * @default false\n */\n disablePortal: PropTypes.bool,\n /**\n * If `true`, the modal will not restore focus to previously focused element once\n * modal is hidden or unmounted.\n * @default false\n */\n disableRestoreFocus: PropTypes.bool,\n /**\n * Disable the scroll lock behavior.\n * @default false\n */\n disableScrollLock: PropTypes.bool,\n /**\n * If `true`, the backdrop is not rendered.\n * @default false\n */\n hideBackdrop: PropTypes.bool,\n /**\n * Always keep the children in the DOM.\n * This prop can be useful in SEO situation or\n * when you want to maximize the responsiveness of the Modal.\n * @default false\n */\n keepMounted: PropTypes.bool,\n /**\n * Callback fired when the backdrop is clicked.\n * @deprecated Use the `onClose` prop with the `reason` argument to handle the `backdropClick` events.\n */\n onBackdropClick: PropTypes.func,\n /**\n * Callback fired when the component requests to be closed.\n * The `reason` parameter can optionally be used to control the response to `onClose`.\n *\n * @param {object} event The event source of the callback.\n * @param {string} reason Can be: `\"escapeKeyDown\"`, `\"backdropClick\"`.\n */\n onClose: PropTypes.func,\n /**\n * @ignore\n */\n onKeyDown: PropTypes.func,\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool.isRequired,\n /**\n * The props used for each slot inside the Modal.\n * @default {}\n */\n slotProps: PropTypes.shape({\n backdrop: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * The components used for each slot inside the Modal.\n * Either a string to use a HTML element or a component.\n * @default {}\n */\n slots: PropTypes.shape({\n backdrop: PropTypes.elementType,\n root: PropTypes.elementType\n })\n} : void 0;\nexport default ModalUnstyled;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"addEndListener\", \"appear\", \"children\", \"easing\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"style\", \"timeout\", \"TransitionComponent\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { Transition } from 'react-transition-group';\nimport { elementAcceptingRef } from '@mui/utils';\nimport useTheme from '../styles/useTheme';\nimport { reflow, getTransitionProps } from '../transitions/utils';\nimport useForkRef from '../utils/useForkRef';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst styles = {\n entering: {\n opacity: 1\n },\n entered: {\n opacity: 1\n }\n};\n\n/**\n * The Fade transition is used by the [Modal](/material-ui/react-modal/) component.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\nconst Fade = /*#__PURE__*/React.forwardRef(function Fade(props, ref) {\n const theme = useTheme();\n const defaultTimeout = {\n enter: theme.transitions.duration.enteringScreen,\n exit: theme.transitions.duration.leavingScreen\n };\n const {\n addEndListener,\n appear = true,\n children,\n easing,\n in: inProp,\n onEnter,\n onEntered,\n onEntering,\n onExit,\n onExited,\n onExiting,\n style,\n timeout = defaultTimeout,\n // eslint-disable-next-line react/prop-types\n TransitionComponent = Transition\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const enableStrictModeCompat = true;\n const nodeRef = React.useRef(null);\n const handleRef = useForkRef(nodeRef, children.ref, ref);\n const normalizedTransitionCallback = callback => maybeIsAppearing => {\n if (callback) {\n const node = nodeRef.current;\n\n // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n if (maybeIsAppearing === undefined) {\n callback(node);\n } else {\n callback(node, maybeIsAppearing);\n }\n }\n };\n const handleEntering = normalizedTransitionCallback(onEntering);\n const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n reflow(node); // So the animation always start from the start.\n\n const transitionProps = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'enter'\n });\n node.style.webkitTransition = theme.transitions.create('opacity', transitionProps);\n node.style.transition = theme.transitions.create('opacity', transitionProps);\n if (onEnter) {\n onEnter(node, isAppearing);\n }\n });\n const handleEntered = normalizedTransitionCallback(onEntered);\n const handleExiting = normalizedTransitionCallback(onExiting);\n const handleExit = normalizedTransitionCallback(node => {\n const transitionProps = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'exit'\n });\n node.style.webkitTransition = theme.transitions.create('opacity', transitionProps);\n node.style.transition = theme.transitions.create('opacity', transitionProps);\n if (onExit) {\n onExit(node);\n }\n });\n const handleExited = normalizedTransitionCallback(onExited);\n const handleAddEndListener = next => {\n if (addEndListener) {\n // Old call signature before `react-transition-group` implemented `nodeRef`\n addEndListener(nodeRef.current, next);\n }\n };\n return /*#__PURE__*/_jsx(TransitionComponent, _extends({\n appear: appear,\n in: inProp,\n nodeRef: enableStrictModeCompat ? nodeRef : undefined,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n onExiting: handleExiting,\n addEndListener: handleAddEndListener,\n timeout: timeout\n }, other, {\n children: (state, childProps) => {\n return /*#__PURE__*/React.cloneElement(children, _extends({\n style: _extends({\n opacity: 0,\n visibility: state === 'exited' && !inProp ? 'hidden' : undefined\n }, styles[state], style, children.props.style),\n ref: handleRef\n }, childProps));\n }\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Fade.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * Add a custom transition end trigger. Called with the transitioning DOM\n * node and a done callback. Allows for more fine grained transition end\n * logic. Note: Timeouts are still used as a fallback if provided.\n */\n addEndListener: PropTypes.func,\n /**\n * Perform the enter transition when it first mounts if `in` is also `true`.\n * Set this to `false` to disable this behavior.\n * @default true\n */\n appear: PropTypes.bool,\n /**\n * A single child content element.\n */\n children: elementAcceptingRef.isRequired,\n /**\n * The transition timing function.\n * You may specify a single easing or a object containing enter and exit values.\n */\n easing: PropTypes.oneOfType([PropTypes.shape({\n enter: PropTypes.string,\n exit: PropTypes.string\n }), PropTypes.string]),\n /**\n * If `true`, the component will transition in.\n */\n in: PropTypes.bool,\n /**\n * @ignore\n */\n onEnter: PropTypes.func,\n /**\n * @ignore\n */\n onEntered: PropTypes.func,\n /**\n * @ignore\n */\n onEntering: PropTypes.func,\n /**\n * @ignore\n */\n onExit: PropTypes.func,\n /**\n * @ignore\n */\n onExited: PropTypes.func,\n /**\n * @ignore\n */\n onExiting: PropTypes.func,\n /**\n * @ignore\n */\n style: PropTypes.object,\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n * @default {\n * enter: theme.transitions.duration.enteringScreen,\n * exit: theme.transitions.duration.leavingScreen,\n * }\n */\n timeout: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })])\n} : void 0;\nexport default Fade;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getBackdropUtilityClass(slot) {\n return generateUtilityClass('MuiBackdrop', slot);\n}\nconst backdropClasses = generateUtilityClasses('MuiBackdrop', ['root', 'invisible']);\nexport default backdropClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"component\", \"components\", \"componentsProps\", \"invisible\", \"open\", \"slotProps\", \"slots\", \"TransitionComponent\", \"transitionDuration\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport Fade from '../Fade';\nimport { getBackdropUtilityClass } from './backdropClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n invisible\n } = ownerState;\n const slots = {\n root: ['root', invisible && 'invisible']\n };\n return composeClasses(slots, getBackdropUtilityClass, classes);\n};\nconst BackdropRoot = styled('div', {\n name: 'MuiBackdrop',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.invisible && styles.invisible];\n }\n})(({\n ownerState\n}) => _extends({\n position: 'fixed',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n right: 0,\n bottom: 0,\n top: 0,\n left: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n WebkitTapHighlightColor: 'transparent'\n}, ownerState.invisible && {\n backgroundColor: 'transparent'\n}));\nconst Backdrop = /*#__PURE__*/React.forwardRef(function Backdrop(inProps, ref) {\n var _slotProps$root, _ref, _slots$root;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiBackdrop'\n });\n const {\n children,\n className,\n component = 'div',\n components = {},\n componentsProps = {},\n invisible = false,\n open,\n slotProps = {},\n slots = {},\n TransitionComponent = Fade,\n transitionDuration\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n component,\n invisible\n });\n const classes = useUtilityClasses(ownerState);\n const rootSlotProps = (_slotProps$root = slotProps.root) != null ? _slotProps$root : componentsProps.root;\n return /*#__PURE__*/_jsx(TransitionComponent, _extends({\n in: open,\n timeout: transitionDuration\n }, other, {\n children: /*#__PURE__*/_jsx(BackdropRoot, _extends({\n \"aria-hidden\": true\n }, rootSlotProps, {\n as: (_ref = (_slots$root = slots.root) != null ? _slots$root : components.Root) != null ? _ref : component,\n className: clsx(classes.root, className, rootSlotProps == null ? void 0 : rootSlotProps.className),\n ownerState: _extends({}, ownerState, rootSlotProps == null ? void 0 : rootSlotProps.ownerState),\n classes: classes,\n ref: ref,\n children: children\n }))\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Backdrop.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `slots` prop.\n * It's recommended to use the `slots` prop instead.\n *\n * @default {}\n */\n components: PropTypes.shape({\n Root: PropTypes.elementType\n }),\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `slotProps` prop.\n * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n *\n * @default {}\n */\n componentsProps: PropTypes.shape({\n root: PropTypes.object\n }),\n /**\n * If `true`, the backdrop is invisible.\n * It can be used when rendering a popover or a custom select component.\n * @default false\n */\n invisible: PropTypes.bool,\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool.isRequired,\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slotProps: PropTypes.shape({\n root: PropTypes.object\n }),\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `components` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slots: PropTypes.shape({\n root: PropTypes.elementType\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The component used for the transition.\n * [Follow this guide](/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n * @default Fade\n */\n TransitionComponent: PropTypes.elementType,\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n */\n transitionDuration: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })])\n} : void 0;\nexport default Backdrop;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"BackdropComponent\", \"BackdropProps\", \"classes\", \"className\", \"closeAfterTransition\", \"children\", \"component\", \"components\", \"componentsProps\", \"disableAutoFocus\", \"disableEnforceFocus\", \"disableEscapeKeyDown\", \"disablePortal\", \"disableRestoreFocus\", \"disableScrollLock\", \"hideBackdrop\", \"keepMounted\", \"slotProps\", \"slots\", \"theme\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport ModalUnstyled, { modalUnstyledClasses } from '@mui/base/ModalUnstyled';\nimport { isHostComponent, resolveComponentProps } from '@mui/base/utils';\nimport { elementAcceptingRef, HTMLElementType } from '@mui/utils';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport Backdrop from '../Backdrop';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const modalClasses = modalUnstyledClasses;\nconst ModalRoot = styled('div', {\n name: 'MuiModal',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, !ownerState.open && ownerState.exited && styles.hidden];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n position: 'fixed',\n zIndex: (theme.vars || theme).zIndex.modal,\n right: 0,\n bottom: 0,\n top: 0,\n left: 0\n}, !ownerState.open && ownerState.exited && {\n visibility: 'hidden'\n}));\nconst ModalBackdrop = styled(Backdrop, {\n name: 'MuiModal',\n slot: 'Backdrop',\n overridesResolver: (props, styles) => {\n return styles.backdrop;\n }\n})({\n zIndex: -1\n});\n\n/**\n * Modal is a lower-level construct that is leveraged by the following components:\n *\n * - [Dialog](/material-ui/api/dialog/)\n * - [Drawer](/material-ui/api/drawer/)\n * - [Menu](/material-ui/api/menu/)\n * - [Popover](/material-ui/api/popover/)\n *\n * If you are creating a modal dialog, you probably want to use the [Dialog](/material-ui/api/dialog/) component\n * rather than directly using Modal.\n *\n * This component shares many concepts with [react-overlays](https://react-bootstrap.github.io/react-overlays/#modals).\n */\nconst Modal = /*#__PURE__*/React.forwardRef(function Modal(inProps, ref) {\n var _ref, _slots$root, _ref2, _slots$backdrop, _slotProps$root, _slotProps$backdrop;\n const props = useThemeProps({\n name: 'MuiModal',\n props: inProps\n });\n const {\n BackdropComponent = ModalBackdrop,\n BackdropProps,\n classes,\n className,\n closeAfterTransition = false,\n children,\n component,\n components = {},\n componentsProps = {},\n disableAutoFocus = false,\n disableEnforceFocus = false,\n disableEscapeKeyDown = false,\n disablePortal = false,\n disableRestoreFocus = false,\n disableScrollLock = false,\n hideBackdrop = false,\n keepMounted = false,\n slotProps,\n slots,\n // eslint-disable-next-line react/prop-types\n theme\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const [exited, setExited] = React.useState(true);\n const commonProps = {\n closeAfterTransition,\n disableAutoFocus,\n disableEnforceFocus,\n disableEscapeKeyDown,\n disablePortal,\n disableRestoreFocus,\n disableScrollLock,\n hideBackdrop,\n keepMounted\n };\n const ownerState = _extends({}, props, commonProps, {\n exited\n });\n const RootSlot = (_ref = (_slots$root = slots == null ? void 0 : slots.root) != null ? _slots$root : components.Root) != null ? _ref : ModalRoot;\n const BackdropSlot = (_ref2 = (_slots$backdrop = slots == null ? void 0 : slots.backdrop) != null ? _slots$backdrop : components.Backdrop) != null ? _ref2 : BackdropComponent;\n const rootSlotProps = (_slotProps$root = slotProps == null ? void 0 : slotProps.root) != null ? _slotProps$root : componentsProps.root;\n const backdropSlotProps = (_slotProps$backdrop = slotProps == null ? void 0 : slotProps.backdrop) != null ? _slotProps$backdrop : componentsProps.backdrop;\n return /*#__PURE__*/_jsx(ModalUnstyled, _extends({\n slots: {\n root: RootSlot,\n backdrop: BackdropSlot\n },\n slotProps: {\n root: () => _extends({}, resolveComponentProps(rootSlotProps, ownerState), !isHostComponent(RootSlot) && {\n as: component,\n theme\n }, {\n className: clsx(className, rootSlotProps == null ? void 0 : rootSlotProps.className, classes == null ? void 0 : classes.root, !ownerState.open && ownerState.exited && (classes == null ? void 0 : classes.hidden))\n }),\n backdrop: () => _extends({}, BackdropProps, resolveComponentProps(backdropSlotProps, ownerState), {\n className: clsx(backdropSlotProps == null ? void 0 : backdropSlotProps.className, classes == null ? void 0 : classes.backdrop)\n })\n },\n onTransitionEnter: () => setExited(false),\n onTransitionExited: () => setExited(true),\n ref: ref\n }, other, commonProps, {\n children: children\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Modal.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * A backdrop component. This prop enables custom backdrop rendering.\n * @deprecated Use `slots.backdrop` instead. While this prop currently works, it will be removed in the next major version.\n * Use the `slots.backdrop` prop to make your application ready for the next version of Material UI.\n * @default styled(Backdrop, {\n * name: 'MuiModal',\n * slot: 'Backdrop',\n * overridesResolver: (props, styles) => {\n * return styles.backdrop;\n * },\n * })({\n * zIndex: -1,\n * })\n */\n BackdropComponent: PropTypes.elementType,\n /**\n * Props applied to the [`Backdrop`](/material-ui/api/backdrop/) element.\n * @deprecated Use `slotProps.backdrop` instead.\n */\n BackdropProps: PropTypes.object,\n /**\n * A single child content element.\n */\n children: elementAcceptingRef.isRequired,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * When set to true the Modal waits until a nested Transition is completed before closing.\n * @default false\n */\n closeAfterTransition: PropTypes.bool,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `slots` prop.\n * It's recommended to use the `slots` prop instead.\n *\n * @default {}\n */\n components: PropTypes.shape({\n Backdrop: PropTypes.elementType,\n Root: PropTypes.elementType\n }),\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `slotProps` prop.\n * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n *\n * @default {}\n */\n componentsProps: PropTypes.shape({\n backdrop: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * An HTML element or function that returns one.\n * The `container` will have the portal children appended to it.\n *\n * By default, it uses the body of the top-level document object,\n * so it's simply `document.body` most of the time.\n */\n container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n /**\n * If `true`, the modal will not automatically shift focus to itself when it opens, and\n * replace it to the last focused element when it closes.\n * This also works correctly with any modal children that have the `disableAutoFocus` prop.\n *\n * Generally this should never be set to `true` as it makes the modal less\n * accessible to assistive technologies, like screen readers.\n * @default false\n */\n disableAutoFocus: PropTypes.bool,\n /**\n * If `true`, the modal will not prevent focus from leaving the modal while open.\n *\n * Generally this should never be set to `true` as it makes the modal less\n * accessible to assistive technologies, like screen readers.\n * @default false\n */\n disableEnforceFocus: PropTypes.bool,\n /**\n * If `true`, hitting escape will not fire the `onClose` callback.\n * @default false\n */\n disableEscapeKeyDown: PropTypes.bool,\n /**\n * The `children` will be under the DOM hierarchy of the parent component.\n * @default false\n */\n disablePortal: PropTypes.bool,\n /**\n * If `true`, the modal will not restore focus to previously focused element once\n * modal is hidden or unmounted.\n * @default false\n */\n disableRestoreFocus: PropTypes.bool,\n /**\n * Disable the scroll lock behavior.\n * @default false\n */\n disableScrollLock: PropTypes.bool,\n /**\n * If `true`, the backdrop is not rendered.\n * @default false\n */\n hideBackdrop: PropTypes.bool,\n /**\n * Always keep the children in the DOM.\n * This prop can be useful in SEO situation or\n * when you want to maximize the responsiveness of the Modal.\n * @default false\n */\n keepMounted: PropTypes.bool,\n /**\n * Callback fired when the backdrop is clicked.\n * @deprecated Use the `onClose` prop with the `reason` argument to handle the `backdropClick` events.\n */\n onBackdropClick: PropTypes.func,\n /**\n * Callback fired when the component requests to be closed.\n * The `reason` parameter can optionally be used to control the response to `onClose`.\n *\n * @param {object} event The event source of the callback.\n * @param {string} reason Can be: `\"escapeKeyDown\"`, `\"backdropClick\"`.\n */\n onClose: PropTypes.func,\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool.isRequired,\n /**\n * The props used for each slot inside the Modal.\n * @default {}\n */\n slotProps: PropTypes.shape({\n backdrop: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * The components used for each slot inside the Modal.\n * Either a string to use a HTML element or a component.\n * @default {}\n */\n slots: PropTypes.shape({\n backdrop: PropTypes.elementType,\n root: PropTypes.elementType\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Modal;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getPopoverUtilityClass(slot) {\n return generateUtilityClass('MuiPopover', slot);\n}\nconst popoverClasses = generateUtilityClasses('MuiPopover', ['root', 'paper']);\nexport default popoverClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"onEntering\"],\n _excluded2 = [\"action\", \"anchorEl\", \"anchorOrigin\", \"anchorPosition\", \"anchorReference\", \"children\", \"className\", \"container\", \"elevation\", \"marginThreshold\", \"open\", \"PaperProps\", \"transformOrigin\", \"TransitionComponent\", \"transitionDuration\", \"TransitionProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { chainPropTypes, integerPropType, elementTypeAcceptingRef, refType, HTMLElementType } from '@mui/utils';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport debounce from '../utils/debounce';\nimport ownerDocument from '../utils/ownerDocument';\nimport ownerWindow from '../utils/ownerWindow';\nimport useForkRef from '../utils/useForkRef';\nimport Grow from '../Grow';\nimport Modal from '../Modal';\nimport Paper from '../Paper';\nimport { getPopoverUtilityClass } from './popoverClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function getOffsetTop(rect, vertical) {\n let offset = 0;\n if (typeof vertical === 'number') {\n offset = vertical;\n } else if (vertical === 'center') {\n offset = rect.height / 2;\n } else if (vertical === 'bottom') {\n offset = rect.height;\n }\n return offset;\n}\nexport function getOffsetLeft(rect, horizontal) {\n let offset = 0;\n if (typeof horizontal === 'number') {\n offset = horizontal;\n } else if (horizontal === 'center') {\n offset = rect.width / 2;\n } else if (horizontal === 'right') {\n offset = rect.width;\n }\n return offset;\n}\nfunction getTransformOriginValue(transformOrigin) {\n return [transformOrigin.horizontal, transformOrigin.vertical].map(n => typeof n === 'number' ? `${n}px` : n).join(' ');\n}\nfunction resolveAnchorEl(anchorEl) {\n return typeof anchorEl === 'function' ? anchorEl() : anchorEl;\n}\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n paper: ['paper']\n };\n return composeClasses(slots, getPopoverUtilityClass, classes);\n};\nconst PopoverRoot = styled(Modal, {\n name: 'MuiPopover',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({});\nconst PopoverPaper = styled(Paper, {\n name: 'MuiPopover',\n slot: 'Paper',\n overridesResolver: (props, styles) => styles.paper\n})({\n position: 'absolute',\n overflowY: 'auto',\n overflowX: 'hidden',\n // So we see the popover when it's empty.\n // It's most likely on issue on userland.\n minWidth: 16,\n minHeight: 16,\n maxWidth: 'calc(100% - 32px)',\n maxHeight: 'calc(100% - 32px)',\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0\n});\nconst Popover = /*#__PURE__*/React.forwardRef(function Popover(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiPopover'\n });\n const {\n action,\n anchorEl,\n anchorOrigin = {\n vertical: 'top',\n horizontal: 'left'\n },\n anchorPosition,\n anchorReference = 'anchorEl',\n children,\n className,\n container: containerProp,\n elevation = 8,\n marginThreshold = 16,\n open,\n PaperProps = {},\n transformOrigin = {\n vertical: 'top',\n horizontal: 'left'\n },\n TransitionComponent = Grow,\n transitionDuration: transitionDurationProp = 'auto',\n TransitionProps: {\n onEntering\n } = {}\n } = props,\n TransitionProps = _objectWithoutPropertiesLoose(props.TransitionProps, _excluded),\n other = _objectWithoutPropertiesLoose(props, _excluded2);\n const paperRef = React.useRef();\n const handlePaperRef = useForkRef(paperRef, PaperProps.ref);\n const ownerState = _extends({}, props, {\n anchorOrigin,\n anchorReference,\n elevation,\n marginThreshold,\n PaperProps,\n transformOrigin,\n TransitionComponent,\n transitionDuration: transitionDurationProp,\n TransitionProps\n });\n const classes = useUtilityClasses(ownerState);\n\n // Returns the top/left offset of the position\n // to attach to on the anchor element (or body if none is provided)\n const getAnchorOffset = React.useCallback(() => {\n if (anchorReference === 'anchorPosition') {\n if (process.env.NODE_ENV !== 'production') {\n if (!anchorPosition) {\n console.error('MUI: You need to provide a `anchorPosition` prop when using ' + '<Popover anchorReference=\"anchorPosition\" />.');\n }\n }\n return anchorPosition;\n }\n const resolvedAnchorEl = resolveAnchorEl(anchorEl);\n\n // If an anchor element wasn't provided, just use the parent body element of this Popover\n const anchorElement = resolvedAnchorEl && resolvedAnchorEl.nodeType === 1 ? resolvedAnchorEl : ownerDocument(paperRef.current).body;\n const anchorRect = anchorElement.getBoundingClientRect();\n if (process.env.NODE_ENV !== 'production') {\n const box = anchorElement.getBoundingClientRect();\n if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n console.warn(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n }\n }\n return {\n top: anchorRect.top + getOffsetTop(anchorRect, anchorOrigin.vertical),\n left: anchorRect.left + getOffsetLeft(anchorRect, anchorOrigin.horizontal)\n };\n }, [anchorEl, anchorOrigin.horizontal, anchorOrigin.vertical, anchorPosition, anchorReference]);\n\n // Returns the base transform origin using the element\n const getTransformOrigin = React.useCallback(elemRect => {\n return {\n vertical: getOffsetTop(elemRect, transformOrigin.vertical),\n horizontal: getOffsetLeft(elemRect, transformOrigin.horizontal)\n };\n }, [transformOrigin.horizontal, transformOrigin.vertical]);\n const getPositioningStyle = React.useCallback(element => {\n const elemRect = {\n width: element.offsetWidth,\n height: element.offsetHeight\n };\n\n // Get the transform origin point on the element itself\n const elemTransformOrigin = getTransformOrigin(elemRect);\n if (anchorReference === 'none') {\n return {\n top: null,\n left: null,\n transformOrigin: getTransformOriginValue(elemTransformOrigin)\n };\n }\n\n // Get the offset of the anchoring element\n const anchorOffset = getAnchorOffset();\n\n // Calculate element positioning\n let top = anchorOffset.top - elemTransformOrigin.vertical;\n let left = anchorOffset.left - elemTransformOrigin.horizontal;\n const bottom = top + elemRect.height;\n const right = left + elemRect.width;\n\n // Use the parent window of the anchorEl if provided\n const containerWindow = ownerWindow(resolveAnchorEl(anchorEl));\n\n // Window thresholds taking required margin into account\n const heightThreshold = containerWindow.innerHeight - marginThreshold;\n const widthThreshold = containerWindow.innerWidth - marginThreshold;\n\n // Check if the vertical axis needs shifting\n if (top < marginThreshold) {\n const diff = top - marginThreshold;\n top -= diff;\n elemTransformOrigin.vertical += diff;\n } else if (bottom > heightThreshold) {\n const diff = bottom - heightThreshold;\n top -= diff;\n elemTransformOrigin.vertical += diff;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (elemRect.height > heightThreshold && elemRect.height && heightThreshold) {\n console.error(['MUI: The popover component is too tall.', `Some part of it can not be seen on the screen (${elemRect.height - heightThreshold}px).`, 'Please consider adding a `max-height` to improve the user-experience.'].join('\\n'));\n }\n }\n\n // Check if the horizontal axis needs shifting\n if (left < marginThreshold) {\n const diff = left - marginThreshold;\n left -= diff;\n elemTransformOrigin.horizontal += diff;\n } else if (right > widthThreshold) {\n const diff = right - widthThreshold;\n left -= diff;\n elemTransformOrigin.horizontal += diff;\n }\n return {\n top: `${Math.round(top)}px`,\n left: `${Math.round(left)}px`,\n transformOrigin: getTransformOriginValue(elemTransformOrigin)\n };\n }, [anchorEl, anchorReference, getAnchorOffset, getTransformOrigin, marginThreshold]);\n const [isPositioned, setIsPositioned] = React.useState(open);\n const setPositioningStyles = React.useCallback(() => {\n const element = paperRef.current;\n if (!element) {\n return;\n }\n const positioning = getPositioningStyle(element);\n if (positioning.top !== null) {\n element.style.top = positioning.top;\n }\n if (positioning.left !== null) {\n element.style.left = positioning.left;\n }\n element.style.transformOrigin = positioning.transformOrigin;\n setIsPositioned(true);\n }, [getPositioningStyle]);\n const handleEntering = (element, isAppearing) => {\n if (onEntering) {\n onEntering(element, isAppearing);\n }\n setPositioningStyles();\n };\n const handleExited = () => {\n setIsPositioned(false);\n };\n React.useEffect(() => {\n if (open) {\n setPositioningStyles();\n }\n });\n React.useImperativeHandle(action, () => open ? {\n updatePosition: () => {\n setPositioningStyles();\n }\n } : null, [open, setPositioningStyles]);\n React.useEffect(() => {\n if (!open) {\n return undefined;\n }\n const handleResize = debounce(() => {\n setPositioningStyles();\n });\n const containerWindow = ownerWindow(anchorEl);\n containerWindow.addEventListener('resize', handleResize);\n return () => {\n handleResize.clear();\n containerWindow.removeEventListener('resize', handleResize);\n };\n }, [anchorEl, open, setPositioningStyles]);\n let transitionDuration = transitionDurationProp;\n if (transitionDurationProp === 'auto' && !TransitionComponent.muiSupportAuto) {\n transitionDuration = undefined;\n }\n\n // If the container prop is provided, use that\n // If the anchorEl prop is provided, use its parent body element as the container\n // If neither are provided let the Modal take care of choosing the container\n const container = containerProp || (anchorEl ? ownerDocument(resolveAnchorEl(anchorEl)).body : undefined);\n return /*#__PURE__*/_jsx(PopoverRoot, _extends({\n BackdropProps: {\n invisible: true\n },\n className: clsx(classes.root, className),\n container: container,\n open: open,\n ref: ref,\n ownerState: ownerState\n }, other, {\n children: /*#__PURE__*/_jsx(TransitionComponent, _extends({\n appear: true,\n in: open,\n onEntering: handleEntering,\n onExited: handleExited,\n timeout: transitionDuration\n }, TransitionProps, {\n children: /*#__PURE__*/_jsx(PopoverPaper, _extends({\n elevation: elevation\n }, PaperProps, {\n ref: handlePaperRef,\n className: clsx(classes.paper, PaperProps.className)\n }, isPositioned ? undefined : {\n style: _extends({}, PaperProps.style, {\n opacity: 0\n })\n }, {\n ownerState: ownerState,\n children: children\n }))\n }))\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Popover.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * A ref for imperative actions.\n * It currently only supports updatePosition() action.\n */\n action: refType,\n /**\n * An HTML element, or a function that returns one.\n * It's used to set the position of the popover.\n */\n anchorEl: chainPropTypes(PropTypes.oneOfType([HTMLElementType, PropTypes.func]), props => {\n if (props.open && (!props.anchorReference || props.anchorReference === 'anchorEl')) {\n const resolvedAnchorEl = resolveAnchorEl(props.anchorEl);\n if (resolvedAnchorEl && resolvedAnchorEl.nodeType === 1) {\n const box = resolvedAnchorEl.getBoundingClientRect();\n if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n }\n } else {\n return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', `It should be an Element instance but it's \\`${resolvedAnchorEl}\\` instead.`].join('\\n'));\n }\n }\n return null;\n }),\n /**\n * This is the point on the anchor where the popover's\n * `anchorEl` will attach to. This is not used when the\n * anchorReference is 'anchorPosition'.\n *\n * Options:\n * vertical: [top, center, bottom];\n * horizontal: [left, center, right].\n * @default {\n * vertical: 'top',\n * horizontal: 'left',\n * }\n */\n anchorOrigin: PropTypes.shape({\n horizontal: PropTypes.oneOfType([PropTypes.oneOf(['center', 'left', 'right']), PropTypes.number]).isRequired,\n vertical: PropTypes.oneOfType([PropTypes.oneOf(['bottom', 'center', 'top']), PropTypes.number]).isRequired\n }),\n /**\n * This is the position that may be used to set the position of the popover.\n * The coordinates are relative to the application's client area.\n */\n anchorPosition: PropTypes.shape({\n left: PropTypes.number.isRequired,\n top: PropTypes.number.isRequired\n }),\n /**\n * This determines which anchor prop to refer to when setting\n * the position of the popover.\n * @default 'anchorEl'\n */\n anchorReference: PropTypes.oneOf(['anchorEl', 'anchorPosition', 'none']),\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * An HTML element, component instance, or function that returns either.\n * The `container` will passed to the Modal component.\n *\n * By default, it uses the body of the anchorEl's top-level document object,\n * so it's simply `document.body` most of the time.\n */\n container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n /**\n * The elevation of the popover.\n * @default 8\n */\n elevation: integerPropType,\n /**\n * Specifies how close to the edge of the window the popover can appear.\n * @default 16\n */\n marginThreshold: PropTypes.number,\n /**\n * Callback fired when the component requests to be closed.\n * The `reason` parameter can optionally be used to control the response to `onClose`.\n */\n onClose: PropTypes.func,\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool.isRequired,\n /**\n * Props applied to the [`Paper`](/material-ui/api/paper/) element.\n * @default {}\n */\n PaperProps: PropTypes /* @typescript-to-proptypes-ignore */.shape({\n component: elementTypeAcceptingRef\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * This is the point on the popover which\n * will attach to the anchor's origin.\n *\n * Options:\n * vertical: [top, center, bottom, x(px)];\n * horizontal: [left, center, right, x(px)].\n * @default {\n * vertical: 'top',\n * horizontal: 'left',\n * }\n */\n transformOrigin: PropTypes.shape({\n horizontal: PropTypes.oneOfType([PropTypes.oneOf(['center', 'left', 'right']), PropTypes.number]).isRequired,\n vertical: PropTypes.oneOfType([PropTypes.oneOf(['bottom', 'center', 'top']), PropTypes.number]).isRequired\n }),\n /**\n * The component used for the transition.\n * [Follow this guide](/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n * @default Grow\n */\n TransitionComponent: PropTypes.elementType,\n /**\n * Set to 'auto' to automatically calculate transition time based on height.\n * @default 'auto'\n */\n transitionDuration: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })]),\n /**\n * Props applied to the transition element.\n * By default, the element is based on this [`Transition`](http://reactcommunity.org/react-transition-group/transition/) component.\n * @default {}\n */\n TransitionProps: PropTypes.object\n} : void 0;\nexport default Popover;","// Corresponds to 10 frames at 60 Hz.\n// A few bytes payload overhead when lodash/debounce is ~3 kB and debounce ~300 B.\nexport default function debounce(func, wait = 166) {\n let timeout;\n function debounced(...args) {\n const later = () => {\n // @ts-ignore\n func.apply(this, args);\n };\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n }\n debounced.clear = () => {\n clearTimeout(timeout);\n };\n return debounced;\n}","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getMenuUtilityClass(slot) {\n return generateUtilityClass('MuiMenu', slot);\n}\nconst menuClasses = generateUtilityClasses('MuiMenu', ['root', 'paper', 'list']);\nexport default menuClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"onEntering\"],\n _excluded2 = [\"autoFocus\", \"children\", \"disableAutoFocusItem\", \"MenuListProps\", \"onClose\", \"open\", \"PaperProps\", \"PopoverClasses\", \"transitionDuration\", \"TransitionProps\", \"variant\"];\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { HTMLElementType } from '@mui/utils';\nimport MenuList from '../MenuList';\nimport Paper from '../Paper';\nimport Popover from '../Popover';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport useTheme from '../styles/useTheme';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getMenuUtilityClass } from './menuClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst RTL_ORIGIN = {\n vertical: 'top',\n horizontal: 'right'\n};\nconst LTR_ORIGIN = {\n vertical: 'top',\n horizontal: 'left'\n};\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n paper: ['paper'],\n list: ['list']\n };\n return composeClasses(slots, getMenuUtilityClass, classes);\n};\nconst MenuRoot = styled(Popover, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiMenu',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({});\nconst MenuPaper = styled(Paper, {\n name: 'MuiMenu',\n slot: 'Paper',\n overridesResolver: (props, styles) => styles.paper\n})({\n // specZ: The maximum height of a simple menu should be one or more rows less than the view\n // height. This ensures a tapable area outside of the simple menu with which to dismiss\n // the menu.\n maxHeight: 'calc(100% - 96px)',\n // Add iOS momentum scrolling for iOS < 13.0\n WebkitOverflowScrolling: 'touch'\n});\nconst MenuMenuList = styled(MenuList, {\n name: 'MuiMenu',\n slot: 'List',\n overridesResolver: (props, styles) => styles.list\n})({\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0\n});\nconst Menu = /*#__PURE__*/React.forwardRef(function Menu(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiMenu'\n });\n const {\n autoFocus = true,\n children,\n disableAutoFocusItem = false,\n MenuListProps = {},\n onClose,\n open,\n PaperProps = {},\n PopoverClasses,\n transitionDuration = 'auto',\n TransitionProps: {\n onEntering\n } = {},\n variant = 'selectedMenu'\n } = props,\n TransitionProps = _objectWithoutPropertiesLoose(props.TransitionProps, _excluded),\n other = _objectWithoutPropertiesLoose(props, _excluded2);\n const theme = useTheme();\n const isRtl = theme.direction === 'rtl';\n const ownerState = _extends({}, props, {\n autoFocus,\n disableAutoFocusItem,\n MenuListProps,\n onEntering,\n PaperProps,\n transitionDuration,\n TransitionProps,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n const autoFocusItem = autoFocus && !disableAutoFocusItem && open;\n const menuListActionsRef = React.useRef(null);\n const handleEntering = (element, isAppearing) => {\n if (menuListActionsRef.current) {\n menuListActionsRef.current.adjustStyleForScrollbar(element, theme);\n }\n if (onEntering) {\n onEntering(element, isAppearing);\n }\n };\n const handleListKeyDown = event => {\n if (event.key === 'Tab') {\n event.preventDefault();\n if (onClose) {\n onClose(event, 'tabKeyDown');\n }\n }\n };\n\n /**\n * the index of the item should receive focus\n * in a `variant=\"selectedMenu\"` it's the first `selected` item\n * otherwise it's the very first item.\n */\n let activeItemIndex = -1;\n // since we inject focus related props into children we have to do a lookahead\n // to check if there is a `selected` item. We're looking for the last `selected`\n // item and use the first valid item as a fallback\n React.Children.map(children, (child, index) => {\n if (! /*#__PURE__*/React.isValidElement(child)) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (isFragment(child)) {\n console.error([\"MUI: The Menu component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n }\n }\n if (!child.props.disabled) {\n if (variant === 'selectedMenu' && child.props.selected) {\n activeItemIndex = index;\n } else if (activeItemIndex === -1) {\n activeItemIndex = index;\n }\n }\n });\n return /*#__PURE__*/_jsx(MenuRoot, _extends({\n onClose: onClose,\n anchorOrigin: {\n vertical: 'bottom',\n horizontal: isRtl ? 'right' : 'left'\n },\n transformOrigin: isRtl ? RTL_ORIGIN : LTR_ORIGIN,\n PaperProps: _extends({\n as: MenuPaper\n }, PaperProps, {\n classes: _extends({}, PaperProps.classes, {\n root: classes.paper\n })\n }),\n className: classes.root,\n open: open,\n ref: ref,\n transitionDuration: transitionDuration,\n TransitionProps: _extends({\n onEntering: handleEntering\n }, TransitionProps),\n ownerState: ownerState\n }, other, {\n classes: PopoverClasses,\n children: /*#__PURE__*/_jsx(MenuMenuList, _extends({\n onKeyDown: handleListKeyDown,\n actions: menuListActionsRef,\n autoFocus: autoFocus && (activeItemIndex === -1 || disableAutoFocusItem),\n autoFocusItem: autoFocusItem,\n variant: variant\n }, MenuListProps, {\n className: clsx(classes.list, MenuListProps.className),\n children: children\n }))\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Menu.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * An HTML element, or a function that returns one.\n * It's used to set the position of the menu.\n */\n anchorEl: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n /**\n * If `true` (Default) will focus the `[role=\"menu\"]` if no focusable child is found. Disabled\n * children are not focusable. If you set this prop to `false` focus will be placed\n * on the parent modal container. This has severe accessibility implications\n * and should only be considered if you manage focus otherwise.\n * @default true\n */\n autoFocus: PropTypes.bool,\n /**\n * Menu contents, normally `MenuItem`s.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * When opening the menu will not focus the active item but the `[role=\"menu\"]`\n * unless `autoFocus` is also set to `false`. Not using the default means not\n * following WAI-ARIA authoring practices. Please be considerate about possible\n * accessibility implications.\n * @default false\n */\n disableAutoFocusItem: PropTypes.bool,\n /**\n * Props applied to the [`MenuList`](/material-ui/api/menu-list/) element.\n * @default {}\n */\n MenuListProps: PropTypes.object,\n /**\n * Callback fired when the component requests to be closed.\n *\n * @param {object} event The event source of the callback.\n * @param {string} reason Can be: `\"escapeKeyDown\"`, `\"backdropClick\"`, `\"tabKeyDown\"`.\n */\n onClose: PropTypes.func,\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool.isRequired,\n /**\n * @ignore\n */\n PaperProps: PropTypes.object,\n /**\n * `classes` prop applied to the [`Popover`](/material-ui/api/popover/) element.\n */\n PopoverClasses: PropTypes.object,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The length of the transition in `ms`, or 'auto'\n * @default 'auto'\n */\n transitionDuration: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })]),\n /**\n * Props applied to the transition element.\n * By default, the element is based on this [`Transition`](http://reactcommunity.org/react-transition-group/transition/) component.\n * @default {}\n */\n TransitionProps: PropTypes.object,\n /**\n * The variant to use. Use `menu` to prevent selected items from impacting the initial focus.\n * @default 'selectedMenu'\n */\n variant: PropTypes.oneOf(['menu', 'selectedMenu'])\n} : void 0;\nexport default Menu;","import { unstable_useEventCallback as useEventCallback } from '@mui/utils';\nexport default useEventCallback;","'use client';\n\nimport useLazyRef from '../useLazyRef/useLazyRef';\nimport useOnMount from '../useOnMount/useOnMount';\nexport class Timeout {\n constructor() {\n this.currentId = null;\n this.clear = () => {\n if (this.currentId !== null) {\n clearTimeout(this.currentId);\n this.currentId = null;\n }\n };\n this.disposeEffect = () => {\n return this.clear;\n };\n }\n static create() {\n return new Timeout();\n }\n /**\n * Executes `fn` after `delay`, clearing any previously scheduled call.\n */\n start(delay, fn) {\n this.clear();\n this.currentId = setTimeout(() => {\n this.currentId = null;\n fn();\n }, delay);\n }\n}\nexport default function useTimeout() {\n const timeout = useLazyRef(Timeout.create).current;\n useOnMount(timeout.disposeEffect);\n return timeout;\n}","'use client';\n\n// based on https://github.com/WICG/focus-visible/blob/v4.1.5/src/focus-visible.js\nimport * as React from 'react';\nimport { Timeout } from '../useTimeout/useTimeout';\nlet hadKeyboardEvent = true;\nlet hadFocusVisibleRecently = false;\nconst hadFocusVisibleRecentlyTimeout = new Timeout();\nconst inputTypesWhitelist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n};\n\n/**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} node\n * @returns {boolean}\n */\nfunction focusTriggersKeyboardModality(node) {\n const {\n type,\n tagName\n } = node;\n if (tagName === 'INPUT' && inputTypesWhitelist[type] && !node.readOnly) {\n return true;\n }\n if (tagName === 'TEXTAREA' && !node.readOnly) {\n return true;\n }\n if (node.isContentEditable) {\n return true;\n }\n return false;\n}\n\n/**\n * Keep track of our keyboard modality state with `hadKeyboardEvent`.\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * @param {KeyboardEvent} event\n */\nfunction handleKeyDown(event) {\n if (event.metaKey || event.altKey || event.ctrlKey) {\n return;\n }\n hadKeyboardEvent = true;\n}\n\n/**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n */\nfunction handlePointerDown() {\n hadKeyboardEvent = false;\n}\nfunction handleVisibilityChange() {\n if (this.visibilityState === 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n }\n}\nfunction prepare(doc) {\n doc.addEventListener('keydown', handleKeyDown, true);\n doc.addEventListener('mousedown', handlePointerDown, true);\n doc.addEventListener('pointerdown', handlePointerDown, true);\n doc.addEventListener('touchstart', handlePointerDown, true);\n doc.addEventListener('visibilitychange', handleVisibilityChange, true);\n}\nexport function teardown(doc) {\n doc.removeEventListener('keydown', handleKeyDown, true);\n doc.removeEventListener('mousedown', handlePointerDown, true);\n doc.removeEventListener('pointerdown', handlePointerDown, true);\n doc.removeEventListener('touchstart', handlePointerDown, true);\n doc.removeEventListener('visibilitychange', handleVisibilityChange, true);\n}\nfunction isFocusVisible(event) {\n const {\n target\n } = event;\n try {\n return target.matches(':focus-visible');\n } catch (error) {\n // Browsers not implementing :focus-visible will throw a SyntaxError.\n // We use our own heuristic for those browsers.\n // Rethrow might be better if it's not the expected error but do we really\n // want to crash if focus-visible malfunctioned?\n }\n\n // No need for validFocusTarget check. The user does that by attaching it to\n // focusable events only.\n return hadKeyboardEvent || focusTriggersKeyboardModality(target);\n}\nexport default function useIsFocusVisible() {\n const ref = React.useCallback(node => {\n if (node != null) {\n prepare(node.ownerDocument);\n }\n }, []);\n const isFocusVisibleRef = React.useRef(false);\n\n /**\n * Should be called if a blur event is fired\n */\n function handleBlurVisible() {\n // checking against potential state variable does not suffice if we focus and blur synchronously.\n // React wouldn't have time to trigger a re-render so `focusVisible` would be stale.\n // Ideally we would adjust `isFocusVisible(event)` to look at `relatedTarget` for blur events.\n // This doesn't work in IE11 due to https://github.com/facebook/react/issues/3751\n // TODO: check again if React releases their internal changes to focus event handling (https://github.com/facebook/react/pull/19186).\n if (isFocusVisibleRef.current) {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n hadFocusVisibleRecentlyTimeout.start(100, () => {\n hadFocusVisibleRecently = false;\n });\n isFocusVisibleRef.current = false;\n return true;\n }\n return false;\n }\n\n /**\n * Should be called if a blur event is fired\n */\n function handleFocusVisible(event) {\n if (isFocusVisible(event)) {\n isFocusVisibleRef.current = true;\n return true;\n }\n return false;\n }\n return {\n isFocusVisibleRef,\n onFocus: handleFocusVisible,\n onBlur: handleBlurVisible,\n ref\n };\n}","import { unstable_useIsFocusVisible as useIsFocusVisible } from '@mui/utils';\nexport default useIsFocusVisible;","import { Children, cloneElement, isValidElement } from 'react';\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\n\nexport function getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && isValidElement(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\nexport function mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nexport function getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\nexport function getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!isValidElement(child)) return;\n var hasPrev = (key in prevChildMapping);\n var hasNext = (key in nextChildMapping);\n var prevChild = prevChildMapping[key];\n var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = cloneElement(child, {\n in: false\n });\n } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n};\n/**\n * The `<TransitionGroup>` component manages a set of transition components\n * (`<Transition>` and `<CSSTransition>`) in a list. Like with the transition\n * components, `<TransitionGroup>` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the `<TransitionGroup>`.\n *\n * Note that `<TransitionGroup>` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\nvar TransitionGroup = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_this)); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n contextValue: {\n isMounting: true\n },\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n this.setState({\n contextValue: {\n isMounting: false\n }\n });\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n } // node is `undefined` when user provided `nodeRef` prop\n ;\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = getChildMapping(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var contextValue = this.state.contextValue;\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, children);\n }\n\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(Component, props, children));\n };\n\n return TransitionGroup;\n}(React.Component);\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `<TransitionGroup>` renders a `<div>` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `<div>` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: PropTypes.any,\n\n /**\n * A set of `<Transition>` components, that are toggled `in` and out as they\n * leave. the `<TransitionGroup>` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `<Transition>` as\n * with our `<Fade>` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: PropTypes.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: PropTypes.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getTouchRippleUtilityClass(slot) {\n return generateUtilityClass('MuiTouchRipple', slot);\n}\nconst touchRippleClasses = generateUtilityClasses('MuiTouchRipple', ['root', 'ripple', 'rippleVisible', 'ripplePulsate', 'child', 'childLeaving', 'childPulsate']);\nexport default touchRippleClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"center\", \"classes\", \"className\"];\nlet _ = t => t,\n _t,\n _t2,\n _t3,\n _t4;\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { TransitionGroup } from 'react-transition-group';\nimport clsx from 'clsx';\nimport { keyframes } from '@mui/system';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport Ripple from './Ripple';\nimport touchRippleClasses from './touchRippleClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DURATION = 550;\nexport const DELAY_RIPPLE = 80;\nconst enterKeyframe = keyframes(_t || (_t = _`\n 0% {\n transform: scale(0);\n opacity: 0.1;\n }\n\n 100% {\n transform: scale(1);\n opacity: 0.3;\n }\n`));\nconst exitKeyframe = keyframes(_t2 || (_t2 = _`\n 0% {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n }\n`));\nconst pulsateKeyframe = keyframes(_t3 || (_t3 = _`\n 0% {\n transform: scale(1);\n }\n\n 50% {\n transform: scale(0.92);\n }\n\n 100% {\n transform: scale(1);\n }\n`));\nexport const TouchRippleRoot = styled('span', {\n name: 'MuiTouchRipple',\n slot: 'Root'\n})({\n overflow: 'hidden',\n pointerEvents: 'none',\n position: 'absolute',\n zIndex: 0,\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n borderRadius: 'inherit'\n});\n\n// This `styled()` function invokes keyframes. `styled-components` only supports keyframes\n// in string templates. Do not convert these styles in JS object as it will break.\nexport const TouchRippleRipple = styled(Ripple, {\n name: 'MuiTouchRipple',\n slot: 'Ripple'\n})(_t4 || (_t4 = _`\n opacity: 0;\n position: absolute;\n\n &.${0} {\n opacity: 0.3;\n transform: scale(1);\n animation-name: ${0};\n animation-duration: ${0}ms;\n animation-timing-function: ${0};\n }\n\n &.${0} {\n animation-duration: ${0}ms;\n }\n\n & .${0} {\n opacity: 1;\n display: block;\n width: 100%;\n height: 100%;\n border-radius: 50%;\n background-color: currentColor;\n }\n\n & .${0} {\n opacity: 0;\n animation-name: ${0};\n animation-duration: ${0}ms;\n animation-timing-function: ${0};\n }\n\n & .${0} {\n position: absolute;\n /* @noflip */\n left: 0px;\n top: 0;\n animation-name: ${0};\n animation-duration: 2500ms;\n animation-timing-function: ${0};\n animation-iteration-count: infinite;\n animation-delay: 200ms;\n }\n`), touchRippleClasses.rippleVisible, enterKeyframe, DURATION, ({\n theme\n}) => theme.transitions.easing.easeInOut, touchRippleClasses.ripplePulsate, ({\n theme\n}) => theme.transitions.duration.shorter, touchRippleClasses.child, touchRippleClasses.childLeaving, exitKeyframe, DURATION, ({\n theme\n}) => theme.transitions.easing.easeInOut, touchRippleClasses.childPulsate, pulsateKeyframe, ({\n theme\n}) => theme.transitions.easing.easeInOut);\n\n/**\n * @ignore - internal component.\n *\n * TODO v5: Make private\n */\nconst TouchRipple = /*#__PURE__*/React.forwardRef(function TouchRipple(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTouchRipple'\n });\n const {\n center: centerProp = false,\n classes = {},\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const [ripples, setRipples] = React.useState([]);\n const nextKey = React.useRef(0);\n const rippleCallback = React.useRef(null);\n React.useEffect(() => {\n if (rippleCallback.current) {\n rippleCallback.current();\n rippleCallback.current = null;\n }\n }, [ripples]);\n\n // Used to filter out mouse emulated events on mobile.\n const ignoringMouseDown = React.useRef(false);\n // We use a timer in order to only show the ripples for touch \"click\" like events.\n // We don't want to display the ripple for touch scroll events.\n const startTimer = React.useRef(null);\n\n // This is the hook called once the previous timeout is ready.\n const startTimerCommit = React.useRef(null);\n const container = React.useRef(null);\n React.useEffect(() => {\n return () => {\n clearTimeout(startTimer.current);\n };\n }, []);\n const startCommit = React.useCallback(params => {\n const {\n pulsate,\n rippleX,\n rippleY,\n rippleSize,\n cb\n } = params;\n setRipples(oldRipples => [...oldRipples, /*#__PURE__*/_jsx(TouchRippleRipple, {\n classes: {\n ripple: clsx(classes.ripple, touchRippleClasses.ripple),\n rippleVisible: clsx(classes.rippleVisible, touchRippleClasses.rippleVisible),\n ripplePulsate: clsx(classes.ripplePulsate, touchRippleClasses.ripplePulsate),\n child: clsx(classes.child, touchRippleClasses.child),\n childLeaving: clsx(classes.childLeaving, touchRippleClasses.childLeaving),\n childPulsate: clsx(classes.childPulsate, touchRippleClasses.childPulsate)\n },\n timeout: DURATION,\n pulsate: pulsate,\n rippleX: rippleX,\n rippleY: rippleY,\n rippleSize: rippleSize\n }, nextKey.current)]);\n nextKey.current += 1;\n rippleCallback.current = cb;\n }, [classes]);\n const start = React.useCallback((event = {}, options = {}, cb = () => {}) => {\n const {\n pulsate = false,\n center = centerProp || options.pulsate,\n fakeElement = false // For test purposes\n } = options;\n if ((event == null ? void 0 : event.type) === 'mousedown' && ignoringMouseDown.current) {\n ignoringMouseDown.current = false;\n return;\n }\n if ((event == null ? void 0 : event.type) === 'touchstart') {\n ignoringMouseDown.current = true;\n }\n const element = fakeElement ? null : container.current;\n const rect = element ? element.getBoundingClientRect() : {\n width: 0,\n height: 0,\n left: 0,\n top: 0\n };\n\n // Get the size of the ripple\n let rippleX;\n let rippleY;\n let rippleSize;\n if (center || event === undefined || event.clientX === 0 && event.clientY === 0 || !event.clientX && !event.touches) {\n rippleX = Math.round(rect.width / 2);\n rippleY = Math.round(rect.height / 2);\n } else {\n const {\n clientX,\n clientY\n } = event.touches && event.touches.length > 0 ? event.touches[0] : event;\n rippleX = Math.round(clientX - rect.left);\n rippleY = Math.round(clientY - rect.top);\n }\n if (center) {\n rippleSize = Math.sqrt((2 * rect.width ** 2 + rect.height ** 2) / 3);\n\n // For some reason the animation is broken on Mobile Chrome if the size is even.\n if (rippleSize % 2 === 0) {\n rippleSize += 1;\n }\n } else {\n const sizeX = Math.max(Math.abs((element ? element.clientWidth : 0) - rippleX), rippleX) * 2 + 2;\n const sizeY = Math.max(Math.abs((element ? element.clientHeight : 0) - rippleY), rippleY) * 2 + 2;\n rippleSize = Math.sqrt(sizeX ** 2 + sizeY ** 2);\n }\n\n // Touche devices\n if (event != null && event.touches) {\n // check that this isn't another touchstart due to multitouch\n // otherwise we will only clear a single timer when unmounting while two\n // are running\n if (startTimerCommit.current === null) {\n // Prepare the ripple effect.\n startTimerCommit.current = () => {\n startCommit({\n pulsate,\n rippleX,\n rippleY,\n rippleSize,\n cb\n });\n };\n // Delay the execution of the ripple effect.\n startTimer.current = setTimeout(() => {\n if (startTimerCommit.current) {\n startTimerCommit.current();\n startTimerCommit.current = null;\n }\n }, DELAY_RIPPLE); // We have to make a tradeoff with this value.\n }\n } else {\n startCommit({\n pulsate,\n rippleX,\n rippleY,\n rippleSize,\n cb\n });\n }\n }, [centerProp, startCommit]);\n const pulsate = React.useCallback(() => {\n start({}, {\n pulsate: true\n });\n }, [start]);\n const stop = React.useCallback((event, cb) => {\n clearTimeout(startTimer.current);\n\n // The touch interaction occurs too quickly.\n // We still want to show ripple effect.\n if ((event == null ? void 0 : event.type) === 'touchend' && startTimerCommit.current) {\n startTimerCommit.current();\n startTimerCommit.current = null;\n startTimer.current = setTimeout(() => {\n stop(event, cb);\n });\n return;\n }\n startTimerCommit.current = null;\n setRipples(oldRipples => {\n if (oldRipples.length > 0) {\n return oldRipples.slice(1);\n }\n return oldRipples;\n });\n rippleCallback.current = cb;\n }, []);\n React.useImperativeHandle(ref, () => ({\n pulsate,\n start,\n stop\n }), [pulsate, start, stop]);\n return /*#__PURE__*/_jsx(TouchRippleRoot, _extends({\n className: clsx(touchRippleClasses.root, classes.root, className),\n ref: container\n }, other, {\n children: /*#__PURE__*/_jsx(TransitionGroup, {\n component: null,\n exit: true,\n children: ripples\n })\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? TouchRipple.propTypes = {\n /**\n * If `true`, the ripple starts at the center of the component\n * rather than at the point of interaction.\n */\n center: PropTypes.bool,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string\n} : void 0;\nexport default TouchRipple;","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction Ripple(props) {\n const {\n className,\n classes,\n pulsate = false,\n rippleX,\n rippleY,\n rippleSize,\n in: inProp,\n onExited,\n timeout\n } = props;\n const [leaving, setLeaving] = React.useState(false);\n const rippleClassName = clsx(className, classes.ripple, classes.rippleVisible, pulsate && classes.ripplePulsate);\n const rippleStyles = {\n width: rippleSize,\n height: rippleSize,\n top: -(rippleSize / 2) + rippleY,\n left: -(rippleSize / 2) + rippleX\n };\n const childClassName = clsx(classes.child, leaving && classes.childLeaving, pulsate && classes.childPulsate);\n if (!inProp && !leaving) {\n setLeaving(true);\n }\n React.useEffect(() => {\n if (!inProp && onExited != null) {\n // react-transition-group#onExited\n const timeoutId = setTimeout(onExited, timeout);\n return () => {\n clearTimeout(timeoutId);\n };\n }\n return undefined;\n }, [onExited, inProp, timeout]);\n return /*#__PURE__*/_jsx(\"span\", {\n className: rippleClassName,\n style: rippleStyles,\n children: /*#__PURE__*/_jsx(\"span\", {\n className: childClassName\n })\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? Ripple.propTypes = {\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n /**\n * @ignore - injected from TransitionGroup\n */\n in: PropTypes.bool,\n /**\n * @ignore - injected from TransitionGroup\n */\n onExited: PropTypes.func,\n /**\n * If `true`, the ripple pulsates, typically indicating the keyboard focus state of an element.\n */\n pulsate: PropTypes.bool,\n /**\n * Diameter of the ripple.\n */\n rippleSize: PropTypes.number,\n /**\n * Horizontal position of the ripple center.\n */\n rippleX: PropTypes.number,\n /**\n * Vertical position of the ripple center.\n */\n rippleY: PropTypes.number,\n /**\n * exit delay\n */\n timeout: PropTypes.number.isRequired\n} : void 0;\nexport default Ripple;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getButtonBaseUtilityClass(slot) {\n return generateUtilityClass('MuiButtonBase', slot);\n}\nconst buttonBaseClasses = generateUtilityClasses('MuiButtonBase', ['root', 'disabled', 'focusVisible']);\nexport default buttonBaseClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"action\", \"centerRipple\", \"children\", \"className\", \"component\", \"disabled\", \"disableRipple\", \"disableTouchRipple\", \"focusRipple\", \"focusVisibleClassName\", \"LinkComponent\", \"onBlur\", \"onClick\", \"onContextMenu\", \"onDragLeave\", \"onFocus\", \"onFocusVisible\", \"onKeyDown\", \"onKeyUp\", \"onMouseDown\", \"onMouseLeave\", \"onMouseUp\", \"onTouchEnd\", \"onTouchMove\", \"onTouchStart\", \"tabIndex\", \"TouchRippleProps\", \"touchRippleRef\", \"type\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { elementTypeAcceptingRef, refType } from '@mui/utils';\nimport composeClasses from '@mui/base/composeClasses';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport useForkRef from '../utils/useForkRef';\nimport useEventCallback from '../utils/useEventCallback';\nimport useIsFocusVisible from '../utils/useIsFocusVisible';\nimport TouchRipple from './TouchRipple';\nimport buttonBaseClasses, { getButtonBaseUtilityClass } from './buttonBaseClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n disabled,\n focusVisible,\n focusVisibleClassName,\n classes\n } = ownerState;\n const slots = {\n root: ['root', disabled && 'disabled', focusVisible && 'focusVisible']\n };\n const composedClasses = composeClasses(slots, getButtonBaseUtilityClass, classes);\n if (focusVisible && focusVisibleClassName) {\n composedClasses.root += ` ${focusVisibleClassName}`;\n }\n return composedClasses;\n};\nexport const ButtonBaseRoot = styled('button', {\n name: 'MuiButtonBase',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'relative',\n boxSizing: 'border-box',\n WebkitTapHighlightColor: 'transparent',\n backgroundColor: 'transparent',\n // Reset default value\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0,\n border: 0,\n margin: 0,\n // Remove the margin in Safari\n borderRadius: 0,\n padding: 0,\n // Remove the padding in Firefox\n cursor: 'pointer',\n userSelect: 'none',\n verticalAlign: 'middle',\n MozAppearance: 'none',\n // Reset\n WebkitAppearance: 'none',\n // Reset\n textDecoration: 'none',\n // So we take precedent over the style of a native <a /> element.\n color: 'inherit',\n '&::-moz-focus-inner': {\n borderStyle: 'none' // Remove Firefox dotted outline.\n },\n\n [`&.${buttonBaseClasses.disabled}`]: {\n pointerEvents: 'none',\n // Disable link interactions\n cursor: 'default'\n },\n '@media print': {\n colorAdjust: 'exact'\n }\n});\n\n/**\n * `ButtonBase` contains as few styles as possible.\n * It aims to be a simple building block for creating a button.\n * It contains a load of style reset and some focus/ripple logic.\n */\nconst ButtonBase = /*#__PURE__*/React.forwardRef(function ButtonBase(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiButtonBase'\n });\n const {\n action,\n centerRipple = false,\n children,\n className,\n component = 'button',\n disabled = false,\n disableRipple = false,\n disableTouchRipple = false,\n focusRipple = false,\n LinkComponent = 'a',\n onBlur,\n onClick,\n onContextMenu,\n onDragLeave,\n onFocus,\n onFocusVisible,\n onKeyDown,\n onKeyUp,\n onMouseDown,\n onMouseLeave,\n onMouseUp,\n onTouchEnd,\n onTouchMove,\n onTouchStart,\n tabIndex = 0,\n TouchRippleProps,\n touchRippleRef,\n type\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const buttonRef = React.useRef(null);\n const rippleRef = React.useRef(null);\n const handleRippleRef = useForkRef(rippleRef, touchRippleRef);\n const {\n isFocusVisibleRef,\n onFocus: handleFocusVisible,\n onBlur: handleBlurVisible,\n ref: focusVisibleRef\n } = useIsFocusVisible();\n const [focusVisible, setFocusVisible] = React.useState(false);\n if (disabled && focusVisible) {\n setFocusVisible(false);\n }\n React.useImperativeHandle(action, () => ({\n focusVisible: () => {\n setFocusVisible(true);\n buttonRef.current.focus();\n }\n }), []);\n const [mountedState, setMountedState] = React.useState(false);\n React.useEffect(() => {\n setMountedState(true);\n }, []);\n const enableTouchRipple = mountedState && !disableRipple && !disabled;\n React.useEffect(() => {\n if (focusVisible && focusRipple && !disableRipple && mountedState) {\n rippleRef.current.pulsate();\n }\n }, [disableRipple, focusRipple, focusVisible, mountedState]);\n function useRippleHandler(rippleAction, eventCallback, skipRippleAction = disableTouchRipple) {\n return useEventCallback(event => {\n if (eventCallback) {\n eventCallback(event);\n }\n const ignore = skipRippleAction;\n if (!ignore && rippleRef.current) {\n rippleRef.current[rippleAction](event);\n }\n return true;\n });\n }\n const handleMouseDown = useRippleHandler('start', onMouseDown);\n const handleContextMenu = useRippleHandler('stop', onContextMenu);\n const handleDragLeave = useRippleHandler('stop', onDragLeave);\n const handleMouseUp = useRippleHandler('stop', onMouseUp);\n const handleMouseLeave = useRippleHandler('stop', event => {\n if (focusVisible) {\n event.preventDefault();\n }\n if (onMouseLeave) {\n onMouseLeave(event);\n }\n });\n const handleTouchStart = useRippleHandler('start', onTouchStart);\n const handleTouchEnd = useRippleHandler('stop', onTouchEnd);\n const handleTouchMove = useRippleHandler('stop', onTouchMove);\n const handleBlur = useRippleHandler('stop', event => {\n handleBlurVisible(event);\n if (isFocusVisibleRef.current === false) {\n setFocusVisible(false);\n }\n if (onBlur) {\n onBlur(event);\n }\n }, false);\n const handleFocus = useEventCallback(event => {\n // Fix for https://github.com/facebook/react/issues/7769\n if (!buttonRef.current) {\n buttonRef.current = event.currentTarget;\n }\n handleFocusVisible(event);\n if (isFocusVisibleRef.current === true) {\n setFocusVisible(true);\n if (onFocusVisible) {\n onFocusVisible(event);\n }\n }\n if (onFocus) {\n onFocus(event);\n }\n });\n const isNonNativeButton = () => {\n const button = buttonRef.current;\n return component && component !== 'button' && !(button.tagName === 'A' && button.href);\n };\n\n /**\n * IE11 shim for https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/repeat\n */\n const keydownRef = React.useRef(false);\n const handleKeyDown = useEventCallback(event => {\n // Check if key is already down to avoid repeats being counted as multiple activations\n if (focusRipple && !keydownRef.current && focusVisible && rippleRef.current && event.key === ' ') {\n keydownRef.current = true;\n rippleRef.current.stop(event, () => {\n rippleRef.current.start(event);\n });\n }\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === ' ') {\n event.preventDefault();\n }\n if (onKeyDown) {\n onKeyDown(event);\n }\n\n // Keyboard accessibility for non interactive elements\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === 'Enter' && !disabled) {\n event.preventDefault();\n if (onClick) {\n onClick(event);\n }\n }\n });\n const handleKeyUp = useEventCallback(event => {\n // calling preventDefault in keyUp on a <button> will not dispatch a click event if Space is pressed\n // https://codesandbox.io/s/button-keyup-preventdefault-dn7f0\n if (focusRipple && event.key === ' ' && rippleRef.current && focusVisible && !event.defaultPrevented) {\n keydownRef.current = false;\n rippleRef.current.stop(event, () => {\n rippleRef.current.pulsate(event);\n });\n }\n if (onKeyUp) {\n onKeyUp(event);\n }\n\n // Keyboard accessibility for non interactive elements\n if (onClick && event.target === event.currentTarget && isNonNativeButton() && event.key === ' ' && !event.defaultPrevented) {\n onClick(event);\n }\n });\n let ComponentProp = component;\n if (ComponentProp === 'button' && (other.href || other.to)) {\n ComponentProp = LinkComponent;\n }\n const buttonProps = {};\n if (ComponentProp === 'button') {\n buttonProps.type = type === undefined ? 'button' : type;\n buttonProps.disabled = disabled;\n } else {\n if (!other.href && !other.to) {\n buttonProps.role = 'button';\n }\n if (disabled) {\n buttonProps['aria-disabled'] = disabled;\n }\n }\n const handleRef = useForkRef(ref, focusVisibleRef, buttonRef);\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n if (enableTouchRipple && !rippleRef.current) {\n console.error(['MUI: The `component` prop provided to ButtonBase is invalid.', 'Please make sure the children prop is rendered in this custom component.'].join('\\n'));\n }\n }, [enableTouchRipple]);\n }\n const ownerState = _extends({}, props, {\n centerRipple,\n component,\n disabled,\n disableRipple,\n disableTouchRipple,\n focusRipple,\n tabIndex,\n focusVisible\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(ButtonBaseRoot, _extends({\n as: ComponentProp,\n className: clsx(classes.root, className),\n ownerState: ownerState,\n onBlur: handleBlur,\n onClick: onClick,\n onContextMenu: handleContextMenu,\n onFocus: handleFocus,\n onKeyDown: handleKeyDown,\n onKeyUp: handleKeyUp,\n onMouseDown: handleMouseDown,\n onMouseLeave: handleMouseLeave,\n onMouseUp: handleMouseUp,\n onDragLeave: handleDragLeave,\n onTouchEnd: handleTouchEnd,\n onTouchMove: handleTouchMove,\n onTouchStart: handleTouchStart,\n ref: handleRef,\n tabIndex: disabled ? -1 : tabIndex,\n type: type\n }, buttonProps, other, {\n children: [children, enableTouchRipple ?\n /*#__PURE__*/\n /* TouchRipple is only needed client-side, x2 boost on the server. */\n _jsx(TouchRipple, _extends({\n ref: handleRippleRef,\n center: centerRipple\n }, TouchRippleProps)) : null]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? ButtonBase.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * A ref for imperative actions.\n * It currently only supports `focusVisible()` action.\n */\n action: refType,\n /**\n * If `true`, the ripples are centered.\n * They won't start at the cursor interaction position.\n * @default false\n */\n centerRipple: PropTypes.bool,\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: elementTypeAcceptingRef,\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the ripple effect is disabled.\n *\n * ⚠️ Without a ripple there is no styling for :focus-visible by default. Be sure\n * to highlight the element by applying separate styles with the `.Mui-focusVisible` class.\n * @default false\n */\n disableRipple: PropTypes.bool,\n /**\n * If `true`, the touch ripple effect is disabled.\n * @default false\n */\n disableTouchRipple: PropTypes.bool,\n /**\n * If `true`, the base button will have a keyboard focus ripple.\n * @default false\n */\n focusRipple: PropTypes.bool,\n /**\n * This prop can help identify which element has keyboard focus.\n * The class name will be applied when the element gains the focus through keyboard interaction.\n * It's a polyfill for the [CSS :focus-visible selector](https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo).\n * The rationale for using this feature [is explained here](https://github.com/WICG/focus-visible/blob/HEAD/explainer.md).\n * A [polyfill can be used](https://github.com/WICG/focus-visible) to apply a `focus-visible` class to other components\n * if needed.\n */\n focusVisibleClassName: PropTypes.string,\n /**\n * @ignore\n */\n href: PropTypes /* @typescript-to-proptypes-ignore */.any,\n /**\n * The component used to render a link when the `href` prop is provided.\n * @default 'a'\n */\n LinkComponent: PropTypes.elementType,\n /**\n * @ignore\n */\n onBlur: PropTypes.func,\n /**\n * @ignore\n */\n onClick: PropTypes.func,\n /**\n * @ignore\n */\n onContextMenu: PropTypes.func,\n /**\n * @ignore\n */\n onDragLeave: PropTypes.func,\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n /**\n * Callback fired when the component is focused with a keyboard.\n * We trigger a `onFocus` callback too.\n */\n onFocusVisible: PropTypes.func,\n /**\n * @ignore\n */\n onKeyDown: PropTypes.func,\n /**\n * @ignore\n */\n onKeyUp: PropTypes.func,\n /**\n * @ignore\n */\n onMouseDown: PropTypes.func,\n /**\n * @ignore\n */\n onMouseLeave: PropTypes.func,\n /**\n * @ignore\n */\n onMouseUp: PropTypes.func,\n /**\n * @ignore\n */\n onTouchEnd: PropTypes.func,\n /**\n * @ignore\n */\n onTouchMove: PropTypes.func,\n /**\n * @ignore\n */\n onTouchStart: PropTypes.func,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * @default 0\n */\n tabIndex: PropTypes.number,\n /**\n * Props applied to the `TouchRipple` element.\n */\n TouchRippleProps: PropTypes.object,\n /**\n * A ref that points to the `TouchRipple` element.\n */\n touchRippleRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: PropTypes.shape({\n pulsate: PropTypes.func.isRequired,\n start: PropTypes.func.isRequired,\n stop: PropTypes.func.isRequired\n })\n })]),\n /**\n * @ignore\n */\n type: PropTypes.oneOfType([PropTypes.oneOf(['button', 'reset', 'submit']), PropTypes.string])\n} : void 0;\nexport default ButtonBase;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getListItemIconUtilityClass(slot) {\n return generateUtilityClass('MuiListItemIcon', slot);\n}\nconst listItemIconClasses = generateUtilityClasses('MuiListItemIcon', ['root', 'alignItemsFlexStart']);\nexport default listItemIconClasses;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getListItemTextUtilityClass(slot) {\n return generateUtilityClass('MuiListItemText', slot);\n}\nconst listItemTextClasses = generateUtilityClasses('MuiListItemText', ['root', 'multiline', 'dense', 'inset', 'primary', 'secondary']);\nexport default listItemTextClasses;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getMenuItemUtilityClass(slot) {\n return generateUtilityClass('MuiMenuItem', slot);\n}\nconst menuItemClasses = generateUtilityClasses('MuiMenuItem', ['root', 'focusVisible', 'dense', 'disabled', 'divider', 'gutters', 'selected']);\nexport default menuItemClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"component\", \"dense\", \"divider\", \"disableGutters\", \"focusVisibleClassName\", \"role\", \"tabIndex\", \"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport ListContext from '../List/ListContext';\nimport ButtonBase from '../ButtonBase';\nimport useEnhancedEffect from '../utils/useEnhancedEffect';\nimport useForkRef from '../utils/useForkRef';\nimport { dividerClasses } from '../Divider';\nimport { listItemIconClasses } from '../ListItemIcon';\nimport { listItemTextClasses } from '../ListItemText';\nimport menuItemClasses, { getMenuItemUtilityClass } from './menuItemClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const overridesResolver = (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.dense && styles.dense, ownerState.divider && styles.divider, !ownerState.disableGutters && styles.gutters];\n};\nconst useUtilityClasses = ownerState => {\n const {\n disabled,\n dense,\n divider,\n disableGutters,\n selected,\n classes\n } = ownerState;\n const slots = {\n root: ['root', dense && 'dense', disabled && 'disabled', !disableGutters && 'gutters', divider && 'divider', selected && 'selected']\n };\n const composedClasses = composeClasses(slots, getMenuItemUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n};\nconst MenuItemRoot = styled(ButtonBase, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiMenuItem',\n slot: 'Root',\n overridesResolver\n})(({\n theme,\n ownerState\n}) => _extends({}, theme.typography.body1, {\n display: 'flex',\n justifyContent: 'flex-start',\n alignItems: 'center',\n position: 'relative',\n textDecoration: 'none',\n minHeight: 48,\n paddingTop: 6,\n paddingBottom: 6,\n boxSizing: 'border-box',\n whiteSpace: 'nowrap'\n}, !ownerState.disableGutters && {\n paddingLeft: 16,\n paddingRight: 16\n}, ownerState.divider && {\n borderBottom: `1px solid ${(theme.vars || theme).palette.divider}`,\n backgroundClip: 'padding-box'\n}, {\n '&:hover': {\n textDecoration: 'none',\n backgroundColor: (theme.vars || theme).palette.action.hover,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n },\n [`&.${menuItemClasses.selected}`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n [`&.${menuItemClasses.focusVisible}`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n }\n },\n [`&.${menuItemClasses.selected}:hover`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity)\n }\n },\n [`&.${menuItemClasses.focusVisible}`]: {\n backgroundColor: (theme.vars || theme).palette.action.focus\n },\n [`&.${menuItemClasses.disabled}`]: {\n opacity: (theme.vars || theme).palette.action.disabledOpacity\n },\n [`& + .${dividerClasses.root}`]: {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1)\n },\n [`& + .${dividerClasses.inset}`]: {\n marginLeft: 52\n },\n [`& .${listItemTextClasses.root}`]: {\n marginTop: 0,\n marginBottom: 0\n },\n [`& .${listItemTextClasses.inset}`]: {\n paddingLeft: 36\n },\n [`& .${listItemIconClasses.root}`]: {\n minWidth: 36\n }\n}, !ownerState.dense && {\n [theme.breakpoints.up('sm')]: {\n minHeight: 'auto'\n }\n}, ownerState.dense && _extends({\n minHeight: 32,\n // https://m2.material.io/components/menus#specs > Dense\n paddingTop: 4,\n paddingBottom: 4\n}, theme.typography.body2, {\n [`& .${listItemIconClasses.root} svg`]: {\n fontSize: '1.25rem'\n }\n})));\nconst MenuItem = /*#__PURE__*/React.forwardRef(function MenuItem(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiMenuItem'\n });\n const {\n autoFocus = false,\n component = 'li',\n dense = false,\n divider = false,\n disableGutters = false,\n focusVisibleClassName,\n role = 'menuitem',\n tabIndex: tabIndexProp,\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const context = React.useContext(ListContext);\n const childContext = React.useMemo(() => ({\n dense: dense || context.dense || false,\n disableGutters\n }), [context.dense, dense, disableGutters]);\n const menuItemRef = React.useRef(null);\n useEnhancedEffect(() => {\n if (autoFocus) {\n if (menuItemRef.current) {\n menuItemRef.current.focus();\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('MUI: Unable to set focus to a MenuItem whose component has not been rendered.');\n }\n }\n }, [autoFocus]);\n const ownerState = _extends({}, props, {\n dense: childContext.dense,\n divider,\n disableGutters\n });\n const classes = useUtilityClasses(props);\n const handleRef = useForkRef(menuItemRef, ref);\n let tabIndex;\n if (!props.disabled) {\n tabIndex = tabIndexProp !== undefined ? tabIndexProp : -1;\n }\n return /*#__PURE__*/_jsx(ListContext.Provider, {\n value: childContext,\n children: /*#__PURE__*/_jsx(MenuItemRoot, _extends({\n ref: handleRef,\n role: role,\n tabIndex: tabIndex,\n component: component,\n focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n className: clsx(classes.root, className)\n }, other, {\n ownerState: ownerState,\n classes: classes\n }))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? MenuItem.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * If `true`, the list item is focused during the first mount.\n * Focus will also be triggered if the value changes from false to true.\n * @default false\n */\n autoFocus: PropTypes.bool,\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, compact vertical padding designed for keyboard and mouse input is used.\n * The prop defaults to the value inherited from the parent Menu component.\n * @default false\n */\n dense: PropTypes.bool,\n /**\n * @ignore\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the left and right padding is removed.\n * @default false\n */\n disableGutters: PropTypes.bool,\n /**\n * If `true`, a 1px light border is added to the bottom of the menu item.\n * @default false\n */\n divider: PropTypes.bool,\n /**\n * This prop can help identify which element has keyboard focus.\n * The class name will be applied when the element gains the focus through keyboard interaction.\n * It's a polyfill for the [CSS :focus-visible selector](https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo).\n * The rationale for using this feature [is explained here](https://github.com/WICG/focus-visible/blob/HEAD/explainer.md).\n * A [polyfill can be used](https://github.com/WICG/focus-visible) to apply a `focus-visible` class to other components\n * if needed.\n */\n focusVisibleClassName: PropTypes.string,\n /**\n * @ignore\n */\n role: PropTypes /* @typescript-to-proptypes-ignore */.string,\n /**\n * If `true`, the component is selected.\n * @default false\n */\n selected: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * @default 0\n */\n tabIndex: PropTypes.number\n} : void 0;\nexport default MenuItem;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getListUtilityClass(slot) {\n return generateUtilityClass('MuiList', slot);\n}\nconst listClasses = generateUtilityClasses('MuiList', ['root', 'padding', 'dense', 'subheader']);\nexport default listClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"component\", \"dense\", \"disablePadding\", \"subheader\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport ListContext from './ListContext';\nimport { getListUtilityClass } from './listClasses';\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disablePadding,\n dense,\n subheader\n } = ownerState;\n const slots = {\n root: ['root', !disablePadding && 'padding', dense && 'dense', subheader && 'subheader']\n };\n return composeClasses(slots, getListUtilityClass, classes);\n};\nconst ListRoot = styled('ul', {\n name: 'MuiList',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, !ownerState.disablePadding && styles.padding, ownerState.dense && styles.dense, ownerState.subheader && styles.subheader];\n }\n})(({\n ownerState\n}) => _extends({\n listStyle: 'none',\n margin: 0,\n padding: 0,\n position: 'relative'\n}, !ownerState.disablePadding && {\n paddingTop: 8,\n paddingBottom: 8\n}, ownerState.subheader && {\n paddingTop: 0\n}));\nconst List = /*#__PURE__*/React.forwardRef(function List(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiList'\n });\n const {\n children,\n className,\n component = 'ul',\n dense = false,\n disablePadding = false,\n subheader\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const context = React.useMemo(() => ({\n dense\n }), [dense]);\n const ownerState = _extends({}, props, {\n component,\n dense,\n disablePadding\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(ListContext.Provider, {\n value: context,\n children: /*#__PURE__*/_jsxs(ListRoot, _extends({\n as: component,\n className: clsx(classes.root, className),\n ref: ref,\n ownerState: ownerState\n }, other, {\n children: [subheader, children]\n }))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? List.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, compact vertical padding designed for keyboard and mouse input is used for\n * the list and list items.\n * The prop is available to descendant components as the `dense` context.\n * @default false\n */\n dense: PropTypes.bool,\n /**\n * If `true`, vertical padding is removed from the list.\n * @default false\n */\n disablePadding: PropTypes.bool,\n /**\n * The content of the subheader, normally `ListSubheader`.\n */\n subheader: PropTypes.node,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default List;","import { unstable_getScrollbarSize as getScrollbarSize } from '@mui/utils';\nexport default getScrollbarSize;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"actions\", \"autoFocus\", \"autoFocusItem\", \"children\", \"className\", \"disabledItemsFocusable\", \"disableListWrap\", \"onKeyDown\", \"variant\"];\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport ownerDocument from '../utils/ownerDocument';\nimport List from '../List';\nimport getScrollbarSize from '../utils/getScrollbarSize';\nimport useForkRef from '../utils/useForkRef';\nimport useEnhancedEffect from '../utils/useEnhancedEffect';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction nextItem(list, item, disableListWrap) {\n if (list === item) {\n return list.firstChild;\n }\n if (item && item.nextElementSibling) {\n return item.nextElementSibling;\n }\n return disableListWrap ? null : list.firstChild;\n}\nfunction previousItem(list, item, disableListWrap) {\n if (list === item) {\n return disableListWrap ? list.firstChild : list.lastChild;\n }\n if (item && item.previousElementSibling) {\n return item.previousElementSibling;\n }\n return disableListWrap ? null : list.lastChild;\n}\nfunction textCriteriaMatches(nextFocus, textCriteria) {\n if (textCriteria === undefined) {\n return true;\n }\n let text = nextFocus.innerText;\n if (text === undefined) {\n // jsdom doesn't support innerText\n text = nextFocus.textContent;\n }\n text = text.trim().toLowerCase();\n if (text.length === 0) {\n return false;\n }\n if (textCriteria.repeating) {\n return text[0] === textCriteria.keys[0];\n }\n return text.indexOf(textCriteria.keys.join('')) === 0;\n}\nfunction moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, traversalFunction, textCriteria) {\n let wrappedOnce = false;\n let nextFocus = traversalFunction(list, currentFocus, currentFocus ? disableListWrap : false);\n while (nextFocus) {\n // Prevent infinite loop.\n if (nextFocus === list.firstChild) {\n if (wrappedOnce) {\n return false;\n }\n wrappedOnce = true;\n }\n\n // Same logic as useAutocomplete.js\n const nextFocusDisabled = disabledItemsFocusable ? false : nextFocus.disabled || nextFocus.getAttribute('aria-disabled') === 'true';\n if (!nextFocus.hasAttribute('tabindex') || !textCriteriaMatches(nextFocus, textCriteria) || nextFocusDisabled) {\n // Move to the next element.\n nextFocus = traversalFunction(list, nextFocus, disableListWrap);\n } else {\n nextFocus.focus();\n return true;\n }\n }\n return false;\n}\n\n/**\n * A permanently displayed menu following https://www.w3.org/WAI/ARIA/apg/patterns/menu-button/.\n * It's exposed to help customization of the [`Menu`](/material-ui/api/menu/) component if you\n * use it separately you need to move focus into the component manually. Once\n * the focus is placed inside the component it is fully keyboard accessible.\n */\nconst MenuList = /*#__PURE__*/React.forwardRef(function MenuList(props, ref) {\n const {\n // private\n // eslint-disable-next-line react/prop-types\n actions,\n autoFocus = false,\n autoFocusItem = false,\n children,\n className,\n disabledItemsFocusable = false,\n disableListWrap = false,\n onKeyDown,\n variant = 'selectedMenu'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const listRef = React.useRef(null);\n const textCriteriaRef = React.useRef({\n keys: [],\n repeating: true,\n previousKeyMatched: true,\n lastTime: null\n });\n useEnhancedEffect(() => {\n if (autoFocus) {\n listRef.current.focus();\n }\n }, [autoFocus]);\n React.useImperativeHandle(actions, () => ({\n adjustStyleForScrollbar: (containerElement, theme) => {\n // Let's ignore that piece of logic if users are already overriding the width\n // of the menu.\n const noExplicitWidth = !listRef.current.style.width;\n if (containerElement.clientHeight < listRef.current.clientHeight && noExplicitWidth) {\n const scrollbarSize = `${getScrollbarSize(ownerDocument(containerElement))}px`;\n listRef.current.style[theme.direction === 'rtl' ? 'paddingLeft' : 'paddingRight'] = scrollbarSize;\n listRef.current.style.width = `calc(100% + ${scrollbarSize})`;\n }\n return listRef.current;\n }\n }), []);\n const handleKeyDown = event => {\n const list = listRef.current;\n const key = event.key;\n /**\n * @type {Element} - will always be defined since we are in a keydown handler\n * attached to an element. A keydown event is either dispatched to the activeElement\n * or document.body or document.documentElement. Only the first case will\n * trigger this specific handler.\n */\n const currentFocus = ownerDocument(list).activeElement;\n if (key === 'ArrowDown') {\n // Prevent scroll of the page\n event.preventDefault();\n moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, nextItem);\n } else if (key === 'ArrowUp') {\n event.preventDefault();\n moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, previousItem);\n } else if (key === 'Home') {\n event.preventDefault();\n moveFocus(list, null, disableListWrap, disabledItemsFocusable, nextItem);\n } else if (key === 'End') {\n event.preventDefault();\n moveFocus(list, null, disableListWrap, disabledItemsFocusable, previousItem);\n } else if (key.length === 1) {\n const criteria = textCriteriaRef.current;\n const lowerKey = key.toLowerCase();\n const currTime = performance.now();\n if (criteria.keys.length > 0) {\n // Reset\n if (currTime - criteria.lastTime > 500) {\n criteria.keys = [];\n criteria.repeating = true;\n criteria.previousKeyMatched = true;\n } else if (criteria.repeating && lowerKey !== criteria.keys[0]) {\n criteria.repeating = false;\n }\n }\n criteria.lastTime = currTime;\n criteria.keys.push(lowerKey);\n const keepFocusOnCurrent = currentFocus && !criteria.repeating && textCriteriaMatches(currentFocus, criteria);\n if (criteria.previousKeyMatched && (keepFocusOnCurrent || moveFocus(list, currentFocus, false, disabledItemsFocusable, nextItem, criteria))) {\n event.preventDefault();\n } else {\n criteria.previousKeyMatched = false;\n }\n }\n if (onKeyDown) {\n onKeyDown(event);\n }\n };\n const handleRef = useForkRef(listRef, ref);\n\n /**\n * the index of the item should receive focus\n * in a `variant=\"selectedMenu\"` it's the first `selected` item\n * otherwise it's the very first item.\n */\n let activeItemIndex = -1;\n // since we inject focus related props into children we have to do a lookahead\n // to check if there is a `selected` item. We're looking for the last `selected`\n // item and use the first valid item as a fallback\n React.Children.forEach(children, (child, index) => {\n if (! /*#__PURE__*/React.isValidElement(child)) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (isFragment(child)) {\n console.error([\"MUI: The Menu component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n }\n }\n if (!child.props.disabled) {\n if (variant === 'selectedMenu' && child.props.selected) {\n activeItemIndex = index;\n } else if (activeItemIndex === -1) {\n activeItemIndex = index;\n }\n }\n if (activeItemIndex === index && (child.props.disabled || child.props.muiSkipListHighlight || child.type.muiSkipListHighlight)) {\n activeItemIndex += 1;\n if (activeItemIndex >= children.length) {\n // there are no focusable items within the list.\n activeItemIndex = -1;\n }\n }\n });\n const items = React.Children.map(children, (child, index) => {\n if (index === activeItemIndex) {\n const newChildProps = {};\n if (autoFocusItem) {\n newChildProps.autoFocus = true;\n }\n if (child.props.tabIndex === undefined && variant === 'selectedMenu') {\n newChildProps.tabIndex = 0;\n }\n return /*#__PURE__*/React.cloneElement(child, newChildProps);\n }\n return child;\n });\n return /*#__PURE__*/_jsx(List, _extends({\n role: \"menu\",\n ref: handleRef,\n className: className,\n onKeyDown: handleKeyDown,\n tabIndex: autoFocus ? 0 : -1\n }, other, {\n children: items\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? MenuList.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * If `true`, will focus the `[role=\"menu\"]` container and move into tab order.\n * @default false\n */\n autoFocus: PropTypes.bool,\n /**\n * If `true`, will focus the first menuitem if `variant=\"menu\"` or selected item\n * if `variant=\"selectedMenu\"`.\n * @default false\n */\n autoFocusItem: PropTypes.bool,\n /**\n * MenuList contents, normally `MenuItem`s.\n */\n children: PropTypes.node,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * If `true`, will allow focus on disabled items.\n * @default false\n */\n disabledItemsFocusable: PropTypes.bool,\n /**\n * If `true`, the menu items will not wrap focus.\n * @default false\n */\n disableListWrap: PropTypes.bool,\n /**\n * @ignore\n */\n onKeyDown: PropTypes.func,\n /**\n * The variant to use. Use `menu` to prevent selected items from impacting the initial focus\n * and the vertical alignment relative to the anchor element.\n * @default 'selectedMenu'\n */\n variant: PropTypes.oneOf(['menu', 'selectedMenu'])\n} : void 0;\nexport default MenuList;","/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","const common = {\n black: '#000',\n white: '#fff'\n};\nexport default common;","const grey = {\n 50: '#fafafa',\n 100: '#f5f5f5',\n 200: '#eeeeee',\n 300: '#e0e0e0',\n 400: '#bdbdbd',\n 500: '#9e9e9e',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n A100: '#f5f5f5',\n A200: '#eeeeee',\n A400: '#bdbdbd',\n A700: '#616161'\n};\nexport default grey;","const purple = {\n 50: '#f3e5f5',\n 100: '#e1bee7',\n 200: '#ce93d8',\n 300: '#ba68c8',\n 400: '#ab47bc',\n 500: '#9c27b0',\n 600: '#8e24aa',\n 700: '#7b1fa2',\n 800: '#6a1b9a',\n 900: '#4a148c',\n A100: '#ea80fc',\n A200: '#e040fb',\n A400: '#d500f9',\n A700: '#aa00ff'\n};\nexport default purple;","const red = {\n 50: '#ffebee',\n 100: '#ffcdd2',\n 200: '#ef9a9a',\n 300: '#e57373',\n 400: '#ef5350',\n 500: '#f44336',\n 600: '#e53935',\n 700: '#d32f2f',\n 800: '#c62828',\n 900: '#b71c1c',\n A100: '#ff8a80',\n A200: '#ff5252',\n A400: '#ff1744',\n A700: '#d50000'\n};\nexport default red;","const orange = {\n 50: '#fff3e0',\n 100: '#ffe0b2',\n 200: '#ffcc80',\n 300: '#ffb74d',\n 400: '#ffa726',\n 500: '#ff9800',\n 600: '#fb8c00',\n 700: '#f57c00',\n 800: '#ef6c00',\n 900: '#e65100',\n A100: '#ffd180',\n A200: '#ffab40',\n A400: '#ff9100',\n A700: '#ff6d00'\n};\nexport default orange;","const blue = {\n 50: '#e3f2fd',\n 100: '#bbdefb',\n 200: '#90caf9',\n 300: '#64b5f6',\n 400: '#42a5f5',\n 500: '#2196f3',\n 600: '#1e88e5',\n 700: '#1976d2',\n 800: '#1565c0',\n 900: '#0d47a1',\n A100: '#82b1ff',\n A200: '#448aff',\n A400: '#2979ff',\n A700: '#2962ff'\n};\nexport default blue;","const lightBlue = {\n 50: '#e1f5fe',\n 100: '#b3e5fc',\n 200: '#81d4fa',\n 300: '#4fc3f7',\n 400: '#29b6f6',\n 500: '#03a9f4',\n 600: '#039be5',\n 700: '#0288d1',\n 800: '#0277bd',\n 900: '#01579b',\n A100: '#80d8ff',\n A200: '#40c4ff',\n A400: '#00b0ff',\n A700: '#0091ea'\n};\nexport default lightBlue;","const green = {\n 50: '#e8f5e9',\n 100: '#c8e6c9',\n 200: '#a5d6a7',\n 300: '#81c784',\n 400: '#66bb6a',\n 500: '#4caf50',\n 600: '#43a047',\n 700: '#388e3c',\n 800: '#2e7d32',\n 900: '#1b5e20',\n A100: '#b9f6ca',\n A200: '#69f0ae',\n A400: '#00e676',\n A700: '#00c853'\n};\nexport default green;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@mui/utils\";\nconst _excluded = [\"mode\", \"contrastThreshold\", \"tonalOffset\"];\nimport { deepmerge } from '@mui/utils';\nimport { darken, getContrastRatio, lighten } from '@mui/system';\nimport common from '../colors/common';\nimport grey from '../colors/grey';\nimport purple from '../colors/purple';\nimport red from '../colors/red';\nimport orange from '../colors/orange';\nimport blue from '../colors/blue';\nimport lightBlue from '../colors/lightBlue';\nimport green from '../colors/green';\nexport const light = {\n // The colors used to style the text.\n text: {\n // The most important text.\n primary: 'rgba(0, 0, 0, 0.87)',\n // Secondary text.\n secondary: 'rgba(0, 0, 0, 0.6)',\n // Disabled text have even lower visual prominence.\n disabled: 'rgba(0, 0, 0, 0.38)'\n },\n // The color used to divide different elements.\n divider: 'rgba(0, 0, 0, 0.12)',\n // The background colors used to style the surfaces.\n // Consistency between these values is important.\n background: {\n paper: common.white,\n default: common.white\n },\n // The colors used to style the action elements.\n action: {\n // The color of an active action like an icon button.\n active: 'rgba(0, 0, 0, 0.54)',\n // The color of an hovered action.\n hover: 'rgba(0, 0, 0, 0.04)',\n hoverOpacity: 0.04,\n // The color of a selected action.\n selected: 'rgba(0, 0, 0, 0.08)',\n selectedOpacity: 0.08,\n // The color of a disabled action.\n disabled: 'rgba(0, 0, 0, 0.26)',\n // The background color of a disabled action.\n disabledBackground: 'rgba(0, 0, 0, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(0, 0, 0, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.12\n }\n};\nexport const dark = {\n text: {\n primary: common.white,\n secondary: 'rgba(255, 255, 255, 0.7)',\n disabled: 'rgba(255, 255, 255, 0.5)',\n icon: 'rgba(255, 255, 255, 0.5)'\n },\n divider: 'rgba(255, 255, 255, 0.12)',\n background: {\n paper: '#121212',\n default: '#121212'\n },\n action: {\n active: common.white,\n hover: 'rgba(255, 255, 255, 0.08)',\n hoverOpacity: 0.08,\n selected: 'rgba(255, 255, 255, 0.16)',\n selectedOpacity: 0.16,\n disabled: 'rgba(255, 255, 255, 0.3)',\n disabledBackground: 'rgba(255, 255, 255, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(255, 255, 255, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.24\n }\n};\nfunction addLightOrDark(intent, direction, shade, tonalOffset) {\n const tonalOffsetLight = tonalOffset.light || tonalOffset;\n const tonalOffsetDark = tonalOffset.dark || tonalOffset * 1.5;\n if (!intent[direction]) {\n if (intent.hasOwnProperty(shade)) {\n intent[direction] = intent[shade];\n } else if (direction === 'light') {\n intent.light = lighten(intent.main, tonalOffsetLight);\n } else if (direction === 'dark') {\n intent.dark = darken(intent.main, tonalOffsetDark);\n }\n }\n}\nfunction getDefaultPrimary(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: blue[200],\n light: blue[50],\n dark: blue[400]\n };\n }\n return {\n main: blue[700],\n light: blue[400],\n dark: blue[800]\n };\n}\nfunction getDefaultSecondary(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: purple[200],\n light: purple[50],\n dark: purple[400]\n };\n }\n return {\n main: purple[500],\n light: purple[300],\n dark: purple[700]\n };\n}\nfunction getDefaultError(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: red[500],\n light: red[300],\n dark: red[700]\n };\n }\n return {\n main: red[700],\n light: red[400],\n dark: red[800]\n };\n}\nfunction getDefaultInfo(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: lightBlue[400],\n light: lightBlue[300],\n dark: lightBlue[700]\n };\n }\n return {\n main: lightBlue[700],\n light: lightBlue[500],\n dark: lightBlue[900]\n };\n}\nfunction getDefaultSuccess(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: green[400],\n light: green[300],\n dark: green[700]\n };\n }\n return {\n main: green[800],\n light: green[500],\n dark: green[900]\n };\n}\nfunction getDefaultWarning(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: orange[400],\n light: orange[300],\n dark: orange[700]\n };\n }\n return {\n main: '#ed6c02',\n // closest to orange[800] that pass 3:1.\n light: orange[500],\n dark: orange[900]\n };\n}\nexport default function createPalette(palette) {\n const {\n mode = 'light',\n contrastThreshold = 3,\n tonalOffset = 0.2\n } = palette,\n other = _objectWithoutPropertiesLoose(palette, _excluded);\n const primary = palette.primary || getDefaultPrimary(mode);\n const secondary = palette.secondary || getDefaultSecondary(mode);\n const error = palette.error || getDefaultError(mode);\n const info = palette.info || getDefaultInfo(mode);\n const success = palette.success || getDefaultSuccess(mode);\n const warning = palette.warning || getDefaultWarning(mode);\n\n // Use the same logic as\n // Bootstrap: https://github.com/twbs/bootstrap/blob/1d6e3710dd447de1a200f29e8fa521f8a0908f70/scss/_functions.scss#L59\n // and material-components-web https://github.com/material-components/material-components-web/blob/ac46b8863c4dab9fc22c4c662dc6bd1b65dd652f/packages/mdc-theme/_functions.scss#L54\n function getContrastText(background) {\n const contrastText = getContrastRatio(background, dark.text.primary) >= contrastThreshold ? dark.text.primary : light.text.primary;\n if (process.env.NODE_ENV !== 'production') {\n const contrast = getContrastRatio(background, contrastText);\n if (contrast < 3) {\n console.error([`MUI: The contrast ratio of ${contrast}:1 for ${contrastText} on ${background}`, 'falls below the WCAG recommended absolute minimum contrast ratio of 3:1.', 'https://www.w3.org/TR/2008/REC-WCAG20-20081211/#visual-audio-contrast-contrast'].join('\\n'));\n }\n }\n return contrastText;\n }\n const augmentColor = ({\n color,\n name,\n mainShade = 500,\n lightShade = 300,\n darkShade = 700\n }) => {\n color = _extends({}, color);\n if (!color.main && color[mainShade]) {\n color.main = color[mainShade];\n }\n if (!color.hasOwnProperty('main')) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\nThe color object needs to have a \\`main\\` property or a \\`${mainShade}\\` property.` : _formatMuiErrorMessage(11, name ? ` (${name})` : '', mainShade));\n }\n if (typeof color.main !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\n\\`color.main\\` should be a string, but \\`${JSON.stringify(color.main)}\\` was provided instead.\n\nDid you intend to use one of the following approaches?\n\nimport { green } from \"@mui/material/colors\";\n\nconst theme1 = createTheme({ palette: {\n primary: green,\n} });\n\nconst theme2 = createTheme({ palette: {\n primary: { main: green[500] },\n} });` : _formatMuiErrorMessage(12, name ? ` (${name})` : '', JSON.stringify(color.main)));\n }\n addLightOrDark(color, 'light', lightShade, tonalOffset);\n addLightOrDark(color, 'dark', darkShade, tonalOffset);\n if (!color.contrastText) {\n color.contrastText = getContrastText(color.main);\n }\n return color;\n };\n const modes = {\n dark,\n light\n };\n if (process.env.NODE_ENV !== 'production') {\n if (!modes[mode]) {\n console.error(`MUI: The palette mode \\`${mode}\\` is not supported.`);\n }\n }\n const paletteOutput = deepmerge(_extends({\n // A collection of common colors.\n common: _extends({}, common),\n // prevent mutable object.\n // The palette mode, can be light or dark.\n mode,\n // The colors used to represent primary interface elements for a user.\n primary: augmentColor({\n color: primary,\n name: 'primary'\n }),\n // The colors used to represent secondary interface elements for a user.\n secondary: augmentColor({\n color: secondary,\n name: 'secondary',\n mainShade: 'A400',\n lightShade: 'A200',\n darkShade: 'A700'\n }),\n // The colors used to represent interface elements that the user should be made aware of.\n error: augmentColor({\n color: error,\n name: 'error'\n }),\n // The colors used to represent potentially dangerous actions or important messages.\n warning: augmentColor({\n color: warning,\n name: 'warning'\n }),\n // The colors used to present information to the user that is neutral and not necessarily important.\n info: augmentColor({\n color: info,\n name: 'info'\n }),\n // The colors used to indicate the successful completion of an action that user triggered.\n success: augmentColor({\n color: success,\n name: 'success'\n }),\n // The grey colors.\n grey,\n // Used by `getContrastText()` to maximize the contrast between\n // the background and the text.\n contrastThreshold,\n // Takes a background color and returns the text color that maximizes the contrast.\n getContrastText,\n // Generate a rich color object.\n augmentColor,\n // Used by the functions below to shift a color's luminance by approximately\n // two indexes within its tonal palette.\n // E.g., shift from Red 500 to Red 300 or Red 700.\n tonalOffset\n }, modes[mode]), other);\n return paletteOutput;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"fontFamily\", \"fontSize\", \"fontWeightLight\", \"fontWeightRegular\", \"fontWeightMedium\", \"fontWeightBold\", \"htmlFontSize\", \"allVariants\", \"pxToRem\"];\nimport { deepmerge } from '@mui/utils';\nfunction round(value) {\n return Math.round(value * 1e5) / 1e5;\n}\nconst caseAllCaps = {\n textTransform: 'uppercase'\n};\nconst defaultFontFamily = '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif';\n\n/**\n * @see @link{https://m2.material.io/design/typography/the-type-system.html}\n * @see @link{https://m2.material.io/design/typography/understanding-typography.html}\n */\nexport default function createTypography(palette, typography) {\n const _ref = typeof typography === 'function' ? typography(palette) : typography,\n {\n fontFamily = defaultFontFamily,\n // The default font size of the Material Specification.\n fontSize = 14,\n // px\n fontWeightLight = 300,\n fontWeightRegular = 400,\n fontWeightMedium = 500,\n fontWeightBold = 700,\n // Tell MUI what's the font-size on the html element.\n // 16px is the default font-size used by browsers.\n htmlFontSize = 16,\n // Apply the CSS properties to all the variants.\n allVariants,\n pxToRem: pxToRem2\n } = _ref,\n other = _objectWithoutPropertiesLoose(_ref, _excluded);\n if (process.env.NODE_ENV !== 'production') {\n if (typeof fontSize !== 'number') {\n console.error('MUI: `fontSize` is required to be a number.');\n }\n if (typeof htmlFontSize !== 'number') {\n console.error('MUI: `htmlFontSize` is required to be a number.');\n }\n }\n const coef = fontSize / 14;\n const pxToRem = pxToRem2 || (size => `${size / htmlFontSize * coef}rem`);\n const buildVariant = (fontWeight, size, lineHeight, letterSpacing, casing) => _extends({\n fontFamily,\n fontWeight,\n fontSize: pxToRem(size),\n // Unitless following https://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights/\n lineHeight\n }, fontFamily === defaultFontFamily ? {\n letterSpacing: `${round(letterSpacing / size)}em`\n } : {}, casing, allVariants);\n const variants = {\n h1: buildVariant(fontWeightLight, 96, 1.167, -1.5),\n h2: buildVariant(fontWeightLight, 60, 1.2, -0.5),\n h3: buildVariant(fontWeightRegular, 48, 1.167, 0),\n h4: buildVariant(fontWeightRegular, 34, 1.235, 0.25),\n h5: buildVariant(fontWeightRegular, 24, 1.334, 0),\n h6: buildVariant(fontWeightMedium, 20, 1.6, 0.15),\n subtitle1: buildVariant(fontWeightRegular, 16, 1.75, 0.15),\n subtitle2: buildVariant(fontWeightMedium, 14, 1.57, 0.1),\n body1: buildVariant(fontWeightRegular, 16, 1.5, 0.15),\n body2: buildVariant(fontWeightRegular, 14, 1.43, 0.15),\n button: buildVariant(fontWeightMedium, 14, 1.75, 0.4, caseAllCaps),\n caption: buildVariant(fontWeightRegular, 12, 1.66, 0.4),\n overline: buildVariant(fontWeightRegular, 12, 2.66, 1, caseAllCaps),\n inherit: {\n fontFamily: 'inherit',\n fontWeight: 'inherit',\n fontSize: 'inherit',\n lineHeight: 'inherit',\n letterSpacing: 'inherit'\n }\n };\n return deepmerge(_extends({\n htmlFontSize,\n pxToRem,\n fontFamily,\n fontSize,\n fontWeightLight,\n fontWeightRegular,\n fontWeightMedium,\n fontWeightBold\n }, variants), other, {\n clone: false // No need to clone deep\n });\n}","const shadowKeyUmbraOpacity = 0.2;\nconst shadowKeyPenumbraOpacity = 0.14;\nconst shadowAmbientShadowOpacity = 0.12;\nfunction createShadow(...px) {\n return [`${px[0]}px ${px[1]}px ${px[2]}px ${px[3]}px rgba(0,0,0,${shadowKeyUmbraOpacity})`, `${px[4]}px ${px[5]}px ${px[6]}px ${px[7]}px rgba(0,0,0,${shadowKeyPenumbraOpacity})`, `${px[8]}px ${px[9]}px ${px[10]}px ${px[11]}px rgba(0,0,0,${shadowAmbientShadowOpacity})`].join(',');\n}\n\n// Values from https://github.com/material-components/material-components-web/blob/be8747f94574669cb5e7add1a7c54fa41a89cec7/packages/mdc-elevation/_variables.scss\nconst shadows = ['none', createShadow(0, 2, 1, -1, 0, 1, 1, 0, 0, 1, 3, 0), createShadow(0, 3, 1, -2, 0, 2, 2, 0, 0, 1, 5, 0), createShadow(0, 3, 3, -2, 0, 3, 4, 0, 0, 1, 8, 0), createShadow(0, 2, 4, -1, 0, 4, 5, 0, 0, 1, 10, 0), createShadow(0, 3, 5, -1, 0, 5, 8, 0, 0, 1, 14, 0), createShadow(0, 3, 5, -1, 0, 6, 10, 0, 0, 1, 18, 0), createShadow(0, 4, 5, -2, 0, 7, 10, 1, 0, 2, 16, 1), createShadow(0, 5, 5, -3, 0, 8, 10, 1, 0, 3, 14, 2), createShadow(0, 5, 6, -3, 0, 9, 12, 1, 0, 3, 16, 2), createShadow(0, 6, 6, -3, 0, 10, 14, 1, 0, 4, 18, 3), createShadow(0, 6, 7, -4, 0, 11, 15, 1, 0, 4, 20, 3), createShadow(0, 7, 8, -4, 0, 12, 17, 2, 0, 5, 22, 4), createShadow(0, 7, 8, -4, 0, 13, 19, 2, 0, 5, 24, 4), createShadow(0, 7, 9, -4, 0, 14, 21, 2, 0, 5, 26, 4), createShadow(0, 8, 9, -5, 0, 15, 22, 2, 0, 6, 28, 5), createShadow(0, 8, 10, -5, 0, 16, 24, 2, 0, 6, 30, 5), createShadow(0, 8, 11, -5, 0, 17, 26, 2, 0, 6, 32, 5), createShadow(0, 9, 11, -5, 0, 18, 28, 2, 0, 7, 34, 6), createShadow(0, 9, 12, -6, 0, 19, 29, 2, 0, 7, 36, 6), createShadow(0, 10, 13, -6, 0, 20, 31, 3, 0, 8, 38, 7), createShadow(0, 10, 13, -6, 0, 21, 33, 3, 0, 8, 40, 7), createShadow(0, 10, 14, -6, 0, 22, 35, 3, 0, 8, 42, 7), createShadow(0, 11, 14, -7, 0, 23, 36, 3, 0, 9, 44, 8), createShadow(0, 11, 15, -7, 0, 24, 38, 3, 0, 9, 46, 8)];\nexport default shadows;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"duration\", \"easing\", \"delay\"];\n// Follow https://material.google.com/motion/duration-easing.html#duration-easing-natural-easing-curves\n// to learn the context in which each easing should be used.\nexport const easing = {\n // This is the most common easing curve.\n easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n // Objects enter the screen at full velocity from off-screen and\n // slowly decelerate to a resting point.\n easeOut: 'cubic-bezier(0.0, 0, 0.2, 1)',\n // Objects leave the screen at full velocity. They do not decelerate when off-screen.\n easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n // The sharp curve is used by objects that may return to the screen at any time.\n sharp: 'cubic-bezier(0.4, 0, 0.6, 1)'\n};\n\n// Follow https://m2.material.io/guidelines/motion/duration-easing.html#duration-easing-common-durations\n// to learn when use what timing\nexport const duration = {\n shortest: 150,\n shorter: 200,\n short: 250,\n // most basic recommended timing\n standard: 300,\n // this is to be used in complex animations\n complex: 375,\n // recommended when something is entering screen\n enteringScreen: 225,\n // recommended when something is leaving screen\n leavingScreen: 195\n};\nfunction formatMs(milliseconds) {\n return `${Math.round(milliseconds)}ms`;\n}\nfunction getAutoHeightDuration(height) {\n if (!height) {\n return 0;\n }\n const constant = height / 36;\n\n // https://www.wolframalpha.com/input/?i=(4+%2B+15+*+(x+%2F+36+)+**+0.25+%2B+(x+%2F+36)+%2F+5)+*+10\n return Math.round((4 + 15 * constant ** 0.25 + constant / 5) * 10);\n}\nexport default function createTransitions(inputTransitions) {\n const mergedEasing = _extends({}, easing, inputTransitions.easing);\n const mergedDuration = _extends({}, duration, inputTransitions.duration);\n const create = (props = ['all'], options = {}) => {\n const {\n duration: durationOption = mergedDuration.standard,\n easing: easingOption = mergedEasing.easeInOut,\n delay = 0\n } = options,\n other = _objectWithoutPropertiesLoose(options, _excluded);\n if (process.env.NODE_ENV !== 'production') {\n const isString = value => typeof value === 'string';\n // IE11 support, replace with Number.isNaN\n // eslint-disable-next-line no-restricted-globals\n const isNumber = value => !isNaN(parseFloat(value));\n if (!isString(props) && !Array.isArray(props)) {\n console.error('MUI: Argument \"props\" must be a string or Array.');\n }\n if (!isNumber(durationOption) && !isString(durationOption)) {\n console.error(`MUI: Argument \"duration\" must be a number or a string but found ${durationOption}.`);\n }\n if (!isString(easingOption)) {\n console.error('MUI: Argument \"easing\" must be a string.');\n }\n if (!isNumber(delay) && !isString(delay)) {\n console.error('MUI: Argument \"delay\" must be a number or a string.');\n }\n if (Object.keys(other).length !== 0) {\n console.error(`MUI: Unrecognized argument(s) [${Object.keys(other).join(',')}].`);\n }\n }\n return (Array.isArray(props) ? props : [props]).map(animatedProp => `${animatedProp} ${typeof durationOption === 'string' ? durationOption : formatMs(durationOption)} ${easingOption} ${typeof delay === 'string' ? delay : formatMs(delay)}`).join(',');\n };\n return _extends({\n getAutoHeightDuration,\n create\n }, inputTransitions, {\n easing: mergedEasing,\n duration: mergedDuration\n });\n}","// We need to centralize the zIndex definitions as they work\n// like global values in the browser.\nconst zIndex = {\n mobileStepper: 1000,\n fab: 1050,\n speedDial: 1050,\n appBar: 1100,\n drawer: 1200,\n modal: 1300,\n snackbar: 1400,\n tooltip: 1500\n};\nexport default zIndex;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@mui/utils\";\nconst _excluded = [\"breakpoints\", \"mixins\", \"spacing\", \"palette\", \"transitions\", \"typography\", \"shape\"];\nimport { deepmerge } from '@mui/utils';\nimport { createTheme as systemCreateTheme, unstable_defaultSxConfig as defaultSxConfig, unstable_styleFunctionSx as styleFunctionSx } from '@mui/system';\nimport generateUtilityClass from '../generateUtilityClass';\nimport createMixins from './createMixins';\nimport createPalette from './createPalette';\nimport createTypography from './createTypography';\nimport shadows from './shadows';\nimport createTransitions from './createTransitions';\nimport zIndex from './zIndex';\nfunction createTheme(options = {}, ...args) {\n const {\n mixins: mixinsInput = {},\n palette: paletteInput = {},\n transitions: transitionsInput = {},\n typography: typographyInput = {}\n } = options,\n other = _objectWithoutPropertiesLoose(options, _excluded);\n if (options.vars) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: \\`vars\\` is a private field used for CSS variables support.\nPlease use another name.` : _formatMuiErrorMessage(18));\n }\n const palette = createPalette(paletteInput);\n const systemTheme = systemCreateTheme(options);\n let muiTheme = deepmerge(systemTheme, {\n mixins: createMixins(systemTheme.breakpoints, mixinsInput),\n palette,\n // Don't use [...shadows] until you've verified its transpiled code is not invoking the iterator protocol.\n shadows: shadows.slice(),\n typography: createTypography(palette, typographyInput),\n transitions: createTransitions(transitionsInput),\n zIndex: _extends({}, zIndex)\n });\n muiTheme = deepmerge(muiTheme, other);\n muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n if (process.env.NODE_ENV !== 'production') {\n // TODO v6: Refactor to use globalStateClassesMapping from @mui/utils once `readOnly` state class is used in Rating component.\n const stateClasses = ['active', 'checked', 'completed', 'disabled', 'error', 'expanded', 'focused', 'focusVisible', 'required', 'selected'];\n const traverse = (node, component) => {\n let key;\n\n // eslint-disable-next-line guard-for-in, no-restricted-syntax\n for (key in node) {\n const child = node[key];\n if (stateClasses.indexOf(key) !== -1 && Object.keys(child).length > 0) {\n if (process.env.NODE_ENV !== 'production') {\n const stateClass = generateUtilityClass('', key);\n console.error([`MUI: The \\`${component}\\` component increases ` + `the CSS specificity of the \\`${key}\\` internal state.`, 'You can not override it like this: ', JSON.stringify(node, null, 2), '', `Instead, you need to use the '&.${stateClass}' syntax:`, JSON.stringify({\n root: {\n [`&.${stateClass}`]: child\n }\n }, null, 2), '', 'https://mui.com/r/state-classes-guide'].join('\\n'));\n }\n // Remove the style to prevent global conflicts.\n node[key] = {};\n }\n }\n };\n Object.keys(muiTheme.components).forEach(component => {\n const styleOverrides = muiTheme.components[component].styleOverrides;\n if (styleOverrides && component.indexOf('Mui') === 0) {\n traverse(styleOverrides, component);\n }\n });\n }\n muiTheme.unstable_sxConfig = _extends({}, defaultSxConfig, other == null ? void 0 : other.unstable_sxConfig);\n muiTheme.unstable_sx = function sx(props) {\n return styleFunctionSx({\n sx: props,\n theme: this\n });\n };\n return muiTheme;\n}\nlet warnedOnce = false;\nexport function createMuiTheme(...args) {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce) {\n warnedOnce = true;\n console.error(['MUI: the createMuiTheme function was renamed to createTheme.', '', \"You should use `import { createTheme } from '@mui/material/styles'`\"].join('\\n'));\n }\n }\n return createTheme(...args);\n}\nexport default createTheme;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function createMixins(breakpoints, mixins) {\n return _extends({\n toolbar: {\n minHeight: 56,\n [breakpoints.up('xs')]: {\n '@media (orientation: landscape)': {\n minHeight: 48\n }\n },\n [breakpoints.up('sm')]: {\n minHeight: 64\n }\n }\n }, mixins);\n}","import createTheme from './createTheme';\nconst defaultTheme = createTheme();\nexport default defaultTheme;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"ownerState\"],\n _excluded2 = [\"variants\"],\n _excluded3 = [\"name\", \"slot\", \"skipVariantsResolver\", \"skipSx\", \"overridesResolver\"];\n/* eslint-disable no-underscore-dangle */\nimport styledEngineStyled, { internal_processStyles as processStyles } from '@mui/styled-engine';\nimport { isPlainObject } from '@mui/utils/deepmerge';\nimport capitalize from '@mui/utils/capitalize';\nimport getDisplayName from '@mui/utils/getDisplayName';\nimport createTheme from './createTheme';\nimport styleFunctionSx from './styleFunctionSx';\nfunction isEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\n\n// https://github.com/emotion-js/emotion/blob/26ded6109fcd8ca9875cc2ce4564fee678a3f3c5/packages/styled/src/utils.js#L40\nfunction isStringTag(tag) {\n return typeof tag === 'string' &&\n // 96 is one less than the char code\n // for \"a\" so this is checking that\n // it's a lowercase character\n tag.charCodeAt(0) > 96;\n}\n\n// Update /system/styled/#api in case if this changes\nexport function shouldForwardProp(prop) {\n return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';\n}\nexport const systemDefaultTheme = createTheme();\nconst lowercaseFirstLetter = string => {\n if (!string) {\n return string;\n }\n return string.charAt(0).toLowerCase() + string.slice(1);\n};\nfunction resolveTheme({\n defaultTheme,\n theme,\n themeId\n}) {\n return isEmpty(theme) ? defaultTheme : theme[themeId] || theme;\n}\nfunction defaultOverridesResolver(slot) {\n if (!slot) {\n return null;\n }\n return (props, styles) => styles[slot];\n}\nfunction processStyleArg(callableStyle, _ref) {\n let {\n ownerState\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n const resolvedStylesArg = typeof callableStyle === 'function' ? callableStyle(_extends({\n ownerState\n }, props)) : callableStyle;\n if (Array.isArray(resolvedStylesArg)) {\n return resolvedStylesArg.flatMap(resolvedStyle => processStyleArg(resolvedStyle, _extends({\n ownerState\n }, props)));\n }\n if (!!resolvedStylesArg && typeof resolvedStylesArg === 'object' && Array.isArray(resolvedStylesArg.variants)) {\n const {\n variants = []\n } = resolvedStylesArg,\n otherStyles = _objectWithoutPropertiesLoose(resolvedStylesArg, _excluded2);\n let result = otherStyles;\n variants.forEach(variant => {\n let isMatch = true;\n if (typeof variant.props === 'function') {\n isMatch = variant.props(_extends({\n ownerState\n }, props, ownerState));\n } else {\n Object.keys(variant.props).forEach(key => {\n if ((ownerState == null ? void 0 : ownerState[key]) !== variant.props[key] && props[key] !== variant.props[key]) {\n isMatch = false;\n }\n });\n }\n if (isMatch) {\n if (!Array.isArray(result)) {\n result = [result];\n }\n result.push(typeof variant.style === 'function' ? variant.style(_extends({\n ownerState\n }, props, ownerState)) : variant.style);\n }\n });\n return result;\n }\n return resolvedStylesArg;\n}\nexport default function createStyled(input = {}) {\n const {\n themeId,\n defaultTheme = systemDefaultTheme,\n rootShouldForwardProp = shouldForwardProp,\n slotShouldForwardProp = shouldForwardProp\n } = input;\n const systemSx = props => {\n return styleFunctionSx(_extends({}, props, {\n theme: resolveTheme(_extends({}, props, {\n defaultTheme,\n themeId\n }))\n }));\n };\n systemSx.__mui_systemSx = true;\n return (tag, inputOptions = {}) => {\n // Filter out the `sx` style function from the previous styled component to prevent unnecessary styles generated by the composite components.\n processStyles(tag, styles => styles.filter(style => !(style != null && style.__mui_systemSx)));\n const {\n name: componentName,\n slot: componentSlot,\n skipVariantsResolver: inputSkipVariantsResolver,\n skipSx: inputSkipSx,\n // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n overridesResolver = defaultOverridesResolver(lowercaseFirstLetter(componentSlot))\n } = inputOptions,\n options = _objectWithoutPropertiesLoose(inputOptions, _excluded3);\n\n // if skipVariantsResolver option is defined, take the value, otherwise, true for root and false for other slots.\n const skipVariantsResolver = inputSkipVariantsResolver !== undefined ? inputSkipVariantsResolver :\n // TODO v6: remove `Root` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n componentSlot && componentSlot !== 'Root' && componentSlot !== 'root' || false;\n const skipSx = inputSkipSx || false;\n let label;\n if (process.env.NODE_ENV !== 'production') {\n if (componentName) {\n // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n label = `${componentName}-${lowercaseFirstLetter(componentSlot || 'Root')}`;\n }\n }\n let shouldForwardPropOption = shouldForwardProp;\n\n // TODO v6: remove `Root` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n if (componentSlot === 'Root' || componentSlot === 'root') {\n shouldForwardPropOption = rootShouldForwardProp;\n } else if (componentSlot) {\n // any other slot specified\n shouldForwardPropOption = slotShouldForwardProp;\n } else if (isStringTag(tag)) {\n // for string (html) tag, preserve the behavior in emotion & styled-components.\n shouldForwardPropOption = undefined;\n }\n const defaultStyledResolver = styledEngineStyled(tag, _extends({\n shouldForwardProp: shouldForwardPropOption,\n label\n }, options));\n const transformStyleArg = stylesArg => {\n // On the server Emotion doesn't use React.forwardRef for creating components, so the created\n // component stays as a function. This condition makes sure that we do not interpolate functions\n // which are basically components used as a selectors.\n if (typeof stylesArg === 'function' && stylesArg.__emotion_real !== stylesArg || isPlainObject(stylesArg)) {\n return props => processStyleArg(stylesArg, _extends({}, props, {\n theme: resolveTheme({\n theme: props.theme,\n defaultTheme,\n themeId\n })\n }));\n }\n return stylesArg;\n };\n const muiStyledResolver = (styleArg, ...expressions) => {\n let transformedStyleArg = transformStyleArg(styleArg);\n const expressionsWithDefaultTheme = expressions ? expressions.map(transformStyleArg) : [];\n if (componentName && overridesResolver) {\n expressionsWithDefaultTheme.push(props => {\n const theme = resolveTheme(_extends({}, props, {\n defaultTheme,\n themeId\n }));\n if (!theme.components || !theme.components[componentName] || !theme.components[componentName].styleOverrides) {\n return null;\n }\n const styleOverrides = theme.components[componentName].styleOverrides;\n const resolvedStyleOverrides = {};\n // TODO: v7 remove iteration and use `resolveStyleArg(styleOverrides[slot])` directly\n Object.entries(styleOverrides).forEach(([slotKey, slotStyle]) => {\n resolvedStyleOverrides[slotKey] = processStyleArg(slotStyle, _extends({}, props, {\n theme\n }));\n });\n return overridesResolver(props, resolvedStyleOverrides);\n });\n }\n if (componentName && !skipVariantsResolver) {\n expressionsWithDefaultTheme.push(props => {\n var _theme$components;\n const theme = resolveTheme(_extends({}, props, {\n defaultTheme,\n themeId\n }));\n const themeVariants = theme == null || (_theme$components = theme.components) == null || (_theme$components = _theme$components[componentName]) == null ? void 0 : _theme$components.variants;\n return processStyleArg({\n variants: themeVariants\n }, _extends({}, props, {\n theme\n }));\n });\n }\n if (!skipSx) {\n expressionsWithDefaultTheme.push(systemSx);\n }\n const numOfCustomFnsApplied = expressionsWithDefaultTheme.length - expressions.length;\n if (Array.isArray(styleArg) && numOfCustomFnsApplied > 0) {\n const placeholders = new Array(numOfCustomFnsApplied).fill('');\n // If the type is array, than we need to add placeholders in the template for the overrides, variants and the sx styles.\n transformedStyleArg = [...styleArg, ...placeholders];\n transformedStyleArg.raw = [...styleArg.raw, ...placeholders];\n }\n const Component = defaultStyledResolver(transformedStyleArg, ...expressionsWithDefaultTheme);\n if (process.env.NODE_ENV !== 'production') {\n let displayName;\n if (componentName) {\n displayName = `${componentName}${capitalize(componentSlot || '')}`;\n }\n if (displayName === undefined) {\n displayName = `Styled(${getDisplayName(tag)})`;\n }\n Component.displayName = displayName;\n }\n if (tag.muiName) {\n Component.muiName = tag.muiName;\n }\n return Component;\n };\n if (defaultStyledResolver.withConfig) {\n muiStyledResolver.withConfig = defaultStyledResolver.withConfig;\n }\n return muiStyledResolver;\n };\n}","import { createStyled, shouldForwardProp } from '@mui/system';\nimport defaultTheme from './defaultTheme';\nexport const rootShouldForwardProp = prop => shouldForwardProp(prop) && prop !== 'classes';\nexport const slotShouldForwardProp = shouldForwardProp;\nconst styled = createStyled({\n defaultTheme,\n rootShouldForwardProp\n});\nexport default styled;","/**\n * @mui/styled-engine-sc v5.11.11\n *\n * @license MIT\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport scStyled from 'styled-components';\nexport default function styled(tag, options) {\n let stylesFactory;\n if (options) {\n stylesFactory = scStyled(tag).withConfig({\n displayName: options.label,\n shouldForwardProp: options.shouldForwardProp\n });\n } else {\n stylesFactory = scStyled(tag);\n }\n if (process.env.NODE_ENV !== 'production') {\n const fn = (...styles) => {\n const component = typeof tag === 'string' ? `\"${tag}\"` : 'component';\n if (styles.length === 0) {\n console.error([`MUI: Seems like you called \\`styled(${component})()\\` without a \\`style\\` argument.`, 'You must provide a `styles` argument: `styled(\"div\")(styleYouForgotToPass)`.'].join('\\n'));\n } else if (styles.some(style => style === undefined)) {\n console.error(`MUI: the styled(${component})(...args) API requires all its args to be defined.`);\n }\n return stylesFactory(...styles);\n };\n fn.withConfig = stylesFactory.withConfig;\n return fn;\n }\n return stylesFactory;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const internal_processStyles = (tag, processor) => {\n // Styled-components attaches an instance to `componentStyle`.\n // https://github.com/styled-components/styled-components/blob/da8151762dcf72735ffba358173d4c097f6d5888/packages/styled-components/src/models/StyledComponent.ts#L257\n //\n // The instance contains `rules` (the styles)\n // https://github.com/styled-components/styled-components/blob/da8151762dcf72735ffba358173d4c097f6d5888/packages/styled-components/src/models/ComponentStyle.ts#L23\n if (tag.componentStyle) {\n tag.componentStyle.rules = processor(tag.componentStyle.rules);\n }\n};\nexport { ThemeContext, keyframes, css } from 'styled-components';\nexport { default as StyledEngineProvider } from './StyledEngineProvider';\nexport { default as GlobalStyles } from './GlobalStyles';","import * as React from 'react';\nimport { useTheme as useThemeSystem } from '@mui/system';\nimport defaultTheme from './defaultTheme';\nexport default function useTheme() {\n const theme = useThemeSystem(defaultTheme);\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(theme);\n }\n return theme;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * Add keys, values of `defaultProps` that does not exist in `props`\n * @param {object} defaultProps\n * @param {object} props\n * @returns {object} resolved props\n */\nexport default function resolveProps(defaultProps, props) {\n const output = _extends({}, props);\n Object.keys(defaultProps).forEach(propName => {\n if (propName.toString().match(/^(components|slots)$/)) {\n output[propName] = _extends({}, defaultProps[propName], output[propName]);\n } else if (propName.toString().match(/^(componentsProps|slotProps)$/)) {\n const defaultSlotProps = defaultProps[propName] || {};\n const slotProps = props[propName];\n output[propName] = {};\n if (!slotProps || !Object.keys(slotProps)) {\n // Reduce the iteration if the slot props is empty\n output[propName] = defaultSlotProps;\n } else if (!defaultSlotProps || !Object.keys(defaultSlotProps)) {\n // Reduce the iteration if the default slot props is empty\n output[propName] = slotProps;\n } else {\n output[propName] = _extends({}, slotProps);\n Object.keys(defaultSlotProps).forEach(slotPropName => {\n output[propName][slotPropName] = resolveProps(defaultSlotProps[slotPropName], slotProps[slotPropName]);\n });\n }\n } else if (output[propName] === undefined) {\n output[propName] = defaultProps[propName];\n }\n });\n return output;\n}","import resolveProps from '@mui/utils/resolveProps';\nexport default function getThemeProps(params) {\n const {\n theme,\n name,\n props\n } = params;\n if (!theme || !theme.components || !theme.components[name] || !theme.components[name].defaultProps) {\n return props;\n }\n return resolveProps(theme.components[name].defaultProps, props);\n}","import { useThemeProps as systemUseThemeProps } from '@mui/system';\nimport defaultTheme from './defaultTheme';\nexport default function useThemeProps({\n props,\n name\n}) {\n return systemUseThemeProps({\n props,\n name,\n defaultTheme\n });\n}","'use client';\n\nimport getThemeProps from './getThemeProps';\nimport useTheme from '../useTheme';\nexport default function useThemeProps({\n props,\n name,\n defaultTheme,\n themeId\n}) {\n let theme = useTheme(defaultTheme);\n if (themeId) {\n theme = theme[themeId] || theme;\n }\n const mergedProps = getThemeProps({\n theme,\n name,\n props\n });\n return mergedProps;\n}","import { unstable_ownerDocument as ownerDocument } from '@mui/utils';\nexport default ownerDocument;","import { unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nexport default useEnhancedEffect;","import { unstable_useForkRef as useForkRef } from '@mui/utils';\nexport default useForkRef;","import * as React from 'react';\nconst ThemeContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== 'production') {\n ThemeContext.displayName = 'ThemeContext';\n}\nexport default ThemeContext;","import * as React from 'react';\nimport ThemeContext from './ThemeContext';\nexport default function useTheme() {\n const theme = React.useContext(ThemeContext);\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(theme);\n }\n return theme;\n}","const hasSymbol = typeof Symbol === 'function' && Symbol.for;\nexport default hasSymbol ? Symbol.for('mui.nested') : '__THEME_NESTED__';","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { exactProp } from '@mui/utils';\nimport ThemeContext from '../useTheme/ThemeContext';\nimport useTheme from '../useTheme';\nimport nested from './nested';\n\n// To support composition of theme.\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction mergeOuterLocalTheme(outerTheme, localTheme) {\n if (typeof localTheme === 'function') {\n const mergedTheme = localTheme(outerTheme);\n if (process.env.NODE_ENV !== 'production') {\n if (!mergedTheme) {\n console.error(['MUI: You should return an object from your theme function, i.e.', '<ThemeProvider theme={() => ({})} />'].join('\\n'));\n }\n }\n return mergedTheme;\n }\n return _extends({}, outerTheme, localTheme);\n}\n\n/**\n * This component takes a `theme` prop.\n * It makes the `theme` available down the React tree thanks to React context.\n * This component should preferably be used at **the root of your component tree**.\n */\nfunction ThemeProvider(props) {\n const {\n children,\n theme: localTheme\n } = props;\n const outerTheme = useTheme();\n if (process.env.NODE_ENV !== 'production') {\n if (outerTheme === null && typeof localTheme === 'function') {\n console.error(['MUI: You are providing a theme function prop to the ThemeProvider component:', '<ThemeProvider theme={outerTheme => outerTheme} />', '', 'However, no outer theme is present.', 'Make sure a theme is already injected higher in the React tree ' + 'or provide a theme object.'].join('\\n'));\n }\n }\n const theme = React.useMemo(() => {\n const output = outerTheme === null ? localTheme : mergeOuterLocalTheme(outerTheme, localTheme);\n if (output != null) {\n output[nested] = outerTheme !== null;\n }\n return output;\n }, [localTheme, outerTheme]);\n return /*#__PURE__*/_jsx(ThemeContext.Provider, {\n value: theme,\n children: children\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = {\n /**\n * Your component tree.\n */\n children: PropTypes.node,\n /**\n * A theme object. You can provide a function to extend the outer theme.\n */\n theme: PropTypes.oneOfType([PropTypes.object, PropTypes.func]).isRequired\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = exactProp(ThemeProvider.propTypes) : void 0;\n}\nexport default ThemeProvider;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst RtlContext = /*#__PURE__*/React.createContext();\nfunction RtlProvider(_ref) {\n let {\n value\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n return /*#__PURE__*/_jsx(RtlContext.Provider, _extends({\n value: value != null ? value : true\n }, props));\n}\nprocess.env.NODE_ENV !== \"production\" ? RtlProvider.propTypes = {\n children: PropTypes.node,\n value: PropTypes.bool\n} : void 0;\nexport const useRtl = () => {\n const value = React.useContext(RtlContext);\n return value != null ? value : false;\n};\nexport default RtlProvider;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport resolveProps from '@mui/utils/resolveProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst PropsContext = /*#__PURE__*/React.createContext(undefined);\nfunction DefaultPropsProvider({\n value,\n children\n}) {\n return /*#__PURE__*/_jsx(PropsContext.Provider, {\n value: value,\n children: children\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? DefaultPropsProvider.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * @ignore\n */\n children: PropTypes.node,\n /**\n * @ignore\n */\n value: PropTypes.object\n} : void 0;\nfunction getThemeProps(params) {\n const {\n theme,\n name,\n props\n } = params;\n if (!theme || !theme.components || !theme.components[name]) {\n return props;\n }\n const config = theme.components[name];\n if (config.defaultProps) {\n // compatible with v5 signature\n return resolveProps(config.defaultProps, props);\n }\n if (!config.styleOverrides && !config.variants) {\n // v6 signature, no property 'defaultProps'\n return resolveProps(config, props);\n }\n return props;\n}\nexport function useDefaultProps({\n props,\n name\n}) {\n const ctx = React.useContext(PropsContext);\n return getThemeProps({\n props,\n name,\n theme: {\n components: ctx\n }\n });\n}\nexport default DefaultPropsProvider;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { ThemeProvider as MuiThemeProvider, useTheme as usePrivateTheme } from '@mui/private-theming';\nimport exactProp from '@mui/utils/exactProp';\nimport { ThemeContext as StyledEngineThemeContext } from '@mui/styled-engine';\nimport useThemeWithoutDefault from '../useThemeWithoutDefault';\nimport RtlProvider from '../RtlProvider';\nimport DefaultPropsProvider from '../DefaultPropsProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst EMPTY_THEME = {};\nfunction useThemeScoping(themeId, upperTheme, localTheme, isPrivate = false) {\n return React.useMemo(() => {\n const resolvedTheme = themeId ? upperTheme[themeId] || upperTheme : upperTheme;\n if (typeof localTheme === 'function') {\n const mergedTheme = localTheme(resolvedTheme);\n const result = themeId ? _extends({}, upperTheme, {\n [themeId]: mergedTheme\n }) : mergedTheme;\n // must return a function for the private theme to NOT merge with the upper theme.\n // see the test case \"use provided theme from a callback\" in ThemeProvider.test.js\n if (isPrivate) {\n return () => result;\n }\n return result;\n }\n return themeId ? _extends({}, upperTheme, {\n [themeId]: localTheme\n }) : _extends({}, upperTheme, localTheme);\n }, [themeId, upperTheme, localTheme, isPrivate]);\n}\n\n/**\n * This component makes the `theme` available down the React tree.\n * It should preferably be used at **the root of your component tree**.\n *\n * <ThemeProvider theme={theme}> // existing use case\n * <ThemeProvider theme={{ id: theme }}> // theme scoping\n */\nfunction ThemeProvider(props) {\n const {\n children,\n theme: localTheme,\n themeId\n } = props;\n const upperTheme = useThemeWithoutDefault(EMPTY_THEME);\n const upperPrivateTheme = usePrivateTheme() || EMPTY_THEME;\n if (process.env.NODE_ENV !== 'production') {\n if (upperTheme === null && typeof localTheme === 'function' || themeId && upperTheme && !upperTheme[themeId] && typeof localTheme === 'function') {\n console.error(['MUI: You are providing a theme function prop to the ThemeProvider component:', '<ThemeProvider theme={outerTheme => outerTheme} />', '', 'However, no outer theme is present.', 'Make sure a theme is already injected higher in the React tree ' + 'or provide a theme object.'].join('\\n'));\n }\n }\n const engineTheme = useThemeScoping(themeId, upperTheme, localTheme);\n const privateTheme = useThemeScoping(themeId, upperPrivateTheme, localTheme, true);\n const rtlValue = engineTheme.direction === 'rtl';\n return /*#__PURE__*/_jsx(MuiThemeProvider, {\n theme: privateTheme,\n children: /*#__PURE__*/_jsx(StyledEngineThemeContext.Provider, {\n value: engineTheme,\n children: /*#__PURE__*/_jsx(RtlProvider, {\n value: rtlValue,\n children: /*#__PURE__*/_jsx(DefaultPropsProvider, {\n value: engineTheme == null ? void 0 : engineTheme.components,\n children: children\n })\n })\n })\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * Your component tree.\n */\n children: PropTypes.node,\n /**\n * A theme object. You can provide a function to extend the outer theme.\n */\n theme: PropTypes.oneOfType([PropTypes.func, PropTypes.object]).isRequired,\n /**\n * The design system's unique id for getting the corresponded theme when there are multiple design systems.\n */\n themeId: PropTypes.string\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = exactProp(ThemeProvider.propTypes) : void 0;\n}\nexport default ThemeProvider;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport deepmerge from '@mui/utils/deepmerge';\nimport merge from './merge';\n\n// The breakpoint **start** at this value.\n// For instance with the first breakpoint xs: [xs, sm[.\nexport const values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n};\nconst defaultBreakpoints = {\n // Sorted ASC by size. That's important.\n // It can't be configured as it's used statically for propTypes.\n keys: ['xs', 'sm', 'md', 'lg', 'xl'],\n up: key => `@media (min-width:${values[key]}px)`\n};\nexport function handleBreakpoints(props, propValue, styleFromPropValue) {\n const theme = props.theme || {};\n if (Array.isArray(propValue)) {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return propValue.reduce((acc, item, index) => {\n acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);\n return acc;\n }, {});\n }\n if (typeof propValue === 'object') {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return Object.keys(propValue).reduce((acc, breakpoint) => {\n // key is breakpoint\n if (Object.keys(themeBreakpoints.values || values).indexOf(breakpoint) !== -1) {\n const mediaKey = themeBreakpoints.up(breakpoint);\n acc[mediaKey] = styleFromPropValue(propValue[breakpoint], breakpoint);\n } else {\n const cssKey = breakpoint;\n acc[cssKey] = propValue[cssKey];\n }\n return acc;\n }, {});\n }\n const output = styleFromPropValue(propValue);\n return output;\n}\nfunction breakpoints(styleFunction) {\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const newStyleFunction = props => {\n const theme = props.theme || {};\n const base = styleFunction(props);\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n const extended = themeBreakpoints.keys.reduce((acc, key) => {\n if (props[key]) {\n acc = acc || {};\n acc[themeBreakpoints.up(key)] = styleFunction(_extends({\n theme\n }, props[key]));\n }\n return acc;\n }, null);\n return merge(base, extended);\n };\n newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? _extends({}, styleFunction.propTypes, {\n xs: PropTypes.object,\n sm: PropTypes.object,\n md: PropTypes.object,\n lg: PropTypes.object,\n xl: PropTypes.object\n }) : {};\n newStyleFunction.filterProps = ['xs', 'sm', 'md', 'lg', 'xl', ...styleFunction.filterProps];\n return newStyleFunction;\n}\nexport function createEmptyBreakpointObject(breakpointsInput = {}) {\n var _breakpointsInput$key;\n const breakpointsInOrder = (_breakpointsInput$key = breakpointsInput.keys) == null ? void 0 : _breakpointsInput$key.reduce((acc, key) => {\n const breakpointStyleKey = breakpointsInput.up(key);\n acc[breakpointStyleKey] = {};\n return acc;\n }, {});\n return breakpointsInOrder || {};\n}\nexport function removeUnusedBreakpoints(breakpointKeys, style) {\n return breakpointKeys.reduce((acc, key) => {\n const breakpointOutput = acc[key];\n const isBreakpointUnused = !breakpointOutput || Object.keys(breakpointOutput).length === 0;\n if (isBreakpointUnused) {\n delete acc[key];\n }\n return acc;\n }, style);\n}\nexport function mergeBreakpointsInOrder(breakpointsInput, ...styles) {\n const emptyBreakpoints = createEmptyBreakpointObject(breakpointsInput);\n const mergedOutput = [emptyBreakpoints, ...styles].reduce((prev, next) => deepmerge(prev, next), {});\n return removeUnusedBreakpoints(Object.keys(emptyBreakpoints), mergedOutput);\n}\n\n// compute base for responsive values; e.g.,\n// [1,2,3] => {xs: true, sm: true, md: true}\n// {xs: 1, sm: 2, md: 3} => {xs: true, sm: true, md: true}\nexport function computeBreakpointsBase(breakpointValues, themeBreakpoints) {\n // fixed value\n if (typeof breakpointValues !== 'object') {\n return {};\n }\n const base = {};\n const breakpointsKeys = Object.keys(themeBreakpoints);\n if (Array.isArray(breakpointValues)) {\n breakpointsKeys.forEach((breakpoint, i) => {\n if (i < breakpointValues.length) {\n base[breakpoint] = true;\n }\n });\n } else {\n breakpointsKeys.forEach(breakpoint => {\n if (breakpointValues[breakpoint] != null) {\n base[breakpoint] = true;\n }\n });\n }\n return base;\n}\nexport function resolveBreakpointValues({\n values: breakpointValues,\n breakpoints: themeBreakpoints,\n base: customBase\n}) {\n const base = customBase || computeBreakpointsBase(breakpointValues, themeBreakpoints);\n const keys = Object.keys(base);\n if (keys.length === 0) {\n return breakpointValues;\n }\n let previous;\n return keys.reduce((acc, breakpoint, i) => {\n if (Array.isArray(breakpointValues)) {\n acc[breakpoint] = breakpointValues[i] != null ? breakpointValues[i] : breakpointValues[previous];\n previous = i;\n } else if (typeof breakpointValues === 'object') {\n acc[breakpoint] = breakpointValues[breakpoint] != null ? breakpointValues[breakpoint] : breakpointValues[previous];\n previous = breakpoint;\n } else {\n acc[breakpoint] = breakpointValues;\n }\n return acc;\n }, {});\n}\nexport default breakpoints;","function clamp(val, min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SAFE_INTEGER) {\n return Math.max(min, Math.min(val, max));\n}\nexport default clamp;","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n/* eslint-disable @typescript-eslint/naming-convention */\nimport clamp from '@mui/utils/clamp';\n/**\n * Returns a number whose value is limited to the given range.\n * @param {number} value The value to be clamped\n * @param {number} min The lower boundary of the output range\n * @param {number} max The upper boundary of the output range\n * @returns {number} A number in the range [min, max]\n */\nfunction clampWrapper(value, min = 0, max = 1) {\n if (process.env.NODE_ENV !== 'production') {\n if (value < min || value > max) {\n console.error(`MUI: The value provided ${value} is out of range [${min}, ${max}].`);\n }\n }\n return clamp(value, min, max);\n}\n\n/**\n * Converts a color from CSS hex format to CSS rgb format.\n * @param {string} color - Hex color, i.e. #nnn or #nnnnnn\n * @returns {string} A CSS rgb color string\n */\nexport function hexToRgb(color) {\n color = color.slice(1);\n const re = new RegExp(`.{1,${color.length >= 6 ? 2 : 1}}`, 'g');\n let colors = color.match(re);\n if (colors && colors[0].length === 1) {\n colors = colors.map(n => n + n);\n }\n return colors ? `rgb${colors.length === 4 ? 'a' : ''}(${colors.map((n, index) => {\n return index < 3 ? parseInt(n, 16) : Math.round(parseInt(n, 16) / 255 * 1000) / 1000;\n }).join(', ')})` : '';\n}\nfunction intToHex(int) {\n const hex = int.toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n}\n\n/**\n * Returns an object with the type and values of a color.\n *\n * Note: Does not support rgb % values.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {object} - A MUI color object: {type: string, values: number[]}\n */\nexport function decomposeColor(color) {\n // Idempotent\n if (color.type) {\n return color;\n }\n if (color.charAt(0) === '#') {\n return decomposeColor(hexToRgb(color));\n }\n const marker = color.indexOf('(');\n const type = color.substring(0, marker);\n if (['rgb', 'rgba', 'hsl', 'hsla', 'color'].indexOf(type) === -1) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: Unsupported \\`${color}\\` color.\nThe following formats are supported: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().` : _formatMuiErrorMessage(9, color));\n }\n let values = color.substring(marker + 1, color.length - 1);\n let colorSpace;\n if (type === 'color') {\n values = values.split(' ');\n colorSpace = values.shift();\n if (values.length === 4 && values[3].charAt(0) === '/') {\n values[3] = values[3].slice(1);\n }\n if (['srgb', 'display-p3', 'a98-rgb', 'prophoto-rgb', 'rec-2020'].indexOf(colorSpace) === -1) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: unsupported \\`${colorSpace}\\` color space.\nThe following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rgb, rec-2020.` : _formatMuiErrorMessage(10, colorSpace));\n }\n } else {\n values = values.split(',');\n }\n values = values.map(value => parseFloat(value));\n return {\n type,\n values,\n colorSpace\n };\n}\n\n/**\n * Returns a channel created from the input color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {string} - The channel for the color, that can be used in rgba or hsla colors\n */\nexport const colorChannel = color => {\n const decomposedColor = decomposeColor(color);\n return decomposedColor.values.slice(0, 3).map((val, idx) => decomposedColor.type.indexOf('hsl') !== -1 && idx !== 0 ? `${val}%` : val).join(' ');\n};\nexport const private_safeColorChannel = (color, warning) => {\n try {\n return colorChannel(color);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n};\n\n/**\n * Converts a color object with type and values to a string.\n * @param {object} color - Decomposed color\n * @param {string} color.type - One of: 'rgb', 'rgba', 'hsl', 'hsla', 'color'\n * @param {array} color.values - [n,n,n] or [n,n,n,n]\n * @returns {string} A CSS color string\n */\nexport function recomposeColor(color) {\n const {\n type,\n colorSpace\n } = color;\n let {\n values\n } = color;\n if (type.indexOf('rgb') !== -1) {\n // Only convert the first 3 values to int (i.e. not alpha)\n values = values.map((n, i) => i < 3 ? parseInt(n, 10) : n);\n } else if (type.indexOf('hsl') !== -1) {\n values[1] = `${values[1]}%`;\n values[2] = `${values[2]}%`;\n }\n if (type.indexOf('color') !== -1) {\n values = `${colorSpace} ${values.join(' ')}`;\n } else {\n values = `${values.join(', ')}`;\n }\n return `${type}(${values})`;\n}\n\n/**\n * Converts a color from CSS rgb format to CSS hex format.\n * @param {string} color - RGB color, i.e. rgb(n, n, n)\n * @returns {string} A CSS rgb color string, i.e. #nnnnnn\n */\nexport function rgbToHex(color) {\n // Idempotent\n if (color.indexOf('#') === 0) {\n return color;\n }\n const {\n values\n } = decomposeColor(color);\n return `#${values.map((n, i) => intToHex(i === 3 ? Math.round(255 * n) : n)).join('')}`;\n}\n\n/**\n * Converts a color from hsl format to rgb format.\n * @param {string} color - HSL color values\n * @returns {string} rgb color values\n */\nexport function hslToRgb(color) {\n color = decomposeColor(color);\n const {\n values\n } = color;\n const h = values[0];\n const s = values[1] / 100;\n const l = values[2] / 100;\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n let type = 'rgb';\n const rgb = [Math.round(f(0) * 255), Math.round(f(8) * 255), Math.round(f(4) * 255)];\n if (color.type === 'hsla') {\n type += 'a';\n rgb.push(values[3]);\n }\n return recomposeColor({\n type,\n values: rgb\n });\n}\n/**\n * The relative brightness of any point in a color space,\n * normalized to 0 for darkest black and 1 for lightest white.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {number} The relative brightness of the color in the range 0 - 1\n */\nexport function getLuminance(color) {\n color = decomposeColor(color);\n let rgb = color.type === 'hsl' || color.type === 'hsla' ? decomposeColor(hslToRgb(color)).values : color.values;\n rgb = rgb.map(val => {\n if (color.type !== 'color') {\n val /= 255; // normalized\n }\n return val <= 0.03928 ? val / 12.92 : ((val + 0.055) / 1.055) ** 2.4;\n });\n\n // Truncate at 3 digits\n return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));\n}\n\n/**\n * Calculates the contrast ratio between two colors.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} foreground - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {string} background - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} A contrast ratio value in the range 0 - 21.\n */\nexport function getContrastRatio(foreground, background) {\n const lumA = getLuminance(foreground);\n const lumB = getLuminance(background);\n return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);\n}\n\n/**\n * Sets the absolute transparency of a color.\n * Any existing alpha values are overwritten.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} value - value to set the alpha channel to in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function alpha(color, value) {\n color = decomposeColor(color);\n value = clampWrapper(value);\n if (color.type === 'rgb' || color.type === 'hsl') {\n color.type += 'a';\n }\n if (color.type === 'color') {\n color.values[3] = `/${value}`;\n } else {\n color.values[3] = value;\n }\n return recomposeColor(color);\n}\nexport function private_safeAlpha(color, value, warning) {\n try {\n return alpha(color, value);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Darkens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function darken(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clampWrapper(coefficient);\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] *= 1 - coefficient;\n } else if (color.type.indexOf('rgb') !== -1 || color.type.indexOf('color') !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] *= 1 - coefficient;\n }\n }\n return recomposeColor(color);\n}\nexport function private_safeDarken(color, coefficient, warning) {\n try {\n return darken(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Lightens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function lighten(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clampWrapper(coefficient);\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] += (100 - color.values[2]) * coefficient;\n } else if (color.type.indexOf('rgb') !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] += (255 - color.values[i]) * coefficient;\n }\n } else if (color.type.indexOf('color') !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] += (1 - color.values[i]) * coefficient;\n }\n }\n return recomposeColor(color);\n}\nexport function private_safeLighten(color, coefficient, warning) {\n try {\n return lighten(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Darken or lighten a color, depending on its luminance.\n * Light colors are darkened, dark colors are lightened.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient=0.15 - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function emphasize(color, coefficient = 0.15) {\n return getLuminance(color) > 0.5 ? darken(color, coefficient) : lighten(color, coefficient);\n}\nexport function private_safeEmphasize(color, coefficient, warning) {\n try {\n return emphasize(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Blend a transparent overlay color with a background color, resulting in a single\n * RGB color.\n * @param {string} background - CSS color\n * @param {string} overlay - CSS color\n * @param {number} opacity - Opacity multiplier in the range 0 - 1\n * @param {number} [gamma=1.0] - Gamma correction factor. For gamma-correct blending, 2.2 is usual.\n */\nexport function blend(background, overlay, opacity, gamma = 1.0) {\n const blendChannel = (b, o) => Math.round((b ** (1 / gamma) * (1 - opacity) + o ** (1 / gamma) * opacity) ** gamma);\n const backgroundColor = decomposeColor(background);\n const overlayColor = decomposeColor(overlay);\n const rgb = [blendChannel(backgroundColor.values[0], overlayColor.values[0]), blendChannel(backgroundColor.values[1], overlayColor.values[1]), blendChannel(backgroundColor.values[2], overlayColor.values[2])];\n return recomposeColor({\n type: 'rgb',\n values: rgb\n });\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"values\", \"unit\", \"step\"];\n// Sorted ASC by size. That's important.\n// It can't be configured as it's used statically for propTypes.\nexport const breakpointKeys = ['xs', 'sm', 'md', 'lg', 'xl'];\nconst sortBreakpointsValues = values => {\n const breakpointsAsArray = Object.keys(values).map(key => ({\n key,\n val: values[key]\n })) || [];\n // Sort in ascending order\n breakpointsAsArray.sort((breakpoint1, breakpoint2) => breakpoint1.val - breakpoint2.val);\n return breakpointsAsArray.reduce((acc, obj) => {\n return _extends({}, acc, {\n [obj.key]: obj.val\n });\n }, {});\n};\n\n// Keep in mind that @media is inclusive by the CSS specification.\nexport default function createBreakpoints(breakpoints) {\n const {\n // The breakpoint **start** at this value.\n // For instance with the first breakpoint xs: [xs, sm).\n values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n },\n unit = 'px',\n step = 5\n } = breakpoints,\n other = _objectWithoutPropertiesLoose(breakpoints, _excluded);\n const sortedValues = sortBreakpointsValues(values);\n const keys = Object.keys(sortedValues);\n function up(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (min-width:${value}${unit})`;\n }\n function down(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (max-width:${value - step / 100}${unit})`;\n }\n function between(start, end) {\n const endIndex = keys.indexOf(end);\n return `@media (min-width:${typeof values[start] === 'number' ? values[start] : start}${unit}) and ` + `(max-width:${(endIndex !== -1 && typeof values[keys[endIndex]] === 'number' ? values[keys[endIndex]] : end) - step / 100}${unit})`;\n }\n function only(key) {\n if (keys.indexOf(key) + 1 < keys.length) {\n return between(key, keys[keys.indexOf(key) + 1]);\n }\n return up(key);\n }\n function not(key) {\n // handle first and last key separately, for better readability\n const keyIndex = keys.indexOf(key);\n if (keyIndex === 0) {\n return up(keys[1]);\n }\n if (keyIndex === keys.length - 1) {\n return down(keys[keyIndex]);\n }\n return between(key, keys[keys.indexOf(key) + 1]).replace('@media', '@media not all and');\n }\n return _extends({\n keys,\n values: sortedValues,\n up,\n down,\n between,\n only,\n not,\n unit\n }, other);\n}","const shape = {\n borderRadius: 4\n};\nexport default shape;","/**\n * A universal utility to style components with multiple color modes. Always use it from the theme object.\n * It works with:\n * - [Basic theme](https://mui.com/material-ui/customization/dark-mode/)\n * - [CSS theme variables](https://mui.com/material-ui/experimental-api/css-theme-variables/overview/)\n * - Zero-runtime engine\n *\n * Tips: Use an array over object spread and place `theme.applyStyles()` last.\n *\n * ✅ [{ background: '#e5e5e5' }, theme.applyStyles('dark', { background: '#1c1c1c' })]\n *\n * 🚫 { background: '#e5e5e5', ...theme.applyStyles('dark', { background: '#1c1c1c' })}\n *\n * @example\n * 1. using with `styled`:\n * ```jsx\n * const Component = styled('div')(({ theme }) => [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ]);\n * ```\n *\n * @example\n * 2. using with `sx` prop:\n * ```jsx\n * <Box sx={theme => [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ]}\n * />\n * ```\n *\n * @example\n * 3. theming a component:\n * ```jsx\n * extendTheme({\n * components: {\n * MuiButton: {\n * styleOverrides: {\n * root: ({ theme }) => [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ],\n * },\n * }\n * }\n * })\n *```\n */\nexport default function applyStyles(key, styles) {\n // @ts-expect-error this is 'any' type\n const theme = this;\n if (theme.vars && typeof theme.getColorSchemeSelector === 'function') {\n // If CssVarsProvider is used as a provider,\n // returns '* :where([data-mui-color-scheme=\"light|dark\"]) &'\n const selector = theme.getColorSchemeSelector(key).replace(/(\\[[^\\]]+\\])/, '*:where($1)');\n return {\n [selector]: styles\n };\n }\n if (theme.palette.mode === key) {\n return styles;\n }\n return {};\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"breakpoints\", \"palette\", \"spacing\", \"shape\"];\nimport deepmerge from '@mui/utils/deepmerge';\nimport createBreakpoints from './createBreakpoints';\nimport shape from './shape';\nimport createSpacing from './createSpacing';\nimport styleFunctionSx from '../styleFunctionSx/styleFunctionSx';\nimport defaultSxConfig from '../styleFunctionSx/defaultSxConfig';\nimport applyStyles from './applyStyles';\nfunction createTheme(options = {}, ...args) {\n const {\n breakpoints: breakpointsInput = {},\n palette: paletteInput = {},\n spacing: spacingInput,\n shape: shapeInput = {}\n } = options,\n other = _objectWithoutPropertiesLoose(options, _excluded);\n const breakpoints = createBreakpoints(breakpointsInput);\n const spacing = createSpacing(spacingInput);\n let muiTheme = deepmerge({\n breakpoints,\n direction: 'ltr',\n components: {},\n // Inject component definitions.\n palette: _extends({\n mode: 'light'\n }, paletteInput),\n spacing,\n shape: _extends({}, shape, shapeInput)\n }, other);\n muiTheme.applyStyles = applyStyles;\n muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n muiTheme.unstable_sxConfig = _extends({}, defaultSxConfig, other == null ? void 0 : other.unstable_sxConfig);\n muiTheme.unstable_sx = function sx(props) {\n return styleFunctionSx({\n sx: props,\n theme: this\n });\n };\n return muiTheme;\n}\nexport default createTheme;","import { createUnarySpacing } from '../spacing';\n\n// The different signatures imply different meaning for their arguments that can't be expressed structurally.\n// We express the difference with variable names.\n\nexport default function createSpacing(spacingInput = 8) {\n // Already transformed.\n if (spacingInput.mui) {\n return spacingInput;\n }\n\n // Material Design layouts are visually balanced. Most measurements align to an 8dp grid, which aligns both spacing and the overall layout.\n // Smaller components, such as icons, can align to a 4dp grid.\n // https://m2.material.io/design/layout/understanding-layout.html\n const transform = createUnarySpacing({\n spacing: spacingInput\n });\n const spacing = (...argsInput) => {\n if (process.env.NODE_ENV !== 'production') {\n if (!(argsInput.length <= 4)) {\n console.error(`MUI: Too many arguments provided, expected between 0 and 4, got ${argsInput.length}`);\n }\n }\n const args = argsInput.length === 0 ? [1] : argsInput;\n return args.map(argument => {\n const output = transform(argument);\n return typeof output === 'number' ? `${output}px` : output;\n }).join(' ');\n };\n spacing.mui = true;\n return spacing;\n}","import deepmerge from '@mui/utils/deepmerge';\nfunction merge(acc, item) {\n if (!item) {\n return acc;\n }\n return deepmerge(acc, item, {\n clone: false // No need to clone deep, it's way faster.\n });\n}\nexport default merge;","import responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nimport { getPath } from './style';\nimport merge from './merge';\nimport memoize from './memoize';\nconst properties = {\n m: 'margin',\n p: 'padding'\n};\nconst directions = {\n t: 'Top',\n r: 'Right',\n b: 'Bottom',\n l: 'Left',\n x: ['Left', 'Right'],\n y: ['Top', 'Bottom']\n};\nconst aliases = {\n marginX: 'mx',\n marginY: 'my',\n paddingX: 'px',\n paddingY: 'py'\n};\n\n// memoize() impact:\n// From 300,000 ops/sec\n// To 350,000 ops/sec\nconst getCssProperties = memoize(prop => {\n // It's not a shorthand notation.\n if (prop.length > 2) {\n if (aliases[prop]) {\n prop = aliases[prop];\n } else {\n return [prop];\n }\n }\n const [a, b] = prop.split('');\n const property = properties[a];\n const direction = directions[b] || '';\n return Array.isArray(direction) ? direction.map(dir => property + dir) : [property + direction];\n});\nexport const marginKeys = ['m', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'marginInline', 'marginInlineStart', 'marginInlineEnd', 'marginBlock', 'marginBlockStart', 'marginBlockEnd'];\nexport const paddingKeys = ['p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'paddingX', 'paddingY', 'paddingInline', 'paddingInlineStart', 'paddingInlineEnd', 'paddingBlock', 'paddingBlockStart', 'paddingBlockEnd'];\nconst spacingKeys = [...marginKeys, ...paddingKeys];\nexport function createUnaryUnit(theme, themeKey, defaultValue, propName) {\n var _getPath;\n const themeSpacing = (_getPath = getPath(theme, themeKey, false)) != null ? _getPath : defaultValue;\n if (typeof themeSpacing === 'number') {\n return abs => {\n if (typeof abs === 'string') {\n return abs;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (typeof abs !== 'number') {\n console.error(`MUI: Expected ${propName} argument to be a number or a string, got ${abs}.`);\n }\n }\n return themeSpacing * abs;\n };\n }\n if (Array.isArray(themeSpacing)) {\n return abs => {\n if (typeof abs === 'string') {\n return abs;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (!Number.isInteger(abs)) {\n console.error([`MUI: The \\`theme.${themeKey}\\` array type cannot be combined with non integer values.` + `You should either use an integer value that can be used as index, or define the \\`theme.${themeKey}\\` as a number.`].join('\\n'));\n } else if (abs > themeSpacing.length - 1) {\n console.error([`MUI: The value provided (${abs}) overflows.`, `The supported values are: ${JSON.stringify(themeSpacing)}.`, `${abs} > ${themeSpacing.length - 1}, you need to add the missing values.`].join('\\n'));\n }\n }\n return themeSpacing[abs];\n };\n }\n if (typeof themeSpacing === 'function') {\n return themeSpacing;\n }\n if (process.env.NODE_ENV !== 'production') {\n console.error([`MUI: The \\`theme.${themeKey}\\` value (${themeSpacing}) is invalid.`, 'It should be a number, an array or a function.'].join('\\n'));\n }\n return () => undefined;\n}\nexport function createUnarySpacing(theme) {\n return createUnaryUnit(theme, 'spacing', 8, 'spacing');\n}\nexport function getValue(transformer, propValue) {\n if (typeof propValue === 'string' || propValue == null) {\n return propValue;\n }\n const abs = Math.abs(propValue);\n const transformed = transformer(abs);\n if (propValue >= 0) {\n return transformed;\n }\n if (typeof transformed === 'number') {\n return -transformed;\n }\n return `-${transformed}`;\n}\nexport function getStyleFromPropValue(cssProperties, transformer) {\n return propValue => cssProperties.reduce((acc, cssProperty) => {\n acc[cssProperty] = getValue(transformer, propValue);\n return acc;\n }, {});\n}\nfunction resolveCssProperty(props, keys, prop, transformer) {\n // Using a hash computation over an array iteration could be faster, but with only 28 items,\n // it's doesn't worth the bundle size.\n if (keys.indexOf(prop) === -1) {\n return null;\n }\n const cssProperties = getCssProperties(prop);\n const styleFromPropValue = getStyleFromPropValue(cssProperties, transformer);\n const propValue = props[prop];\n return handleBreakpoints(props, propValue, styleFromPropValue);\n}\nfunction style(props, keys) {\n const transformer = createUnarySpacing(props.theme);\n return Object.keys(props).map(prop => resolveCssProperty(props, keys, prop, transformer)).reduce(merge, {});\n}\nexport function margin(props) {\n return style(props, marginKeys);\n}\nmargin.propTypes = process.env.NODE_ENV !== 'production' ? marginKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nmargin.filterProps = marginKeys;\nexport function padding(props) {\n return style(props, paddingKeys);\n}\npadding.propTypes = process.env.NODE_ENV !== 'production' ? paddingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\npadding.filterProps = paddingKeys;\nfunction spacing(props) {\n return style(props, spacingKeys);\n}\nspacing.propTypes = process.env.NODE_ENV !== 'production' ? spacingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nspacing.filterProps = spacingKeys;\nexport default spacing;","export default function memoize(fn) {\n const cache = {};\n return arg => {\n if (cache[arg] === undefined) {\n cache[arg] = fn(arg);\n }\n return cache[arg];\n };\n}","import capitalize from '@mui/utils/capitalize';\nimport responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nexport function getPath(obj, path, checkVars = true) {\n if (!path || typeof path !== 'string') {\n return null;\n }\n\n // Check if CSS variables are used\n if (obj && obj.vars && checkVars) {\n const val = `vars.${path}`.split('.').reduce((acc, item) => acc && acc[item] ? acc[item] : null, obj);\n if (val != null) {\n return val;\n }\n }\n return path.split('.').reduce((acc, item) => {\n if (acc && acc[item] != null) {\n return acc[item];\n }\n return null;\n }, obj);\n}\nexport function getStyleValue(themeMapping, transform, propValueFinal, userValue = propValueFinal) {\n let value;\n if (typeof themeMapping === 'function') {\n value = themeMapping(propValueFinal);\n } else if (Array.isArray(themeMapping)) {\n value = themeMapping[propValueFinal] || userValue;\n } else {\n value = getPath(themeMapping, propValueFinal) || userValue;\n }\n if (transform) {\n value = transform(value, userValue, themeMapping);\n }\n return value;\n}\nfunction style(options) {\n const {\n prop,\n cssProperty = options.prop,\n themeKey,\n transform\n } = options;\n\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const fn = props => {\n if (props[prop] == null) {\n return null;\n }\n const propValue = props[prop];\n const theme = props.theme;\n const themeMapping = getPath(theme, themeKey) || {};\n const styleFromPropValue = propValueFinal => {\n let value = getStyleValue(themeMapping, transform, propValueFinal);\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getStyleValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n if (cssProperty === false) {\n return value;\n }\n return {\n [cssProperty]: value\n };\n };\n return handleBreakpoints(props, propValue, styleFromPropValue);\n };\n fn.propTypes = process.env.NODE_ENV !== 'production' ? {\n [prop]: responsivePropType\n } : {};\n fn.filterProps = [prop];\n return fn;\n}\nexport default style;","import merge from './merge';\nfunction compose(...styles) {\n const handlers = styles.reduce((acc, style) => {\n style.filterProps.forEach(prop => {\n acc[prop] = style;\n });\n return acc;\n }, {});\n\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const fn = props => {\n return Object.keys(props).reduce((acc, prop) => {\n if (handlers[prop]) {\n return merge(acc, handlers[prop](props));\n }\n return acc;\n }, {});\n };\n fn.propTypes = process.env.NODE_ENV !== 'production' ? styles.reduce((acc, style) => Object.assign(acc, style.propTypes), {}) : {};\n fn.filterProps = styles.reduce((acc, style) => acc.concat(style.filterProps), []);\n return fn;\n}\nexport default compose;","import responsivePropType from './responsivePropType';\nimport style from './style';\nimport compose from './compose';\nimport { createUnaryUnit, getValue } from './spacing';\nimport { handleBreakpoints } from './breakpoints';\nexport function borderTransform(value) {\n if (typeof value !== 'number') {\n return value;\n }\n return `${value}px solid`;\n}\nfunction createBorderStyle(prop, transform) {\n return style({\n prop,\n themeKey: 'borders',\n transform\n });\n}\nexport const border = createBorderStyle('border', borderTransform);\nexport const borderTop = createBorderStyle('borderTop', borderTransform);\nexport const borderRight = createBorderStyle('borderRight', borderTransform);\nexport const borderBottom = createBorderStyle('borderBottom', borderTransform);\nexport const borderLeft = createBorderStyle('borderLeft', borderTransform);\nexport const borderColor = createBorderStyle('borderColor');\nexport const borderTopColor = createBorderStyle('borderTopColor');\nexport const borderRightColor = createBorderStyle('borderRightColor');\nexport const borderBottomColor = createBorderStyle('borderBottomColor');\nexport const borderLeftColor = createBorderStyle('borderLeftColor');\nexport const outline = createBorderStyle('outline', borderTransform);\nexport const outlineColor = createBorderStyle('outlineColor');\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const borderRadius = props => {\n if (props.borderRadius !== undefined && props.borderRadius !== null) {\n const transformer = createUnaryUnit(props.theme, 'shape.borderRadius', 4, 'borderRadius');\n const styleFromPropValue = propValue => ({\n borderRadius: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.borderRadius, styleFromPropValue);\n }\n return null;\n};\nborderRadius.propTypes = process.env.NODE_ENV !== 'production' ? {\n borderRadius: responsivePropType\n} : {};\nborderRadius.filterProps = ['borderRadius'];\nconst borders = compose(border, borderTop, borderRight, borderBottom, borderLeft, borderColor, borderTopColor, borderRightColor, borderBottomColor, borderLeftColor, borderRadius, outline, outlineColor);\nexport default borders;","import style from './style';\nimport compose from './compose';\nimport { createUnaryUnit, getValue } from './spacing';\nimport { handleBreakpoints } from './breakpoints';\nimport responsivePropType from './responsivePropType';\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const gap = props => {\n if (props.gap !== undefined && props.gap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'gap');\n const styleFromPropValue = propValue => ({\n gap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.gap, styleFromPropValue);\n }\n return null;\n};\ngap.propTypes = process.env.NODE_ENV !== 'production' ? {\n gap: responsivePropType\n} : {};\ngap.filterProps = ['gap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const columnGap = props => {\n if (props.columnGap !== undefined && props.columnGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'columnGap');\n const styleFromPropValue = propValue => ({\n columnGap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.columnGap, styleFromPropValue);\n }\n return null;\n};\ncolumnGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n columnGap: responsivePropType\n} : {};\ncolumnGap.filterProps = ['columnGap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const rowGap = props => {\n if (props.rowGap !== undefined && props.rowGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'rowGap');\n const styleFromPropValue = propValue => ({\n rowGap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.rowGap, styleFromPropValue);\n }\n return null;\n};\nrowGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n rowGap: responsivePropType\n} : {};\nrowGap.filterProps = ['rowGap'];\nexport const gridColumn = style({\n prop: 'gridColumn'\n});\nexport const gridRow = style({\n prop: 'gridRow'\n});\nexport const gridAutoFlow = style({\n prop: 'gridAutoFlow'\n});\nexport const gridAutoColumns = style({\n prop: 'gridAutoColumns'\n});\nexport const gridAutoRows = style({\n prop: 'gridAutoRows'\n});\nexport const gridTemplateColumns = style({\n prop: 'gridTemplateColumns'\n});\nexport const gridTemplateRows = style({\n prop: 'gridTemplateRows'\n});\nexport const gridTemplateAreas = style({\n prop: 'gridTemplateAreas'\n});\nexport const gridArea = style({\n prop: 'gridArea'\n});\nconst grid = compose(gap, columnGap, rowGap, gridColumn, gridRow, gridAutoFlow, gridAutoColumns, gridAutoRows, gridTemplateColumns, gridTemplateRows, gridTemplateAreas, gridArea);\nexport default grid;","import style from './style';\nimport compose from './compose';\nexport function paletteTransform(value, userValue) {\n if (userValue === 'grey') {\n return userValue;\n }\n return value;\n}\nexport const color = style({\n prop: 'color',\n themeKey: 'palette',\n transform: paletteTransform\n});\nexport const bgcolor = style({\n prop: 'bgcolor',\n cssProperty: 'backgroundColor',\n themeKey: 'palette',\n transform: paletteTransform\n});\nexport const backgroundColor = style({\n prop: 'backgroundColor',\n themeKey: 'palette',\n transform: paletteTransform\n});\nconst palette = compose(color, bgcolor, backgroundColor);\nexport default palette;","import style from './style';\nimport compose from './compose';\nimport { handleBreakpoints, values as breakpointsValues } from './breakpoints';\nexport function sizingTransform(value) {\n return value <= 1 && value !== 0 ? `${value * 100}%` : value;\n}\nexport const width = style({\n prop: 'width',\n transform: sizingTransform\n});\nexport const maxWidth = props => {\n if (props.maxWidth !== undefined && props.maxWidth !== null) {\n const styleFromPropValue = propValue => {\n var _props$theme, _props$theme2;\n const breakpoint = ((_props$theme = props.theme) == null || (_props$theme = _props$theme.breakpoints) == null || (_props$theme = _props$theme.values) == null ? void 0 : _props$theme[propValue]) || breakpointsValues[propValue];\n if (!breakpoint) {\n return {\n maxWidth: sizingTransform(propValue)\n };\n }\n if (((_props$theme2 = props.theme) == null || (_props$theme2 = _props$theme2.breakpoints) == null ? void 0 : _props$theme2.unit) !== 'px') {\n return {\n maxWidth: `${breakpoint}${props.theme.breakpoints.unit}`\n };\n }\n return {\n maxWidth: breakpoint\n };\n };\n return handleBreakpoints(props, props.maxWidth, styleFromPropValue);\n }\n return null;\n};\nmaxWidth.filterProps = ['maxWidth'];\nexport const minWidth = style({\n prop: 'minWidth',\n transform: sizingTransform\n});\nexport const height = style({\n prop: 'height',\n transform: sizingTransform\n});\nexport const maxHeight = style({\n prop: 'maxHeight',\n transform: sizingTransform\n});\nexport const minHeight = style({\n prop: 'minHeight',\n transform: sizingTransform\n});\nexport const sizeWidth = style({\n prop: 'size',\n cssProperty: 'width',\n transform: sizingTransform\n});\nexport const sizeHeight = style({\n prop: 'size',\n cssProperty: 'height',\n transform: sizingTransform\n});\nexport const boxSizing = style({\n prop: 'boxSizing'\n});\nconst sizing = compose(width, maxWidth, minWidth, height, maxHeight, minHeight, boxSizing);\nexport default sizing;","import { padding, margin } from '../spacing';\nimport { borderRadius, borderTransform } from '../borders';\nimport { gap, rowGap, columnGap } from '../cssGrid';\nimport { paletteTransform } from '../palette';\nimport { maxWidth, sizingTransform } from '../sizing';\nconst defaultSxConfig = {\n // borders\n border: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderTop: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderRight: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderBottom: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderLeft: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderColor: {\n themeKey: 'palette'\n },\n borderTopColor: {\n themeKey: 'palette'\n },\n borderRightColor: {\n themeKey: 'palette'\n },\n borderBottomColor: {\n themeKey: 'palette'\n },\n borderLeftColor: {\n themeKey: 'palette'\n },\n outline: {\n themeKey: 'borders',\n transform: borderTransform\n },\n outlineColor: {\n themeKey: 'palette'\n },\n borderRadius: {\n themeKey: 'shape.borderRadius',\n style: borderRadius\n },\n // palette\n color: {\n themeKey: 'palette',\n transform: paletteTransform\n },\n bgcolor: {\n themeKey: 'palette',\n cssProperty: 'backgroundColor',\n transform: paletteTransform\n },\n backgroundColor: {\n themeKey: 'palette',\n transform: paletteTransform\n },\n // spacing\n p: {\n style: padding\n },\n pt: {\n style: padding\n },\n pr: {\n style: padding\n },\n pb: {\n style: padding\n },\n pl: {\n style: padding\n },\n px: {\n style: padding\n },\n py: {\n style: padding\n },\n padding: {\n style: padding\n },\n paddingTop: {\n style: padding\n },\n paddingRight: {\n style: padding\n },\n paddingBottom: {\n style: padding\n },\n paddingLeft: {\n style: padding\n },\n paddingX: {\n style: padding\n },\n paddingY: {\n style: padding\n },\n paddingInline: {\n style: padding\n },\n paddingInlineStart: {\n style: padding\n },\n paddingInlineEnd: {\n style: padding\n },\n paddingBlock: {\n style: padding\n },\n paddingBlockStart: {\n style: padding\n },\n paddingBlockEnd: {\n style: padding\n },\n m: {\n style: margin\n },\n mt: {\n style: margin\n },\n mr: {\n style: margin\n },\n mb: {\n style: margin\n },\n ml: {\n style: margin\n },\n mx: {\n style: margin\n },\n my: {\n style: margin\n },\n margin: {\n style: margin\n },\n marginTop: {\n style: margin\n },\n marginRight: {\n style: margin\n },\n marginBottom: {\n style: margin\n },\n marginLeft: {\n style: margin\n },\n marginX: {\n style: margin\n },\n marginY: {\n style: margin\n },\n marginInline: {\n style: margin\n },\n marginInlineStart: {\n style: margin\n },\n marginInlineEnd: {\n style: margin\n },\n marginBlock: {\n style: margin\n },\n marginBlockStart: {\n style: margin\n },\n marginBlockEnd: {\n style: margin\n },\n // display\n displayPrint: {\n cssProperty: false,\n transform: value => ({\n '@media print': {\n display: value\n }\n })\n },\n display: {},\n overflow: {},\n textOverflow: {},\n visibility: {},\n whiteSpace: {},\n // flexbox\n flexBasis: {},\n flexDirection: {},\n flexWrap: {},\n justifyContent: {},\n alignItems: {},\n alignContent: {},\n order: {},\n flex: {},\n flexGrow: {},\n flexShrink: {},\n alignSelf: {},\n justifyItems: {},\n justifySelf: {},\n // grid\n gap: {\n style: gap\n },\n rowGap: {\n style: rowGap\n },\n columnGap: {\n style: columnGap\n },\n gridColumn: {},\n gridRow: {},\n gridAutoFlow: {},\n gridAutoColumns: {},\n gridAutoRows: {},\n gridTemplateColumns: {},\n gridTemplateRows: {},\n gridTemplateAreas: {},\n gridArea: {},\n // positions\n position: {},\n zIndex: {\n themeKey: 'zIndex'\n },\n top: {},\n right: {},\n bottom: {},\n left: {},\n // shadows\n boxShadow: {\n themeKey: 'shadows'\n },\n // sizing\n width: {\n transform: sizingTransform\n },\n maxWidth: {\n style: maxWidth\n },\n minWidth: {\n transform: sizingTransform\n },\n height: {\n transform: sizingTransform\n },\n maxHeight: {\n transform: sizingTransform\n },\n minHeight: {\n transform: sizingTransform\n },\n boxSizing: {},\n // typography\n fontFamily: {\n themeKey: 'typography'\n },\n fontSize: {\n themeKey: 'typography'\n },\n fontStyle: {\n themeKey: 'typography'\n },\n fontWeight: {\n themeKey: 'typography'\n },\n letterSpacing: {},\n textTransform: {},\n lineHeight: {},\n textAlign: {},\n typography: {\n cssProperty: false,\n themeKey: 'typography'\n }\n};\nexport default defaultSxConfig;","import capitalize from '@mui/utils/capitalize';\nimport merge from '../merge';\nimport { getPath, getStyleValue as getValue } from '../style';\nimport { handleBreakpoints, createEmptyBreakpointObject, removeUnusedBreakpoints } from '../breakpoints';\nimport defaultSxConfig from './defaultSxConfig';\nfunction objectsHaveSameKeys(...objects) {\n const allKeys = objects.reduce((keys, object) => keys.concat(Object.keys(object)), []);\n const union = new Set(allKeys);\n return objects.every(object => union.size === Object.keys(object).length);\n}\nfunction callIfFn(maybeFn, arg) {\n return typeof maybeFn === 'function' ? maybeFn(arg) : maybeFn;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function unstable_createStyleFunctionSx() {\n function getThemeValue(prop, val, theme, config) {\n const props = {\n [prop]: val,\n theme\n };\n const options = config[prop];\n if (!options) {\n return {\n [prop]: val\n };\n }\n const {\n cssProperty = prop,\n themeKey,\n transform,\n style\n } = options;\n if (val == null) {\n return null;\n }\n\n // TODO v6: remove, see https://github.com/mui/material-ui/pull/38123\n if (themeKey === 'typography' && val === 'inherit') {\n return {\n [prop]: val\n };\n }\n const themeMapping = getPath(theme, themeKey) || {};\n if (style) {\n return style(props);\n }\n const styleFromPropValue = propValueFinal => {\n let value = getValue(themeMapping, transform, propValueFinal);\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n if (cssProperty === false) {\n return value;\n }\n return {\n [cssProperty]: value\n };\n };\n return handleBreakpoints(props, val, styleFromPropValue);\n }\n function styleFunctionSx(props) {\n var _theme$unstable_sxCon;\n const {\n sx,\n theme = {}\n } = props || {};\n if (!sx) {\n return null; // Emotion & styled-components will neglect null\n }\n const config = (_theme$unstable_sxCon = theme.unstable_sxConfig) != null ? _theme$unstable_sxCon : defaultSxConfig;\n\n /*\n * Receive `sxInput` as object or callback\n * and then recursively check keys & values to create media query object styles.\n * (the result will be used in `styled`)\n */\n function traverse(sxInput) {\n let sxObject = sxInput;\n if (typeof sxInput === 'function') {\n sxObject = sxInput(theme);\n } else if (typeof sxInput !== 'object') {\n // value\n return sxInput;\n }\n if (!sxObject) {\n return null;\n }\n const emptyBreakpoints = createEmptyBreakpointObject(theme.breakpoints);\n const breakpointsKeys = Object.keys(emptyBreakpoints);\n let css = emptyBreakpoints;\n Object.keys(sxObject).forEach(styleKey => {\n const value = callIfFn(sxObject[styleKey], theme);\n if (value !== null && value !== undefined) {\n if (typeof value === 'object') {\n if (config[styleKey]) {\n css = merge(css, getThemeValue(styleKey, value, theme, config));\n } else {\n const breakpointsValues = handleBreakpoints({\n theme\n }, value, x => ({\n [styleKey]: x\n }));\n if (objectsHaveSameKeys(breakpointsValues, value)) {\n css[styleKey] = styleFunctionSx({\n sx: value,\n theme\n });\n } else {\n css = merge(css, breakpointsValues);\n }\n }\n } else {\n css = merge(css, getThemeValue(styleKey, value, theme, config));\n }\n }\n });\n return removeUnusedBreakpoints(breakpointsKeys, css);\n }\n return Array.isArray(sx) ? sx.map(traverse) : traverse(sx);\n }\n return styleFunctionSx;\n}\nconst styleFunctionSx = unstable_createStyleFunctionSx();\nstyleFunctionSx.filterProps = ['sx'];\nexport default styleFunctionSx;","'use client';\n\nimport createTheme from './createTheme';\nimport useThemeWithoutDefault from './useThemeWithoutDefault';\nexport const systemDefaultTheme = createTheme();\nfunction useTheme(defaultTheme = systemDefaultTheme) {\n return useThemeWithoutDefault(defaultTheme);\n}\nexport default useTheme;","'use client';\n\nimport * as React from 'react';\nimport { ThemeContext } from '@mui/styled-engine';\nfunction isObjectEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\nfunction useTheme(defaultTheme = null) {\n const contextTheme = React.useContext(ThemeContext);\n return !contextTheme || isObjectEmpty(contextTheme) ? defaultTheme : contextTheme;\n}\nexport default useTheme;","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word in the sentence.\n// We only handle the first word.\nexport default function capitalize(string) {\n if (typeof string !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: \\`capitalize(string)\\` expects a string argument.` : _formatMuiErrorMessage(7));\n }\n return string.charAt(0).toUpperCase() + string.slice(1);\n}","export default function composeClasses(slots, getUtilityClass, classes = undefined) {\n const output = {};\n Object.keys(slots).forEach(\n // `Object.keys(slots)` can't be wider than `T` because we infer `T` from `slots`.\n // @ts-expect-error https://github.com/microsoft/TypeScript/pull/12253#issuecomment-263132208\n slot => {\n output[slot] = slots[slot].reduce((acc, key) => {\n if (key) {\n const utilityClass = getUtilityClass(key);\n if (utilityClass !== '') {\n acc.push(utilityClass);\n }\n if (classes && classes[key]) {\n acc.push(classes[key]);\n }\n }\n return acc;\n }, []).join(' ');\n });\n return output;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// https://github.com/sindresorhus/is-plain-obj/blob/main/index.js\nexport function isPlainObject(item) {\n if (typeof item !== 'object' || item === null) {\n return false;\n }\n const prototype = Object.getPrototypeOf(item);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in item) && !(Symbol.iterator in item);\n}\nfunction deepClone(source) {\n if (!isPlainObject(source)) {\n return source;\n }\n const output = {};\n Object.keys(source).forEach(key => {\n output[key] = deepClone(source[key]);\n });\n return output;\n}\nexport default function deepmerge(target, source, options = {\n clone: true\n}) {\n const output = options.clone ? _extends({}, target) : target;\n if (isPlainObject(target) && isPlainObject(source)) {\n Object.keys(source).forEach(key => {\n if (isPlainObject(source[key]) &&\n // Avoid prototype pollution\n Object.prototype.hasOwnProperty.call(target, key) && isPlainObject(target[key])) {\n // Since `output` is a clone of `target` and we have narrowed `target` in this block we can cast to the same type.\n output[key] = deepmerge(target[key], source[key], options);\n } else if (options.clone) {\n output[key] = isPlainObject(source[key]) ? deepClone(source[key]) : source[key];\n } else {\n output[key] = source[key];\n }\n });\n }\n return output;\n}","/**\n * WARNING: Don't import this directly.\n * Use `MuiError` from `@mui/internal-babel-macros/MuiError.macro` instead.\n * @param {number} code\n */\nexport default function formatMuiErrorMessage(code) {\n // Apply babel-plugin-transform-template-literals in loose mode\n // loose mode is safe if we're concatenating primitives\n // see https://babeljs.io/docs/en/babel-plugin-transform-template-literals#loose\n /* eslint-disable prefer-template */\n let url = 'https://mui.com/production-error/?code=' + code;\n for (let i = 1; i < arguments.length; i += 1) {\n // rest params over-transpile for this case\n // eslint-disable-next-line prefer-rest-params\n url += '&args[]=' + encodeURIComponent(arguments[i]);\n }\n return 'Minified MUI error #' + code + '; visit ' + url + ' for the full message.';\n /* eslint-enable prefer-template */\n}","const defaultGenerator = componentName => componentName;\nconst createClassNameGenerator = () => {\n let generate = defaultGenerator;\n return {\n configure(generator) {\n generate = generator;\n },\n generate(componentName) {\n return generate(componentName);\n },\n reset() {\n generate = defaultGenerator;\n }\n };\n};\nconst ClassNameGenerator = createClassNameGenerator();\nexport default ClassNameGenerator;","import ClassNameGenerator from '../ClassNameGenerator';\nexport const globalStateClasses = {\n active: 'active',\n checked: 'checked',\n completed: 'completed',\n disabled: 'disabled',\n error: 'error',\n expanded: 'expanded',\n focused: 'focused',\n focusVisible: 'focusVisible',\n open: 'open',\n readOnly: 'readOnly',\n required: 'required',\n selected: 'selected'\n};\nexport default function generateUtilityClass(componentName, slot, globalStatePrefix = 'Mui') {\n const globalStateClass = globalStateClasses[slot];\n return globalStateClass ? `${globalStatePrefix}-${globalStateClass}` : `${ClassNameGenerator.generate(componentName)}-${slot}`;\n}\nexport function isGlobalState(slot) {\n return globalStateClasses[slot] !== undefined;\n}","import generateUtilityClass from '../generateUtilityClass';\nexport default function generateUtilityClasses(componentName, slots, globalStatePrefix = 'Mui') {\n const result = {};\n slots.forEach(slot => {\n result[slot] = generateUtilityClass(componentName, slot, globalStatePrefix);\n });\n return result;\n}","// A change of the browser zoom change the scrollbar size.\n// Credit https://github.com/twbs/bootstrap/blob/488fd8afc535ca3a6ad4dc581f5e89217b6a36ac/js/src/util/scrollbar.js#L14-L18\nexport default function getScrollbarSize(doc) {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = doc.documentElement.clientWidth;\n return Math.abs(window.innerWidth - documentWidth);\n}","export default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","/**\n * TODO v5: consider making it private\n *\n * passes {value} to {ref}\n *\n * WARNING: Be sure to only call this inside a callback that is passed as a ref.\n * Otherwise, make sure to cleanup the previous {ref} if it changes. See\n * https://github.com/mui/material-ui/issues/13539\n *\n * Useful if you want to expose the ref of an inner component to the public API\n * while still using it inside the component.\n * @param ref A ref callback or ref object. If anything falsy, this is a no-op.\n */\nexport default function setRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}","'use client';\n\nimport * as React from 'react';\n\n/**\n * A version of `React.useLayoutEffect` that does not show a warning when server-side rendering.\n * This is useful for effects that are only needed for client-side rendering but not for SSR.\n *\n * Before you use this hook, make sure to read https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\n * and confirm it doesn't apply to your use-case.\n */\nconst useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nexport default useEnhancedEffect;","'use client';\n\nimport * as React from 'react';\nimport useEnhancedEffect from '../useEnhancedEffect';\n\n/**\n * Inspired by https://github.com/facebook/react/issues/14099#issuecomment-440013892\n * See RFC in https://github.com/reactjs/rfcs/pull/220\n */\n\nfunction useEventCallback(fn) {\n const ref = React.useRef(fn);\n useEnhancedEffect(() => {\n ref.current = fn;\n });\n return React.useRef((...args) =>\n // @ts-expect-error hide `this`\n (0, ref.current)(...args)).current;\n}\nexport default useEventCallback;","'use client';\n\nimport * as React from 'react';\nimport setRef from '../setRef';\nexport default function useForkRef(...refs) {\n /**\n * This will create a new function if the refs passed to this hook change and are all defined.\n * This means react will call the old forkRef with `null` and the new forkRef\n * with the ref. Cleanup naturally emerges from this behavior.\n */\n return React.useMemo(() => {\n if (refs.every(ref => ref == null)) {\n return null;\n }\n return instance => {\n refs.forEach(ref => {\n setRef(ref, instance);\n });\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n}","/* The following list is defined in React's core */\nvar IS_UNITLESS = {\n animationIterationCount: true,\n boxFlex: true,\n boxFlexGroup: true,\n boxOrdinalGroup: true,\n columnCount: true,\n flex: true,\n flexGrow: true,\n flexPositive: true,\n flexShrink: true,\n flexNegative: true,\n flexOrder: true,\n gridRow: true,\n gridColumn: true,\n fontWeight: true,\n lineClamp: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n tabSize: true,\n widows: true,\n zIndex: true,\n zoom: true,\n\n // SVG-related properties\n fillOpacity: true,\n stopOpacity: true,\n strokeDashoffset: true,\n strokeOpacity: true,\n strokeWidth: true\n};\n\nmodule.exports = function(name, value) {\n if(typeof value === 'number' && !IS_UNITLESS[ name ]) {\n return value + 'px';\n } else {\n return value;\n }\n};","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0')\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar pkg = require('./../../package.json');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\nvar currentVerArr = pkg.version.split('.');\n\n/**\n * Compare package versions\n * @param {string} version\n * @param {string?} thanVersion\n * @returns {boolean}\n */\nfunction isOlderVersion(version, thanVersion) {\n var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;\n var destVer = version.split('.');\n for (var i = 0; i < 3; i++) {\n if (pkgVersionArr[i] > destVer[i]) {\n return true;\n } else if (pkgVersionArr[i] < destVer[i]) {\n return false;\n }\n }\n return false;\n}\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator\n * @param {string?} version\n * @param {string} message\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n var isDeprecated = version && isOlderVersion(version);\n\n function formatMessage(opt, desc) {\n return '[Axios v' + pkg.version + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed in ' + version));\n }\n\n if (isDeprecated && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n isOlderVersion: isOlderVersion,\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f);else for(t in e)e[t]&&(n&&(n+=\" \"),n+=t);return n}export function clsx(){for(var e,t,f=0,n=\"\";f<arguments.length;)(e=arguments[f++])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","\"use strict\";\n\n/**\n * Color Contast Checker\n * An accessibility checker tool for validating the color contrast based on WCAG 2.0 standard.\n * var ccc = new ColorContrastChecker();\n\n * var color1 = \"#FFFFFF\";\n * var color2 = \"#000000;\n\n * if (ccc.isLevelAA(color1, color2, 14)) {\n * alert(\"Valid Level AA\");\n * } else {\n * alert(\"Invalid Contrast\");\n * }\n */\n\nfunction ColorContrastChecker() {};\n\nmodule.exports = ColorContrastChecker;\n\nColorContrastChecker.prototype = {\n fontSize: 14,\n rgbClass : {\n toString: function() {\n return \"<r: \" + this.r +\n \" g: \" + this.g +\n \" b: \" + this.b +\n \" >\";\n }\n },\n isValidSixDigitColorCode: function (hex){\n var regSixDigitColorcode = /^(#)?([0-9a-fA-F]{6})?$/;\n return regSixDigitColorcode.test(hex);\n },\n isValidThreeDigitColorCode: function (hex){\n var regThreeDigitColorcode = /^(#)?([0-9a-fA-F]{3})?$/;\n return regThreeDigitColorcode.test(hex);\n },\n isValidColorCode : function (hex){\n return this.isValidSixDigitColorCode(hex) || this.isValidThreeDigitColorCode(hex);\n },\n isValidRatio : function (ratio){\n return (typeof ratio === \"number\");\n },\n convertColorToSixDigit: function (hex) {\n return \"#\" + hex[1] + hex[1] + hex[2] + hex[2] + hex[3] + hex[3];\n },\n hexToLuminance: function (color) {\n if (!this.isValidColorCode(color)) {\n throw new Error(\"Invalid Color :\" + color);\n }\n\n if (this.isValidThreeDigitColorCode(color)) {\n color = this.convertColorToSixDigit(color);\n }\n\n color = this.getRGBFromHex(color);\n\n var LRGB = this.calculateLRGB(color);\n\n return this.calculateLuminance(LRGB);\n },\n check: function (colorA, colorB, fontSize, customRatio) {\n if (typeof fontSize !== \"undefined\") {\n this.fontSize = fontSize;\n }\n\n if(!colorA || !colorB) {\n return false;\n }\n\n var l1 = this.hexToLuminance(colorA); /* higher value */\n var l2 = this.hexToLuminance(colorB); /* lower value */\n var contrastRatio = this.getContrastRatio(l1, l2);\n\n if (typeof customRatio !== \"undefined\") {\n if (!this.isValidRatio(customRatio)) {\n return false;\n }\n return this.verifyCustomContrastRatio(contrastRatio, customRatio);\n } else {\n return this.verifyContrastRatio(contrastRatio);\n } \n },\n checkPairs: function (pairs, customRatio) {\n var results = [];\n\n for (var i in pairs) {\n var pair = pairs[i];\n if (typeof pair.fontSize !== \"undefined\") {\n results.push(\n this.check(\n pair.colorA,\n pair.colorB,\n pair.fontSize,\n customRatio\n )\n );\n } else {\n results.push(\n this.check(\n pair.colorA,\n pair.colorB,\n void 0,\n customRatio\n )\n );\n }\n }\n return results;\n },\n calculateLuminance: function(lRGB) {\n return (0.2126 * lRGB.r) + (0.7152 * lRGB.g) + (0.0722 * lRGB.b);\n },\n isLevelAA : function(colorA, colorB, fontSize) {\n var result = this.check(colorA, colorB, fontSize);\n return result.WCAG_AA;\n },\n isLevelAAA : function(colorA, colorB, fontSize) {\n var result = this.check(colorA, colorB, fontSize);\n return result.WCAG_AAA; \n },\n isLevelCustom : function(colorA, colorB, ratio) {\n var result = this.check(colorA, colorB, void 0, ratio);\n return result.customRatio;\n },\n getRGBFromHex : function(color) {\n\n var rgb = Object.create(this.rgbClass),\n rVal,\n gVal,\n bVal;\n\n if (typeof color !== \"string\") {\n throw new Error(\"must use string\");\n }\n\n rVal = parseInt(color.slice(1, 3), 16);\n gVal = parseInt(color.slice(3, 5), 16);\n bVal = parseInt(color.slice(5, 7), 16);\n\n rgb.r = rVal;\n rgb.g = gVal;\n rgb.b = bVal;\n\n return rgb;\n },\n calculateSRGB : function(rgb) {\n var sRGB = Object.create(this.rgbClass),\n key;\n\n for (key in rgb) {\n if (rgb.hasOwnProperty(key)) {\n sRGB[key] = parseFloat((rgb[key] / 255), 10);\n }\n }\n\n return sRGB;\n },\n calculateLRGB: function (rgb) {\n var sRGB = this.calculateSRGB(rgb);\n var lRGB = Object.create(this.rgbClass),\n key,\n val = 0;\n\n for (key in sRGB) {\n if (sRGB.hasOwnProperty(key)) {\n val = parseFloat(sRGB[key], 10);\n if (val <= 0.03928) {\n lRGB[key] = (val / 12.92);\n } else {\n lRGB[key] = Math.pow(((val + 0.055) / 1.055), 2.4);\n }\n }\n }\n\n return lRGB;\n },\n getContrastRatio : function(lumA, lumB) {\n var ratio,\n lighter,\n darker;\n\n if (lumA >= lumB) {\n lighter = lumA;\n darker = lumB;\n } else {\n lighter = lumB;\n darker = lumA;\n }\n\n ratio = (lighter + 0.05) / (darker + 0.05);\n\n return ratio;\n },\n verifyContrastRatio : function(ratio) {\n\n\n var resultsClass = {\n toString: function() {\n return \"< WCAG-AA: \" + ((this.WCAG_AA) ? \"pass\" : \"fail\") +\n \" WCAG-AAA: \" + ((this.WCAG_AAA) ? \"pass\" : \"fail\") +\n \" >\";\n }\n };\n var WCAG_REQ_RATIO_AA_LG = 3.0,\n WCAG_REQ_RATIO_AA_SM = 4.5,\n WCAG_REQ_RATIO_AAA_LG = 4.5,\n WCAG_REQ_RATIO_AAA_SM = 7.0,\n WCAG_FONT_CUTOFF = 18;\n\n var results = Object.create(resultsClass),\n fontSize = this.fontSize || 14;\n\n if (fontSize >= WCAG_FONT_CUTOFF) {\n results.WCAG_AA = (ratio >= WCAG_REQ_RATIO_AA_LG);\n results.WCAG_AAA = (ratio >= WCAG_REQ_RATIO_AAA_LG);\n } else {\n results.WCAG_AA = (ratio >= WCAG_REQ_RATIO_AA_SM);\n results.WCAG_AAA = (ratio >= WCAG_REQ_RATIO_AAA_SM);\n }\n\n return results;\n },\n verifyCustomContrastRatio : function(inputRatio, checkRatio) {\n\n var resultsClass = {\n toString: function() {\n return \"< Custom Ratio: \" + ((this.customRatio) ? \"pass\" : \"fail\") +\n \" >\";\n }\n };\n\n var results = Object.create(resultsClass);\n\n results.customRatio = (inputRatio >= checkRatio);\n return results;\n }\n\n};\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, privateMap, value) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to set private field on non-instance\");\n }\n privateMap.set(receiver, value);\n return value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n return privateMap.get(receiver);\n};\nvar _block, _blocks, _bytes, _finalized, _first, _h0, _h1, _h2, _h3, _h4, _h5, _h6, _h7, _hashed, _hBytes, _is224, _lastByteIndex, _start, _inner, _is224_1, _oKeyPad, _sharedMemory;\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nvar BKDRHash = function (str) {\n var seed = 131;\n var seed2 = 137;\n var hash = 0;\n str += 'x';\n var MAX_SAFE_INTEGER = Math.floor(9007199254740991 / seed2);\n for (var i = 0; i < str.length; i++) {\n if (hash > MAX_SAFE_INTEGER) {\n hash = Math.floor(hash / seed2);\n }\n hash = hash * seed + str.charCodeAt(i);\n }\n return hash;\n};\nvar HEX_CHARS = \"0123456789abcdef\".split(\"\");\nvar EXTRA = [\n -2147483648,\n 8388608,\n 32768,\n 128\n];\nvar SHIFT = [\n 24,\n 16,\n 8,\n 0\n];\nvar K = [\n 1116352408,\n 1899447441,\n 3049323471,\n 3921009573,\n 961987163,\n 1508970993,\n 2453635748,\n 2870763221,\n 3624381080,\n 310598401,\n 607225278,\n 1426881987,\n 1925078388,\n 2162078206,\n 2614888103,\n 3248222580,\n 3835390401,\n 4022224774,\n 264347078,\n 604807628,\n 770255983,\n 1249150122,\n 1555081692,\n 1996064986,\n 2554220882,\n 2821834349,\n 2952996808,\n 3210313671,\n 3336571891,\n 3584528711,\n 113926993,\n 338241895,\n 666307205,\n 773529912,\n 1294757372,\n 1396182291,\n 1695183700,\n 1986661051,\n 2177026350,\n 2456956037,\n 2730485921,\n 2820302411,\n 3259730800,\n 3345764771,\n 3516065817,\n 3600352804,\n 4094571909,\n 275423344,\n 430227734,\n 506948616,\n 659060556,\n 883997877,\n 958139571,\n 1322822218,\n 1537002063,\n 1747873779,\n 1955562222,\n 2024104815,\n 2227730452,\n 2361852424,\n 2428436474,\n 2756734187,\n 3204031479,\n 3329325298,\n];\nvar blocks = [];\nvar Sha256 = /** @class */ (function () {\n function Sha256(is2241, sharedMemory1) {\n if (is2241 === void 0) { is2241 = false; }\n if (sharedMemory1 === void 0) { sharedMemory1 = false; }\n _block.set(this, void 0);\n _blocks.set(this, void 0);\n _bytes.set(this, void 0);\n _finalized.set(this, void 0);\n _first.set(this, void 0);\n _h0.set(this, void 0);\n _h1.set(this, void 0);\n _h2.set(this, void 0);\n _h3.set(this, void 0);\n _h4.set(this, void 0);\n _h5.set(this, void 0);\n _h6.set(this, void 0);\n _h7.set(this, void 0);\n _hashed.set(this, void 0);\n _hBytes.set(this, void 0);\n _is224.set(this, void 0);\n _lastByteIndex.set(this, 0);\n _start.set(this, void 0);\n this.init(is2241, sharedMemory1);\n }\n Sha256.prototype.init = function (is224, sharedMemory) {\n if (sharedMemory) {\n blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n __classPrivateFieldSet(this, _blocks, blocks);\n }\n else {\n __classPrivateFieldSet(this, _blocks, [\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0\n ]);\n }\n if (is224) {\n __classPrivateFieldSet(this, _h0, 3238371032);\n __classPrivateFieldSet(this, _h1, 914150663);\n __classPrivateFieldSet(this, _h2, 812702999);\n __classPrivateFieldSet(this, _h3, 4144912697);\n __classPrivateFieldSet(this, _h4, 4290775857);\n __classPrivateFieldSet(this, _h5, 1750603025);\n __classPrivateFieldSet(this, _h6, 1694076839);\n __classPrivateFieldSet(this, _h7, 3204075428);\n }\n else {\n __classPrivateFieldSet(this, _h0, 1779033703);\n __classPrivateFieldSet(this, _h1, 3144134277);\n __classPrivateFieldSet(this, _h2, 1013904242);\n __classPrivateFieldSet(this, _h3, 2773480762);\n __classPrivateFieldSet(this, _h4, 1359893119);\n __classPrivateFieldSet(this, _h5, 2600822924);\n __classPrivateFieldSet(this, _h6, 528734635);\n __classPrivateFieldSet(this, _h7, 1541459225);\n }\n __classPrivateFieldSet(this, _block, __classPrivateFieldSet(this, _start, __classPrivateFieldSet(this, _bytes, __classPrivateFieldSet(this, _hBytes, 0))));\n __classPrivateFieldSet(this, _finalized, __classPrivateFieldSet(this, _hashed, false));\n __classPrivateFieldSet(this, _first, true);\n __classPrivateFieldSet(this, _is224, is224);\n };\n Sha256.prototype.update = function (message) {\n if (__classPrivateFieldGet(this, _finalized)) {\n return this;\n }\n var msg;\n if (message instanceof ArrayBuffer) {\n msg = new Uint8Array(message);\n }\n else {\n msg = message;\n }\n var index = 0;\n var length = msg.length;\n var blocks1 = __classPrivateFieldGet(this, _blocks);\n while (index < length) {\n var i = void 0;\n if (__classPrivateFieldGet(this, _hashed)) {\n __classPrivateFieldSet(this, _hashed, false);\n blocks1[0] = __classPrivateFieldGet(this, _block);\n blocks1[16] = blocks1[1] = blocks1[2] = blocks1[3] = blocks1[4] = blocks1[5] = blocks1[6] = blocks1[7] = blocks1[8] = blocks1[9] = blocks1[10] = blocks1[11] = blocks1[12] = blocks1[13] = blocks1[14] = blocks1[15] = 0;\n }\n if (typeof msg !== \"string\") {\n for (i = __classPrivateFieldGet(this, _start); index < length && i < 64; ++index) {\n blocks1[i >> 2] |= msg[index] << SHIFT[(i++) & 3];\n }\n }\n else {\n for (i = __classPrivateFieldGet(this, _start); index < length && i < 64; ++index) {\n var code = msg.charCodeAt(index);\n if (code < 128) {\n blocks1[i >> 2] |= code << SHIFT[(i++) & 3];\n }\n else if (code < 2048) {\n blocks1[i >> 2] |= (192 | code >> 6) << SHIFT[(i++) & 3];\n blocks1[i >> 2] |= (128 | code & 63) << SHIFT[(i++) & 3];\n }\n else if (code < 55296 || code >= 57344) {\n blocks1[i >> 2] |= (224 | code >> 12) << SHIFT[(i++) & 3];\n blocks1[i >> 2] |= (128 | code >> 6 & 63) << SHIFT[(i++) & 3];\n blocks1[i >> 2] |= (128 | code & 63) << SHIFT[(i++) & 3];\n }\n else {\n code = 65536 + ((code & 1023) << 10 | msg.charCodeAt(++index) & 1023);\n blocks1[i >> 2] |= (240 | code >> 18) << SHIFT[(i++) & 3];\n blocks1[i >> 2] |= (128 | code >> 12 & 63) << SHIFT[(i++) & 3];\n blocks1[i >> 2] |= (128 | code >> 6 & 63) << SHIFT[(i++) & 3];\n blocks1[i >> 2] |= (128 | code & 63) << SHIFT[(i++) & 3];\n }\n }\n }\n __classPrivateFieldSet(this, _lastByteIndex, i);\n __classPrivateFieldSet(this, _bytes, __classPrivateFieldGet(this, _bytes) + (i - __classPrivateFieldGet(this, _start)));\n if (i >= 64) {\n __classPrivateFieldSet(this, _block, blocks1[16]);\n __classPrivateFieldSet(this, _start, i - 64);\n this.hash();\n __classPrivateFieldSet(this, _hashed, true);\n }\n else {\n __classPrivateFieldSet(this, _start, i);\n }\n }\n if (__classPrivateFieldGet(this, _bytes) > 4294967295) {\n __classPrivateFieldSet(this, _hBytes, __classPrivateFieldGet(this, _hBytes) + (__classPrivateFieldGet(this, _bytes) / 4294967296 << 0));\n __classPrivateFieldSet(this, _bytes, __classPrivateFieldGet(this, _bytes) % 4294967296);\n }\n return this;\n };\n Sha256.prototype.finalize = function () {\n if (__classPrivateFieldGet(this, _finalized)) {\n return;\n }\n __classPrivateFieldSet(this, _finalized, true);\n var blocks1 = __classPrivateFieldGet(this, _blocks);\n var i = __classPrivateFieldGet(this, _lastByteIndex);\n blocks1[16] = __classPrivateFieldGet(this, _block);\n blocks1[i >> 2] |= EXTRA[i & 3];\n __classPrivateFieldSet(this, _block, blocks1[16]);\n if (i >= 56) {\n if (!__classPrivateFieldGet(this, _hashed)) {\n this.hash();\n }\n blocks1[0] = __classPrivateFieldGet(this, _block);\n blocks1[16] = blocks1[1] = blocks1[2] = blocks1[3] = blocks1[4] = blocks1[5] = blocks1[6] = blocks1[7] = blocks1[8] = blocks1[9] = blocks1[10] = blocks1[11] = blocks1[12] = blocks1[13] = blocks1[14] = blocks1[15] = 0;\n }\n blocks1[14] = __classPrivateFieldGet(this, _hBytes) << 3 | __classPrivateFieldGet(this, _bytes) >>> 29;\n blocks1[15] = __classPrivateFieldGet(this, _bytes) << 3;\n this.hash();\n };\n Sha256.prototype.hash = function () {\n var a = __classPrivateFieldGet(this, _h0);\n var b = __classPrivateFieldGet(this, _h1);\n var c = __classPrivateFieldGet(this, _h2);\n var d = __classPrivateFieldGet(this, _h3);\n var e = __classPrivateFieldGet(this, _h4);\n var f = __classPrivateFieldGet(this, _h5);\n var g = __classPrivateFieldGet(this, _h6);\n var h = __classPrivateFieldGet(this, _h7);\n var blocks1 = __classPrivateFieldGet(this, _blocks);\n var s0;\n var s1;\n var maj;\n var t1;\n var t2;\n var ch;\n var ab;\n var da;\n var cd;\n var bc;\n for (var j = 16; j < 64; ++j) {\n t1 = blocks1[j - 15];\n s0 = (t1 >>> 7 | t1 << 25) ^ (t1 >>> 18 | t1 << 14) ^ t1 >>> 3;\n t1 = blocks1[j - 2];\n s1 = (t1 >>> 17 | t1 << 15) ^ (t1 >>> 19 | t1 << 13) ^ t1 >>> 10;\n blocks1[j] = blocks1[j - 16] + s0 + blocks1[j - 7] + s1 << 0;\n }\n bc = b & c;\n for (var j1 = 0; j1 < 64; j1 += 4) {\n if (__classPrivateFieldGet(this, _first)) {\n if (__classPrivateFieldGet(this, _is224)) {\n ab = 300032;\n t1 = blocks1[0] - 1413257819;\n h = t1 - 150054599 << 0;\n d = t1 + 24177077 << 0;\n }\n else {\n ab = 704751109;\n t1 = blocks1[0] - 210244248;\n h = t1 - 1521486534 << 0;\n d = t1 + 143694565 << 0;\n }\n __classPrivateFieldSet(this, _first, false);\n }\n else {\n s0 = (a >>> 2 | a << 30) ^ (a >>> 13 | a << 19) ^ (a >>> 22 | a << 10);\n s1 = (e >>> 6 | e << 26) ^ (e >>> 11 | e << 21) ^ (e >>> 25 | e << 7);\n ab = a & b;\n maj = ab ^ a & c ^ bc;\n ch = e & f ^ ~e & g;\n t1 = h + s1 + ch + K[j1] + blocks1[j1];\n t2 = s0 + maj;\n h = d + t1 << 0;\n d = t1 + t2 << 0;\n }\n s0 = (d >>> 2 | d << 30) ^ (d >>> 13 | d << 19) ^ (d >>> 22 | d << 10);\n s1 = (h >>> 6 | h << 26) ^ (h >>> 11 | h << 21) ^ (h >>> 25 | h << 7);\n da = d & a;\n maj = da ^ d & b ^ ab;\n ch = h & e ^ ~h & f;\n t1 = g + s1 + ch + K[j1 + 1] + blocks1[j1 + 1];\n t2 = s0 + maj;\n g = c + t1 << 0;\n c = t1 + t2 << 0;\n s0 = (c >>> 2 | c << 30) ^ (c >>> 13 | c << 19) ^ (c >>> 22 | c << 10);\n s1 = (g >>> 6 | g << 26) ^ (g >>> 11 | g << 21) ^ (g >>> 25 | g << 7);\n cd = c & d;\n maj = cd ^ c & a ^ da;\n ch = g & h ^ ~g & e;\n t1 = f + s1 + ch + K[j1 + 2] + blocks1[j1 + 2];\n t2 = s0 + maj;\n f = b + t1 << 0;\n b = t1 + t2 << 0;\n s0 = (b >>> 2 | b << 30) ^ (b >>> 13 | b << 19) ^ (b >>> 22 | b << 10);\n s1 = (f >>> 6 | f << 26) ^ (f >>> 11 | f << 21) ^ (f >>> 25 | f << 7);\n bc = b & c;\n maj = bc ^ b & d ^ cd;\n ch = f & g ^ ~f & h;\n t1 = e + s1 + ch + K[j1 + 3] + blocks1[j1 + 3];\n t2 = s0 + maj;\n e = a + t1 << 0;\n a = t1 + t2 << 0;\n }\n __classPrivateFieldSet(this, _h0, __classPrivateFieldGet(this, _h0) + a << 0);\n __classPrivateFieldSet(this, _h1, __classPrivateFieldGet(this, _h1) + b << 0);\n __classPrivateFieldSet(this, _h2, __classPrivateFieldGet(this, _h2) + c << 0);\n __classPrivateFieldSet(this, _h3, __classPrivateFieldGet(this, _h3) + d << 0);\n __classPrivateFieldSet(this, _h4, __classPrivateFieldGet(this, _h4) + e << 0);\n __classPrivateFieldSet(this, _h5, __classPrivateFieldGet(this, _h5) + f << 0);\n __classPrivateFieldSet(this, _h6, __classPrivateFieldGet(this, _h6) + g << 0);\n __classPrivateFieldSet(this, _h7, __classPrivateFieldGet(this, _h7) + h << 0);\n };\n Sha256.prototype.hex = function () {\n this.finalize();\n var h0 = __classPrivateFieldGet(this, _h0);\n var h1 = __classPrivateFieldGet(this, _h1);\n var h2 = __classPrivateFieldGet(this, _h2);\n var h3 = __classPrivateFieldGet(this, _h3);\n var h4 = __classPrivateFieldGet(this, _h4);\n var h5 = __classPrivateFieldGet(this, _h5);\n var h6 = __classPrivateFieldGet(this, _h6);\n var h7 = __classPrivateFieldGet(this, _h7);\n var hex = HEX_CHARS[h0 >> 28 & 15] + HEX_CHARS[h0 >> 24 & 15] + HEX_CHARS[h0 >> 20 & 15] + HEX_CHARS[h0 >> 16 & 15] + HEX_CHARS[h0 >> 12 & 15] + HEX_CHARS[h0 >> 8 & 15] + HEX_CHARS[h0 >> 4 & 15] + HEX_CHARS[h0 & 15] + HEX_CHARS[h1 >> 28 & 15] + HEX_CHARS[h1 >> 24 & 15] + HEX_CHARS[h1 >> 20 & 15] + HEX_CHARS[h1 >> 16 & 15] + HEX_CHARS[h1 >> 12 & 15] + HEX_CHARS[h1 >> 8 & 15] + HEX_CHARS[h1 >> 4 & 15] + HEX_CHARS[h1 & 15] + HEX_CHARS[h2 >> 28 & 15] + HEX_CHARS[h2 >> 24 & 15] + HEX_CHARS[h2 >> 20 & 15] + HEX_CHARS[h2 >> 16 & 15] + HEX_CHARS[h2 >> 12 & 15] + HEX_CHARS[h2 >> 8 & 15] + HEX_CHARS[h2 >> 4 & 15] + HEX_CHARS[h2 & 15] + HEX_CHARS[h3 >> 28 & 15] + HEX_CHARS[h3 >> 24 & 15] + HEX_CHARS[h3 >> 20 & 15] + HEX_CHARS[h3 >> 16 & 15] + HEX_CHARS[h3 >> 12 & 15] + HEX_CHARS[h3 >> 8 & 15] + HEX_CHARS[h3 >> 4 & 15] + HEX_CHARS[h3 & 15] + HEX_CHARS[h4 >> 28 & 15] + HEX_CHARS[h4 >> 24 & 15] + HEX_CHARS[h4 >> 20 & 15] + HEX_CHARS[h4 >> 16 & 15] + HEX_CHARS[h4 >> 12 & 15] + HEX_CHARS[h4 >> 8 & 15] + HEX_CHARS[h4 >> 4 & 15] + HEX_CHARS[h4 & 15] + HEX_CHARS[h5 >> 28 & 15] + HEX_CHARS[h5 >> 24 & 15] + HEX_CHARS[h5 >> 20 & 15] + HEX_CHARS[h5 >> 16 & 15] + HEX_CHARS[h5 >> 12 & 15] + HEX_CHARS[h5 >> 8 & 15] + HEX_CHARS[h5 >> 4 & 15] + HEX_CHARS[h5 & 15] + HEX_CHARS[h6 >> 28 & 15] + HEX_CHARS[h6 >> 24 & 15] + HEX_CHARS[h6 >> 20 & 15] + HEX_CHARS[h6 >> 16 & 15] + HEX_CHARS[h6 >> 12 & 15] + HEX_CHARS[h6 >> 8 & 15] + HEX_CHARS[h6 >> 4 & 15] + HEX_CHARS[h6 & 15];\n if (!__classPrivateFieldGet(this, _is224)) {\n hex += HEX_CHARS[h7 >> 28 & 15] + HEX_CHARS[h7 >> 24 & 15] + HEX_CHARS[h7 >> 20 & 15] + HEX_CHARS[h7 >> 16 & 15] + HEX_CHARS[h7 >> 12 & 15] + HEX_CHARS[h7 >> 8 & 15] + HEX_CHARS[h7 >> 4 & 15] + HEX_CHARS[h7 & 15];\n }\n return hex;\n };\n Sha256.prototype.toString = function () {\n return this.hex();\n };\n Sha256.prototype.digest = function () {\n this.finalize();\n var h0 = __classPrivateFieldGet(this, _h0);\n var h1 = __classPrivateFieldGet(this, _h1);\n var h2 = __classPrivateFieldGet(this, _h2);\n var h3 = __classPrivateFieldGet(this, _h3);\n var h4 = __classPrivateFieldGet(this, _h4);\n var h5 = __classPrivateFieldGet(this, _h5);\n var h6 = __classPrivateFieldGet(this, _h6);\n var h7 = __classPrivateFieldGet(this, _h7);\n var arr = [\n h0 >> 24 & 255,\n h0 >> 16 & 255,\n h0 >> 8 & 255,\n h0 & 255,\n h1 >> 24 & 255,\n h1 >> 16 & 255,\n h1 >> 8 & 255,\n h1 & 255,\n h2 >> 24 & 255,\n h2 >> 16 & 255,\n h2 >> 8 & 255,\n h2 & 255,\n h3 >> 24 & 255,\n h3 >> 16 & 255,\n h3 >> 8 & 255,\n h3 & 255,\n h4 >> 24 & 255,\n h4 >> 16 & 255,\n h4 >> 8 & 255,\n h4 & 255,\n h5 >> 24 & 255,\n h5 >> 16 & 255,\n h5 >> 8 & 255,\n h5 & 255,\n h6 >> 24 & 255,\n h6 >> 16 & 255,\n h6 >> 8 & 255,\n h6 & 255,\n ];\n if (!__classPrivateFieldGet(this, _is224)) {\n arr.push(h7 >> 24 & 255, h7 >> 16 & 255, h7 >> 8 & 255, h7 & 255);\n }\n return arr;\n };\n Sha256.prototype.array = function () {\n return this.digest();\n };\n Sha256.prototype.arrayBuffer = function () {\n this.finalize();\n var buffer = new ArrayBuffer(__classPrivateFieldGet(this, _is224) ? 28 : 32);\n var dataView = new DataView(buffer);\n dataView.setUint32(0, __classPrivateFieldGet(this, _h0));\n dataView.setUint32(4, __classPrivateFieldGet(this, _h1));\n dataView.setUint32(8, __classPrivateFieldGet(this, _h2));\n dataView.setUint32(12, __classPrivateFieldGet(this, _h3));\n dataView.setUint32(16, __classPrivateFieldGet(this, _h4));\n dataView.setUint32(20, __classPrivateFieldGet(this, _h5));\n dataView.setUint32(24, __classPrivateFieldGet(this, _h6));\n if (!__classPrivateFieldGet(this, _is224)) {\n dataView.setUint32(28, __classPrivateFieldGet(this, _h7));\n }\n return buffer;\n };\n return Sha256;\n}());\n_block = new WeakMap(), _blocks = new WeakMap(), _bytes = new WeakMap(), _finalized = new WeakMap(), _first = new WeakMap(), _h0 = new WeakMap(), _h1 = new WeakMap(), _h2 = new WeakMap(), _h3 = new WeakMap(), _h4 = new WeakMap(), _h5 = new WeakMap(), _h6 = new WeakMap(), _h7 = new WeakMap(), _hashed = new WeakMap(), _hBytes = new WeakMap(), _is224 = new WeakMap(), _lastByteIndex = new WeakMap(), _start = new WeakMap();\nvar HmacSha256 = /** @class */ (function (_super) {\n __extends(HmacSha256, _super);\n function HmacSha256(secretKey, is2242, sharedMemory2) {\n if (is2242 === void 0) { is2242 = false; }\n if (sharedMemory2 === void 0) { sharedMemory2 = false; }\n var _this = _super.call(this, is2242, sharedMemory2) || this;\n _inner.set(_this, void 0);\n _is224_1.set(_this, void 0);\n _oKeyPad.set(_this, void 0);\n _sharedMemory.set(_this, void 0);\n var key;\n if (typeof secretKey === \"string\") {\n var bytes = [];\n var length_1 = secretKey.length;\n var index = 0;\n for (var i = 0; i < length_1; ++i) {\n var code = secretKey.charCodeAt(i);\n if (code < 128) {\n bytes[index++] = code;\n }\n else if (code < 2048) {\n bytes[index++] = 192 | code >> 6;\n bytes[index++] = 128 | code & 63;\n }\n else if (code < 55296 || code >= 57344) {\n bytes[index++] = 224 | code >> 12;\n bytes[index++] = 128 | code >> 6 & 63;\n bytes[index++] = 128 | code & 63;\n }\n else {\n code = 65536 + ((code & 1023) << 10 | secretKey.charCodeAt(++i) & 1023);\n bytes[index++] = 240 | code >> 18;\n bytes[index++] = 128 | code >> 12 & 63;\n bytes[index++] = 128 | code >> 6 & 63;\n bytes[index++] = 128 | code & 63;\n }\n }\n key = bytes;\n }\n else {\n if (secretKey instanceof ArrayBuffer) {\n key = new Uint8Array(secretKey);\n }\n else {\n key = secretKey;\n }\n }\n if (key.length > 64) {\n key = new Sha256(is2242, true).update(key).array();\n }\n var oKeyPad = [];\n var iKeyPad = [];\n for (var i = 0; i < 64; ++i) {\n var b = key[i] || 0;\n oKeyPad[i] = 92 ^ b;\n iKeyPad[i] = 54 ^ b;\n }\n _this.update(iKeyPad);\n __classPrivateFieldSet(_this, _oKeyPad, oKeyPad);\n __classPrivateFieldSet(_this, _inner, true);\n __classPrivateFieldSet(_this, _is224_1, is2242);\n __classPrivateFieldSet(_this, _sharedMemory, sharedMemory2);\n return _this;\n }\n HmacSha256.prototype.finalize = function () {\n _super.prototype.finalize.call(this);\n if (__classPrivateFieldGet(this, _inner)) {\n __classPrivateFieldSet(this, _inner, false);\n var innerHash = this.array();\n _super.prototype.init.call(this, __classPrivateFieldGet(this, _is224_1), __classPrivateFieldGet(this, _sharedMemory));\n this.update(__classPrivateFieldGet(this, _oKeyPad));\n this.update(innerHash);\n _super.prototype.finalize.call(this);\n }\n };\n return HmacSha256;\n}(Sha256));\n_inner = new WeakMap(), _is224_1 = new WeakMap(), _oKeyPad = new WeakMap(), _sharedMemory = new WeakMap();\nfunction Sha256ToInt(s) {\n var sha256 = new Sha256();\n sha256.update(s);\n return parseInt(sha256.hex().substring(0, 8), 16);\n}\nvar RGB2HEX = function (RGBArray) {\n var hex = '#';\n RGBArray.forEach(function (value) {\n if (value < 16) {\n hex += 0;\n }\n hex += value.toString(16);\n });\n return hex;\n};\nvar HSL2RGB = function (H, S, L) {\n H /= 360;\n var q = L < 0.5 ? L * (1 + S) : L + S - L * S;\n var p = 2 * L - q;\n return [\n H + 1 / 3,\n H,\n H - 1 / 3\n ].map(function (color) {\n if (color < 0) {\n color++;\n }\n if (color > 1) {\n color--;\n }\n if (color < 1 / 6) {\n color = p + (q - p) * 6 * color;\n }\n else if (color < 0.5) {\n color = q;\n }\n else if (color < 2 / 3) {\n color = p + (q - p) * 6 * (2 / 3 - color);\n }\n else {\n color = p;\n }\n return Math.round(color * 255);\n });\n};\nvar ColorHash = /** @class */ (function () {\n function ColorHash(options) {\n if (options === void 0) { options = {}; }\n var _a = [\n options.lightness,\n options.saturation\n ].map(function (param) {\n param = param !== undefined ? param : [\n 0.35,\n 0.5,\n 0.65\n ];\n return Array.isArray(param) ? param.concat() : [\n param\n ];\n }), L = _a[0], S = _a[1];\n this.L = L;\n this.S = S;\n if (typeof options.hue === 'number') {\n options.hue = {\n min: options.hue,\n max: options.hue\n };\n }\n if (typeof options.hue === 'object' && !Array.isArray(options.hue)) {\n options.hue = [\n options.hue\n ];\n }\n if (typeof options.hue === 'undefined') {\n options.hue = [];\n }\n this.hueRanges = options.hue.map(function (range) {\n return {\n min: typeof range.min === 'undefined' ? 0 : range.min,\n max: typeof range.max === 'undefined' ? 360 : range.max\n };\n });\n this.hash = Sha256ToInt;\n if (typeof options.hash === 'function') {\n this.hash = options.hash;\n }\n if (options.hash === 'bkdr') {\n this.hash = BKDRHash;\n }\n }\n ColorHash.prototype.hsl = function (str) {\n var H, S1, L1;\n var hash = this.hash(str);\n var hueResolution = 727;\n if (this.hueRanges.length) {\n var range = this.hueRanges[hash % this.hueRanges.length];\n H = hash / this.hueRanges.length % hueResolution * (range.max - range.min) / hueResolution + range.min;\n }\n else {\n H = hash % 359;\n }\n hash = Math.ceil(hash / 360);\n S1 = this.S[hash % this.S.length];\n hash = Math.ceil(hash / this.S.length);\n L1 = this.L[hash % this.L.length];\n return [\n H,\n S1,\n L1\n ];\n };\n ColorHash.prototype.rgb = function (str) {\n var hsl = this.hsl(str);\n return HSL2RGB.apply(this, hsl);\n };\n ColorHash.prototype.hex = function (str) {\n var rgb = this.rgb(str);\n return RGB2HEX(rgb);\n };\n return ColorHash;\n}());\nexports[\"default\"] = ColorHash;\n","// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n","'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\nvar FunctionName = require('../internals/function-name');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar fails = require('../internals/fails');\nvar anInstance = require('../internals/an-instance');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar IEEE754 = require('../internals/ieee754');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar arrayFill = require('../internals/array-fill');\nvar arraySlice = require('../internals/array-slice-simple');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar ArrayBufferPrototype = $ArrayBuffer && $ArrayBuffer[PROTOTYPE];\nvar $DataView = global[DATA_VIEW];\nvar DataViewPrototype = $DataView && $DataView[PROTOTYPE];\nvar ObjectPrototype = Object.prototype;\nvar Array = global.Array;\nvar RangeError = global.RangeError;\nvar fill = uncurryThis(arrayFill);\nvar reverse = uncurryThis([].reverse);\n\nvar packIEEE754 = IEEE754.pack;\nvar unpackIEEE754 = IEEE754.unpack;\n\nvar packInt8 = function (number) {\n return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar unpackInt32 = function (buffer) {\n return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packFloat32 = function (number) {\n return packIEEE754(number, 23, 4);\n};\n\nvar packFloat64 = function (number) {\n return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key) {\n defineProperty(Constructor[PROTOTYPE], key, { get: function () { return getInternalState(this)[key]; } });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n var intIndex = toIndex(index);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = arraySlice(bytes, start, start + count);\n return isLittleEndian ? pack : reverse(pack);\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n var intIndex = toIndex(index);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = conversion(+value);\n for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, ArrayBufferPrototype);\n var byteLength = toIndex(length);\n setInternalState(this, {\n bytes: fill(Array(byteLength), 0),\n byteLength: byteLength\n });\n if (!DESCRIPTORS) this.byteLength = byteLength;\n };\n\n ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE];\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, DataViewPrototype);\n anInstance(buffer, ArrayBufferPrototype);\n var bufferLength = getInternalState(buffer).byteLength;\n var offset = toIntegerOrInfinity(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n setInternalState(this, {\n buffer: buffer,\n byteLength: byteLength,\n byteOffset: offset\n });\n if (!DESCRIPTORS) {\n this.buffer = buffer;\n this.byteLength = byteLength;\n this.byteOffset = offset;\n }\n };\n\n DataViewPrototype = $DataView[PROTOTYPE];\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, 'byteLength');\n addGetter($DataView, 'buffer');\n addGetter($DataView, 'byteLength');\n addGetter($DataView, 'byteOffset');\n }\n\n defineBuiltIns(DataViewPrototype, {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined);\n }\n });\n} else {\n var INCORRECT_ARRAY_BUFFER_NAME = PROPER_FUNCTION_NAME && NativeArrayBuffer.name !== ARRAY_BUFFER;\n /* eslint-disable no-new -- required for testing */\n if (!fails(function () {\n NativeArrayBuffer(1);\n }) || !fails(function () {\n new NativeArrayBuffer(-1);\n }) || fails(function () {\n new NativeArrayBuffer();\n new NativeArrayBuffer(1.5);\n new NativeArrayBuffer(NaN);\n return NativeArrayBuffer.length != 1 || INCORRECT_ARRAY_BUFFER_NAME && !CONFIGURABLE_FUNCTION_NAME;\n })) {\n /* eslint-enable no-new -- required for testing */\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, ArrayBufferPrototype);\n return new NativeArrayBuffer(toIndex(length));\n };\n\n $ArrayBuffer[PROTOTYPE] = ArrayBufferPrototype;\n\n for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) {\n createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\n }\n }\n\n ArrayBufferPrototype.constructor = $ArrayBuffer;\n } else if (INCORRECT_ARRAY_BUFFER_NAME && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(NativeArrayBuffer, 'name', ARRAY_BUFFER);\n }\n\n // WebKit bug - the same parent prototype for typed arrays and data view\n if (setPrototypeOf && getPrototypeOf(DataViewPrototype) !== ObjectPrototype) {\n setPrototypeOf(DataViewPrototype, ObjectPrototype);\n }\n\n // iOS Safari 7.x bug\n var testView = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = uncurryThis(DataViewPrototype.setInt8);\n testView.setInt8(0, 2147483648);\n testView.setInt8(1, 2147483649);\n if (testView.getInt8(0) || !testView.getInt8(1)) defineBuiltIns(DataViewPrototype, {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8(this, byteOffset, value << 24 >> 24);\n }\n }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\n\nmodule.exports = {\n ArrayBuffer: $ArrayBuffer,\n DataView: $DataView\n};\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = lengthOfArrayLike(O);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","// IEEE754 conversions based on https://github.com/feross/ieee754\nvar $Array = Array;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\nvar pack = function (number, mantissaLength, bytes) {\n var buffer = $Array(bytes);\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n var index = 0;\n var exponent, mantissa, c;\n number = abs(number);\n // eslint-disable-next-line no-self-compare -- NaN check\n if (number != number || number === Infinity) {\n // eslint-disable-next-line no-self-compare -- NaN check\n mantissa = number != number ? 1 : 0;\n exponent = eMax;\n } else {\n exponent = floor(log(number) / LN2);\n c = pow(2, -exponent);\n if (number * c < 1) {\n exponent--;\n c *= 2;\n }\n if (exponent + eBias >= 1) {\n number += rt / c;\n } else {\n number += rt * pow(2, 1 - eBias);\n }\n if (number * c >= 2) {\n exponent++;\n c /= 2;\n }\n if (exponent + eBias >= eMax) {\n mantissa = 0;\n exponent = eMax;\n } else if (exponent + eBias >= 1) {\n mantissa = (number * c - 1) * pow(2, mantissaLength);\n exponent = exponent + eBias;\n } else {\n mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n exponent = 0;\n }\n }\n while (mantissaLength >= 8) {\n buffer[index++] = mantissa & 255;\n mantissa /= 256;\n mantissaLength -= 8;\n }\n exponent = exponent << mantissaLength | mantissa;\n exponentLength += mantissaLength;\n while (exponentLength > 0) {\n buffer[index++] = exponent & 255;\n exponent /= 256;\n exponentLength -= 8;\n }\n buffer[--index] |= sign * 128;\n return buffer;\n};\n\nvar unpack = function (buffer, mantissaLength) {\n var bytes = buffer.length;\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var nBits = exponentLength - 7;\n var index = bytes - 1;\n var sign = buffer[index--];\n var exponent = sign & 127;\n var mantissa;\n sign >>= 7;\n while (nBits > 0) {\n exponent = exponent * 256 + buffer[index--];\n nBits -= 8;\n }\n mantissa = exponent & (1 << -nBits) - 1;\n exponent >>= -nBits;\n nBits += mantissaLength;\n while (nBits > 0) {\n mantissa = mantissa * 256 + buffer[index--];\n nBits -= 8;\n }\n if (exponent === 0) {\n exponent = 1 - eBias;\n } else if (exponent === eMax) {\n return mantissa ? NaN : sign ? -Infinity : Infinity;\n } else {\n mantissa = mantissa + pow(2, mantissaLength);\n exponent = exponent - eBias;\n } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nmodule.exports = {\n pack: pack,\n unpack: unpack\n};\n","'use strict';\nvar $trimEnd = require('../internals/string-trim').end;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.{ trimEnd, trimRight }` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimend\n// https://tc39.es/ecma262/#String.prototype.trimright\nmodule.exports = forcedStringTrimMethod('trimEnd') ? function trimEnd() {\n return $trimEnd(this);\n// eslint-disable-next-line es/no-string-prototype-trimstart-trimend -- safe\n} : ''.trimEnd;\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\n\nvar $RangeError = RangeError;\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toIntegerOrInfinity(it);\n var length = toLength(number);\n if (number !== length) throw $RangeError('Wrong length or index');\n return length;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anObject = require('../internals/an-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar DataViewPrototype = DataView.prototype;\nvar nativeArrayBufferSlice = uncurryThis(ArrayBuffer.prototype.slice);\nvar getUint8 = uncurryThis(DataViewPrototype.getUint8);\nvar setUint8 = uncurryThis(DataViewPrototype.setUint8);\n\nvar INCORRECT_SLICE = fails(function () {\n return !new ArrayBuffer(2).slice(1, undefined).byteLength;\n});\n\n// `ArrayBuffer.prototype.slice` method\n// https://tc39.es/ecma262/#sec-arraybuffer.prototype.slice\n$({ target: 'ArrayBuffer', proto: true, unsafe: true, forced: INCORRECT_SLICE }, {\n slice: function slice(start, end) {\n if (nativeArrayBufferSlice && end === undefined) {\n return nativeArrayBufferSlice(anObject(this), start); // FF fix\n }\n var length = anObject(this).byteLength;\n var first = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n var result = new (speciesConstructor(this, ArrayBuffer))(toLength(fin - first));\n var viewSource = new DataView(this);\n var viewTarget = new DataView(result);\n var index = 0;\n while (first < fin) {\n setUint8(viewTarget, index++, getUint8(viewSource, first++));\n } return result;\n }\n});\n","// TODO: Remove this line from `core-js@4`\nrequire('../modules/es.string.trim-right');\nvar $ = require('../internals/export');\nvar trimEnd = require('../internals/string-trim-end');\n\n// `String.prototype.trimEnd` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimend\n// eslint-disable-next-line es/no-string-prototype-trimstart-trimend -- safe\n$({ target: 'String', proto: true, name: 'trimEnd', forced: ''.trimEnd !== trimEnd }, {\n trimEnd: trimEnd\n});\n","var $ = require('../internals/export');\nvar trimEnd = require('../internals/string-trim-end');\n\n// `String.prototype.trimRight` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimend\n// eslint-disable-next-line es/no-string-prototype-trimleft-trimright -- safe\n$({ target: 'String', proto: true, name: 'trimEnd', forced: ''.trimRight !== trimEnd }, {\n trimRight: trimEnd\n});\n","var prefix = require('prefix-style')\nvar toCamelCase = require('to-camel-case')\nvar cache = { 'float': 'cssFloat' }\nvar addPxToStyle = require('add-px-to-style')\n\nfunction style (element, property, value) {\n var camel = cache[property]\n if (typeof camel === 'undefined') {\n camel = detect(property)\n }\n\n // may be false if CSS prop is unsupported\n if (camel) {\n if (value === undefined) {\n return element.style[camel]\n }\n\n element.style[camel] = addPxToStyle(camel, value)\n }\n}\n\nfunction each (element, properties) {\n for (var k in properties) {\n if (properties.hasOwnProperty(k)) {\n style(element, k, properties[k])\n }\n }\n}\n\nfunction detect (cssProp) {\n var camel = toCamelCase(cssProp)\n var result = prefix(camel)\n cache[camel] = cache[cssProp] = cache[result] = result\n return result\n}\n\nfunction set () {\n if (arguments.length === 2) {\n if (typeof arguments[1] === 'string') {\n arguments[0].style.cssText = arguments[1]\n } else {\n each(arguments[0], arguments[1])\n }\n } else {\n style(arguments[0], arguments[1], arguments[2])\n }\n}\n\nmodule.exports = set\nmodule.exports.set = set\n\nmodule.exports.get = function (element, properties) {\n if (Array.isArray(properties)) {\n return properties.reduce(function (obj, prop) {\n obj[prop] = style(element, prop || '')\n return obj\n }, {})\n } else {\n return style(element, properties || '')\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.attributeNames = exports.elementNames = void 0;\nexports.elementNames = new Map([\n \"altGlyph\",\n \"altGlyphDef\",\n \"altGlyphItem\",\n \"animateColor\",\n \"animateMotion\",\n \"animateTransform\",\n \"clipPath\",\n \"feBlend\",\n \"feColorMatrix\",\n \"feComponentTransfer\",\n \"feComposite\",\n \"feConvolveMatrix\",\n \"feDiffuseLighting\",\n \"feDisplacementMap\",\n \"feDistantLight\",\n \"feDropShadow\",\n \"feFlood\",\n \"feFuncA\",\n \"feFuncB\",\n \"feFuncG\",\n \"feFuncR\",\n \"feGaussianBlur\",\n \"feImage\",\n \"feMerge\",\n \"feMergeNode\",\n \"feMorphology\",\n \"feOffset\",\n \"fePointLight\",\n \"feSpecularLighting\",\n \"feSpotLight\",\n \"feTile\",\n \"feTurbulence\",\n \"foreignObject\",\n \"glyphRef\",\n \"linearGradient\",\n \"radialGradient\",\n \"textPath\",\n].map(function (val) { return [val.toLowerCase(), val]; }));\nexports.attributeNames = new Map([\n \"definitionURL\",\n \"attributeName\",\n \"attributeType\",\n \"baseFrequency\",\n \"baseProfile\",\n \"calcMode\",\n \"clipPathUnits\",\n \"diffuseConstant\",\n \"edgeMode\",\n \"filterUnits\",\n \"glyphRef\",\n \"gradientTransform\",\n \"gradientUnits\",\n \"kernelMatrix\",\n \"kernelUnitLength\",\n \"keyPoints\",\n \"keySplines\",\n \"keyTimes\",\n \"lengthAdjust\",\n \"limitingConeAngle\",\n \"markerHeight\",\n \"markerUnits\",\n \"markerWidth\",\n \"maskContentUnits\",\n \"maskUnits\",\n \"numOctaves\",\n \"pathLength\",\n \"patternContentUnits\",\n \"patternTransform\",\n \"patternUnits\",\n \"pointsAtX\",\n \"pointsAtY\",\n \"pointsAtZ\",\n \"preserveAlpha\",\n \"preserveAspectRatio\",\n \"primitiveUnits\",\n \"refX\",\n \"refY\",\n \"repeatCount\",\n \"repeatDur\",\n \"requiredExtensions\",\n \"requiredFeatures\",\n \"specularConstant\",\n \"specularExponent\",\n \"spreadMethod\",\n \"startOffset\",\n \"stdDeviation\",\n \"stitchTiles\",\n \"surfaceScale\",\n \"systemLanguage\",\n \"tableValues\",\n \"targetX\",\n \"targetY\",\n \"textLength\",\n \"viewBox\",\n \"viewTarget\",\n \"xChannelSelector\",\n \"yChannelSelector\",\n \"zoomAndPan\",\n].map(function (val) { return [val.toLowerCase(), val]; }));\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.render = void 0;\n/*\n * Module dependencies\n */\nvar ElementType = __importStar(require(\"domelementtype\"));\nvar entities_1 = require(\"entities\");\n/**\n * Mixed-case SVG and MathML tags & attributes\n * recognized by the HTML parser.\n *\n * @see https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inforeign\n */\nvar foreignNames_js_1 = require(\"./foreignNames.js\");\nvar unencodedElements = new Set([\n \"style\",\n \"script\",\n \"xmp\",\n \"iframe\",\n \"noembed\",\n \"noframes\",\n \"plaintext\",\n \"noscript\",\n]);\nfunction replaceQuotes(value) {\n return value.replace(/\"/g, \""\");\n}\n/**\n * Format attributes\n */\nfunction formatAttributes(attributes, opts) {\n var _a;\n if (!attributes)\n return;\n var encode = ((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) === false\n ? replaceQuotes\n : opts.xmlMode || opts.encodeEntities !== \"utf8\"\n ? entities_1.encodeXML\n : entities_1.escapeAttribute;\n return Object.keys(attributes)\n .map(function (key) {\n var _a, _b;\n var value = (_a = attributes[key]) !== null && _a !== void 0 ? _a : \"\";\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case attribute names */\n key = (_b = foreignNames_js_1.attributeNames.get(key)) !== null && _b !== void 0 ? _b : key;\n }\n if (!opts.emptyAttrs && !opts.xmlMode && value === \"\") {\n return key;\n }\n return \"\".concat(key, \"=\\\"\").concat(encode(value), \"\\\"\");\n })\n .join(\" \");\n}\n/**\n * Self-enclosing tags\n */\nvar singleTag = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\n/**\n * Renders a DOM node or an array of DOM nodes to a string.\n *\n * Can be thought of as the equivalent of the `outerHTML` of the passed node(s).\n *\n * @param node Node to be rendered.\n * @param options Changes serialization behavior\n */\nfunction render(node, options) {\n if (options === void 0) { options = {}; }\n var nodes = \"length\" in node ? node : [node];\n var output = \"\";\n for (var i = 0; i < nodes.length; i++) {\n output += renderNode(nodes[i], options);\n }\n return output;\n}\nexports.render = render;\nexports.default = render;\nfunction renderNode(node, options) {\n switch (node.type) {\n case ElementType.Root:\n return render(node.children, options);\n // @ts-expect-error We don't use `Doctype` yet\n case ElementType.Doctype:\n case ElementType.Directive:\n return renderDirective(node);\n case ElementType.Comment:\n return renderComment(node);\n case ElementType.CDATA:\n return renderCdata(node);\n case ElementType.Script:\n case ElementType.Style:\n case ElementType.Tag:\n return renderTag(node, options);\n case ElementType.Text:\n return renderText(node, options);\n }\n}\nvar foreignModeIntegrationPoints = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignObject\",\n \"desc\",\n \"title\",\n]);\nvar foreignElements = new Set([\"svg\", \"math\"]);\nfunction renderTag(elem, opts) {\n var _a;\n // Handle SVG / MathML in HTML\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case element names */\n elem.name = (_a = foreignNames_js_1.elementNames.get(elem.name)) !== null && _a !== void 0 ? _a : elem.name;\n /* Exit foreign mode at integration points */\n if (elem.parent &&\n foreignModeIntegrationPoints.has(elem.parent.name)) {\n opts = __assign(__assign({}, opts), { xmlMode: false });\n }\n }\n if (!opts.xmlMode && foreignElements.has(elem.name)) {\n opts = __assign(__assign({}, opts), { xmlMode: \"foreign\" });\n }\n var tag = \"<\".concat(elem.name);\n var attribs = formatAttributes(elem.attribs, opts);\n if (attribs) {\n tag += \" \".concat(attribs);\n }\n if (elem.children.length === 0 &&\n (opts.xmlMode\n ? // In XML mode or foreign mode, and user hasn't explicitly turned off self-closing tags\n opts.selfClosingTags !== false\n : // User explicitly asked for self-closing tags, even in HTML mode\n opts.selfClosingTags && singleTag.has(elem.name))) {\n if (!opts.xmlMode)\n tag += \" \";\n tag += \"/>\";\n }\n else {\n tag += \">\";\n if (elem.children.length > 0) {\n tag += render(elem.children, opts);\n }\n if (opts.xmlMode || !singleTag.has(elem.name)) {\n tag += \"</\".concat(elem.name, \">\");\n }\n }\n return tag;\n}\nfunction renderDirective(elem) {\n return \"<\".concat(elem.data, \">\");\n}\nfunction renderText(elem, opts) {\n var _a;\n var data = elem.data || \"\";\n // If entities weren't decoded, no need to encode them back\n if (((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) !== false &&\n !(!opts.xmlMode &&\n elem.parent &&\n unencodedElements.has(elem.parent.name))) {\n data =\n opts.xmlMode || opts.encodeEntities !== \"utf8\"\n ? (0, entities_1.encodeXML)(data)\n : (0, entities_1.escapeText)(data);\n }\n return data;\n}\nfunction renderCdata(elem) {\n return \"<![CDATA[\".concat(elem.children[0].data, \"]]>\");\n}\nfunction renderComment(elem) {\n return \"<!--\".concat(elem.data, \"-->\");\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Doctype = exports.CDATA = exports.Tag = exports.Style = exports.Script = exports.Comment = exports.Directive = exports.Text = exports.Root = exports.isTag = exports.ElementType = void 0;\n/** Types of elements found in htmlparser2's DOM */\nvar ElementType;\n(function (ElementType) {\n /** Type for the root element of a document */\n ElementType[\"Root\"] = \"root\";\n /** Type for Text */\n ElementType[\"Text\"] = \"text\";\n /** Type for <? ... ?> */\n ElementType[\"Directive\"] = \"directive\";\n /** Type for <!-- ... --> */\n ElementType[\"Comment\"] = \"comment\";\n /** Type for <script> tags */\n ElementType[\"Script\"] = \"script\";\n /** Type for <style> tags */\n ElementType[\"Style\"] = \"style\";\n /** Type for Any tag */\n ElementType[\"Tag\"] = \"tag\";\n /** Type for <![CDATA[ ... ]]> */\n ElementType[\"CDATA\"] = \"cdata\";\n /** Type for <!doctype ...> */\n ElementType[\"Doctype\"] = \"doctype\";\n})(ElementType = exports.ElementType || (exports.ElementType = {}));\n/**\n * Tests whether an element is a tag or not.\n *\n * @param elem Element to test\n */\nfunction isTag(elem) {\n return (elem.type === ElementType.Tag ||\n elem.type === ElementType.Script ||\n elem.type === ElementType.Style);\n}\nexports.isTag = isTag;\n// Exports for backwards compatibility\n/** Type for the root element of a document */\nexports.Root = ElementType.Root;\n/** Type for Text */\nexports.Text = ElementType.Text;\n/** Type for <? ... ?> */\nexports.Directive = ElementType.Directive;\n/** Type for <!-- ... --> */\nexports.Comment = ElementType.Comment;\n/** Type for <script> tags */\nexports.Script = ElementType.Script;\n/** Type for <style> tags */\nexports.Style = ElementType.Style;\n/** Type for Any tag */\nexports.Tag = ElementType.Tag;\n/** Type for <![CDATA[ ... ]]> */\nexports.CDATA = ElementType.CDATA;\n/** Type for <!doctype ...> */\nexports.Doctype = ElementType.Doctype;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DomHandler = void 0;\nvar domelementtype_1 = require(\"domelementtype\");\nvar node_js_1 = require(\"./node.js\");\n__exportStar(require(\"./node.js\"), exports);\n// Default options\nvar defaultOpts = {\n withStartIndices: false,\n withEndIndices: false,\n xmlMode: false,\n};\nvar DomHandler = /** @class */ (function () {\n /**\n * @param callback Called once parsing has completed.\n * @param options Settings for the handler.\n * @param elementCB Callback whenever a tag is closed.\n */\n function DomHandler(callback, options, elementCB) {\n /** The elements of the DOM */\n this.dom = [];\n /** The root element for the DOM */\n this.root = new node_js_1.Document(this.dom);\n /** Indicated whether parsing has been completed. */\n this.done = false;\n /** Stack of open tags. */\n this.tagStack = [this.root];\n /** A data node that is still being written to. */\n this.lastNode = null;\n /** Reference to the parser instance. Used for location information. */\n this.parser = null;\n // Make it possible to skip arguments, for backwards-compatibility\n if (typeof options === \"function\") {\n elementCB = options;\n options = defaultOpts;\n }\n if (typeof callback === \"object\") {\n options = callback;\n callback = undefined;\n }\n this.callback = callback !== null && callback !== void 0 ? callback : null;\n this.options = options !== null && options !== void 0 ? options : defaultOpts;\n this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;\n }\n DomHandler.prototype.onparserinit = function (parser) {\n this.parser = parser;\n };\n // Resets the handler back to starting state\n DomHandler.prototype.onreset = function () {\n this.dom = [];\n this.root = new node_js_1.Document(this.dom);\n this.done = false;\n this.tagStack = [this.root];\n this.lastNode = null;\n this.parser = null;\n };\n // Signals the handler that parsing is done\n DomHandler.prototype.onend = function () {\n if (this.done)\n return;\n this.done = true;\n this.parser = null;\n this.handleCallback(null);\n };\n DomHandler.prototype.onerror = function (error) {\n this.handleCallback(error);\n };\n DomHandler.prototype.onclosetag = function () {\n this.lastNode = null;\n var elem = this.tagStack.pop();\n if (this.options.withEndIndices) {\n elem.endIndex = this.parser.endIndex;\n }\n if (this.elementCB)\n this.elementCB(elem);\n };\n DomHandler.prototype.onopentag = function (name, attribs) {\n var type = this.options.xmlMode ? domelementtype_1.ElementType.Tag : undefined;\n var element = new node_js_1.Element(name, attribs, undefined, type);\n this.addNode(element);\n this.tagStack.push(element);\n };\n DomHandler.prototype.ontext = function (data) {\n var lastNode = this.lastNode;\n if (lastNode && lastNode.type === domelementtype_1.ElementType.Text) {\n lastNode.data += data;\n if (this.options.withEndIndices) {\n lastNode.endIndex = this.parser.endIndex;\n }\n }\n else {\n var node = new node_js_1.Text(data);\n this.addNode(node);\n this.lastNode = node;\n }\n };\n DomHandler.prototype.oncomment = function (data) {\n if (this.lastNode && this.lastNode.type === domelementtype_1.ElementType.Comment) {\n this.lastNode.data += data;\n return;\n }\n var node = new node_js_1.Comment(data);\n this.addNode(node);\n this.lastNode = node;\n };\n DomHandler.prototype.oncommentend = function () {\n this.lastNode = null;\n };\n DomHandler.prototype.oncdatastart = function () {\n var text = new node_js_1.Text(\"\");\n var node = new node_js_1.CDATA([text]);\n this.addNode(node);\n text.parent = node;\n this.lastNode = text;\n };\n DomHandler.prototype.oncdataend = function () {\n this.lastNode = null;\n };\n DomHandler.prototype.onprocessinginstruction = function (name, data) {\n var node = new node_js_1.ProcessingInstruction(name, data);\n this.addNode(node);\n };\n DomHandler.prototype.handleCallback = function (error) {\n if (typeof this.callback === \"function\") {\n this.callback(error, this.dom);\n }\n else if (error) {\n throw error;\n }\n };\n DomHandler.prototype.addNode = function (node) {\n var parent = this.tagStack[this.tagStack.length - 1];\n var previousSibling = parent.children[parent.children.length - 1];\n if (this.options.withStartIndices) {\n node.startIndex = this.parser.startIndex;\n }\n if (this.options.withEndIndices) {\n node.endIndex = this.parser.endIndex;\n }\n parent.children.push(node);\n if (previousSibling) {\n node.prev = previousSibling;\n previousSibling.next = node;\n }\n node.parent = parent;\n this.lastNode = null;\n };\n return DomHandler;\n}());\nexports.DomHandler = DomHandler;\nexports.default = DomHandler;\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cloneNode = exports.hasChildren = exports.isDocument = exports.isDirective = exports.isComment = exports.isText = exports.isCDATA = exports.isTag = exports.Element = exports.Document = exports.CDATA = exports.NodeWithChildren = exports.ProcessingInstruction = exports.Comment = exports.Text = exports.DataNode = exports.Node = void 0;\nvar domelementtype_1 = require(\"domelementtype\");\n/**\n * This object will be used as the prototype for Nodes when creating a\n * DOM-Level-1-compliant structure.\n */\nvar Node = /** @class */ (function () {\n function Node() {\n /** Parent of the node */\n this.parent = null;\n /** Previous sibling */\n this.prev = null;\n /** Next sibling */\n this.next = null;\n /** The start index of the node. Requires `withStartIndices` on the handler to be `true. */\n this.startIndex = null;\n /** The end index of the node. Requires `withEndIndices` on the handler to be `true. */\n this.endIndex = null;\n }\n Object.defineProperty(Node.prototype, \"parentNode\", {\n // Read-write aliases for properties\n /**\n * Same as {@link parent}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.parent;\n },\n set: function (parent) {\n this.parent = parent;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"previousSibling\", {\n /**\n * Same as {@link prev}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.prev;\n },\n set: function (prev) {\n this.prev = prev;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"nextSibling\", {\n /**\n * Same as {@link next}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.next;\n },\n set: function (next) {\n this.next = next;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Clone this node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\n Node.prototype.cloneNode = function (recursive) {\n if (recursive === void 0) { recursive = false; }\n return cloneNode(this, recursive);\n };\n return Node;\n}());\nexports.Node = Node;\n/**\n * A node that contains some data.\n */\nvar DataNode = /** @class */ (function (_super) {\n __extends(DataNode, _super);\n /**\n * @param data The content of the data node\n */\n function DataNode(data) {\n var _this = _super.call(this) || this;\n _this.data = data;\n return _this;\n }\n Object.defineProperty(DataNode.prototype, \"nodeValue\", {\n /**\n * Same as {@link data}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.data;\n },\n set: function (data) {\n this.data = data;\n },\n enumerable: false,\n configurable: true\n });\n return DataNode;\n}(Node));\nexports.DataNode = DataNode;\n/**\n * Text within the document.\n */\nvar Text = /** @class */ (function (_super) {\n __extends(Text, _super);\n function Text() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = domelementtype_1.ElementType.Text;\n return _this;\n }\n Object.defineProperty(Text.prototype, \"nodeType\", {\n get: function () {\n return 3;\n },\n enumerable: false,\n configurable: true\n });\n return Text;\n}(DataNode));\nexports.Text = Text;\n/**\n * Comments within the document.\n */\nvar Comment = /** @class */ (function (_super) {\n __extends(Comment, _super);\n function Comment() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = domelementtype_1.ElementType.Comment;\n return _this;\n }\n Object.defineProperty(Comment.prototype, \"nodeType\", {\n get: function () {\n return 8;\n },\n enumerable: false,\n configurable: true\n });\n return Comment;\n}(DataNode));\nexports.Comment = Comment;\n/**\n * Processing instructions, including doc types.\n */\nvar ProcessingInstruction = /** @class */ (function (_super) {\n __extends(ProcessingInstruction, _super);\n function ProcessingInstruction(name, data) {\n var _this = _super.call(this, data) || this;\n _this.name = name;\n _this.type = domelementtype_1.ElementType.Directive;\n return _this;\n }\n Object.defineProperty(ProcessingInstruction.prototype, \"nodeType\", {\n get: function () {\n return 1;\n },\n enumerable: false,\n configurable: true\n });\n return ProcessingInstruction;\n}(DataNode));\nexports.ProcessingInstruction = ProcessingInstruction;\n/**\n * A `Node` that can have children.\n */\nvar NodeWithChildren = /** @class */ (function (_super) {\n __extends(NodeWithChildren, _super);\n /**\n * @param children Children of the node. Only certain node types can have children.\n */\n function NodeWithChildren(children) {\n var _this = _super.call(this) || this;\n _this.children = children;\n return _this;\n }\n Object.defineProperty(NodeWithChildren.prototype, \"firstChild\", {\n // Aliases\n /** First child of the node. */\n get: function () {\n var _a;\n return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(NodeWithChildren.prototype, \"lastChild\", {\n /** Last child of the node. */\n get: function () {\n return this.children.length > 0\n ? this.children[this.children.length - 1]\n : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(NodeWithChildren.prototype, \"childNodes\", {\n /**\n * Same as {@link children}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.children;\n },\n set: function (children) {\n this.children = children;\n },\n enumerable: false,\n configurable: true\n });\n return NodeWithChildren;\n}(Node));\nexports.NodeWithChildren = NodeWithChildren;\nvar CDATA = /** @class */ (function (_super) {\n __extends(CDATA, _super);\n function CDATA() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = domelementtype_1.ElementType.CDATA;\n return _this;\n }\n Object.defineProperty(CDATA.prototype, \"nodeType\", {\n get: function () {\n return 4;\n },\n enumerable: false,\n configurable: true\n });\n return CDATA;\n}(NodeWithChildren));\nexports.CDATA = CDATA;\n/**\n * The root node of the document.\n */\nvar Document = /** @class */ (function (_super) {\n __extends(Document, _super);\n function Document() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = domelementtype_1.ElementType.Root;\n return _this;\n }\n Object.defineProperty(Document.prototype, \"nodeType\", {\n get: function () {\n return 9;\n },\n enumerable: false,\n configurable: true\n });\n return Document;\n}(NodeWithChildren));\nexports.Document = Document;\n/**\n * An element within the DOM.\n */\nvar Element = /** @class */ (function (_super) {\n __extends(Element, _super);\n /**\n * @param name Name of the tag, eg. `div`, `span`.\n * @param attribs Object mapping attribute names to attribute values.\n * @param children Children of the node.\n */\n function Element(name, attribs, children, type) {\n if (children === void 0) { children = []; }\n if (type === void 0) { type = name === \"script\"\n ? domelementtype_1.ElementType.Script\n : name === \"style\"\n ? domelementtype_1.ElementType.Style\n : domelementtype_1.ElementType.Tag; }\n var _this = _super.call(this, children) || this;\n _this.name = name;\n _this.attribs = attribs;\n _this.type = type;\n return _this;\n }\n Object.defineProperty(Element.prototype, \"nodeType\", {\n get: function () {\n return 1;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Element.prototype, \"tagName\", {\n // DOM Level 1 aliases\n /**\n * Same as {@link name}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get: function () {\n return this.name;\n },\n set: function (name) {\n this.name = name;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Element.prototype, \"attributes\", {\n get: function () {\n var _this = this;\n return Object.keys(this.attribs).map(function (name) {\n var _a, _b;\n return ({\n name: name,\n value: _this.attribs[name],\n namespace: (_a = _this[\"x-attribsNamespace\"]) === null || _a === void 0 ? void 0 : _a[name],\n prefix: (_b = _this[\"x-attribsPrefix\"]) === null || _b === void 0 ? void 0 : _b[name],\n });\n });\n },\n enumerable: false,\n configurable: true\n });\n return Element;\n}(NodeWithChildren));\nexports.Element = Element;\n/**\n * @param node Node to check.\n * @returns `true` if the node is a `Element`, `false` otherwise.\n */\nfunction isTag(node) {\n return (0, domelementtype_1.isTag)(node);\n}\nexports.isTag = isTag;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `CDATA`, `false` otherwise.\n */\nfunction isCDATA(node) {\n return node.type === domelementtype_1.ElementType.CDATA;\n}\nexports.isCDATA = isCDATA;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Text`, `false` otherwise.\n */\nfunction isText(node) {\n return node.type === domelementtype_1.ElementType.Text;\n}\nexports.isText = isText;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Comment`, `false` otherwise.\n */\nfunction isComment(node) {\n return node.type === domelementtype_1.ElementType.Comment;\n}\nexports.isComment = isComment;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nfunction isDirective(node) {\n return node.type === domelementtype_1.ElementType.Directive;\n}\nexports.isDirective = isDirective;\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nfunction isDocument(node) {\n return node.type === domelementtype_1.ElementType.Root;\n}\nexports.isDocument = isDocument;\n/**\n * @param node Node to check.\n * @returns `true` if the node has children, `false` otherwise.\n */\nfunction hasChildren(node) {\n return Object.prototype.hasOwnProperty.call(node, \"children\");\n}\nexports.hasChildren = hasChildren;\n/**\n * Clone a node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\nfunction cloneNode(node, recursive) {\n if (recursive === void 0) { recursive = false; }\n var result;\n if (isText(node)) {\n result = new Text(node.data);\n }\n else if (isComment(node)) {\n result = new Comment(node.data);\n }\n else if (isTag(node)) {\n var children = recursive ? cloneChildren(node.children) : [];\n var clone_1 = new Element(node.name, __assign({}, node.attribs), children);\n children.forEach(function (child) { return (child.parent = clone_1); });\n if (node.namespace != null) {\n clone_1.namespace = node.namespace;\n }\n if (node[\"x-attribsNamespace\"]) {\n clone_1[\"x-attribsNamespace\"] = __assign({}, node[\"x-attribsNamespace\"]);\n }\n if (node[\"x-attribsPrefix\"]) {\n clone_1[\"x-attribsPrefix\"] = __assign({}, node[\"x-attribsPrefix\"]);\n }\n result = clone_1;\n }\n else if (isCDATA(node)) {\n var children = recursive ? cloneChildren(node.children) : [];\n var clone_2 = new CDATA(children);\n children.forEach(function (child) { return (child.parent = clone_2); });\n result = clone_2;\n }\n else if (isDocument(node)) {\n var children = recursive ? cloneChildren(node.children) : [];\n var clone_3 = new Document(children);\n children.forEach(function (child) { return (child.parent = clone_3); });\n if (node[\"x-mode\"]) {\n clone_3[\"x-mode\"] = node[\"x-mode\"];\n }\n result = clone_3;\n }\n else if (isDirective(node)) {\n var instruction = new ProcessingInstruction(node.name, node.data);\n if (node[\"x-name\"] != null) {\n instruction[\"x-name\"] = node[\"x-name\"];\n instruction[\"x-publicId\"] = node[\"x-publicId\"];\n instruction[\"x-systemId\"] = node[\"x-systemId\"];\n }\n result = instruction;\n }\n else {\n throw new Error(\"Not implemented yet: \".concat(node.type));\n }\n result.startIndex = node.startIndex;\n result.endIndex = node.endIndex;\n if (node.sourceCodeLocation != null) {\n result.sourceCodeLocation = node.sourceCodeLocation;\n }\n return result;\n}\nexports.cloneNode = cloneNode;\nfunction cloneChildren(childs) {\n var children = childs.map(function (child) { return cloneNode(child, true); });\n for (var i = 1; i < children.length; i++) {\n children[i].prev = children[i - 1];\n children[i - 1].next = children[i];\n }\n return children;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getFeed = void 0;\nvar stringify_js_1 = require(\"./stringify.js\");\nvar legacy_js_1 = require(\"./legacy.js\");\n/**\n * Get the feed object from the root of a DOM tree.\n *\n * @category Feeds\n * @param doc - The DOM to to extract the feed from.\n * @returns The feed.\n */\nfunction getFeed(doc) {\n var feedRoot = getOneElement(isValidFeed, doc);\n return !feedRoot\n ? null\n : feedRoot.name === \"feed\"\n ? getAtomFeed(feedRoot)\n : getRssFeed(feedRoot);\n}\nexports.getFeed = getFeed;\n/**\n * Parse an Atom feed.\n *\n * @param feedRoot The root of the feed.\n * @returns The parsed feed.\n */\nfunction getAtomFeed(feedRoot) {\n var _a;\n var childs = feedRoot.children;\n var feed = {\n type: \"atom\",\n items: (0, legacy_js_1.getElementsByTagName)(\"entry\", childs).map(function (item) {\n var _a;\n var children = item.children;\n var entry = { media: getMediaElements(children) };\n addConditionally(entry, \"id\", \"id\", children);\n addConditionally(entry, \"title\", \"title\", children);\n var href = (_a = getOneElement(\"link\", children)) === null || _a === void 0 ? void 0 : _a.attribs[\"href\"];\n if (href) {\n entry.link = href;\n }\n var description = fetch(\"summary\", children) || fetch(\"content\", children);\n if (description) {\n entry.description = description;\n }\n var pubDate = fetch(\"updated\", children);\n if (pubDate) {\n entry.pubDate = new Date(pubDate);\n }\n return entry;\n }),\n };\n addConditionally(feed, \"id\", \"id\", childs);\n addConditionally(feed, \"title\", \"title\", childs);\n var href = (_a = getOneElement(\"link\", childs)) === null || _a === void 0 ? void 0 : _a.attribs[\"href\"];\n if (href) {\n feed.link = href;\n }\n addConditionally(feed, \"description\", \"subtitle\", childs);\n var updated = fetch(\"updated\", childs);\n if (updated) {\n feed.updated = new Date(updated);\n }\n addConditionally(feed, \"author\", \"email\", childs, true);\n return feed;\n}\n/**\n * Parse a RSS feed.\n *\n * @param feedRoot The root of the feed.\n * @returns The parsed feed.\n */\nfunction getRssFeed(feedRoot) {\n var _a, _b;\n var childs = (_b = (_a = getOneElement(\"channel\", feedRoot.children)) === null || _a === void 0 ? void 0 : _a.children) !== null && _b !== void 0 ? _b : [];\n var feed = {\n type: feedRoot.name.substr(0, 3),\n id: \"\",\n items: (0, legacy_js_1.getElementsByTagName)(\"item\", feedRoot.children).map(function (item) {\n var children = item.children;\n var entry = { media: getMediaElements(children) };\n addConditionally(entry, \"id\", \"guid\", children);\n addConditionally(entry, \"title\", \"title\", children);\n addConditionally(entry, \"link\", \"link\", children);\n addConditionally(entry, \"description\", \"description\", children);\n var pubDate = fetch(\"pubDate\", children) || fetch(\"dc:date\", children);\n if (pubDate)\n entry.pubDate = new Date(pubDate);\n return entry;\n }),\n };\n addConditionally(feed, \"title\", \"title\", childs);\n addConditionally(feed, \"link\", \"link\", childs);\n addConditionally(feed, \"description\", \"description\", childs);\n var updated = fetch(\"lastBuildDate\", childs);\n if (updated) {\n feed.updated = new Date(updated);\n }\n addConditionally(feed, \"author\", \"managingEditor\", childs, true);\n return feed;\n}\nvar MEDIA_KEYS_STRING = [\"url\", \"type\", \"lang\"];\nvar MEDIA_KEYS_INT = [\n \"fileSize\",\n \"bitrate\",\n \"framerate\",\n \"samplingrate\",\n \"channels\",\n \"duration\",\n \"height\",\n \"width\",\n];\n/**\n * Get all media elements of a feed item.\n *\n * @param where Nodes to search in.\n * @returns Media elements.\n */\nfunction getMediaElements(where) {\n return (0, legacy_js_1.getElementsByTagName)(\"media:content\", where).map(function (elem) {\n var attribs = elem.attribs;\n var media = {\n medium: attribs[\"medium\"],\n isDefault: !!attribs[\"isDefault\"],\n };\n for (var _i = 0, MEDIA_KEYS_STRING_1 = MEDIA_KEYS_STRING; _i < MEDIA_KEYS_STRING_1.length; _i++) {\n var attrib = MEDIA_KEYS_STRING_1[_i];\n if (attribs[attrib]) {\n media[attrib] = attribs[attrib];\n }\n }\n for (var _a = 0, MEDIA_KEYS_INT_1 = MEDIA_KEYS_INT; _a < MEDIA_KEYS_INT_1.length; _a++) {\n var attrib = MEDIA_KEYS_INT_1[_a];\n if (attribs[attrib]) {\n media[attrib] = parseInt(attribs[attrib], 10);\n }\n }\n if (attribs[\"expression\"]) {\n media.expression = attribs[\"expression\"];\n }\n return media;\n });\n}\n/**\n * Get one element by tag name.\n *\n * @param tagName Tag name to look for\n * @param node Node to search in\n * @returns The element or null\n */\nfunction getOneElement(tagName, node) {\n return (0, legacy_js_1.getElementsByTagName)(tagName, node, true, 1)[0];\n}\n/**\n * Get the text content of an element with a certain tag name.\n *\n * @param tagName Tag name to look for.\n * @param where Node to search in.\n * @param recurse Whether to recurse into child nodes.\n * @returns The text content of the element.\n */\nfunction fetch(tagName, where, recurse) {\n if (recurse === void 0) { recurse = false; }\n return (0, stringify_js_1.textContent)((0, legacy_js_1.getElementsByTagName)(tagName, where, recurse, 1)).trim();\n}\n/**\n * Adds a property to an object if it has a value.\n *\n * @param obj Object to be extended\n * @param prop Property name\n * @param tagName Tag name that contains the conditionally added property\n * @param where Element to search for the property\n * @param recurse Whether to recurse into child nodes.\n */\nfunction addConditionally(obj, prop, tagName, where, recurse) {\n if (recurse === void 0) { recurse = false; }\n var val = fetch(tagName, where, recurse);\n if (val)\n obj[prop] = val;\n}\n/**\n * Checks if an element is a feed root node.\n *\n * @param value The name of the element to check.\n * @returns Whether an element is a feed root node.\n */\nfunction isValidFeed(value) {\n return value === \"rss\" || value === \"feed\" || value === \"rdf:RDF\";\n}\n//# sourceMappingURL=feeds.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.uniqueSort = exports.compareDocumentPosition = exports.DocumentPosition = exports.removeSubsets = void 0;\nvar domhandler_1 = require(\"domhandler\");\n/**\n * Given an array of nodes, remove any member that is contained by another\n * member.\n *\n * @category Helpers\n * @param nodes Nodes to filter.\n * @returns Remaining nodes that aren't contained by other nodes.\n */\nfunction removeSubsets(nodes) {\n var idx = nodes.length;\n /*\n * Check if each node (or one of its ancestors) is already contained in the\n * array.\n */\n while (--idx >= 0) {\n var node = nodes[idx];\n /*\n * Remove the node if it is not unique.\n * We are going through the array from the end, so we only\n * have to check nodes that preceed the node under consideration in the array.\n */\n if (idx > 0 && nodes.lastIndexOf(node, idx - 1) >= 0) {\n nodes.splice(idx, 1);\n continue;\n }\n for (var ancestor = node.parent; ancestor; ancestor = ancestor.parent) {\n if (nodes.includes(ancestor)) {\n nodes.splice(idx, 1);\n break;\n }\n }\n }\n return nodes;\n}\nexports.removeSubsets = removeSubsets;\n/**\n * @category Helpers\n * @see {@link http://dom.spec.whatwg.org/#dom-node-comparedocumentposition}\n */\nvar DocumentPosition;\n(function (DocumentPosition) {\n DocumentPosition[DocumentPosition[\"DISCONNECTED\"] = 1] = \"DISCONNECTED\";\n DocumentPosition[DocumentPosition[\"PRECEDING\"] = 2] = \"PRECEDING\";\n DocumentPosition[DocumentPosition[\"FOLLOWING\"] = 4] = \"FOLLOWING\";\n DocumentPosition[DocumentPosition[\"CONTAINS\"] = 8] = \"CONTAINS\";\n DocumentPosition[DocumentPosition[\"CONTAINED_BY\"] = 16] = \"CONTAINED_BY\";\n})(DocumentPosition = exports.DocumentPosition || (exports.DocumentPosition = {}));\n/**\n * Compare the position of one node against another node in any other document,\n * returning a bitmask with the values from {@link DocumentPosition}.\n *\n * Document order:\n * > There is an ordering, document order, defined on all the nodes in the\n * > document corresponding to the order in which the first character of the\n * > XML representation of each node occurs in the XML representation of the\n * > document after expansion of general entities. Thus, the document element\n * > node will be the first node. Element nodes occur before their children.\n * > Thus, document order orders element nodes in order of the occurrence of\n * > their start-tag in the XML (after expansion of entities). The attribute\n * > nodes of an element occur after the element and before its children. The\n * > relative order of attribute nodes is implementation-dependent.\n *\n * Source:\n * http://www.w3.org/TR/DOM-Level-3-Core/glossary.html#dt-document-order\n *\n * @category Helpers\n * @param nodeA The first node to use in the comparison\n * @param nodeB The second node to use in the comparison\n * @returns A bitmask describing the input nodes' relative position.\n *\n * See http://dom.spec.whatwg.org/#dom-node-comparedocumentposition for\n * a description of these values.\n */\nfunction compareDocumentPosition(nodeA, nodeB) {\n var aParents = [];\n var bParents = [];\n if (nodeA === nodeB) {\n return 0;\n }\n var current = (0, domhandler_1.hasChildren)(nodeA) ? nodeA : nodeA.parent;\n while (current) {\n aParents.unshift(current);\n current = current.parent;\n }\n current = (0, domhandler_1.hasChildren)(nodeB) ? nodeB : nodeB.parent;\n while (current) {\n bParents.unshift(current);\n current = current.parent;\n }\n var maxIdx = Math.min(aParents.length, bParents.length);\n var idx = 0;\n while (idx < maxIdx && aParents[idx] === bParents[idx]) {\n idx++;\n }\n if (idx === 0) {\n return DocumentPosition.DISCONNECTED;\n }\n var sharedParent = aParents[idx - 1];\n var siblings = sharedParent.children;\n var aSibling = aParents[idx];\n var bSibling = bParents[idx];\n if (siblings.indexOf(aSibling) > siblings.indexOf(bSibling)) {\n if (sharedParent === nodeB) {\n return DocumentPosition.FOLLOWING | DocumentPosition.CONTAINED_BY;\n }\n return DocumentPosition.FOLLOWING;\n }\n if (sharedParent === nodeA) {\n return DocumentPosition.PRECEDING | DocumentPosition.CONTAINS;\n }\n return DocumentPosition.PRECEDING;\n}\nexports.compareDocumentPosition = compareDocumentPosition;\n/**\n * Sort an array of nodes based on their relative position in the document,\n * removing any duplicate nodes. If the array contains nodes that do not belong\n * to the same document, sort order is unspecified.\n *\n * @category Helpers\n * @param nodes Array of DOM nodes.\n * @returns Collection of unique nodes, sorted in document order.\n */\nfunction uniqueSort(nodes) {\n nodes = nodes.filter(function (node, i, arr) { return !arr.includes(node, i + 1); });\n nodes.sort(function (a, b) {\n var relative = compareDocumentPosition(a, b);\n if (relative & DocumentPosition.PRECEDING) {\n return -1;\n }\n else if (relative & DocumentPosition.FOLLOWING) {\n return 1;\n }\n return 0;\n });\n return nodes;\n}\nexports.uniqueSort = uniqueSort;\n//# sourceMappingURL=helpers.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hasChildren = exports.isDocument = exports.isComment = exports.isText = exports.isCDATA = exports.isTag = void 0;\n__exportStar(require(\"./stringify.js\"), exports);\n__exportStar(require(\"./traversal.js\"), exports);\n__exportStar(require(\"./manipulation.js\"), exports);\n__exportStar(require(\"./querying.js\"), exports);\n__exportStar(require(\"./legacy.js\"), exports);\n__exportStar(require(\"./helpers.js\"), exports);\n__exportStar(require(\"./feeds.js\"), exports);\n/** @deprecated Use these methods from `domhandler` directly. */\nvar domhandler_1 = require(\"domhandler\");\nObject.defineProperty(exports, \"isTag\", { enumerable: true, get: function () { return domhandler_1.isTag; } });\nObject.defineProperty(exports, \"isCDATA\", { enumerable: true, get: function () { return domhandler_1.isCDATA; } });\nObject.defineProperty(exports, \"isText\", { enumerable: true, get: function () { return domhandler_1.isText; } });\nObject.defineProperty(exports, \"isComment\", { enumerable: true, get: function () { return domhandler_1.isComment; } });\nObject.defineProperty(exports, \"isDocument\", { enumerable: true, get: function () { return domhandler_1.isDocument; } });\nObject.defineProperty(exports, \"hasChildren\", { enumerable: true, get: function () { return domhandler_1.hasChildren; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getElementsByTagType = exports.getElementsByTagName = exports.getElementById = exports.getElements = exports.testElement = void 0;\nvar domhandler_1 = require(\"domhandler\");\nvar querying_js_1 = require(\"./querying.js\");\n/**\n * A map of functions to check nodes against.\n */\nvar Checks = {\n tag_name: function (name) {\n if (typeof name === \"function\") {\n return function (elem) { return (0, domhandler_1.isTag)(elem) && name(elem.name); };\n }\n else if (name === \"*\") {\n return domhandler_1.isTag;\n }\n return function (elem) { return (0, domhandler_1.isTag)(elem) && elem.name === name; };\n },\n tag_type: function (type) {\n if (typeof type === \"function\") {\n return function (elem) { return type(elem.type); };\n }\n return function (elem) { return elem.type === type; };\n },\n tag_contains: function (data) {\n if (typeof data === \"function\") {\n return function (elem) { return (0, domhandler_1.isText)(elem) && data(elem.data); };\n }\n return function (elem) { return (0, domhandler_1.isText)(elem) && elem.data === data; };\n },\n};\n/**\n * Returns a function to check whether a node has an attribute with a particular\n * value.\n *\n * @param attrib Attribute to check.\n * @param value Attribute value to look for.\n * @returns A function to check whether the a node has an attribute with a\n * particular value.\n */\nfunction getAttribCheck(attrib, value) {\n if (typeof value === \"function\") {\n return function (elem) { return (0, domhandler_1.isTag)(elem) && value(elem.attribs[attrib]); };\n }\n return function (elem) { return (0, domhandler_1.isTag)(elem) && elem.attribs[attrib] === value; };\n}\n/**\n * Returns a function that returns `true` if either of the input functions\n * returns `true` for a node.\n *\n * @param a First function to combine.\n * @param b Second function to combine.\n * @returns A function taking a node and returning `true` if either of the input\n * functions returns `true` for the node.\n */\nfunction combineFuncs(a, b) {\n return function (elem) { return a(elem) || b(elem); };\n}\n/**\n * Returns a function that executes all checks in `options` and returns `true`\n * if any of them match a node.\n *\n * @param options An object describing nodes to look for.\n * @returns A function that executes all checks in `options` and returns `true`\n * if any of them match a node.\n */\nfunction compileTest(options) {\n var funcs = Object.keys(options).map(function (key) {\n var value = options[key];\n return Object.prototype.hasOwnProperty.call(Checks, key)\n ? Checks[key](value)\n : getAttribCheck(key, value);\n });\n return funcs.length === 0 ? null : funcs.reduce(combineFuncs);\n}\n/**\n * Checks whether a node matches the description in `options`.\n *\n * @category Legacy Query Functions\n * @param options An object describing nodes to look for.\n * @param node The element to test.\n * @returns Whether the element matches the description in `options`.\n */\nfunction testElement(options, node) {\n var test = compileTest(options);\n return test ? test(node) : true;\n}\nexports.testElement = testElement;\n/**\n * Returns all nodes that match `options`.\n *\n * @category Legacy Query Functions\n * @param options An object describing nodes to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes that match `options`.\n */\nfunction getElements(options, nodes, recurse, limit) {\n if (limit === void 0) { limit = Infinity; }\n var test = compileTest(options);\n return test ? (0, querying_js_1.filter)(test, nodes, recurse, limit) : [];\n}\nexports.getElements = getElements;\n/**\n * Returns the node with the supplied ID.\n *\n * @category Legacy Query Functions\n * @param id The unique ID attribute value to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @returns The node with the supplied ID.\n */\nfunction getElementById(id, nodes, recurse) {\n if (recurse === void 0) { recurse = true; }\n if (!Array.isArray(nodes))\n nodes = [nodes];\n return (0, querying_js_1.findOne)(getAttribCheck(\"id\", id), nodes, recurse);\n}\nexports.getElementById = getElementById;\n/**\n * Returns all nodes with the supplied `tagName`.\n *\n * @category Legacy Query Functions\n * @param tagName Tag name to search for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes with the supplied `tagName`.\n */\nfunction getElementsByTagName(tagName, nodes, recurse, limit) {\n if (recurse === void 0) { recurse = true; }\n if (limit === void 0) { limit = Infinity; }\n return (0, querying_js_1.filter)(Checks[\"tag_name\"](tagName), nodes, recurse, limit);\n}\nexports.getElementsByTagName = getElementsByTagName;\n/**\n * Returns all nodes with the supplied `type`.\n *\n * @category Legacy Query Functions\n * @param type Element type to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes with the supplied `type`.\n */\nfunction getElementsByTagType(type, nodes, recurse, limit) {\n if (recurse === void 0) { recurse = true; }\n if (limit === void 0) { limit = Infinity; }\n return (0, querying_js_1.filter)(Checks[\"tag_type\"](type), nodes, recurse, limit);\n}\nexports.getElementsByTagType = getElementsByTagType;\n//# sourceMappingURL=legacy.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.prepend = exports.prependChild = exports.append = exports.appendChild = exports.replaceElement = exports.removeElement = void 0;\n/**\n * Remove an element from the dom\n *\n * @category Manipulation\n * @param elem The element to be removed\n */\nfunction removeElement(elem) {\n if (elem.prev)\n elem.prev.next = elem.next;\n if (elem.next)\n elem.next.prev = elem.prev;\n if (elem.parent) {\n var childs = elem.parent.children;\n var childsIndex = childs.lastIndexOf(elem);\n if (childsIndex >= 0) {\n childs.splice(childsIndex, 1);\n }\n }\n elem.next = null;\n elem.prev = null;\n elem.parent = null;\n}\nexports.removeElement = removeElement;\n/**\n * Replace an element in the dom\n *\n * @category Manipulation\n * @param elem The element to be replaced\n * @param replacement The element to be added\n */\nfunction replaceElement(elem, replacement) {\n var prev = (replacement.prev = elem.prev);\n if (prev) {\n prev.next = replacement;\n }\n var next = (replacement.next = elem.next);\n if (next) {\n next.prev = replacement;\n }\n var parent = (replacement.parent = elem.parent);\n if (parent) {\n var childs = parent.children;\n childs[childs.lastIndexOf(elem)] = replacement;\n elem.parent = null;\n }\n}\nexports.replaceElement = replaceElement;\n/**\n * Append a child to an element.\n *\n * @category Manipulation\n * @param parent The element to append to.\n * @param child The element to be added as a child.\n */\nfunction appendChild(parent, child) {\n removeElement(child);\n child.next = null;\n child.parent = parent;\n if (parent.children.push(child) > 1) {\n var sibling = parent.children[parent.children.length - 2];\n sibling.next = child;\n child.prev = sibling;\n }\n else {\n child.prev = null;\n }\n}\nexports.appendChild = appendChild;\n/**\n * Append an element after another.\n *\n * @category Manipulation\n * @param elem The element to append after.\n * @param next The element be added.\n */\nfunction append(elem, next) {\n removeElement(next);\n var parent = elem.parent;\n var currNext = elem.next;\n next.next = currNext;\n next.prev = elem;\n elem.next = next;\n next.parent = parent;\n if (currNext) {\n currNext.prev = next;\n if (parent) {\n var childs = parent.children;\n childs.splice(childs.lastIndexOf(currNext), 0, next);\n }\n }\n else if (parent) {\n parent.children.push(next);\n }\n}\nexports.append = append;\n/**\n * Prepend a child to an element.\n *\n * @category Manipulation\n * @param parent The element to prepend before.\n * @param child The element to be added as a child.\n */\nfunction prependChild(parent, child) {\n removeElement(child);\n child.parent = parent;\n child.prev = null;\n if (parent.children.unshift(child) !== 1) {\n var sibling = parent.children[1];\n sibling.prev = child;\n child.next = sibling;\n }\n else {\n child.next = null;\n }\n}\nexports.prependChild = prependChild;\n/**\n * Prepend an element before another.\n *\n * @category Manipulation\n * @param elem The element to prepend before.\n * @param prev The element be added.\n */\nfunction prepend(elem, prev) {\n removeElement(prev);\n var parent = elem.parent;\n if (parent) {\n var childs = parent.children;\n childs.splice(childs.indexOf(elem), 0, prev);\n }\n if (elem.prev) {\n elem.prev.next = prev;\n }\n prev.parent = parent;\n prev.prev = elem.prev;\n prev.next = elem;\n elem.prev = prev;\n}\nexports.prepend = prepend;\n//# sourceMappingURL=manipulation.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.findAll = exports.existsOne = exports.findOne = exports.findOneChild = exports.find = exports.filter = void 0;\nvar domhandler_1 = require(\"domhandler\");\n/**\n * Search a node and its children for nodes passing a test function. If `node` is not an array, it will be wrapped in one.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param node Node to search. Will be included in the result set if it matches.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes passing `test`.\n */\nfunction filter(test, node, recurse, limit) {\n if (recurse === void 0) { recurse = true; }\n if (limit === void 0) { limit = Infinity; }\n return find(test, Array.isArray(node) ? node : [node], recurse, limit);\n}\nexports.filter = filter;\n/**\n * Search an array of nodes and their children for nodes passing a test function.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes passing `test`.\n */\nfunction find(test, nodes, recurse, limit) {\n var result = [];\n /** Stack of the arrays we are looking at. */\n var nodeStack = [nodes];\n /** Stack of the indices within the arrays. */\n var indexStack = [0];\n for (;;) {\n // First, check if the current array has any more elements to look at.\n if (indexStack[0] >= nodeStack[0].length) {\n // If we have no more arrays to look at, we are done.\n if (indexStack.length === 1) {\n return result;\n }\n // Otherwise, remove the current array from the stack.\n nodeStack.shift();\n indexStack.shift();\n // Loop back to the start to continue with the next array.\n continue;\n }\n var elem = nodeStack[0][indexStack[0]++];\n if (test(elem)) {\n result.push(elem);\n if (--limit <= 0)\n return result;\n }\n if (recurse && (0, domhandler_1.hasChildren)(elem) && elem.children.length > 0) {\n /*\n * Add the children to the stack. We are depth-first, so this is\n * the next array we look at.\n */\n indexStack.unshift(0);\n nodeStack.unshift(elem.children);\n }\n }\n}\nexports.find = find;\n/**\n * Finds the first element inside of an array that matches a test function. This is an alias for `Array.prototype.find`.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @returns The first node in the array that passes `test`.\n * @deprecated Use `Array.prototype.find` directly.\n */\nfunction findOneChild(test, nodes) {\n return nodes.find(test);\n}\nexports.findOneChild = findOneChild;\n/**\n * Finds one element in a tree that passes a test.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Node or array of nodes to search.\n * @param recurse Also consider child nodes.\n * @returns The first node that passes `test`.\n */\nfunction findOne(test, nodes, recurse) {\n if (recurse === void 0) { recurse = true; }\n var elem = null;\n for (var i = 0; i < nodes.length && !elem; i++) {\n var node = nodes[i];\n if (!(0, domhandler_1.isTag)(node)) {\n continue;\n }\n else if (test(node)) {\n elem = node;\n }\n else if (recurse && node.children.length > 0) {\n elem = findOne(test, node.children, true);\n }\n }\n return elem;\n}\nexports.findOne = findOne;\n/**\n * Checks if a tree of nodes contains at least one node passing a test.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @returns Whether a tree of nodes contains at least one node passing the test.\n */\nfunction existsOne(test, nodes) {\n return nodes.some(function (checked) {\n return (0, domhandler_1.isTag)(checked) &&\n (test(checked) || existsOne(test, checked.children));\n });\n}\nexports.existsOne = existsOne;\n/**\n * Search an array of nodes and their children for elements passing a test function.\n *\n * Same as `find`, but limited to elements and with less options, leading to reduced complexity.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @returns All nodes passing `test`.\n */\nfunction findAll(test, nodes) {\n var result = [];\n var nodeStack = [nodes];\n var indexStack = [0];\n for (;;) {\n if (indexStack[0] >= nodeStack[0].length) {\n if (nodeStack.length === 1) {\n return result;\n }\n // Otherwise, remove the current array from the stack.\n nodeStack.shift();\n indexStack.shift();\n // Loop back to the start to continue with the next array.\n continue;\n }\n var elem = nodeStack[0][indexStack[0]++];\n if (!(0, domhandler_1.isTag)(elem))\n continue;\n if (test(elem))\n result.push(elem);\n if (elem.children.length > 0) {\n indexStack.unshift(0);\n nodeStack.unshift(elem.children);\n }\n }\n}\nexports.findAll = findAll;\n//# sourceMappingURL=querying.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.innerText = exports.textContent = exports.getText = exports.getInnerHTML = exports.getOuterHTML = void 0;\nvar domhandler_1 = require(\"domhandler\");\nvar dom_serializer_1 = __importDefault(require(\"dom-serializer\"));\nvar domelementtype_1 = require(\"domelementtype\");\n/**\n * @category Stringify\n * @deprecated Use the `dom-serializer` module directly.\n * @param node Node to get the outer HTML of.\n * @param options Options for serialization.\n * @returns `node`'s outer HTML.\n */\nfunction getOuterHTML(node, options) {\n return (0, dom_serializer_1.default)(node, options);\n}\nexports.getOuterHTML = getOuterHTML;\n/**\n * @category Stringify\n * @deprecated Use the `dom-serializer` module directly.\n * @param node Node to get the inner HTML of.\n * @param options Options for serialization.\n * @returns `node`'s inner HTML.\n */\nfunction getInnerHTML(node, options) {\n return (0, domhandler_1.hasChildren)(node)\n ? node.children.map(function (node) { return getOuterHTML(node, options); }).join(\"\")\n : \"\";\n}\nexports.getInnerHTML = getInnerHTML;\n/**\n * Get a node's inner text. Same as `textContent`, but inserts newlines for `<br>` tags. Ignores comments.\n *\n * @category Stringify\n * @deprecated Use `textContent` instead.\n * @param node Node to get the inner text of.\n * @returns `node`'s inner text.\n */\nfunction getText(node) {\n if (Array.isArray(node))\n return node.map(getText).join(\"\");\n if ((0, domhandler_1.isTag)(node))\n return node.name === \"br\" ? \"\\n\" : getText(node.children);\n if ((0, domhandler_1.isCDATA)(node))\n return getText(node.children);\n if ((0, domhandler_1.isText)(node))\n return node.data;\n return \"\";\n}\nexports.getText = getText;\n/**\n * Get a node's text content. Ignores comments.\n *\n * @category Stringify\n * @param node Node to get the text content of.\n * @returns `node`'s text content.\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent}\n */\nfunction textContent(node) {\n if (Array.isArray(node))\n return node.map(textContent).join(\"\");\n if ((0, domhandler_1.hasChildren)(node) && !(0, domhandler_1.isComment)(node)) {\n return textContent(node.children);\n }\n if ((0, domhandler_1.isText)(node))\n return node.data;\n return \"\";\n}\nexports.textContent = textContent;\n/**\n * Get a node's inner text, ignoring `<script>` and `<style>` tags. Ignores comments.\n *\n * @category Stringify\n * @param node Node to get the inner text of.\n * @returns `node`'s inner text.\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Node/innerText}\n */\nfunction innerText(node) {\n if (Array.isArray(node))\n return node.map(innerText).join(\"\");\n if ((0, domhandler_1.hasChildren)(node) && (node.type === domelementtype_1.ElementType.Tag || (0, domhandler_1.isCDATA)(node))) {\n return innerText(node.children);\n }\n if ((0, domhandler_1.isText)(node))\n return node.data;\n return \"\";\n}\nexports.innerText = innerText;\n//# sourceMappingURL=stringify.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.prevElementSibling = exports.nextElementSibling = exports.getName = exports.hasAttrib = exports.getAttributeValue = exports.getSiblings = exports.getParent = exports.getChildren = void 0;\nvar domhandler_1 = require(\"domhandler\");\n/**\n * Get a node's children.\n *\n * @category Traversal\n * @param elem Node to get the children of.\n * @returns `elem`'s children, or an empty array.\n */\nfunction getChildren(elem) {\n return (0, domhandler_1.hasChildren)(elem) ? elem.children : [];\n}\nexports.getChildren = getChildren;\n/**\n * Get a node's parent.\n *\n * @category Traversal\n * @param elem Node to get the parent of.\n * @returns `elem`'s parent node, or `null` if `elem` is a root node.\n */\nfunction getParent(elem) {\n return elem.parent || null;\n}\nexports.getParent = getParent;\n/**\n * Gets an elements siblings, including the element itself.\n *\n * Attempts to get the children through the element's parent first. If we don't\n * have a parent (the element is a root node), we walk the element's `prev` &\n * `next` to get all remaining nodes.\n *\n * @category Traversal\n * @param elem Element to get the siblings of.\n * @returns `elem`'s siblings, including `elem`.\n */\nfunction getSiblings(elem) {\n var _a, _b;\n var parent = getParent(elem);\n if (parent != null)\n return getChildren(parent);\n var siblings = [elem];\n var prev = elem.prev, next = elem.next;\n while (prev != null) {\n siblings.unshift(prev);\n (_a = prev, prev = _a.prev);\n }\n while (next != null) {\n siblings.push(next);\n (_b = next, next = _b.next);\n }\n return siblings;\n}\nexports.getSiblings = getSiblings;\n/**\n * Gets an attribute from an element.\n *\n * @category Traversal\n * @param elem Element to check.\n * @param name Attribute name to retrieve.\n * @returns The element's attribute value, or `undefined`.\n */\nfunction getAttributeValue(elem, name) {\n var _a;\n return (_a = elem.attribs) === null || _a === void 0 ? void 0 : _a[name];\n}\nexports.getAttributeValue = getAttributeValue;\n/**\n * Checks whether an element has an attribute.\n *\n * @category Traversal\n * @param elem Element to check.\n * @param name Attribute name to look for.\n * @returns Returns whether `elem` has the attribute `name`.\n */\nfunction hasAttrib(elem, name) {\n return (elem.attribs != null &&\n Object.prototype.hasOwnProperty.call(elem.attribs, name) &&\n elem.attribs[name] != null);\n}\nexports.hasAttrib = hasAttrib;\n/**\n * Get the tag name of an element.\n *\n * @category Traversal\n * @param elem The element to get the name for.\n * @returns The tag name of `elem`.\n */\nfunction getName(elem) {\n return elem.name;\n}\nexports.getName = getName;\n/**\n * Returns the next element sibling of a node.\n *\n * @category Traversal\n * @param elem The element to get the next sibling of.\n * @returns `elem`'s next sibling that is a tag, or `null` if there is no next\n * sibling.\n */\nfunction nextElementSibling(elem) {\n var _a;\n var next = elem.next;\n while (next !== null && !(0, domhandler_1.isTag)(next))\n (_a = next, next = _a.next);\n return next;\n}\nexports.nextElementSibling = nextElementSibling;\n/**\n * Returns the previous element sibling of a node.\n *\n * @category Traversal\n * @param elem The element to get the previous sibling of.\n * @returns `elem`'s previous sibling that is a tag, or `null` if there is no\n * previous sibling.\n */\nfunction prevElementSibling(elem) {\n var _a;\n var prev = elem.prev;\n while (prev !== null && !(0, domhandler_1.isTag)(prev))\n (_a = prev, prev = _a.prev);\n return prev;\n}\nexports.prevElementSibling = prevElementSibling;\n//# sourceMappingURL=traversal.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodeXML = exports.decodeHTMLStrict = exports.decodeHTMLAttribute = exports.decodeHTML = exports.determineBranch = exports.EntityDecoder = exports.DecodingMode = exports.BinTrieFlags = exports.fromCodePoint = exports.replaceCodePoint = exports.decodeCodePoint = exports.xmlDecodeTree = exports.htmlDecodeTree = void 0;\nvar decode_data_html_js_1 = __importDefault(require(\"./generated/decode-data-html.js\"));\nexports.htmlDecodeTree = decode_data_html_js_1.default;\nvar decode_data_xml_js_1 = __importDefault(require(\"./generated/decode-data-xml.js\"));\nexports.xmlDecodeTree = decode_data_xml_js_1.default;\nvar decode_codepoint_js_1 = __importStar(require(\"./decode_codepoint.js\"));\nexports.decodeCodePoint = decode_codepoint_js_1.default;\nvar decode_codepoint_js_2 = require(\"./decode_codepoint.js\");\nObject.defineProperty(exports, \"replaceCodePoint\", { enumerable: true, get: function () { return decode_codepoint_js_2.replaceCodePoint; } });\nObject.defineProperty(exports, \"fromCodePoint\", { enumerable: true, get: function () { return decode_codepoint_js_2.fromCodePoint; } });\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nvar TO_LOWER_BIT = 32;\nvar BinTrieFlags;\n(function (BinTrieFlags) {\n BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags = exports.BinTrieFlags || (exports.BinTrieFlags = {}));\nfunction isNumber(code) {\n return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nvar DecodingMode;\n(function (DecodingMode) {\n /** Entities in text nodes that can end with any character. */\n DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n /** Only allow entities terminated with a semicolon. */\n DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n /** Entities in attributes have limitations on ending characters. */\n DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode = exports.DecodingMode || (exports.DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nvar EntityDecoder = /** @class */ (function () {\n function EntityDecoder(\n /** The tree used to decode entities. */\n decodeTree, \n /**\n * The function that is called when a codepoint is decoded.\n *\n * For multi-byte named entities, this will be called multiple times,\n * with the second codepoint, and the same `consumed` value.\n *\n * @param codepoint The decoded codepoint.\n * @param consumed The number of bytes consumed by the decoder.\n */\n emitCodePoint, \n /** An object that is used to produce errors. */\n errors) {\n this.decodeTree = decodeTree;\n this.emitCodePoint = emitCodePoint;\n this.errors = errors;\n /** The current state of the decoder. */\n this.state = EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */\n this.consumed = 1;\n /**\n * The result of the entity.\n *\n * Either the result index of a numeric entity, or the codepoint of a\n * numeric entity.\n */\n this.result = 0;\n /** The current index in the decode tree. */\n this.treeIndex = 0;\n /** The number of characters that were consumed in excess. */\n this.excess = 1;\n /** The mode in which the decoder is operating. */\n this.decodeMode = DecodingMode.Strict;\n }\n /** Resets the instance to make it reusable. */\n EntityDecoder.prototype.startEntity = function (decodeMode) {\n this.decodeMode = decodeMode;\n this.state = EntityDecoderState.EntityStart;\n this.result = 0;\n this.treeIndex = 0;\n this.excess = 1;\n this.consumed = 1;\n };\n /**\n * Write an entity to the decoder. This can be called multiple times with partial entities.\n * If the entity is incomplete, the decoder will return -1.\n *\n * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n * entity is incomplete, and resume when the next string is written.\n *\n * @param string The string containing the entity (or a continuation of the entity).\n * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n EntityDecoder.prototype.write = function (str, offset) {\n switch (this.state) {\n case EntityDecoderState.EntityStart: {\n if (str.charCodeAt(offset) === CharCodes.NUM) {\n this.state = EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(str, offset + 1);\n }\n this.state = EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(str, offset);\n }\n case EntityDecoderState.NumericStart: {\n return this.stateNumericStart(str, offset);\n }\n case EntityDecoderState.NumericDecimal: {\n return this.stateNumericDecimal(str, offset);\n }\n case EntityDecoderState.NumericHex: {\n return this.stateNumericHex(str, offset);\n }\n case EntityDecoderState.NamedEntity: {\n return this.stateNamedEntity(str, offset);\n }\n }\n };\n /**\n * Switches between the numeric decimal and hexadecimal states.\n *\n * Equivalent to the `Numeric character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n EntityDecoder.prototype.stateNumericStart = function (str, offset) {\n if (offset >= str.length) {\n return -1;\n }\n if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n this.state = EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(str, offset + 1);\n }\n this.state = EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(str, offset);\n };\n EntityDecoder.prototype.addToNumericResult = function (str, start, end, base) {\n if (start !== end) {\n var digitCount = end - start;\n this.result =\n this.result * Math.pow(base, digitCount) +\n parseInt(str.substr(start, digitCount), base);\n this.consumed += digitCount;\n }\n };\n /**\n * Parses a hexadecimal numeric entity.\n *\n * Equivalent to the `Hexademical character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n EntityDecoder.prototype.stateNumericHex = function (str, offset) {\n var startIdx = offset;\n while (offset < str.length) {\n var char = str.charCodeAt(offset);\n if (isNumber(char) || isHexadecimalCharacter(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 16);\n return this.emitNumericEntity(char, 3);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 16);\n return -1;\n };\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n EntityDecoder.prototype.stateNumericDecimal = function (str, offset) {\n var startIdx = offset;\n while (offset < str.length) {\n var char = str.charCodeAt(offset);\n if (isNumber(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 10);\n return this.emitNumericEntity(char, 2);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 10);\n return -1;\n };\n /**\n * Validate and emit a numeric entity.\n *\n * Implements the logic from the `Hexademical character reference start\n * state` and `Numeric character reference end state` in the HTML spec.\n *\n * @param lastCp The last code point of the entity. Used to see if the\n * entity was terminated with a semicolon.\n * @param expectedLength The minimum number of characters that should be\n * consumed. Used to validate that at least one digit\n * was consumed.\n * @returns The number of characters that were consumed.\n */\n EntityDecoder.prototype.emitNumericEntity = function (lastCp, expectedLength) {\n var _a;\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n // Figure out if this is a legit end of the entity\n if (lastCp === CharCodes.SEMI) {\n this.consumed += 1;\n }\n else if (this.decodeMode === DecodingMode.Strict) {\n return 0;\n }\n this.emitCodePoint((0, decode_codepoint_js_1.replaceCodePoint)(this.result), this.consumed);\n if (this.errors) {\n if (lastCp !== CharCodes.SEMI) {\n this.errors.missingSemicolonAfterCharacterReference();\n }\n this.errors.validateNumericCharacterReference(this.result);\n }\n return this.consumed;\n };\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n EntityDecoder.prototype.stateNamedEntity = function (str, offset) {\n var decodeTree = this.decodeTree;\n var current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n var valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n for (; offset < str.length; offset++, this.excess++) {\n var char = str.charCodeAt(offset);\n this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n if (this.treeIndex < 0) {\n return this.result === 0 ||\n // If we are parsing an attribute\n (this.decodeMode === DecodingMode.Attribute &&\n // We shouldn't have consumed any characters after the entity,\n (valueLength === 0 ||\n // And there should be no invalid characters.\n isEntityInAttributeInvalidEnd(char)))\n ? 0\n : this.emitNotTerminatedNamedEntity();\n }\n current = decodeTree[this.treeIndex];\n valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n // If the branch is a value, store it and continue\n if (valueLength !== 0) {\n // If the entity is terminated by a semicolon, we are done.\n if (char === CharCodes.SEMI) {\n return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n }\n // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n if (this.decodeMode !== DecodingMode.Strict) {\n this.result = this.treeIndex;\n this.consumed += this.excess;\n this.excess = 0;\n }\n }\n }\n return -1;\n };\n /**\n * Emit a named entity that was not terminated with a semicolon.\n *\n * @returns The number of characters consumed.\n */\n EntityDecoder.prototype.emitNotTerminatedNamedEntity = function () {\n var _a;\n var _b = this, result = _b.result, decodeTree = _b.decodeTree;\n var valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n this.emitNamedEntityData(result, valueLength, this.consumed);\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n return this.consumed;\n };\n /**\n * Emit a named entity.\n *\n * @param result The index of the entity in the decode tree.\n * @param valueLength The number of bytes in the entity.\n * @param consumed The number of characters consumed.\n *\n * @returns The number of characters consumed.\n */\n EntityDecoder.prototype.emitNamedEntityData = function (result, valueLength, consumed) {\n var decodeTree = this.decodeTree;\n this.emitCodePoint(valueLength === 1\n ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n : decodeTree[result + 1], consumed);\n if (valueLength === 3) {\n // For multi-byte values, we need to emit the second byte.\n this.emitCodePoint(decodeTree[result + 2], consumed);\n }\n return consumed;\n };\n /**\n * Signal to the parser that the end of the input was reached.\n *\n * Remaining data will be emitted and relevant errors will be produced.\n *\n * @returns The number of characters consumed.\n */\n EntityDecoder.prototype.end = function () {\n var _a;\n switch (this.state) {\n case EntityDecoderState.NamedEntity: {\n // Emit a named entity if we have one.\n return this.result !== 0 &&\n (this.decodeMode !== DecodingMode.Attribute ||\n this.result === this.treeIndex)\n ? this.emitNotTerminatedNamedEntity()\n : 0;\n }\n // Otherwise, emit a numeric entity if we have one.\n case EntityDecoderState.NumericDecimal: {\n return this.emitNumericEntity(0, 2);\n }\n case EntityDecoderState.NumericHex: {\n return this.emitNumericEntity(0, 3);\n }\n case EntityDecoderState.NumericStart: {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n case EntityDecoderState.EntityStart: {\n // Return 0 if we have no entity.\n return 0;\n }\n }\n };\n return EntityDecoder;\n}());\nexports.EntityDecoder = EntityDecoder;\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n var ret = \"\";\n var decoder = new EntityDecoder(decodeTree, function (str) { return (ret += (0, decode_codepoint_js_1.fromCodePoint)(str)); });\n return function decodeWithTrie(str, decodeMode) {\n var lastIndex = 0;\n var offset = 0;\n while ((offset = str.indexOf(\"&\", offset)) >= 0) {\n ret += str.slice(lastIndex, offset);\n decoder.startEntity(decodeMode);\n var len = decoder.write(str, \n // Skip the \"&\"\n offset + 1);\n if (len < 0) {\n lastIndex = offset + decoder.end();\n break;\n }\n lastIndex = offset + len;\n // If `len` is 0, skip the current `&` and continue.\n offset = len === 0 ? lastIndex + 1 : lastIndex;\n }\n var result = ret + str.slice(lastIndex);\n // Make sure we don't keep a reference to the final string.\n ret = \"\";\n return result;\n };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nfunction determineBranch(decodeTree, current, nodeIdx, char) {\n var branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n var jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) {\n return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;\n }\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n var value = char - jumpOffset;\n return value < 0 || value >= branchCount\n ? -1\n : decodeTree[nodeIdx + value] - 1;\n }\n // Case 3: Multiple branches encoded in dictionary\n // Binary search for the character.\n var lo = nodeIdx;\n var hi = lo + branchCount - 1;\n while (lo <= hi) {\n var mid = (lo + hi) >>> 1;\n var midVal = decodeTree[mid];\n if (midVal < char) {\n lo = mid + 1;\n }\n else if (midVal > char) {\n hi = mid - 1;\n }\n else {\n return decodeTree[mid + branchCount];\n }\n }\n return -1;\n}\nexports.determineBranch = determineBranch;\nvar htmlDecoder = getDecoder(decode_data_html_js_1.default);\nvar xmlDecoder = getDecoder(decode_data_xml_js_1.default);\n/**\n * Decodes an HTML string.\n *\n * @param str The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nfunction decodeHTML(str, mode) {\n if (mode === void 0) { mode = DecodingMode.Legacy; }\n return htmlDecoder(str, mode);\n}\nexports.decodeHTML = decodeHTML;\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nfunction decodeHTMLAttribute(str) {\n return htmlDecoder(str, DecodingMode.Attribute);\n}\nexports.decodeHTMLAttribute = decodeHTMLAttribute;\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nfunction decodeHTMLStrict(str) {\n return htmlDecoder(str, DecodingMode.Strict);\n}\nexports.decodeHTMLStrict = decodeHTMLStrict;\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nfunction decodeXML(str) {\n return xmlDecoder(str, DecodingMode.Strict);\n}\nexports.decodeXML = decodeXML;\n//# sourceMappingURL=decode.js.map","\"use strict\";\n// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.replaceCodePoint = exports.fromCodePoint = void 0;\nvar decodeMap = new Map([\n [0, 65533],\n // C1 Unicode control character reference replacements\n [128, 8364],\n [130, 8218],\n [131, 402],\n [132, 8222],\n [133, 8230],\n [134, 8224],\n [135, 8225],\n [136, 710],\n [137, 8240],\n [138, 352],\n [139, 8249],\n [140, 338],\n [142, 381],\n [145, 8216],\n [146, 8217],\n [147, 8220],\n [148, 8221],\n [149, 8226],\n [150, 8211],\n [151, 8212],\n [152, 732],\n [153, 8482],\n [154, 353],\n [155, 8250],\n [156, 339],\n [158, 382],\n [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexports.fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n var output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n output += String.fromCharCode(codePoint);\n return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nfunction replaceCodePoint(codePoint) {\n var _a;\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return 0xfffd;\n }\n return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\nexports.replaceCodePoint = replaceCodePoint;\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nfunction decodeCodePoint(codePoint) {\n return (0, exports.fromCodePoint)(replaceCodePoint(codePoint));\n}\nexports.default = decodeCodePoint;\n//# sourceMappingURL=decode_codepoint.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.encodeNonAsciiHTML = exports.encodeHTML = void 0;\nvar encode_html_js_1 = __importDefault(require(\"./generated/encode-html.js\"));\nvar escape_js_1 = require(\"./escape.js\");\nvar htmlReplacer = /[\\t\\n!-,./:-@[-`\\f{-}$\\x80-\\uFFFF]/g;\n/**\n * Encodes all characters in the input using HTML entities. This includes\n * characters that are valid ASCII characters in HTML documents, such as `#`.\n *\n * To get a more compact output, consider using the `encodeNonAsciiHTML`\n * function, which will only encode characters that are not valid in HTML\n * documents, as well as non-ASCII characters.\n *\n * If a character has no equivalent entity, a numeric hexadecimal reference\n * (eg. `ü`) will be used.\n */\nfunction encodeHTML(data) {\n return encodeHTMLTrieRe(htmlReplacer, data);\n}\nexports.encodeHTML = encodeHTML;\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in HTML\n * documents using HTML entities. This function will not encode characters that\n * are valid in HTML documents, such as `#`.\n *\n * If a character has no equivalent entity, a numeric hexadecimal reference\n * (eg. `ü`) will be used.\n */\nfunction encodeNonAsciiHTML(data) {\n return encodeHTMLTrieRe(escape_js_1.xmlReplacer, data);\n}\nexports.encodeNonAsciiHTML = encodeNonAsciiHTML;\nfunction encodeHTMLTrieRe(regExp, str) {\n var ret = \"\";\n var lastIdx = 0;\n var match;\n while ((match = regExp.exec(str)) !== null) {\n var i = match.index;\n ret += str.substring(lastIdx, i);\n var char = str.charCodeAt(i);\n var next = encode_html_js_1.default.get(char);\n if (typeof next === \"object\") {\n // We are in a branch. Try to match the next char.\n if (i + 1 < str.length) {\n var nextChar = str.charCodeAt(i + 1);\n var value = typeof next.n === \"number\"\n ? next.n === nextChar\n ? next.o\n : undefined\n : next.n.get(nextChar);\n if (value !== undefined) {\n ret += value;\n lastIdx = regExp.lastIndex += 1;\n continue;\n }\n }\n next = next.v;\n }\n // We might have a tree node without a value; skip and use a numeric entity.\n if (next !== undefined) {\n ret += next;\n lastIdx = i + 1;\n }\n else {\n var cp = (0, escape_js_1.getCodePoint)(str, i);\n ret += \"&#x\".concat(cp.toString(16), \";\");\n // Increase by 1 if we have a surrogate pair\n lastIdx = regExp.lastIndex += Number(cp !== char);\n }\n }\n return ret + str.substr(lastIdx);\n}\n//# sourceMappingURL=encode.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.escapeText = exports.escapeAttribute = exports.escapeUTF8 = exports.escape = exports.encodeXML = exports.getCodePoint = exports.xmlReplacer = void 0;\nexports.xmlReplacer = /[\"&'<>$\\x80-\\uFFFF]/g;\nvar xmlCodeMap = new Map([\n [34, \""\"],\n [38, \"&\"],\n [39, \"'\"],\n [60, \"<\"],\n [62, \">\"],\n]);\n// For compatibility with node < 4, we wrap `codePointAt`\nexports.getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt != null\n ? function (str, index) { return str.codePointAt(index); }\n : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n function (c, index) {\n return (c.charCodeAt(index) & 0xfc00) === 0xd800\n ? (c.charCodeAt(index) - 0xd800) * 0x400 +\n c.charCodeAt(index + 1) -\n 0xdc00 +\n 0x10000\n : c.charCodeAt(index);\n };\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nfunction encodeXML(str) {\n var ret = \"\";\n var lastIdx = 0;\n var match;\n while ((match = exports.xmlReplacer.exec(str)) !== null) {\n var i = match.index;\n var char = str.charCodeAt(i);\n var next = xmlCodeMap.get(char);\n if (next !== undefined) {\n ret += str.substring(lastIdx, i) + next;\n lastIdx = i + 1;\n }\n else {\n ret += \"\".concat(str.substring(lastIdx, i), \"&#x\").concat((0, exports.getCodePoint)(str, i).toString(16), \";\");\n // Increase by 1 if we have a surrogate pair\n lastIdx = exports.xmlReplacer.lastIndex += Number((char & 0xfc00) === 0xd800);\n }\n }\n return ret + str.substr(lastIdx);\n}\nexports.encodeXML = encodeXML;\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `ü`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nexports.escape = encodeXML;\n/**\n * Creates a function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n *\n * @param regex Regular expression to match characters to escape.\n * @param map Map of characters to escape to their entities.\n *\n * @returns Function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n */\nfunction getEscaper(regex, map) {\n return function escape(data) {\n var match;\n var lastIdx = 0;\n var result = \"\";\n while ((match = regex.exec(data))) {\n if (lastIdx !== match.index) {\n result += data.substring(lastIdx, match.index);\n }\n // We know that this character will be in the map.\n result += map.get(match[0].charCodeAt(0));\n // Every match will be of length 1\n lastIdx = match.index + 1;\n }\n return result + data.substring(lastIdx);\n };\n}\n/**\n * Encodes all characters not valid in XML documents using XML entities.\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nexports.escapeUTF8 = getEscaper(/[&<>'\"]/g, xmlCodeMap);\n/**\n * Encodes all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexports.escapeAttribute = getEscaper(/[\"&\\u00A0]/g, new Map([\n [34, \""\"],\n [38, \"&\"],\n [160, \" \"],\n]));\n/**\n * Encodes all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexports.escapeText = getEscaper(/[&<>\\u00A0]/g, new Map([\n [38, \"&\"],\n [60, \"<\"],\n [62, \">\"],\n [160, \" \"],\n]));\n//# sourceMappingURL=escape.js.map","\"use strict\";\n// Generated using scripts/write-decode-map.ts\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = new Uint16Array(\n// prettier-ignore\n\"\\u1d41<\\xd5\\u0131\\u028a\\u049d\\u057b\\u05d0\\u0675\\u06de\\u07a2\\u07d6\\u080f\\u0a4a\\u0a91\\u0da1\\u0e6d\\u0f09\\u0f26\\u10ca\\u1228\\u12e1\\u1415\\u149d\\u14c3\\u14df\\u1525\\0\\0\\0\\0\\0\\0\\u156b\\u16cd\\u198d\\u1c12\\u1ddd\\u1f7e\\u2060\\u21b0\\u228d\\u23c0\\u23fb\\u2442\\u2824\\u2912\\u2d08\\u2e48\\u2fce\\u3016\\u32ba\\u3639\\u37ac\\u38fe\\u3a28\\u3a71\\u3ae0\\u3b2e\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803b\\xc6\\u40c6P\\u803b&\\u4026cute\\u803b\\xc1\\u40c1reve;\\u4102\\u0100iyx}rc\\u803b\\xc2\\u40c2;\\u4410r;\\uc000\\ud835\\udd04rave\\u803b\\xc0\\u40c0pha;\\u4391acr;\\u4100d;\\u6a53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uc000\\ud835\\udd38plyFunction;\\u6061ing\\u803b\\xc5\\u40c5\\u0100cs\\xbe\\xc3r;\\uc000\\ud835\\udc9cign;\\u6254ilde\\u803b\\xc3\\u40c3ml\\u803b\\xc4\\u40c4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011c\\u0122\\u0127\\u012a\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6ae7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010b\\u0114ause;\\u6235noullis;\\u612ca;\\u4392r;\\uc000\\ud835\\udd05pf;\\uc000\\ud835\\udd39eve;\\u42d8c\\xf2\\u0113mpeq;\\u624e\\u0700HOacdefhilorsu\\u014d\\u0151\\u0156\\u0180\\u019e\\u01a2\\u01b5\\u01b7\\u01ba\\u01dc\\u0215\\u0273\\u0278\\u027ecy;\\u4427PY\\u803b\\xa9\\u40a9\\u0180cpy\\u015d\\u0162\\u017aute;\\u4106\\u0100;i\\u0167\\u0168\\u62d2talDifferentialD;\\u6145leys;\\u612d\\u0200aeio\\u0189\\u018e\\u0194\\u0198ron;\\u410cdil\\u803b\\xc7\\u40c7rc;\\u4108nint;\\u6230ot;\\u410a\\u0100dn\\u01a7\\u01adilla;\\u40b8terDot;\\u40b7\\xf2\\u017fi;\\u43a7rcle\\u0200DMPT\\u01c7\\u01cb\\u01d1\\u01d6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01e2\\u01f8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020foubleQuote;\\u601duote;\\u6019\\u0200lnpu\\u021e\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6a74\\u0180git\\u022f\\u0236\\u023aruent;\\u6261nt;\\u622fourIntegral;\\u622e\\u0100fr\\u024c\\u024e;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6a2fcr;\\uc000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62d3ap;\\u624d\\u0580DJSZacefios\\u02a0\\u02ac\\u02b0\\u02b4\\u02b8\\u02cb\\u02d7\\u02e1\\u02e6\\u0333\\u048d\\u0100;o\\u0179\\u02a5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440f\\u0180grs\\u02bf\\u02c4\\u02c7ger;\\u6021r;\\u61a1hv;\\u6ae4\\u0100ay\\u02d0\\u02d5ron;\\u410e;\\u4414l\\u0100;t\\u02dd\\u02de\\u6207a;\\u4394r;\\uc000\\ud835\\udd07\\u0100af\\u02eb\\u0327\\u0100cm\\u02f0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031ccute;\\u40b4o\\u0174\\u030b\\u030d;\\u42d9bleAcute;\\u42ddrave;\\u4060ilde;\\u42dcond;\\u62c4ferentialD;\\u6146\\u0470\\u033d\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uc000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034d\\u40a8ot;\\u60dcqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03cf\\u03e2\\u03f8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037b\\xbb\\u0349nArrow;\\u61d3\\u0100eo\\u0387\\u03a4ft\\u0180ART\\u0390\\u0396\\u03a1rrow;\\u61d0ightArrow;\\u61d4e\\xe5\\u02cang\\u0100LR\\u03ab\\u03c4eft\\u0100AR\\u03b3\\u03b9rrow;\\u67f8ightArrow;\\u67faightArrow;\\u67f9ight\\u0100AT\\u03d8\\u03derrow;\\u61d2ee;\\u62a8p\\u0241\\u03e9\\0\\0\\u03efrrow;\\u61d1ownArrow;\\u61d5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042a\\u0430\\u045e\\u047f\\u037crrow\\u0180;BU\\u041d\\u041e\\u0422\\u6193ar;\\u6913pArrow;\\u61f5reve;\\u4311eft\\u02d2\\u043a\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695eector\\u0100;B\\u0459\\u045a\\u61bdar;\\u6956ight\\u01d4\\u0467\\0\\u0471eeVector;\\u695fector\\u0100;B\\u047a\\u047b\\u61c1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62a4rrow;\\u61a7\\u0100ct\\u0492\\u0497r;\\uc000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04bd\\u04c0\\u04c4\\u04cb\\u04de\\u04e2\\u04e7\\u04ee\\u04f5\\u0521\\u052f\\u0536\\u0552\\u055d\\u0560\\u0565G;\\u414aH\\u803b\\xd0\\u40d0cute\\u803b\\xc9\\u40c9\\u0180aiy\\u04d2\\u04d7\\u04dcron;\\u411arc\\u803b\\xca\\u40ca;\\u442dot;\\u4116r;\\uc000\\ud835\\udd08rave\\u803b\\xc8\\u40c8ement;\\u6208\\u0100ap\\u04fa\\u04fecr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65fberySmallSquare;\\u65ab\\u0100gp\\u0526\\u052aon;\\u4118f;\\uc000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053c\\u0549l\\u0100;T\\u0542\\u0543\\u6a75ilde;\\u6242librium;\\u61cc\\u0100ci\\u0557\\u055ar;\\u6130m;\\u6a73a;\\u4397ml\\u803b\\xcb\\u40cb\\u0100ip\\u056a\\u056fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058d\\u05b2\\u05ccy;\\u4424r;\\uc000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05a3mallSquare;\\u65fcerySmallSquare;\\u65aa\\u0370\\u05ba\\0\\u05bf\\0\\0\\u05c4f;\\uc000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05cb\\u0600JTabcdfgorst\\u05e8\\u05ec\\u05ef\\u05fa\\u0600\\u0612\\u0616\\u061b\\u061d\\u0623\\u066c\\u0672cy;\\u4403\\u803b>\\u403emma\\u0100;d\\u05f7\\u05f8\\u4393;\\u43dcreve;\\u411e\\u0180eiy\\u0607\\u060c\\u0610dil;\\u4122rc;\\u411c;\\u4413ot;\\u4120r;\\uc000\\ud835\\udd0a;\\u62d9pf;\\uc000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064e\\u0656\\u065b\\u0666qual\\u0100;L\\u063e\\u063f\\u6265ess;\\u62dbullEqual;\\u6267reater;\\u6aa2ess;\\u6277lantEqual;\\u6a7eilde;\\u6273cr;\\uc000\\ud835\\udca2;\\u626b\\u0400Aacfiosu\\u0685\\u068b\\u0696\\u069b\\u069e\\u06aa\\u06be\\u06caRDcy;\\u442a\\u0100ct\\u0690\\u0694ek;\\u42c7;\\u405eirc;\\u4124r;\\u610clbertSpace;\\u610b\\u01f0\\u06af\\0\\u06b2f;\\u610dizontalLine;\\u6500\\u0100ct\\u06c3\\u06c5\\xf2\\u06a9rok;\\u4126mp\\u0144\\u06d0\\u06d8ownHum\\xf0\\u012fqual;\\u624f\\u0700EJOacdfgmnostu\\u06fa\\u06fe\\u0703\\u0707\\u070e\\u071a\\u071e\\u0721\\u0728\\u0744\\u0778\\u078b\\u078f\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803b\\xcd\\u40cd\\u0100iy\\u0713\\u0718rc\\u803b\\xce\\u40ce;\\u4418ot;\\u4130r;\\u6111rave\\u803b\\xcc\\u40cc\\u0180;ap\\u0720\\u072f\\u073f\\u0100cg\\u0734\\u0737r;\\u412ainaryI;\\u6148lie\\xf3\\u03dd\\u01f4\\u0749\\0\\u0762\\u0100;e\\u074d\\u074e\\u622c\\u0100gr\\u0753\\u0758ral;\\u622bsection;\\u62c2isible\\u0100CT\\u076c\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077f\\u0783\\u0788on;\\u412ef;\\uc000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01eb\\u079a\\0\\u079ecy;\\u4406l\\u803b\\xcf\\u40cf\\u0280cfosu\\u07ac\\u07b7\\u07bc\\u07c2\\u07d0\\u0100iy\\u07b1\\u07b5rc;\\u4134;\\u4419r;\\uc000\\ud835\\udd0dpf;\\uc000\\ud835\\udd41\\u01e3\\u07c7\\0\\u07ccr;\\uc000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07e4\\u07e8\\u07ec\\u07f1\\u07fd\\u0802\\u0808cy;\\u4425cy;\\u440cppa;\\u439a\\u0100ey\\u07f6\\u07fbdil;\\u4136;\\u441ar;\\uc000\\ud835\\udd0epf;\\uc000\\ud835\\udd42cr;\\uc000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082c\\u0850\\u0863\\u09b3\\u09b8\\u09c7\\u09cd\\u0a37\\u0a47cy;\\u4409\\u803b<\\u403c\\u0280cmnpr\\u0837\\u083c\\u0841\\u0844\\u084dute;\\u4139bda;\\u439bg;\\u67ealacetrf;\\u6112r;\\u619e\\u0180aey\\u0857\\u085c\\u0861ron;\\u413ddil;\\u413b;\\u441b\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087e\\u08a9\\u08b1\\u08e0\\u08e6\\u08fc\\u092f\\u095b\\u0390\\u096a\\u0100nr\\u0883\\u088fgleBracket;\\u67e8row\\u0180;BR\\u0899\\u089a\\u089e\\u6190ar;\\u61e4ightArrow;\\u61c6eiling;\\u6308o\\u01f5\\u08b7\\0\\u08c3bleBracket;\\u67e6n\\u01d4\\u08c8\\0\\u08d2eeVector;\\u6961ector\\u0100;B\\u08db\\u08dc\\u61c3ar;\\u6959loor;\\u630aight\\u0100AV\\u08ef\\u08f5rrow;\\u6194ector;\\u694e\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090a\\u0910\\u62a3rrow;\\u61a4ector;\\u695aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62b2ar;\\u69cfqual;\\u62b4p\\u0180DTV\\u0937\\u0942\\u094cownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61bfar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61bcar;\\u6952ight\\xe1\\u039cs\\u0300EFGLST\\u097e\\u098b\\u0995\\u099d\\u09a2\\u09adqualGreater;\\u62daullEqual;\\u6266reater;\\u6276ess;\\u6aa1lantEqual;\\u6a7dilde;\\u6272r;\\uc000\\ud835\\udd0f\\u0100;e\\u09bd\\u09be\\u62d8ftarrow;\\u61daidot;\\u413f\\u0180npw\\u09d4\\u0a16\\u0a1bg\\u0200LRlr\\u09de\\u09f7\\u0a02\\u0a10eft\\u0100AR\\u09e6\\u09ecrrow;\\u67f5ightArrow;\\u67f7ightArrow;\\u67f6eft\\u0100ar\\u03b3\\u0a0aight\\xe1\\u03bfight\\xe1\\u03caf;\\uc000\\ud835\\udd43er\\u0100LR\\u0a22\\u0a2ceftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0a3e\\u0a40\\u0a42\\xf2\\u084c;\\u61b0rok;\\u4141;\\u626a\\u0400acefiosu\\u0a5a\\u0a5d\\u0a60\\u0a77\\u0a7c\\u0a85\\u0a8b\\u0a8ep;\\u6905y;\\u441c\\u0100dl\\u0a65\\u0a6fiumSpace;\\u605flintrf;\\u6133r;\\uc000\\ud835\\udd10nusPlus;\\u6213pf;\\uc000\\ud835\\udd44c\\xf2\\u0a76;\\u439c\\u0480Jacefostu\\u0aa3\\u0aa7\\u0aad\\u0ac0\\u0b14\\u0b19\\u0d91\\u0d97\\u0d9ecy;\\u440acute;\\u4143\\u0180aey\\u0ab4\\u0ab9\\u0aberon;\\u4147dil;\\u4145;\\u441d\\u0180gsw\\u0ac7\\u0af0\\u0b0eative\\u0180MTV\\u0ad3\\u0adf\\u0ae8ediumSpace;\\u600bhi\\u0100cn\\u0ae6\\u0ad8\\xeb\\u0ad9eryThi\\xee\\u0ad9ted\\u0100GL\\u0af8\\u0b06reaterGreate\\xf2\\u0673essLes\\xf3\\u0a48Line;\\u400ar;\\uc000\\ud835\\udd11\\u0200Bnpt\\u0b22\\u0b28\\u0b37\\u0b3areak;\\u6060BreakingSpace;\\u40a0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0b55\\u0b56\\u0b6a\\u0b7c\\u0ba1\\u0beb\\u0c04\\u0c5e\\u0c84\\u0ca6\\u0cd8\\u0d61\\u0d85\\u6aec\\u0100ou\\u0b5b\\u0b64ngruent;\\u6262pCap;\\u626doubleVerticalBar;\\u6226\\u0180lqx\\u0b83\\u0b8a\\u0b9bement;\\u6209ual\\u0100;T\\u0b92\\u0b93\\u6260ilde;\\uc000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0bb6\\u0bb7\\u0bbd\\u0bc9\\u0bd3\\u0bd8\\u0be5\\u626fqual;\\u6271ullEqual;\\uc000\\u2267\\u0338reater;\\uc000\\u226b\\u0338ess;\\u6279lantEqual;\\uc000\\u2a7e\\u0338ilde;\\u6275ump\\u0144\\u0bf2\\u0bfdownHump;\\uc000\\u224e\\u0338qual;\\uc000\\u224f\\u0338e\\u0100fs\\u0c0a\\u0c27tTriangle\\u0180;BE\\u0c1a\\u0c1b\\u0c21\\u62eaar;\\uc000\\u29cf\\u0338qual;\\u62ecs\\u0300;EGLST\\u0c35\\u0c36\\u0c3c\\u0c44\\u0c4b\\u0c58\\u626equal;\\u6270reater;\\u6278ess;\\uc000\\u226a\\u0338lantEqual;\\uc000\\u2a7d\\u0338ilde;\\u6274ested\\u0100GL\\u0c68\\u0c79reaterGreater;\\uc000\\u2aa2\\u0338essLess;\\uc000\\u2aa1\\u0338recedes\\u0180;ES\\u0c92\\u0c93\\u0c9b\\u6280qual;\\uc000\\u2aaf\\u0338lantEqual;\\u62e0\\u0100ei\\u0cab\\u0cb9verseElement;\\u620cghtTriangle\\u0180;BE\\u0ccb\\u0ccc\\u0cd2\\u62ebar;\\uc000\\u29d0\\u0338qual;\\u62ed\\u0100qu\\u0cdd\\u0d0cuareSu\\u0100bp\\u0ce8\\u0cf9set\\u0100;E\\u0cf0\\u0cf3\\uc000\\u228f\\u0338qual;\\u62e2erset\\u0100;E\\u0d03\\u0d06\\uc000\\u2290\\u0338qual;\\u62e3\\u0180bcp\\u0d13\\u0d24\\u0d4eset\\u0100;E\\u0d1b\\u0d1e\\uc000\\u2282\\u20d2qual;\\u6288ceeds\\u0200;EST\\u0d32\\u0d33\\u0d3b\\u0d46\\u6281qual;\\uc000\\u2ab0\\u0338lantEqual;\\u62e1ilde;\\uc000\\u227f\\u0338erset\\u0100;E\\u0d58\\u0d5b\\uc000\\u2283\\u20d2qual;\\u6289ilde\\u0200;EFT\\u0d6e\\u0d6f\\u0d75\\u0d7f\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uc000\\ud835\\udca9ilde\\u803b\\xd1\\u40d1;\\u439d\\u0700Eacdfgmoprstuv\\u0dbd\\u0dc2\\u0dc9\\u0dd5\\u0ddb\\u0de0\\u0de7\\u0dfc\\u0e02\\u0e20\\u0e22\\u0e32\\u0e3f\\u0e44lig;\\u4152cute\\u803b\\xd3\\u40d3\\u0100iy\\u0dce\\u0dd3rc\\u803b\\xd4\\u40d4;\\u441eblac;\\u4150r;\\uc000\\ud835\\udd12rave\\u803b\\xd2\\u40d2\\u0180aei\\u0dee\\u0df2\\u0df6cr;\\u414cga;\\u43a9cron;\\u439fpf;\\uc000\\ud835\\udd46enCurly\\u0100DQ\\u0e0e\\u0e1aoubleQuote;\\u601cuote;\\u6018;\\u6a54\\u0100cl\\u0e27\\u0e2cr;\\uc000\\ud835\\udcaaash\\u803b\\xd8\\u40d8i\\u016c\\u0e37\\u0e3cde\\u803b\\xd5\\u40d5es;\\u6a37ml\\u803b\\xd6\\u40d6er\\u0100BP\\u0e4b\\u0e60\\u0100ar\\u0e50\\u0e53r;\\u603eac\\u0100ek\\u0e5a\\u0e5c;\\u63deet;\\u63b4arenthesis;\\u63dc\\u0480acfhilors\\u0e7f\\u0e87\\u0e8a\\u0e8f\\u0e92\\u0e94\\u0e9d\\u0eb0\\u0efcrtialD;\\u6202y;\\u441fr;\\uc000\\ud835\\udd13i;\\u43a6;\\u43a0usMinus;\\u40b1\\u0100ip\\u0ea2\\u0eadncareplan\\xe5\\u069df;\\u6119\\u0200;eio\\u0eb9\\u0eba\\u0ee0\\u0ee4\\u6abbcedes\\u0200;EST\\u0ec8\\u0ec9\\u0ecf\\u0eda\\u627aqual;\\u6aaflantEqual;\\u627cilde;\\u627eme;\\u6033\\u0100dp\\u0ee9\\u0eeeuct;\\u620fortion\\u0100;a\\u0225\\u0ef9l;\\u621d\\u0100ci\\u0f01\\u0f06r;\\uc000\\ud835\\udcab;\\u43a8\\u0200Ufos\\u0f11\\u0f16\\u0f1b\\u0f1fOT\\u803b\\\"\\u4022r;\\uc000\\ud835\\udd14pf;\\u611acr;\\uc000\\ud835\\udcac\\u0600BEacefhiorsu\\u0f3e\\u0f43\\u0f47\\u0f60\\u0f73\\u0fa7\\u0faa\\u0fad\\u1096\\u10a9\\u10b4\\u10bearr;\\u6910G\\u803b\\xae\\u40ae\\u0180cnr\\u0f4e\\u0f53\\u0f56ute;\\u4154g;\\u67ebr\\u0100;t\\u0f5c\\u0f5d\\u61a0l;\\u6916\\u0180aey\\u0f67\\u0f6c\\u0f71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0f78\\u0f79\\u611cerse\\u0100EU\\u0f82\\u0f99\\u0100lq\\u0f87\\u0f8eement;\\u620builibrium;\\u61cbpEquilibrium;\\u696fr\\xbb\\u0f79o;\\u43a1ght\\u0400ACDFTUVa\\u0fc1\\u0feb\\u0ff3\\u1022\\u1028\\u105b\\u1087\\u03d8\\u0100nr\\u0fc6\\u0fd2gleBracket;\\u67e9row\\u0180;BL\\u0fdc\\u0fdd\\u0fe1\\u6192ar;\\u61e5eftArrow;\\u61c4eiling;\\u6309o\\u01f5\\u0ff9\\0\\u1005bleBracket;\\u67e7n\\u01d4\\u100a\\0\\u1014eeVector;\\u695dector\\u0100;B\\u101d\\u101e\\u61c2ar;\\u6955loor;\\u630b\\u0100er\\u102d\\u1043e\\u0180;AV\\u1035\\u1036\\u103c\\u62a2rrow;\\u61a6ector;\\u695biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62b3ar;\\u69d0qual;\\u62b5p\\u0180DTV\\u1063\\u106e\\u1078ownVector;\\u694feeVector;\\u695cector\\u0100;B\\u1082\\u1083\\u61bear;\\u6954ector\\u0100;B\\u1091\\u1092\\u61c0ar;\\u6953\\u0100pu\\u109b\\u109ef;\\u611dndImplies;\\u6970ightarrow;\\u61db\\u0100ch\\u10b9\\u10bcr;\\u611b;\\u61b1leDelayed;\\u69f4\\u0680HOacfhimoqstu\\u10e4\\u10f1\\u10f7\\u10fd\\u1119\\u111e\\u1151\\u1156\\u1161\\u1167\\u11b5\\u11bb\\u11bf\\u0100Cc\\u10e9\\u10eeHcy;\\u4429y;\\u4428FTcy;\\u442ccute;\\u415a\\u0280;aeiy\\u1108\\u1109\\u110e\\u1113\\u1117\\u6abcron;\\u4160dil;\\u415erc;\\u415c;\\u4421r;\\uc000\\ud835\\udd16ort\\u0200DLRU\\u112a\\u1134\\u113e\\u1149ownArrow\\xbb\\u041eeftArrow\\xbb\\u089aightArrow\\xbb\\u0fddpArrow;\\u6191gma;\\u43a3allCircle;\\u6218pf;\\uc000\\ud835\\udd4a\\u0272\\u116d\\0\\0\\u1170t;\\u621aare\\u0200;ISU\\u117b\\u117c\\u1189\\u11af\\u65a1ntersection;\\u6293u\\u0100bp\\u118f\\u119eset\\u0100;E\\u1197\\u1198\\u628fqual;\\u6291erset\\u0100;E\\u11a8\\u11a9\\u6290qual;\\u6292nion;\\u6294cr;\\uc000\\ud835\\udcaear;\\u62c6\\u0200bcmp\\u11c8\\u11db\\u1209\\u120b\\u0100;s\\u11cd\\u11ce\\u62d0et\\u0100;E\\u11cd\\u11d5qual;\\u6286\\u0100ch\\u11e0\\u1205eeds\\u0200;EST\\u11ed\\u11ee\\u11f4\\u11ff\\u627bqual;\\u6ab0lantEqual;\\u627dilde;\\u627fTh\\xe1\\u0f8c;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62d1rset\\u0100;E\\u121c\\u121d\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123e\\u1244\\u1249\\u1255\\u125e\\u1271\\u1276\\u129f\\u12c2\\u12c8\\u12d1ORN\\u803b\\xde\\u40deADE;\\u6122\\u0100Hc\\u124e\\u1252cy;\\u440by;\\u4426\\u0100bu\\u125a\\u125c;\\u4009;\\u43a4\\u0180aey\\u1265\\u126a\\u126fron;\\u4164dil;\\u4162;\\u4422r;\\uc000\\ud835\\udd17\\u0100ei\\u127b\\u1289\\u01f2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128e\\u1298kSpace;\\uc000\\u205f\\u200aSpace;\\u6009lde\\u0200;EFT\\u12ab\\u12ac\\u12b2\\u12bc\\u623cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uc000\\ud835\\udd4bipleDot;\\u60db\\u0100ct\\u12d6\\u12dbr;\\uc000\\ud835\\udcafrok;\\u4166\\u0ae1\\u12f7\\u130e\\u131a\\u1326\\0\\u132c\\u1331\\0\\0\\0\\0\\0\\u1338\\u133d\\u1377\\u1385\\0\\u13ff\\u1404\\u140a\\u1410\\u0100cr\\u12fb\\u1301ute\\u803b\\xda\\u40dar\\u0100;o\\u1307\\u1308\\u619fcir;\\u6949r\\u01e3\\u1313\\0\\u1316y;\\u440eve;\\u416c\\u0100iy\\u131e\\u1323rc\\u803b\\xdb\\u40db;\\u4423blac;\\u4170r;\\uc000\\ud835\\udd18rave\\u803b\\xd9\\u40d9acr;\\u416a\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135d\\u0100ar\\u134d\\u1350r;\\u405fac\\u0100ek\\u1357\\u1359;\\u63dfet;\\u63b5arenthesis;\\u63ddon\\u0100;P\\u1370\\u1371\\u62c3lus;\\u628e\\u0100gp\\u137b\\u137fon;\\u4172f;\\uc000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13ae\\u13b8\\u13c4\\u03e8\\u13d2\\u13d7\\u13f3rrow\\u0180;BD\\u1150\\u13a0\\u13a4ar;\\u6912ownArrow;\\u61c5ownArrow;\\u6195quilibrium;\\u696eee\\u0100;A\\u13cb\\u13cc\\u62a5rrow;\\u61a5own\\xe1\\u03f3er\\u0100LR\\u13de\\u13e8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13f9\\u13fa\\u43d2on;\\u43a5ing;\\u416ecr;\\uc000\\ud835\\udcb0ilde;\\u4168ml\\u803b\\xdc\\u40dc\\u0480Dbcdefosv\\u1427\\u142c\\u1430\\u1433\\u143e\\u1485\\u148a\\u1490\\u1496ash;\\u62abar;\\u6aeby;\\u4412ash\\u0100;l\\u143b\\u143c\\u62a9;\\u6ae6\\u0100er\\u1443\\u1445;\\u62c1\\u0180bty\\u144c\\u1450\\u147aar;\\u6016\\u0100;i\\u144f\\u1455cal\\u0200BLST\\u1461\\u1465\\u146a\\u1474ar;\\u6223ine;\\u407ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600ar;\\uc000\\ud835\\udd19pf;\\uc000\\ud835\\udd4dcr;\\uc000\\ud835\\udcb1dash;\\u62aa\\u0280cefos\\u14a7\\u14ac\\u14b1\\u14b6\\u14bcirc;\\u4174dge;\\u62c0r;\\uc000\\ud835\\udd1apf;\\uc000\\ud835\\udd4ecr;\\uc000\\ud835\\udcb2\\u0200fios\\u14cb\\u14d0\\u14d2\\u14d8r;\\uc000\\ud835\\udd1b;\\u439epf;\\uc000\\ud835\\udd4fcr;\\uc000\\ud835\\udcb3\\u0480AIUacfosu\\u14f1\\u14f5\\u14f9\\u14fd\\u1504\\u150f\\u1514\\u151a\\u1520cy;\\u442fcy;\\u4407cy;\\u442ecute\\u803b\\xdd\\u40dd\\u0100iy\\u1509\\u150drc;\\u4176;\\u442br;\\uc000\\ud835\\udd1cpf;\\uc000\\ud835\\udd50cr;\\uc000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153f\\u154b\\u154f\\u155d\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417d;\\u4417ot;\\u417b\\u01f2\\u1554\\0\\u155boWidt\\xe8\\u0ad9a;\\u4396r;\\u6128pf;\\u6124cr;\\uc000\\ud835\\udcb5\\u0be1\\u1583\\u158a\\u1590\\0\\u15b0\\u15b6\\u15bf\\0\\0\\0\\0\\u15c6\\u15db\\u15eb\\u165f\\u166d\\0\\u1695\\u169b\\u16b2\\u16b9\\0\\u16becute\\u803b\\xe1\\u40e1reve;\\u4103\\u0300;Ediuy\\u159c\\u159d\\u15a1\\u15a3\\u15a8\\u15ad\\u623e;\\uc000\\u223e\\u0333;\\u623frc\\u803b\\xe2\\u40e2te\\u80bb\\xb4\\u0306;\\u4430lig\\u803b\\xe6\\u40e6\\u0100;r\\xb2\\u15ba;\\uc000\\ud835\\udd1erave\\u803b\\xe0\\u40e0\\u0100ep\\u15ca\\u15d6\\u0100fp\\u15cf\\u15d4sym;\\u6135\\xe8\\u15d3ha;\\u43b1\\u0100ap\\u15dfc\\u0100cl\\u15e4\\u15e7r;\\u4101g;\\u6a3f\\u0264\\u15f0\\0\\0\\u160a\\u0280;adsv\\u15fa\\u15fb\\u15ff\\u1601\\u1607\\u6227nd;\\u6a55;\\u6a5clope;\\u6a58;\\u6a5a\\u0380;elmrsz\\u1618\\u1619\\u161b\\u161e\\u163f\\u164f\\u1659\\u6220;\\u69a4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163a\\u163c\\u163e;\\u69a8;\\u69a9;\\u69aa;\\u69ab;\\u69ac;\\u69ad;\\u69ae;\\u69aft\\u0100;v\\u1645\\u1646\\u621fb\\u0100;d\\u164c\\u164d\\u62be;\\u699d\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637c\\u0100gp\\u1663\\u1667on;\\u4105f;\\uc000\\ud835\\udd52\\u0380;Eaeiop\\u12c1\\u167b\\u167d\\u1682\\u1684\\u1687\\u168a;\\u6a70cir;\\u6a6f;\\u624ad;\\u624bs;\\u4027rox\\u0100;e\\u12c1\\u1692\\xf1\\u1683ing\\u803b\\xe5\\u40e5\\u0180cty\\u16a1\\u16a6\\u16a8r;\\uc000\\ud835\\udcb6;\\u402amp\\u0100;e\\u12c1\\u16af\\xf1\\u0288ilde\\u803b\\xe3\\u40e3ml\\u803b\\xe4\\u40e4\\u0100ci\\u16c2\\u16c8onin\\xf4\\u0272nt;\\u6a11\\u0800Nabcdefiklnoprsu\\u16ed\\u16f1\\u1730\\u173c\\u1743\\u1748\\u1778\\u177d\\u17e0\\u17e6\\u1839\\u1850\\u170d\\u193d\\u1948\\u1970ot;\\u6aed\\u0100cr\\u16f6\\u171ek\\u0200ceps\\u1700\\u1705\\u170d\\u1713ong;\\u624cpsilon;\\u43f6rime;\\u6035im\\u0100;e\\u171a\\u171b\\u623dq;\\u62cd\\u0176\\u1722\\u1726ee;\\u62bded\\u0100;g\\u172c\\u172d\\u6305e\\xbb\\u172drk\\u0100;t\\u135c\\u1737brk;\\u63b6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601e\\u0280cmprt\\u1753\\u175b\\u1761\\u1764\\u1768aus\\u0100;e\\u010a\\u0109ptyv;\\u69b0s\\xe9\\u170cno\\xf5\\u0113\\u0180ahw\\u176f\\u1771\\u1773;\\u43b2;\\u6136een;\\u626cr;\\uc000\\ud835\\udd1fg\\u0380costuvw\\u178d\\u179d\\u17b3\\u17c1\\u17d5\\u17db\\u17de\\u0180aiu\\u1794\\u1796\\u179a\\xf0\\u0760rc;\\u65efp\\xbb\\u1371\\u0180dpt\\u17a4\\u17a8\\u17adot;\\u6a00lus;\\u6a01imes;\\u6a02\\u0271\\u17b9\\0\\0\\u17becup;\\u6a06ar;\\u6605riangle\\u0100du\\u17cd\\u17d2own;\\u65bdp;\\u65b3plus;\\u6a04e\\xe5\\u1444\\xe5\\u14adarow;\\u690d\\u0180ako\\u17ed\\u1826\\u1835\\u0100cn\\u17f2\\u1823k\\u0180lst\\u17fa\\u05ab\\u1802ozenge;\\u69ebriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181d\\u65b4own;\\u65beeft;\\u65c2ight;\\u65b8k;\\u6423\\u01b1\\u182b\\0\\u1833\\u01b2\\u182f\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183e\\u184d\\u0100;q\\u1843\\u1846\\uc000=\\u20e5uiv;\\uc000\\u2261\\u20e5t;\\u6310\\u0200ptwx\\u1859\\u185e\\u1867\\u186cf;\\uc000\\ud835\\udd53\\u0100;t\\u13cb\\u1863om\\xbb\\u13cctie;\\u62c8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18aa\\u18bb\\u18d7\\u18db\\u18ec\\u18ff\\u1905\\u190a\\u1910\\u1921\\u0200LRlr\\u188e\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18a1\\u18a2\\u18a4\\u18a6\\u18a8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18b3\\u18b5\\u18b7\\u18b9;\\u655d;\\u655a;\\u655c;\\u6559\\u0380;HLRhlr\\u18ca\\u18cb\\u18cd\\u18cf\\u18d1\\u18d3\\u18d5\\u6551;\\u656c;\\u6563;\\u6560;\\u656b;\\u6562;\\u655fox;\\u69c9\\u0200LRlr\\u18e4\\u18e6\\u18e8\\u18ea;\\u6555;\\u6552;\\u6510;\\u650c\\u0280;DUdu\\u06bd\\u18f7\\u18f9\\u18fb\\u18fd;\\u6565;\\u6568;\\u652c;\\u6534inus;\\u629flus;\\u629eimes;\\u62a0\\u0200LRlr\\u1919\\u191b\\u191d\\u191f;\\u655b;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193b\\u6502;\\u656a;\\u6561;\\u655e;\\u653c;\\u6524;\\u651c\\u0100ev\\u0123\\u1942bar\\u803b\\xa6\\u40a6\\u0200ceio\\u1951\\u1956\\u195a\\u1960r;\\uc000\\ud835\\udcb7mi;\\u604fm\\u0100;e\\u171a\\u171cl\\u0180;bh\\u1968\\u1969\\u196b\\u405c;\\u69c5sub;\\u67c8\\u016c\\u1974\\u197el\\u0100;e\\u1979\\u197a\\u6022t\\xbb\\u197ap\\u0180;Ee\\u012f\\u1985\\u1987;\\u6aae\\u0100;q\\u06dc\\u06db\\u0ce1\\u19a7\\0\\u19e8\\u1a11\\u1a15\\u1a32\\0\\u1a37\\u1a50\\0\\0\\u1ab4\\0\\0\\u1ac1\\0\\0\\u1b21\\u1b2e\\u1b4d\\u1b52\\0\\u1bfd\\0\\u1c0c\\u0180cpr\\u19ad\\u19b2\\u19ddute;\\u4107\\u0300;abcds\\u19bf\\u19c0\\u19c4\\u19ca\\u19d5\\u19d9\\u6229nd;\\u6a44rcup;\\u6a49\\u0100au\\u19cf\\u19d2p;\\u6a4bp;\\u6a47ot;\\u6a40;\\uc000\\u2229\\ufe00\\u0100eo\\u19e2\\u19e5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19f0\\u19fb\\u1a01\\u1a05\\u01f0\\u19f5\\0\\u19f8s;\\u6a4don;\\u410ddil\\u803b\\xe7\\u40e7rc;\\u4109ps\\u0100;s\\u1a0c\\u1a0d\\u6a4cm;\\u6a50ot;\\u410b\\u0180dmn\\u1a1b\\u1a20\\u1a26il\\u80bb\\xb8\\u01adptyv;\\u69b2t\\u8100\\xa2;e\\u1a2d\\u1a2e\\u40a2r\\xe4\\u01b2r;\\uc000\\ud835\\udd20\\u0180cei\\u1a3d\\u1a40\\u1a4dy;\\u4447ck\\u0100;m\\u1a47\\u1a48\\u6713ark\\xbb\\u1a48;\\u43c7r\\u0380;Ecefms\\u1a5f\\u1a60\\u1a62\\u1a6b\\u1aa4\\u1aaa\\u1aae\\u65cb;\\u69c3\\u0180;el\\u1a69\\u1a6a\\u1a6d\\u42c6q;\\u6257e\\u0261\\u1a74\\0\\0\\u1a88rrow\\u0100lr\\u1a7c\\u1a81eft;\\u61baight;\\u61bb\\u0280RSacd\\u1a92\\u1a94\\u1a96\\u1a9a\\u1a9f\\xbb\\u0f47;\\u64c8st;\\u629birc;\\u629aash;\\u629dnint;\\u6a10id;\\u6aefcir;\\u69c2ubs\\u0100;u\\u1abb\\u1abc\\u6663it\\xbb\\u1abc\\u02ec\\u1ac7\\u1ad4\\u1afa\\0\\u1b0aon\\u0100;e\\u1acd\\u1ace\\u403a\\u0100;q\\xc7\\xc6\\u026d\\u1ad9\\0\\0\\u1ae2a\\u0100;t\\u1ade\\u1adf\\u402c;\\u4040\\u0180;fl\\u1ae8\\u1ae9\\u1aeb\\u6201\\xee\\u1160e\\u0100mx\\u1af1\\u1af6ent\\xbb\\u1ae9e\\xf3\\u024d\\u01e7\\u1afe\\0\\u1b07\\u0100;d\\u12bb\\u1b02ot;\\u6a6dn\\xf4\\u0246\\u0180fry\\u1b10\\u1b14\\u1b17;\\uc000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1b1dr;\\u6117\\u0100ao\\u1b25\\u1b29rr;\\u61b5ss;\\u6717\\u0100cu\\u1b32\\u1b37r;\\uc000\\ud835\\udcb8\\u0100bp\\u1b3c\\u1b44\\u0100;e\\u1b41\\u1b42\\u6acf;\\u6ad1\\u0100;e\\u1b49\\u1b4a\\u6ad0;\\u6ad2dot;\\u62ef\\u0380delprvw\\u1b60\\u1b6c\\u1b77\\u1b82\\u1bac\\u1bd4\\u1bf9arr\\u0100lr\\u1b68\\u1b6a;\\u6938;\\u6935\\u0270\\u1b72\\0\\0\\u1b75r;\\u62dec;\\u62dfarr\\u0100;p\\u1b7f\\u1b80\\u61b6;\\u693d\\u0300;bcdos\\u1b8f\\u1b90\\u1b96\\u1ba1\\u1ba5\\u1ba8\\u622arcap;\\u6a48\\u0100au\\u1b9b\\u1b9ep;\\u6a46p;\\u6a4aot;\\u628dr;\\u6a45;\\uc000\\u222a\\ufe00\\u0200alrv\\u1bb5\\u1bbf\\u1bde\\u1be3rr\\u0100;m\\u1bbc\\u1bbd\\u61b7;\\u693cy\\u0180evw\\u1bc7\\u1bd4\\u1bd8q\\u0270\\u1bce\\0\\0\\u1bd2re\\xe3\\u1b73u\\xe3\\u1b75ee;\\u62ceedge;\\u62cfen\\u803b\\xa4\\u40a4earrow\\u0100lr\\u1bee\\u1bf3eft\\xbb\\u1b80ight\\xbb\\u1bbde\\xe4\\u1bdd\\u0100ci\\u1c01\\u1c07onin\\xf4\\u01f7nt;\\u6231lcty;\\u632d\\u0980AHabcdefhijlorstuwz\\u1c38\\u1c3b\\u1c3f\\u1c5d\\u1c69\\u1c75\\u1c8a\\u1c9e\\u1cac\\u1cb7\\u1cfb\\u1cff\\u1d0d\\u1d7b\\u1d91\\u1dab\\u1dbb\\u1dc6\\u1dcdr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1c48\\u1c4d\\u1c52\\u1c54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1c5a\\u1c5b\\u6010\\xbb\\u090a\\u016b\\u1c61\\u1c67arow;\\u690fa\\xe3\\u0315\\u0100ay\\u1c6e\\u1c73ron;\\u410f;\\u4434\\u0180;ao\\u0332\\u1c7c\\u1c84\\u0100gr\\u02bf\\u1c81r;\\u61catseq;\\u6a77\\u0180glm\\u1c91\\u1c94\\u1c98\\u803b\\xb0\\u40b0ta;\\u43b4ptyv;\\u69b1\\u0100ir\\u1ca3\\u1ca8sht;\\u697f;\\uc000\\ud835\\udd21ar\\u0100lr\\u1cb3\\u1cb5\\xbb\\u08dc\\xbb\\u101e\\u0280aegsv\\u1cc2\\u0378\\u1cd6\\u1cdc\\u1ce0m\\u0180;os\\u0326\\u1cca\\u1cd4nd\\u0100;s\\u0326\\u1cd1uit;\\u6666amma;\\u43ddin;\\u62f2\\u0180;io\\u1ce7\\u1ce8\\u1cf8\\u40f7de\\u8100\\xf7;o\\u1ce7\\u1cf0ntimes;\\u62c7n\\xf8\\u1cf7cy;\\u4452c\\u026f\\u1d06\\0\\0\\u1d0arn;\\u631eop;\\u630d\\u0280lptuw\\u1d18\\u1d1d\\u1d22\\u1d49\\u1d55lar;\\u4024f;\\uc000\\ud835\\udd55\\u0280;emps\\u030b\\u1d2d\\u1d37\\u1d3d\\u1d42q\\u0100;d\\u0352\\u1d33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62a1blebarwedg\\xe5\\xfan\\u0180adh\\u112e\\u1d5d\\u1d67ownarrow\\xf3\\u1c83arpoon\\u0100lr\\u1d72\\u1d76ef\\xf4\\u1cb4igh\\xf4\\u1cb6\\u0162\\u1d7f\\u1d85karo\\xf7\\u0f42\\u026f\\u1d8a\\0\\0\\u1d8ern;\\u631fop;\\u630c\\u0180cot\\u1d98\\u1da3\\u1da6\\u0100ry\\u1d9d\\u1da1;\\uc000\\ud835\\udcb9;\\u4455l;\\u69f6rok;\\u4111\\u0100dr\\u1db0\\u1db4ot;\\u62f1i\\u0100;f\\u1dba\\u1816\\u65bf\\u0100ah\\u1dc0\\u1dc3r\\xf2\\u0429a\\xf2\\u0fa6angle;\\u69a6\\u0100ci\\u1dd2\\u1dd5y;\\u445fgrarr;\\u67ff\\u0900Dacdefglmnopqrstux\\u1e01\\u1e09\\u1e19\\u1e38\\u0578\\u1e3c\\u1e49\\u1e61\\u1e7e\\u1ea5\\u1eaf\\u1ebd\\u1ee1\\u1f2a\\u1f37\\u1f44\\u1f4e\\u1f5a\\u0100Do\\u1e06\\u1d34o\\xf4\\u1c89\\u0100cs\\u1e0e\\u1e14ute\\u803b\\xe9\\u40e9ter;\\u6a6e\\u0200aioy\\u1e22\\u1e27\\u1e31\\u1e36ron;\\u411br\\u0100;c\\u1e2d\\u1e2e\\u6256\\u803b\\xea\\u40ealon;\\u6255;\\u444dot;\\u4117\\u0100Dr\\u1e41\\u1e45ot;\\u6252;\\uc000\\ud835\\udd22\\u0180;rs\\u1e50\\u1e51\\u1e57\\u6a9aave\\u803b\\xe8\\u40e8\\u0100;d\\u1e5c\\u1e5d\\u6a96ot;\\u6a98\\u0200;ils\\u1e6a\\u1e6b\\u1e72\\u1e74\\u6a99nters;\\u63e7;\\u6113\\u0100;d\\u1e79\\u1e7a\\u6a95ot;\\u6a97\\u0180aps\\u1e85\\u1e89\\u1e97cr;\\u4113ty\\u0180;sv\\u1e92\\u1e93\\u1e95\\u6205et\\xbb\\u1e93p\\u01001;\\u1e9d\\u1ea4\\u0133\\u1ea1\\u1ea3;\\u6004;\\u6005\\u6003\\u0100gs\\u1eaa\\u1eac;\\u414bp;\\u6002\\u0100gp\\u1eb4\\u1eb8on;\\u4119f;\\uc000\\ud835\\udd56\\u0180als\\u1ec4\\u1ece\\u1ed2r\\u0100;s\\u1eca\\u1ecb\\u62d5l;\\u69e3us;\\u6a71i\\u0180;lv\\u1eda\\u1edb\\u1edf\\u43b5on\\xbb\\u1edb;\\u43f5\\u0200csuv\\u1eea\\u1ef3\\u1f0b\\u1f23\\u0100io\\u1eef\\u1e31rc\\xbb\\u1e2e\\u0269\\u1ef9\\0\\0\\u1efb\\xed\\u0548ant\\u0100gl\\u1f02\\u1f06tr\\xbb\\u1e5dess\\xbb\\u1e7a\\u0180aei\\u1f12\\u1f16\\u1f1als;\\u403dst;\\u625fv\\u0100;D\\u0235\\u1f20D;\\u6a78parsl;\\u69e5\\u0100Da\\u1f2f\\u1f33ot;\\u6253rr;\\u6971\\u0180cdi\\u1f3e\\u1f41\\u1ef8r;\\u612fo\\xf4\\u0352\\u0100ah\\u1f49\\u1f4b;\\u43b7\\u803b\\xf0\\u40f0\\u0100mr\\u1f53\\u1f57l\\u803b\\xeb\\u40ebo;\\u60ac\\u0180cip\\u1f61\\u1f64\\u1f67l;\\u4021s\\xf4\\u056e\\u0100eo\\u1f6c\\u1f74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09e1\\u1f92\\0\\u1f9e\\0\\u1fa1\\u1fa7\\0\\0\\u1fc6\\u1fcc\\0\\u1fd3\\0\\u1fe6\\u1fea\\u2000\\0\\u2008\\u205allingdotse\\xf1\\u1e44y;\\u4444male;\\u6640\\u0180ilr\\u1fad\\u1fb3\\u1fc1lig;\\u8000\\ufb03\\u0269\\u1fb9\\0\\0\\u1fbdg;\\u8000\\ufb00ig;\\u8000\\ufb04;\\uc000\\ud835\\udd23lig;\\u8000\\ufb01lig;\\uc000fj\\u0180alt\\u1fd9\\u1fdc\\u1fe1t;\\u666dig;\\u8000\\ufb02ns;\\u65b1of;\\u4192\\u01f0\\u1fee\\0\\u1ff3f;\\uc000\\ud835\\udd57\\u0100ak\\u05bf\\u1ff7\\u0100;v\\u1ffc\\u1ffd\\u62d4;\\u6ad9artint;\\u6a0d\\u0100ao\\u200c\\u2055\\u0100cs\\u2011\\u2052\\u03b1\\u201a\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03b2\\u2022\\u2025\\u2027\\u202a\\u202c\\0\\u202e\\u803b\\xbd\\u40bd;\\u6153\\u803b\\xbc\\u40bc;\\u6155;\\u6159;\\u615b\\u01b3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02b4\\u203e\\u2041\\0\\0\\u2043\\u803b\\xbe\\u40be;\\u6157;\\u615c5;\\u6158\\u01b6\\u204c\\0\\u204e;\\u615a;\\u615d8;\\u615el;\\u6044wn;\\u6322cr;\\uc000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209f\\u20a5\\u20b0\\u20b4\\u20f0\\u20f5\\u20fa\\u20ff\\u2103\\u2112\\u2138\\u0317\\u213e\\u2152\\u219e\\u0100;l\\u064d\\u2087;\\u6a8c\\u0180cmp\\u2090\\u2095\\u209dute;\\u41f5ma\\u0100;d\\u209c\\u1cda\\u43b3;\\u6a86reve;\\u411f\\u0100iy\\u20aa\\u20aerc;\\u411d;\\u4433ot;\\u4121\\u0200;lqs\\u063e\\u0642\\u20bd\\u20c9\\u0180;qs\\u063e\\u064c\\u20c4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20d2\\u20d5\\u20e5c;\\u6aa9ot\\u0100;o\\u20dc\\u20dd\\u6a80\\u0100;l\\u20e2\\u20e3\\u6a82;\\u6a84\\u0100;e\\u20ea\\u20ed\\uc000\\u22db\\ufe00s;\\u6a94r;\\uc000\\ud835\\udd24\\u0100;g\\u0673\\u061bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065a\\u210c\\u210e\\u2110;\\u6a92;\\u6aa5;\\u6aa4\\u0200Eaes\\u211b\\u211d\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6a8arox\\xbb\\u2124\\u0100;q\\u212e\\u212f\\u6a88\\u0100;q\\u212e\\u211bim;\\u62e7pf;\\uc000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610am\\u0180;el\\u066b\\u214e\\u2150;\\u6a8e;\\u6a90\\u8300>;cdlqr\\u05ee\\u2160\\u216a\\u216e\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6aa7r;\\u6a7aot;\\u62d7Par;\\u6995uest;\\u6a7c\\u0280adels\\u2184\\u216a\\u2190\\u0656\\u219b\\u01f0\\u2189\\0\\u218epro\\xf8\\u209er;\\u6978q\\u0100lq\\u063f\\u2196les\\xf3\\u2088i\\xed\\u066b\\u0100en\\u21a3\\u21adrtneqq;\\uc000\\u2269\\ufe00\\xc5\\u21aa\\u0500Aabcefkosy\\u21c4\\u21c7\\u21f1\\u21f5\\u21fa\\u2218\\u221d\\u222f\\u2268\\u227dr\\xf2\\u03a0\\u0200ilmr\\u21d0\\u21d4\\u21d7\\u21dbrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06a9\\u0100dr\\u21e0\\u21e4cy;\\u444a\\u0180;cw\\u08f4\\u21eb\\u21efir;\\u6948;\\u61adar;\\u610firc;\\u4125\\u0180alr\\u2201\\u220e\\u2213rts\\u0100;u\\u2209\\u220a\\u6665it\\xbb\\u220alip;\\u6026con;\\u62b9r;\\uc000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223a\\u223e\\u2243\\u225e\\u2263rr;\\u61fftht;\\u623bk\\u0100lr\\u2249\\u2253eftarrow;\\u61a9ightarrow;\\u61aaf;\\uc000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226f\\u2274\\u2278r;\\uc000\\ud835\\udcbdas\\xe8\\u21f4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1c5b\\u0ae1\\u22a3\\0\\u22aa\\0\\u22b8\\u22c5\\u22ce\\0\\u22d5\\u22f3\\0\\0\\u22f8\\u2322\\u2367\\u2362\\u237f\\0\\u2386\\u23aa\\u23b4cute\\u803b\\xed\\u40ed\\u0180;iy\\u0771\\u22b0\\u22b5rc\\u803b\\xee\\u40ee;\\u4438\\u0100cx\\u22bc\\u22bfy;\\u4435cl\\u803b\\xa1\\u40a1\\u0100fr\\u039f\\u22c9;\\uc000\\ud835\\udd26rave\\u803b\\xec\\u40ec\\u0200;ino\\u073e\\u22dd\\u22e9\\u22ee\\u0100in\\u22e2\\u22e6nt;\\u6a0ct;\\u622dfin;\\u69dcta;\\u6129lig;\\u4133\\u0180aop\\u22fe\\u231a\\u231d\\u0180cgt\\u2305\\u2308\\u2317r;\\u412b\\u0180elp\\u071f\\u230f\\u2313in\\xe5\\u078ear\\xf4\\u0720h;\\u4131f;\\u62b7ed;\\u41b5\\u0280;cfot\\u04f4\\u232c\\u2331\\u233d\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621eie;\\u69dddo\\xf4\\u2319\\u0280;celp\\u0757\\u234c\\u2350\\u235b\\u2361al;\\u62ba\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234darhk;\\u6a17rod;\\u6a3c\\u0200cgpt\\u236f\\u2372\\u2376\\u237by;\\u4451on;\\u412ff;\\uc000\\ud835\\udd5aa;\\u43b9uest\\u803b\\xbf\\u40bf\\u0100ci\\u238a\\u238fr;\\uc000\\ud835\\udcben\\u0280;Edsv\\u04f4\\u239b\\u239d\\u23a1\\u04f3;\\u62f9ot;\\u62f5\\u0100;v\\u23a6\\u23a7\\u62f4;\\u62f3\\u0100;i\\u0777\\u23aelde;\\u4129\\u01eb\\u23b8\\0\\u23bccy;\\u4456l\\u803b\\xef\\u40ef\\u0300cfmosu\\u23cc\\u23d7\\u23dc\\u23e1\\u23e7\\u23f5\\u0100iy\\u23d1\\u23d5rc;\\u4135;\\u4439r;\\uc000\\ud835\\udd27ath;\\u4237pf;\\uc000\\ud835\\udd5b\\u01e3\\u23ec\\0\\u23f1r;\\uc000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240b\\u2416\\u2422\\u2427\\u242d\\u2431\\u2435\\u243bppa\\u0100;v\\u2413\\u2414\\u43ba;\\u43f0\\u0100ey\\u241b\\u2420dil;\\u4137;\\u443ar;\\uc000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445cpf;\\uc000\\ud835\\udd5ccr;\\uc000\\ud835\\udcc0\\u0b80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248d\\u2491\\u250e\\u253d\\u255a\\u2580\\u264e\\u265e\\u2665\\u2679\\u267d\\u269a\\u26b2\\u26d8\\u275d\\u2768\\u278b\\u27c0\\u2801\\u2812\\u0180art\\u2477\\u247a\\u247cr\\xf2\\u09c6\\xf2\\u0395ail;\\u691barr;\\u690e\\u0100;g\\u0994\\u248b;\\u6a8bar;\\u6962\\u0963\\u24a5\\0\\u24aa\\0\\u24b1\\0\\0\\0\\0\\0\\u24b5\\u24ba\\0\\u24c6\\u24c8\\u24cd\\0\\u24f9ute;\\u413amptyv;\\u69b4ra\\xee\\u084cbda;\\u43bbg\\u0180;dl\\u088e\\u24c1\\u24c3;\\u6991\\xe5\\u088e;\\u6a85uo\\u803b\\xab\\u40abr\\u0400;bfhlpst\\u0899\\u24de\\u24e6\\u24e9\\u24eb\\u24ee\\u24f1\\u24f5\\u0100;f\\u089d\\u24e3s;\\u691fs;\\u691d\\xeb\\u2252p;\\u61abl;\\u6939im;\\u6973l;\\u61a2\\u0180;ae\\u24ff\\u2500\\u2504\\u6aabil;\\u6919\\u0100;s\\u2509\\u250a\\u6aad;\\uc000\\u2aad\\ufe00\\u0180abr\\u2515\\u2519\\u251drr;\\u690crk;\\u6772\\u0100ak\\u2522\\u252cc\\u0100ek\\u2528\\u252a;\\u407b;\\u405b\\u0100es\\u2531\\u2533;\\u698bl\\u0100du\\u2539\\u253b;\\u698f;\\u698d\\u0200aeuy\\u2546\\u254b\\u2556\\u2558ron;\\u413e\\u0100di\\u2550\\u2554il;\\u413c\\xec\\u08b0\\xe2\\u2529;\\u443b\\u0200cqrs\\u2563\\u2566\\u256d\\u257da;\\u6936uo\\u0100;r\\u0e19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694bh;\\u61b2\\u0280;fgqs\\u258b\\u258c\\u0989\\u25f3\\u25ff\\u6264t\\u0280ahlrt\\u2598\\u25a4\\u25b7\\u25c2\\u25e8rrow\\u0100;t\\u0899\\u25a1a\\xe9\\u24f6arpoon\\u0100du\\u25af\\u25b4own\\xbb\\u045ap\\xbb\\u0966eftarrows;\\u61c7ight\\u0180ahs\\u25cd\\u25d6\\u25derrow\\u0100;s\\u08f4\\u08a7arpoon\\xf3\\u0f98quigarro\\xf7\\u21f0hreetimes;\\u62cb\\u0180;qs\\u258b\\u0993\\u25falan\\xf4\\u09ac\\u0280;cdgs\\u09ac\\u260a\\u260d\\u261d\\u2628c;\\u6aa8ot\\u0100;o\\u2614\\u2615\\u6a7f\\u0100;r\\u261a\\u261b\\u6a81;\\u6a83\\u0100;e\\u2622\\u2625\\uc000\\u22da\\ufe00s;\\u6a93\\u0280adegs\\u2633\\u2639\\u263d\\u2649\\u264bppro\\xf8\\u24c6ot;\\u62d6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248c\\xf4\\u099bi\\xed\\u09b2\\u0180ilr\\u2655\\u08e1\\u265asht;\\u697c;\\uc000\\ud835\\udd29\\u0100;E\\u099c\\u2663;\\u6a91\\u0161\\u2669\\u2676r\\u0100du\\u25b2\\u266e\\u0100;l\\u0965\\u2673;\\u696alk;\\u6584cy;\\u4459\\u0280;acht\\u0a48\\u2688\\u268b\\u2691\\u2696r\\xf2\\u25c1orne\\xf2\\u1d08ard;\\u696bri;\\u65fa\\u0100io\\u269f\\u26a4dot;\\u4140ust\\u0100;a\\u26ac\\u26ad\\u63b0che\\xbb\\u26ad\\u0200Eaes\\u26bb\\u26bd\\u26c9\\u26d4;\\u6268p\\u0100;p\\u26c3\\u26c4\\u6a89rox\\xbb\\u26c4\\u0100;q\\u26ce\\u26cf\\u6a87\\u0100;q\\u26ce\\u26bbim;\\u62e6\\u0400abnoptwz\\u26e9\\u26f4\\u26f7\\u271a\\u272f\\u2741\\u2747\\u2750\\u0100nr\\u26ee\\u26f1g;\\u67ecr;\\u61fdr\\xeb\\u08c1g\\u0180lmr\\u26ff\\u270d\\u2714eft\\u0100ar\\u09e6\\u2707ight\\xe1\\u09f2apsto;\\u67fcight\\xe1\\u09fdparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24edight;\\u61ac\\u0180afl\\u2736\\u2739\\u273dr;\\u6985;\\uc000\\ud835\\udd5dus;\\u6a2dimes;\\u6a34\\u0161\\u274b\\u274fst;\\u6217\\xe1\\u134e\\u0180;ef\\u2757\\u2758\\u1800\\u65cange\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277c\\u2785\\u2787r\\xf2\\u08a8orne\\xf2\\u1d8car\\u0100;d\\u0f98\\u2783;\\u696d;\\u600eri;\\u62bf\\u0300achiqt\\u2798\\u279d\\u0a40\\u27a2\\u27ae\\u27bbquo;\\u6039r;\\uc000\\ud835\\udcc1m\\u0180;eg\\u09b2\\u27aa\\u27ac;\\u6a8d;\\u6a8f\\u0100bu\\u252a\\u27b3o\\u0100;r\\u0e1f\\u27b9;\\u601arok;\\u4142\\u8400<;cdhilqr\\u082b\\u27d2\\u2639\\u27dc\\u27e0\\u27e5\\u27ea\\u27f0\\u0100ci\\u27d7\\u27d9;\\u6aa6r;\\u6a79re\\xe5\\u25f2mes;\\u62c9arr;\\u6976uest;\\u6a7b\\u0100Pi\\u27f5\\u27f9ar;\\u6996\\u0180;ef\\u2800\\u092d\\u181b\\u65c3r\\u0100du\\u2807\\u280dshar;\\u694ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uc000\\u2268\\ufe00\\xc5\\u281e\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288e\\u2893\\u28a0\\u28a5\\u28a8\\u28da\\u28e2\\u28e4\\u0a83\\u28f3\\u2902Dot;\\u623a\\u0200clpr\\u284e\\u2852\\u2863\\u287dr\\u803b\\xaf\\u40af\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285e\\u285f\\u6720se\\xbb\\u285f\\u0100;s\\u103b\\u2868to\\u0200;dlu\\u103b\\u2873\\u2877\\u287bow\\xee\\u048cef\\xf4\\u090f\\xf0\\u13d1ker;\\u65ae\\u0100oy\\u2887\\u288cmma;\\u6a29;\\u443cash;\\u6014asuredangle\\xbb\\u1626r;\\uc000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28af\\u28b4\\u28c9ro\\u803b\\xb5\\u40b5\\u0200;acd\\u1464\\u28bd\\u28c0\\u28c4s\\xf4\\u16a7ir;\\u6af0ot\\u80bb\\xb7\\u01b5us\\u0180;bd\\u28d2\\u1903\\u28d3\\u6212\\u0100;u\\u1d3c\\u28d8;\\u6a2a\\u0163\\u28de\\u28e1p;\\u6adb\\xf2\\u2212\\xf0\\u0a81\\u0100dp\\u28e9\\u28eeels;\\u62a7f;\\uc000\\ud835\\udd5e\\u0100ct\\u28f8\\u28fdr;\\uc000\\ud835\\udcc2pos\\xbb\\u159d\\u0180;lm\\u2909\\u290a\\u290d\\u43bctimap;\\u62b8\\u0c00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297e\\u2989\\u2998\\u29da\\u29e9\\u2a15\\u2a1a\\u2a58\\u2a5d\\u2a83\\u2a95\\u2aa4\\u2aa8\\u2b04\\u2b07\\u2b44\\u2b7f\\u2bae\\u2c34\\u2c67\\u2c7c\\u2ce9\\u0100gt\\u2947\\u294b;\\uc000\\u22d9\\u0338\\u0100;v\\u2950\\u0bcf\\uc000\\u226b\\u20d2\\u0180elt\\u295a\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61cdightarrow;\\u61ce;\\uc000\\u22d8\\u0338\\u0100;v\\u297b\\u0c47\\uc000\\u226a\\u20d2ightarrow;\\u61cf\\u0100Dd\\u298e\\u2993ash;\\u62afash;\\u62ae\\u0280bcnpt\\u29a3\\u29a7\\u29ac\\u29b1\\u29ccla\\xbb\\u02deute;\\u4144g;\\uc000\\u2220\\u20d2\\u0280;Eiop\\u0d84\\u29bc\\u29c0\\u29c5\\u29c8;\\uc000\\u2a70\\u0338d;\\uc000\\u224b\\u0338s;\\u4149ro\\xf8\\u0d84ur\\u0100;a\\u29d3\\u29d4\\u666el\\u0100;s\\u29d3\\u0b38\\u01f3\\u29df\\0\\u29e3p\\u80bb\\xa0\\u0b37mp\\u0100;e\\u0bf9\\u0c00\\u0280aeouy\\u29f4\\u29fe\\u2a03\\u2a10\\u2a13\\u01f0\\u29f9\\0\\u29fb;\\u6a43on;\\u4148dil;\\u4146ng\\u0100;d\\u0d7e\\u2a0aot;\\uc000\\u2a6d\\u0338p;\\u6a42;\\u443dash;\\u6013\\u0380;Aadqsx\\u0b92\\u2a29\\u2a2d\\u2a3b\\u2a41\\u2a45\\u2a50rr;\\u61d7r\\u0100hr\\u2a33\\u2a36k;\\u6924\\u0100;o\\u13f2\\u13f0ot;\\uc000\\u2250\\u0338ui\\xf6\\u0b63\\u0100ei\\u2a4a\\u2a4ear;\\u6928\\xed\\u0b98ist\\u0100;s\\u0ba0\\u0b9fr;\\uc000\\ud835\\udd2b\\u0200Eest\\u0bc5\\u2a66\\u2a79\\u2a7c\\u0180;qs\\u0bbc\\u2a6d\\u0be1\\u0180;qs\\u0bbc\\u0bc5\\u2a74lan\\xf4\\u0be2i\\xed\\u0bea\\u0100;r\\u0bb6\\u2a81\\xbb\\u0bb7\\u0180Aap\\u2a8a\\u2a8d\\u2a91r\\xf2\\u2971rr;\\u61aear;\\u6af2\\u0180;sv\\u0f8d\\u2a9c\\u0f8c\\u0100;d\\u2aa1\\u2aa2\\u62fc;\\u62facy;\\u445a\\u0380AEadest\\u2ab7\\u2aba\\u2abe\\u2ac2\\u2ac5\\u2af6\\u2af9r\\xf2\\u2966;\\uc000\\u2266\\u0338rr;\\u619ar;\\u6025\\u0200;fqs\\u0c3b\\u2ace\\u2ae3\\u2aeft\\u0100ar\\u2ad4\\u2ad9rro\\xf7\\u2ac1ightarro\\xf7\\u2a90\\u0180;qs\\u0c3b\\u2aba\\u2aealan\\xf4\\u0c55\\u0100;s\\u0c55\\u2af4\\xbb\\u0c36i\\xed\\u0c5d\\u0100;r\\u0c35\\u2afei\\u0100;e\\u0c1a\\u0c25i\\xe4\\u0d90\\u0100pt\\u2b0c\\u2b11f;\\uc000\\ud835\\udd5f\\u8180\\xac;in\\u2b19\\u2b1a\\u2b36\\u40acn\\u0200;Edv\\u0b89\\u2b24\\u2b28\\u2b2e;\\uc000\\u22f9\\u0338ot;\\uc000\\u22f5\\u0338\\u01e1\\u0b89\\u2b33\\u2b35;\\u62f7;\\u62f6i\\u0100;v\\u0cb8\\u2b3c\\u01e1\\u0cb8\\u2b41\\u2b43;\\u62fe;\\u62fd\\u0180aor\\u2b4b\\u2b63\\u2b69r\\u0200;ast\\u0b7b\\u2b55\\u2b5a\\u2b5flle\\xec\\u0b7bl;\\uc000\\u2afd\\u20e5;\\uc000\\u2202\\u0338lint;\\u6a14\\u0180;ce\\u0c92\\u2b70\\u2b73u\\xe5\\u0ca5\\u0100;c\\u0c98\\u2b78\\u0100;e\\u0c92\\u2b7d\\xf1\\u0c98\\u0200Aait\\u2b88\\u2b8b\\u2b9d\\u2ba7r\\xf2\\u2988rr\\u0180;cw\\u2b94\\u2b95\\u2b99\\u619b;\\uc000\\u2933\\u0338;\\uc000\\u219d\\u0338ghtarrow\\xbb\\u2b95ri\\u0100;e\\u0ccb\\u0cd6\\u0380chimpqu\\u2bbd\\u2bcd\\u2bd9\\u2b04\\u0b78\\u2be4\\u2bef\\u0200;cer\\u0d32\\u2bc6\\u0d37\\u2bc9u\\xe5\\u0d45;\\uc000\\ud835\\udcc3ort\\u026d\\u2b05\\0\\0\\u2bd6ar\\xe1\\u2b56m\\u0100;e\\u0d6e\\u2bdf\\u0100;q\\u0d74\\u0d73su\\u0100bp\\u2beb\\u2bed\\xe5\\u0cf8\\xe5\\u0d0b\\u0180bcp\\u2bf6\\u2c11\\u2c19\\u0200;Ees\\u2bff\\u2c00\\u0d22\\u2c04\\u6284;\\uc000\\u2ac5\\u0338et\\u0100;e\\u0d1b\\u2c0bq\\u0100;q\\u0d23\\u2c00c\\u0100;e\\u0d32\\u2c17\\xf1\\u0d38\\u0200;Ees\\u2c22\\u2c23\\u0d5f\\u2c27\\u6285;\\uc000\\u2ac6\\u0338et\\u0100;e\\u0d58\\u2c2eq\\u0100;q\\u0d60\\u2c23\\u0200gilr\\u2c3d\\u2c3f\\u2c45\\u2c47\\xec\\u0bd7lde\\u803b\\xf1\\u40f1\\xe7\\u0c43iangle\\u0100lr\\u2c52\\u2c5ceft\\u0100;e\\u0c1a\\u2c5a\\xf1\\u0c26ight\\u0100;e\\u0ccb\\u2c65\\xf1\\u0cd7\\u0100;m\\u2c6c\\u2c6d\\u43bd\\u0180;es\\u2c74\\u2c75\\u2c79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2c8f\\u2c94\\u2c99\\u2c9e\\u2ca3\\u2cb0\\u2cb6\\u2cd3\\u2ce3ash;\\u62adarr;\\u6904p;\\uc000\\u224d\\u20d2ash;\\u62ac\\u0100et\\u2ca8\\u2cac;\\uc000\\u2265\\u20d2;\\uc000>\\u20d2nfin;\\u69de\\u0180Aet\\u2cbd\\u2cc1\\u2cc5rr;\\u6902;\\uc000\\u2264\\u20d2\\u0100;r\\u2cca\\u2ccd\\uc000<\\u20d2ie;\\uc000\\u22b4\\u20d2\\u0100At\\u2cd8\\u2cdcrr;\\u6903rie;\\uc000\\u22b5\\u20d2im;\\uc000\\u223c\\u20d2\\u0180Aan\\u2cf0\\u2cf4\\u2d02rr;\\u61d6r\\u0100hr\\u2cfa\\u2cfdk;\\u6923\\u0100;o\\u13e7\\u13e5ear;\\u6927\\u1253\\u1a95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2d2d\\0\\u2d38\\u2d48\\u2d60\\u2d65\\u2d72\\u2d84\\u1b07\\0\\0\\u2d8d\\u2dab\\0\\u2dc8\\u2dce\\0\\u2ddc\\u2e19\\u2e2b\\u2e3e\\u2e43\\u0100cs\\u2d31\\u1a97ute\\u803b\\xf3\\u40f3\\u0100iy\\u2d3c\\u2d45r\\u0100;c\\u1a9e\\u2d42\\u803b\\xf4\\u40f4;\\u443e\\u0280abios\\u1aa0\\u2d52\\u2d57\\u01c8\\u2d5alac;\\u4151v;\\u6a38old;\\u69bclig;\\u4153\\u0100cr\\u2d69\\u2d6dir;\\u69bf;\\uc000\\ud835\\udd2c\\u036f\\u2d79\\0\\0\\u2d7c\\0\\u2d82n;\\u42dbave\\u803b\\xf2\\u40f2;\\u69c1\\u0100bm\\u2d88\\u0df4ar;\\u69b5\\u0200acit\\u2d95\\u2d98\\u2da5\\u2da8r\\xf2\\u1a80\\u0100ir\\u2d9d\\u2da0r;\\u69beoss;\\u69bbn\\xe5\\u0e52;\\u69c0\\u0180aei\\u2db1\\u2db5\\u2db9cr;\\u414dga;\\u43c9\\u0180cdn\\u2dc0\\u2dc5\\u01cdron;\\u43bf;\\u69b6pf;\\uc000\\ud835\\udd60\\u0180ael\\u2dd4\\u2dd7\\u01d2r;\\u69b7rp;\\u69b9\\u0380;adiosv\\u2dea\\u2deb\\u2dee\\u2e08\\u2e0d\\u2e10\\u2e16\\u6228r\\xf2\\u1a86\\u0200;efm\\u2df7\\u2df8\\u2e02\\u2e05\\u6a5dr\\u0100;o\\u2dfe\\u2dff\\u6134f\\xbb\\u2dff\\u803b\\xaa\\u40aa\\u803b\\xba\\u40bagof;\\u62b6r;\\u6a56lope;\\u6a57;\\u6a5b\\u0180clo\\u2e1f\\u2e21\\u2e27\\xf2\\u2e01ash\\u803b\\xf8\\u40f8l;\\u6298i\\u016c\\u2e2f\\u2e34de\\u803b\\xf5\\u40f5es\\u0100;a\\u01db\\u2e3as;\\u6a36ml\\u803b\\xf6\\u40f6bar;\\u633d\\u0ae1\\u2e5e\\0\\u2e7d\\0\\u2e80\\u2e9d\\0\\u2ea2\\u2eb9\\0\\0\\u2ecb\\u0e9c\\0\\u2f13\\0\\0\\u2f2b\\u2fbc\\0\\u2fc8r\\u0200;ast\\u0403\\u2e67\\u2e72\\u0e85\\u8100\\xb6;l\\u2e6d\\u2e6e\\u40b6le\\xec\\u0403\\u0269\\u2e78\\0\\0\\u2e7bm;\\u6af3;\\u6afdy;\\u443fr\\u0280cimpt\\u2e8b\\u2e8f\\u2e93\\u1865\\u2e97nt;\\u4025od;\\u402eil;\\u6030enk;\\u6031r;\\uc000\\ud835\\udd2d\\u0180imo\\u2ea8\\u2eb0\\u2eb4\\u0100;v\\u2ead\\u2eae\\u43c6;\\u43d5ma\\xf4\\u0a76ne;\\u660e\\u0180;tv\\u2ebf\\u2ec0\\u2ec8\\u43c0chfork\\xbb\\u1ffd;\\u43d6\\u0100au\\u2ecf\\u2edfn\\u0100ck\\u2ed5\\u2eddk\\u0100;h\\u21f4\\u2edb;\\u610e\\xf6\\u21f4s\\u0480;abcdemst\\u2ef3\\u2ef4\\u1908\\u2ef9\\u2efd\\u2f04\\u2f06\\u2f0a\\u2f0e\\u402bcir;\\u6a23ir;\\u6a22\\u0100ou\\u1d40\\u2f02;\\u6a25;\\u6a72n\\u80bb\\xb1\\u0e9dim;\\u6a26wo;\\u6a27\\u0180ipu\\u2f19\\u2f20\\u2f25ntint;\\u6a15f;\\uc000\\ud835\\udd61nd\\u803b\\xa3\\u40a3\\u0500;Eaceinosu\\u0ec8\\u2f3f\\u2f41\\u2f44\\u2f47\\u2f81\\u2f89\\u2f92\\u2f7e\\u2fb6;\\u6ab3p;\\u6ab7u\\xe5\\u0ed9\\u0100;c\\u0ece\\u2f4c\\u0300;acens\\u0ec8\\u2f59\\u2f5f\\u2f66\\u2f68\\u2f7eppro\\xf8\\u2f43urlye\\xf1\\u0ed9\\xf1\\u0ece\\u0180aes\\u2f6f\\u2f76\\u2f7approx;\\u6ab9qq;\\u6ab5im;\\u62e8i\\xed\\u0edfme\\u0100;s\\u2f88\\u0eae\\u6032\\u0180Eas\\u2f78\\u2f90\\u2f7a\\xf0\\u2f75\\u0180dfp\\u0eec\\u2f99\\u2faf\\u0180als\\u2fa0\\u2fa5\\u2faalar;\\u632eine;\\u6312urf;\\u6313\\u0100;t\\u0efb\\u2fb4\\xef\\u0efbrel;\\u62b0\\u0100ci\\u2fc0\\u2fc5r;\\uc000\\ud835\\udcc5;\\u43c8ncsp;\\u6008\\u0300fiopsu\\u2fda\\u22e2\\u2fdf\\u2fe5\\u2feb\\u2ff1r;\\uc000\\ud835\\udd2epf;\\uc000\\ud835\\udd62rime;\\u6057cr;\\uc000\\ud835\\udcc6\\u0180aeo\\u2ff8\\u3009\\u3013t\\u0100ei\\u2ffe\\u3005rnion\\xf3\\u06b0nt;\\u6a16st\\u0100;e\\u3010\\u3011\\u403f\\xf1\\u1f19\\xf4\\u0f14\\u0a80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30e0\\u310e\\u312b\\u3147\\u3162\\u3172\\u318e\\u3206\\u3215\\u3224\\u3229\\u3258\\u326e\\u3272\\u3290\\u32b0\\u32b7\\u0180art\\u3047\\u304a\\u304cr\\xf2\\u10b3\\xf2\\u03ddail;\\u691car\\xf2\\u1c65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307f\\u308f\\u3094\\u30cc\\u0100eu\\u306d\\u3071;\\uc000\\u223d\\u0331te;\\u4155i\\xe3\\u116emptyv;\\u69b3g\\u0200;del\\u0fd1\\u3089\\u308b\\u308d;\\u6992;\\u69a5\\xe5\\u0fd1uo\\u803b\\xbb\\u40bbr\\u0580;abcfhlpstw\\u0fdc\\u30ac\\u30af\\u30b7\\u30b9\\u30bc\\u30be\\u30c0\\u30c3\\u30c7\\u30cap;\\u6975\\u0100;f\\u0fe0\\u30b4s;\\u6920;\\u6933s;\\u691e\\xeb\\u225d\\xf0\\u272el;\\u6945im;\\u6974l;\\u61a3;\\u619d\\u0100ai\\u30d1\\u30d5il;\\u691ao\\u0100;n\\u30db\\u30dc\\u6236al\\xf3\\u0f1e\\u0180abr\\u30e7\\u30ea\\u30eer\\xf2\\u17e5rk;\\u6773\\u0100ak\\u30f3\\u30fdc\\u0100ek\\u30f9\\u30fb;\\u407d;\\u405d\\u0100es\\u3102\\u3104;\\u698cl\\u0100du\\u310a\\u310c;\\u698e;\\u6990\\u0200aeuy\\u3117\\u311c\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0ff2\\xe2\\u30fa;\\u4440\\u0200clqs\\u3134\\u3137\\u313d\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020e\\u020dh;\\u61b3\\u0180acg\\u314e\\u315f\\u0f44l\\u0200;ips\\u0f78\\u3158\\u315b\\u109cn\\xe5\\u10bbar\\xf4\\u0fa9t;\\u65ad\\u0180ilr\\u3169\\u1023\\u316esht;\\u697d;\\uc000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317d\\u317f\\xbb\\u047b\\u0100;l\\u1091\\u3184;\\u696c\\u0100;v\\u318b\\u318c\\u43c1;\\u43f1\\u0180gns\\u3195\\u31f9\\u31fcht\\u0300ahlrst\\u31a4\\u31b0\\u31c2\\u31d8\\u31e4\\u31eerrow\\u0100;t\\u0fdc\\u31ada\\xe9\\u30c8arpoon\\u0100du\\u31bb\\u31bfow\\xee\\u317ep\\xbb\\u1092eft\\u0100ah\\u31ca\\u31d0rrow\\xf3\\u0feaarpoon\\xf3\\u0551ightarrows;\\u61c9quigarro\\xf7\\u30cbhreetimes;\\u62ccg;\\u42daingdotse\\xf1\\u1f32\\u0180ahm\\u320d\\u3210\\u3213r\\xf2\\u0feaa\\xf2\\u0551;\\u600foust\\u0100;a\\u321e\\u321f\\u63b1che\\xbb\\u321fmid;\\u6aee\\u0200abpt\\u3232\\u323d\\u3240\\u3252\\u0100nr\\u3237\\u323ag;\\u67edr;\\u61fer\\xeb\\u1003\\u0180afl\\u3247\\u324a\\u324er;\\u6986;\\uc000\\ud835\\udd63us;\\u6a2eimes;\\u6a35\\u0100ap\\u325d\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6a12ar\\xf2\\u31e3\\u0200achq\\u327b\\u3280\\u10bc\\u3285quo;\\u603ar;\\uc000\\ud835\\udcc7\\u0100bu\\u30fb\\u328ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329b\\u32a0re\\xe5\\u31f8mes;\\u62cai\\u0200;efl\\u32aa\\u1059\\u1821\\u32ab\\u65b9tri;\\u69celuhar;\\u6968;\\u611e\\u0d61\\u32d5\\u32db\\u32df\\u332c\\u3338\\u3371\\0\\u337a\\u33a4\\0\\0\\u33ec\\u33f0\\0\\u3428\\u3448\\u345a\\u34ad\\u34b1\\u34ca\\u34f1\\0\\u3616\\0\\0\\u3633cute;\\u415bqu\\xef\\u27ba\\u0500;Eaceinpsy\\u11ed\\u32f3\\u32f5\\u32ff\\u3302\\u330b\\u330f\\u331f\\u3326\\u3329;\\u6ab4\\u01f0\\u32fa\\0\\u32fc;\\u6ab8on;\\u4161u\\xe5\\u11fe\\u0100;d\\u11f3\\u3307il;\\u415frc;\\u415d\\u0180Eas\\u3316\\u3318\\u331b;\\u6ab6p;\\u6abaim;\\u62e9olint;\\u6a13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1d47\\u3335\\u62c5;\\u6a66\\u0380Aacmstx\\u3346\\u334a\\u3357\\u335b\\u335e\\u3363\\u336drr;\\u61d8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0a36\\u0a34t\\u803b\\xa7\\u40a7i;\\u403bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uc000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33a0rp;\\u666f\\u0100hy\\u338b\\u338fcy;\\u4449;\\u4448rt\\u026d\\u3399\\0\\0\\u339ci\\xe4\\u1464ara\\xec\\u2e6f\\u803b\\xad\\u40ad\\u0100gm\\u33a8\\u33b4ma\\u0180;fv\\u33b1\\u33b2\\u33b2\\u43c3;\\u43c2\\u0400;deglnpr\\u12ab\\u33c5\\u33c9\\u33ce\\u33d6\\u33de\\u33e1\\u33e6ot;\\u6a6a\\u0100;q\\u12b1\\u12b0\\u0100;E\\u33d3\\u33d4\\u6a9e;\\u6aa0\\u0100;E\\u33db\\u33dc\\u6a9d;\\u6a9fe;\\u6246lus;\\u6a24arr;\\u6972ar\\xf2\\u113d\\u0200aeit\\u33f8\\u3408\\u340f\\u3417\\u0100ls\\u33fd\\u3404lsetm\\xe9\\u336ahp;\\u6a33parsl;\\u69e4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341c\\u341d\\u6aaa\\u0100;s\\u3422\\u3423\\u6aac;\\uc000\\u2aac\\ufe00\\u0180flp\\u342e\\u3433\\u3442tcy;\\u444c\\u0100;b\\u3438\\u3439\\u402f\\u0100;a\\u343e\\u343f\\u69c4r;\\u633ff;\\uc000\\ud835\\udd64a\\u0100dr\\u344d\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349f\\u0100au\\u3465\\u346fp\\u0100;s\\u1188\\u346b;\\uc000\\u2293\\ufe00p\\u0100;s\\u11b4\\u3475;\\uc000\\u2294\\ufe00u\\u0100bp\\u347f\\u348f\\u0180;es\\u1197\\u119c\\u3486et\\u0100;e\\u1197\\u348d\\xf1\\u119d\\u0180;es\\u11a8\\u11ad\\u3496et\\u0100;e\\u11a8\\u349d\\xf1\\u11ae\\u0180;af\\u117b\\u34a6\\u05b0r\\u0165\\u34ab\\u05b1\\xbb\\u117car\\xf2\\u1148\\u0200cemt\\u34b9\\u34be\\u34c2\\u34c5r;\\uc000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11be\\u0100ar\\u34ce\\u34d5r\\u0100;f\\u34d4\\u17bf\\u6606\\u0100an\\u34da\\u34edight\\u0100ep\\u34e3\\u34eapsilo\\xee\\u1ee0h\\xe9\\u2eafs\\xbb\\u2852\\u0280bcmnp\\u34fb\\u355e\\u1209\\u358b\\u358e\\u0480;Edemnprs\\u350e\\u350f\\u3511\\u3515\\u351e\\u3523\\u352c\\u3531\\u3536\\u6282;\\u6ac5ot;\\u6abd\\u0100;d\\u11da\\u351aot;\\u6ac3ult;\\u6ac1\\u0100Ee\\u3528\\u352a;\\u6acb;\\u628alus;\\u6abfarr;\\u6979\\u0180eiu\\u353d\\u3552\\u3555t\\u0180;en\\u350e\\u3545\\u354bq\\u0100;q\\u11da\\u350feq\\u0100;q\\u352b\\u3528m;\\u6ac7\\u0100bp\\u355a\\u355c;\\u6ad5;\\u6ad3c\\u0300;acens\\u11ed\\u356c\\u3572\\u3579\\u357b\\u3326ppro\\xf8\\u32faurlye\\xf1\\u11fe\\xf1\\u11f3\\u0180aes\\u3582\\u3588\\u331bppro\\xf8\\u331aq\\xf1\\u3317g;\\u666a\\u0680123;Edehlmnps\\u35a9\\u35ac\\u35af\\u121c\\u35b2\\u35b4\\u35c0\\u35c9\\u35d5\\u35da\\u35df\\u35e8\\u35ed\\u803b\\xb9\\u40b9\\u803b\\xb2\\u40b2\\u803b\\xb3\\u40b3;\\u6ac6\\u0100os\\u35b9\\u35bct;\\u6abeub;\\u6ad8\\u0100;d\\u1222\\u35c5ot;\\u6ac4s\\u0100ou\\u35cf\\u35d2l;\\u67c9b;\\u6ad7arr;\\u697bult;\\u6ac2\\u0100Ee\\u35e4\\u35e6;\\u6acc;\\u628blus;\\u6ac0\\u0180eiu\\u35f4\\u3609\\u360ct\\u0180;en\\u121c\\u35fc\\u3602q\\u0100;q\\u1222\\u35b2eq\\u0100;q\\u35e7\\u35e4m;\\u6ac8\\u0100bp\\u3611\\u3613;\\u6ad4;\\u6ad6\\u0180Aan\\u361c\\u3620\\u362drr;\\u61d9r\\u0100hr\\u3626\\u3628\\xeb\\u222e\\u0100;o\\u0a2b\\u0a29war;\\u692alig\\u803b\\xdf\\u40df\\u0be1\\u3651\\u365d\\u3660\\u12ce\\u3673\\u3679\\0\\u367e\\u36c2\\0\\0\\0\\0\\0\\u36db\\u3703\\0\\u3709\\u376c\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365bget;\\u6316;\\u43c4r\\xeb\\u0e5f\\u0180aey\\u3666\\u366b\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uc000\\ud835\\udd31\\u0200eiko\\u3686\\u369d\\u36b5\\u36bc\\u01f2\\u368b\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369b\\u43b8ym;\\u43d1\\u0100cn\\u36a2\\u36b2k\\u0100as\\u36a8\\u36aeppro\\xf8\\u12c1im\\xbb\\u12acs\\xf0\\u129e\\u0100as\\u36ba\\u36ae\\xf0\\u12c1rn\\u803b\\xfe\\u40fe\\u01ec\\u031f\\u36c6\\u22e7es\\u8180\\xd7;bd\\u36cf\\u36d0\\u36d8\\u40d7\\u0100;a\\u190f\\u36d5r;\\u6a31;\\u6a30\\u0180eps\\u36e1\\u36e3\\u3700\\xe1\\u2a4d\\u0200;bcf\\u0486\\u36ec\\u36f0\\u36f4ot;\\u6336ir;\\u6af1\\u0100;o\\u36f9\\u36fc\\uc000\\ud835\\udd65rk;\\u6ada\\xe1\\u3362rime;\\u6034\\u0180aip\\u370f\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374d\\u3740\\u3751\\u3757\\u375c\\u375fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65b5own\\xbb\\u1dbbeft\\u0100;e\\u2800\\u373e\\xf1\\u092e;\\u625cight\\u0100;e\\u32aa\\u374b\\xf1\\u105aot;\\u65ecinus;\\u6a3alus;\\u6a39b;\\u69cdime;\\u6a3bezium;\\u63e2\\u0180cht\\u3772\\u377d\\u3781\\u0100ry\\u3777\\u377b;\\uc000\\ud835\\udcc9;\\u4446cy;\\u445brok;\\u4167\\u0100io\\u378b\\u378ex\\xf4\\u1777head\\u0100lr\\u3797\\u37a0eftarro\\xf7\\u084fightarrow\\xbb\\u0f5d\\u0900AHabcdfghlmoprstuw\\u37d0\\u37d3\\u37d7\\u37e4\\u37f0\\u37fc\\u380e\\u381c\\u3823\\u3834\\u3851\\u385d\\u386b\\u38a9\\u38cc\\u38d2\\u38ea\\u38f6r\\xf2\\u03edar;\\u6963\\u0100cr\\u37dc\\u37e2ute\\u803b\\xfa\\u40fa\\xf2\\u1150r\\u01e3\\u37ea\\0\\u37edy;\\u445eve;\\u416d\\u0100iy\\u37f5\\u37farc\\u803b\\xfb\\u40fb;\\u4443\\u0180abh\\u3803\\u3806\\u380br\\xf2\\u13adlac;\\u4171a\\xf2\\u13c3\\u0100ir\\u3813\\u3818sht;\\u697e;\\uc000\\ud835\\udd32rave\\u803b\\xf9\\u40f9\\u0161\\u3827\\u3831r\\u0100lr\\u382c\\u382e\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384d\\u026f\\u383f\\0\\0\\u384arn\\u0100;e\\u3845\\u3846\\u631cr\\xbb\\u3846op;\\u630fri;\\u65f8\\u0100al\\u3856\\u385acr;\\u416b\\u80bb\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uc000\\ud835\\udd66\\u0300adhlsu\\u114b\\u3878\\u387d\\u1372\\u3891\\u38a0own\\xe1\\u13b3arpoon\\u0100lr\\u3888\\u388cef\\xf4\\u382digh\\xf4\\u382fi\\u0180;hl\\u3899\\u389a\\u389c\\u43c5\\xbb\\u13faon\\xbb\\u389aparrows;\\u61c8\\u0180cit\\u38b0\\u38c4\\u38c8\\u026f\\u38b6\\0\\0\\u38c1rn\\u0100;e\\u38bc\\u38bd\\u631dr\\xbb\\u38bdop;\\u630eng;\\u416fri;\\u65f9cr;\\uc000\\ud835\\udcca\\u0180dir\\u38d9\\u38dd\\u38e2ot;\\u62f0lde;\\u4169i\\u0100;f\\u3730\\u38e8\\xbb\\u1813\\u0100am\\u38ef\\u38f2r\\xf2\\u38a8l\\u803b\\xfc\\u40fcangle;\\u69a7\\u0780ABDacdeflnoprsz\\u391c\\u391f\\u3929\\u392d\\u39b5\\u39b8\\u39bd\\u39df\\u39e4\\u39e8\\u39f3\\u39f9\\u39fd\\u3a01\\u3a20r\\xf2\\u03f7ar\\u0100;v\\u3926\\u3927\\u6ae8;\\u6ae9as\\xe8\\u03e1\\u0100nr\\u3932\\u3937grt;\\u699c\\u0380eknprst\\u34e3\\u3946\\u394b\\u3952\\u395d\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1e96\\u0180hir\\u34eb\\u2ec8\\u3959op\\xf4\\u2fb5\\u0100;h\\u13b7\\u3962\\xef\\u318d\\u0100iu\\u3969\\u396dgm\\xe1\\u33b3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397d\\u3980\\uc000\\u228a\\ufe00;\\uc000\\u2acb\\ufe00setneq\\u0100;q\\u398f\\u3992\\uc000\\u228b\\ufe00;\\uc000\\u2acc\\ufe00\\u0100hr\\u399b\\u399fet\\xe1\\u369ciangle\\u0100lr\\u39aa\\u39afeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39c4\\u39d2\\u39d7\\u0180;be\\u2dea\\u39cb\\u39cfar;\\u62bbq;\\u625alip;\\u62ee\\u0100bt\\u39dc\\u1468a\\xf2\\u1469r;\\uc000\\ud835\\udd33tr\\xe9\\u39aesu\\u0100bp\\u39ef\\u39f1\\xbb\\u0d1c\\xbb\\u0d59pf;\\uc000\\ud835\\udd67ro\\xf0\\u0efbtr\\xe9\\u39b4\\u0100cu\\u3a06\\u3a0br;\\uc000\\ud835\\udccb\\u0100bp\\u3a10\\u3a18n\\u0100Ee\\u3980\\u3a16\\xbb\\u397en\\u0100Ee\\u3992\\u3a1e\\xbb\\u3990igzag;\\u699a\\u0380cefoprs\\u3a36\\u3a3b\\u3a56\\u3a5b\\u3a54\\u3a61\\u3a6airc;\\u4175\\u0100di\\u3a40\\u3a51\\u0100bg\\u3a45\\u3a49ar;\\u6a5fe\\u0100;q\\u15fa\\u3a4f;\\u6259erp;\\u6118r;\\uc000\\ud835\\udd34pf;\\uc000\\ud835\\udd68\\u0100;e\\u1479\\u3a66at\\xe8\\u1479cr;\\uc000\\ud835\\udccc\\u0ae3\\u178e\\u3a87\\0\\u3a8b\\0\\u3a90\\u3a9b\\0\\0\\u3a9d\\u3aa8\\u3aab\\u3aaf\\0\\0\\u3ac3\\u3ace\\0\\u3ad8\\u17dc\\u17dftr\\xe9\\u17d1r;\\uc000\\ud835\\udd35\\u0100Aa\\u3a94\\u3a97r\\xf2\\u03c3r\\xf2\\u09f6;\\u43be\\u0100Aa\\u3aa1\\u3aa4r\\xf2\\u03b8r\\xf2\\u09eba\\xf0\\u2713is;\\u62fb\\u0180dpt\\u17a4\\u3ab5\\u3abe\\u0100fl\\u3aba\\u17a9;\\uc000\\ud835\\udd69im\\xe5\\u17b2\\u0100Aa\\u3ac7\\u3acar\\xf2\\u03cer\\xf2\\u0a01\\u0100cq\\u3ad2\\u17b8r;\\uc000\\ud835\\udccd\\u0100pt\\u17d6\\u3adcr\\xe9\\u17d4\\u0400acefiosu\\u3af0\\u3afd\\u3b08\\u3b0c\\u3b11\\u3b15\\u3b1b\\u3b21c\\u0100uy\\u3af6\\u3afbte\\u803b\\xfd\\u40fd;\\u444f\\u0100iy\\u3b02\\u3b06rc;\\u4177;\\u444bn\\u803b\\xa5\\u40a5r;\\uc000\\ud835\\udd36cy;\\u4457pf;\\uc000\\ud835\\udd6acr;\\uc000\\ud835\\udcce\\u0100cm\\u3b26\\u3b29y;\\u444el\\u803b\\xff\\u40ff\\u0500acdefhiosw\\u3b42\\u3b48\\u3b54\\u3b58\\u3b64\\u3b69\\u3b6d\\u3b74\\u3b7a\\u3b80cute;\\u417a\\u0100ay\\u3b4d\\u3b52ron;\\u417e;\\u4437ot;\\u417c\\u0100et\\u3b5d\\u3b61tr\\xe6\\u155fa;\\u43b6r;\\uc000\\ud835\\udd37cy;\\u4436grarr;\\u61ddpf;\\uc000\\ud835\\udd6bcr;\\uc000\\ud835\\udccf\\u0100jn\\u3b85\\u3b87;\\u600dj;\\u600c\"\n .split(\"\")\n .map(function (c) { return c.charCodeAt(0); }));\n//# sourceMappingURL=decode-data-html.js.map","\"use strict\";\n// Generated using scripts/write-decode-map.ts\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = new Uint16Array(\n// prettier-ignore\n\"\\u0200aglq\\t\\x15\\x18\\x1b\\u026d\\x0f\\0\\0\\x12p;\\u4026os;\\u4027t;\\u403et;\\u403cuot;\\u4022\"\n .split(\"\")\n .map(function (c) { return c.charCodeAt(0); }));\n//# sourceMappingURL=decode-data-xml.js.map","\"use strict\";\n// Generated using scripts/write-encode-map.ts\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction restoreDiff(arr) {\n for (var i = 1; i < arr.length; i++) {\n arr[i][0] += arr[i - 1][0] + 1;\n }\n return arr;\n}\n// prettier-ignore\nexports.default = new Map(/* #__PURE__ */ restoreDiff([[9, \"	\"], [0, \"
\"], [22, \"!\"], [0, \""\"], [0, \"#\"], [0, \"$\"], [0, \"%\"], [0, \"&\"], [0, \"'\"], [0, \"(\"], [0, \")\"], [0, \"*\"], [0, \"+\"], [0, \",\"], [1, \".\"], [0, \"/\"], [10, \":\"], [0, \";\"], [0, { v: \"<\", n: 8402, o: \"<⃒\" }], [0, { v: \"=\", n: 8421, o: \"=⃥\" }], [0, { v: \">\", n: 8402, o: \">⃒\" }], [0, \"?\"], [0, \"@\"], [26, \"[\"], [0, \"\\"], [0, \"]\"], [0, \"^\"], [0, \"_\"], [0, \"`\"], [5, { n: 106, o: \"fj\" }], [20, \"{\"], [0, \"|\"], [0, \"}\"], [34, \" \"], [0, \"¡\"], [0, \"¢\"], [0, \"£\"], [0, \"¤\"], [0, \"¥\"], [0, \"¦\"], [0, \"§\"], [0, \"¨\"], [0, \"©\"], [0, \"ª\"], [0, \"«\"], [0, \"¬\"], [0, \"­\"], [0, \"®\"], [0, \"¯\"], [0, \"°\"], [0, \"±\"], [0, \"²\"], [0, \"³\"], [0, \"´\"], [0, \"µ\"], [0, \"¶\"], [0, \"·\"], [0, \"¸\"], [0, \"¹\"], [0, \"º\"], [0, \"»\"], [0, \"¼\"], [0, \"½\"], [0, \"¾\"], [0, \"¿\"], [0, \"À\"], [0, \"Á\"], [0, \"Â\"], [0, \"Ã\"], [0, \"Ä\"], [0, \"Å\"], [0, \"Æ\"], [0, \"Ç\"], [0, \"È\"], [0, \"É\"], [0, \"Ê\"], [0, \"Ë\"], [0, \"Ì\"], [0, \"Í\"], [0, \"Î\"], [0, \"Ï\"], [0, \"Ð\"], [0, \"Ñ\"], [0, \"Ò\"], [0, \"Ó\"], [0, \"Ô\"], [0, \"Õ\"], [0, \"Ö\"], [0, \"×\"], [0, \"Ø\"], [0, \"Ù\"], [0, \"Ú\"], [0, \"Û\"], [0, \"Ü\"], [0, \"Ý\"], [0, \"Þ\"], [0, \"ß\"], [0, \"à\"], [0, \"á\"], [0, \"â\"], [0, \"ã\"], [0, \"ä\"], [0, \"å\"], [0, \"æ\"], [0, \"ç\"], [0, \"è\"], [0, \"é\"], [0, \"ê\"], [0, \"ë\"], [0, \"ì\"], [0, \"í\"], [0, \"î\"], [0, \"ï\"], [0, \"ð\"], [0, \"ñ\"], [0, \"ò\"], [0, \"ó\"], [0, \"ô\"], [0, \"õ\"], [0, \"ö\"], [0, \"÷\"], [0, \"ø\"], [0, \"ù\"], [0, \"ú\"], [0, \"û\"], [0, \"ü\"], [0, \"ý\"], [0, \"þ\"], [0, \"ÿ\"], [0, \"Ā\"], [0, \"ā\"], [0, \"Ă\"], [0, \"ă\"], [0, \"Ą\"], [0, \"ą\"], [0, \"Ć\"], [0, \"ć\"], [0, \"Ĉ\"], [0, \"ĉ\"], [0, \"Ċ\"], [0, \"ċ\"], [0, \"Č\"], [0, \"č\"], [0, \"Ď\"], [0, \"ď\"], [0, \"Đ\"], [0, \"đ\"], [0, \"Ē\"], [0, \"ē\"], [2, \"Ė\"], [0, \"ė\"], [0, \"Ę\"], [0, \"ę\"], [0, \"Ě\"], [0, \"ě\"], [0, \"Ĝ\"], [0, \"ĝ\"], [0, \"Ğ\"], [0, \"ğ\"], [0, \"Ġ\"], [0, \"ġ\"], [0, \"Ģ\"], [1, \"Ĥ\"], [0, \"ĥ\"], [0, \"Ħ\"], [0, \"ħ\"], [0, \"Ĩ\"], [0, \"ĩ\"], [0, \"Ī\"], [0, \"ī\"], [2, \"Į\"], [0, \"į\"], [0, \"İ\"], [0, \"ı\"], [0, \"IJ\"], [0, \"ij\"], [0, \"Ĵ\"], [0, \"ĵ\"], [0, \"Ķ\"], [0, \"ķ\"], [0, \"ĸ\"], [0, \"Ĺ\"], [0, \"ĺ\"], [0, \"Ļ\"], [0, \"ļ\"], [0, \"Ľ\"], [0, \"ľ\"], [0, \"Ŀ\"], [0, \"ŀ\"], [0, \"Ł\"], [0, \"ł\"], [0, \"Ń\"], [0, \"ń\"], [0, \"Ņ\"], [0, \"ņ\"], [0, \"Ň\"], [0, \"ň\"], [0, \"ʼn\"], [0, \"Ŋ\"], [0, \"ŋ\"], [0, \"Ō\"], [0, \"ō\"], [2, \"Ő\"], [0, \"ő\"], [0, \"Œ\"], [0, \"œ\"], [0, \"Ŕ\"], [0, \"ŕ\"], [0, \"Ŗ\"], [0, \"ŗ\"], [0, \"Ř\"], [0, \"ř\"], [0, \"Ś\"], [0, \"ś\"], [0, \"Ŝ\"], [0, \"ŝ\"], [0, \"Ş\"], [0, \"ş\"], [0, \"Š\"], [0, \"š\"], [0, \"Ţ\"], [0, \"ţ\"], [0, \"Ť\"], [0, \"ť\"], [0, \"Ŧ\"], [0, \"ŧ\"], [0, \"Ũ\"], [0, \"ũ\"], [0, \"Ū\"], [0, \"ū\"], [0, \"Ŭ\"], [0, \"ŭ\"], [0, \"Ů\"], [0, \"ů\"], [0, \"Ű\"], [0, \"ű\"], [0, \"Ų\"], [0, \"ų\"], [0, \"Ŵ\"], [0, \"ŵ\"], [0, \"Ŷ\"], [0, \"ŷ\"], [0, \"Ÿ\"], [0, \"Ź\"], [0, \"ź\"], [0, \"Ż\"], [0, \"ż\"], [0, \"Ž\"], [0, \"ž\"], [19, \"ƒ\"], [34, \"Ƶ\"], [63, \"ǵ\"], [65, \"ȷ\"], [142, \"ˆ\"], [0, \"ˇ\"], [16, \"˘\"], [0, \"˙\"], [0, \"˚\"], [0, \"˛\"], [0, \"˜\"], [0, \"˝\"], [51, \"̑\"], [127, \"Α\"], [0, \"Β\"], [0, \"Γ\"], [0, \"Δ\"], [0, \"Ε\"], [0, \"Ζ\"], [0, \"Η\"], [0, \"Θ\"], [0, \"Ι\"], [0, \"Κ\"], [0, \"Λ\"], [0, \"Μ\"], [0, \"Ν\"], [0, \"Ξ\"], [0, \"Ο\"], [0, \"Π\"], [0, \"Ρ\"], [1, \"Σ\"], [0, \"Τ\"], [0, \"Υ\"], [0, \"Φ\"], [0, \"Χ\"], [0, \"Ψ\"], [0, \"Ω\"], [7, \"α\"], [0, \"β\"], [0, \"γ\"], [0, \"δ\"], [0, \"ε\"], [0, \"ζ\"], [0, \"η\"], [0, \"θ\"], [0, \"ι\"], [0, \"κ\"], [0, \"λ\"], [0, \"μ\"], [0, \"ν\"], [0, \"ξ\"], [0, \"ο\"], [0, \"π\"], [0, \"ρ\"], [0, \"ς\"], [0, \"σ\"], [0, \"τ\"], [0, \"υ\"], [0, \"φ\"], [0, \"χ\"], [0, \"ψ\"], [0, \"ω\"], [7, \"ϑ\"], [0, \"ϒ\"], [2, \"ϕ\"], [0, \"ϖ\"], [5, \"Ϝ\"], [0, \"ϝ\"], [18, \"ϰ\"], [0, \"ϱ\"], [3, \"ϵ\"], [0, \"϶\"], [10, \"Ё\"], [0, \"Ђ\"], [0, \"Ѓ\"], [0, \"Є\"], [0, \"Ѕ\"], [0, \"І\"], [0, \"Ї\"], [0, \"Ј\"], [0, \"Љ\"], [0, \"Њ\"], [0, \"Ћ\"], [0, \"Ќ\"], [1, \"Ў\"], [0, \"Џ\"], [0, \"А\"], [0, \"Б\"], [0, \"В\"], [0, \"Г\"], [0, \"Д\"], [0, \"Е\"], [0, \"Ж\"], [0, \"З\"], [0, \"И\"], [0, \"Й\"], [0, \"К\"], [0, \"Л\"], [0, \"М\"], [0, \"Н\"], [0, \"О\"], [0, \"П\"], [0, \"Р\"], [0, \"С\"], [0, \"Т\"], [0, \"У\"], [0, \"Ф\"], [0, \"Х\"], [0, \"Ц\"], [0, \"Ч\"], [0, \"Ш\"], [0, \"Щ\"], [0, \"Ъ\"], [0, \"Ы\"], [0, \"Ь\"], [0, \"Э\"], [0, \"Ю\"], [0, \"Я\"], [0, \"а\"], [0, \"б\"], [0, \"в\"], [0, \"г\"], [0, \"д\"], [0, \"е\"], [0, \"ж\"], [0, \"з\"], [0, \"и\"], [0, \"й\"], [0, \"к\"], [0, \"л\"], [0, \"м\"], [0, \"н\"], [0, \"о\"], [0, \"п\"], [0, \"р\"], [0, \"с\"], [0, \"т\"], [0, \"у\"], [0, \"ф\"], [0, \"х\"], [0, \"ц\"], [0, \"ч\"], [0, \"ш\"], [0, \"щ\"], [0, \"ъ\"], [0, \"ы\"], [0, \"ь\"], [0, \"э\"], [0, \"ю\"], [0, \"я\"], [1, \"ё\"], [0, \"ђ\"], [0, \"ѓ\"], [0, \"є\"], [0, \"ѕ\"], [0, \"і\"], [0, \"ї\"], [0, \"ј\"], [0, \"љ\"], [0, \"њ\"], [0, \"ћ\"], [0, \"ќ\"], [1, \"ў\"], [0, \"џ\"], [7074, \" \"], [0, \" \"], [0, \" \"], [0, \" \"], [1, \" \"], [0, \" \"], [0, \" \"], [0, \" \"], [0, \"​\"], [0, \"‌\"], [0, \"‍\"], [0, \"‎\"], [0, \"‏\"], [0, \"‐\"], [2, \"–\"], [0, \"—\"], [0, \"―\"], [0, \"‖\"], [1, \"‘\"], [0, \"’\"], [0, \"‚\"], [1, \"“\"], [0, \"”\"], [0, \"„\"], [1, \"†\"], [0, \"‡\"], [0, \"•\"], [2, \"‥\"], [0, \"…\"], [9, \"‰\"], [0, \"‱\"], [0, \"′\"], [0, \"″\"], [0, \"‴\"], [0, \"‵\"], [3, \"‹\"], [0, \"›\"], [3, \"‾\"], [2, \"⁁\"], [1, \"⁃\"], [0, \"⁄\"], [10, \"⁏\"], [7, \"⁗\"], [7, { v: \" \", n: 8202, o: \"  \" }], [0, \"⁠\"], [0, \"⁡\"], [0, \"⁢\"], [0, \"⁣\"], [72, \"€\"], [46, \"⃛\"], [0, \"⃜\"], [37, \"ℂ\"], [2, \"℅\"], [4, \"ℊ\"], [0, \"ℋ\"], [0, \"ℌ\"], [0, \"ℍ\"], [0, \"ℎ\"], [0, \"ℏ\"], [0, \"ℐ\"], [0, \"ℑ\"], [0, \"ℒ\"], [0, \"ℓ\"], [1, \"ℕ\"], [0, \"№\"], [0, \"℗\"], [0, \"℘\"], [0, \"ℙ\"], [0, \"ℚ\"], [0, \"ℛ\"], [0, \"ℜ\"], [0, \"ℝ\"], [0, \"℞\"], [3, \"™\"], [1, \"ℤ\"], [2, \"℧\"], [0, \"ℨ\"], [0, \"℩\"], [2, \"ℬ\"], [0, \"ℭ\"], [1, \"ℯ\"], [0, \"ℰ\"], [0, \"ℱ\"], [1, \"ℳ\"], [0, \"ℴ\"], [0, \"ℵ\"], [0, \"ℶ\"], [0, \"ℷ\"], [0, \"ℸ\"], [12, \"ⅅ\"], [0, \"ⅆ\"], [0, \"ⅇ\"], [0, \"ⅈ\"], [10, \"⅓\"], [0, \"⅔\"], [0, \"⅕\"], [0, \"⅖\"], [0, \"⅗\"], [0, \"⅘\"], [0, \"⅙\"], [0, \"⅚\"], [0, \"⅛\"], [0, \"⅜\"], [0, \"⅝\"], [0, \"⅞\"], [49, \"←\"], [0, \"↑\"], [0, \"→\"], [0, \"↓\"], [0, \"↔\"], [0, \"↕\"], [0, \"↖\"], [0, \"↗\"], [0, \"↘\"], [0, \"↙\"], [0, \"↚\"], [0, \"↛\"], [1, { v: \"↝\", n: 824, o: \"↝̸\" }], [0, \"↞\"], [0, \"↟\"], [0, \"↠\"], [0, \"↡\"], [0, \"↢\"], [0, \"↣\"], [0, \"↤\"], [0, \"↥\"], [0, \"↦\"], [0, \"↧\"], [1, \"↩\"], [0, \"↪\"], [0, \"↫\"], [0, \"↬\"], [0, \"↭\"], [0, \"↮\"], [1, \"↰\"], [0, \"↱\"], [0, \"↲\"], [0, \"↳\"], [1, \"↵\"], [0, \"↶\"], [0, \"↷\"], [2, \"↺\"], [0, \"↻\"], [0, \"↼\"], [0, \"↽\"], [0, \"↾\"], [0, \"↿\"], [0, \"⇀\"], [0, \"⇁\"], [0, \"⇂\"], [0, \"⇃\"], [0, \"⇄\"], [0, \"⇅\"], [0, \"⇆\"], [0, \"⇇\"], [0, \"⇈\"], [0, \"⇉\"], [0, \"⇊\"], [0, \"⇋\"], [0, \"⇌\"], [0, \"⇍\"], [0, \"⇎\"], [0, \"⇏\"], [0, \"⇐\"], [0, \"⇑\"], [0, \"⇒\"], [0, \"⇓\"], [0, \"⇔\"], [0, \"⇕\"], [0, \"⇖\"], [0, \"⇗\"], [0, \"⇘\"], [0, \"⇙\"], [0, \"⇚\"], [0, \"⇛\"], [1, \"⇝\"], [6, \"⇤\"], [0, \"⇥\"], [15, \"⇵\"], [7, \"⇽\"], [0, \"⇾\"], [0, \"⇿\"], [0, \"∀\"], [0, \"∁\"], [0, { v: \"∂\", n: 824, o: \"∂̸\" }], [0, \"∃\"], [0, \"∄\"], [0, \"∅\"], [1, \"∇\"], [0, \"∈\"], [0, \"∉\"], [1, \"∋\"], [0, \"∌\"], [2, \"∏\"], [0, \"∐\"], [0, \"∑\"], [0, \"−\"], [0, \"∓\"], [0, \"∔\"], [1, \"∖\"], [0, \"∗\"], [0, \"∘\"], [1, \"√\"], [2, \"∝\"], [0, \"∞\"], [0, \"∟\"], [0, { v: \"∠\", n: 8402, o: \"∠⃒\" }], [0, \"∡\"], [0, \"∢\"], [0, \"∣\"], [0, \"∤\"], [0, \"∥\"], [0, \"∦\"], [0, \"∧\"], [0, \"∨\"], [0, { v: \"∩\", n: 65024, o: \"∩︀\" }], [0, { v: \"∪\", n: 65024, o: \"∪︀\" }], [0, \"∫\"], [0, \"∬\"], [0, \"∭\"], [0, \"∮\"], [0, \"∯\"], [0, \"∰\"], [0, \"∱\"], [0, \"∲\"], [0, \"∳\"], [0, \"∴\"], [0, \"∵\"], [0, \"∶\"], [0, \"∷\"], [0, \"∸\"], [1, \"∺\"], [0, \"∻\"], [0, { v: \"∼\", n: 8402, o: \"∼⃒\" }], [0, { v: \"∽\", n: 817, o: \"∽̱\" }], [0, { v: \"∾\", n: 819, o: \"∾̳\" }], [0, \"∿\"], [0, \"≀\"], [0, \"≁\"], [0, { v: \"≂\", n: 824, o: \"≂̸\" }], [0, \"≃\"], [0, \"≄\"], [0, \"≅\"], [0, \"≆\"], [0, \"≇\"], [0, \"≈\"], [0, \"≉\"], [0, \"≊\"], [0, { v: \"≋\", n: 824, o: \"≋̸\" }], [0, \"≌\"], [0, { v: \"≍\", n: 8402, o: \"≍⃒\" }], [0, { v: \"≎\", n: 824, o: \"≎̸\" }], [0, { v: \"≏\", n: 824, o: \"≏̸\" }], [0, { v: \"≐\", n: 824, o: \"≐̸\" }], [0, \"≑\"], [0, \"≒\"], [0, \"≓\"], [0, \"≔\"], [0, \"≕\"], [0, \"≖\"], [0, \"≗\"], [1, \"≙\"], [0, \"≚\"], [1, \"≜\"], [2, \"≟\"], [0, \"≠\"], [0, { v: \"≡\", n: 8421, o: \"≡⃥\" }], [0, \"≢\"], [1, { v: \"≤\", n: 8402, o: \"≤⃒\" }], [0, { v: \"≥\", n: 8402, o: \"≥⃒\" }], [0, { v: \"≦\", n: 824, o: \"≦̸\" }], [0, { v: \"≧\", n: 824, o: \"≧̸\" }], [0, { v: \"≨\", n: 65024, o: \"≨︀\" }], [0, { v: \"≩\", n: 65024, o: \"≩︀\" }], [0, { v: \"≪\", n: new Map(/* #__PURE__ */ restoreDiff([[824, \"≪̸\"], [7577, \"≪⃒\"]])) }], [0, { v: \"≫\", n: new Map(/* #__PURE__ */ restoreDiff([[824, \"≫̸\"], [7577, \"≫⃒\"]])) }], [0, \"≬\"], [0, \"≭\"], [0, \"≮\"], [0, \"≯\"], [0, \"≰\"], [0, \"≱\"], [0, \"≲\"], [0, \"≳\"], [0, \"≴\"], [0, \"≵\"], [0, \"≶\"], [0, \"≷\"], [0, \"≸\"], [0, \"≹\"], [0, \"≺\"], [0, \"≻\"], [0, \"≼\"], [0, \"≽\"], [0, \"≾\"], [0, { v: \"≿\", n: 824, o: \"≿̸\" }], [0, \"⊀\"], [0, \"⊁\"], [0, { v: \"⊂\", n: 8402, o: \"⊂⃒\" }], [0, { v: \"⊃\", n: 8402, o: \"⊃⃒\" }], [0, \"⊄\"], [0, \"⊅\"], [0, \"⊆\"], [0, \"⊇\"], [0, \"⊈\"], [0, \"⊉\"], [0, { v: \"⊊\", n: 65024, o: \"⊊︀\" }], [0, { v: \"⊋\", n: 65024, o: \"⊋︀\" }], [1, \"⊍\"], [0, \"⊎\"], [0, { v: \"⊏\", n: 824, o: \"⊏̸\" }], [0, { v: \"⊐\", n: 824, o: \"⊐̸\" }], [0, \"⊑\"], [0, \"⊒\"], [0, { v: \"⊓\", n: 65024, o: \"⊓︀\" }], [0, { v: \"⊔\", n: 65024, o: \"⊔︀\" }], [0, \"⊕\"], [0, \"⊖\"], [0, \"⊗\"], [0, \"⊘\"], [0, \"⊙\"], [0, \"⊚\"], [0, \"⊛\"], [1, \"⊝\"], [0, \"⊞\"], [0, \"⊟\"], [0, \"⊠\"], [0, \"⊡\"], [0, \"⊢\"], [0, \"⊣\"], [0, \"⊤\"], [0, \"⊥\"], [1, \"⊧\"], [0, \"⊨\"], [0, \"⊩\"], [0, \"⊪\"], [0, \"⊫\"], [0, \"⊬\"], [0, \"⊭\"], [0, \"⊮\"], [0, \"⊯\"], [0, \"⊰\"], [1, \"⊲\"], [0, \"⊳\"], [0, { v: \"⊴\", n: 8402, o: \"⊴⃒\" }], [0, { v: \"⊵\", n: 8402, o: \"⊵⃒\" }], [0, \"⊶\"], [0, \"⊷\"], [0, \"⊸\"], [0, \"⊹\"], [0, \"⊺\"], [0, \"⊻\"], [1, \"⊽\"], [0, \"⊾\"], [0, \"⊿\"], [0, \"⋀\"], [0, \"⋁\"], [0, \"⋂\"], [0, \"⋃\"], [0, \"⋄\"], [0, \"⋅\"], [0, \"⋆\"], [0, \"⋇\"], [0, \"⋈\"], [0, \"⋉\"], [0, \"⋊\"], [0, \"⋋\"], [0, \"⋌\"], [0, \"⋍\"], [0, \"⋎\"], [0, \"⋏\"], [0, \"⋐\"], [0, \"⋑\"], [0, \"⋒\"], [0, \"⋓\"], [0, \"⋔\"], [0, \"⋕\"], [0, \"⋖\"], [0, \"⋗\"], [0, { v: \"⋘\", n: 824, o: \"⋘̸\" }], [0, { v: \"⋙\", n: 824, o: \"⋙̸\" }], [0, { v: \"⋚\", n: 65024, o: \"⋚︀\" }], [0, { v: \"⋛\", n: 65024, o: \"⋛︀\" }], [2, \"⋞\"], [0, \"⋟\"], [0, \"⋠\"], [0, \"⋡\"], [0, \"⋢\"], [0, \"⋣\"], [2, \"⋦\"], [0, \"⋧\"], [0, \"⋨\"], [0, \"⋩\"], [0, \"⋪\"], [0, \"⋫\"], [0, \"⋬\"], [0, \"⋭\"], [0, \"⋮\"], [0, \"⋯\"], [0, \"⋰\"], [0, \"⋱\"], [0, \"⋲\"], [0, \"⋳\"], [0, \"⋴\"], [0, { v: \"⋵\", n: 824, o: \"⋵̸\" }], [0, \"⋶\"], [0, \"⋷\"], [1, { v: \"⋹\", n: 824, o: \"⋹̸\" }], [0, \"⋺\"], [0, \"⋻\"], [0, \"⋼\"], [0, \"⋽\"], [0, \"⋾\"], [6, \"⌅\"], [0, \"⌆\"], [1, \"⌈\"], [0, \"⌉\"], [0, \"⌊\"], [0, \"⌋\"], [0, \"⌌\"], [0, \"⌍\"], [0, \"⌎\"], [0, \"⌏\"], [0, \"⌐\"], [1, \"⌒\"], [0, \"⌓\"], [1, \"⌕\"], [0, \"⌖\"], [5, \"⌜\"], [0, \"⌝\"], [0, \"⌞\"], [0, \"⌟\"], [2, \"⌢\"], [0, \"⌣\"], [9, \"⌭\"], [0, \"⌮\"], [7, \"⌶\"], [6, \"⌽\"], [1, \"⌿\"], [60, \"⍼\"], [51, \"⎰\"], [0, \"⎱\"], [2, \"⎴\"], [0, \"⎵\"], [0, \"⎶\"], [37, \"⏜\"], [0, \"⏝\"], [0, \"⏞\"], [0, \"⏟\"], [2, \"⏢\"], [4, \"⏧\"], [59, \"␣\"], [164, \"Ⓢ\"], [55, \"─\"], [1, \"│\"], [9, \"┌\"], [3, \"┐\"], [3, \"└\"], [3, \"┘\"], [3, \"├\"], [7, \"┤\"], [7, \"┬\"], [7, \"┴\"], [7, \"┼\"], [19, \"═\"], [0, \"║\"], [0, \"╒\"], [0, \"╓\"], [0, \"╔\"], [0, \"╕\"], [0, \"╖\"], [0, \"╗\"], [0, \"╘\"], [0, \"╙\"], [0, \"╚\"], [0, \"╛\"], [0, \"╜\"], [0, \"╝\"], [0, \"╞\"], [0, \"╟\"], [0, \"╠\"], [0, \"╡\"], [0, \"╢\"], [0, \"╣\"], [0, \"╤\"], [0, \"╥\"], [0, \"╦\"], [0, \"╧\"], [0, \"╨\"], [0, \"╩\"], [0, \"╪\"], [0, \"╫\"], [0, \"╬\"], [19, \"▀\"], [3, \"▄\"], [3, \"█\"], [8, \"░\"], [0, \"▒\"], [0, \"▓\"], [13, \"□\"], [8, \"▪\"], [0, \"▫\"], [1, \"▭\"], [0, \"▮\"], [2, \"▱\"], [1, \"△\"], [0, \"▴\"], [0, \"▵\"], [2, \"▸\"], [0, \"▹\"], [3, \"▽\"], [0, \"▾\"], [0, \"▿\"], [2, \"◂\"], [0, \"◃\"], [6, \"◊\"], [0, \"○\"], [32, \"◬\"], [2, \"◯\"], [8, \"◸\"], [0, \"◹\"], [0, \"◺\"], [0, \"◻\"], [0, \"◼\"], [8, \"★\"], [0, \"☆\"], [7, \"☎\"], [49, \"♀\"], [1, \"♂\"], [29, \"♠\"], [2, \"♣\"], [1, \"♥\"], [0, \"♦\"], [3, \"♪\"], [2, \"♭\"], [0, \"♮\"], [0, \"♯\"], [163, \"✓\"], [3, \"✗\"], [8, \"✠\"], [21, \"✶\"], [33, \"❘\"], [25, \"❲\"], [0, \"❳\"], [84, \"⟈\"], [0, \"⟉\"], [28, \"⟦\"], [0, \"⟧\"], [0, \"⟨\"], [0, \"⟩\"], [0, \"⟪\"], [0, \"⟫\"], [0, \"⟬\"], [0, \"⟭\"], [7, \"⟵\"], [0, \"⟶\"], [0, \"⟷\"], [0, \"⟸\"], [0, \"⟹\"], [0, \"⟺\"], [1, \"⟼\"], [2, \"⟿\"], [258, \"⤂\"], [0, \"⤃\"], [0, \"⤄\"], [0, \"⤅\"], [6, \"⤌\"], [0, \"⤍\"], [0, \"⤎\"], [0, \"⤏\"], [0, \"⤐\"], [0, \"⤑\"], [0, \"⤒\"], [0, \"⤓\"], [2, \"⤖\"], [2, \"⤙\"], [0, \"⤚\"], [0, \"⤛\"], [0, \"⤜\"], [0, \"⤝\"], [0, \"⤞\"], [0, \"⤟\"], [0, \"⤠\"], [2, \"⤣\"], [0, \"⤤\"], [0, \"⤥\"], [0, \"⤦\"], [0, \"⤧\"], [0, \"⤨\"], [0, \"⤩\"], [0, \"⤪\"], [8, { v: \"⤳\", n: 824, o: \"⤳̸\" }], [1, \"⤵\"], [0, \"⤶\"], [0, \"⤷\"], [0, \"⤸\"], [0, \"⤹\"], [2, \"⤼\"], [0, \"⤽\"], [7, \"⥅\"], [2, \"⥈\"], [0, \"⥉\"], [0, \"⥊\"], [0, \"⥋\"], [2, \"⥎\"], [0, \"⥏\"], [0, \"⥐\"], [0, \"⥑\"], [0, \"⥒\"], [0, \"⥓\"], [0, \"⥔\"], [0, \"⥕\"], [0, \"⥖\"], [0, \"⥗\"], [0, \"⥘\"], [0, \"⥙\"], [0, \"⥚\"], [0, \"⥛\"], [0, \"⥜\"], [0, \"⥝\"], [0, \"⥞\"], [0, \"⥟\"], [0, \"⥠\"], [0, \"⥡\"], [0, \"⥢\"], [0, \"⥣\"], [0, \"⥤\"], [0, \"⥥\"], [0, \"⥦\"], [0, \"⥧\"], [0, \"⥨\"], [0, \"⥩\"], [0, \"⥪\"], [0, \"⥫\"], [0, \"⥬\"], [0, \"⥭\"], [0, \"⥮\"], [0, \"⥯\"], [0, \"⥰\"], [0, \"⥱\"], [0, \"⥲\"], [0, \"⥳\"], [0, \"⥴\"], [0, \"⥵\"], [0, \"⥶\"], [1, \"⥸\"], [0, \"⥹\"], [1, \"⥻\"], [0, \"⥼\"], [0, \"⥽\"], [0, \"⥾\"], [0, \"⥿\"], [5, \"⦅\"], [0, \"⦆\"], [4, \"⦋\"], [0, \"⦌\"], [0, \"⦍\"], [0, \"⦎\"], [0, \"⦏\"], [0, \"⦐\"], [0, \"⦑\"], [0, \"⦒\"], [0, \"⦓\"], [0, \"⦔\"], [0, \"⦕\"], [0, \"⦖\"], [3, \"⦚\"], [1, \"⦜\"], [0, \"⦝\"], [6, \"⦤\"], [0, \"⦥\"], [0, \"⦦\"], [0, \"⦧\"], [0, \"⦨\"], [0, \"⦩\"], [0, \"⦪\"], [0, \"⦫\"], [0, \"⦬\"], [0, \"⦭\"], [0, \"⦮\"], [0, \"⦯\"], [0, \"⦰\"], [0, \"⦱\"], [0, \"⦲\"], [0, \"⦳\"], [0, \"⦴\"], [0, \"⦵\"], [0, \"⦶\"], [0, \"⦷\"], [1, \"⦹\"], [1, \"⦻\"], [0, \"⦼\"], [1, \"⦾\"], [0, \"⦿\"], [0, \"⧀\"], [0, \"⧁\"], [0, \"⧂\"], [0, \"⧃\"], [0, \"⧄\"], [0, \"⧅\"], [3, \"⧉\"], [3, \"⧍\"], [0, \"⧎\"], [0, { v: \"⧏\", n: 824, o: \"⧏̸\" }], [0, { v: \"⧐\", n: 824, o: \"⧐̸\" }], [11, \"⧜\"], [0, \"⧝\"], [0, \"⧞\"], [4, \"⧣\"], [0, \"⧤\"], [0, \"⧥\"], [5, \"⧫\"], [8, \"⧴\"], [1, \"⧶\"], [9, \"⨀\"], [0, \"⨁\"], [0, \"⨂\"], [1, \"⨄\"], [1, \"⨆\"], [5, \"⨌\"], [0, \"⨍\"], [2, \"⨐\"], [0, \"⨑\"], [0, \"⨒\"], [0, \"⨓\"], [0, \"⨔\"], [0, \"⨕\"], [0, \"⨖\"], [0, \"⨗\"], [10, \"⨢\"], [0, \"⨣\"], [0, \"⨤\"], [0, \"⨥\"], [0, \"⨦\"], [0, \"⨧\"], [1, \"⨩\"], [0, \"⨪\"], [2, \"⨭\"], [0, \"⨮\"], [0, \"⨯\"], [0, \"⨰\"], [0, \"⨱\"], [1, \"⨳\"], [0, \"⨴\"], [0, \"⨵\"], [0, \"⨶\"], [0, \"⨷\"], [0, \"⨸\"], [0, \"⨹\"], [0, \"⨺\"], [0, \"⨻\"], [0, \"⨼\"], [2, \"⨿\"], [0, \"⩀\"], [1, \"⩂\"], [0, \"⩃\"], [0, \"⩄\"], [0, \"⩅\"], [0, \"⩆\"], [0, \"⩇\"], [0, \"⩈\"], [0, \"⩉\"], [0, \"⩊\"], [0, \"⩋\"], [0, \"⩌\"], [0, \"⩍\"], [2, \"⩐\"], [2, \"⩓\"], [0, \"⩔\"], [0, \"⩕\"], [0, \"⩖\"], [0, \"⩗\"], [0, \"⩘\"], [1, \"⩚\"], [0, \"⩛\"], [0, \"⩜\"], [0, \"⩝\"], [1, \"⩟\"], [6, \"⩦\"], [3, \"⩪\"], [2, { v: \"⩭\", n: 824, o: \"⩭̸\" }], [0, \"⩮\"], [0, \"⩯\"], [0, { v: \"⩰\", n: 824, o: \"⩰̸\" }], [0, \"⩱\"], [0, \"⩲\"], [0, \"⩳\"], [0, \"⩴\"], [0, \"⩵\"], [1, \"⩷\"], [0, \"⩸\"], [0, \"⩹\"], [0, \"⩺\"], [0, \"⩻\"], [0, \"⩼\"], [0, { v: \"⩽\", n: 824, o: \"⩽̸\" }], [0, { v: \"⩾\", n: 824, o: \"⩾̸\" }], [0, \"⩿\"], [0, \"⪀\"], [0, \"⪁\"], [0, \"⪂\"], [0, \"⪃\"], [0, \"⪄\"], [0, \"⪅\"], [0, \"⪆\"], [0, \"⪇\"], [0, \"⪈\"], [0, \"⪉\"], [0, \"⪊\"], [0, \"⪋\"], [0, \"⪌\"], [0, \"⪍\"], [0, \"⪎\"], [0, \"⪏\"], [0, \"⪐\"], [0, \"⪑\"], [0, \"⪒\"], [0, \"⪓\"], [0, \"⪔\"], [0, \"⪕\"], [0, \"⪖\"], [0, \"⪗\"], [0, \"⪘\"], [0, \"⪙\"], [0, \"⪚\"], [2, \"⪝\"], [0, \"⪞\"], [0, \"⪟\"], [0, \"⪠\"], [0, { v: \"⪡\", n: 824, o: \"⪡̸\" }], [0, { v: \"⪢\", n: 824, o: \"⪢̸\" }], [1, \"⪤\"], [0, \"⪥\"], [0, \"⪦\"], [0, \"⪧\"], [0, \"⪨\"], [0, \"⪩\"], [0, \"⪪\"], [0, \"⪫\"], [0, { v: \"⪬\", n: 65024, o: \"⪬︀\" }], [0, { v: \"⪭\", n: 65024, o: \"⪭︀\" }], [0, \"⪮\"], [0, { v: \"⪯\", n: 824, o: \"⪯̸\" }], [0, { v: \"⪰\", n: 824, o: \"⪰̸\" }], [2, \"⪳\"], [0, \"⪴\"], [0, \"⪵\"], [0, \"⪶\"], [0, \"⪷\"], [0, \"⪸\"], [0, \"⪹\"], [0, \"⪺\"], [0, \"⪻\"], [0, \"⪼\"], [0, \"⪽\"], [0, \"⪾\"], [0, \"⪿\"], [0, \"⫀\"], [0, \"⫁\"], [0, \"⫂\"], [0, \"⫃\"], [0, \"⫄\"], [0, { v: \"⫅\", n: 824, o: \"⫅̸\" }], [0, { v: \"⫆\", n: 824, o: \"⫆̸\" }], [0, \"⫇\"], [0, \"⫈\"], [2, { v: \"⫋\", n: 65024, o: \"⫋︀\" }], [0, { v: \"⫌\", n: 65024, o: \"⫌︀\" }], [2, \"⫏\"], [0, \"⫐\"], [0, \"⫑\"], [0, \"⫒\"], [0, \"⫓\"], [0, \"⫔\"], [0, \"⫕\"], [0, \"⫖\"], [0, \"⫗\"], [0, \"⫘\"], [0, \"⫙\"], [0, \"⫚\"], [0, \"⫛\"], [8, \"⫤\"], [1, \"⫦\"], [0, \"⫧\"], [0, \"⫨\"], [0, \"⫩\"], [1, \"⫫\"], [0, \"⫬\"], [0, \"⫭\"], [0, \"⫮\"], [0, \"⫯\"], [0, \"⫰\"], [0, \"⫱\"], [0, \"⫲\"], [0, \"⫳\"], [9, { v: \"⫽\", n: 8421, o: \"⫽⃥\" }], [44343, { n: new Map(/* #__PURE__ */ restoreDiff([[56476, \"𝒜\"], [1, \"𝒞\"], [0, \"𝒟\"], [2, \"𝒢\"], [2, \"𝒥\"], [0, \"𝒦\"], [2, \"𝒩\"], [0, \"𝒪\"], [0, \"𝒫\"], [0, \"𝒬\"], [1, \"𝒮\"], [0, \"𝒯\"], [0, \"𝒰\"], [0, \"𝒱\"], [0, \"𝒲\"], [0, \"𝒳\"], [0, \"𝒴\"], [0, \"𝒵\"], [0, \"𝒶\"], [0, \"𝒷\"], [0, \"𝒸\"], [0, \"𝒹\"], [1, \"𝒻\"], [1, \"𝒽\"], [0, \"𝒾\"], [0, \"𝒿\"], [0, \"𝓀\"], [0, \"𝓁\"], [0, \"𝓂\"], [0, \"𝓃\"], [1, \"𝓅\"], [0, \"𝓆\"], [0, \"𝓇\"], [0, \"𝓈\"], [0, \"𝓉\"], [0, \"𝓊\"], [0, \"𝓋\"], [0, \"𝓌\"], [0, \"𝓍\"], [0, \"𝓎\"], [0, \"𝓏\"], [52, \"𝔄\"], [0, \"𝔅\"], [1, \"𝔇\"], [0, \"𝔈\"], [0, \"𝔉\"], [0, \"𝔊\"], [2, \"𝔍\"], [0, \"𝔎\"], [0, \"𝔏\"], [0, \"𝔐\"], [0, \"𝔑\"], [0, \"𝔒\"], [0, \"𝔓\"], [0, \"𝔔\"], [1, \"𝔖\"], [0, \"𝔗\"], [0, \"𝔘\"], [0, \"𝔙\"], [0, \"𝔚\"], [0, \"𝔛\"], [0, \"𝔜\"], [1, \"𝔞\"], [0, \"𝔟\"], [0, \"𝔠\"], [0, \"𝔡\"], [0, \"𝔢\"], [0, \"𝔣\"], [0, \"𝔤\"], [0, \"𝔥\"], [0, \"𝔦\"], [0, \"𝔧\"], [0, \"𝔨\"], [0, \"𝔩\"], [0, \"𝔪\"], [0, \"𝔫\"], [0, \"𝔬\"], [0, \"𝔭\"], [0, \"𝔮\"], [0, \"𝔯\"], [0, \"𝔰\"], [0, \"𝔱\"], [0, \"𝔲\"], [0, \"𝔳\"], [0, \"𝔴\"], [0, \"𝔵\"], [0, \"𝔶\"], [0, \"𝔷\"], [0, \"𝔸\"], [0, \"𝔹\"], [1, \"𝔻\"], [0, \"𝔼\"], [0, \"𝔽\"], [0, \"𝔾\"], [1, \"𝕀\"], [0, \"𝕁\"], [0, \"𝕂\"], [0, \"𝕃\"], [0, \"𝕄\"], [1, \"𝕆\"], [3, \"𝕊\"], [0, \"𝕋\"], [0, \"𝕌\"], [0, \"𝕍\"], [0, \"𝕎\"], [0, \"𝕏\"], [0, \"𝕐\"], [1, \"𝕒\"], [0, \"𝕓\"], [0, \"𝕔\"], [0, \"𝕕\"], [0, \"𝕖\"], [0, \"𝕗\"], [0, \"𝕘\"], [0, \"𝕙\"], [0, \"𝕚\"], [0, \"𝕛\"], [0, \"𝕜\"], [0, \"𝕝\"], [0, \"𝕞\"], [0, \"𝕟\"], [0, \"𝕠\"], [0, \"𝕡\"], [0, \"𝕢\"], [0, \"𝕣\"], [0, \"𝕤\"], [0, \"𝕥\"], [0, \"𝕦\"], [0, \"𝕧\"], [0, \"𝕨\"], [0, \"𝕩\"], [0, \"𝕪\"], [0, \"𝕫\"]])) }], [8906, \"ff\"], [0, \"fi\"], [0, \"fl\"], [0, \"ffi\"], [0, \"ffl\"]]));\n//# sourceMappingURL=encode-html.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodeXMLStrict = exports.decodeHTML5Strict = exports.decodeHTML4Strict = exports.decodeHTML5 = exports.decodeHTML4 = exports.decodeHTMLAttribute = exports.decodeHTMLStrict = exports.decodeHTML = exports.decodeXML = exports.DecodingMode = exports.EntityDecoder = exports.encodeHTML5 = exports.encodeHTML4 = exports.encodeNonAsciiHTML = exports.encodeHTML = exports.escapeText = exports.escapeAttribute = exports.escapeUTF8 = exports.escape = exports.encodeXML = exports.encode = exports.decodeStrict = exports.decode = exports.EncodingMode = exports.EntityLevel = void 0;\nvar decode_js_1 = require(\"./decode.js\");\nvar encode_js_1 = require(\"./encode.js\");\nvar escape_js_1 = require(\"./escape.js\");\n/** The level of entities to support. */\nvar EntityLevel;\n(function (EntityLevel) {\n /** Support only XML entities. */\n EntityLevel[EntityLevel[\"XML\"] = 0] = \"XML\";\n /** Support HTML entities, which are a superset of XML entities. */\n EntityLevel[EntityLevel[\"HTML\"] = 1] = \"HTML\";\n})(EntityLevel = exports.EntityLevel || (exports.EntityLevel = {}));\nvar EncodingMode;\n(function (EncodingMode) {\n /**\n * The output is UTF-8 encoded. Only characters that need escaping within\n * XML will be escaped.\n */\n EncodingMode[EncodingMode[\"UTF8\"] = 0] = \"UTF8\";\n /**\n * The output consists only of ASCII characters. Characters that need\n * escaping within HTML, and characters that aren't ASCII characters will\n * be escaped.\n */\n EncodingMode[EncodingMode[\"ASCII\"] = 1] = \"ASCII\";\n /**\n * Encode all characters that have an equivalent entity, as well as all\n * characters that are not ASCII characters.\n */\n EncodingMode[EncodingMode[\"Extensive\"] = 2] = \"Extensive\";\n /**\n * Encode all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n */\n EncodingMode[EncodingMode[\"Attribute\"] = 3] = \"Attribute\";\n /**\n * Encode all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n */\n EncodingMode[EncodingMode[\"Text\"] = 4] = \"Text\";\n})(EncodingMode = exports.EncodingMode || (exports.EncodingMode = {}));\n/**\n * Decodes a string with entities.\n *\n * @param data String to decode.\n * @param options Decoding options.\n */\nfunction decode(data, options) {\n if (options === void 0) { options = EntityLevel.XML; }\n var level = typeof options === \"number\" ? options : options.level;\n if (level === EntityLevel.HTML) {\n var mode = typeof options === \"object\" ? options.mode : undefined;\n return (0, decode_js_1.decodeHTML)(data, mode);\n }\n return (0, decode_js_1.decodeXML)(data);\n}\nexports.decode = decode;\n/**\n * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n *\n * @param data String to decode.\n * @param options Decoding options.\n * @deprecated Use `decode` with the `mode` set to `Strict`.\n */\nfunction decodeStrict(data, options) {\n var _a;\n if (options === void 0) { options = EntityLevel.XML; }\n var opts = typeof options === \"number\" ? { level: options } : options;\n (_a = opts.mode) !== null && _a !== void 0 ? _a : (opts.mode = decode_js_1.DecodingMode.Strict);\n return decode(data, opts);\n}\nexports.decodeStrict = decodeStrict;\n/**\n * Encodes a string with entities.\n *\n * @param data String to encode.\n * @param options Encoding options.\n */\nfunction encode(data, options) {\n if (options === void 0) { options = EntityLevel.XML; }\n var opts = typeof options === \"number\" ? { level: options } : options;\n // Mode `UTF8` just escapes XML entities\n if (opts.mode === EncodingMode.UTF8)\n return (0, escape_js_1.escapeUTF8)(data);\n if (opts.mode === EncodingMode.Attribute)\n return (0, escape_js_1.escapeAttribute)(data);\n if (opts.mode === EncodingMode.Text)\n return (0, escape_js_1.escapeText)(data);\n if (opts.level === EntityLevel.HTML) {\n if (opts.mode === EncodingMode.ASCII) {\n return (0, encode_js_1.encodeNonAsciiHTML)(data);\n }\n return (0, encode_js_1.encodeHTML)(data);\n }\n // ASCII and Extensive are equivalent\n return (0, escape_js_1.encodeXML)(data);\n}\nexports.encode = encode;\nvar escape_js_2 = require(\"./escape.js\");\nObject.defineProperty(exports, \"encodeXML\", { enumerable: true, get: function () { return escape_js_2.encodeXML; } });\nObject.defineProperty(exports, \"escape\", { enumerable: true, get: function () { return escape_js_2.escape; } });\nObject.defineProperty(exports, \"escapeUTF8\", { enumerable: true, get: function () { return escape_js_2.escapeUTF8; } });\nObject.defineProperty(exports, \"escapeAttribute\", { enumerable: true, get: function () { return escape_js_2.escapeAttribute; } });\nObject.defineProperty(exports, \"escapeText\", { enumerable: true, get: function () { return escape_js_2.escapeText; } });\nvar encode_js_2 = require(\"./encode.js\");\nObject.defineProperty(exports, \"encodeHTML\", { enumerable: true, get: function () { return encode_js_2.encodeHTML; } });\nObject.defineProperty(exports, \"encodeNonAsciiHTML\", { enumerable: true, get: function () { return encode_js_2.encodeNonAsciiHTML; } });\n// Legacy aliases (deprecated)\nObject.defineProperty(exports, \"encodeHTML4\", { enumerable: true, get: function () { return encode_js_2.encodeHTML; } });\nObject.defineProperty(exports, \"encodeHTML5\", { enumerable: true, get: function () { return encode_js_2.encodeHTML; } });\nvar decode_js_2 = require(\"./decode.js\");\nObject.defineProperty(exports, \"EntityDecoder\", { enumerable: true, get: function () { return decode_js_2.EntityDecoder; } });\nObject.defineProperty(exports, \"DecodingMode\", { enumerable: true, get: function () { return decode_js_2.DecodingMode; } });\nObject.defineProperty(exports, \"decodeXML\", { enumerable: true, get: function () { return decode_js_2.decodeXML; } });\nObject.defineProperty(exports, \"decodeHTML\", { enumerable: true, get: function () { return decode_js_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTMLStrict\", { enumerable: true, get: function () { return decode_js_2.decodeHTMLStrict; } });\nObject.defineProperty(exports, \"decodeHTMLAttribute\", { enumerable: true, get: function () { return decode_js_2.decodeHTMLAttribute; } });\n// Legacy aliases (deprecated)\nObject.defineProperty(exports, \"decodeHTML4\", { enumerable: true, get: function () { return decode_js_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTML5\", { enumerable: true, get: function () { return decode_js_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTML4Strict\", { enumerable: true, get: function () { return decode_js_2.decodeHTMLStrict; } });\nObject.defineProperty(exports, \"decodeHTML5Strict\", { enumerable: true, get: function () { return decode_js_2.decodeHTMLStrict; } });\nObject.defineProperty(exports, \"decodeXMLStrict\", { enumerable: true, get: function () { return decode_js_2.decodeXML; } });\n//# sourceMappingURL=index.js.map","const propMap = {\n 'r': 'rotate',\n 'ry': 'rotateY',\n 't': 'translateX',\n 'ty': 'translateY',\n}\n\nconst transformsMap = {\n '2': {\n 'ry': 180,\n },\n '3': {\n 'r': 180,\n },\n '4': {\n 'r': 180,\n 'ry': 180,\n },\n '5': {\n 'r': 270,\n 'ry': 180,\n },\n '6': {\n 'ty': -1,\n 'r': 90,\n },\n '7': {\n 'ty': -1,\n 't': -1,\n 'r': 90,\n 'ry': 180,\n },\n '8': {\n 't': -1,\n 'r': 270,\n },\n}\n\nconst transformOriginMap = {\n '5': 'top left',\n '6': 'bottom left',\n '7': 'bottom right',\n '8': 'top right',\n}\n\nfunction expandTransforms(transforms) {\n const o = {}\n let expanded = false\n for (let prop in transforms) {\n if (!expanded) expanded = true\n var ep = propMap[prop]\n o[ep] = transforms[prop]\n }\n return expanded ? o : null\n}\n\nfunction getValue(prop, value) {\n if (prop === 'r' || prop === 'ry') {\n return `${value}deg`\n }\n if (prop === 't' || prop === 'ty') {\n return `${value * 100}%`\n }\n}\n\nfunction expandTransform(transforms) {\n const a = []\n for (let prop in transforms) {\n const ep = propMap[prop]\n a.push(ep + '(' + getValue(prop, transforms[prop]) + ')')\n }\n return a.length ? a.join(' ') : null\n}\n\nfunction expandTransformStrings(transforms) {\n const o = {}\n let expanded = false\n for (let prop in transforms) {\n if (!expanded) expanded = true\n const ep = propMap[prop]\n o[ep] = ep + '(' + getValue(prop, transforms[prop]) + ')'\n }\n return expanded ? o : null\n}\n\n/**\n * Takes the input EXIF orientation and returns the CSS rules needed to display the image correctly in the browser.\n * @param {(number|string)} orientation The EXIF orientation.\n * @returns {Exif2CssReturn} An object with `transform`, `transform-origin` (not shown in JSDoc because of hyphen), `transforms` and `transformStrings` properties.\n */\nfunction exif2css(orientation) {\n const s = `${orientation}`\n const transforms = transformsMap[s]\n\n const transform = expandTransform(transforms)\n const transformOrigin = transformOriginMap[s]\n const allTransforms = expandTransforms(transforms)\n const allTransformStrings = expandTransformStrings(transforms)\n\n const css = {}\n if (transform) {\n css['transform'] = transform\n }\n if (transformOrigin) {\n css['transform-origin'] = transformOrigin\n }\n if (allTransforms) {\n css['transforms'] = allTransforms\n }\n if (allTransformStrings) {\n css['transformStrings'] = allTransformStrings\n }\n return css\n}\n\n/* documentary types/index.xml */\n/**\n * @typedef {Object} Exif2CssReturn The return type of the function.\n * @prop {string} [transform] The complete CSS `transform` rule that contains all transforms.\n * @prop {('top left'|'top right'|'bottom left'|'bottom right')} [transform-origin] The transform origin CSS rule for orientations >= 5.\n * @prop {{translateY: number, translateX: number, rotate: number, rotateY: number}} [transforms] The raw transforms as numbers, where translates are either `-1` or `1` and rotations are either `90`, `180` and `270`.\n * @prop {{translateY: string, translateX: string, rotate: string, rotateY: string}} [transformStrings] The transforms split by individual rules that can be applied in the browser.\n */\n\nexport default exif2css","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","'use strict';\n\nconst parser = require('./lib/parser');\nconst processingInstructions = require('./lib/processing-instructions');\nconst isValidNodeDefinitions = require('./lib/is-valid-node-definitions');\nconst processNodeDefinitions = require('./lib/process-node-definitions');\n\nmodule.exports = {\n Parser: parser,\n ProcessingInstructions: processingInstructions,\n IsValidNodeDefinitions: isValidNodeDefinitions,\n ProcessNodeDefinitions: processNodeDefinitions,\n};\n","// These are all sourced from https://facebook.github.io/react/docs/tags-and-attributes.html -\n// all attributes regardless of whether they have a different case to their HTML equivalents are\n// listed to reduce the chance of human error and make it easier to just copy-paste the new list if\n// it changes.\n'use strict';\nconst HTML_ATTRIBUTES = [\n 'accept', 'acceptCharset', 'accessKey', 'action', 'allowFullScreen', 'allowTransparency',\n 'alt', 'async', 'autoComplete', 'autoFocus', 'autoPlay', 'capture', 'cellPadding',\n 'cellSpacing', 'challenge', 'charSet', 'checked', 'cite', 'classID', 'className',\n 'colSpan', 'cols', 'content', 'contentEditable', 'contextMenu', 'controls', 'coords',\n 'crossOrigin', 'data', 'dateTime', 'default', 'defer', 'dir', 'disabled', 'download',\n 'draggable', 'encType', 'form', 'formAction', 'formEncType', 'formMethod', 'formNoValidate',\n 'formTarget', 'frameBorder', 'headers', 'height', 'hidden', 'high', 'href', 'hrefLang',\n 'htmlFor', 'httpEquiv', 'icon', 'id', 'inputMode', 'integrity', 'is', 'keyParams', 'keyType',\n 'kind', 'label', 'lang', 'list', 'loop', 'low', 'manifest', 'marginHeight', 'marginWidth',\n 'max', 'maxLength', 'media', 'mediaGroup', 'method', 'min', 'minLength', 'multiple', 'muted',\n 'name', 'noValidate', 'nonce', 'open', 'optimum', 'pattern', 'placeholder', 'poster',\n 'preload', 'profile', 'radioGroup', 'readOnly', 'rel', 'required', 'reversed', 'role',\n 'rowSpan', 'rows', 'sandbox', 'scope', 'scoped', 'scrolling', 'seamless', 'selected',\n 'shape', 'size', 'sizes', 'span', 'spellCheck', 'src', 'srcDoc', 'srcLang', 'srcSet', 'start',\n 'step', 'style', 'summary', 'tabIndex', 'target', 'title', 'type', 'useMap', 'value', 'width',\n 'wmode', 'wrap', 'onClick',\n];\n\nconst NON_STANDARD_ATTRIBUTES = [\n 'autoCapitalize', 'autoCorrect', 'color', 'itemProp', 'itemScope', 'itemType', 'itemRef',\n 'itemID', 'security', 'unselectable', 'results', 'autoSave',\n];\n\nconst SVG_ATTRIBUTES = [\n 'accentHeight', 'accumulate', 'additive', 'alignmentBaseline', 'allowReorder', 'alphabetic',\n 'amplitude', 'arabicForm', 'ascent', 'attributeName', 'attributeType', 'autoReverse', 'azimuth',\n 'baseFrequency', 'baseProfile', 'baselineShift', 'bbox', 'begin', 'bias', 'by', 'calcMode',\n 'capHeight', 'clip', 'clipPath', 'clipPathUnits', 'clipRule', 'colorInterpolation',\n 'colorInterpolationFilters', 'colorProfile', 'colorRendering', 'contentScriptType',\n 'contentStyleType', 'cursor', 'cx', 'cy', 'd', 'decelerate', 'descent', 'diffuseConstant',\n 'direction', 'display', 'divisor', 'dominantBaseline', 'dur', 'dx', 'dy', 'edgeMode',\n 'elevation', 'enableBackground', 'end', 'exponent', 'externalResourcesRequired', 'fill',\n 'fillOpacity', 'fillRule', 'filter', 'filterRes', 'filterUnits', 'floodColor', 'floodOpacity',\n 'focusable', 'fontFamily', 'fontSize', 'fontSizeAdjust', 'fontStretch', 'fontStyle',\n 'fontVariant', 'fontWeight', 'format', 'from', 'fx', 'fy', 'g1', 'g2', 'glyphName',\n 'glyphOrientationHorizontal', 'glyphOrientationVertical', 'glyphRef',\n 'gradientTransform', 'gradientUnits', 'hanging', 'horizAdvX', 'horizOriginX', 'ideographic',\n 'imageRendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kernelMatrix',\n 'kernelUnitLength', 'kerning', 'keyPoints', 'keySplines', 'keyTimes', 'lengthAdjust',\n 'letterSpacing', 'lightingColor', 'limitingConeAngle', 'local', 'markerEnd', 'markerHeight',\n 'markerMid', 'markerStart', 'markerUnits', 'markerWidth', 'mask', 'maskContentUnits',\n 'maskUnits', 'mathematical', 'mode', 'numOctaves', 'offset', 'opacity', 'operator', 'order',\n 'orient', 'orientation', 'origin', 'overflow', 'overlinePosition', 'overlineThickness',\n 'paintOrder', 'panose1', 'pathLength', 'patternContentUnits', 'patternTransform',\n 'patternUnits', 'pointerEvents', 'points', 'pointsAtX', 'pointsAtY', 'pointsAtZ',\n 'preserveAlpha', 'preserveAspectRatio', 'primitiveUnits', 'r', 'radius', 'refX', 'refY',\n 'renderingIntent', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures',\n 'restart', 'result', 'rotate', 'rx', 'ry', 'scale', 'seed', 'shapeRendering', 'slope',\n 'spacing', 'specularConstant', 'specularExponent', 'speed', 'spreadMethod', 'startOffset',\n 'stdDeviation', 'stemh', 'stemv', 'stitchTiles', 'stopColor', 'stopOpacity',\n 'strikethroughPosition', 'strikethroughThickness', 'string', 'stroke', 'strokeDasharray',\n 'strokeDashoffset', 'strokeLinecap', 'strokeLinejoin', 'strokeMiterlimit', 'strokeOpacity',\n 'strokeWidth', 'surfaceScale', 'systemLanguage', 'tableValues', 'targetX', 'targetY',\n 'textAnchor', 'textDecoration', 'textLength', 'textRendering', 'to', 'transform', 'u1',\n 'u2', 'underlinePosition', 'underlineThickness', 'unicode', 'unicodeBidi', 'unicodeRange',\n 'unitsPerEm', 'vAlphabetic', 'vHanging', 'vIdeographic', 'vMathematical', 'values',\n 'vectorEffect', 'version', 'vertAdvY', 'vertOriginX', 'vertOriginY', 'viewBox',\n 'viewTarget', 'visibility', 'widths', 'wordSpacing', 'writingMode', 'x', 'x1', 'x2',\n 'xChannelSelector', 'xHeight', 'xlinkActuate', 'xlinkArcrole', 'xlinkHref', 'xlinkRole',\n 'xlinkShow', 'xlinkTitle', 'xlinkType', 'xmlns', 'xmlnsXlink', 'xmlBase', 'xmlLang',\n 'xmlSpace', 'y', 'y1', 'y2', 'yChannelSelector', 'z', 'zoomAndPan',\n];\n\nconst camelCaseMap = HTML_ATTRIBUTES\n .concat(NON_STANDARD_ATTRIBUTES)\n .concat(SVG_ATTRIBUTES)\n .reduce(function (soFar, attr) {\n const lower = attr.toLowerCase();\n if (lower !== attr) {\n soFar[lower] = attr;\n }\n return soFar;\n }, {});\n\nmodule.exports = camelCaseMap;\n","'use strict';\nfunction alwaysValid() {\n return true;\n}\n\nmodule.exports = {\n alwaysValid: alwaysValid,\n};\n","'use strict';\nconst HtmlParser = require('htmlparser2').Parser;\nconst DomHandler = require('domhandler').DomHandler;\nconst ProcessingInstructions = require('./processing-instructions');\nconst IsValidNodeDefinitions = require('./is-valid-node-definitions');\nconst utils = require('./utils');\n\nfunction Html2ReactParser(options) {\n function parseHtmlToTree(html) {\n options = options || {};\n options.decodeEntities = true;\n const handler = new DomHandler();\n const parser = new HtmlParser(handler, options);\n parser.parseComplete(html);\n return handler.dom.filter(function (element) {\n return element.type !== 'directive';\n });\n };\n\n function traverseDom(node, isValidNode, processingInstructions, preprocessingInstructions,\n index) {\n if (isValidNode(node)) {\n (preprocessingInstructions || []).forEach((instruction) => {\n if (instruction.shouldPreprocessNode(node)) {\n instruction.preprocessNode(node, index);\n }\n });\n\n const processingInstruction = (processingInstructions || []).find((instruction) => {\n return instruction.shouldProcessNode(node);\n });\n if (processingInstruction != null) {\n const children = (node.children || []).map((child, i) => {\n return traverseDom(child, isValidNode, processingInstructions,\n preprocessingInstructions, i);\n }).filter((child) => {\n return child != null && child !== false;\n });\n\n if (processingInstruction.replaceChildren) {\n return utils.createElement(node, index, node.data, [\n processingInstruction.processNode(node, children, index),\n ]);\n } else {\n return processingInstruction.processNode(node, children, index);\n }\n } else {\n return false;\n }\n } else {\n return false;\n }\n };\n\n function parseWithInstructions(html, isValidNode, processingInstructions,\n preprocessingInstructions) {\n const domTree = parseHtmlToTree(html);\n const list = domTree.map(function (domTreeItem, index) {\n return traverseDom(domTreeItem, isValidNode, processingInstructions,\n preprocessingInstructions, index);\n });\n return list.length <= 1 ? list[0] : list;\n };\n\n function parse(html) {\n const processingInstructions = new ProcessingInstructions();\n return parseWithInstructions(html,\n IsValidNodeDefinitions.alwaysValid,\n processingInstructions.defaultProcessingInstructions);\n };\n\n return {\n parse: parse,\n parseWithInstructions: parseWithInstructions,\n };\n};\n\nmodule.exports = Html2ReactParser;\n","'use strict';\nconst utils = require('./utils');\n\n// eslint-disable-next-line max-len\n// https://github.com/facebook/react/blob/15.0-stable/src/renderers/dom/shared/ReactDOMComponent.js#L457\nconst voidElementTags = [\n 'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'keygen', 'link', 'meta', 'param',\n 'source', 'track', 'wbr', 'menuitem', 'textarea',\n];\n\nfunction ProcessNodeDefinitions() {\n function processDefaultNode(node, children, index) {\n if (node.type === 'text') {\n return node.data;\n } else if (node.type === 'comment') {\n // FIXME: The following doesn't work as the generated HTML results in\n // \"<!-- This is a comment -->\"\n // return '<!-- ' + node.data + ' -->';\n return false;\n }\n\n if (voidElementTags.indexOf(node.name) > -1) {\n return utils.createElement(node, index);\n } else {\n return utils.createElement(node, index, node.data, children);\n }\n }\n\n return {\n processDefaultNode: processDefaultNode,\n };\n}\n\nmodule.exports = ProcessNodeDefinitions;\n","'use strict';\nconst ShouldProcessNodeDefinitions = require('./should-process-node-definitions');\nconst ProcessNodeDefinitions = require('./process-node-definitions');\n\nfunction ProcessingInstructions() {\n const processNodeDefinitions = new ProcessNodeDefinitions();\n\n return {\n defaultProcessingInstructions: [{\n shouldProcessNode: ShouldProcessNodeDefinitions.shouldProcessEveryNode,\n processNode: processNodeDefinitions.processDefaultNode,\n },],\n };\n};\n\nmodule.exports = ProcessingInstructions;\n","'use strict';\nfunction shouldProcessEveryNode(node) {\n return true;\n}\n\nmodule.exports = {\n shouldProcessEveryNode: shouldProcessEveryNode,\n};\n","'use strict';\nconst camelCase = require('lodash.camelcase');\nconst React = require('react');\nconst camelCaseAttrMap = require('./camel-case-attribute-names');\n\nfunction createStyleJsonFromString(styleString) {\n styleString = styleString || '';\n const styles = styleString.split(/;(?!base64)/);\n let singleStyle, key, value, jsonStyles = {};\n for (let i = 0; i < styles.length; ++i) {\n singleStyle = styles[i].split(':');\n if (singleStyle.length > 2) {\n singleStyle[1] = singleStyle.slice(1).join(':');\n }\n\n key = singleStyle[0];\n value = singleStyle[1];\n if (typeof value === 'string'){\n value = value.trim();\n }\n\n if (key != null && value != null && key.length > 0 && value.length > 0) {\n key = key.trim();\n\n // Don't camelCase CSS custom properties\n if (key.indexOf('--') !== 0) {\n key = camelCase(key);\n }\n\n jsonStyles[key] = value;\n }\n }\n return jsonStyles;\n}\n\n// Boolean HTML attributes, copied from https://meiert.com/en/blog/boolean-attributes-of-html/,\n// on the form React expects.\nconst booleanAttrs = [\n 'allowFullScreen',\n 'allowpaymentrequest',\n 'async',\n 'autoFocus',\n 'autoPlay',\n 'checked',\n 'controls',\n 'default',\n 'disabled',\n 'formNoValidate',\n 'hidden',\n 'ismap',\n 'itemScope',\n 'loop',\n 'multiple',\n 'muted',\n 'nomodule',\n 'noValidate',\n 'open',\n 'playsinline',\n 'readOnly',\n 'required',\n 'reversed',\n 'selected',\n 'truespeed',\n];\n\nfunction createElement(node, index, data, children) {\n let elementProps = {\n key: index,\n };\n if (node.attribs) {\n elementProps = Object.entries(node.attribs).reduce((result, [key, value,]) => {\n key = camelCaseAttrMap[key.replace(/[-:]/, '')] || key;\n if (key === 'style') {\n value = createStyleJsonFromString(value);\n } else if (key === 'class') {\n key = 'className';\n } else if (key === 'for') {\n key = 'htmlFor';\n } else if (key.startsWith('on')) {\n value = Function(value);\n }\n\n if (booleanAttrs.includes(key) && (value || '') === '') {\n value = key;\n }\n\n result[key] = value;\n return result;\n }, elementProps);\n }\n\n children = children || [];\n const allChildren = data != null ? [data,].concat(children) : children;\n return React.createElement.apply(\n null, [node.name, elementProps,].concat(allChildren)\n );\n}\n\nmodule.exports = {\n createElement,\n};\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Parser = void 0;\nvar Tokenizer_js_1 = __importStar(require(\"./Tokenizer.js\"));\nvar decode_js_1 = require(\"entities/lib/decode.js\");\nvar formTags = new Set([\n \"input\",\n \"option\",\n \"optgroup\",\n \"select\",\n \"button\",\n \"datalist\",\n \"textarea\",\n]);\nvar pTag = new Set([\"p\"]);\nvar tableSectionTags = new Set([\"thead\", \"tbody\"]);\nvar ddtTags = new Set([\"dd\", \"dt\"]);\nvar rtpTags = new Set([\"rt\", \"rp\"]);\nvar openImpliesClose = new Map([\n [\"tr\", new Set([\"tr\", \"th\", \"td\"])],\n [\"th\", new Set([\"th\"])],\n [\"td\", new Set([\"thead\", \"th\", \"td\"])],\n [\"body\", new Set([\"head\", \"link\", \"script\"])],\n [\"li\", new Set([\"li\"])],\n [\"p\", pTag],\n [\"h1\", pTag],\n [\"h2\", pTag],\n [\"h3\", pTag],\n [\"h4\", pTag],\n [\"h5\", pTag],\n [\"h6\", pTag],\n [\"select\", formTags],\n [\"input\", formTags],\n [\"output\", formTags],\n [\"button\", formTags],\n [\"datalist\", formTags],\n [\"textarea\", formTags],\n [\"option\", new Set([\"option\"])],\n [\"optgroup\", new Set([\"optgroup\", \"option\"])],\n [\"dd\", ddtTags],\n [\"dt\", ddtTags],\n [\"address\", pTag],\n [\"article\", pTag],\n [\"aside\", pTag],\n [\"blockquote\", pTag],\n [\"details\", pTag],\n [\"div\", pTag],\n [\"dl\", pTag],\n [\"fieldset\", pTag],\n [\"figcaption\", pTag],\n [\"figure\", pTag],\n [\"footer\", pTag],\n [\"form\", pTag],\n [\"header\", pTag],\n [\"hr\", pTag],\n [\"main\", pTag],\n [\"nav\", pTag],\n [\"ol\", pTag],\n [\"pre\", pTag],\n [\"section\", pTag],\n [\"table\", pTag],\n [\"ul\", pTag],\n [\"rt\", rtpTags],\n [\"rp\", rtpTags],\n [\"tbody\", tableSectionTags],\n [\"tfoot\", tableSectionTags],\n]);\nvar voidElements = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\nvar foreignContextElements = new Set([\"math\", \"svg\"]);\nvar htmlIntegrationElements = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignobject\",\n \"desc\",\n \"title\",\n]);\nvar reNameEnd = /\\s|\\//;\nvar Parser = /** @class */ (function () {\n function Parser(cbs, options) {\n if (options === void 0) { options = {}; }\n var _a, _b, _c, _d, _e;\n this.options = options;\n /** The start index of the last event. */\n this.startIndex = 0;\n /** The end index of the last event. */\n this.endIndex = 0;\n /**\n * Store the start index of the current open tag,\n * so we can update the start index for attributes.\n */\n this.openTagStart = 0;\n this.tagname = \"\";\n this.attribname = \"\";\n this.attribvalue = \"\";\n this.attribs = null;\n this.stack = [];\n this.foreignContext = [];\n this.buffers = [];\n this.bufferOffset = 0;\n /** The index of the last written buffer. Used when resuming after a `pause()`. */\n this.writeIndex = 0;\n /** Indicates whether the parser has finished running / `.end` has been called. */\n this.ended = false;\n this.cbs = cbs !== null && cbs !== void 0 ? cbs : {};\n this.lowerCaseTagNames = (_a = options.lowerCaseTags) !== null && _a !== void 0 ? _a : !options.xmlMode;\n this.lowerCaseAttributeNames =\n (_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : !options.xmlMode;\n this.tokenizer = new ((_c = options.Tokenizer) !== null && _c !== void 0 ? _c : Tokenizer_js_1.default)(this.options, this);\n (_e = (_d = this.cbs).onparserinit) === null || _e === void 0 ? void 0 : _e.call(_d, this);\n }\n // Tokenizer event handlers\n /** @internal */\n Parser.prototype.ontext = function (start, endIndex) {\n var _a, _b;\n var data = this.getSlice(start, endIndex);\n this.endIndex = endIndex - 1;\n (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, data);\n this.startIndex = endIndex;\n };\n /** @internal */\n Parser.prototype.ontextentity = function (cp) {\n var _a, _b;\n /*\n * Entities can be emitted on the character, or directly after.\n * We use the section start here to get accurate indices.\n */\n var index = this.tokenizer.getSectionStart();\n this.endIndex = index - 1;\n (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, (0, decode_js_1.fromCodePoint)(cp));\n this.startIndex = index;\n };\n Parser.prototype.isVoidElement = function (name) {\n return !this.options.xmlMode && voidElements.has(name);\n };\n /** @internal */\n Parser.prototype.onopentagname = function (start, endIndex) {\n this.endIndex = endIndex;\n var name = this.getSlice(start, endIndex);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n this.emitOpenTag(name);\n };\n Parser.prototype.emitOpenTag = function (name) {\n var _a, _b, _c, _d;\n this.openTagStart = this.startIndex;\n this.tagname = name;\n var impliesClose = !this.options.xmlMode && openImpliesClose.get(name);\n if (impliesClose) {\n while (this.stack.length > 0 &&\n impliesClose.has(this.stack[this.stack.length - 1])) {\n var element = this.stack.pop();\n (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, element, true);\n }\n }\n if (!this.isVoidElement(name)) {\n this.stack.push(name);\n if (foreignContextElements.has(name)) {\n this.foreignContext.push(true);\n }\n else if (htmlIntegrationElements.has(name)) {\n this.foreignContext.push(false);\n }\n }\n (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, name);\n if (this.cbs.onopentag)\n this.attribs = {};\n };\n Parser.prototype.endOpenTag = function (isImplied) {\n var _a, _b;\n this.startIndex = this.openTagStart;\n if (this.attribs) {\n (_b = (_a = this.cbs).onopentag) === null || _b === void 0 ? void 0 : _b.call(_a, this.tagname, this.attribs, isImplied);\n this.attribs = null;\n }\n if (this.cbs.onclosetag && this.isVoidElement(this.tagname)) {\n this.cbs.onclosetag(this.tagname, true);\n }\n this.tagname = \"\";\n };\n /** @internal */\n Parser.prototype.onopentagend = function (endIndex) {\n this.endIndex = endIndex;\n this.endOpenTag(false);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n };\n /** @internal */\n Parser.prototype.onclosetag = function (start, endIndex) {\n var _a, _b, _c, _d, _e, _f;\n this.endIndex = endIndex;\n var name = this.getSlice(start, endIndex);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n if (foreignContextElements.has(name) ||\n htmlIntegrationElements.has(name)) {\n this.foreignContext.pop();\n }\n if (!this.isVoidElement(name)) {\n var pos = this.stack.lastIndexOf(name);\n if (pos !== -1) {\n if (this.cbs.onclosetag) {\n var count = this.stack.length - pos;\n while (count--) {\n // We know the stack has sufficient elements.\n this.cbs.onclosetag(this.stack.pop(), count !== 0);\n }\n }\n else\n this.stack.length = pos;\n }\n else if (!this.options.xmlMode && name === \"p\") {\n // Implicit open before close\n this.emitOpenTag(\"p\");\n this.closeCurrentTag(true);\n }\n }\n else if (!this.options.xmlMode && name === \"br\") {\n // We can't use `emitOpenTag` for implicit open, as `br` would be implicitly closed.\n (_b = (_a = this.cbs).onopentagname) === null || _b === void 0 ? void 0 : _b.call(_a, \"br\");\n (_d = (_c = this.cbs).onopentag) === null || _d === void 0 ? void 0 : _d.call(_c, \"br\", {}, true);\n (_f = (_e = this.cbs).onclosetag) === null || _f === void 0 ? void 0 : _f.call(_e, \"br\", false);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n };\n /** @internal */\n Parser.prototype.onselfclosingtag = function (endIndex) {\n this.endIndex = endIndex;\n if (this.options.xmlMode ||\n this.options.recognizeSelfClosing ||\n this.foreignContext[this.foreignContext.length - 1]) {\n this.closeCurrentTag(false);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n else {\n // Ignore the fact that the tag is self-closing.\n this.onopentagend(endIndex);\n }\n };\n Parser.prototype.closeCurrentTag = function (isOpenImplied) {\n var _a, _b;\n var name = this.tagname;\n this.endOpenTag(isOpenImplied);\n // Self-closing tags will be on the top of the stack\n if (this.stack[this.stack.length - 1] === name) {\n // If the opening tag isn't implied, the closing tag has to be implied.\n (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, name, !isOpenImplied);\n this.stack.pop();\n }\n };\n /** @internal */\n Parser.prototype.onattribname = function (start, endIndex) {\n this.startIndex = start;\n var name = this.getSlice(start, endIndex);\n this.attribname = this.lowerCaseAttributeNames\n ? name.toLowerCase()\n : name;\n };\n /** @internal */\n Parser.prototype.onattribdata = function (start, endIndex) {\n this.attribvalue += this.getSlice(start, endIndex);\n };\n /** @internal */\n Parser.prototype.onattribentity = function (cp) {\n this.attribvalue += (0, decode_js_1.fromCodePoint)(cp);\n };\n /** @internal */\n Parser.prototype.onattribend = function (quote, endIndex) {\n var _a, _b;\n this.endIndex = endIndex;\n (_b = (_a = this.cbs).onattribute) === null || _b === void 0 ? void 0 : _b.call(_a, this.attribname, this.attribvalue, quote === Tokenizer_js_1.QuoteType.Double\n ? '\"'\n : quote === Tokenizer_js_1.QuoteType.Single\n ? \"'\"\n : quote === Tokenizer_js_1.QuoteType.NoValue\n ? undefined\n : null);\n if (this.attribs &&\n !Object.prototype.hasOwnProperty.call(this.attribs, this.attribname)) {\n this.attribs[this.attribname] = this.attribvalue;\n }\n this.attribvalue = \"\";\n };\n Parser.prototype.getInstructionName = function (value) {\n var index = value.search(reNameEnd);\n var name = index < 0 ? value : value.substr(0, index);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n return name;\n };\n /** @internal */\n Parser.prototype.ondeclaration = function (start, endIndex) {\n this.endIndex = endIndex;\n var value = this.getSlice(start, endIndex);\n if (this.cbs.onprocessinginstruction) {\n var name = this.getInstructionName(value);\n this.cbs.onprocessinginstruction(\"!\".concat(name), \"!\".concat(value));\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n };\n /** @internal */\n Parser.prototype.onprocessinginstruction = function (start, endIndex) {\n this.endIndex = endIndex;\n var value = this.getSlice(start, endIndex);\n if (this.cbs.onprocessinginstruction) {\n var name = this.getInstructionName(value);\n this.cbs.onprocessinginstruction(\"?\".concat(name), \"?\".concat(value));\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n };\n /** @internal */\n Parser.prototype.oncomment = function (start, endIndex, offset) {\n var _a, _b, _c, _d;\n this.endIndex = endIndex;\n (_b = (_a = this.cbs).oncomment) === null || _b === void 0 ? void 0 : _b.call(_a, this.getSlice(start, endIndex - offset));\n (_d = (_c = this.cbs).oncommentend) === null || _d === void 0 ? void 0 : _d.call(_c);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n };\n /** @internal */\n Parser.prototype.oncdata = function (start, endIndex, offset) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n this.endIndex = endIndex;\n var value = this.getSlice(start, endIndex - offset);\n if (this.options.xmlMode || this.options.recognizeCDATA) {\n (_b = (_a = this.cbs).oncdatastart) === null || _b === void 0 ? void 0 : _b.call(_a);\n (_d = (_c = this.cbs).ontext) === null || _d === void 0 ? void 0 : _d.call(_c, value);\n (_f = (_e = this.cbs).oncdataend) === null || _f === void 0 ? void 0 : _f.call(_e);\n }\n else {\n (_h = (_g = this.cbs).oncomment) === null || _h === void 0 ? void 0 : _h.call(_g, \"[CDATA[\".concat(value, \"]]\"));\n (_k = (_j = this.cbs).oncommentend) === null || _k === void 0 ? void 0 : _k.call(_j);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n };\n /** @internal */\n Parser.prototype.onend = function () {\n var _a, _b;\n if (this.cbs.onclosetag) {\n // Set the end index for all remaining tags\n this.endIndex = this.startIndex;\n for (var index = this.stack.length; index > 0; this.cbs.onclosetag(this.stack[--index], true))\n ;\n }\n (_b = (_a = this.cbs).onend) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n /**\n * Resets the parser to a blank state, ready to parse a new HTML document\n */\n Parser.prototype.reset = function () {\n var _a, _b, _c, _d;\n (_b = (_a = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.tokenizer.reset();\n this.tagname = \"\";\n this.attribname = \"\";\n this.attribs = null;\n this.stack.length = 0;\n this.startIndex = 0;\n this.endIndex = 0;\n (_d = (_c = this.cbs).onparserinit) === null || _d === void 0 ? void 0 : _d.call(_c, this);\n this.buffers.length = 0;\n this.bufferOffset = 0;\n this.writeIndex = 0;\n this.ended = false;\n };\n /**\n * Resets the parser, then parses a complete document and\n * pushes it to the handler.\n *\n * @param data Document to parse.\n */\n Parser.prototype.parseComplete = function (data) {\n this.reset();\n this.end(data);\n };\n Parser.prototype.getSlice = function (start, end) {\n while (start - this.bufferOffset >= this.buffers[0].length) {\n this.shiftBuffer();\n }\n var slice = this.buffers[0].slice(start - this.bufferOffset, end - this.bufferOffset);\n while (end - this.bufferOffset > this.buffers[0].length) {\n this.shiftBuffer();\n slice += this.buffers[0].slice(0, end - this.bufferOffset);\n }\n return slice;\n };\n Parser.prototype.shiftBuffer = function () {\n this.bufferOffset += this.buffers[0].length;\n this.writeIndex--;\n this.buffers.shift();\n };\n /**\n * Parses a chunk of data and calls the corresponding callbacks.\n *\n * @param chunk Chunk to parse.\n */\n Parser.prototype.write = function (chunk) {\n var _a, _b;\n if (this.ended) {\n (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(\".write() after done!\"));\n return;\n }\n this.buffers.push(chunk);\n if (this.tokenizer.running) {\n this.tokenizer.write(chunk);\n this.writeIndex++;\n }\n };\n /**\n * Parses the end of the buffer and clears the stack, calls onend.\n *\n * @param chunk Optional final chunk to parse.\n */\n Parser.prototype.end = function (chunk) {\n var _a, _b;\n if (this.ended) {\n (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(\".end() after done!\"));\n return;\n }\n if (chunk)\n this.write(chunk);\n this.ended = true;\n this.tokenizer.end();\n };\n /**\n * Pauses parsing. The parser won't emit events until `resume` is called.\n */\n Parser.prototype.pause = function () {\n this.tokenizer.pause();\n };\n /**\n * Resumes parsing after `pause` was called.\n */\n Parser.prototype.resume = function () {\n this.tokenizer.resume();\n while (this.tokenizer.running &&\n this.writeIndex < this.buffers.length) {\n this.tokenizer.write(this.buffers[this.writeIndex++]);\n }\n if (this.ended)\n this.tokenizer.end();\n };\n /**\n * Alias of `write`, for backwards compatibility.\n *\n * @param chunk Chunk to parse.\n * @deprecated\n */\n Parser.prototype.parseChunk = function (chunk) {\n this.write(chunk);\n };\n /**\n * Alias of `end`, for backwards compatibility.\n *\n * @param chunk Optional final chunk to parse.\n * @deprecated\n */\n Parser.prototype.done = function (chunk) {\n this.end(chunk);\n };\n return Parser;\n}());\nexports.Parser = Parser;\n//# sourceMappingURL=Parser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.QuoteType = void 0;\nvar decode_js_1 = require(\"entities/lib/decode.js\");\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"Tab\"] = 9] = \"Tab\";\n CharCodes[CharCodes[\"NewLine\"] = 10] = \"NewLine\";\n CharCodes[CharCodes[\"FormFeed\"] = 12] = \"FormFeed\";\n CharCodes[CharCodes[\"CarriageReturn\"] = 13] = \"CarriageReturn\";\n CharCodes[CharCodes[\"Space\"] = 32] = \"Space\";\n CharCodes[CharCodes[\"ExclamationMark\"] = 33] = \"ExclamationMark\";\n CharCodes[CharCodes[\"Number\"] = 35] = \"Number\";\n CharCodes[CharCodes[\"Amp\"] = 38] = \"Amp\";\n CharCodes[CharCodes[\"SingleQuote\"] = 39] = \"SingleQuote\";\n CharCodes[CharCodes[\"DoubleQuote\"] = 34] = \"DoubleQuote\";\n CharCodes[CharCodes[\"Dash\"] = 45] = \"Dash\";\n CharCodes[CharCodes[\"Slash\"] = 47] = \"Slash\";\n CharCodes[CharCodes[\"Zero\"] = 48] = \"Zero\";\n CharCodes[CharCodes[\"Nine\"] = 57] = \"Nine\";\n CharCodes[CharCodes[\"Semi\"] = 59] = \"Semi\";\n CharCodes[CharCodes[\"Lt\"] = 60] = \"Lt\";\n CharCodes[CharCodes[\"Eq\"] = 61] = \"Eq\";\n CharCodes[CharCodes[\"Gt\"] = 62] = \"Gt\";\n CharCodes[CharCodes[\"Questionmark\"] = 63] = \"Questionmark\";\n CharCodes[CharCodes[\"UpperA\"] = 65] = \"UpperA\";\n CharCodes[CharCodes[\"LowerA\"] = 97] = \"LowerA\";\n CharCodes[CharCodes[\"UpperF\"] = 70] = \"UpperF\";\n CharCodes[CharCodes[\"LowerF\"] = 102] = \"LowerF\";\n CharCodes[CharCodes[\"UpperZ\"] = 90] = \"UpperZ\";\n CharCodes[CharCodes[\"LowerZ\"] = 122] = \"LowerZ\";\n CharCodes[CharCodes[\"LowerX\"] = 120] = \"LowerX\";\n CharCodes[CharCodes[\"OpeningSquareBracket\"] = 91] = \"OpeningSquareBracket\";\n})(CharCodes || (CharCodes = {}));\n/** All the states the tokenizer can be in. */\nvar State;\n(function (State) {\n State[State[\"Text\"] = 1] = \"Text\";\n State[State[\"BeforeTagName\"] = 2] = \"BeforeTagName\";\n State[State[\"InTagName\"] = 3] = \"InTagName\";\n State[State[\"InSelfClosingTag\"] = 4] = \"InSelfClosingTag\";\n State[State[\"BeforeClosingTagName\"] = 5] = \"BeforeClosingTagName\";\n State[State[\"InClosingTagName\"] = 6] = \"InClosingTagName\";\n State[State[\"AfterClosingTagName\"] = 7] = \"AfterClosingTagName\";\n // Attributes\n State[State[\"BeforeAttributeName\"] = 8] = \"BeforeAttributeName\";\n State[State[\"InAttributeName\"] = 9] = \"InAttributeName\";\n State[State[\"AfterAttributeName\"] = 10] = \"AfterAttributeName\";\n State[State[\"BeforeAttributeValue\"] = 11] = \"BeforeAttributeValue\";\n State[State[\"InAttributeValueDq\"] = 12] = \"InAttributeValueDq\";\n State[State[\"InAttributeValueSq\"] = 13] = \"InAttributeValueSq\";\n State[State[\"InAttributeValueNq\"] = 14] = \"InAttributeValueNq\";\n // Declarations\n State[State[\"BeforeDeclaration\"] = 15] = \"BeforeDeclaration\";\n State[State[\"InDeclaration\"] = 16] = \"InDeclaration\";\n // Processing instructions\n State[State[\"InProcessingInstruction\"] = 17] = \"InProcessingInstruction\";\n // Comments & CDATA\n State[State[\"BeforeComment\"] = 18] = \"BeforeComment\";\n State[State[\"CDATASequence\"] = 19] = \"CDATASequence\";\n State[State[\"InSpecialComment\"] = 20] = \"InSpecialComment\";\n State[State[\"InCommentLike\"] = 21] = \"InCommentLike\";\n // Special tags\n State[State[\"BeforeSpecialS\"] = 22] = \"BeforeSpecialS\";\n State[State[\"SpecialStartSequence\"] = 23] = \"SpecialStartSequence\";\n State[State[\"InSpecialTag\"] = 24] = \"InSpecialTag\";\n State[State[\"BeforeEntity\"] = 25] = \"BeforeEntity\";\n State[State[\"BeforeNumericEntity\"] = 26] = \"BeforeNumericEntity\";\n State[State[\"InNamedEntity\"] = 27] = \"InNamedEntity\";\n State[State[\"InNumericEntity\"] = 28] = \"InNumericEntity\";\n State[State[\"InHexEntity\"] = 29] = \"InHexEntity\";\n})(State || (State = {}));\nfunction isWhitespace(c) {\n return (c === CharCodes.Space ||\n c === CharCodes.NewLine ||\n c === CharCodes.Tab ||\n c === CharCodes.FormFeed ||\n c === CharCodes.CarriageReturn);\n}\nfunction isEndOfTagSection(c) {\n return c === CharCodes.Slash || c === CharCodes.Gt || isWhitespace(c);\n}\nfunction isNumber(c) {\n return c >= CharCodes.Zero && c <= CharCodes.Nine;\n}\nfunction isASCIIAlpha(c) {\n return ((c >= CharCodes.LowerA && c <= CharCodes.LowerZ) ||\n (c >= CharCodes.UpperA && c <= CharCodes.UpperZ));\n}\nfunction isHexDigit(c) {\n return ((c >= CharCodes.UpperA && c <= CharCodes.UpperF) ||\n (c >= CharCodes.LowerA && c <= CharCodes.LowerF));\n}\nvar QuoteType;\n(function (QuoteType) {\n QuoteType[QuoteType[\"NoValue\"] = 0] = \"NoValue\";\n QuoteType[QuoteType[\"Unquoted\"] = 1] = \"Unquoted\";\n QuoteType[QuoteType[\"Single\"] = 2] = \"Single\";\n QuoteType[QuoteType[\"Double\"] = 3] = \"Double\";\n})(QuoteType = exports.QuoteType || (exports.QuoteType = {}));\n/**\n * Sequences used to match longer strings.\n *\n * We don't have `Script`, `Style`, or `Title` here. Instead, we re-use the *End\n * sequences with an increased offset.\n */\nvar Sequences = {\n Cdata: new Uint8Array([0x43, 0x44, 0x41, 0x54, 0x41, 0x5b]),\n CdataEnd: new Uint8Array([0x5d, 0x5d, 0x3e]),\n CommentEnd: new Uint8Array([0x2d, 0x2d, 0x3e]),\n ScriptEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74]),\n StyleEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x74, 0x79, 0x6c, 0x65]),\n TitleEnd: new Uint8Array([0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65]), // `</title`\n};\nvar Tokenizer = /** @class */ (function () {\n function Tokenizer(_a, cbs) {\n var _b = _a.xmlMode, xmlMode = _b === void 0 ? false : _b, _c = _a.decodeEntities, decodeEntities = _c === void 0 ? true : _c;\n this.cbs = cbs;\n /** The current state the tokenizer is in. */\n this.state = State.Text;\n /** The read buffer. */\n this.buffer = \"\";\n /** The beginning of the section that is currently being read. */\n this.sectionStart = 0;\n /** The index within the buffer that we are currently looking at. */\n this.index = 0;\n /** Some behavior, eg. when decoding entities, is done while we are in another state. This keeps track of the other state type. */\n this.baseState = State.Text;\n /** For special parsing behavior inside of script and style tags. */\n this.isSpecial = false;\n /** Indicates whether the tokenizer has been paused. */\n this.running = true;\n /** The offset of the current buffer. */\n this.offset = 0;\n this.currentSequence = undefined;\n this.sequenceIndex = 0;\n this.trieIndex = 0;\n this.trieCurrent = 0;\n /** For named entities, the index of the value. For numeric entities, the code point. */\n this.entityResult = 0;\n this.entityExcess = 0;\n this.xmlMode = xmlMode;\n this.decodeEntities = decodeEntities;\n this.entityTrie = xmlMode ? decode_js_1.xmlDecodeTree : decode_js_1.htmlDecodeTree;\n }\n Tokenizer.prototype.reset = function () {\n this.state = State.Text;\n this.buffer = \"\";\n this.sectionStart = 0;\n this.index = 0;\n this.baseState = State.Text;\n this.currentSequence = undefined;\n this.running = true;\n this.offset = 0;\n };\n Tokenizer.prototype.write = function (chunk) {\n this.offset += this.buffer.length;\n this.buffer = chunk;\n this.parse();\n };\n Tokenizer.prototype.end = function () {\n if (this.running)\n this.finish();\n };\n Tokenizer.prototype.pause = function () {\n this.running = false;\n };\n Tokenizer.prototype.resume = function () {\n this.running = true;\n if (this.index < this.buffer.length + this.offset) {\n this.parse();\n }\n };\n /**\n * The current index within all of the written data.\n */\n Tokenizer.prototype.getIndex = function () {\n return this.index;\n };\n /**\n * The start of the current section.\n */\n Tokenizer.prototype.getSectionStart = function () {\n return this.sectionStart;\n };\n Tokenizer.prototype.stateText = function (c) {\n if (c === CharCodes.Lt ||\n (!this.decodeEntities && this.fastForwardTo(CharCodes.Lt))) {\n if (this.index > this.sectionStart) {\n this.cbs.ontext(this.sectionStart, this.index);\n }\n this.state = State.BeforeTagName;\n this.sectionStart = this.index;\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.state = State.BeforeEntity;\n }\n };\n Tokenizer.prototype.stateSpecialStartSequence = function (c) {\n var isEnd = this.sequenceIndex === this.currentSequence.length;\n var isMatch = isEnd\n ? // If we are at the end of the sequence, make sure the tag name has ended\n isEndOfTagSection(c)\n : // Otherwise, do a case-insensitive comparison\n (c | 0x20) === this.currentSequence[this.sequenceIndex];\n if (!isMatch) {\n this.isSpecial = false;\n }\n else if (!isEnd) {\n this.sequenceIndex++;\n return;\n }\n this.sequenceIndex = 0;\n this.state = State.InTagName;\n this.stateInTagName(c);\n };\n /** Look for an end tag. For <title> tags, also decode entities. */\n Tokenizer.prototype.stateInSpecialTag = function (c) {\n if (this.sequenceIndex === this.currentSequence.length) {\n if (c === CharCodes.Gt || isWhitespace(c)) {\n var endOfText = this.index - this.currentSequence.length;\n if (this.sectionStart < endOfText) {\n // Spoof the index so that reported locations match up.\n var actualIndex = this.index;\n this.index = endOfText;\n this.cbs.ontext(this.sectionStart, endOfText);\n this.index = actualIndex;\n }\n this.isSpecial = false;\n this.sectionStart = endOfText + 2; // Skip over the `</`\n this.stateInClosingTagName(c);\n return; // We are done; skip the rest of the function.\n }\n this.sequenceIndex = 0;\n }\n if ((c | 0x20) === this.currentSequence[this.sequenceIndex]) {\n this.sequenceIndex += 1;\n }\n else if (this.sequenceIndex === 0) {\n if (this.currentSequence === Sequences.TitleEnd) {\n // We have to parse entities in <title> tags.\n if (this.decodeEntities && c === CharCodes.Amp) {\n this.state = State.BeforeEntity;\n }\n }\n else if (this.fastForwardTo(CharCodes.Lt)) {\n // Outside of <title> tags, we can fast-forward.\n this.sequenceIndex = 1;\n }\n }\n else {\n // If we see a `<`, set the sequence index to 1; useful for eg. `<</script>`.\n this.sequenceIndex = Number(c === CharCodes.Lt);\n }\n };\n Tokenizer.prototype.stateCDATASequence = function (c) {\n if (c === Sequences.Cdata[this.sequenceIndex]) {\n if (++this.sequenceIndex === Sequences.Cdata.length) {\n this.state = State.InCommentLike;\n this.currentSequence = Sequences.CdataEnd;\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n }\n }\n else {\n this.sequenceIndex = 0;\n this.state = State.InDeclaration;\n this.stateInDeclaration(c); // Reconsume the character\n }\n };\n /**\n * When we wait for one specific character, we can speed things up\n * by skipping through the buffer until we find it.\n *\n * @returns Whether the character was found.\n */\n Tokenizer.prototype.fastForwardTo = function (c) {\n while (++this.index < this.buffer.length + this.offset) {\n if (this.buffer.charCodeAt(this.index - this.offset) === c) {\n return true;\n }\n }\n /*\n * We increment the index at the end of the `parse` loop,\n * so set it to `buffer.length - 1` here.\n *\n * TODO: Refactor `parse` to increment index before calling states.\n */\n this.index = this.buffer.length + this.offset - 1;\n return false;\n };\n /**\n * Comments and CDATA end with `-->` and `]]>`.\n *\n * Their common qualities are:\n * - Their end sequences have a distinct character they start with.\n * - That character is then repeated, so we have to check multiple repeats.\n * - All characters but the start character of the sequence can be skipped.\n */\n Tokenizer.prototype.stateInCommentLike = function (c) {\n if (c === this.currentSequence[this.sequenceIndex]) {\n if (++this.sequenceIndex === this.currentSequence.length) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(this.sectionStart, this.index, 2);\n }\n else {\n this.cbs.oncomment(this.sectionStart, this.index, 2);\n }\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n this.state = State.Text;\n }\n }\n else if (this.sequenceIndex === 0) {\n // Fast-forward to the first character of the sequence\n if (this.fastForwardTo(this.currentSequence[0])) {\n this.sequenceIndex = 1;\n }\n }\n else if (c !== this.currentSequence[this.sequenceIndex - 1]) {\n // Allow long sequences, eg. --->, ]]]>\n this.sequenceIndex = 0;\n }\n };\n /**\n * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.\n *\n * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).\n * We allow anything that wouldn't end the tag.\n */\n Tokenizer.prototype.isTagStartChar = function (c) {\n return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c);\n };\n Tokenizer.prototype.startSpecial = function (sequence, offset) {\n this.isSpecial = true;\n this.currentSequence = sequence;\n this.sequenceIndex = offset;\n this.state = State.SpecialStartSequence;\n };\n Tokenizer.prototype.stateBeforeTagName = function (c) {\n if (c === CharCodes.ExclamationMark) {\n this.state = State.BeforeDeclaration;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.Questionmark) {\n this.state = State.InProcessingInstruction;\n this.sectionStart = this.index + 1;\n }\n else if (this.isTagStartChar(c)) {\n var lower = c | 0x20;\n this.sectionStart = this.index;\n if (!this.xmlMode && lower === Sequences.TitleEnd[2]) {\n this.startSpecial(Sequences.TitleEnd, 3);\n }\n else {\n this.state =\n !this.xmlMode && lower === Sequences.ScriptEnd[2]\n ? State.BeforeSpecialS\n : State.InTagName;\n }\n }\n else if (c === CharCodes.Slash) {\n this.state = State.BeforeClosingTagName;\n }\n else {\n this.state = State.Text;\n this.stateText(c);\n }\n };\n Tokenizer.prototype.stateInTagName = function (c) {\n if (isEndOfTagSection(c)) {\n this.cbs.onopentagname(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n };\n Tokenizer.prototype.stateBeforeClosingTagName = function (c) {\n if (isWhitespace(c)) {\n // Ignore\n }\n else if (c === CharCodes.Gt) {\n this.state = State.Text;\n }\n else {\n this.state = this.isTagStartChar(c)\n ? State.InClosingTagName\n : State.InSpecialComment;\n this.sectionStart = this.index;\n }\n };\n Tokenizer.prototype.stateInClosingTagName = function (c) {\n if (c === CharCodes.Gt || isWhitespace(c)) {\n this.cbs.onclosetag(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.AfterClosingTagName;\n this.stateAfterClosingTagName(c);\n }\n };\n Tokenizer.prototype.stateAfterClosingTagName = function (c) {\n // Skip everything until \">\"\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.state = State.Text;\n this.baseState = State.Text;\n this.sectionStart = this.index + 1;\n }\n };\n Tokenizer.prototype.stateBeforeAttributeName = function (c) {\n if (c === CharCodes.Gt) {\n this.cbs.onopentagend(this.index);\n if (this.isSpecial) {\n this.state = State.InSpecialTag;\n this.sequenceIndex = 0;\n }\n else {\n this.state = State.Text;\n }\n this.baseState = this.state;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.Slash) {\n this.state = State.InSelfClosingTag;\n }\n else if (!isWhitespace(c)) {\n this.state = State.InAttributeName;\n this.sectionStart = this.index;\n }\n };\n Tokenizer.prototype.stateInSelfClosingTag = function (c) {\n if (c === CharCodes.Gt) {\n this.cbs.onselfclosingtag(this.index);\n this.state = State.Text;\n this.baseState = State.Text;\n this.sectionStart = this.index + 1;\n this.isSpecial = false; // Reset special state, in case of self-closing special tags\n }\n else if (!isWhitespace(c)) {\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n };\n Tokenizer.prototype.stateInAttributeName = function (c) {\n if (c === CharCodes.Eq || isEndOfTagSection(c)) {\n this.cbs.onattribname(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.AfterAttributeName;\n this.stateAfterAttributeName(c);\n }\n };\n Tokenizer.prototype.stateAfterAttributeName = function (c) {\n if (c === CharCodes.Eq) {\n this.state = State.BeforeAttributeValue;\n }\n else if (c === CharCodes.Slash || c === CharCodes.Gt) {\n this.cbs.onattribend(QuoteType.NoValue, this.index);\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n else if (!isWhitespace(c)) {\n this.cbs.onattribend(QuoteType.NoValue, this.index);\n this.state = State.InAttributeName;\n this.sectionStart = this.index;\n }\n };\n Tokenizer.prototype.stateBeforeAttributeValue = function (c) {\n if (c === CharCodes.DoubleQuote) {\n this.state = State.InAttributeValueDq;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.SingleQuote) {\n this.state = State.InAttributeValueSq;\n this.sectionStart = this.index + 1;\n }\n else if (!isWhitespace(c)) {\n this.sectionStart = this.index;\n this.state = State.InAttributeValueNq;\n this.stateInAttributeValueNoQuotes(c); // Reconsume token\n }\n };\n Tokenizer.prototype.handleInAttributeValue = function (c, quote) {\n if (c === quote ||\n (!this.decodeEntities && this.fastForwardTo(quote))) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(quote === CharCodes.DoubleQuote\n ? QuoteType.Double\n : QuoteType.Single, this.index);\n this.state = State.BeforeAttributeName;\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.baseState = this.state;\n this.state = State.BeforeEntity;\n }\n };\n Tokenizer.prototype.stateInAttributeValueDoubleQuotes = function (c) {\n this.handleInAttributeValue(c, CharCodes.DoubleQuote);\n };\n Tokenizer.prototype.stateInAttributeValueSingleQuotes = function (c) {\n this.handleInAttributeValue(c, CharCodes.SingleQuote);\n };\n Tokenizer.prototype.stateInAttributeValueNoQuotes = function (c) {\n if (isWhitespace(c) || c === CharCodes.Gt) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(QuoteType.Unquoted, this.index);\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.baseState = this.state;\n this.state = State.BeforeEntity;\n }\n };\n Tokenizer.prototype.stateBeforeDeclaration = function (c) {\n if (c === CharCodes.OpeningSquareBracket) {\n this.state = State.CDATASequence;\n this.sequenceIndex = 0;\n }\n else {\n this.state =\n c === CharCodes.Dash\n ? State.BeforeComment\n : State.InDeclaration;\n }\n };\n Tokenizer.prototype.stateInDeclaration = function (c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.ondeclaration(this.sectionStart, this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n };\n Tokenizer.prototype.stateInProcessingInstruction = function (c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.onprocessinginstruction(this.sectionStart, this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n };\n Tokenizer.prototype.stateBeforeComment = function (c) {\n if (c === CharCodes.Dash) {\n this.state = State.InCommentLike;\n this.currentSequence = Sequences.CommentEnd;\n // Allow short comments (eg. <!-->)\n this.sequenceIndex = 2;\n this.sectionStart = this.index + 1;\n }\n else {\n this.state = State.InDeclaration;\n }\n };\n Tokenizer.prototype.stateInSpecialComment = function (c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.oncomment(this.sectionStart, this.index, 0);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n };\n Tokenizer.prototype.stateBeforeSpecialS = function (c) {\n var lower = c | 0x20;\n if (lower === Sequences.ScriptEnd[3]) {\n this.startSpecial(Sequences.ScriptEnd, 4);\n }\n else if (lower === Sequences.StyleEnd[3]) {\n this.startSpecial(Sequences.StyleEnd, 4);\n }\n else {\n this.state = State.InTagName;\n this.stateInTagName(c); // Consume the token again\n }\n };\n Tokenizer.prototype.stateBeforeEntity = function (c) {\n // Start excess with 1 to include the '&'\n this.entityExcess = 1;\n this.entityResult = 0;\n if (c === CharCodes.Number) {\n this.state = State.BeforeNumericEntity;\n }\n else if (c === CharCodes.Amp) {\n // We have two `&` characters in a row. Stay in the current state.\n }\n else {\n this.trieIndex = 0;\n this.trieCurrent = this.entityTrie[0];\n this.state = State.InNamedEntity;\n this.stateInNamedEntity(c);\n }\n };\n Tokenizer.prototype.stateInNamedEntity = function (c) {\n this.entityExcess += 1;\n this.trieIndex = (0, decode_js_1.determineBranch)(this.entityTrie, this.trieCurrent, this.trieIndex + 1, c);\n if (this.trieIndex < 0) {\n this.emitNamedEntity();\n this.index--;\n return;\n }\n this.trieCurrent = this.entityTrie[this.trieIndex];\n var masked = this.trieCurrent & decode_js_1.BinTrieFlags.VALUE_LENGTH;\n // If the branch is a value, store it and continue\n if (masked) {\n // The mask is the number of bytes of the value, including the current byte.\n var valueLength = (masked >> 14) - 1;\n // If we have a legacy entity while parsing strictly, just skip the number of bytes\n if (!this.allowLegacyEntity() && c !== CharCodes.Semi) {\n this.trieIndex += valueLength;\n }\n else {\n // Add 1 as we have already incremented the excess\n var entityStart = this.index - this.entityExcess + 1;\n if (entityStart > this.sectionStart) {\n this.emitPartial(this.sectionStart, entityStart);\n }\n // If this is a surrogate pair, consume the next two bytes\n this.entityResult = this.trieIndex;\n this.trieIndex += valueLength;\n this.entityExcess = 0;\n this.sectionStart = this.index + 1;\n if (valueLength === 0) {\n this.emitNamedEntity();\n }\n }\n }\n };\n Tokenizer.prototype.emitNamedEntity = function () {\n this.state = this.baseState;\n if (this.entityResult === 0) {\n return;\n }\n var valueLength = (this.entityTrie[this.entityResult] & decode_js_1.BinTrieFlags.VALUE_LENGTH) >>\n 14;\n switch (valueLength) {\n case 1: {\n this.emitCodePoint(this.entityTrie[this.entityResult] &\n ~decode_js_1.BinTrieFlags.VALUE_LENGTH);\n break;\n }\n case 2: {\n this.emitCodePoint(this.entityTrie[this.entityResult + 1]);\n break;\n }\n case 3: {\n this.emitCodePoint(this.entityTrie[this.entityResult + 1]);\n this.emitCodePoint(this.entityTrie[this.entityResult + 2]);\n }\n }\n };\n Tokenizer.prototype.stateBeforeNumericEntity = function (c) {\n if ((c | 0x20) === CharCodes.LowerX) {\n this.entityExcess++;\n this.state = State.InHexEntity;\n }\n else {\n this.state = State.InNumericEntity;\n this.stateInNumericEntity(c);\n }\n };\n Tokenizer.prototype.emitNumericEntity = function (strict) {\n var entityStart = this.index - this.entityExcess - 1;\n var numberStart = entityStart + 2 + Number(this.state === State.InHexEntity);\n if (numberStart !== this.index) {\n // Emit leading data if any\n if (entityStart > this.sectionStart) {\n this.emitPartial(this.sectionStart, entityStart);\n }\n this.sectionStart = this.index + Number(strict);\n this.emitCodePoint((0, decode_js_1.replaceCodePoint)(this.entityResult));\n }\n this.state = this.baseState;\n };\n Tokenizer.prototype.stateInNumericEntity = function (c) {\n if (c === CharCodes.Semi) {\n this.emitNumericEntity(true);\n }\n else if (isNumber(c)) {\n this.entityResult = this.entityResult * 10 + (c - CharCodes.Zero);\n this.entityExcess++;\n }\n else {\n if (this.allowLegacyEntity()) {\n this.emitNumericEntity(false);\n }\n else {\n this.state = this.baseState;\n }\n this.index--;\n }\n };\n Tokenizer.prototype.stateInHexEntity = function (c) {\n if (c === CharCodes.Semi) {\n this.emitNumericEntity(true);\n }\n else if (isNumber(c)) {\n this.entityResult = this.entityResult * 16 + (c - CharCodes.Zero);\n this.entityExcess++;\n }\n else if (isHexDigit(c)) {\n this.entityResult =\n this.entityResult * 16 + ((c | 0x20) - CharCodes.LowerA + 10);\n this.entityExcess++;\n }\n else {\n if (this.allowLegacyEntity()) {\n this.emitNumericEntity(false);\n }\n else {\n this.state = this.baseState;\n }\n this.index--;\n }\n };\n Tokenizer.prototype.allowLegacyEntity = function () {\n return (!this.xmlMode &&\n (this.baseState === State.Text ||\n this.baseState === State.InSpecialTag));\n };\n /**\n * Remove data that has already been consumed from the buffer.\n */\n Tokenizer.prototype.cleanup = function () {\n // If we are inside of text or attributes, emit what we already have.\n if (this.running && this.sectionStart !== this.index) {\n if (this.state === State.Text ||\n (this.state === State.InSpecialTag && this.sequenceIndex === 0)) {\n this.cbs.ontext(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n else if (this.state === State.InAttributeValueDq ||\n this.state === State.InAttributeValueSq ||\n this.state === State.InAttributeValueNq) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n }\n };\n Tokenizer.prototype.shouldContinue = function () {\n return this.index < this.buffer.length + this.offset && this.running;\n };\n /**\n * Iterates through the buffer, calling the function corresponding to the current state.\n *\n * States that are more likely to be hit are higher up, as a performance improvement.\n */\n Tokenizer.prototype.parse = function () {\n while (this.shouldContinue()) {\n var c = this.buffer.charCodeAt(this.index - this.offset);\n switch (this.state) {\n case State.Text: {\n this.stateText(c);\n break;\n }\n case State.SpecialStartSequence: {\n this.stateSpecialStartSequence(c);\n break;\n }\n case State.InSpecialTag: {\n this.stateInSpecialTag(c);\n break;\n }\n case State.CDATASequence: {\n this.stateCDATASequence(c);\n break;\n }\n case State.InAttributeValueDq: {\n this.stateInAttributeValueDoubleQuotes(c);\n break;\n }\n case State.InAttributeName: {\n this.stateInAttributeName(c);\n break;\n }\n case State.InCommentLike: {\n this.stateInCommentLike(c);\n break;\n }\n case State.InSpecialComment: {\n this.stateInSpecialComment(c);\n break;\n }\n case State.BeforeAttributeName: {\n this.stateBeforeAttributeName(c);\n break;\n }\n case State.InTagName: {\n this.stateInTagName(c);\n break;\n }\n case State.InClosingTagName: {\n this.stateInClosingTagName(c);\n break;\n }\n case State.BeforeTagName: {\n this.stateBeforeTagName(c);\n break;\n }\n case State.AfterAttributeName: {\n this.stateAfterAttributeName(c);\n break;\n }\n case State.InAttributeValueSq: {\n this.stateInAttributeValueSingleQuotes(c);\n break;\n }\n case State.BeforeAttributeValue: {\n this.stateBeforeAttributeValue(c);\n break;\n }\n case State.BeforeClosingTagName: {\n this.stateBeforeClosingTagName(c);\n break;\n }\n case State.AfterClosingTagName: {\n this.stateAfterClosingTagName(c);\n break;\n }\n case State.BeforeSpecialS: {\n this.stateBeforeSpecialS(c);\n break;\n }\n case State.InAttributeValueNq: {\n this.stateInAttributeValueNoQuotes(c);\n break;\n }\n case State.InSelfClosingTag: {\n this.stateInSelfClosingTag(c);\n break;\n }\n case State.InDeclaration: {\n this.stateInDeclaration(c);\n break;\n }\n case State.BeforeDeclaration: {\n this.stateBeforeDeclaration(c);\n break;\n }\n case State.BeforeComment: {\n this.stateBeforeComment(c);\n break;\n }\n case State.InProcessingInstruction: {\n this.stateInProcessingInstruction(c);\n break;\n }\n case State.InNamedEntity: {\n this.stateInNamedEntity(c);\n break;\n }\n case State.BeforeEntity: {\n this.stateBeforeEntity(c);\n break;\n }\n case State.InHexEntity: {\n this.stateInHexEntity(c);\n break;\n }\n case State.InNumericEntity: {\n this.stateInNumericEntity(c);\n break;\n }\n default: {\n // `this._state === State.BeforeNumericEntity`\n this.stateBeforeNumericEntity(c);\n }\n }\n this.index++;\n }\n this.cleanup();\n };\n Tokenizer.prototype.finish = function () {\n if (this.state === State.InNamedEntity) {\n this.emitNamedEntity();\n }\n // If there is remaining data, emit it in a reasonable way\n if (this.sectionStart < this.index) {\n this.handleTrailingData();\n }\n this.cbs.onend();\n };\n /** Handle any trailing data. */\n Tokenizer.prototype.handleTrailingData = function () {\n var endIndex = this.buffer.length + this.offset;\n if (this.state === State.InCommentLike) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(this.sectionStart, endIndex, 0);\n }\n else {\n this.cbs.oncomment(this.sectionStart, endIndex, 0);\n }\n }\n else if (this.state === State.InNumericEntity &&\n this.allowLegacyEntity()) {\n this.emitNumericEntity(false);\n // All trailing data will have been consumed\n }\n else if (this.state === State.InHexEntity &&\n this.allowLegacyEntity()) {\n this.emitNumericEntity(false);\n // All trailing data will have been consumed\n }\n else if (this.state === State.InTagName ||\n this.state === State.BeforeAttributeName ||\n this.state === State.BeforeAttributeValue ||\n this.state === State.AfterAttributeName ||\n this.state === State.InAttributeName ||\n this.state === State.InAttributeValueSq ||\n this.state === State.InAttributeValueDq ||\n this.state === State.InAttributeValueNq ||\n this.state === State.InClosingTagName) {\n /*\n * If we are currently in an opening or closing tag, us not calling the\n * respective callback signals that the tag should be ignored.\n */\n }\n else {\n this.cbs.ontext(this.sectionStart, endIndex);\n }\n };\n Tokenizer.prototype.emitPartial = function (start, endIndex) {\n if (this.baseState !== State.Text &&\n this.baseState !== State.InSpecialTag) {\n this.cbs.onattribdata(start, endIndex);\n }\n else {\n this.cbs.ontext(start, endIndex);\n }\n };\n Tokenizer.prototype.emitCodePoint = function (cp) {\n if (this.baseState !== State.Text &&\n this.baseState !== State.InSpecialTag) {\n this.cbs.onattribentity(cp);\n }\n else {\n this.cbs.ontextentity(cp);\n }\n };\n return Tokenizer;\n}());\nexports.default = Tokenizer;\n//# sourceMappingURL=Tokenizer.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DomUtils = exports.parseFeed = exports.getFeed = exports.ElementType = exports.Tokenizer = exports.createDomStream = exports.parseDOM = exports.parseDocument = exports.DefaultHandler = exports.DomHandler = exports.Parser = void 0;\nvar Parser_js_1 = require(\"./Parser.js\");\nvar Parser_js_2 = require(\"./Parser.js\");\nObject.defineProperty(exports, \"Parser\", { enumerable: true, get: function () { return Parser_js_2.Parser; } });\nvar domhandler_1 = require(\"domhandler\");\nvar domhandler_2 = require(\"domhandler\");\nObject.defineProperty(exports, \"DomHandler\", { enumerable: true, get: function () { return domhandler_2.DomHandler; } });\n// Old name for DomHandler\nObject.defineProperty(exports, \"DefaultHandler\", { enumerable: true, get: function () { return domhandler_2.DomHandler; } });\n// Helper methods\n/**\n * Parses the data, returns the resulting document.\n *\n * @param data The data that should be parsed.\n * @param options Optional options for the parser and DOM builder.\n */\nfunction parseDocument(data, options) {\n var handler = new domhandler_1.DomHandler(undefined, options);\n new Parser_js_1.Parser(handler, options).end(data);\n return handler.root;\n}\nexports.parseDocument = parseDocument;\n/**\n * Parses data, returns an array of the root nodes.\n *\n * Note that the root nodes still have a `Document` node as their parent.\n * Use `parseDocument` to get the `Document` node instead.\n *\n * @param data The data that should be parsed.\n * @param options Optional options for the parser and DOM builder.\n * @deprecated Use `parseDocument` instead.\n */\nfunction parseDOM(data, options) {\n return parseDocument(data, options).children;\n}\nexports.parseDOM = parseDOM;\n/**\n * Creates a parser instance, with an attached DOM handler.\n *\n * @param callback A callback that will be called once parsing has been completed.\n * @param options Optional options for the parser and DOM builder.\n * @param elementCallback An optional callback that will be called every time a tag has been completed inside of the DOM.\n */\nfunction createDomStream(callback, options, elementCallback) {\n var handler = new domhandler_1.DomHandler(callback, options, elementCallback);\n return new Parser_js_1.Parser(handler, options);\n}\nexports.createDomStream = createDomStream;\nvar Tokenizer_js_1 = require(\"./Tokenizer.js\");\nObject.defineProperty(exports, \"Tokenizer\", { enumerable: true, get: function () { return __importDefault(Tokenizer_js_1).default; } });\n/*\n * All of the following exports exist for backwards-compatibility.\n * They should probably be removed eventually.\n */\nexports.ElementType = __importStar(require(\"domelementtype\"));\nvar domutils_1 = require(\"domutils\");\nvar domutils_2 = require(\"domutils\");\nObject.defineProperty(exports, \"getFeed\", { enumerable: true, get: function () { return domutils_2.getFeed; } });\nvar parseFeedDefaultOptions = { xmlMode: true };\n/**\n * Parse a feed.\n *\n * @param feed The feed that should be parsed, as a string.\n * @param options Optionally, options for parsing. When using this, you should set `xmlMode` to `true`.\n */\nfunction parseFeed(feed, options) {\n if (options === void 0) { options = parseFeedDefaultOptions; }\n return (0, domutils_1.getFeed)(parseDOM(feed, options));\n}\nexports.parseFeed = parseFeed;\nexports.DomUtils = __importStar(require(\"domutils\"));\n//# sourceMappingURL=index.js.map","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe23',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20f0',\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsLowerMisc = '(?:' + rsLower + '|' + rsMisc + ')',\n rsUpperMisc = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptLowerContr = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptUpperContr = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptLowerContr + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsUpperMisc + '+' + rsOptUpperContr + '(?=' + [rsBreak, rsUpper + rsLowerMisc, '$'].join('|') + ')',\n rsUpper + '?' + rsLowerMisc + '+' + rsOptLowerContr,\n rsUpper + '+' + rsOptUpperContr,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboMarksRange + rsComboSymbolsRange + rsVarRange + ']');\n\n/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 'ss'\n};\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\n/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n});\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nmodule.exports = camelCase;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe23',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20f0',\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsLowerMisc = '(?:' + rsLower + '|' + rsMisc + ')',\n rsUpperMisc = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptLowerContr = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptUpperContr = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptLowerContr + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsUpperMisc + '+' + rsOptUpperContr + '(?=' + [rsBreak, rsUpper + rsLowerMisc, '$'].join('|') + ')',\n rsUpper + '?' + rsLowerMisc + '+' + rsOptLowerContr,\n rsUpper + '+' + rsOptUpperContr,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 'ss'\n};\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\n/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\n/**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\nvar kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n});\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nmodule.exports = kebabCase;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","var baseProperty = require('./_baseProperty');\n\n/**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nvar asciiSize = baseProperty('length');\n\nmodule.exports = asciiSize;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys'),\n keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n arrayMap = require('./_arrayMap'),\n baseUnary = require('./_baseUnary'),\n cacheHas = require('./_cacheHas');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\nfunction baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseIntersection;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar regexpTag = '[object RegExp]';\n\n/**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\nfunction baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n}\n\nmodule.exports = baseIsRegExp;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\nfunction baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n}\n\nmodule.exports = baseZipObject;\n","var isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\nfunction castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n}\n\nmodule.exports = castArrayLikeObject;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","var castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nmodule.exports = createCaseFirst;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var asciiSize = require('./_asciiSize'),\n hasUnicode = require('./_hasUnicode'),\n unicodeSize = require('./_unicodeSize');\n\n/**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\nfunction stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n}\n\nmodule.exports = stringSize;\n","var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nfunction unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n}\n\nmodule.exports = unicodeSize;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","var toString = require('./toString'),\n upperFirst = require('./upperFirst');\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nmodule.exports = capitalize;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","var arrayMap = require('./_arrayMap'),\n baseIntersection = require('./_baseIntersection'),\n baseRest = require('./_baseRest'),\n castArrayLikeObject = require('./_castArrayLikeObject');\n\n/**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\nvar intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n});\n\nmodule.exports = intersection;\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","var baseKeys = require('./_baseKeys'),\n getTag = require('./_getTag'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLike = require('./isArrayLike'),\n isBuffer = require('./isBuffer'),\n isPrototype = require('./_isPrototype'),\n isTypedArray = require('./isTypedArray');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = isEmpty;\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var baseIsRegExp = require('./_baseIsRegExp'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsRegExp = nodeUtil && nodeUtil.isRegExp;\n\n/**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\nvar isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\nmodule.exports = isRegExp;\n","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","var baseToString = require('./_baseToString'),\n castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n isObject = require('./isObject'),\n isRegExp = require('./isRegExp'),\n stringSize = require('./_stringSize'),\n stringToArray = require('./_stringToArray'),\n toInteger = require('./toInteger'),\n toString = require('./toString');\n\n/** Used as default options for `_.truncate`. */\nvar DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Truncates `string` if it's longer than the given maximum string length.\n * The last characters of the truncated string are replaced with the omission\n * string which defaults to \"...\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to truncate.\n * @param {Object} [options={}] The options object.\n * @param {number} [options.length=30] The maximum string length.\n * @param {string} [options.omission='...'] The string to indicate text is omitted.\n * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n * @returns {string} Returns the truncated string.\n * @example\n *\n * _.truncate('hi-diddly-ho there, neighborino');\n * // => 'hi-diddly-ho there, neighbo...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': ' '\n * });\n * // => 'hi-diddly-ho there,...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': /,? +/\n * });\n * // => 'hi-diddly-ho there...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'omission': ' [...]'\n * });\n * // => 'hi-diddly-ho there, neig [...]'\n */\nfunction truncate(string, options) {\n var length = DEFAULT_TRUNC_LENGTH,\n omission = DEFAULT_TRUNC_OMISSION;\n\n if (isObject(options)) {\n var separator = 'separator' in options ? options.separator : separator;\n length = 'length' in options ? toInteger(options.length) : length;\n omission = 'omission' in options ? baseToString(options.omission) : omission;\n }\n string = toString(string);\n\n var strLength = string.length;\n if (hasUnicode(string)) {\n var strSymbols = stringToArray(string);\n strLength = strSymbols.length;\n }\n if (length >= strLength) {\n return string;\n }\n var end = length - stringSize(omission);\n if (end < 1) {\n return omission;\n }\n var result = strSymbols\n ? castSlice(strSymbols, 0, end).join('')\n : string.slice(0, end);\n\n if (separator === undefined) {\n return result + omission;\n }\n if (strSymbols) {\n end += (result.length - end);\n }\n if (isRegExp(separator)) {\n if (string.slice(end).search(separator)) {\n var match,\n substring = result;\n\n if (!separator.global) {\n separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n }\n separator.lastIndex = 0;\n while ((match = separator.exec(substring))) {\n var newEnd = match.index;\n }\n result = result.slice(0, newEnd === undefined ? end : newEnd);\n }\n } else if (string.indexOf(baseToString(separator), end) != end) {\n var index = result.lastIndexOf(separator);\n if (index > -1) {\n result = result.slice(0, index);\n }\n }\n return result + omission;\n}\n\nmodule.exports = truncate;\n","var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","var assignValue = require('./_assignValue'),\n baseZipObject = require('./_baseZipObject');\n\n/**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\nfunction zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n}\n\nmodule.exports = zipObject;\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","// Generated by CoffeeScript 1.12.2\n(function() {\n var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n\n if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n module.exports = function() {\n return performance.now();\n };\n } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n module.exports = function() {\n return (getNanoSeconds() - nodeLoadTime) / 1e6;\n };\n hrtime = process.hrtime;\n getNanoSeconds = function() {\n var hr;\n hr = hrtime();\n return hr[0] * 1e9 + hr[1];\n };\n moduleLoadTime = getNanoSeconds();\n upTime = process.uptime() * 1e9;\n nodeLoadTime = moduleLoadTime - upTime;\n } else if (Date.now) {\n module.exports = function() {\n return Date.now() - loadTime;\n };\n loadTime = Date.now();\n } else {\n module.exports = function() {\n return new Date().getTime() - loadTime;\n };\n loadTime = new Date().getTime();\n }\n\n}).call(this);\n\n//# sourceMappingURL=performance-now.js.map\n","var div = null\nvar prefixes = [ 'Webkit', 'Moz', 'O', 'ms' ]\n\nmodule.exports = function prefixStyle (prop) {\n // re-use a dummy div\n if (!div) {\n div = document.createElement('div')\n }\n\n var style = div.style\n\n // prop exists without prefix\n if (prop in style) {\n return prop\n }\n\n // borderRadius -> BorderRadius\n var titleCase = prop.charAt(0).toUpperCase() + prop.slice(1)\n\n // find the vendor-prefixed prop\n for (var i = prefixes.length; i >= 0; i--) {\n var name = prefixes[i] + titleCase\n // e.g. WebkitBorderRadius or webkitBorderRadius\n if (name in style) {\n return name\n }\n }\n\n return false\n}\n","var now = require('performance-now')\n , root = typeof window === 'undefined' ? global : window\n , vendors = ['moz', 'webkit']\n , suffix = 'AnimationFrame'\n , raf = root['request' + suffix]\n , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n raf = root[vendors[i] + 'Request' + suffix]\n caf = root[vendors[i] + 'Cancel' + suffix]\n || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n var last = 0\n , id = 0\n , queue = []\n , frameDuration = 1000 / 60\n\n raf = function(callback) {\n if(queue.length === 0) {\n var _now = now()\n , next = Math.max(0, frameDuration - (_now - last))\n last = next + _now\n setTimeout(function() {\n var cp = queue.slice(0)\n // Clear queue here to prevent\n // callbacks from appending listeners\n // to the current frame's queue\n queue.length = 0\n for(var i = 0; i < cp.length; i++) {\n if(!cp[i].cancelled) {\n try{\n cp[i].callback(last)\n } catch(e) {\n setTimeout(function() { throw e }, 0)\n }\n }\n }\n }, Math.round(next))\n }\n queue.push({\n handle: ++id,\n callback: callback,\n cancelled: false\n })\n return id\n }\n\n caf = function(handle) {\n for(var i = 0; i < queue.length; i++) {\n if(queue[i].handle === handle) {\n queue[i].cancelled = true\n }\n }\n }\n}\n\nmodule.exports = function(fn) {\n // Wrap in a new function to prevent\n // `cancel` potentially being assigned\n // to the native rAF function\n return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function(object) {\n if (!object) {\n object = root;\n }\n object.requestAnimationFrame = raf\n object.cancelAnimationFrame = caf\n}\n","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\n\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n\n return result;\n};\n\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\n\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\n\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, options) {\n var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n var valuesArray;\n\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex; // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n\n return valuesArray[index];\n };\n}","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\n\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n\n return undefined;\n}","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0\n /* Sunday */\n ,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n}; // Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\n\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\n\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber); // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n\n case 2:\n return number + 'nd';\n\n case 3:\n return number + 'rd';\n }\n }\n\n return number + 'th';\n};\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\n\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\n\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument); // Clone the date\n\n if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\"); // eslint-disable-next-line no-console\n\n console.warn(new Error().stack);\n }\n\n return new Date(NaN);\n }\n}","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n\n var number = Number(dirtyNumber);\n\n if (isNaN(number)) {\n return number;\n }\n\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","var defaultOptions = {};\nexport function getDefaultOptions() {\n return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function getUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n\n while (output.length < targetLength) {\n output = '0' + output;\n }\n\n return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nvar formatters = {\n // Year\n y: function y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function M(date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function d(date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function a(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n\n case 'aaa':\n return dayPeriodEnumValue;\n\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function h(date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function H(date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function m(date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function s(date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function S(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function y(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function Y(date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; // Two digit year\n\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n } // Ordinal number\n\n\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n } // Padding\n\n\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = getUTCISOWeekYear(date); // Padding\n\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function u(date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function M(date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function L(date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function w(date, token, localize, options) {\n var week = getUTCWeek(date, options);\n\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function I(date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function d(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function E(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function e(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function c(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function i(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function a(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function b(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function B(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function h(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function H(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function K(date, token, localize) {\n var hours = date.getUTCHours() % 12;\n\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function k(date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function m(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n\n return lightFormatters.m(date, token);\n },\n // Second\n s: function s(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function S(date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function X(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return 'Z';\n }\n\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function x(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function O(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function z(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function t(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\n\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n\n if (minutes === 0) {\n return sign + String(hours);\n }\n\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n\n return formatTimezone(offset, dirtyDelimiter);\n}\n\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n\nexport default formatters;","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = getUTCWeekYear(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, options);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","var dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\n\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n};\n\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n var dateTimeFormat;\n\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\n\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n }\n}","import defaultLocale from \"../../locale/en-US/index.js\";\nexport default defaultLocale;","import isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n\n\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n\n var firstCharacter = substring[0];\n\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n\n var formatter = formatters[firstCharacter];\n\n if (formatter) {\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n\n return substring;\n }).join('');\n return result;\n}\n\nfunction cleanEscapedString(input) {\n var matched = input.match(escapedStringRegExp);\n\n if (!matched) {\n return input;\n }\n\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\n\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","import addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\n\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\n\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\n\nexport default function endOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\n\nexport default function startOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function startOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameYear\n * @category Year Helpers\n * @summary Are the given dates in the same year?\n *\n * @description\n * Are the given dates in the same year?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same year\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same year?\n * const result = isSameYear(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n */\n\nexport default function isSameYear(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() === dateRight.getFullYear();\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport getDaysInMonth from \"../getDaysInMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMonth\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} month - the month of the new date\n * @returns {Date} the new date with the month set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set February to 1 September 2014:\n * const result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\n\nexport default function setMonth(dirtyDate, dirtyMonth) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var month = toInteger(dirtyMonth);\n var year = date.getFullYear();\n var day = date.getDate();\n var dateWithDesiredMonth = new Date(0);\n dateWithDesiredMonth.setFullYear(year, month, 15);\n dateWithDesiredMonth.setHours(0, 0, 0, 0);\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth); // Set the last day of the new month\n // if the original date was the last day of the longer month\n\n date.setMonth(month, Math.min(day, daysInMonth));\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of days in a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many days are in February 2000?\n * const result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\n\nexport default function getDaysInMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var monthIndex = date.getMonth();\n var lastDayOfMonth = new Date(0);\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n lastDayOfMonth.setHours(0, 0, 0, 0);\n return lastDayOfMonth.getDate();\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setYear\n * @category Year Helpers\n * @summary Set the year to the given date.\n *\n * @description\n * Set the year to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} year - the year of the new date\n * @returns {Date} the new date with the year set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set year 2013 to 1 September 2014:\n * const result = setYear(new Date(2014, 8, 1), 2013)\n * //=> Sun Sep 01 2013 00:00:00\n */\n\nexport default function setYear(dirtyDate, dirtyYear) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var year = toInteger(dirtyYear); // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n\n if (isNaN(date.getTime())) {\n return new Date(NaN);\n }\n\n date.setFullYear(year);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\n\nexport default function startOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var cleanDate = toDate(dirtyDate);\n var date = new Date(0);\n date.setFullYear(cleanDate.getFullYear(), 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\n\nexport default function addMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n\n var dayOfMonth = date.getDate(); // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n\n var endOfDesiredMonth = new Date(date.getTime());\n endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);\n var daysInMonth = endOfDesiredMonth.getDate();\n\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);\n return date;\n }\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param {Date|Number} date - the date that should be before the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\n\nexport default function isBefore(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() < dateToCompare.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameMonth\n * @category Month Helpers\n * @summary Are the given dates in the same month (and year)?\n *\n * @description\n * Are the given dates in the same month (and year)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same month (and year)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n *\n * @example\n * // Are 2 September 2014 and 25 September 2015 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2015, 8, 25))\n * //=> false\n */\n\nexport default function isSameMonth(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() === dateRight.getFullYear() && dateLeft.getMonth() === dateRight.getMonth();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\n\nexport default function differenceInCalendarMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n var monthDiff = dateLeft.getMonth() - dateRight.getMonth();\n return yearDiff * 12 + monthDiff;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} - the new date with the days added\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\n\nexport default function addDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n\n date.setDate(date.getDate() + amount);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the start of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function startOfWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setDate(date.getDate() - diff);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function startOfISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n return startOfWeek(dirtyDate, {\n weekStartsOn: 1\n });\n}","import getTime from \"../getTime/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getUnixTime\n * @category Timestamp Helpers\n * @summary Get the seconds timestamp of the given date.\n *\n * @description\n * Get the seconds timestamp of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05 CET:\n * const result = getUnixTime(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 1330512305\n */\n\nexport default function getUnixTime(dirtyDate) {\n requiredArgs(1, arguments);\n return Math.floor(getTime(dirtyDate) / 1000);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getTime\n * @category Timestamp Helpers\n * @summary Get the milliseconds timestamp of the given date.\n *\n * @description\n * Get the milliseconds timestamp of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05.123:\n * const result = getTime(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 1330515905123\n */\n\nexport default function getTime(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n return timestamp;\n}","import startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day (and year and month)?\n *\n * @description\n * Are the given dates in the same day (and year and month)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same day (and year and month)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n *\n * @example\n * // Are 4 September and 4 October in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2014, 9, 4))\n * //=> false\n *\n * @example\n * // Are 4 September, 2014 and 4 September, 2015 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2015, 8, 4))\n * //=> false\n */\n\nexport default function isSameDay(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfDay = startOfDay(dirtyDateLeft);\n var dateRightStartOfDay = startOfDay(dirtyDateRight);\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param {Date|Number} date - the date that should be after the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * const result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\n\nexport default function isAfter(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() > dateToCompare.getTime();\n}","import getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar days\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\n\nexport default function differenceInCalendarDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var startOfDayLeft = startOfDay(dirtyDateLeft);\n var startOfDayRight = startOfDay(dirtyDateRight);\n var timestampLeft = startOfDayLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n var timestampRight = startOfDayRight.getTime() - getTimezoneOffsetInMilliseconds(startOfDayRight); // Round the number of days to the nearest integer\n // because the number of milliseconds in a day is not constant\n // (e.g. it's different in the day of the daylight saving time clock shift)\n\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY);\n}","import addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @description\n * Subtract the specified number of days from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the days subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\n\nexport default function subDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addDays(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * const result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\n\nexport default function addWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n var days = amount * 7;\n return addDays(dirtyDate, days);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\n\nexport default function addYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, amount * 12);\n}","import { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the end of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport default function endOfWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n date.setDate(date.getDate() + diff);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import endOfWeek from \"../endOfWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the end of an ISO week for the given date.\n *\n * @description\n * Return the end of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of an ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of an ISO week for 2 September 2014 11:55:00:\n * const result = endOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Sep 07 2014 23:59:59.999\n */\n\nexport default function endOfISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n return endOfWeek(dirtyDate, {\n weekStartsOn: 1\n });\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name max\n * @category Common Helpers\n * @summary Return the latest of the given dates.\n *\n * @description\n * Return the latest of the given dates.\n *\n * @param {Date[]|Number[]} datesArray - the dates to compare\n * @returns {Date} the latest of the dates\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which of these dates is the latest?\n * const result = max([\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ])\n * //=> Sun Jul 02 1995 00:00:00\n */\n\nexport default function max(dirtyDatesArray) {\n requiredArgs(1, arguments);\n var datesArray; // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n\n if (dirtyDatesArray && typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray; // If `dirtyDatesArray` is Array-like Object, convert to Array.\n } else if (_typeof(dirtyDatesArray) === 'object' && dirtyDatesArray !== null) {\n datesArray = Array.prototype.slice.call(dirtyDatesArray);\n } else {\n // `dirtyDatesArray` is non-iterable, return Invalid Date\n return new Date(NaN);\n }\n\n var result;\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate);\n\n if (result === undefined || result < currentDate || isNaN(Number(currentDate))) {\n result = currentDate;\n }\n });\n return result || new Date(NaN);\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name min\n * @category Common Helpers\n * @summary Returns the earliest of the given dates.\n *\n * @description\n * Returns the earliest of the given dates.\n *\n * @param {Date[]|Number[]} datesArray - the dates to compare\n * @returns {Date} - the earliest of the dates\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which of these dates is the earliest?\n * const result = min([\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ])\n * //=> Wed Feb 11 1987 00:00:00\n */\n\nexport default function min(dirtyDatesArray) {\n requiredArgs(1, arguments);\n var datesArray; // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n\n if (dirtyDatesArray && typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray; // If `dirtyDatesArray` is Array-like Object, convert to Array.\n } else if (_typeof(dirtyDatesArray) === 'object' && dirtyDatesArray !== null) {\n datesArray = Array.prototype.slice.call(dirtyDatesArray);\n } else {\n // `dirtyDatesArray` is non-iterable, return Invalid Date\n return new Date(NaN);\n }\n\n var result;\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate);\n\n if (result === undefined || result > currentDate || isNaN(currentDate.getDate())) {\n result = currentDate;\n }\n });\n return result || new Date(NaN);\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n/**\n * @name differenceInCalendarWeeks\n * @category Week Helpers\n * @summary Get the number of calendar weeks between the given dates.\n *\n * @description\n * Get the number of calendar weeks between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Number} the number of calendar weeks\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // How many calendar weeks are between 5 July 2014 and 20 July 2014?\n * const result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5)\n * )\n * //=> 3\n *\n * @example\n * // If the week starts on Monday,\n * // how many calendar weeks are between 5 July 2014 and 20 July 2014?\n * const result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5),\n * { weekStartsOn: 1 }\n * )\n * //=> 2\n */\n\nexport default function differenceInCalendarWeeks(dirtyDateLeft, dirtyDateRight, options) {\n requiredArgs(2, arguments);\n var startOfWeekLeft = startOfWeek(dirtyDateLeft, options);\n var startOfWeekRight = startOfWeek(dirtyDateRight, options);\n var timestampLeft = startOfWeekLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfWeekLeft);\n var timestampRight = startOfWeekRight.getTime() - getTimezoneOffsetInMilliseconds(startOfWeekRight); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK);\n}","import differenceInCalendarWeeks from \"../differenceInCalendarWeeks/index.js\";\nimport lastDayOfMonth from \"../lastDayOfMonth/index.js\";\nimport startOfMonth from \"../startOfMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name getWeeksInMonth\n * @category Week Helpers\n * @summary Get the number of calendar weeks a month spans.\n *\n * @description\n * Get the number of calendar weeks the month in the given date spans.\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Number} the number of calendar weeks\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // How many calendar weeks does February 2015 span?\n * const result = getWeeksInMonth(new Date(2015, 1, 8))\n * //=> 4\n *\n * @example\n * // If the week starts on Monday,\n * // how many calendar weeks does July 2017 span?\n * const result = getWeeksInMonth(new Date(2017, 6, 5), { weekStartsOn: 1 })\n * //=> 6\n */\nexport default function getWeeksInMonth(date, options) {\n requiredArgs(1, arguments);\n return differenceInCalendarWeeks(lastDayOfMonth(date), startOfMonth(date), options) + 1;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name lastDayOfMonth\n * @category Month Helpers\n * @summary Return the last day of a month for the given date.\n *\n * @description\n * Return the last day of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the last day of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The last day of a month for 2 September 2014 11:55:00:\n * const result = lastDayOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 00:00:00\n */\n\nexport default function lastDayOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport startOfISOWeekYear from \"../startOfISOWeekYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\n\nexport default function getISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfISOWeek(date).getTime() - startOfISOWeekYear(date).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getISOWeekYear from \"../getISOWeekYear/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\n\nexport default function startOfISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n var date = startOfISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\n\nexport default function getISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n var startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n var startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport startOfWeekYear from \"../startOfWeekYear/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Number} the week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> 53\n */\n\nexport default function getWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfWeek(date, options).getTime() - startOfWeekYear(date, options).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getWeekYear from \"../getWeekYear/index.js\";\nimport startOfWeek from \"../startOfWeek/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Date} the start of a week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\n\nexport default function startOfWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = getWeekYear(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n var date = startOfWeek(firstWeek, options);\n return date;\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Number} the local week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\n\nexport default function getWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n var startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n var startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import * as React from 'react';\nimport React__default, { createContext, useContext, useState, forwardRef, useEffect, useRef } from 'react';\nimport enUS from 'date-fns/locale/en-US';\nimport format from 'date-fns/format';\nimport endOfMonth from 'date-fns/endOfMonth';\nimport startOfDay from 'date-fns/startOfDay';\nimport startOfMonth from 'date-fns/startOfMonth';\nimport isSameYear from 'date-fns/isSameYear';\nimport setMonth from 'date-fns/setMonth';\nimport setYear from 'date-fns/setYear';\nimport startOfYear from 'date-fns/startOfYear';\nimport addMonths from 'date-fns/addMonths';\nimport isBefore from 'date-fns/isBefore';\nimport isSameMonth from 'date-fns/isSameMonth';\nimport differenceInCalendarMonths from 'date-fns/differenceInCalendarMonths';\nimport addDays from 'date-fns/addDays';\nimport startOfISOWeek from 'date-fns/startOfISOWeek';\nimport startOfWeek from 'date-fns/startOfWeek';\nimport getUnixTime from 'date-fns/getUnixTime';\nimport isSameDay from 'date-fns/isSameDay';\nimport { isSameDay as isSameDay$1, isAfter as isAfter$1 } from 'date-fns';\nimport differenceInCalendarDays from 'date-fns/differenceInCalendarDays';\nimport subDays from 'date-fns/subDays';\nimport isAfter from 'date-fns/isAfter';\nimport isDate from 'date-fns/isDate';\nimport addWeeks from 'date-fns/addWeeks';\nimport addYears from 'date-fns/addYears';\nimport endOfISOWeek from 'date-fns/endOfISOWeek';\nimport endOfWeek from 'date-fns/endOfWeek';\nimport max from 'date-fns/max';\nimport min from 'date-fns/min';\nimport getWeeksInMonth from 'date-fns/getWeeksInMonth';\nimport getISOWeek from 'date-fns/getISOWeek';\nimport getWeek from 'date-fns/getWeek';\nimport parse from 'date-fns/parse';\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __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 return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __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++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\n\n/** Returns true when the props are of type {@link DayPickerMultipleProps}. */\nfunction isDayPickerMultiple(props) {\n return props.mode === 'multiple';\n}\n\n/** Returns true when the props are of type {@link DayPickerRangeProps}. */\nfunction isDayPickerRange(props) {\n return props.mode === 'range';\n}\n\n/** Returns true when the props are of type {@link DayPickerSingleProps}. */\nfunction isDayPickerSingle(props) {\n return props.mode === 'single';\n}\n\n/**\n * The name of the default CSS classes.\n */\nvar defaultClassNames = {\n root: 'rdp',\n multiple_months: 'rdp-multiple_months',\n with_weeknumber: 'rdp-with_weeknumber',\n vhidden: 'rdp-vhidden',\n button_reset: 'rdp-button_reset',\n button: 'rdp-button',\n caption: 'rdp-caption',\n caption_start: 'rdp-caption_start',\n caption_end: 'rdp-caption_end',\n caption_between: 'rdp-caption_between',\n caption_label: 'rdp-caption_label',\n caption_dropdowns: 'rdp-caption_dropdowns',\n dropdown: 'rdp-dropdown',\n dropdown_month: 'rdp-dropdown_month',\n dropdown_year: 'rdp-dropdown_year',\n dropdown_icon: 'rdp-dropdown_icon',\n months: 'rdp-months',\n month: 'rdp-month',\n table: 'rdp-table',\n tbody: 'rdp-tbody',\n tfoot: 'rdp-tfoot',\n head: 'rdp-head',\n head_row: 'rdp-head_row',\n head_cell: 'rdp-head_cell',\n nav: 'rdp-nav',\n nav_button: 'rdp-nav_button',\n nav_button_previous: 'rdp-nav_button_previous',\n nav_button_next: 'rdp-nav_button_next',\n nav_icon: 'rdp-nav_icon',\n row: 'rdp-row',\n weeknumber: 'rdp-weeknumber',\n cell: 'rdp-cell',\n day: 'rdp-day',\n day_today: 'rdp-day_today',\n day_outside: 'rdp-day_outside',\n day_selected: 'rdp-day_selected',\n day_disabled: 'rdp-day_disabled',\n day_hidden: 'rdp-day_hidden',\n day_range_start: 'rdp-day_range_start',\n day_range_end: 'rdp-day_range_end',\n day_range_middle: 'rdp-day_range_middle'\n};\n\n/**\n * The default formatter for the caption.\n */\nfunction formatCaption(month, options) {\n return format(month, 'LLLL y', options);\n}\n\n/**\n * The default formatter for the Day button.\n */\nfunction formatDay(day, options) {\n return format(day, 'd', options);\n}\n\n/**\n * The default formatter for the Month caption.\n */\nfunction formatMonthCaption(month, options) {\n return format(month, 'LLLL', options);\n}\n\n/**\n * The default formatter for the week number.\n */\nfunction formatWeekNumber(weekNumber) {\n return \"\".concat(weekNumber);\n}\n\n/**\n * The default formatter for the name of the weekday.\n */\nfunction formatWeekdayName(weekday, options) {\n return format(weekday, 'cccccc', options);\n}\n\n/**\n * The default formatter for the Year caption.\n */\nfunction formatYearCaption(year, options) {\n return format(year, 'yyyy', options);\n}\n\nvar formatters = /*#__PURE__*/Object.freeze({\n __proto__: null,\n formatCaption: formatCaption,\n formatDay: formatDay,\n formatMonthCaption: formatMonthCaption,\n formatWeekNumber: formatWeekNumber,\n formatWeekdayName: formatWeekdayName,\n formatYearCaption: formatYearCaption\n});\n\n/**\n * The default ARIA label for the day button.\n */\nvar labelDay = function (day, activeModifiers, options) {\n return format(day, 'do MMMM (EEEE)', options);\n};\n\n/**\n * The default ARIA label for the WeekNumber element.\n */\nvar labelMonthDropdown = function () {\n return 'Month: ';\n};\n\n/**\n * The default ARIA label for next month button in navigation\n */\nvar labelNext = function () {\n return 'Go to next month';\n};\n\n/**\n * The default ARIA label for previous month button in navigation\n */\nvar labelPrevious = function () {\n return 'Go to previous month';\n};\n\n/**\n * The default ARIA label for the Weekday element.\n */\nvar labelWeekday = function (day, options) {\n return format(day, 'cccc', options);\n};\n\n/**\n * The default ARIA label for the WeekNumber element.\n */\nvar labelWeekNumber = function (n) {\n return \"Week n. \".concat(n);\n};\n\n/**\n * The default ARIA label for the WeekNumber element.\n */\nvar labelYearDropdown = function () {\n return 'Year: ';\n};\n\nvar labels = /*#__PURE__*/Object.freeze({\n __proto__: null,\n labelDay: labelDay,\n labelMonthDropdown: labelMonthDropdown,\n labelNext: labelNext,\n labelPrevious: labelPrevious,\n labelWeekday: labelWeekday,\n labelWeekNumber: labelWeekNumber,\n labelYearDropdown: labelYearDropdown\n});\n\n/**\n * Returns the default values to use in the DayPickerContext, in case they are\n * not passed down with the DayPicker initial props.\n */\nfunction getDefaultContextValues() {\n var captionLayout = 'buttons';\n var classNames = defaultClassNames;\n var locale = enUS;\n var modifiersClassNames = {};\n var modifiers = {};\n var numberOfMonths = 1;\n var styles = {};\n var today = new Date();\n return {\n captionLayout: captionLayout,\n classNames: classNames,\n formatters: formatters,\n labels: labels,\n locale: locale,\n modifiersClassNames: modifiersClassNames,\n modifiers: modifiers,\n numberOfMonths: numberOfMonths,\n styles: styles,\n today: today,\n mode: 'default'\n };\n}\n\n/** Return the `fromDate` and `toDate` prop values values parsing the DayPicker props. */\nfunction parseFromToProps(props) {\n var fromYear = props.fromYear, toYear = props.toYear, fromMonth = props.fromMonth, toMonth = props.toMonth;\n var fromDate = props.fromDate, toDate = props.toDate;\n if (fromMonth) {\n fromDate = startOfMonth(fromMonth);\n }\n else if (fromYear) {\n fromDate = new Date(fromYear, 0, 1);\n }\n if (toMonth) {\n toDate = endOfMonth(toMonth);\n }\n else if (toYear) {\n toDate = new Date(toYear, 11, 31);\n }\n return {\n fromDate: fromDate ? startOfDay(fromDate) : undefined,\n toDate: toDate ? startOfDay(toDate) : undefined\n };\n}\n\n/**\n * The DayPicker context shares the props passed to DayPicker within internal\n * and custom components. It is used to set the default values and perform\n * one-time calculations required to render the days.\n *\n * Access to this context from the {@link useDayPicker} hook.\n */\nvar DayPickerContext = createContext(undefined);\n/**\n * The provider for the {@link DayPickerContext}, assigning the defaults from the\n * initial DayPicker props.\n */\nfunction DayPickerProvider(props) {\n var _a;\n var initialProps = props.initialProps;\n var defaultContextValues = getDefaultContextValues();\n var _b = parseFromToProps(initialProps), fromDate = _b.fromDate, toDate = _b.toDate;\n var captionLayout = (_a = initialProps.captionLayout) !== null && _a !== void 0 ? _a : defaultContextValues.captionLayout;\n if (captionLayout !== 'buttons' && (!fromDate || !toDate)) {\n // When no from/to dates are set, the caption is always buttons\n captionLayout = 'buttons';\n }\n var onSelect;\n if (isDayPickerSingle(initialProps) ||\n isDayPickerMultiple(initialProps) ||\n isDayPickerRange(initialProps)) {\n onSelect = initialProps.onSelect;\n }\n var value = __assign(__assign(__assign({}, defaultContextValues), initialProps), { captionLayout: captionLayout, classNames: __assign(__assign({}, defaultContextValues.classNames), initialProps.classNames), components: __assign({}, initialProps.components), formatters: __assign(__assign({}, defaultContextValues.formatters), initialProps.formatters), fromDate: fromDate, labels: __assign(__assign({}, defaultContextValues.labels), initialProps.labels), mode: initialProps.mode || defaultContextValues.mode, modifiers: __assign(__assign({}, defaultContextValues.modifiers), initialProps.modifiers), modifiersClassNames: __assign(__assign({}, defaultContextValues.modifiersClassNames), initialProps.modifiersClassNames), onSelect: onSelect, styles: __assign(__assign({}, defaultContextValues.styles), initialProps.styles), toDate: toDate });\n return (React__default.createElement(DayPickerContext.Provider, { value: value }, props.children));\n}\n/**\n * Hook to access the {@link DayPickerContextValue}.\n *\n * Use the DayPicker context to access to the props passed to DayPicker inside\n * internal or custom components.\n */\nfunction useDayPicker() {\n var context = useContext(DayPickerContext);\n if (!context) {\n throw new Error(\"useDayPicker must be used within a DayPickerProvider.\");\n }\n return context;\n}\n\n/** Render the caption for the displayed month. This component is used when `captionLayout=\"buttons\"`. */\nfunction CaptionLabel(props) {\n var _a = useDayPicker(), locale = _a.locale, classNames = _a.classNames, styles = _a.styles, formatCaption = _a.formatters.formatCaption;\n return (React__default.createElement(\"h2\", { className: classNames.caption_label, style: styles.caption_label, \"aria-live\": \"polite\", \"aria-atomic\": \"true\", id: props.id }, formatCaption(props.displayMonth, { locale: locale })));\n}\n\n/**\n * Render the icon in the styled drop-down.\n */\nfunction IconDropdown(props) {\n return (React__default.createElement(\"svg\", __assign({ width: \"8px\", height: \"8px\", viewBox: \"0 0 120 120\", \"data-testid\": \"iconDropdown\" }, props),\n React__default.createElement(\"path\", { d: \"M4.22182541,48.2218254 C8.44222828,44.0014225 15.2388494,43.9273804 19.5496459,47.9996989 L19.7781746,48.2218254 L60,88.443 L100.221825,48.2218254 C104.442228,44.0014225 111.238849,43.9273804 115.549646,47.9996989 L115.778175,48.2218254 C119.998577,52.4422283 120.07262,59.2388494 116.000301,63.5496459 L115.778175,63.7781746 L67.7781746,111.778175 C63.5577717,115.998577 56.7611506,116.07262 52.4503541,112.000301 L52.2218254,111.778175 L4.22182541,63.7781746 C-0.0739418023,59.4824074 -0.0739418023,52.5175926 4.22182541,48.2218254 Z\", fill: \"currentColor\", fillRule: \"nonzero\" })));\n}\n\n/**\n * Render a styled select component – displaying a caption and a custom\n * drop-down icon.\n */\nfunction Dropdown(props) {\n var _a, _b;\n var onChange = props.onChange, value = props.value, children = props.children, caption = props.caption, className = props.className, style = props.style;\n var dayPicker = useDayPicker();\n var IconDropdownComponent = (_b = (_a = dayPicker.components) === null || _a === void 0 ? void 0 : _a.IconDropdown) !== null && _b !== void 0 ? _b : IconDropdown;\n return (React__default.createElement(\"div\", { className: className, style: style },\n React__default.createElement(\"span\", { className: dayPicker.classNames.vhidden }, props['aria-label']),\n React__default.createElement(\"select\", { name: props.name, \"aria-label\": props['aria-label'], className: dayPicker.classNames.dropdown, style: dayPicker.styles.dropdown, value: value, onChange: onChange }, children),\n React__default.createElement(\"div\", { className: dayPicker.classNames.caption_label, style: dayPicker.styles.caption_label, \"aria-hidden\": \"true\" },\n caption,\n React__default.createElement(IconDropdownComponent, { className: dayPicker.classNames.dropdown_icon, style: dayPicker.styles.dropdown_icon }))));\n}\n\n/** Render the dropdown to navigate between months. */\nfunction MonthsDropdown(props) {\n var _a;\n var _b = useDayPicker(), fromDate = _b.fromDate, toDate = _b.toDate, styles = _b.styles, locale = _b.locale, formatMonthCaption = _b.formatters.formatMonthCaption, classNames = _b.classNames, components = _b.components, labelMonthDropdown = _b.labels.labelMonthDropdown;\n // Dropdown should appear only when both from/toDate is set\n if (!fromDate)\n return React__default.createElement(React__default.Fragment, null);\n if (!toDate)\n return React__default.createElement(React__default.Fragment, null);\n var dropdownMonths = [];\n if (isSameYear(fromDate, toDate)) {\n // only display the months included in the range\n var date = startOfMonth(fromDate);\n for (var month = fromDate.getMonth(); month <= toDate.getMonth(); month++) {\n dropdownMonths.push(setMonth(date, month));\n }\n }\n else {\n // display all the 12 months\n var date = startOfMonth(new Date()); // Any date should be OK, as we just need the year\n for (var month = 0; month <= 11; month++) {\n dropdownMonths.push(setMonth(date, month));\n }\n }\n var handleChange = function (e) {\n var selectedMonth = Number(e.target.value);\n var newMonth = setMonth(startOfMonth(props.displayMonth), selectedMonth);\n props.onChange(newMonth);\n };\n var DropdownComponent = (_a = components === null || components === void 0 ? void 0 : components.Dropdown) !== null && _a !== void 0 ? _a : Dropdown;\n return (React__default.createElement(DropdownComponent, { name: \"months\", \"aria-label\": labelMonthDropdown(), className: classNames.dropdown_month, style: styles.dropdown_month, onChange: handleChange, value: props.displayMonth.getMonth(), caption: formatMonthCaption(props.displayMonth, { locale: locale }) }, dropdownMonths.map(function (m) { return (React__default.createElement(\"option\", { key: m.getMonth(), value: m.getMonth() }, formatMonthCaption(m, { locale: locale }))); })));\n}\n\n/**\n * Render a dropdown to change the year. Take in account the `nav.fromDate` and\n * `toDate` from context.\n */\nfunction YearsDropdown(props) {\n var _a;\n var displayMonth = props.displayMonth;\n var _b = useDayPicker(), fromDate = _b.fromDate, toDate = _b.toDate, locale = _b.locale, styles = _b.styles, classNames = _b.classNames, components = _b.components, formatYearCaption = _b.formatters.formatYearCaption, labelYearDropdown = _b.labels.labelYearDropdown;\n var years = [];\n // Dropdown should appear only when both from/toDate is set\n if (!fromDate)\n return React__default.createElement(React__default.Fragment, null);\n if (!toDate)\n return React__default.createElement(React__default.Fragment, null);\n var fromYear = fromDate.getFullYear();\n var toYear = toDate.getFullYear();\n for (var year = fromYear; year <= toYear; year++) {\n years.push(setYear(startOfYear(new Date()), year));\n }\n var handleChange = function (e) {\n var newMonth = setYear(startOfMonth(displayMonth), Number(e.target.value));\n props.onChange(newMonth);\n };\n var DropdownComponent = (_a = components === null || components === void 0 ? void 0 : components.Dropdown) !== null && _a !== void 0 ? _a : Dropdown;\n return (React__default.createElement(DropdownComponent, { name: \"years\", \"aria-label\": labelYearDropdown(), className: classNames.dropdown_year, style: styles.dropdown_year, onChange: handleChange, value: displayMonth.getFullYear(), caption: formatYearCaption(displayMonth, { locale: locale }) }, years.map(function (year) { return (React__default.createElement(\"option\", { key: year.getFullYear(), value: year.getFullYear() }, formatYearCaption(year, { locale: locale }))); })));\n}\n\n/**\n * Helper hook for using controlled/uncontrolled values from a component props.\n *\n * When the value is not controlled, pass `undefined` as `controlledValue` and\n * use the returned setter to update it.\n *\n * When the value is controlled, pass the controlled value as second\n * argument, which will be always returned as `value`.\n */\nfunction useControlledValue(defaultValue, controlledValue) {\n var _a = useState(defaultValue), uncontrolledValue = _a[0], setValue = _a[1];\n var value = controlledValue === undefined ? uncontrolledValue : controlledValue;\n return [value, setValue];\n}\n\n/** Return the initial month according to the given options. */\nfunction getInitialMonth(context) {\n var month = context.month, defaultMonth = context.defaultMonth, today = context.today;\n var initialMonth = month || defaultMonth || today || new Date();\n var toDate = context.toDate, fromDate = context.fromDate, _a = context.numberOfMonths, numberOfMonths = _a === void 0 ? 1 : _a;\n // Fix the initialMonth if is after the to-date\n if (toDate && differenceInCalendarMonths(toDate, initialMonth) < 0) {\n var offset = -1 * (numberOfMonths - 1);\n initialMonth = addMonths(toDate, offset);\n }\n // Fix the initialMonth if is before the from-date\n if (fromDate && differenceInCalendarMonths(initialMonth, fromDate) < 0) {\n initialMonth = fromDate;\n }\n return startOfMonth(initialMonth);\n}\n\n/** Controls the navigation state. */\nfunction useNavigationState() {\n var context = useDayPicker();\n var initialMonth = getInitialMonth(context);\n var _a = useControlledValue(initialMonth, context.month), month = _a[0], setMonth = _a[1];\n var goToMonth = function (date) {\n var _a;\n if (context.disableNavigation)\n return;\n var month = startOfMonth(date);\n setMonth(month);\n (_a = context.onMonthChange) === null || _a === void 0 ? void 0 : _a.call(context, month);\n };\n return [month, goToMonth];\n}\n\n/**\n * Return the months to display in the component according to the number of\n * months and the from/to date.\n */\nfunction getDisplayMonths(month, _a) {\n var reverseMonths = _a.reverseMonths, numberOfMonths = _a.numberOfMonths;\n var start = startOfMonth(month);\n var end = startOfMonth(addMonths(start, numberOfMonths));\n var monthsDiff = differenceInCalendarMonths(end, start);\n var months = [];\n for (var i = 0; i < monthsDiff; i++) {\n var nextMonth = addMonths(start, i);\n months.push(nextMonth);\n }\n if (reverseMonths)\n months = months.reverse();\n return months;\n}\n\n/**\n * Returns the next month the user can navigate to according to the given\n * options.\n *\n * Please note that the next month is not always the next calendar month:\n *\n * - if after the `toDate` range, is undefined;\n * - if the navigation is paged, is the number of months displayed ahead.\n *\n */\nfunction getNextMonth(startingMonth, options) {\n if (options.disableNavigation) {\n return undefined;\n }\n var toDate = options.toDate, pagedNavigation = options.pagedNavigation, _a = options.numberOfMonths, numberOfMonths = _a === void 0 ? 1 : _a;\n var offset = pagedNavigation ? numberOfMonths : 1;\n var month = startOfMonth(startingMonth);\n if (!toDate) {\n return addMonths(month, offset);\n }\n var monthsDiff = differenceInCalendarMonths(toDate, startingMonth);\n if (monthsDiff < numberOfMonths) {\n return undefined;\n }\n // Jump forward as the number of months when paged navigation\n return addMonths(month, offset);\n}\n\n/**\n * Returns the next previous the user can navigate to, according to the given\n * options.\n *\n * Please note that the previous month is not always the previous calendar\n * month:\n *\n * - if before the `fromDate` date, is `undefined`;\n * - if the navigation is paged, is the number of months displayed before.\n *\n */\nfunction getPreviousMonth(startingMonth, options) {\n if (options.disableNavigation) {\n return undefined;\n }\n var fromDate = options.fromDate, pagedNavigation = options.pagedNavigation, _a = options.numberOfMonths, numberOfMonths = _a === void 0 ? 1 : _a;\n var offset = pagedNavigation ? numberOfMonths : 1;\n var month = startOfMonth(startingMonth);\n if (!fromDate) {\n return addMonths(month, -offset);\n }\n var monthsDiff = differenceInCalendarMonths(month, fromDate);\n if (monthsDiff <= 0) {\n return undefined;\n }\n // Jump back as the number of months when paged navigation\n return addMonths(month, -offset);\n}\n\n/**\n * The Navigation context shares details and methods to navigate the months in DayPicker.\n * Access this context from the {@link useNavigation} hook.\n */\nvar NavigationContext = createContext(undefined);\n/** Provides the values for the {@link NavigationContext}. */\nfunction NavigationProvider(props) {\n var dayPicker = useDayPicker();\n var _a = useNavigationState(), currentMonth = _a[0], goToMonth = _a[1];\n var displayMonths = getDisplayMonths(currentMonth, dayPicker);\n var nextMonth = getNextMonth(currentMonth, dayPicker);\n var previousMonth = getPreviousMonth(currentMonth, dayPicker);\n var isDateDisplayed = function (date) {\n return displayMonths.some(function (displayMonth) {\n return isSameMonth(date, displayMonth);\n });\n };\n var goToDate = function (date, refDate) {\n if (isDateDisplayed(date)) {\n return;\n }\n if (refDate && isBefore(date, refDate)) {\n goToMonth(addMonths(date, 1 + dayPicker.numberOfMonths * -1));\n }\n else {\n goToMonth(date);\n }\n };\n var value = {\n currentMonth: currentMonth,\n displayMonths: displayMonths,\n goToMonth: goToMonth,\n goToDate: goToDate,\n previousMonth: previousMonth,\n nextMonth: nextMonth,\n isDateDisplayed: isDateDisplayed\n };\n return (React__default.createElement(NavigationContext.Provider, { value: value }, props.children));\n}\n/**\n * Hook to access the {@link NavigationContextValue}. Use this hook to navigate\n * between months or years in DayPicker.\n *\n * This hook is meant to be used inside internal or custom components.\n */\nfunction useNavigation() {\n var context = useContext(NavigationContext);\n if (!context) {\n throw new Error('useNavigation must be used within a NavigationProvider');\n }\n return context;\n}\n\n/**\n * Render a caption with the dropdowns to navigate between months and years.\n */\nfunction CaptionDropdowns(props) {\n var _a;\n var _b = useDayPicker(), classNames = _b.classNames, styles = _b.styles, components = _b.components;\n var goToMonth = useNavigation().goToMonth;\n var handleMonthChange = function (newMonth) {\n goToMonth(newMonth);\n };\n var CaptionLabelComponent = (_a = components === null || components === void 0 ? void 0 : components.CaptionLabel) !== null && _a !== void 0 ? _a : CaptionLabel;\n var captionLabel = (React__default.createElement(CaptionLabelComponent, { id: props.id, displayMonth: props.displayMonth }));\n return (React__default.createElement(\"div\", { className: classNames.caption_dropdowns, style: styles.caption_dropdowns },\n React__default.createElement(\"div\", { className: classNames.vhidden }, captionLabel),\n React__default.createElement(MonthsDropdown, { onChange: handleMonthChange, displayMonth: props.displayMonth }),\n React__default.createElement(YearsDropdown, { onChange: handleMonthChange, displayMonth: props.displayMonth })));\n}\n\n/**\n * Render the \"previous month\" button in the navigation.\n */\nfunction IconLeft(props) {\n return (React__default.createElement(\"svg\", __assign({ width: \"16px\", height: \"16px\", viewBox: \"0 0 120 120\" }, props),\n React__default.createElement(\"path\", { d: \"M69.490332,3.34314575 C72.6145263,0.218951416 77.6798462,0.218951416 80.8040405,3.34314575 C83.8617626,6.40086786 83.9268205,11.3179931 80.9992143,14.4548388 L80.8040405,14.6568542 L35.461,60 L80.8040405,105.343146 C83.8617626,108.400868 83.9268205,113.317993 80.9992143,116.454839 L80.8040405,116.656854 C77.7463184,119.714576 72.8291931,119.779634 69.6923475,116.852028 L69.490332,116.656854 L18.490332,65.6568542 C15.4326099,62.5991321 15.367552,57.6820069 18.2951583,54.5451612 L18.490332,54.3431458 L69.490332,3.34314575 Z\", fill: \"currentColor\", fillRule: \"nonzero\" })));\n}\n\n/**\n * Render the \"next month\" button in the navigation.\n */\nfunction IconRight(props) {\n return (React__default.createElement(\"svg\", __assign({ width: \"16px\", height: \"16px\", viewBox: \"0 0 120 120\" }, props),\n React__default.createElement(\"path\", { d: \"M49.8040405,3.34314575 C46.6798462,0.218951416 41.6145263,0.218951416 38.490332,3.34314575 C35.4326099,6.40086786 35.367552,11.3179931 38.2951583,14.4548388 L38.490332,14.6568542 L83.8333725,60 L38.490332,105.343146 C35.4326099,108.400868 35.367552,113.317993 38.2951583,116.454839 L38.490332,116.656854 C41.5480541,119.714576 46.4651794,119.779634 49.602025,116.852028 L49.8040405,116.656854 L100.804041,65.6568542 C103.861763,62.5991321 103.926821,57.6820069 100.999214,54.5451612 L100.804041,54.3431458 L49.8040405,3.34314575 Z\", fill: \"currentColor\" })));\n}\n\n/**\n * Render a button HTML element applying the reset class name.\n */\nvar Button = forwardRef(function (props, ref) {\n var _a = useDayPicker(), classNames = _a.classNames, styles = _a.styles;\n var classNamesArr = [classNames.button_reset, classNames.button];\n if (props.className) {\n classNamesArr.push(props.className);\n }\n var className = classNamesArr.join(' ');\n var style = __assign(__assign({}, styles.button_reset), styles.button);\n if (props.style) {\n Object.assign(style, props.style);\n }\n return (React__default.createElement(\"button\", __assign({}, props, { ref: ref, type: \"button\", className: className, style: style })));\n});\n\n/** A component rendering the navigation buttons or the drop-downs. */\nfunction Navigation(props) {\n var _a, _b;\n var _c = useDayPicker(), dir = _c.dir, locale = _c.locale, classNames = _c.classNames, styles = _c.styles, _d = _c.labels, labelPrevious = _d.labelPrevious, labelNext = _d.labelNext, components = _c.components;\n if (!props.nextMonth && !props.previousMonth) {\n return React__default.createElement(React__default.Fragment, null);\n }\n var previousLabel = labelPrevious(props.previousMonth, { locale: locale });\n var previousClassName = [\n classNames.nav_button,\n classNames.nav_button_previous\n ].join(' ');\n var nextLabel = labelNext(props.nextMonth, { locale: locale });\n var nextClassName = [\n classNames.nav_button,\n classNames.nav_button_next\n ].join(' ');\n var IconRightComponent = (_a = components === null || components === void 0 ? void 0 : components.IconRight) !== null && _a !== void 0 ? _a : IconRight;\n var IconLeftComponent = (_b = components === null || components === void 0 ? void 0 : components.IconLeft) !== null && _b !== void 0 ? _b : IconLeft;\n return (React__default.createElement(\"div\", { className: classNames.nav, style: styles.nav },\n !props.hidePrevious && (React__default.createElement(Button, { name: \"previous-month\", \"aria-label\": previousLabel, className: previousClassName, style: styles.nav_button_previous, disabled: !props.previousMonth, onClick: props.onPreviousClick }, dir === 'rtl' ? (React__default.createElement(IconRightComponent, { className: classNames.nav_icon, style: styles.nav_icon })) : (React__default.createElement(IconLeftComponent, { className: classNames.nav_icon, style: styles.nav_icon })))),\n !props.hideNext && (React__default.createElement(Button, { name: \"next-month\", \"aria-label\": nextLabel, className: nextClassName, style: styles.nav_button_next, disabled: !props.nextMonth, onClick: props.onNextClick }, dir === 'rtl' ? (React__default.createElement(IconLeftComponent, { className: classNames.nav_icon, style: styles.nav_icon })) : (React__default.createElement(IconRightComponent, { className: classNames.nav_icon, style: styles.nav_icon }))))));\n}\n\n/**\n * Render a caption with a button-based navigation.\n */\nfunction CaptionNavigation(props) {\n var _a;\n var _b;\n var _c = useDayPicker(), numberOfMonths = _c.numberOfMonths, dir = _c.dir, components = _c.components;\n var _d = useNavigation(), previousMonth = _d.previousMonth, nextMonth = _d.nextMonth, goToMonth = _d.goToMonth, displayMonths = _d.displayMonths;\n var displayIndex = displayMonths.findIndex(function (month) {\n return isSameMonth(props.displayMonth, month);\n });\n var isFirst = displayIndex === 0;\n var isLast = displayIndex === displayMonths.length - 1;\n if (dir === 'rtl') {\n _a = [isFirst, isLast], isLast = _a[0], isFirst = _a[1];\n }\n var hideNext = numberOfMonths > 1 && (isFirst || !isLast);\n var hidePrevious = numberOfMonths > 1 && (isLast || !isFirst);\n var handlePreviousClick = function () {\n if (!previousMonth)\n return;\n goToMonth(previousMonth);\n };\n var handleNextClick = function () {\n if (!nextMonth)\n return;\n goToMonth(nextMonth);\n };\n var CaptionLabelComponent = (_b = components === null || components === void 0 ? void 0 : components.CaptionLabel) !== null && _b !== void 0 ? _b : CaptionLabel;\n var captionLabel = (React__default.createElement(CaptionLabelComponent, { id: props.id, displayMonth: props.displayMonth }));\n return (React__default.createElement(React__default.Fragment, null,\n captionLabel,\n React__default.createElement(Navigation, { displayMonth: props.displayMonth, hideNext: hideNext, hidePrevious: hidePrevious, nextMonth: nextMonth, previousMonth: previousMonth, onPreviousClick: handlePreviousClick, onNextClick: handleNextClick })));\n}\n\n/**\n * Render the caption of a month. The caption has a different layout when\n * setting the {@link DayPickerBase.captionLayout} prop.\n */\nfunction Caption(props) {\n var _a;\n var _b = useDayPicker(), classNames = _b.classNames, disableNavigation = _b.disableNavigation, styles = _b.styles, captionLayout = _b.captionLayout, components = _b.components;\n var CaptionLabelComponent = (_a = components === null || components === void 0 ? void 0 : components.CaptionLabel) !== null && _a !== void 0 ? _a : CaptionLabel;\n var caption;\n if (disableNavigation) {\n caption = (React__default.createElement(CaptionLabelComponent, { id: props.id, displayMonth: props.displayMonth }));\n }\n else if (captionLayout === 'dropdown') {\n caption = (React__default.createElement(CaptionDropdowns, { displayMonth: props.displayMonth, id: props.id }));\n }\n else {\n caption = (React__default.createElement(CaptionNavigation, { displayMonth: props.displayMonth, id: props.id }));\n }\n return (React__default.createElement(\"div\", { className: classNames.caption, style: styles.caption }, caption));\n}\n\n/** Render the Footer component (empty as default).*/\nfunction Footer() {\n var _a = useDayPicker(), footer = _a.footer, styles = _a.styles, tfoot = _a.classNames.tfoot;\n if (!footer)\n return React__default.createElement(React__default.Fragment, null);\n return (React__default.createElement(\"tfoot\", { className: tfoot, style: styles.tfoot },\n React__default.createElement(\"tr\", null,\n React__default.createElement(\"td\", { colSpan: 8 }, footer))));\n}\n\n/**\n * Generate a series of 7 days, starting from the week, to use for formatting\n * the weekday names (Monday, Tuesday, etc.).\n */\nfunction getWeekdays(locale, \n/** The index of the first day of the week (0 - Sunday). */\nweekStartsOn, \n/** Use ISOWeek instead of locale/ */\nISOWeek) {\n var start = ISOWeek\n ? startOfISOWeek(new Date())\n : startOfWeek(new Date(), { locale: locale, weekStartsOn: weekStartsOn });\n var days = [];\n for (var i = 0; i < 7; i++) {\n var day = addDays(start, i);\n days.push(day);\n }\n return days;\n}\n\n/**\n * Render the HeadRow component - i.e. the table head row with the weekday names.\n */\nfunction HeadRow() {\n var _a = useDayPicker(), classNames = _a.classNames, styles = _a.styles, showWeekNumber = _a.showWeekNumber, locale = _a.locale, weekStartsOn = _a.weekStartsOn, ISOWeek = _a.ISOWeek, formatWeekdayName = _a.formatters.formatWeekdayName, labelWeekday = _a.labels.labelWeekday;\n var weekdays = getWeekdays(locale, weekStartsOn, ISOWeek);\n return (React__default.createElement(\"tr\", { style: styles.head_row, className: classNames.head_row },\n showWeekNumber && (React__default.createElement(\"th\", { scope: \"col\", style: styles.head_cell, className: classNames.head_cell })),\n weekdays.map(function (weekday, i) { return (React__default.createElement(\"th\", { key: i, scope: \"col\", className: classNames.head_cell, style: styles.head_cell },\n React__default.createElement(\"span\", { \"aria-hidden\": true }, formatWeekdayName(weekday, { locale: locale })),\n React__default.createElement(\"span\", { className: classNames.vhidden }, labelWeekday(weekday, { locale: locale })))); })));\n}\n\n/** Render the table head. */\nfunction Head() {\n var _a;\n var _b = useDayPicker(), classNames = _b.classNames, styles = _b.styles, components = _b.components;\n var HeadRowComponent = (_a = components === null || components === void 0 ? void 0 : components.HeadRow) !== null && _a !== void 0 ? _a : HeadRow;\n return (React__default.createElement(\"thead\", { style: styles.head, className: classNames.head },\n React__default.createElement(HeadRowComponent, null)));\n}\n\n/** Render the content of the day cell. */\nfunction DayContent(props) {\n var _a = useDayPicker(), locale = _a.locale, formatDay = _a.formatters.formatDay;\n return React__default.createElement(React__default.Fragment, null, formatDay(props.date, { locale: locale }));\n}\n\n/**\n * The SelectMultiple context shares details about the selected days when in\n * multiple selection mode.\n *\n * Access this context from the {@link useSelectMultiple} hook.\n */\nvar SelectMultipleContext = createContext(undefined);\n/** Provides the values for the {@link SelectMultipleContext}. */\nfunction SelectMultipleProvider(props) {\n if (!isDayPickerMultiple(props.initialProps)) {\n var emptyContextValue = {\n selected: undefined,\n modifiers: {\n disabled: []\n }\n };\n return (React__default.createElement(SelectMultipleContext.Provider, { value: emptyContextValue }, props.children));\n }\n return (React__default.createElement(SelectMultipleProviderInternal, { initialProps: props.initialProps, children: props.children }));\n}\nfunction SelectMultipleProviderInternal(_a) {\n var initialProps = _a.initialProps, children = _a.children;\n var selected = initialProps.selected, min = initialProps.min, max = initialProps.max;\n var onDayClick = function (day, activeModifiers, e) {\n var _a, _b;\n (_a = initialProps.onDayClick) === null || _a === void 0 ? void 0 : _a.call(initialProps, day, activeModifiers, e);\n var isMinSelected = Boolean(activeModifiers.selected && min && (selected === null || selected === void 0 ? void 0 : selected.length) === min);\n if (isMinSelected) {\n return;\n }\n var isMaxSelected = Boolean(!activeModifiers.selected && max && (selected === null || selected === void 0 ? void 0 : selected.length) === max);\n if (isMaxSelected) {\n return;\n }\n var selectedDays = selected ? __spreadArray([], selected, true) : [];\n if (activeModifiers.selected) {\n var index = selectedDays.findIndex(function (selectedDay) {\n return isSameDay(day, selectedDay);\n });\n selectedDays.splice(index, 1);\n }\n else {\n selectedDays.push(day);\n }\n (_b = initialProps.onSelect) === null || _b === void 0 ? void 0 : _b.call(initialProps, selectedDays, day, activeModifiers, e);\n };\n var modifiers = {\n disabled: []\n };\n if (selected) {\n modifiers.disabled.push(function (day) {\n var isMaxSelected = max && selected.length > max - 1;\n var isSelected = selected.some(function (selectedDay) {\n return isSameDay(selectedDay, day);\n });\n return Boolean(isMaxSelected && !isSelected);\n });\n }\n var contextValue = {\n selected: selected,\n onDayClick: onDayClick,\n modifiers: modifiers\n };\n return (React__default.createElement(SelectMultipleContext.Provider, { value: contextValue }, children));\n}\n/**\n * Hook to access the {@link SelectMultipleContextValue}.\n *\n * This hook is meant to be used inside internal or custom components.\n */\nfunction useSelectMultiple() {\n var context = useContext(SelectMultipleContext);\n if (!context) {\n throw new Error('useSelectMultiple must be used within a SelectMultipleProvider');\n }\n return context;\n}\n\n/**\n * Add a day to an existing range.\n *\n * The returned range takes in account the `undefined` values and if the added\n * day is already present in the range.\n */\nfunction addToRange(day, range) {\n var _a = range || {}, from = _a.from, to = _a.to;\n if (!from) {\n return { from: day, to: undefined };\n }\n if (!to && isSameDay(from, day)) {\n return { from: from, to: day };\n }\n if (!to && isBefore(day, from)) {\n return { from: day, to: from };\n }\n if (!to) {\n return { from: from, to: day };\n }\n if (isSameDay(to, day) && isSameDay(from, day)) {\n return undefined;\n }\n if (isSameDay(to, day)) {\n return { from: to, to: undefined };\n }\n if (isSameDay(from, day)) {\n return undefined;\n }\n if (isAfter(from, day)) {\n return { from: day, to: to };\n }\n return { from: from, to: day };\n}\n\n/**\n * The SelectRange context shares details about the selected days when in\n * range selection mode.\n *\n * Access this context from the {@link useSelectRange} hook.\n */\nvar SelectRangeContext = createContext(undefined);\n/** Provides the values for the {@link SelectRangeProvider}. */\nfunction SelectRangeProvider(props) {\n if (!isDayPickerRange(props.initialProps)) {\n var emptyContextValue = {\n selected: undefined,\n modifiers: {\n range_start: [],\n range_end: [],\n range_middle: [],\n disabled: []\n }\n };\n return (React__default.createElement(SelectRangeContext.Provider, { value: emptyContextValue }, props.children));\n }\n return (React__default.createElement(SelectRangeProviderInternal, { initialProps: props.initialProps, children: props.children }));\n}\nfunction SelectRangeProviderInternal(_a) {\n var initialProps = _a.initialProps, children = _a.children;\n var selected = initialProps.selected;\n var _b = selected || {}, selectedFrom = _b.from, selectedTo = _b.to;\n var min = initialProps.min;\n var max = initialProps.max;\n var onDayClick = function (day, activeModifiers, e) {\n var _a, _b;\n (_a = initialProps.onDayClick) === null || _a === void 0 ? void 0 : _a.call(initialProps, day, activeModifiers, e);\n var newRange = addToRange(day, selected);\n (_b = initialProps.onSelect) === null || _b === void 0 ? void 0 : _b.call(initialProps, newRange, day, activeModifiers, e);\n };\n var modifiers = {\n range_start: [],\n range_end: [],\n range_middle: [],\n disabled: []\n };\n if (selectedFrom) {\n modifiers.range_start = [selectedFrom];\n if (!selectedTo) {\n modifiers.range_end = [selectedFrom];\n }\n else {\n modifiers.range_end = [selectedTo];\n if (!isSameDay$1(selectedFrom, selectedTo)) {\n modifiers.range_middle = [\n {\n after: selectedFrom,\n before: selectedTo\n }\n ];\n }\n }\n }\n if (min) {\n if (selectedFrom && !selectedTo) {\n modifiers.disabled.push({\n after: subDays(selectedFrom, min - 1),\n before: addDays(selectedFrom, min - 1)\n });\n }\n if (selectedFrom && selectedTo) {\n modifiers.disabled.push({\n after: selectedFrom,\n before: addDays(selectedFrom, min - 1)\n });\n }\n }\n if (max) {\n if (selectedFrom && !selectedTo) {\n modifiers.disabled.push({\n before: addDays(selectedFrom, -max + 1)\n });\n modifiers.disabled.push({\n after: addDays(selectedFrom, max - 1)\n });\n }\n if (selectedFrom && selectedTo) {\n var selectedCount = differenceInCalendarDays(selectedTo, selectedFrom) + 1;\n var offset = max - selectedCount;\n modifiers.disabled.push({\n before: subDays(selectedFrom, offset)\n });\n modifiers.disabled.push({\n after: addDays(selectedTo, offset)\n });\n }\n }\n return (React__default.createElement(SelectRangeContext.Provider, { value: { selected: selected, onDayClick: onDayClick, modifiers: modifiers } }, children));\n}\n/**\n * Hook to access the {@link SelectRangeContextValue}.\n *\n * This hook is meant to be used inside internal or custom components.\n */\nfunction useSelectRange() {\n var context = useContext(SelectRangeContext);\n if (!context) {\n throw new Error('useSelectRange must be used within a SelectRangeProvider');\n }\n return context;\n}\n\n/** Normalize to array a matcher input. */\nfunction matcherToArray(matcher) {\n if (Array.isArray(matcher)) {\n return matcher;\n }\n else if (matcher !== undefined) {\n return [matcher];\n }\n else {\n return [];\n }\n}\n\n/** Create CustomModifiers from dayModifiers */\nfunction getCustomModifiers(dayModifiers) {\n var customModifiers = {};\n Object.entries(dayModifiers).forEach(function (_a) {\n var modifier = _a[0], matcher = _a[1];\n customModifiers[modifier] = matcherToArray(matcher);\n });\n return customModifiers;\n}\n\n/** The name of the modifiers that are used internally by DayPicker. */\nvar InternalModifier;\n(function (InternalModifier) {\n InternalModifier[\"Outside\"] = \"outside\";\n /** Name of the modifier applied to the disabled days, using the `disabled` prop. */\n InternalModifier[\"Disabled\"] = \"disabled\";\n /** Name of the modifier applied to the selected days using the `selected` prop). */\n InternalModifier[\"Selected\"] = \"selected\";\n /** Name of the modifier applied to the hidden days using the `hidden` prop). */\n InternalModifier[\"Hidden\"] = \"hidden\";\n /** Name of the modifier applied to the day specified using the `today` prop). */\n InternalModifier[\"Today\"] = \"today\";\n /** The modifier applied to the day starting a selected range, when in range selection mode. */\n InternalModifier[\"RangeStart\"] = \"range_start\";\n /** The modifier applied to the day ending a selected range, when in range selection mode. */\n InternalModifier[\"RangeEnd\"] = \"range_end\";\n /** The modifier applied to the days between the start and the end of a selected range, when in range selection mode. */\n InternalModifier[\"RangeMiddle\"] = \"range_middle\";\n})(InternalModifier || (InternalModifier = {}));\n\nvar Selected = InternalModifier.Selected, Disabled = InternalModifier.Disabled, Hidden = InternalModifier.Hidden, Today = InternalModifier.Today, RangeEnd = InternalModifier.RangeEnd, RangeMiddle = InternalModifier.RangeMiddle, RangeStart = InternalModifier.RangeStart, Outside = InternalModifier.Outside;\n/** Return the {@link InternalModifiers} from the DayPicker and select contexts. */\nfunction getInternalModifiers(dayPicker, selectMultiple, selectRange) {\n var _a;\n var internalModifiers = (_a = {},\n _a[Selected] = matcherToArray(dayPicker.selected),\n _a[Disabled] = matcherToArray(dayPicker.disabled),\n _a[Hidden] = matcherToArray(dayPicker.hidden),\n _a[Today] = [dayPicker.today],\n _a[RangeEnd] = [],\n _a[RangeMiddle] = [],\n _a[RangeStart] = [],\n _a[Outside] = [],\n _a);\n if (dayPicker.fromDate) {\n internalModifiers[Disabled].push({ before: dayPicker.fromDate });\n }\n if (dayPicker.toDate) {\n internalModifiers[Disabled].push({ after: dayPicker.toDate });\n }\n if (isDayPickerMultiple(dayPicker)) {\n internalModifiers[Disabled] = internalModifiers[Disabled].concat(selectMultiple.modifiers[Disabled]);\n }\n else if (isDayPickerRange(dayPicker)) {\n internalModifiers[Disabled] = internalModifiers[Disabled].concat(selectRange.modifiers[Disabled]);\n internalModifiers[RangeStart] = selectRange.modifiers[RangeStart];\n internalModifiers[RangeMiddle] = selectRange.modifiers[RangeMiddle];\n internalModifiers[RangeEnd] = selectRange.modifiers[RangeEnd];\n }\n return internalModifiers;\n}\n\n/** The Modifiers context store the modifiers used in DayPicker. To access the value of this context, use {@link useModifiers}. */\nvar ModifiersContext = createContext(undefined);\n/** Provide the value for the {@link ModifiersContext}. */\nfunction ModifiersProvider(props) {\n var dayPicker = useDayPicker();\n var selectMultiple = useSelectMultiple();\n var selectRange = useSelectRange();\n var internalModifiers = getInternalModifiers(dayPicker, selectMultiple, selectRange);\n var customModifiers = getCustomModifiers(dayPicker.modifiers);\n var modifiers = __assign(__assign({}, internalModifiers), customModifiers);\n return (React__default.createElement(ModifiersContext.Provider, { value: modifiers }, props.children));\n}\n/**\n * Return the modifiers used by DayPicker.\n *\n * This hook is meant to be used inside internal or custom components.\n * Requires to be wrapped into {@link ModifiersProvider}.\n *\n */\nfunction useModifiers() {\n var context = useContext(ModifiersContext);\n if (!context) {\n throw new Error('useModifiers must be used within a ModifiersProvider');\n }\n return context;\n}\n\n/** Returns true if `matcher` is of type {@link DateInterval}. */\nfunction isDateInterval(matcher) {\n return Boolean(matcher &&\n typeof matcher === 'object' &&\n 'before' in matcher &&\n 'after' in matcher);\n}\n/** Returns true if `value` is a {@link DateRange} type. */\nfunction isDateRange(value) {\n return Boolean(value && typeof value === 'object' && 'from' in value);\n}\n/** Returns true if `value` is of type {@link DateAfter}. */\nfunction isDateAfterType(value) {\n return Boolean(value && typeof value === 'object' && 'after' in value);\n}\n/** Returns true if `value` is of type {@link DateBefore}. */\nfunction isDateBeforeType(value) {\n return Boolean(value && typeof value === 'object' && 'before' in value);\n}\n/** Returns true if `value` is a {@link DayOfWeek} type. */\nfunction isDayOfWeekType(value) {\n return Boolean(value && typeof value === 'object' && 'dayOfWeek' in value);\n}\n\n/** Return `true` whether `date` is inside `range`. */\nfunction isDateInRange(date, range) {\n var _a;\n var from = range.from, to = range.to;\n if (!from) {\n return false;\n }\n if (!to && isSameDay(from, date)) {\n return true;\n }\n if (!to) {\n return false;\n }\n var isRangeInverted = differenceInCalendarDays(to, from) < 0;\n if (isRangeInverted) {\n _a = [to, from], from = _a[0], to = _a[1];\n }\n var isInRange = differenceInCalendarDays(date, from) >= 0 &&\n differenceInCalendarDays(to, date) >= 0;\n return isInRange;\n}\n\n/** Returns true if `value` is a Date type. */\nfunction isDateType(value) {\n return isDate(value);\n}\n/** Returns true if `value` is an array of valid dates. */\nfunction isArrayOfDates(value) {\n return Array.isArray(value) && value.every(isDate);\n}\n/**\n * Returns whether a day matches against at least one of the given Matchers.\n *\n * ```\n * const day = new Date(2022, 5, 19);\n * const matcher1: DateRange = {\n * from: new Date(2021, 12, 21),\n * to: new Date(2021, 12, 30)\n * }\n * const matcher2: DateRange = {\n * from: new Date(2022, 5, 1),\n * to: new Date(2022, 5, 23)\n * }\n *\n * const isMatch(day, [matcher1, matcher2]); // true, since day is in the matcher1 range.\n * ```\n * */\nfunction isMatch(day, matchers) {\n return matchers.some(function (matcher) {\n if (typeof matcher === 'boolean') {\n return matcher;\n }\n if (isDateType(matcher)) {\n return isSameDay(day, matcher);\n }\n if (isArrayOfDates(matcher)) {\n return matcher.includes(day);\n }\n if (isDateRange(matcher)) {\n return isDateInRange(day, matcher);\n }\n if (isDayOfWeekType(matcher)) {\n return matcher.dayOfWeek.includes(day.getDay());\n }\n if (isDateInterval(matcher)) {\n var diffBefore = differenceInCalendarDays(matcher.before, day);\n var diffAfter = differenceInCalendarDays(matcher.after, day);\n var isDayBefore = diffBefore > 0;\n var isDayAfter = diffAfter < 0;\n var isClosedInterval = isAfter$1(matcher.before, matcher.after);\n if (isClosedInterval) {\n return isDayAfter && isDayBefore;\n }\n else {\n return isDayBefore || isDayAfter;\n }\n }\n if (isDateAfterType(matcher)) {\n return differenceInCalendarDays(day, matcher.after) > 0;\n }\n if (isDateBeforeType(matcher)) {\n return differenceInCalendarDays(matcher.before, day) > 0;\n }\n if (typeof matcher === 'function') {\n return matcher(day);\n }\n return false;\n });\n}\n\n/** Return the active modifiers for the given day. */\nfunction getActiveModifiers(day, \n/** The modifiers to match for the given date. */\nmodifiers, \n/** The month where the day is displayed, to add the \"outside\" modifiers. */\ndisplayMonth) {\n var matchedModifiers = Object.keys(modifiers).reduce(function (result, key) {\n var modifier = modifiers[key];\n if (isMatch(day, modifier)) {\n result.push(key);\n }\n return result;\n }, []);\n var activeModifiers = {};\n matchedModifiers.forEach(function (modifier) { return (activeModifiers[modifier] = true); });\n if (displayMonth && !isSameMonth(day, displayMonth)) {\n activeModifiers.outside = true;\n }\n return activeModifiers;\n}\n\n/**\n * Returns the day that should be the target of the focus when DayPicker is\n * rendered the first time.\n *\n * TODO: this function doesn't consider if the day is outside the month. We\n * implemented this check in `useDayRender` but it should probably go here. See\n * https://github.com/gpbl/react-day-picker/pull/1576\n */\nfunction getInitialFocusTarget(displayMonths, modifiers) {\n var firstDayInMonth = startOfMonth(displayMonths[0]);\n var lastDayInMonth = endOfMonth(displayMonths[displayMonths.length - 1]);\n // TODO: cleanup code\n var firstFocusableDay;\n var today;\n var date = firstDayInMonth;\n while (date <= lastDayInMonth) {\n var activeModifiers = getActiveModifiers(date, modifiers);\n var isFocusable = !activeModifiers.disabled && !activeModifiers.hidden;\n if (!isFocusable) {\n date = addDays(date, 1);\n continue;\n }\n if (activeModifiers.selected) {\n return date;\n }\n if (activeModifiers.today && !today) {\n today = date;\n }\n if (!firstFocusableDay) {\n firstFocusableDay = date;\n }\n date = addDays(date, 1);\n }\n if (today) {\n return today;\n }\n else {\n return firstFocusableDay;\n }\n}\n\nvar MAX_RETRY = 365;\n/** Return the next date to be focused. */\nfunction getNextFocus(focusedDay, options) {\n var moveBy = options.moveBy, direction = options.direction, context = options.context, modifiers = options.modifiers, _a = options.retry, retry = _a === void 0 ? { count: 0, lastFocused: focusedDay } : _a;\n var weekStartsOn = context.weekStartsOn, fromDate = context.fromDate, toDate = context.toDate, locale = context.locale;\n var moveFns = {\n day: addDays,\n week: addWeeks,\n month: addMonths,\n year: addYears,\n startOfWeek: function (date) {\n return context.ISOWeek\n ? startOfISOWeek(date)\n : startOfWeek(date, { locale: locale, weekStartsOn: weekStartsOn });\n },\n endOfWeek: function (date) {\n return context.ISOWeek\n ? endOfISOWeek(date)\n : endOfWeek(date, { locale: locale, weekStartsOn: weekStartsOn });\n }\n };\n var newFocusedDay = moveFns[moveBy](focusedDay, direction === 'after' ? 1 : -1);\n if (direction === 'before' && fromDate) {\n newFocusedDay = max([fromDate, newFocusedDay]);\n }\n else if (direction === 'after' && toDate) {\n newFocusedDay = min([toDate, newFocusedDay]);\n }\n var isFocusable = true;\n if (modifiers) {\n var activeModifiers = getActiveModifiers(newFocusedDay, modifiers);\n isFocusable = !activeModifiers.disabled && !activeModifiers.hidden;\n }\n if (isFocusable) {\n return newFocusedDay;\n }\n else {\n if (retry.count > MAX_RETRY) {\n return retry.lastFocused;\n }\n return getNextFocus(newFocusedDay, {\n moveBy: moveBy,\n direction: direction,\n context: context,\n modifiers: modifiers,\n retry: __assign(__assign({}, retry), { count: retry.count + 1 })\n });\n }\n}\n\n/**\n * The Focus context shares details about the focused day for the keyboard\n *\n * Access this context from the {@link useFocusContext} hook.\n */\nvar FocusContext = createContext(undefined);\n/** The provider for the {@link FocusContext}. */\nfunction FocusProvider(props) {\n var navigation = useNavigation();\n var modifiers = useModifiers();\n var _a = useState(), focusedDay = _a[0], setFocusedDay = _a[1];\n var _b = useState(), lastFocused = _b[0], setLastFocused = _b[1];\n var initialFocusTarget = getInitialFocusTarget(navigation.displayMonths, modifiers);\n // TODO: cleanup and test obscure code below\n var focusTarget = (focusedDay !== null && focusedDay !== void 0 ? focusedDay : (lastFocused && navigation.isDateDisplayed(lastFocused)))\n ? lastFocused\n : initialFocusTarget;\n var blur = function () {\n setLastFocused(focusedDay);\n setFocusedDay(undefined);\n };\n var focus = function (date) {\n setFocusedDay(date);\n };\n var context = useDayPicker();\n var moveFocus = function (moveBy, direction) {\n if (!focusedDay)\n return;\n var nextFocused = getNextFocus(focusedDay, {\n moveBy: moveBy,\n direction: direction,\n context: context,\n modifiers: modifiers\n });\n if (isSameDay(focusedDay, nextFocused))\n return undefined;\n navigation.goToDate(nextFocused, focusedDay);\n focus(nextFocused);\n };\n var value = {\n focusedDay: focusedDay,\n focusTarget: focusTarget,\n blur: blur,\n focus: focus,\n focusDayAfter: function () { return moveFocus('day', 'after'); },\n focusDayBefore: function () { return moveFocus('day', 'before'); },\n focusWeekAfter: function () { return moveFocus('week', 'after'); },\n focusWeekBefore: function () { return moveFocus('week', 'before'); },\n focusMonthBefore: function () { return moveFocus('month', 'before'); },\n focusMonthAfter: function () { return moveFocus('month', 'after'); },\n focusYearBefore: function () { return moveFocus('year', 'before'); },\n focusYearAfter: function () { return moveFocus('year', 'after'); },\n focusStartOfWeek: function () { return moveFocus('startOfWeek', 'before'); },\n focusEndOfWeek: function () { return moveFocus('endOfWeek', 'after'); }\n };\n return (React__default.createElement(FocusContext.Provider, { value: value }, props.children));\n}\n/**\n * Hook to access the {@link FocusContextValue}. Use this hook to handle the\n * focus state of the elements.\n *\n * This hook is meant to be used inside internal or custom components.\n */\nfunction useFocusContext() {\n var context = useContext(FocusContext);\n if (!context) {\n throw new Error('useFocusContext must be used within a FocusProvider');\n }\n return context;\n}\n\n/**\n * Return the active modifiers for the specified day.\n *\n * This hook is meant to be used inside internal or custom components.\n *\n * @param day\n * @param displayMonth\n */\nfunction useActiveModifiers(day, \n/**\n * The month where the date is displayed. If not the same as `date`, the day\n * is an \"outside day\".\n */\ndisplayMonth) {\n var modifiers = useModifiers();\n var activeModifiers = getActiveModifiers(day, modifiers, displayMonth);\n return activeModifiers;\n}\n\n/**\n * The SelectSingle context shares details about the selected days when in\n * single selection mode.\n *\n * Access this context from the {@link useSelectSingle} hook.\n */\nvar SelectSingleContext = createContext(undefined);\n/** Provides the values for the {@link SelectSingleProvider}. */\nfunction SelectSingleProvider(props) {\n if (!isDayPickerSingle(props.initialProps)) {\n var emptyContextValue = {\n selected: undefined\n };\n return (React__default.createElement(SelectSingleContext.Provider, { value: emptyContextValue }, props.children));\n }\n return (React__default.createElement(SelectSingleProviderInternal, { initialProps: props.initialProps, children: props.children }));\n}\nfunction SelectSingleProviderInternal(_a) {\n var initialProps = _a.initialProps, children = _a.children;\n var onDayClick = function (day, activeModifiers, e) {\n var _a, _b, _c;\n (_a = initialProps.onDayClick) === null || _a === void 0 ? void 0 : _a.call(initialProps, day, activeModifiers, e);\n if (activeModifiers.selected && !initialProps.required) {\n (_b = initialProps.onSelect) === null || _b === void 0 ? void 0 : _b.call(initialProps, undefined, day, activeModifiers, e);\n return;\n }\n (_c = initialProps.onSelect) === null || _c === void 0 ? void 0 : _c.call(initialProps, day, day, activeModifiers, e);\n };\n var contextValue = {\n selected: initialProps.selected,\n onDayClick: onDayClick\n };\n return (React__default.createElement(SelectSingleContext.Provider, { value: contextValue }, children));\n}\n/**\n * Hook to access the {@link SelectSingleContextValue}.\n *\n * This hook is meant to be used inside internal or custom components.\n */\nfunction useSelectSingle() {\n var context = useContext(SelectSingleContext);\n if (!context) {\n throw new Error('useSelectSingle must be used within a SelectSingleProvider');\n }\n return context;\n}\n\n/**\n * This hook returns details about the content to render in the day cell.\n *\n *\n * When a day cell is rendered in the table, DayPicker can either:\n *\n * - render nothing: when the day is outside the month or has matched the\n * \"hidden\" modifier.\n * - render a button when `onDayClick` or a selection mode is set.\n * - render a non-interactive element: when no selection mode is set, the day\n * cell shouldn’t respond to any interaction. DayPicker should render a `div`\n * or a `span`.\n *\n * ### Usage\n *\n * Use this hook to customize the behavior of the {@link Day} component. Create a\n * new `Day` component using this hook and pass it to the `components` prop.\n * The source of {@link Day} can be a good starting point.\n *\n */\nfunction useDayEventHandlers(date, activeModifiers) {\n var dayPicker = useDayPicker();\n var single = useSelectSingle();\n var multiple = useSelectMultiple();\n var range = useSelectRange();\n var _a = useFocusContext(), focusDayAfter = _a.focusDayAfter, focusDayBefore = _a.focusDayBefore, focusWeekAfter = _a.focusWeekAfter, focusWeekBefore = _a.focusWeekBefore, blur = _a.blur, focus = _a.focus, focusMonthBefore = _a.focusMonthBefore, focusMonthAfter = _a.focusMonthAfter, focusYearBefore = _a.focusYearBefore, focusYearAfter = _a.focusYearAfter, focusStartOfWeek = _a.focusStartOfWeek, focusEndOfWeek = _a.focusEndOfWeek;\n var onClick = function (e) {\n var _a, _b, _c, _d;\n if (isDayPickerSingle(dayPicker)) {\n (_a = single.onDayClick) === null || _a === void 0 ? void 0 : _a.call(single, date, activeModifiers, e);\n }\n else if (isDayPickerMultiple(dayPicker)) {\n (_b = multiple.onDayClick) === null || _b === void 0 ? void 0 : _b.call(multiple, date, activeModifiers, e);\n }\n else if (isDayPickerRange(dayPicker)) {\n (_c = range.onDayClick) === null || _c === void 0 ? void 0 : _c.call(range, date, activeModifiers, e);\n }\n else {\n (_d = dayPicker.onDayClick) === null || _d === void 0 ? void 0 : _d.call(dayPicker, date, activeModifiers, e);\n }\n };\n var onFocus = function (e) {\n var _a;\n focus(date);\n (_a = dayPicker.onDayFocus) === null || _a === void 0 ? void 0 : _a.call(dayPicker, date, activeModifiers, e);\n };\n var onBlur = function (e) {\n var _a;\n blur();\n (_a = dayPicker.onDayBlur) === null || _a === void 0 ? void 0 : _a.call(dayPicker, date, activeModifiers, e);\n };\n var onMouseEnter = function (e) {\n var _a;\n (_a = dayPicker.onDayMouseEnter) === null || _a === void 0 ? void 0 : _a.call(dayPicker, date, activeModifiers, e);\n };\n var onMouseLeave = function (e) {\n var _a;\n (_a = dayPicker.onDayMouseLeave) === null || _a === void 0 ? void 0 : _a.call(dayPicker, date, activeModifiers, e);\n };\n var onTouchCancel = function (e) {\n var _a;\n (_a = dayPicker.onDayTouchCancel) === null || _a === void 0 ? void 0 : _a.call(dayPicker, date, activeModifiers, e);\n };\n var onTouchEnd = function (e) {\n var _a;\n (_a = dayPicker.onDayTouchEnd) === null || _a === void 0 ? void 0 : _a.call(dayPicker, date, activeModifiers, e);\n };\n var onTouchMove = function (e) {\n var _a;\n (_a = dayPicker.onDayTouchMove) === null || _a === void 0 ? void 0 : _a.call(dayPicker, date, activeModifiers, e);\n };\n var onTouchStart = function (e) {\n var _a;\n (_a = dayPicker.onDayTouchStart) === null || _a === void 0 ? void 0 : _a.call(dayPicker, date, activeModifiers, e);\n };\n var onKeyUp = function (e) {\n var _a;\n (_a = dayPicker.onDayKeyUp) === null || _a === void 0 ? void 0 : _a.call(dayPicker, date, activeModifiers, e);\n };\n var onKeyDown = function (e) {\n var _a;\n switch (e.key) {\n case 'ArrowLeft':\n e.preventDefault();\n e.stopPropagation();\n dayPicker.dir === 'rtl' ? focusDayAfter() : focusDayBefore();\n break;\n case 'ArrowRight':\n e.preventDefault();\n e.stopPropagation();\n dayPicker.dir === 'rtl' ? focusDayBefore() : focusDayAfter();\n break;\n case 'ArrowDown':\n e.preventDefault();\n e.stopPropagation();\n focusWeekAfter();\n break;\n case 'ArrowUp':\n e.preventDefault();\n e.stopPropagation();\n focusWeekBefore();\n break;\n case 'PageUp':\n e.preventDefault();\n e.stopPropagation();\n e.shiftKey ? focusYearBefore() : focusMonthBefore();\n break;\n case 'PageDown':\n e.preventDefault();\n e.stopPropagation();\n e.shiftKey ? focusYearAfter() : focusMonthAfter();\n break;\n case 'Home':\n e.preventDefault();\n e.stopPropagation();\n focusStartOfWeek();\n break;\n case 'End':\n e.preventDefault();\n e.stopPropagation();\n focusEndOfWeek();\n break;\n }\n (_a = dayPicker.onDayKeyDown) === null || _a === void 0 ? void 0 : _a.call(dayPicker, date, activeModifiers, e);\n };\n var eventHandlers = {\n onClick: onClick,\n onFocus: onFocus,\n onBlur: onBlur,\n onKeyDown: onKeyDown,\n onKeyUp: onKeyUp,\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n onTouchCancel: onTouchCancel,\n onTouchEnd: onTouchEnd,\n onTouchMove: onTouchMove,\n onTouchStart: onTouchStart\n };\n return eventHandlers;\n}\n\n/**\n * Return the current selected days when DayPicker is in selection mode. Days\n * selected by the custom selection mode are not returned.\n *\n * This hook is meant to be used inside internal or custom components.\n *\n */\nfunction useSelectedDays() {\n var dayPicker = useDayPicker();\n var single = useSelectSingle();\n var multiple = useSelectMultiple();\n var range = useSelectRange();\n var selectedDays = isDayPickerSingle(dayPicker)\n ? single.selected\n : isDayPickerMultiple(dayPicker)\n ? multiple.selected\n : isDayPickerRange(dayPicker)\n ? range.selected\n : undefined;\n return selectedDays;\n}\n\nfunction isInternalModifier(modifier) {\n return Object.values(InternalModifier).includes(modifier);\n}\n/**\n * Return the class names for the Day element, according to the given active\n * modifiers.\n *\n * Custom class names are set via `modifiersClassNames` or `classNames`,\n * where the first have the precedence.\n */\nfunction getDayClassNames(dayPicker, activeModifiers) {\n var classNames = [dayPicker.classNames.day];\n Object.keys(activeModifiers).forEach(function (modifier) {\n var customClassName = dayPicker.modifiersClassNames[modifier];\n if (customClassName) {\n classNames.push(customClassName);\n }\n else if (isInternalModifier(modifier)) {\n var internalClassName = dayPicker.classNames[\"day_\".concat(modifier)];\n if (internalClassName) {\n classNames.push(internalClassName);\n }\n }\n });\n return classNames;\n}\n\n/** Return the style for the Day element, according to the given active modifiers. */\nfunction getDayStyle(dayPicker, activeModifiers) {\n var style = __assign({}, dayPicker.styles.day);\n Object.keys(activeModifiers).forEach(function (modifier) {\n var _a;\n style = __assign(__assign({}, style), (_a = dayPicker.modifiersStyles) === null || _a === void 0 ? void 0 : _a[modifier]);\n });\n return style;\n}\n\n/**\n * Return props and data used to render the {@link Day} component.\n *\n * Use this hook when creating a component to replace the built-in `Day`\n * component.\n */\nfunction useDayRender(\n/** The date to render. */\nday, \n/** The month where the date is displayed (if not the same as `date`, it means it is an \"outside\" day). */\ndisplayMonth, \n/** A ref to the button element that will be target of focus when rendered (if required). */\nbuttonRef) {\n var _a;\n var _b, _c;\n var dayPicker = useDayPicker();\n var focusContext = useFocusContext();\n var activeModifiers = useActiveModifiers(day, displayMonth);\n var eventHandlers = useDayEventHandlers(day, activeModifiers);\n var selectedDays = useSelectedDays();\n var isButton = Boolean(dayPicker.onDayClick || dayPicker.mode !== 'default');\n // Focus the button if the day is focused according to the focus context\n useEffect(function () {\n var _a;\n if (activeModifiers.outside)\n return;\n if (!focusContext.focusedDay)\n return;\n if (!isButton)\n return;\n if (isSameDay(focusContext.focusedDay, day)) {\n (_a = buttonRef.current) === null || _a === void 0 ? void 0 : _a.focus();\n }\n }, [\n focusContext.focusedDay,\n day,\n buttonRef,\n isButton,\n activeModifiers.outside\n ]);\n var className = getDayClassNames(dayPicker, activeModifiers).join(' ');\n var style = getDayStyle(dayPicker, activeModifiers);\n var ariaLabel = dayPicker.labels.labelDay(day, activeModifiers, {\n locale: dayPicker.locale\n });\n var isHidden = Boolean((activeModifiers.outside && !dayPicker.showOutsideDays) ||\n activeModifiers.hidden);\n var DayContentComponent = (_c = (_b = dayPicker.components) === null || _b === void 0 ? void 0 : _b.DayContent) !== null && _c !== void 0 ? _c : DayContent;\n var children = (React__default.createElement(DayContentComponent, { date: day, displayMonth: displayMonth, activeModifiers: activeModifiers }));\n var divProps = {\n style: style,\n className: className,\n children: children,\n 'aria-label': ariaLabel\n };\n var isFocusTarget = focusContext.focusTarget &&\n isSameDay(focusContext.focusTarget, day) &&\n !activeModifiers.outside;\n var isFocused = focusContext.focusedDay && isSameDay(focusContext.focusedDay, day);\n var buttonProps = __assign(__assign(__assign({}, divProps), (_a = { disabled: activeModifiers.disabled }, _a['aria-pressed'] = activeModifiers.selected, _a['aria-label'] = ariaLabel, _a.tabIndex = isFocused || isFocusTarget ? 0 : -1, _a)), eventHandlers);\n var dayRender = {\n isButton: isButton,\n isHidden: isHidden,\n activeModifiers: activeModifiers,\n selectedDays: selectedDays,\n buttonProps: buttonProps,\n divProps: divProps\n };\n return dayRender;\n}\n\n/**\n * The content of a day cell – as a button or span element according to its\n * modifiers.\n */\nfunction Day(props) {\n var buttonRef = useRef(null);\n var dayRender = useDayRender(props.date, props.displayMonth, buttonRef);\n if (dayRender.isHidden) {\n return React__default.createElement(React__default.Fragment, null);\n }\n if (!dayRender.isButton) {\n return React__default.createElement(\"div\", __assign({}, dayRender.divProps));\n }\n return React__default.createElement(Button, __assign({ name: \"day\", ref: buttonRef }, dayRender.buttonProps));\n}\n\n/**\n * Render the week number element. If `onWeekNumberClick` is passed to DayPicker, it\n * renders a button, otherwise a span element.\n */\nfunction WeekNumber(props) {\n var weekNumber = props.number, dates = props.dates;\n var _a = useDayPicker(), onWeekNumberClick = _a.onWeekNumberClick, styles = _a.styles, classNames = _a.classNames, locale = _a.locale, labelWeekNumber = _a.labels.labelWeekNumber, formatWeekNumber = _a.formatters.formatWeekNumber;\n var content = formatWeekNumber(Number(weekNumber), { locale: locale });\n if (!onWeekNumberClick) {\n return (React__default.createElement(\"span\", { className: classNames.weeknumber, style: styles.weeknumber }, content));\n }\n var label = labelWeekNumber(Number(weekNumber), { locale: locale });\n var handleClick = function (e) {\n onWeekNumberClick(weekNumber, dates, e);\n };\n return (React__default.createElement(Button, { name: \"week-number\", \"aria-label\": label, className: classNames.weeknumber, style: styles.weeknumber, onClick: handleClick }, content));\n}\n\n/** Render a row in the calendar, with the days and the week number. */\nfunction Row(props) {\n var _a, _b;\n var _c = useDayPicker(), styles = _c.styles, classNames = _c.classNames, showWeekNumber = _c.showWeekNumber, components = _c.components;\n var DayComponent = (_a = components === null || components === void 0 ? void 0 : components.Day) !== null && _a !== void 0 ? _a : Day;\n var WeeknumberComponent = (_b = components === null || components === void 0 ? void 0 : components.WeekNumber) !== null && _b !== void 0 ? _b : WeekNumber;\n var weekNumberCell;\n if (showWeekNumber) {\n weekNumberCell = (React__default.createElement(\"td\", { className: classNames.cell, style: styles.cell },\n React__default.createElement(WeeknumberComponent, { number: props.weekNumber, dates: props.dates })));\n }\n return (React__default.createElement(\"tr\", { className: classNames.row, style: styles.row },\n weekNumberCell,\n props.dates.map(function (date) { return (React__default.createElement(\"td\", { className: classNames.cell, style: styles.cell, key: getUnixTime(date) },\n React__default.createElement(DayComponent, { displayMonth: props.displayMonth, date: date }))); })));\n}\n\n/** Return the weeks between two dates. */\nfunction daysToMonthWeeks(fromDate, toDate, options) {\n var toWeek = (options === null || options === void 0 ? void 0 : options.ISOWeek)\n ? endOfISOWeek(toDate)\n : endOfWeek(toDate, options);\n var fromWeek = (options === null || options === void 0 ? void 0 : options.ISOWeek)\n ? startOfISOWeek(fromDate)\n : startOfWeek(fromDate, options);\n var nOfDays = differenceInCalendarDays(toWeek, fromWeek);\n var days = [];\n for (var i = 0; i <= nOfDays; i++) {\n days.push(addDays(fromWeek, i));\n }\n var weeksInMonth = days.reduce(function (result, date) {\n var weekNumber = (options === null || options === void 0 ? void 0 : options.ISOWeek)\n ? getISOWeek(date)\n : getWeek(date, options);\n var existingWeek = result.find(function (value) { return value.weekNumber === weekNumber; });\n if (existingWeek) {\n existingWeek.dates.push(date);\n return result;\n }\n result.push({\n weekNumber: weekNumber,\n dates: [date]\n });\n return result;\n }, []);\n return weeksInMonth;\n}\n\n/**\n * Return the weeks belonging to the given month, adding the \"outside days\" to\n * the first and last week.\n */\nfunction getMonthWeeks(month, options) {\n var weeksInMonth = daysToMonthWeeks(startOfMonth(month), endOfMonth(month), options);\n if (options === null || options === void 0 ? void 0 : options.useFixedWeeks) {\n // Add extra weeks to the month, up to 6 weeks\n var nrOfMonthWeeks = getWeeksInMonth(month, options);\n if (nrOfMonthWeeks < 6) {\n var lastWeek = weeksInMonth[weeksInMonth.length - 1];\n var lastDate = lastWeek.dates[lastWeek.dates.length - 1];\n var toDate = addWeeks(lastDate, 6 - nrOfMonthWeeks);\n var extraWeeks = daysToMonthWeeks(addWeeks(lastDate, 1), toDate, options);\n weeksInMonth.push.apply(weeksInMonth, extraWeeks);\n }\n }\n return weeksInMonth;\n}\n\n/** Render the table with the calendar. */\nfunction Table(props) {\n var _a, _b, _c;\n var _d = useDayPicker(), locale = _d.locale, classNames = _d.classNames, styles = _d.styles, hideHead = _d.hideHead, fixedWeeks = _d.fixedWeeks, components = _d.components, weekStartsOn = _d.weekStartsOn, firstWeekContainsDate = _d.firstWeekContainsDate, ISOWeek = _d.ISOWeek;\n var weeks = getMonthWeeks(props.displayMonth, {\n useFixedWeeks: Boolean(fixedWeeks),\n ISOWeek: ISOWeek,\n locale: locale,\n weekStartsOn: weekStartsOn,\n firstWeekContainsDate: firstWeekContainsDate\n });\n var HeadComponent = (_a = components === null || components === void 0 ? void 0 : components.Head) !== null && _a !== void 0 ? _a : Head;\n var RowComponent = (_b = components === null || components === void 0 ? void 0 : components.Row) !== null && _b !== void 0 ? _b : Row;\n var FooterComponent = (_c = components === null || components === void 0 ? void 0 : components.Footer) !== null && _c !== void 0 ? _c : Footer;\n return (React__default.createElement(\"table\", { className: classNames.table, style: styles.table, role: \"grid\", \"aria-labelledby\": props['aria-labelledby'] },\n !hideHead && React__default.createElement(HeadComponent, null),\n React__default.createElement(\"tbody\", { className: classNames.tbody, style: styles.tbody }, weeks.map(function (week) { return (React__default.createElement(RowComponent, { displayMonth: props.displayMonth, key: week.weekNumber, dates: week.dates, weekNumber: week.weekNumber })); })),\n React__default.createElement(FooterComponent, null)));\n}\n\n/*\nThe MIT License (MIT)\n\nCopyright (c) 2018-present, React Training LLC\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\nfunction canUseDOM() {\n return !!(typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement);\n}\n/**\n * React currently throws a warning when using useLayoutEffect on the server. To\n * get around it, we can conditionally useEffect on the server (no-op) and\n * useLayoutEffect in the browser. We occasionally need useLayoutEffect to\n * ensure we don't get a render flash for certain operations, but we may also\n * need affected components to render on the server. One example is when setting\n * a component's descendants to retrieve their index values.\n *\n * Important to note that using this hook as an escape hatch will break the\n * eslint dependency warnings unless you rename the import to `useLayoutEffect`.\n * Use sparingly only when the effect won't effect the rendered HTML to avoid\n * any server/client mismatch.\n *\n * If a useLayoutEffect is needed and the result would create a mismatch, it's\n * likely that the component in question shouldn't be rendered on the server at\n * all, so a better approach would be to lazily render those in a parent\n * component after client-side hydration.\n *\n * https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\n * https://github.com/reduxjs/react-redux/blob/master/src/utils/useIsomorphicLayoutEffect.js\n *\n * @param effect\n * @param deps\n */\nvar useIsomorphicLayoutEffect = canUseDOM()\n ? React.useLayoutEffect\n : React.useEffect;\nvar serverHandoffComplete = false;\nvar id = 0;\nfunction genId() {\n return \"react-day-picker-\".concat(++id);\n}\nfunction useId(providedId) {\n // TODO: Remove error flag when updating internal deps to React 18. None of\n // our tricks will play well with concurrent rendering anyway.\n var _a;\n // If this instance isn't part of the initial render, we don't have to do the\n // double render/patch-up dance. We can just generate the ID and return it.\n var initialId = providedId !== null && providedId !== void 0 ? providedId : (serverHandoffComplete ? genId() : null);\n var _b = React.useState(initialId), id = _b[0], setId = _b[1];\n useIsomorphicLayoutEffect(function () {\n if (id === null) {\n // Patch the ID after render. We do this in `useLayoutEffect` to avoid any\n // rendering flicker, though it'll make the first render slower (unlikely\n // to matter, but you're welcome to measure your app and let us know if\n // it's a problem).\n setId(genId());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n React.useEffect(function () {\n if (serverHandoffComplete === false) {\n // Flag all future uses of `useId` to skip the update dance. This is in\n // `useEffect` because it goes after `useLayoutEffect`, ensuring we don't\n // accidentally bail out of the patch-up dance prematurely.\n serverHandoffComplete = true;\n }\n }, []);\n return (_a = providedId !== null && providedId !== void 0 ? providedId : id) !== null && _a !== void 0 ? _a : undefined;\n}\n\n/** Render a month. */\nfunction Month(props) {\n var _a;\n var _b;\n var dayPicker = useDayPicker();\n var dir = dayPicker.dir, classNames = dayPicker.classNames, styles = dayPicker.styles, components = dayPicker.components;\n var displayMonths = useNavigation().displayMonths;\n var captionId = useId(dayPicker.id ? \"\".concat(dayPicker.id, \"-\").concat(props.displayIndex) : undefined);\n var className = [classNames.month];\n var style = styles.month;\n var isStart = props.displayIndex === 0;\n var isEnd = props.displayIndex === displayMonths.length - 1;\n var isCenter = !isStart && !isEnd;\n if (dir === 'rtl') {\n _a = [isStart, isEnd], isEnd = _a[0], isStart = _a[1];\n }\n if (isStart) {\n className.push(classNames.caption_start);\n style = __assign(__assign({}, style), styles.caption_start);\n }\n if (isEnd) {\n className.push(classNames.caption_end);\n style = __assign(__assign({}, style), styles.caption_end);\n }\n if (isCenter) {\n className.push(classNames.caption_between);\n style = __assign(__assign({}, style), styles.caption_between);\n }\n var CaptionComponent = (_b = components === null || components === void 0 ? void 0 : components.Caption) !== null && _b !== void 0 ? _b : Caption;\n return (React__default.createElement(\"div\", { key: props.displayIndex, className: className.join(' '), style: style },\n React__default.createElement(CaptionComponent, { id: captionId, displayMonth: props.displayMonth }),\n React__default.createElement(Table, { \"aria-labelledby\": captionId, displayMonth: props.displayMonth })));\n}\n\n/** Render the container with the months according to the number of months to display. */\nfunction Root() {\n var dayPicker = useDayPicker();\n var focusContext = useFocusContext();\n var navigation = useNavigation();\n var _a = useState(false), hasInitialFocus = _a[0], setHasInitialFocus = _a[1];\n // Focus the focus target when initialFocus is passed in\n useEffect(function () {\n if (!dayPicker.initialFocus)\n return;\n if (!focusContext.focusTarget)\n return;\n if (hasInitialFocus)\n return;\n focusContext.focus(focusContext.focusTarget);\n setHasInitialFocus(true);\n }, [\n dayPicker.initialFocus,\n hasInitialFocus,\n focusContext.focus,\n focusContext.focusTarget,\n focusContext\n ]);\n // Apply classnames according to props\n var classNames = [dayPicker.classNames.root, dayPicker.className];\n if (dayPicker.numberOfMonths > 1) {\n classNames.push(dayPicker.classNames.multiple_months);\n }\n if (dayPicker.showWeekNumber) {\n classNames.push(dayPicker.classNames.with_weeknumber);\n }\n var style = __assign(__assign({}, dayPicker.styles.root), dayPicker.style);\n return (React__default.createElement(\"div\", { className: classNames.join(' '), style: style, dir: dayPicker.dir },\n React__default.createElement(\"div\", { className: dayPicker.classNames.months, style: dayPicker.styles.months }, navigation.displayMonths.map(function (month, i) { return (React__default.createElement(Month, { key: i, displayIndex: i, displayMonth: month })); }))));\n}\n\n/** Provide the value for all the context providers. */\nfunction RootProvider(props) {\n var children = props.children, initialProps = __rest(props, [\"children\"]);\n return (React__default.createElement(DayPickerProvider, { initialProps: initialProps },\n React__default.createElement(NavigationProvider, null,\n React__default.createElement(SelectSingleProvider, { initialProps: initialProps },\n React__default.createElement(SelectMultipleProvider, { initialProps: initialProps },\n React__default.createElement(SelectRangeProvider, { initialProps: initialProps },\n React__default.createElement(ModifiersProvider, null,\n React__default.createElement(FocusProvider, null, children))))))));\n}\n\n/**\n * DayPicker render a date picker component to let users pick dates from a\n * calendar. See http://react-day-picker.js.org for updated documentation and\n * examples.\n *\n * ### Customization\n *\n * DayPicker offers different customization props. For example,\n *\n * - show multiple months using `numberOfMonths`\n * - display a dropdown to navigate the months via `captionLayout`\n * - display the week numbers with `showWeekNumbers`\n * - disable or hide days with `disabled` or `hidden`\n *\n * ### Controlling the months\n *\n * Change the initially displayed month using the `defaultMonth` prop. The\n * displayed months are controlled by DayPicker and stored in its internal\n * state. To control the months yourself, use `month` instead of `defaultMonth`\n * and use the `onMonthChange` event to set it.\n *\n * To limit the months the user can navigate to, use\n * `fromDate`/`fromMonth`/`fromYear` or `toDate`/`toMonth`/`toYear`.\n *\n * ### Selection modes\n *\n * DayPicker supports different selection mode that can be toggled using the\n * `mode` prop:\n *\n * - `mode=\"single\"`: only one day can be selected. Use `required` to make the\n * selection required. Use the `onSelect` event handler to get the selected\n * days.\n * - `mode=\"multiple\"`: users can select one or more days. Limit the amount of\n * days that can be selected with the `min` or the `max` props.\n * - `mode=\"range\"`: users can select a range of days. Limit the amount of days\n * in the range with the `min` or the `max` props.\n * - `mode=\"default\"` (default): the built-in selections are disabled. Implement\n * your own selection mode with `onDayClick`.\n *\n * The selection modes should cover the most common use cases. In case you\n * need a more refined way of selecting days, use `mode=\"default\"`. Use the\n * `selected` props and add the day event handlers to add/remove days from the\n * selection.\n *\n * ### Modifiers\n *\n * A _modifier_ represents different styles or states for the days displayed in\n * the calendar (like \"selected\" or \"disabled\"). Define custom modifiers using\n * the `modifiers` prop.\n *\n * ### Formatters and custom component\n *\n * You can customize how the content is displayed in the date picker by using\n * either the formatters or replacing the internal components.\n *\n * For the most common cases you want to use the `formatters` prop to change how\n * the content is formatted in the calendar. Use the `components` prop to\n * replace the internal components, like the navigation icons.\n *\n * ### Styling\n *\n * DayPicker comes with a default, basic style in `react-day-picker/style` – use\n * it as template for your own style.\n *\n * If you are using CSS modules, pass the imported styles object the\n * `classNames` props.\n *\n * You can also style the elements via inline-styles using the `styles` prop.\n *\n * ### Form fields\n *\n * If you need to bind the date picker to a form field, you can use the\n * `useInput` hooks for a basic behavior. See the `useInput` source as an\n * example to bind the date picker with form fields.\n *\n * ### Localization\n *\n * To localize DayPicker, import the locale from `date-fns` package and use the\n * `locale` prop.\n *\n * For example, to use Spanish locale:\n *\n * ```\n * import es from 'date-fns/locale/es';\n * <DayPicker locale={es} />\n * ```\n */\nfunction DayPicker(props) {\n return (React__default.createElement(RootProvider, __assign({}, props),\n React__default.createElement(Root, null)));\n}\n\n/** @private */\nfunction isValidDate(day) {\n return !isNaN(day.getTime());\n}\n\n/** Return props and setters for binding an input field to DayPicker. */\nfunction useInput(options) {\n if (options === void 0) { options = {}; }\n var _a = options.locale, locale = _a === void 0 ? enUS : _a, required = options.required, _b = options.format, format$1 = _b === void 0 ? 'PP' : _b, defaultSelected = options.defaultSelected, _c = options.today, today = _c === void 0 ? new Date() : _c;\n var _d = parseFromToProps(options), fromDate = _d.fromDate, toDate = _d.toDate;\n // Shortcut to the DateFns functions\n var parseValue = function (value) { return parse(value, format$1, today, { locale: locale }); };\n // Initialize states\n var _e = useState(defaultSelected !== null && defaultSelected !== void 0 ? defaultSelected : today), month = _e[0], setMonth = _e[1];\n var _f = useState(defaultSelected), selectedDay = _f[0], setSelectedDay = _f[1];\n var defaultInputValue = defaultSelected\n ? format(defaultSelected, format$1, { locale: locale })\n : '';\n var _g = useState(defaultInputValue), inputValue = _g[0], setInputValue = _g[1];\n var reset = function () {\n setSelectedDay(defaultSelected);\n setMonth(defaultSelected !== null && defaultSelected !== void 0 ? defaultSelected : today);\n setInputValue(defaultInputValue !== null && defaultInputValue !== void 0 ? defaultInputValue : '');\n };\n var setSelected = function (date) {\n setSelectedDay(date);\n setMonth(date !== null && date !== void 0 ? date : today);\n setInputValue(date ? format(date, format$1, { locale: locale }) : '');\n };\n var handleDayClick = function (day, _a) {\n var selected = _a.selected;\n if (!required && selected) {\n setSelectedDay(undefined);\n setInputValue('');\n return;\n }\n setSelectedDay(day);\n setInputValue(day ? format(day, format$1, { locale: locale }) : '');\n };\n var handleMonthChange = function (month) {\n setMonth(month);\n };\n // When changing the input field, save its value in state and check if the\n // string is a valid date. If it is a valid day, set it as selected and update\n // the calendar’s month.\n var handleChange = function (e) {\n setInputValue(e.target.value);\n var day = parseValue(e.target.value);\n var isBefore = fromDate && differenceInCalendarDays(fromDate, day) > 0;\n var isAfter = toDate && differenceInCalendarDays(day, toDate) > 0;\n if (!isValidDate(day) || isBefore || isAfter) {\n setSelectedDay(undefined);\n return;\n }\n setSelectedDay(day);\n setMonth(day);\n };\n // Special case for _required_ fields: on blur, if the value of the input is not\n // a valid date, reset the calendar and the input value.\n var handleBlur = function (e) {\n var day = parseValue(e.target.value);\n if (!isValidDate(day)) {\n reset();\n }\n };\n // When focusing, make sure DayPicker visualizes the month of the date in the\n // input field.\n var handleFocus = function (e) {\n if (!e.target.value) {\n reset();\n return;\n }\n var day = parseValue(e.target.value);\n if (isValidDate(day)) {\n setMonth(day);\n }\n };\n var dayPickerProps = {\n month: month,\n onDayClick: handleDayClick,\n onMonthChange: handleMonthChange,\n selected: selectedDay,\n locale: locale,\n fromDate: fromDate,\n toDate: toDate,\n today: today\n };\n var inputProps = {\n onBlur: handleBlur,\n onChange: handleChange,\n onFocus: handleFocus,\n value: inputValue,\n placeholder: format(new Date(), format$1, { locale: locale })\n };\n return { dayPickerProps: dayPickerProps, inputProps: inputProps, reset: reset, setSelected: setSelected };\n}\n\n/** Returns true when the props are of type {@link DayPickerDefaultProps}. */\nfunction isDayPickerDefault(props) {\n return props.mode === undefined || props.mode === 'default';\n}\n\nexport { Button, Caption, CaptionDropdowns, CaptionLabel, CaptionNavigation, Day, DayContent, DayPicker, DayPickerContext, DayPickerProvider, Dropdown, FocusContext, FocusProvider, Footer, Head, HeadRow, IconDropdown, IconLeft, IconRight, InternalModifier, NavigationContext, NavigationProvider, RootProvider, Row, SelectMultipleContext, SelectMultipleProvider, SelectMultipleProviderInternal, SelectRangeContext, SelectRangeProvider, SelectRangeProviderInternal, SelectSingleContext, SelectSingleProvider, SelectSingleProviderInternal, WeekNumber, addToRange, isDateAfterType, isDateBeforeType, isDateInterval, isDateRange, isDayOfWeekType, isDayPickerDefault, isDayPickerMultiple, isDayPickerRange, isDayPickerSingle, isMatch, useActiveModifiers, useDayPicker, useDayRender, useFocusContext, useInput, useNavigation, useSelectMultiple, useSelectRange, useSelectSingle };\n//# sourceMappingURL=index.esm.js.map\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar sizerStyle = {\n\tposition: 'absolute',\n\ttop: 0,\n\tleft: 0,\n\tvisibility: 'hidden',\n\theight: 0,\n\toverflow: 'scroll',\n\twhiteSpace: 'pre'\n};\n\nvar INPUT_PROPS_BLACKLIST = ['extraWidth', 'injectStyles', 'inputClassName', 'inputRef', 'inputStyle', 'minWidth', 'onAutosize', 'placeholderIsMinWidth'];\n\nvar cleanInputProps = function cleanInputProps(inputProps) {\n\tINPUT_PROPS_BLACKLIST.forEach(function (field) {\n\t\treturn delete inputProps[field];\n\t});\n\treturn inputProps;\n};\n\nvar copyStyles = function copyStyles(styles, node) {\n\tnode.style.fontSize = styles.fontSize;\n\tnode.style.fontFamily = styles.fontFamily;\n\tnode.style.fontWeight = styles.fontWeight;\n\tnode.style.fontStyle = styles.fontStyle;\n\tnode.style.letterSpacing = styles.letterSpacing;\n\tnode.style.textTransform = styles.textTransform;\n};\n\nvar isIE = typeof window !== 'undefined' && window.navigator ? /MSIE |Trident\\/|Edge\\//.test(window.navigator.userAgent) : false;\n\nvar generateId = function generateId() {\n\t// we only need an auto-generated ID for stylesheet injection, which is only\n\t// used for IE. so if the browser is not IE, this should return undefined.\n\treturn isIE ? '_' + Math.random().toString(36).substr(2, 12) : undefined;\n};\n\nvar AutosizeInput = function (_Component) {\n\t_inherits(AutosizeInput, _Component);\n\n\tfunction AutosizeInput(props) {\n\t\t_classCallCheck(this, AutosizeInput);\n\n\t\tvar _this = _possibleConstructorReturn(this, (AutosizeInput.__proto__ || Object.getPrototypeOf(AutosizeInput)).call(this, props));\n\n\t\t_this.inputRef = function (el) {\n\t\t\t_this.input = el;\n\t\t\tif (typeof _this.props.inputRef === 'function') {\n\t\t\t\t_this.props.inputRef(el);\n\t\t\t}\n\t\t};\n\n\t\t_this.placeHolderSizerRef = function (el) {\n\t\t\t_this.placeHolderSizer = el;\n\t\t};\n\n\t\t_this.sizerRef = function (el) {\n\t\t\t_this.sizer = el;\n\t\t};\n\n\t\t_this.state = {\n\t\t\tinputWidth: props.minWidth,\n\t\t\tinputId: props.id || generateId()\n\t\t};\n\t\treturn _this;\n\t}\n\n\t_createClass(AutosizeInput, [{\n\t\tkey: 'componentDidMount',\n\t\tvalue: function componentDidMount() {\n\t\t\tthis.mounted = true;\n\t\t\tthis.copyInputStyles();\n\t\t\tthis.updateInputWidth();\n\t\t}\n\t}, {\n\t\tkey: 'UNSAFE_componentWillReceiveProps',\n\t\tvalue: function UNSAFE_componentWillReceiveProps(nextProps) {\n\t\t\tvar id = nextProps.id;\n\n\t\t\tif (id !== this.props.id) {\n\t\t\t\tthis.setState({ inputId: id || generateId() });\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'componentDidUpdate',\n\t\tvalue: function componentDidUpdate(prevProps, prevState) {\n\t\t\tif (prevState.inputWidth !== this.state.inputWidth) {\n\t\t\t\tif (typeof this.props.onAutosize === 'function') {\n\t\t\t\t\tthis.props.onAutosize(this.state.inputWidth);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.updateInputWidth();\n\t\t}\n\t}, {\n\t\tkey: 'componentWillUnmount',\n\t\tvalue: function componentWillUnmount() {\n\t\t\tthis.mounted = false;\n\t\t}\n\t}, {\n\t\tkey: 'copyInputStyles',\n\t\tvalue: function copyInputStyles() {\n\t\t\tif (!this.mounted || !window.getComputedStyle) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar inputStyles = this.input && window.getComputedStyle(this.input);\n\t\t\tif (!inputStyles) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcopyStyles(inputStyles, this.sizer);\n\t\t\tif (this.placeHolderSizer) {\n\t\t\t\tcopyStyles(inputStyles, this.placeHolderSizer);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'updateInputWidth',\n\t\tvalue: function updateInputWidth() {\n\t\t\tif (!this.mounted || !this.sizer || typeof this.sizer.scrollWidth === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar newInputWidth = void 0;\n\t\t\tif (this.props.placeholder && (!this.props.value || this.props.value && this.props.placeholderIsMinWidth)) {\n\t\t\t\tnewInputWidth = Math.max(this.sizer.scrollWidth, this.placeHolderSizer.scrollWidth) + 2;\n\t\t\t} else {\n\t\t\t\tnewInputWidth = this.sizer.scrollWidth + 2;\n\t\t\t}\n\t\t\t// add extraWidth to the detected width. for number types, this defaults to 16 to allow for the stepper UI\n\t\t\tvar extraWidth = this.props.type === 'number' && this.props.extraWidth === undefined ? 16 : parseInt(this.props.extraWidth) || 0;\n\t\t\tnewInputWidth += extraWidth;\n\t\t\tif (newInputWidth < this.props.minWidth) {\n\t\t\t\tnewInputWidth = this.props.minWidth;\n\t\t\t}\n\t\t\tif (newInputWidth !== this.state.inputWidth) {\n\t\t\t\tthis.setState({\n\t\t\t\t\tinputWidth: newInputWidth\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'getInput',\n\t\tvalue: function getInput() {\n\t\t\treturn this.input;\n\t\t}\n\t}, {\n\t\tkey: 'focus',\n\t\tvalue: function focus() {\n\t\t\tthis.input.focus();\n\t\t}\n\t}, {\n\t\tkey: 'blur',\n\t\tvalue: function blur() {\n\t\t\tthis.input.blur();\n\t\t}\n\t}, {\n\t\tkey: 'select',\n\t\tvalue: function select() {\n\t\t\tthis.input.select();\n\t\t}\n\t}, {\n\t\tkey: 'renderStyles',\n\t\tvalue: function renderStyles() {\n\t\t\t// this method injects styles to hide IE's clear indicator, which messes\n\t\t\t// with input size detection. the stylesheet is only injected when the\n\t\t\t// browser is IE, and can also be disabled by the `injectStyles` prop.\n\t\t\tvar injectStyles = this.props.injectStyles;\n\n\t\t\treturn isIE && injectStyles ? _react2.default.createElement('style', { dangerouslySetInnerHTML: {\n\t\t\t\t\t__html: 'input#' + this.state.inputId + '::-ms-clear {display: none;}'\n\t\t\t\t} }) : null;\n\t\t}\n\t}, {\n\t\tkey: 'render',\n\t\tvalue: function render() {\n\t\t\tvar sizerValue = [this.props.defaultValue, this.props.value, ''].reduce(function (previousValue, currentValue) {\n\t\t\t\tif (previousValue !== null && previousValue !== undefined) {\n\t\t\t\t\treturn previousValue;\n\t\t\t\t}\n\t\t\t\treturn currentValue;\n\t\t\t});\n\n\t\t\tvar wrapperStyle = _extends({}, this.props.style);\n\t\t\tif (!wrapperStyle.display) wrapperStyle.display = 'inline-block';\n\n\t\t\tvar inputStyle = _extends({\n\t\t\t\tboxSizing: 'content-box',\n\t\t\t\twidth: this.state.inputWidth + 'px'\n\t\t\t}, this.props.inputStyle);\n\n\t\t\tvar inputProps = _objectWithoutProperties(this.props, []);\n\n\t\t\tcleanInputProps(inputProps);\n\t\t\tinputProps.className = this.props.inputClassName;\n\t\t\tinputProps.id = this.state.inputId;\n\t\t\tinputProps.style = inputStyle;\n\n\t\t\treturn _react2.default.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ className: this.props.className, style: wrapperStyle },\n\t\t\t\tthis.renderStyles(),\n\t\t\t\t_react2.default.createElement('input', _extends({}, inputProps, { ref: this.inputRef })),\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ ref: this.sizerRef, style: sizerStyle },\n\t\t\t\t\tsizerValue\n\t\t\t\t),\n\t\t\t\tthis.props.placeholder ? _react2.default.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ ref: this.placeHolderSizerRef, style: sizerStyle },\n\t\t\t\t\tthis.props.placeholder\n\t\t\t\t) : null\n\t\t\t);\n\t\t}\n\t}]);\n\n\treturn AutosizeInput;\n}(_react.Component);\n\nAutosizeInput.propTypes = {\n\tclassName: _propTypes2.default.string, // className for the outer element\n\tdefaultValue: _propTypes2.default.any, // default field value\n\textraWidth: _propTypes2.default.oneOfType([// additional width for input element\n\t_propTypes2.default.number, _propTypes2.default.string]),\n\tid: _propTypes2.default.string, // id to use for the input, can be set for consistent snapshots\n\tinjectStyles: _propTypes2.default.bool, // inject the custom stylesheet to hide clear UI, defaults to true\n\tinputClassName: _propTypes2.default.string, // className for the input element\n\tinputRef: _propTypes2.default.func, // ref callback for the input element\n\tinputStyle: _propTypes2.default.object, // css styles for the input element\n\tminWidth: _propTypes2.default.oneOfType([// minimum width for input element\n\t_propTypes2.default.number, _propTypes2.default.string]),\n\tonAutosize: _propTypes2.default.func, // onAutosize handler: function(newWidth) {}\n\tonChange: _propTypes2.default.func, // onChange handler: function(event) {}\n\tplaceholder: _propTypes2.default.string, // placeholder text\n\tplaceholderIsMinWidth: _propTypes2.default.bool, // don't collapse size to less than the placeholder\n\tstyle: _propTypes2.default.object, // css styles for the outer element\n\tvalue: _propTypes2.default.any // field value\n};\nAutosizeInput.defaultProps = {\n\tminWidth: 1,\n\tinjectStyles: true\n};\n\nexports.default = AutosizeInput;","function replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp(\"(^|\\\\s)\" + classToRemove + \"(?:\\\\s|$)\", 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n/**\n * Removes a CSS class from a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\n\nexport default function removeClass(element, className) {\n if (element.classList) {\n element.classList.remove(className);\n } else if (typeof element.className === 'string') {\n element.className = replaceClassName(element.className, className);\n } else {\n element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n }\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport addOneClass from 'dom-helpers/addClass';\nimport removeOneClass from 'dom-helpers/removeClass';\nimport React from 'react';\nimport Transition from './Transition';\nimport { classNamesShape } from './utils/PropTypes';\nimport { forceReflow } from './utils/reflow';\n\nvar _addClass = function addClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return addOneClass(node, c);\n });\n};\n\nvar removeClass = function removeClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return removeOneClass(node, c);\n });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](https://docs.angularjs.org/api/ngAnimate) library, you should\n * use it if you're using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <CSSTransition in={inProp} timeout={200} classNames=\"my-node\">\n * <div>\n * {\"I'll receive my-node-* classes\"}\n * </div>\n * </CSSTransition>\n * <button type=\"button\" onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n * opacity: 0;\n * }\n * .my-node-enter-active {\n * opacity: 1;\n * transition: opacity 200ms;\n * }\n * .my-node-exit {\n * opacity: 1;\n * }\n * .my-node-exit-active {\n * opacity: 0;\n * transition: opacity 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**, so it's\n * important to add `transition` declaration only to them, otherwise transitions\n * might not behave as intended! This might not be obvious when the transitions\n * are symmetrical, i.e. when `*-enter-active` is the same as `*-exit`, like in\n * the example above (minus `transition`), but it becomes apparent in more\n * complex transitions.\n *\n * **Note**: If you're using the\n * [`appear`](http://reactcommunity.org/react-transition-group/transition#Transition-prop-appear)\n * prop, make sure to define styles for `.appear-*` classes as well.\n */\n\n\nvar CSSTransition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(CSSTransition, _React$Component);\n\n function CSSTransition() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.appliedClasses = {\n appear: {},\n enter: {},\n exit: {}\n };\n\n _this.onEnter = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument[0],\n appearing = _this$resolveArgument[1];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, appearing ? 'appear' : 'enter', 'base');\n\n if (_this.props.onEnter) {\n _this.props.onEnter(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntering = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument2 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument2[0],\n appearing = _this$resolveArgument2[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.addClass(node, type, 'active');\n\n if (_this.props.onEntering) {\n _this.props.onEntering(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntered = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument3 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument3[0],\n appearing = _this$resolveArgument3[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.removeClasses(node, type);\n\n _this.addClass(node, type, 'done');\n\n if (_this.props.onEntered) {\n _this.props.onEntered(maybeNode, maybeAppearing);\n }\n };\n\n _this.onExit = function (maybeNode) {\n var _this$resolveArgument4 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument4[0];\n\n _this.removeClasses(node, 'appear');\n\n _this.removeClasses(node, 'enter');\n\n _this.addClass(node, 'exit', 'base');\n\n if (_this.props.onExit) {\n _this.props.onExit(maybeNode);\n }\n };\n\n _this.onExiting = function (maybeNode) {\n var _this$resolveArgument5 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument5[0];\n\n _this.addClass(node, 'exit', 'active');\n\n if (_this.props.onExiting) {\n _this.props.onExiting(maybeNode);\n }\n };\n\n _this.onExited = function (maybeNode) {\n var _this$resolveArgument6 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument6[0];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, 'exit', 'done');\n\n if (_this.props.onExited) {\n _this.props.onExited(maybeNode);\n }\n };\n\n _this.resolveArguments = function (maybeNode, maybeAppearing) {\n return _this.props.nodeRef ? [_this.props.nodeRef.current, maybeNode] // here `maybeNode` is actually `appearing`\n : [maybeNode, maybeAppearing];\n };\n\n _this.getClassNames = function (type) {\n var classNames = _this.props.classNames;\n var isStringClassNames = typeof classNames === 'string';\n var prefix = isStringClassNames && classNames ? classNames + \"-\" : '';\n var baseClassName = isStringClassNames ? \"\" + prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? baseClassName + \"-active\" : classNames[type + \"Active\"];\n var doneClassName = isStringClassNames ? baseClassName + \"-done\" : classNames[type + \"Done\"];\n return {\n baseClassName: baseClassName,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n\n return _this;\n }\n\n var _proto = CSSTransition.prototype;\n\n _proto.addClass = function addClass(node, type, phase) {\n var className = this.getClassNames(type)[phase + \"ClassName\"];\n\n var _this$getClassNames = this.getClassNames('enter'),\n doneClassName = _this$getClassNames.doneClassName;\n\n if (type === 'appear' && phase === 'done' && doneClassName) {\n className += \" \" + doneClassName;\n } // This is to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n\n\n if (phase === 'active') {\n if (node) forceReflow(node);\n }\n\n if (className) {\n this.appliedClasses[type][phase] = className;\n\n _addClass(node, className);\n }\n };\n\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$appliedClasses$ = this.appliedClasses[type],\n baseClassName = _this$appliedClasses$.base,\n activeClassName = _this$appliedClasses$.active,\n doneClassName = _this$appliedClasses$.done;\n this.appliedClasses[type] = {};\n\n if (baseClassName) {\n removeClass(node, baseClassName);\n }\n\n if (activeClassName) {\n removeClass(node, activeClassName);\n }\n\n if (doneClassName) {\n removeClass(node, doneClassName);\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n _ = _this$props.classNames,\n props = _objectWithoutPropertiesLoose(_this$props, [\"classNames\"]);\n\n return /*#__PURE__*/React.createElement(Transition, _extends({}, props, {\n onEnter: this.onEnter,\n onEntered: this.onEntered,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }));\n };\n\n return CSSTransition;\n}(React.Component);\n\nCSSTransition.defaultProps = {\n classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, Transition.propTypes, {\n /**\n * The animation classNames applied to the component as it appears, enters,\n * exits or has finished the transition. A single name can be provided, which\n * will be suffixed for each stage, e.g. `classNames=\"fade\"` applies:\n *\n * - `fade-appear`, `fade-appear-active`, `fade-appear-done`\n * - `fade-enter`, `fade-enter-active`, `fade-enter-done`\n * - `fade-exit`, `fade-exit-active`, `fade-exit-done`\n *\n * A few details to note about how these classes are applied:\n *\n * 1. They are _joined_ with the ones that are already defined on the child\n * component, so if you want to add some base styles, you can use\n * `className` without worrying that it will be overridden.\n *\n * 2. If the transition component mounts with `in={false}`, no classes are\n * applied yet. You might be expecting `*-exit-done`, but if you think\n * about it, a component cannot finish exiting if it hasn't entered yet.\n *\n * 2. `fade-appear-done` and `fade-enter-done` will _both_ be applied. This\n * allows you to define different behavior for when appearing is done and\n * when regular entering is done, using selectors like\n * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply\n * an epic entrance animation when element first appears in the DOM using\n * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n * simply use `fade-enter-done` for defining both cases.\n *\n * Each individual classNames can also be specified independently like:\n *\n * ```js\n * classNames={{\n * appear: 'my-appear',\n * appearActive: 'my-active-appear',\n * appearDone: 'my-done-appear',\n * enter: 'my-enter',\n * enterActive: 'my-active-enter',\n * enterDone: 'my-done-enter',\n * exit: 'my-exit',\n * exitActive: 'my-active-exit',\n * exitDone: 'my-done-exit',\n * }}\n * ```\n *\n * If you want to set these classes using CSS Modules:\n *\n * ```js\n * import styles from './styles.css';\n * ```\n *\n * you might want to use camelCase in your CSS file, that way could simply\n * spread them instead of listing them one by one:\n *\n * ```js\n * classNames={{ ...styles }}\n * ```\n *\n * @type {string | {\n * appear?: string,\n * appearActive?: string,\n * appearDone?: string,\n * enter?: string,\n * enterActive?: string,\n * enterDone?: string,\n * exit?: string,\n * exitActive?: string,\n * exitDone?: string,\n * }}\n */\n classNames: classNamesShape,\n\n /**\n * A `<Transition>` callback fired immediately after the 'enter' or 'appear' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEnter: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'enter-active' or\n * 'appear-active' class is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'enter' or\n * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntered: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'exit' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExit: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'exit-active' is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExiting: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'exit' classes\n * are **removed** and the `exit-done` class is added to the DOM node.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExited: PropTypes.func\n}) : {};\nexport default CSSTransition;","import hasClass from './hasClass';\n/**\n * Adds a CSS class to a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\nexport default function addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!hasClass(element, className)) if (typeof element.className === 'string') element.className = element.className + \" \" + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + \" \" + className);\n}","/**\n * Checks if a given element has a CSS class.\n * \n * @param element the element\n * @param className the CSS class name\n */\nexport default function hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);\n return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * <Transition in={inProp} timeout={duration}>\n * {state => (\n * <div style={{\n * ...defaultStyle,\n * ...transitionStyles[state]\n * }}>\n * I'm a fade Transition!\n * </div>\n * )}\n * </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <Transition in={inProp} timeout={500}>\n * {state => (\n * // ...\n * )}\n * </Transition>\n * <button onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n if (this.props.unmountOnExit || this.props.mountOnEnter) {\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n // To make the animation happen, we have to separate each rendering and avoid being processed as batched.\n\n if (node) forceReflow(node);\n }\n\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * <Transition in={this.state.in} timeout={150}>\n * {state => (\n * <MyComponent className={`fade fade-${state}`} />\n * )}\n * </Transition>\n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `<CSSTransition>` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","import React from 'react';\nexport default React.createContext(null);","export var forceReflow = function forceReflow(node) {\n return node.scrollTop;\n};","import { createElement, PureComponent } from 'react';\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = 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 Object.defineProperty(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\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar slicedToArray = 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 = arr[Symbol.iterator](), _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 (Symbol.iterator in 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 * Detect Element Resize.\n * https://github.com/sdecima/javascript-detect-element-resize\n * Sebastian Decima\n *\n * Forked from version 0.5.3; includes the following modifications:\n * 1) Guard against unsafe 'window' and 'document' references (to support SSR).\n * 2) Defer initialization code via a top-level function wrapper (to support SSR).\n * 3) Avoid unnecessary reflows by not measuring size for scroll events bubbling from children.\n * 4) Add nonce for style element.\n **/\n\n// Check `document` and `window` in case of server-side rendering\nvar windowObject = void 0;\nif (typeof window !== 'undefined') {\n windowObject = window;\n\n // eslint-disable-next-line no-restricted-globals\n} else if (typeof self !== 'undefined') {\n // eslint-disable-next-line no-restricted-globals\n windowObject = self;\n} else {\n windowObject = global;\n}\n\nvar cancelFrame = null;\nvar requestFrame = null;\n\nvar TIMEOUT_DURATION = 20;\n\nvar clearTimeoutFn = windowObject.clearTimeout;\nvar setTimeoutFn = windowObject.setTimeout;\n\nvar cancelAnimationFrameFn = windowObject.cancelAnimationFrame || windowObject.mozCancelAnimationFrame || windowObject.webkitCancelAnimationFrame;\n\nvar requestAnimationFrameFn = windowObject.requestAnimationFrame || windowObject.mozRequestAnimationFrame || windowObject.webkitRequestAnimationFrame;\n\nif (cancelAnimationFrameFn == null || requestAnimationFrameFn == null) {\n // For environments that don't support animation frame,\n // fallback to a setTimeout based approach.\n cancelFrame = clearTimeoutFn;\n requestFrame = function requestAnimationFrameViaSetTimeout(callback) {\n return setTimeoutFn(callback, TIMEOUT_DURATION);\n };\n} else {\n // Counter intuitively, environments that support animation frames can be trickier.\n // Chrome's \"Throttle non-visible cross-origin iframes\" flag can prevent rAFs from being called.\n // In this case, we should fallback to a setTimeout() implementation.\n cancelFrame = function cancelFrame(_ref) {\n var _ref2 = slicedToArray(_ref, 2),\n animationFrameID = _ref2[0],\n timeoutID = _ref2[1];\n\n cancelAnimationFrameFn(animationFrameID);\n clearTimeoutFn(timeoutID);\n };\n requestFrame = function requestAnimationFrameWithSetTimeoutFallback(callback) {\n var animationFrameID = requestAnimationFrameFn(function animationFrameCallback() {\n clearTimeoutFn(timeoutID);\n callback();\n });\n\n var timeoutID = setTimeoutFn(function timeoutCallback() {\n cancelAnimationFrameFn(animationFrameID);\n callback();\n }, TIMEOUT_DURATION);\n\n return [animationFrameID, timeoutID];\n };\n}\n\nfunction createDetectElementResize(nonce) {\n var animationKeyframes = void 0;\n var animationName = void 0;\n var animationStartEvent = void 0;\n var animationStyle = void 0;\n var checkTriggers = void 0;\n var resetTriggers = void 0;\n var scrollListener = void 0;\n\n var attachEvent = typeof document !== 'undefined' && document.attachEvent;\n if (!attachEvent) {\n resetTriggers = function resetTriggers(element) {\n var triggers = element.__resizeTriggers__,\n expand = triggers.firstElementChild,\n contract = triggers.lastElementChild,\n expandChild = expand.firstElementChild;\n contract.scrollLeft = contract.scrollWidth;\n contract.scrollTop = contract.scrollHeight;\n expandChild.style.width = expand.offsetWidth + 1 + 'px';\n expandChild.style.height = expand.offsetHeight + 1 + 'px';\n expand.scrollLeft = expand.scrollWidth;\n expand.scrollTop = expand.scrollHeight;\n };\n\n checkTriggers = function checkTriggers(element) {\n return element.offsetWidth !== element.__resizeLast__.width || element.offsetHeight !== element.__resizeLast__.height;\n };\n\n scrollListener = function scrollListener(e) {\n // Don't measure (which forces) reflow for scrolls that happen inside of children!\n if (e.target.className && typeof e.target.className.indexOf === 'function' && e.target.className.indexOf('contract-trigger') < 0 && e.target.className.indexOf('expand-trigger') < 0) {\n return;\n }\n\n var element = this;\n resetTriggers(this);\n if (this.__resizeRAF__) {\n cancelFrame(this.__resizeRAF__);\n }\n this.__resizeRAF__ = requestFrame(function animationFrame() {\n if (checkTriggers(element)) {\n element.__resizeLast__.width = element.offsetWidth;\n element.__resizeLast__.height = element.offsetHeight;\n element.__resizeListeners__.forEach(function forEachResizeListener(fn) {\n fn.call(element, e);\n });\n }\n });\n };\n\n /* Detect CSS Animations support to detect element display/re-attach */\n var animation = false;\n var keyframeprefix = '';\n animationStartEvent = 'animationstart';\n var domPrefixes = 'Webkit Moz O ms'.split(' ');\n var startEvents = 'webkitAnimationStart animationstart oAnimationStart MSAnimationStart'.split(' ');\n var pfx = '';\n {\n var elm = document.createElement('fakeelement');\n if (elm.style.animationName !== undefined) {\n animation = true;\n }\n\n if (animation === false) {\n for (var i = 0; i < domPrefixes.length; i++) {\n if (elm.style[domPrefixes[i] + 'AnimationName'] !== undefined) {\n pfx = domPrefixes[i];\n keyframeprefix = '-' + pfx.toLowerCase() + '-';\n animationStartEvent = startEvents[i];\n animation = true;\n break;\n }\n }\n }\n }\n\n animationName = 'resizeanim';\n animationKeyframes = '@' + keyframeprefix + 'keyframes ' + animationName + ' { from { opacity: 0; } to { opacity: 0; } } ';\n animationStyle = keyframeprefix + 'animation: 1ms ' + animationName + '; ';\n }\n\n var createStyles = function createStyles(doc) {\n if (!doc.getElementById('detectElementResize')) {\n //opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360\n var css = (animationKeyframes ? animationKeyframes : '') + '.resize-triggers { ' + (animationStyle ? animationStyle : '') + 'visibility: hidden; opacity: 0; } ' + '.resize-triggers, .resize-triggers > div, .contract-trigger:before { content: \" \"; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',\n head = doc.head || doc.getElementsByTagName('head')[0],\n style = doc.createElement('style');\n\n style.id = 'detectElementResize';\n style.type = 'text/css';\n\n if (nonce != null) {\n style.setAttribute('nonce', nonce);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(doc.createTextNode(css));\n }\n\n head.appendChild(style);\n }\n };\n\n var addResizeListener = function addResizeListener(element, fn) {\n if (attachEvent) {\n element.attachEvent('onresize', fn);\n } else {\n if (!element.__resizeTriggers__) {\n var doc = element.ownerDocument;\n var elementStyle = windowObject.getComputedStyle(element);\n if (elementStyle && elementStyle.position === 'static') {\n element.style.position = 'relative';\n }\n createStyles(doc);\n element.__resizeLast__ = {};\n element.__resizeListeners__ = [];\n (element.__resizeTriggers__ = doc.createElement('div')).className = 'resize-triggers';\n var expandTrigger = doc.createElement('div');\n expandTrigger.className = 'expand-trigger';\n expandTrigger.appendChild(doc.createElement('div'));\n var contractTrigger = doc.createElement('div');\n contractTrigger.className = 'contract-trigger';\n element.__resizeTriggers__.appendChild(expandTrigger);\n element.__resizeTriggers__.appendChild(contractTrigger);\n element.appendChild(element.__resizeTriggers__);\n resetTriggers(element);\n element.addEventListener('scroll', scrollListener, true);\n\n /* Listen for a css animation to detect element display/re-attach */\n if (animationStartEvent) {\n element.__resizeTriggers__.__animationListener__ = function animationListener(e) {\n if (e.animationName === animationName) {\n resetTriggers(element);\n }\n };\n element.__resizeTriggers__.addEventListener(animationStartEvent, element.__resizeTriggers__.__animationListener__);\n }\n }\n element.__resizeListeners__.push(fn);\n }\n };\n\n var removeResizeListener = function removeResizeListener(element, fn) {\n if (attachEvent) {\n element.detachEvent('onresize', fn);\n } else {\n element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);\n if (!element.__resizeListeners__.length) {\n element.removeEventListener('scroll', scrollListener, true);\n if (element.__resizeTriggers__.__animationListener__) {\n element.__resizeTriggers__.removeEventListener(animationStartEvent, element.__resizeTriggers__.__animationListener__);\n element.__resizeTriggers__.__animationListener__ = null;\n }\n try {\n element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__);\n } catch (e) {\n // Preact compat; see developit/preact-compat/issues/228\n }\n }\n }\n };\n\n return {\n addResizeListener: addResizeListener,\n removeResizeListener: removeResizeListener\n };\n}\n\nvar AutoSizer = function (_React$PureComponent) {\n inherits(AutoSizer, _React$PureComponent);\n\n function AutoSizer() {\n var _ref;\n\n var _temp, _this, _ret;\n\n classCallCheck(this, AutoSizer);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = AutoSizer.__proto__ || Object.getPrototypeOf(AutoSizer)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n height: _this.props.defaultHeight || 0,\n width: _this.props.defaultWidth || 0\n }, _this._onResize = function () {\n var _this$props = _this.props,\n disableHeight = _this$props.disableHeight,\n disableWidth = _this$props.disableWidth,\n onResize = _this$props.onResize;\n\n\n if (_this._parentNode) {\n // Guard against AutoSizer component being removed from the DOM immediately after being added.\n // This can result in invalid style values which can result in NaN values if we don't handle them.\n // See issue #150 for more context.\n\n var _height = _this._parentNode.offsetHeight || 0;\n var _width = _this._parentNode.offsetWidth || 0;\n\n var _style = window.getComputedStyle(_this._parentNode) || {};\n var paddingLeft = parseInt(_style.paddingLeft, 10) || 0;\n var paddingRight = parseInt(_style.paddingRight, 10) || 0;\n var paddingTop = parseInt(_style.paddingTop, 10) || 0;\n var paddingBottom = parseInt(_style.paddingBottom, 10) || 0;\n\n var newHeight = _height - paddingTop - paddingBottom;\n var newWidth = _width - paddingLeft - paddingRight;\n\n if (!disableHeight && _this.state.height !== newHeight || !disableWidth && _this.state.width !== newWidth) {\n _this.setState({\n height: _height - paddingTop - paddingBottom,\n width: _width - paddingLeft - paddingRight\n });\n\n onResize({ height: _height, width: _width });\n }\n }\n }, _this._setRef = function (autoSizer) {\n _this._autoSizer = autoSizer;\n }, _temp), possibleConstructorReturn(_this, _ret);\n }\n\n createClass(AutoSizer, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var nonce = this.props.nonce;\n\n if (this._autoSizer && this._autoSizer.parentNode && this._autoSizer.parentNode.ownerDocument && this._autoSizer.parentNode.ownerDocument.defaultView && this._autoSizer.parentNode instanceof this._autoSizer.parentNode.ownerDocument.defaultView.HTMLElement) {\n // Delay access of parentNode until mount.\n // This handles edge-cases where the component has already been unmounted before its ref has been set,\n // As well as libraries like react-lite which have a slightly different lifecycle.\n this._parentNode = this._autoSizer.parentNode;\n\n // Defer requiring resize handler in order to support server-side rendering.\n // See issue #41\n this._detectElementResize = createDetectElementResize(nonce);\n this._detectElementResize.addResizeListener(this._parentNode, this._onResize);\n\n this._onResize();\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (this._detectElementResize && this._parentNode) {\n this._detectElementResize.removeResizeListener(this._parentNode, this._onResize);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n children = _props.children,\n className = _props.className,\n disableHeight = _props.disableHeight,\n disableWidth = _props.disableWidth,\n style = _props.style;\n var _state = this.state,\n height = _state.height,\n width = _state.width;\n\n // Outer div should not force width/height since that may prevent containers from shrinking.\n // Inner component should overflow and use calculated width/height.\n // See issue #68 for more information.\n\n var outerStyle = { overflow: 'visible' };\n var childParams = {};\n\n // Avoid rendering children before the initial measurements have been collected.\n // At best this would just be wasting cycles.\n var bailoutOnChildren = false;\n\n if (!disableHeight) {\n if (height === 0) {\n bailoutOnChildren = true;\n }\n outerStyle.height = 0;\n childParams.height = height;\n }\n\n if (!disableWidth) {\n if (width === 0) {\n bailoutOnChildren = true;\n }\n outerStyle.width = 0;\n childParams.width = width;\n }\n\n return createElement(\n 'div',\n {\n className: className,\n ref: this._setRef,\n style: _extends({}, outerStyle, style)\n },\n !bailoutOnChildren && children(childParams)\n );\n }\n }]);\n return AutoSizer;\n}(PureComponent);\n\nAutoSizer.defaultProps = {\n onResize: function onResize() {},\n disableHeight: false,\n disableWidth: false,\n style: {}\n};\n\nexport default AutoSizer;\n","import { PureComponent } from 'react';\n\nfunction isInteger(value) {\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n}\n\nfunction isRangeVisible(_ref) {\n var lastRenderedStartIndex = _ref.lastRenderedStartIndex,\n lastRenderedStopIndex = _ref.lastRenderedStopIndex,\n startIndex = _ref.startIndex,\n stopIndex = _ref.stopIndex;\n\n return !(startIndex > lastRenderedStopIndex || stopIndex < lastRenderedStartIndex);\n}\n\nfunction scanForUnloadedRanges(_ref) {\n var isItemLoaded = _ref.isItemLoaded,\n itemCount = _ref.itemCount,\n minimumBatchSize = _ref.minimumBatchSize,\n startIndex = _ref.startIndex,\n stopIndex = _ref.stopIndex;\n\n var unloadedRanges = [];\n\n var rangeStartIndex = null;\n var rangeStopIndex = null;\n\n for (var _index = startIndex; _index <= stopIndex; _index++) {\n var loaded = isItemLoaded(_index);\n\n if (!loaded) {\n rangeStopIndex = _index;\n if (rangeStartIndex === null) {\n rangeStartIndex = _index;\n }\n } else if (rangeStopIndex !== null) {\n unloadedRanges.push(rangeStartIndex, rangeStopIndex);\n\n rangeStartIndex = rangeStopIndex = null;\n }\n }\n\n // If :rangeStopIndex is not null it means we haven't ran out of unloaded rows.\n // Scan forward to try filling our :minimumBatchSize.\n if (rangeStopIndex !== null) {\n var potentialStopIndex = Math.min(Math.max(rangeStopIndex, rangeStartIndex + minimumBatchSize - 1), itemCount - 1);\n\n for (var _index2 = rangeStopIndex + 1; _index2 <= potentialStopIndex; _index2++) {\n if (!isItemLoaded(_index2)) {\n rangeStopIndex = _index2;\n } else {\n break;\n }\n }\n\n unloadedRanges.push(rangeStartIndex, rangeStopIndex);\n }\n\n // Check to see if our first range ended prematurely.\n // In this case we should scan backwards to try filling our :minimumBatchSize.\n if (unloadedRanges.length) {\n while (unloadedRanges[1] - unloadedRanges[0] + 1 < minimumBatchSize && unloadedRanges[0] > 0) {\n var _index3 = unloadedRanges[0] - 1;\n\n if (!isItemLoaded(_index3)) {\n unloadedRanges[0] = _index3;\n } else {\n break;\n }\n }\n }\n\n return unloadedRanges;\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = 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 Object.defineProperty(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\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar InfiniteLoader = function (_PureComponent) {\n inherits(InfiniteLoader, _PureComponent);\n\n function InfiniteLoader() {\n var _ref;\n\n var _temp, _this, _ret;\n\n classCallCheck(this, InfiniteLoader);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = InfiniteLoader.__proto__ || Object.getPrototypeOf(InfiniteLoader)).call.apply(_ref, [this].concat(args))), _this), _this._lastRenderedStartIndex = -1, _this._lastRenderedStopIndex = -1, _this._memoizedUnloadedRanges = [], _this._onItemsRendered = function (_ref2) {\n var visibleStartIndex = _ref2.visibleStartIndex,\n visibleStopIndex = _ref2.visibleStopIndex;\n\n if (process.env.NODE_ENV !== 'production') {\n if (!isInteger(visibleStartIndex) || !isInteger(visibleStopIndex)) {\n console.warn('Invalid onItemsRendered signature; please refer to InfiniteLoader documentation.');\n }\n\n if (typeof _this.props.loadMoreRows === 'function') {\n console.warn('InfiniteLoader \"loadMoreRows\" prop has been renamed to \"loadMoreItems\".');\n }\n }\n\n _this._lastRenderedStartIndex = visibleStartIndex;\n _this._lastRenderedStopIndex = visibleStopIndex;\n\n _this._ensureRowsLoaded(visibleStartIndex, visibleStopIndex);\n }, _this._setRef = function (listRef) {\n _this._listRef = listRef;\n }, _temp), possibleConstructorReturn(_this, _ret);\n }\n\n createClass(InfiniteLoader, [{\n key: 'resetloadMoreItemsCache',\n value: function resetloadMoreItemsCache() {\n var autoReload = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n this._memoizedUnloadedRanges = [];\n\n if (autoReload) {\n this._ensureRowsLoaded(this._lastRenderedStartIndex, this._lastRenderedStopIndex);\n }\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (process.env.NODE_ENV !== 'production') {\n if (this._listRef == null) {\n console.warn('Invalid list ref; please refer to InfiniteLoader documentation.');\n }\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var children = this.props.children;\n\n\n return children({\n onItemsRendered: this._onItemsRendered,\n ref: this._setRef\n });\n }\n }, {\n key: '_ensureRowsLoaded',\n value: function _ensureRowsLoaded(startIndex, stopIndex) {\n var _props = this.props,\n isItemLoaded = _props.isItemLoaded,\n itemCount = _props.itemCount,\n _props$minimumBatchSi = _props.minimumBatchSize,\n minimumBatchSize = _props$minimumBatchSi === undefined ? 10 : _props$minimumBatchSi,\n _props$threshold = _props.threshold,\n threshold = _props$threshold === undefined ? 15 : _props$threshold;\n\n\n var unloadedRanges = scanForUnloadedRanges({\n isItemLoaded: isItemLoaded,\n itemCount: itemCount,\n minimumBatchSize: minimumBatchSize,\n startIndex: Math.max(0, startIndex - threshold),\n stopIndex: Math.min(itemCount - 1, stopIndex + threshold)\n });\n\n // Avoid calling load-rows unless range has changed.\n // This shouldn't be strictly necessary, but is maybe nice to do.\n if (this._memoizedUnloadedRanges.length !== unloadedRanges.length || this._memoizedUnloadedRanges.some(function (startOrStop, index) {\n return unloadedRanges[index] !== startOrStop;\n })) {\n this._memoizedUnloadedRanges = unloadedRanges;\n this._loadUnloadedRanges(unloadedRanges);\n }\n }\n }, {\n key: '_loadUnloadedRanges',\n value: function _loadUnloadedRanges(unloadedRanges) {\n var _this2 = this;\n\n // loadMoreRows was renamed to loadMoreItems in v1.0.3; will be removed in v2.0\n var loadMoreItems = this.props.loadMoreItems || this.props.loadMoreRows;\n\n var _loop = function _loop(i) {\n var startIndex = unloadedRanges[i];\n var stopIndex = unloadedRanges[i + 1];\n var promise = loadMoreItems(startIndex, stopIndex);\n if (promise != null) {\n promise.then(function () {\n // Refresh the visible rows if any of them have just been loaded.\n // Otherwise they will remain in their unloaded visual state.\n if (isRangeVisible({\n lastRenderedStartIndex: _this2._lastRenderedStartIndex,\n lastRenderedStopIndex: _this2._lastRenderedStopIndex,\n startIndex: startIndex,\n stopIndex: stopIndex\n })) {\n // Handle an unmount while promises are still in flight.\n if (_this2._listRef == null) {\n return;\n }\n\n // Resize cached row sizes for VariableSizeList,\n // otherwise just re-render the list.\n if (typeof _this2._listRef.resetAfterIndex === 'function') {\n _this2._listRef.resetAfterIndex(startIndex, true);\n } else {\n // HACK reset temporarily cached item styles to force PureComponent to re-render.\n // This is pretty gross, but I'm okay with it for now.\n // Don't judge me.\n if (typeof _this2._listRef._getItemStyleCache === 'function') {\n _this2._listRef._getItemStyleCache(-1);\n }\n _this2._listRef.forceUpdate();\n }\n }\n });\n }\n };\n\n for (var i = 0; i < unloadedRanges.length; i += 2) {\n _loop(i);\n }\n }\n }]);\n return InfiniteLoader;\n}(PureComponent);\n\nexport default InfiniteLoader;\n","var safeIsNaN = Number.isNaN ||\n function ponyfill(value) {\n return typeof value === 'number' && value !== value;\n };\nfunction isEqual(first, second) {\n if (first === second) {\n return true;\n }\n if (safeIsNaN(first) && safeIsNaN(second)) {\n return true;\n }\n return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for (var i = 0; i < newInputs.length; i++) {\n if (!isEqual(newInputs[i], lastInputs[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n if (isEqual === void 0) { isEqual = areInputsEqual; }\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\n function memoized() {\n var newArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n return lastResult;\n }\n lastResult = resultFn.apply(this, newArgs);\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n return lastResult;\n }\n return memoized;\n}\n\nexport default memoizeOne;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport memoizeOne from 'memoize-one';\nimport { createElement, PureComponent } from 'react';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\n\n// Animation frame based implementation of setTimeout.\n// Inspired by Joe Lambert, https://gist.github.com/joelambert/1002116#file-requesttimeout-js\nvar hasNativePerformanceNow = typeof performance === 'object' && typeof performance.now === 'function';\nvar now = hasNativePerformanceNow ? function () {\n return performance.now();\n} : function () {\n return Date.now();\n};\nfunction cancelTimeout(timeoutID) {\n cancelAnimationFrame(timeoutID.id);\n}\nfunction requestTimeout(callback, delay) {\n var start = now();\n\n function tick() {\n if (now() - start >= delay) {\n callback.call(null);\n } else {\n timeoutID.id = requestAnimationFrame(tick);\n }\n }\n\n var timeoutID = {\n id: requestAnimationFrame(tick)\n };\n return timeoutID;\n}\n\nvar size = -1; // This utility copied from \"dom-helpers\" package.\n\nfunction getScrollbarSize(recalculate) {\n if (recalculate === void 0) {\n recalculate = false;\n }\n\n if (size === -1 || recalculate) {\n var div = document.createElement('div');\n var style = div.style;\n style.width = '50px';\n style.height = '50px';\n style.overflow = 'scroll';\n document.body.appendChild(div);\n size = div.offsetWidth - div.clientWidth;\n document.body.removeChild(div);\n }\n\n return size;\n}\nvar cachedRTLResult = null; // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n// Chrome does not seem to adhere; its scrollLeft values are positive (measured relative to the left).\n// Safari's elastic bounce makes detecting this even more complicated wrt potential false positives.\n// The safest way to check this is to intentionally set a negative offset,\n// and then verify that the subsequent \"scroll\" event matches the negative offset.\n// If it does not match, then we can assume a non-standard RTL scroll implementation.\n\nfunction getRTLOffsetType(recalculate) {\n if (recalculate === void 0) {\n recalculate = false;\n }\n\n if (cachedRTLResult === null || recalculate) {\n var outerDiv = document.createElement('div');\n var outerStyle = outerDiv.style;\n outerStyle.width = '50px';\n outerStyle.height = '50px';\n outerStyle.overflow = 'scroll';\n outerStyle.direction = 'rtl';\n var innerDiv = document.createElement('div');\n var innerStyle = innerDiv.style;\n innerStyle.width = '100px';\n innerStyle.height = '100px';\n outerDiv.appendChild(innerDiv);\n document.body.appendChild(outerDiv);\n\n if (outerDiv.scrollLeft > 0) {\n cachedRTLResult = 'positive-descending';\n } else {\n outerDiv.scrollLeft = 1;\n\n if (outerDiv.scrollLeft === 0) {\n cachedRTLResult = 'negative';\n } else {\n cachedRTLResult = 'positive-ascending';\n }\n }\n\n document.body.removeChild(outerDiv);\n return cachedRTLResult;\n }\n\n return cachedRTLResult;\n}\n\nvar IS_SCROLLING_DEBOUNCE_INTERVAL = 150;\n\nvar defaultItemKey = function defaultItemKey(_ref) {\n var columnIndex = _ref.columnIndex,\n data = _ref.data,\n rowIndex = _ref.rowIndex;\n return rowIndex + \":\" + columnIndex;\n}; // In DEV mode, this Set helps us only log a warning once per component instance.\n// This avoids spamming the console every time a render happens.\n\n\nvar devWarningsOverscanCount = null;\nvar devWarningsOverscanRowsColumnsCount = null;\nvar devWarningsTagName = null;\n\nif (process.env.NODE_ENV !== 'production') {\n if (typeof window !== 'undefined' && typeof window.WeakSet !== 'undefined') {\n devWarningsOverscanCount = /*#__PURE__*/new WeakSet();\n devWarningsOverscanRowsColumnsCount = /*#__PURE__*/new WeakSet();\n devWarningsTagName = /*#__PURE__*/new WeakSet();\n }\n}\n\nfunction createGridComponent(_ref2) {\n var _class;\n\n var getColumnOffset = _ref2.getColumnOffset,\n getColumnStartIndexForOffset = _ref2.getColumnStartIndexForOffset,\n getColumnStopIndexForStartIndex = _ref2.getColumnStopIndexForStartIndex,\n getColumnWidth = _ref2.getColumnWidth,\n getEstimatedTotalHeight = _ref2.getEstimatedTotalHeight,\n getEstimatedTotalWidth = _ref2.getEstimatedTotalWidth,\n getOffsetForColumnAndAlignment = _ref2.getOffsetForColumnAndAlignment,\n getOffsetForRowAndAlignment = _ref2.getOffsetForRowAndAlignment,\n getRowHeight = _ref2.getRowHeight,\n getRowOffset = _ref2.getRowOffset,\n getRowStartIndexForOffset = _ref2.getRowStartIndexForOffset,\n getRowStopIndexForStartIndex = _ref2.getRowStopIndexForStartIndex,\n initInstanceProps = _ref2.initInstanceProps,\n shouldResetStyleCacheOnItemSizeChange = _ref2.shouldResetStyleCacheOnItemSizeChange,\n validateProps = _ref2.validateProps;\n return _class = /*#__PURE__*/function (_PureComponent) {\n _inheritsLoose(Grid, _PureComponent);\n\n // Always use explicit constructor for React components.\n // It produces less code after transpilation. (#26)\n // eslint-disable-next-line no-useless-constructor\n function Grid(props) {\n var _this;\n\n _this = _PureComponent.call(this, props) || this;\n _this._instanceProps = initInstanceProps(_this.props, _assertThisInitialized(_this));\n _this._resetIsScrollingTimeoutId = null;\n _this._outerRef = void 0;\n _this.state = {\n instance: _assertThisInitialized(_this),\n isScrolling: false,\n horizontalScrollDirection: 'forward',\n scrollLeft: typeof _this.props.initialScrollLeft === 'number' ? _this.props.initialScrollLeft : 0,\n scrollTop: typeof _this.props.initialScrollTop === 'number' ? _this.props.initialScrollTop : 0,\n scrollUpdateWasRequested: false,\n verticalScrollDirection: 'forward'\n };\n _this._callOnItemsRendered = void 0;\n _this._callOnItemsRendered = memoizeOne(function (overscanColumnStartIndex, overscanColumnStopIndex, overscanRowStartIndex, overscanRowStopIndex, visibleColumnStartIndex, visibleColumnStopIndex, visibleRowStartIndex, visibleRowStopIndex) {\n return _this.props.onItemsRendered({\n overscanColumnStartIndex: overscanColumnStartIndex,\n overscanColumnStopIndex: overscanColumnStopIndex,\n overscanRowStartIndex: overscanRowStartIndex,\n overscanRowStopIndex: overscanRowStopIndex,\n visibleColumnStartIndex: visibleColumnStartIndex,\n visibleColumnStopIndex: visibleColumnStopIndex,\n visibleRowStartIndex: visibleRowStartIndex,\n visibleRowStopIndex: visibleRowStopIndex\n });\n });\n _this._callOnScroll = void 0;\n _this._callOnScroll = memoizeOne(function (scrollLeft, scrollTop, horizontalScrollDirection, verticalScrollDirection, scrollUpdateWasRequested) {\n return _this.props.onScroll({\n horizontalScrollDirection: horizontalScrollDirection,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n verticalScrollDirection: verticalScrollDirection,\n scrollUpdateWasRequested: scrollUpdateWasRequested\n });\n });\n _this._getItemStyle = void 0;\n\n _this._getItemStyle = function (rowIndex, columnIndex) {\n var _this$props = _this.props,\n columnWidth = _this$props.columnWidth,\n direction = _this$props.direction,\n rowHeight = _this$props.rowHeight;\n\n var itemStyleCache = _this._getItemStyleCache(shouldResetStyleCacheOnItemSizeChange && columnWidth, shouldResetStyleCacheOnItemSizeChange && direction, shouldResetStyleCacheOnItemSizeChange && rowHeight);\n\n var key = rowIndex + \":\" + columnIndex;\n var style;\n\n if (itemStyleCache.hasOwnProperty(key)) {\n style = itemStyleCache[key];\n } else {\n var _offset = getColumnOffset(_this.props, columnIndex, _this._instanceProps);\n\n var isRtl = direction === 'rtl';\n itemStyleCache[key] = style = {\n position: 'absolute',\n left: isRtl ? undefined : _offset,\n right: isRtl ? _offset : undefined,\n top: getRowOffset(_this.props, rowIndex, _this._instanceProps),\n height: getRowHeight(_this.props, rowIndex, _this._instanceProps),\n width: getColumnWidth(_this.props, columnIndex, _this._instanceProps)\n };\n }\n\n return style;\n };\n\n _this._getItemStyleCache = void 0;\n _this._getItemStyleCache = memoizeOne(function (_, __, ___) {\n return {};\n });\n\n _this._onScroll = function (event) {\n var _event$currentTarget = event.currentTarget,\n clientHeight = _event$currentTarget.clientHeight,\n clientWidth = _event$currentTarget.clientWidth,\n scrollLeft = _event$currentTarget.scrollLeft,\n scrollTop = _event$currentTarget.scrollTop,\n scrollHeight = _event$currentTarget.scrollHeight,\n scrollWidth = _event$currentTarget.scrollWidth;\n\n _this.setState(function (prevState) {\n if (prevState.scrollLeft === scrollLeft && prevState.scrollTop === scrollTop) {\n // Scroll position may have been updated by cDM/cDU,\n // In which case we don't need to trigger another render,\n // And we don't want to update state.isScrolling.\n return null;\n }\n\n var direction = _this.props.direction; // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // It's also easier for this component if we convert offsets to the same format as they would be in for ltr.\n // So the simplest solution is to determine which browser behavior we're dealing with, and convert based on it.\n\n var calculatedScrollLeft = scrollLeft;\n\n if (direction === 'rtl') {\n switch (getRTLOffsetType()) {\n case 'negative':\n calculatedScrollLeft = -scrollLeft;\n break;\n\n case 'positive-descending':\n calculatedScrollLeft = scrollWidth - clientWidth - scrollLeft;\n break;\n }\n } // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n\n\n calculatedScrollLeft = Math.max(0, Math.min(calculatedScrollLeft, scrollWidth - clientWidth));\n var calculatedScrollTop = Math.max(0, Math.min(scrollTop, scrollHeight - clientHeight));\n return {\n isScrolling: true,\n horizontalScrollDirection: prevState.scrollLeft < scrollLeft ? 'forward' : 'backward',\n scrollLeft: calculatedScrollLeft,\n scrollTop: calculatedScrollTop,\n verticalScrollDirection: prevState.scrollTop < scrollTop ? 'forward' : 'backward',\n scrollUpdateWasRequested: false\n };\n }, _this._resetIsScrollingDebounced);\n };\n\n _this._outerRefSetter = function (ref) {\n var outerRef = _this.props.outerRef;\n _this._outerRef = ref;\n\n if (typeof outerRef === 'function') {\n outerRef(ref);\n } else if (outerRef != null && typeof outerRef === 'object' && outerRef.hasOwnProperty('current')) {\n outerRef.current = ref;\n }\n };\n\n _this._resetIsScrollingDebounced = function () {\n if (_this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(_this._resetIsScrollingTimeoutId);\n }\n\n _this._resetIsScrollingTimeoutId = requestTimeout(_this._resetIsScrolling, IS_SCROLLING_DEBOUNCE_INTERVAL);\n };\n\n _this._resetIsScrolling = function () {\n _this._resetIsScrollingTimeoutId = null;\n\n _this.setState({\n isScrolling: false\n }, function () {\n // Clear style cache after state update has been committed.\n // This way we don't break pure sCU for items that don't use isScrolling param.\n _this._getItemStyleCache(-1);\n });\n };\n\n return _this;\n }\n\n Grid.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {\n validateSharedProps(nextProps, prevState);\n validateProps(nextProps);\n return null;\n };\n\n var _proto = Grid.prototype;\n\n _proto.scrollTo = function scrollTo(_ref3) {\n var scrollLeft = _ref3.scrollLeft,\n scrollTop = _ref3.scrollTop;\n\n if (scrollLeft !== undefined) {\n scrollLeft = Math.max(0, scrollLeft);\n }\n\n if (scrollTop !== undefined) {\n scrollTop = Math.max(0, scrollTop);\n }\n\n this.setState(function (prevState) {\n if (scrollLeft === undefined) {\n scrollLeft = prevState.scrollLeft;\n }\n\n if (scrollTop === undefined) {\n scrollTop = prevState.scrollTop;\n }\n\n if (prevState.scrollLeft === scrollLeft && prevState.scrollTop === scrollTop) {\n return null;\n }\n\n return {\n horizontalScrollDirection: prevState.scrollLeft < scrollLeft ? 'forward' : 'backward',\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n scrollUpdateWasRequested: true,\n verticalScrollDirection: prevState.scrollTop < scrollTop ? 'forward' : 'backward'\n };\n }, this._resetIsScrollingDebounced);\n };\n\n _proto.scrollToItem = function scrollToItem(_ref4) {\n var _ref4$align = _ref4.align,\n align = _ref4$align === void 0 ? 'auto' : _ref4$align,\n columnIndex = _ref4.columnIndex,\n rowIndex = _ref4.rowIndex;\n var _this$props2 = this.props,\n columnCount = _this$props2.columnCount,\n height = _this$props2.height,\n rowCount = _this$props2.rowCount,\n width = _this$props2.width;\n var _this$state = this.state,\n scrollLeft = _this$state.scrollLeft,\n scrollTop = _this$state.scrollTop;\n var scrollbarSize = getScrollbarSize();\n\n if (columnIndex !== undefined) {\n columnIndex = Math.max(0, Math.min(columnIndex, columnCount - 1));\n }\n\n if (rowIndex !== undefined) {\n rowIndex = Math.max(0, Math.min(rowIndex, rowCount - 1));\n }\n\n var estimatedTotalHeight = getEstimatedTotalHeight(this.props, this._instanceProps);\n var estimatedTotalWidth = getEstimatedTotalWidth(this.props, this._instanceProps); // The scrollbar size should be considered when scrolling an item into view,\n // to ensure it's fully visible.\n // But we only need to account for its size when it's actually visible.\n\n var horizontalScrollbarSize = estimatedTotalWidth > width ? scrollbarSize : 0;\n var verticalScrollbarSize = estimatedTotalHeight > height ? scrollbarSize : 0;\n this.scrollTo({\n scrollLeft: columnIndex !== undefined ? getOffsetForColumnAndAlignment(this.props, columnIndex, align, scrollLeft, this._instanceProps, verticalScrollbarSize) : scrollLeft,\n scrollTop: rowIndex !== undefined ? getOffsetForRowAndAlignment(this.props, rowIndex, align, scrollTop, this._instanceProps, horizontalScrollbarSize) : scrollTop\n });\n };\n\n _proto.componentDidMount = function componentDidMount() {\n var _this$props3 = this.props,\n initialScrollLeft = _this$props3.initialScrollLeft,\n initialScrollTop = _this$props3.initialScrollTop;\n\n if (this._outerRef != null) {\n var outerRef = this._outerRef;\n\n if (typeof initialScrollLeft === 'number') {\n outerRef.scrollLeft = initialScrollLeft;\n }\n\n if (typeof initialScrollTop === 'number') {\n outerRef.scrollTop = initialScrollTop;\n }\n }\n\n this._callPropsCallbacks();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n var direction = this.props.direction;\n var _this$state2 = this.state,\n scrollLeft = _this$state2.scrollLeft,\n scrollTop = _this$state2.scrollTop,\n scrollUpdateWasRequested = _this$state2.scrollUpdateWasRequested;\n\n if (scrollUpdateWasRequested && this._outerRef != null) {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // So we need to determine which browser behavior we're dealing with, and mimic it.\n var outerRef = this._outerRef;\n\n if (direction === 'rtl') {\n switch (getRTLOffsetType()) {\n case 'negative':\n outerRef.scrollLeft = -scrollLeft;\n break;\n\n case 'positive-ascending':\n outerRef.scrollLeft = scrollLeft;\n break;\n\n default:\n var clientWidth = outerRef.clientWidth,\n scrollWidth = outerRef.scrollWidth;\n outerRef.scrollLeft = scrollWidth - clientWidth - scrollLeft;\n break;\n }\n } else {\n outerRef.scrollLeft = Math.max(0, scrollLeft);\n }\n\n outerRef.scrollTop = Math.max(0, scrollTop);\n }\n\n this._callPropsCallbacks();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this._resetIsScrollingTimeoutId);\n }\n };\n\n _proto.render = function render() {\n var _this$props4 = this.props,\n children = _this$props4.children,\n className = _this$props4.className,\n columnCount = _this$props4.columnCount,\n direction = _this$props4.direction,\n height = _this$props4.height,\n innerRef = _this$props4.innerRef,\n innerElementType = _this$props4.innerElementType,\n innerTagName = _this$props4.innerTagName,\n itemData = _this$props4.itemData,\n _this$props4$itemKey = _this$props4.itemKey,\n itemKey = _this$props4$itemKey === void 0 ? defaultItemKey : _this$props4$itemKey,\n outerElementType = _this$props4.outerElementType,\n outerTagName = _this$props4.outerTagName,\n rowCount = _this$props4.rowCount,\n style = _this$props4.style,\n useIsScrolling = _this$props4.useIsScrolling,\n width = _this$props4.width;\n var isScrolling = this.state.isScrolling;\n\n var _this$_getHorizontalR = this._getHorizontalRangeToRender(),\n columnStartIndex = _this$_getHorizontalR[0],\n columnStopIndex = _this$_getHorizontalR[1];\n\n var _this$_getVerticalRan = this._getVerticalRangeToRender(),\n rowStartIndex = _this$_getVerticalRan[0],\n rowStopIndex = _this$_getVerticalRan[1];\n\n var items = [];\n\n if (columnCount > 0 && rowCount) {\n for (var _rowIndex = rowStartIndex; _rowIndex <= rowStopIndex; _rowIndex++) {\n for (var _columnIndex = columnStartIndex; _columnIndex <= columnStopIndex; _columnIndex++) {\n items.push(createElement(children, {\n columnIndex: _columnIndex,\n data: itemData,\n isScrolling: useIsScrolling ? isScrolling : undefined,\n key: itemKey({\n columnIndex: _columnIndex,\n data: itemData,\n rowIndex: _rowIndex\n }),\n rowIndex: _rowIndex,\n style: this._getItemStyle(_rowIndex, _columnIndex)\n }));\n }\n }\n } // Read this value AFTER items have been created,\n // So their actual sizes (if variable) are taken into consideration.\n\n\n var estimatedTotalHeight = getEstimatedTotalHeight(this.props, this._instanceProps);\n var estimatedTotalWidth = getEstimatedTotalWidth(this.props, this._instanceProps);\n return createElement(outerElementType || outerTagName || 'div', {\n className: className,\n onScroll: this._onScroll,\n ref: this._outerRefSetter,\n style: _extends({\n position: 'relative',\n height: height,\n width: width,\n overflow: 'auto',\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform',\n direction: direction\n }, style)\n }, createElement(innerElementType || innerTagName || 'div', {\n children: items,\n ref: innerRef,\n style: {\n height: estimatedTotalHeight,\n pointerEvents: isScrolling ? 'none' : undefined,\n width: estimatedTotalWidth\n }\n }));\n };\n\n _proto._callPropsCallbacks = function _callPropsCallbacks() {\n var _this$props5 = this.props,\n columnCount = _this$props5.columnCount,\n onItemsRendered = _this$props5.onItemsRendered,\n onScroll = _this$props5.onScroll,\n rowCount = _this$props5.rowCount;\n\n if (typeof onItemsRendered === 'function') {\n if (columnCount > 0 && rowCount > 0) {\n var _this$_getHorizontalR2 = this._getHorizontalRangeToRender(),\n _overscanColumnStartIndex = _this$_getHorizontalR2[0],\n _overscanColumnStopIndex = _this$_getHorizontalR2[1],\n _visibleColumnStartIndex = _this$_getHorizontalR2[2],\n _visibleColumnStopIndex = _this$_getHorizontalR2[3];\n\n var _this$_getVerticalRan2 = this._getVerticalRangeToRender(),\n _overscanRowStartIndex = _this$_getVerticalRan2[0],\n _overscanRowStopIndex = _this$_getVerticalRan2[1],\n _visibleRowStartIndex = _this$_getVerticalRan2[2],\n _visibleRowStopIndex = _this$_getVerticalRan2[3];\n\n this._callOnItemsRendered(_overscanColumnStartIndex, _overscanColumnStopIndex, _overscanRowStartIndex, _overscanRowStopIndex, _visibleColumnStartIndex, _visibleColumnStopIndex, _visibleRowStartIndex, _visibleRowStopIndex);\n }\n }\n\n if (typeof onScroll === 'function') {\n var _this$state3 = this.state,\n _horizontalScrollDirection = _this$state3.horizontalScrollDirection,\n _scrollLeft = _this$state3.scrollLeft,\n _scrollTop = _this$state3.scrollTop,\n _scrollUpdateWasRequested = _this$state3.scrollUpdateWasRequested,\n _verticalScrollDirection = _this$state3.verticalScrollDirection;\n\n this._callOnScroll(_scrollLeft, _scrollTop, _horizontalScrollDirection, _verticalScrollDirection, _scrollUpdateWasRequested);\n }\n } // Lazily create and cache item styles while scrolling,\n // So that pure component sCU will prevent re-renders.\n // We maintain this cache, and pass a style prop rather than index,\n // So that List can clear cached styles and force item re-render if necessary.\n ;\n\n _proto._getHorizontalRangeToRender = function _getHorizontalRangeToRender() {\n var _this$props6 = this.props,\n columnCount = _this$props6.columnCount,\n overscanColumnCount = _this$props6.overscanColumnCount,\n overscanColumnsCount = _this$props6.overscanColumnsCount,\n overscanCount = _this$props6.overscanCount,\n rowCount = _this$props6.rowCount;\n var _this$state4 = this.state,\n horizontalScrollDirection = _this$state4.horizontalScrollDirection,\n isScrolling = _this$state4.isScrolling,\n scrollLeft = _this$state4.scrollLeft;\n var overscanCountResolved = overscanColumnCount || overscanColumnsCount || overscanCount || 1;\n\n if (columnCount === 0 || rowCount === 0) {\n return [0, 0, 0, 0];\n }\n\n var startIndex = getColumnStartIndexForOffset(this.props, scrollLeft, this._instanceProps);\n var stopIndex = getColumnStopIndexForStartIndex(this.props, startIndex, scrollLeft, this._instanceProps); // Overscan by one item in each direction so that tab/focus works.\n // If there isn't at least one extra item, tab loops back around.\n\n var overscanBackward = !isScrolling || horizontalScrollDirection === 'backward' ? Math.max(1, overscanCountResolved) : 1;\n var overscanForward = !isScrolling || horizontalScrollDirection === 'forward' ? Math.max(1, overscanCountResolved) : 1;\n return [Math.max(0, startIndex - overscanBackward), Math.max(0, Math.min(columnCount - 1, stopIndex + overscanForward)), startIndex, stopIndex];\n };\n\n _proto._getVerticalRangeToRender = function _getVerticalRangeToRender() {\n var _this$props7 = this.props,\n columnCount = _this$props7.columnCount,\n overscanCount = _this$props7.overscanCount,\n overscanRowCount = _this$props7.overscanRowCount,\n overscanRowsCount = _this$props7.overscanRowsCount,\n rowCount = _this$props7.rowCount;\n var _this$state5 = this.state,\n isScrolling = _this$state5.isScrolling,\n verticalScrollDirection = _this$state5.verticalScrollDirection,\n scrollTop = _this$state5.scrollTop;\n var overscanCountResolved = overscanRowCount || overscanRowsCount || overscanCount || 1;\n\n if (columnCount === 0 || rowCount === 0) {\n return [0, 0, 0, 0];\n }\n\n var startIndex = getRowStartIndexForOffset(this.props, scrollTop, this._instanceProps);\n var stopIndex = getRowStopIndexForStartIndex(this.props, startIndex, scrollTop, this._instanceProps); // Overscan by one item in each direction so that tab/focus works.\n // If there isn't at least one extra item, tab loops back around.\n\n var overscanBackward = !isScrolling || verticalScrollDirection === 'backward' ? Math.max(1, overscanCountResolved) : 1;\n var overscanForward = !isScrolling || verticalScrollDirection === 'forward' ? Math.max(1, overscanCountResolved) : 1;\n return [Math.max(0, startIndex - overscanBackward), Math.max(0, Math.min(rowCount - 1, stopIndex + overscanForward)), startIndex, stopIndex];\n };\n\n return Grid;\n }(PureComponent), _class.defaultProps = {\n direction: 'ltr',\n itemData: undefined,\n useIsScrolling: false\n }, _class;\n}\n\nvar validateSharedProps = function validateSharedProps(_ref5, _ref6) {\n var children = _ref5.children,\n direction = _ref5.direction,\n height = _ref5.height,\n innerTagName = _ref5.innerTagName,\n outerTagName = _ref5.outerTagName,\n overscanColumnsCount = _ref5.overscanColumnsCount,\n overscanCount = _ref5.overscanCount,\n overscanRowsCount = _ref5.overscanRowsCount,\n width = _ref5.width;\n var instance = _ref6.instance;\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof overscanCount === 'number') {\n if (devWarningsOverscanCount && !devWarningsOverscanCount.has(instance)) {\n devWarningsOverscanCount.add(instance);\n console.warn('The overscanCount prop has been deprecated. ' + 'Please use the overscanColumnCount and overscanRowCount props instead.');\n }\n }\n\n if (typeof overscanColumnsCount === 'number' || typeof overscanRowsCount === 'number') {\n if (devWarningsOverscanRowsColumnsCount && !devWarningsOverscanRowsColumnsCount.has(instance)) {\n devWarningsOverscanRowsColumnsCount.add(instance);\n console.warn('The overscanColumnsCount and overscanRowsCount props have been deprecated. ' + 'Please use the overscanColumnCount and overscanRowCount props instead.');\n }\n }\n\n if (innerTagName != null || outerTagName != null) {\n if (devWarningsTagName && !devWarningsTagName.has(instance)) {\n devWarningsTagName.add(instance);\n console.warn('The innerTagName and outerTagName props have been deprecated. ' + 'Please use the innerElementType and outerElementType props instead.');\n }\n }\n\n if (children == null) {\n throw Error('An invalid \"children\" prop has been specified. ' + 'Value should be a React component. ' + (\"\\\"\" + (children === null ? 'null' : typeof children) + \"\\\" was specified.\"));\n }\n\n switch (direction) {\n case 'ltr':\n case 'rtl':\n // Valid values\n break;\n\n default:\n throw Error('An invalid \"direction\" prop has been specified. ' + 'Value should be either \"ltr\" or \"rtl\". ' + (\"\\\"\" + direction + \"\\\" was specified.\"));\n }\n\n if (typeof width !== 'number') {\n throw Error('An invalid \"width\" prop has been specified. ' + 'Grids must specify a number for width. ' + (\"\\\"\" + (width === null ? 'null' : typeof width) + \"\\\" was specified.\"));\n }\n\n if (typeof height !== 'number') {\n throw Error('An invalid \"height\" prop has been specified. ' + 'Grids must specify a number for height. ' + (\"\\\"\" + (height === null ? 'null' : typeof height) + \"\\\" was specified.\"));\n }\n }\n};\n\nvar DEFAULT_ESTIMATED_ITEM_SIZE = 50;\n\nvar getEstimatedTotalHeight = function getEstimatedTotalHeight(_ref, _ref2) {\n var rowCount = _ref.rowCount;\n var rowMetadataMap = _ref2.rowMetadataMap,\n estimatedRowHeight = _ref2.estimatedRowHeight,\n lastMeasuredRowIndex = _ref2.lastMeasuredRowIndex;\n var totalSizeOfMeasuredRows = 0; // Edge case check for when the number of items decreases while a scroll is in progress.\n // https://github.com/bvaughn/react-window/pull/138\n\n if (lastMeasuredRowIndex >= rowCount) {\n lastMeasuredRowIndex = rowCount - 1;\n }\n\n if (lastMeasuredRowIndex >= 0) {\n var itemMetadata = rowMetadataMap[lastMeasuredRowIndex];\n totalSizeOfMeasuredRows = itemMetadata.offset + itemMetadata.size;\n }\n\n var numUnmeasuredItems = rowCount - lastMeasuredRowIndex - 1;\n var totalSizeOfUnmeasuredItems = numUnmeasuredItems * estimatedRowHeight;\n return totalSizeOfMeasuredRows + totalSizeOfUnmeasuredItems;\n};\n\nvar getEstimatedTotalWidth = function getEstimatedTotalWidth(_ref3, _ref4) {\n var columnCount = _ref3.columnCount;\n var columnMetadataMap = _ref4.columnMetadataMap,\n estimatedColumnWidth = _ref4.estimatedColumnWidth,\n lastMeasuredColumnIndex = _ref4.lastMeasuredColumnIndex;\n var totalSizeOfMeasuredRows = 0; // Edge case check for when the number of items decreases while a scroll is in progress.\n // https://github.com/bvaughn/react-window/pull/138\n\n if (lastMeasuredColumnIndex >= columnCount) {\n lastMeasuredColumnIndex = columnCount - 1;\n }\n\n if (lastMeasuredColumnIndex >= 0) {\n var itemMetadata = columnMetadataMap[lastMeasuredColumnIndex];\n totalSizeOfMeasuredRows = itemMetadata.offset + itemMetadata.size;\n }\n\n var numUnmeasuredItems = columnCount - lastMeasuredColumnIndex - 1;\n var totalSizeOfUnmeasuredItems = numUnmeasuredItems * estimatedColumnWidth;\n return totalSizeOfMeasuredRows + totalSizeOfUnmeasuredItems;\n};\n\nvar getItemMetadata = function getItemMetadata(itemType, props, index, instanceProps) {\n var itemMetadataMap, itemSize, lastMeasuredIndex;\n\n if (itemType === 'column') {\n itemMetadataMap = instanceProps.columnMetadataMap;\n itemSize = props.columnWidth;\n lastMeasuredIndex = instanceProps.lastMeasuredColumnIndex;\n } else {\n itemMetadataMap = instanceProps.rowMetadataMap;\n itemSize = props.rowHeight;\n lastMeasuredIndex = instanceProps.lastMeasuredRowIndex;\n }\n\n if (index > lastMeasuredIndex) {\n var offset = 0;\n\n if (lastMeasuredIndex >= 0) {\n var itemMetadata = itemMetadataMap[lastMeasuredIndex];\n offset = itemMetadata.offset + itemMetadata.size;\n }\n\n for (var i = lastMeasuredIndex + 1; i <= index; i++) {\n var size = itemSize(i);\n itemMetadataMap[i] = {\n offset: offset,\n size: size\n };\n offset += size;\n }\n\n if (itemType === 'column') {\n instanceProps.lastMeasuredColumnIndex = index;\n } else {\n instanceProps.lastMeasuredRowIndex = index;\n }\n }\n\n return itemMetadataMap[index];\n};\n\nvar findNearestItem = function findNearestItem(itemType, props, instanceProps, offset) {\n var itemMetadataMap, lastMeasuredIndex;\n\n if (itemType === 'column') {\n itemMetadataMap = instanceProps.columnMetadataMap;\n lastMeasuredIndex = instanceProps.lastMeasuredColumnIndex;\n } else {\n itemMetadataMap = instanceProps.rowMetadataMap;\n lastMeasuredIndex = instanceProps.lastMeasuredRowIndex;\n }\n\n var lastMeasuredItemOffset = lastMeasuredIndex > 0 ? itemMetadataMap[lastMeasuredIndex].offset : 0;\n\n if (lastMeasuredItemOffset >= offset) {\n // If we've already measured items within this range just use a binary search as it's faster.\n return findNearestItemBinarySearch(itemType, props, instanceProps, lastMeasuredIndex, 0, offset);\n } else {\n // If we haven't yet measured this high, fallback to an exponential search with an inner binary search.\n // The exponential search avoids pre-computing sizes for the full set of items as a binary search would.\n // The overall complexity for this approach is O(log n).\n return findNearestItemExponentialSearch(itemType, props, instanceProps, Math.max(0, lastMeasuredIndex), offset);\n }\n};\n\nvar findNearestItemBinarySearch = function findNearestItemBinarySearch(itemType, props, instanceProps, high, low, offset) {\n while (low <= high) {\n var middle = low + Math.floor((high - low) / 2);\n var currentOffset = getItemMetadata(itemType, props, middle, instanceProps).offset;\n\n if (currentOffset === offset) {\n return middle;\n } else if (currentOffset < offset) {\n low = middle + 1;\n } else if (currentOffset > offset) {\n high = middle - 1;\n }\n }\n\n if (low > 0) {\n return low - 1;\n } else {\n return 0;\n }\n};\n\nvar findNearestItemExponentialSearch = function findNearestItemExponentialSearch(itemType, props, instanceProps, index, offset) {\n var itemCount = itemType === 'column' ? props.columnCount : props.rowCount;\n var interval = 1;\n\n while (index < itemCount && getItemMetadata(itemType, props, index, instanceProps).offset < offset) {\n index += interval;\n interval *= 2;\n }\n\n return findNearestItemBinarySearch(itemType, props, instanceProps, Math.min(index, itemCount - 1), Math.floor(index / 2), offset);\n};\n\nvar getOffsetForIndexAndAlignment = function getOffsetForIndexAndAlignment(itemType, props, index, align, scrollOffset, instanceProps, scrollbarSize) {\n var size = itemType === 'column' ? props.width : props.height;\n var itemMetadata = getItemMetadata(itemType, props, index, instanceProps); // Get estimated total size after ItemMetadata is computed,\n // To ensure it reflects actual measurements instead of just estimates.\n\n var estimatedTotalSize = itemType === 'column' ? getEstimatedTotalWidth(props, instanceProps) : getEstimatedTotalHeight(props, instanceProps);\n var maxOffset = Math.max(0, Math.min(estimatedTotalSize - size, itemMetadata.offset));\n var minOffset = Math.max(0, itemMetadata.offset - size + scrollbarSize + itemMetadata.size);\n\n if (align === 'smart') {\n if (scrollOffset >= minOffset - size && scrollOffset <= maxOffset + size) {\n align = 'auto';\n } else {\n align = 'center';\n }\n }\n\n switch (align) {\n case 'start':\n return maxOffset;\n\n case 'end':\n return minOffset;\n\n case 'center':\n return Math.round(minOffset + (maxOffset - minOffset) / 2);\n\n case 'auto':\n default:\n if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n return scrollOffset;\n } else if (minOffset > maxOffset) {\n // Because we only take into account the scrollbar size when calculating minOffset\n // this value can be larger than maxOffset when at the end of the list\n return minOffset;\n } else if (scrollOffset < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n\n }\n};\n\nvar VariableSizeGrid = /*#__PURE__*/createGridComponent({\n getColumnOffset: function getColumnOffset(props, index, instanceProps) {\n return getItemMetadata('column', props, index, instanceProps).offset;\n },\n getColumnStartIndexForOffset: function getColumnStartIndexForOffset(props, scrollLeft, instanceProps) {\n return findNearestItem('column', props, instanceProps, scrollLeft);\n },\n getColumnStopIndexForStartIndex: function getColumnStopIndexForStartIndex(props, startIndex, scrollLeft, instanceProps) {\n var columnCount = props.columnCount,\n width = props.width;\n var itemMetadata = getItemMetadata('column', props, startIndex, instanceProps);\n var maxOffset = scrollLeft + width;\n var offset = itemMetadata.offset + itemMetadata.size;\n var stopIndex = startIndex;\n\n while (stopIndex < columnCount - 1 && offset < maxOffset) {\n stopIndex++;\n offset += getItemMetadata('column', props, stopIndex, instanceProps).size;\n }\n\n return stopIndex;\n },\n getColumnWidth: function getColumnWidth(props, index, instanceProps) {\n return instanceProps.columnMetadataMap[index].size;\n },\n getEstimatedTotalHeight: getEstimatedTotalHeight,\n getEstimatedTotalWidth: getEstimatedTotalWidth,\n getOffsetForColumnAndAlignment: function getOffsetForColumnAndAlignment(props, index, align, scrollOffset, instanceProps, scrollbarSize) {\n return getOffsetForIndexAndAlignment('column', props, index, align, scrollOffset, instanceProps, scrollbarSize);\n },\n getOffsetForRowAndAlignment: function getOffsetForRowAndAlignment(props, index, align, scrollOffset, instanceProps, scrollbarSize) {\n return getOffsetForIndexAndAlignment('row', props, index, align, scrollOffset, instanceProps, scrollbarSize);\n },\n getRowOffset: function getRowOffset(props, index, instanceProps) {\n return getItemMetadata('row', props, index, instanceProps).offset;\n },\n getRowHeight: function getRowHeight(props, index, instanceProps) {\n return instanceProps.rowMetadataMap[index].size;\n },\n getRowStartIndexForOffset: function getRowStartIndexForOffset(props, scrollTop, instanceProps) {\n return findNearestItem('row', props, instanceProps, scrollTop);\n },\n getRowStopIndexForStartIndex: function getRowStopIndexForStartIndex(props, startIndex, scrollTop, instanceProps) {\n var rowCount = props.rowCount,\n height = props.height;\n var itemMetadata = getItemMetadata('row', props, startIndex, instanceProps);\n var maxOffset = scrollTop + height;\n var offset = itemMetadata.offset + itemMetadata.size;\n var stopIndex = startIndex;\n\n while (stopIndex < rowCount - 1 && offset < maxOffset) {\n stopIndex++;\n offset += getItemMetadata('row', props, stopIndex, instanceProps).size;\n }\n\n return stopIndex;\n },\n initInstanceProps: function initInstanceProps(props, instance) {\n var _ref5 = props,\n estimatedColumnWidth = _ref5.estimatedColumnWidth,\n estimatedRowHeight = _ref5.estimatedRowHeight;\n var instanceProps = {\n columnMetadataMap: {},\n estimatedColumnWidth: estimatedColumnWidth || DEFAULT_ESTIMATED_ITEM_SIZE,\n estimatedRowHeight: estimatedRowHeight || DEFAULT_ESTIMATED_ITEM_SIZE,\n lastMeasuredColumnIndex: -1,\n lastMeasuredRowIndex: -1,\n rowMetadataMap: {}\n };\n\n instance.resetAfterColumnIndex = function (columnIndex, shouldForceUpdate) {\n if (shouldForceUpdate === void 0) {\n shouldForceUpdate = true;\n }\n\n instance.resetAfterIndices({\n columnIndex: columnIndex,\n shouldForceUpdate: shouldForceUpdate\n });\n };\n\n instance.resetAfterRowIndex = function (rowIndex, shouldForceUpdate) {\n if (shouldForceUpdate === void 0) {\n shouldForceUpdate = true;\n }\n\n instance.resetAfterIndices({\n rowIndex: rowIndex,\n shouldForceUpdate: shouldForceUpdate\n });\n };\n\n instance.resetAfterIndices = function (_ref6) {\n var columnIndex = _ref6.columnIndex,\n rowIndex = _ref6.rowIndex,\n _ref6$shouldForceUpda = _ref6.shouldForceUpdate,\n shouldForceUpdate = _ref6$shouldForceUpda === void 0 ? true : _ref6$shouldForceUpda;\n\n if (typeof columnIndex === 'number') {\n instanceProps.lastMeasuredColumnIndex = Math.min(instanceProps.lastMeasuredColumnIndex, columnIndex - 1);\n }\n\n if (typeof rowIndex === 'number') {\n instanceProps.lastMeasuredRowIndex = Math.min(instanceProps.lastMeasuredRowIndex, rowIndex - 1);\n } // We could potentially optimize further by only evicting styles after this index,\n // But since styles are only cached while scrolling is in progress-\n // It seems an unnecessary optimization.\n // It's unlikely that resetAfterIndex() will be called while a user is scrolling.\n\n\n instance._getItemStyleCache(-1);\n\n if (shouldForceUpdate) {\n instance.forceUpdate();\n }\n };\n\n return instanceProps;\n },\n shouldResetStyleCacheOnItemSizeChange: false,\n validateProps: function validateProps(_ref7) {\n var columnWidth = _ref7.columnWidth,\n rowHeight = _ref7.rowHeight;\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof columnWidth !== 'function') {\n throw Error('An invalid \"columnWidth\" prop has been specified. ' + 'Value should be a function. ' + (\"\\\"\" + (columnWidth === null ? 'null' : typeof columnWidth) + \"\\\" was specified.\"));\n } else if (typeof rowHeight !== 'function') {\n throw Error('An invalid \"rowHeight\" prop has been specified. ' + 'Value should be a function. ' + (\"\\\"\" + (rowHeight === null ? 'null' : typeof rowHeight) + \"\\\" was specified.\"));\n }\n }\n }\n});\n\nvar IS_SCROLLING_DEBOUNCE_INTERVAL$1 = 150;\n\nvar defaultItemKey$1 = function defaultItemKey(index, data) {\n return index;\n}; // In DEV mode, this Set helps us only log a warning once per component instance.\n// This avoids spamming the console every time a render happens.\n\n\nvar devWarningsDirection = null;\nvar devWarningsTagName$1 = null;\n\nif (process.env.NODE_ENV !== 'production') {\n if (typeof window !== 'undefined' && typeof window.WeakSet !== 'undefined') {\n devWarningsDirection = /*#__PURE__*/new WeakSet();\n devWarningsTagName$1 = /*#__PURE__*/new WeakSet();\n }\n}\n\nfunction createListComponent(_ref) {\n var _class;\n\n var getItemOffset = _ref.getItemOffset,\n getEstimatedTotalSize = _ref.getEstimatedTotalSize,\n getItemSize = _ref.getItemSize,\n getOffsetForIndexAndAlignment = _ref.getOffsetForIndexAndAlignment,\n getStartIndexForOffset = _ref.getStartIndexForOffset,\n getStopIndexForStartIndex = _ref.getStopIndexForStartIndex,\n initInstanceProps = _ref.initInstanceProps,\n shouldResetStyleCacheOnItemSizeChange = _ref.shouldResetStyleCacheOnItemSizeChange,\n validateProps = _ref.validateProps;\n return _class = /*#__PURE__*/function (_PureComponent) {\n _inheritsLoose(List, _PureComponent);\n\n // Always use explicit constructor for React components.\n // It produces less code after transpilation. (#26)\n // eslint-disable-next-line no-useless-constructor\n function List(props) {\n var _this;\n\n _this = _PureComponent.call(this, props) || this;\n _this._instanceProps = initInstanceProps(_this.props, _assertThisInitialized(_this));\n _this._outerRef = void 0;\n _this._resetIsScrollingTimeoutId = null;\n _this.state = {\n instance: _assertThisInitialized(_this),\n isScrolling: false,\n scrollDirection: 'forward',\n scrollOffset: typeof _this.props.initialScrollOffset === 'number' ? _this.props.initialScrollOffset : 0,\n scrollUpdateWasRequested: false\n };\n _this._callOnItemsRendered = void 0;\n _this._callOnItemsRendered = memoizeOne(function (overscanStartIndex, overscanStopIndex, visibleStartIndex, visibleStopIndex) {\n return _this.props.onItemsRendered({\n overscanStartIndex: overscanStartIndex,\n overscanStopIndex: overscanStopIndex,\n visibleStartIndex: visibleStartIndex,\n visibleStopIndex: visibleStopIndex\n });\n });\n _this._callOnScroll = void 0;\n _this._callOnScroll = memoizeOne(function (scrollDirection, scrollOffset, scrollUpdateWasRequested) {\n return _this.props.onScroll({\n scrollDirection: scrollDirection,\n scrollOffset: scrollOffset,\n scrollUpdateWasRequested: scrollUpdateWasRequested\n });\n });\n _this._getItemStyle = void 0;\n\n _this._getItemStyle = function (index) {\n var _this$props = _this.props,\n direction = _this$props.direction,\n itemSize = _this$props.itemSize,\n layout = _this$props.layout;\n\n var itemStyleCache = _this._getItemStyleCache(shouldResetStyleCacheOnItemSizeChange && itemSize, shouldResetStyleCacheOnItemSizeChange && layout, shouldResetStyleCacheOnItemSizeChange && direction);\n\n var style;\n\n if (itemStyleCache.hasOwnProperty(index)) {\n style = itemStyleCache[index];\n } else {\n var _offset = getItemOffset(_this.props, index, _this._instanceProps);\n\n var size = getItemSize(_this.props, index, _this._instanceProps); // TODO Deprecate direction \"horizontal\"\n\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n var isRtl = direction === 'rtl';\n var offsetHorizontal = isHorizontal ? _offset : 0;\n itemStyleCache[index] = style = {\n position: 'absolute',\n left: isRtl ? undefined : offsetHorizontal,\n right: isRtl ? offsetHorizontal : undefined,\n top: !isHorizontal ? _offset : 0,\n height: !isHorizontal ? size : '100%',\n width: isHorizontal ? size : '100%'\n };\n }\n\n return style;\n };\n\n _this._getItemStyleCache = void 0;\n _this._getItemStyleCache = memoizeOne(function (_, __, ___) {\n return {};\n });\n\n _this._onScrollHorizontal = function (event) {\n var _event$currentTarget = event.currentTarget,\n clientWidth = _event$currentTarget.clientWidth,\n scrollLeft = _event$currentTarget.scrollLeft,\n scrollWidth = _event$currentTarget.scrollWidth;\n\n _this.setState(function (prevState) {\n if (prevState.scrollOffset === scrollLeft) {\n // Scroll position may have been updated by cDM/cDU,\n // In which case we don't need to trigger another render,\n // And we don't want to update state.isScrolling.\n return null;\n }\n\n var direction = _this.props.direction;\n var scrollOffset = scrollLeft;\n\n if (direction === 'rtl') {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // It's also easier for this component if we convert offsets to the same format as they would be in for ltr.\n // So the simplest solution is to determine which browser behavior we're dealing with, and convert based on it.\n switch (getRTLOffsetType()) {\n case 'negative':\n scrollOffset = -scrollLeft;\n break;\n\n case 'positive-descending':\n scrollOffset = scrollWidth - clientWidth - scrollLeft;\n break;\n }\n } // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n\n\n scrollOffset = Math.max(0, Math.min(scrollOffset, scrollWidth - clientWidth));\n return {\n isScrolling: true,\n scrollDirection: prevState.scrollOffset < scrollLeft ? 'forward' : 'backward',\n scrollOffset: scrollOffset,\n scrollUpdateWasRequested: false\n };\n }, _this._resetIsScrollingDebounced);\n };\n\n _this._onScrollVertical = function (event) {\n var _event$currentTarget2 = event.currentTarget,\n clientHeight = _event$currentTarget2.clientHeight,\n scrollHeight = _event$currentTarget2.scrollHeight,\n scrollTop = _event$currentTarget2.scrollTop;\n\n _this.setState(function (prevState) {\n if (prevState.scrollOffset === scrollTop) {\n // Scroll position may have been updated by cDM/cDU,\n // In which case we don't need to trigger another render,\n // And we don't want to update state.isScrolling.\n return null;\n } // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n\n\n var scrollOffset = Math.max(0, Math.min(scrollTop, scrollHeight - clientHeight));\n return {\n isScrolling: true,\n scrollDirection: prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n scrollOffset: scrollOffset,\n scrollUpdateWasRequested: false\n };\n }, _this._resetIsScrollingDebounced);\n };\n\n _this._outerRefSetter = function (ref) {\n var outerRef = _this.props.outerRef;\n _this._outerRef = ref;\n\n if (typeof outerRef === 'function') {\n outerRef(ref);\n } else if (outerRef != null && typeof outerRef === 'object' && outerRef.hasOwnProperty('current')) {\n outerRef.current = ref;\n }\n };\n\n _this._resetIsScrollingDebounced = function () {\n if (_this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(_this._resetIsScrollingTimeoutId);\n }\n\n _this._resetIsScrollingTimeoutId = requestTimeout(_this._resetIsScrolling, IS_SCROLLING_DEBOUNCE_INTERVAL$1);\n };\n\n _this._resetIsScrolling = function () {\n _this._resetIsScrollingTimeoutId = null;\n\n _this.setState({\n isScrolling: false\n }, function () {\n // Clear style cache after state update has been committed.\n // This way we don't break pure sCU for items that don't use isScrolling param.\n _this._getItemStyleCache(-1, null);\n });\n };\n\n return _this;\n }\n\n List.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {\n validateSharedProps$1(nextProps, prevState);\n validateProps(nextProps);\n return null;\n };\n\n var _proto = List.prototype;\n\n _proto.scrollTo = function scrollTo(scrollOffset) {\n scrollOffset = Math.max(0, scrollOffset);\n this.setState(function (prevState) {\n if (prevState.scrollOffset === scrollOffset) {\n return null;\n }\n\n return {\n scrollDirection: prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n scrollOffset: scrollOffset,\n scrollUpdateWasRequested: true\n };\n }, this._resetIsScrollingDebounced);\n };\n\n _proto.scrollToItem = function scrollToItem(index, align) {\n if (align === void 0) {\n align = 'auto';\n }\n\n var _this$props2 = this.props,\n itemCount = _this$props2.itemCount,\n layout = _this$props2.layout;\n var scrollOffset = this.state.scrollOffset;\n index = Math.max(0, Math.min(index, itemCount - 1)); // The scrollbar size should be considered when scrolling an item into view, to ensure it's fully visible.\n // But we only need to account for its size when it's actually visible.\n // This is an edge case for lists; normally they only scroll in the dominant direction.\n\n var scrollbarSize = 0;\n\n if (this._outerRef) {\n var outerRef = this._outerRef;\n\n if (layout === 'vertical') {\n scrollbarSize = outerRef.scrollWidth > outerRef.clientWidth ? getScrollbarSize() : 0;\n } else {\n scrollbarSize = outerRef.scrollHeight > outerRef.clientHeight ? getScrollbarSize() : 0;\n }\n }\n\n this.scrollTo(getOffsetForIndexAndAlignment(this.props, index, align, scrollOffset, this._instanceProps, scrollbarSize));\n };\n\n _proto.componentDidMount = function componentDidMount() {\n var _this$props3 = this.props,\n direction = _this$props3.direction,\n initialScrollOffset = _this$props3.initialScrollOffset,\n layout = _this$props3.layout;\n\n if (typeof initialScrollOffset === 'number' && this._outerRef != null) {\n var outerRef = this._outerRef; // TODO Deprecate direction \"horizontal\"\n\n if (direction === 'horizontal' || layout === 'horizontal') {\n outerRef.scrollLeft = initialScrollOffset;\n } else {\n outerRef.scrollTop = initialScrollOffset;\n }\n }\n\n this._callPropsCallbacks();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n var _this$props4 = this.props,\n direction = _this$props4.direction,\n layout = _this$props4.layout;\n var _this$state = this.state,\n scrollOffset = _this$state.scrollOffset,\n scrollUpdateWasRequested = _this$state.scrollUpdateWasRequested;\n\n if (scrollUpdateWasRequested && this._outerRef != null) {\n var outerRef = this._outerRef; // TODO Deprecate direction \"horizontal\"\n\n if (direction === 'horizontal' || layout === 'horizontal') {\n if (direction === 'rtl') {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // So we need to determine which browser behavior we're dealing with, and mimic it.\n switch (getRTLOffsetType()) {\n case 'negative':\n outerRef.scrollLeft = -scrollOffset;\n break;\n\n case 'positive-ascending':\n outerRef.scrollLeft = scrollOffset;\n break;\n\n default:\n var clientWidth = outerRef.clientWidth,\n scrollWidth = outerRef.scrollWidth;\n outerRef.scrollLeft = scrollWidth - clientWidth - scrollOffset;\n break;\n }\n } else {\n outerRef.scrollLeft = scrollOffset;\n }\n } else {\n outerRef.scrollTop = scrollOffset;\n }\n }\n\n this._callPropsCallbacks();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this._resetIsScrollingTimeoutId);\n }\n };\n\n _proto.render = function render() {\n var _this$props5 = this.props,\n children = _this$props5.children,\n className = _this$props5.className,\n direction = _this$props5.direction,\n height = _this$props5.height,\n innerRef = _this$props5.innerRef,\n innerElementType = _this$props5.innerElementType,\n innerTagName = _this$props5.innerTagName,\n itemCount = _this$props5.itemCount,\n itemData = _this$props5.itemData,\n _this$props5$itemKey = _this$props5.itemKey,\n itemKey = _this$props5$itemKey === void 0 ? defaultItemKey$1 : _this$props5$itemKey,\n layout = _this$props5.layout,\n outerElementType = _this$props5.outerElementType,\n outerTagName = _this$props5.outerTagName,\n style = _this$props5.style,\n useIsScrolling = _this$props5.useIsScrolling,\n width = _this$props5.width;\n var isScrolling = this.state.isScrolling; // TODO Deprecate direction \"horizontal\"\n\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n var onScroll = isHorizontal ? this._onScrollHorizontal : this._onScrollVertical;\n\n var _this$_getRangeToRend = this._getRangeToRender(),\n startIndex = _this$_getRangeToRend[0],\n stopIndex = _this$_getRangeToRend[1];\n\n var items = [];\n\n if (itemCount > 0) {\n for (var _index = startIndex; _index <= stopIndex; _index++) {\n items.push(createElement(children, {\n data: itemData,\n key: itemKey(_index, itemData),\n index: _index,\n isScrolling: useIsScrolling ? isScrolling : undefined,\n style: this._getItemStyle(_index)\n }));\n }\n } // Read this value AFTER items have been created,\n // So their actual sizes (if variable) are taken into consideration.\n\n\n var estimatedTotalSize = getEstimatedTotalSize(this.props, this._instanceProps);\n return createElement(outerElementType || outerTagName || 'div', {\n className: className,\n onScroll: onScroll,\n ref: this._outerRefSetter,\n style: _extends({\n position: 'relative',\n height: height,\n width: width,\n overflow: 'auto',\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform',\n direction: direction\n }, style)\n }, createElement(innerElementType || innerTagName || 'div', {\n children: items,\n ref: innerRef,\n style: {\n height: isHorizontal ? '100%' : estimatedTotalSize,\n pointerEvents: isScrolling ? 'none' : undefined,\n width: isHorizontal ? estimatedTotalSize : '100%'\n }\n }));\n };\n\n _proto._callPropsCallbacks = function _callPropsCallbacks() {\n if (typeof this.props.onItemsRendered === 'function') {\n var itemCount = this.props.itemCount;\n\n if (itemCount > 0) {\n var _this$_getRangeToRend2 = this._getRangeToRender(),\n _overscanStartIndex = _this$_getRangeToRend2[0],\n _overscanStopIndex = _this$_getRangeToRend2[1],\n _visibleStartIndex = _this$_getRangeToRend2[2],\n _visibleStopIndex = _this$_getRangeToRend2[3];\n\n this._callOnItemsRendered(_overscanStartIndex, _overscanStopIndex, _visibleStartIndex, _visibleStopIndex);\n }\n }\n\n if (typeof this.props.onScroll === 'function') {\n var _this$state2 = this.state,\n _scrollDirection = _this$state2.scrollDirection,\n _scrollOffset = _this$state2.scrollOffset,\n _scrollUpdateWasRequested = _this$state2.scrollUpdateWasRequested;\n\n this._callOnScroll(_scrollDirection, _scrollOffset, _scrollUpdateWasRequested);\n }\n } // Lazily create and cache item styles while scrolling,\n // So that pure component sCU will prevent re-renders.\n // We maintain this cache, and pass a style prop rather than index,\n // So that List can clear cached styles and force item re-render if necessary.\n ;\n\n _proto._getRangeToRender = function _getRangeToRender() {\n var _this$props6 = this.props,\n itemCount = _this$props6.itemCount,\n overscanCount = _this$props6.overscanCount;\n var _this$state3 = this.state,\n isScrolling = _this$state3.isScrolling,\n scrollDirection = _this$state3.scrollDirection,\n scrollOffset = _this$state3.scrollOffset;\n\n if (itemCount === 0) {\n return [0, 0, 0, 0];\n }\n\n var startIndex = getStartIndexForOffset(this.props, scrollOffset, this._instanceProps);\n var stopIndex = getStopIndexForStartIndex(this.props, startIndex, scrollOffset, this._instanceProps); // Overscan by one item in each direction so that tab/focus works.\n // If there isn't at least one extra item, tab loops back around.\n\n var overscanBackward = !isScrolling || scrollDirection === 'backward' ? Math.max(1, overscanCount) : 1;\n var overscanForward = !isScrolling || scrollDirection === 'forward' ? Math.max(1, overscanCount) : 1;\n return [Math.max(0, startIndex - overscanBackward), Math.max(0, Math.min(itemCount - 1, stopIndex + overscanForward)), startIndex, stopIndex];\n };\n\n return List;\n }(PureComponent), _class.defaultProps = {\n direction: 'ltr',\n itemData: undefined,\n layout: 'vertical',\n overscanCount: 2,\n useIsScrolling: false\n }, _class;\n} // NOTE: I considered further wrapping individual items with a pure ListItem component.\n// This would avoid ever calling the render function for the same index more than once,\n// But it would also add the overhead of a lot of components/fibers.\n// I assume people already do this (render function returning a class component),\n// So my doing it would just unnecessarily double the wrappers.\n\nvar validateSharedProps$1 = function validateSharedProps(_ref2, _ref3) {\n var children = _ref2.children,\n direction = _ref2.direction,\n height = _ref2.height,\n layout = _ref2.layout,\n innerTagName = _ref2.innerTagName,\n outerTagName = _ref2.outerTagName,\n width = _ref2.width;\n var instance = _ref3.instance;\n\n if (process.env.NODE_ENV !== 'production') {\n if (innerTagName != null || outerTagName != null) {\n if (devWarningsTagName$1 && !devWarningsTagName$1.has(instance)) {\n devWarningsTagName$1.add(instance);\n console.warn('The innerTagName and outerTagName props have been deprecated. ' + 'Please use the innerElementType and outerElementType props instead.');\n }\n } // TODO Deprecate direction \"horizontal\"\n\n\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n\n switch (direction) {\n case 'horizontal':\n case 'vertical':\n if (devWarningsDirection && !devWarningsDirection.has(instance)) {\n devWarningsDirection.add(instance);\n console.warn('The direction prop should be either \"ltr\" (default) or \"rtl\". ' + 'Please use the layout prop to specify \"vertical\" (default) or \"horizontal\" orientation.');\n }\n\n break;\n\n case 'ltr':\n case 'rtl':\n // Valid values\n break;\n\n default:\n throw Error('An invalid \"direction\" prop has been specified. ' + 'Value should be either \"ltr\" or \"rtl\". ' + (\"\\\"\" + direction + \"\\\" was specified.\"));\n }\n\n switch (layout) {\n case 'horizontal':\n case 'vertical':\n // Valid values\n break;\n\n default:\n throw Error('An invalid \"layout\" prop has been specified. ' + 'Value should be either \"horizontal\" or \"vertical\". ' + (\"\\\"\" + layout + \"\\\" was specified.\"));\n }\n\n if (children == null) {\n throw Error('An invalid \"children\" prop has been specified. ' + 'Value should be a React component. ' + (\"\\\"\" + (children === null ? 'null' : typeof children) + \"\\\" was specified.\"));\n }\n\n if (isHorizontal && typeof width !== 'number') {\n throw Error('An invalid \"width\" prop has been specified. ' + 'Horizontal lists must specify a number for width. ' + (\"\\\"\" + (width === null ? 'null' : typeof width) + \"\\\" was specified.\"));\n } else if (!isHorizontal && typeof height !== 'number') {\n throw Error('An invalid \"height\" prop has been specified. ' + 'Vertical lists must specify a number for height. ' + (\"\\\"\" + (height === null ? 'null' : typeof height) + \"\\\" was specified.\"));\n }\n }\n};\n\nvar DEFAULT_ESTIMATED_ITEM_SIZE$1 = 50;\n\nvar getItemMetadata$1 = function getItemMetadata(props, index, instanceProps) {\n var _ref = props,\n itemSize = _ref.itemSize;\n var itemMetadataMap = instanceProps.itemMetadataMap,\n lastMeasuredIndex = instanceProps.lastMeasuredIndex;\n\n if (index > lastMeasuredIndex) {\n var offset = 0;\n\n if (lastMeasuredIndex >= 0) {\n var itemMetadata = itemMetadataMap[lastMeasuredIndex];\n offset = itemMetadata.offset + itemMetadata.size;\n }\n\n for (var i = lastMeasuredIndex + 1; i <= index; i++) {\n var size = itemSize(i);\n itemMetadataMap[i] = {\n offset: offset,\n size: size\n };\n offset += size;\n }\n\n instanceProps.lastMeasuredIndex = index;\n }\n\n return itemMetadataMap[index];\n};\n\nvar findNearestItem$1 = function findNearestItem(props, instanceProps, offset) {\n var itemMetadataMap = instanceProps.itemMetadataMap,\n lastMeasuredIndex = instanceProps.lastMeasuredIndex;\n var lastMeasuredItemOffset = lastMeasuredIndex > 0 ? itemMetadataMap[lastMeasuredIndex].offset : 0;\n\n if (lastMeasuredItemOffset >= offset) {\n // If we've already measured items within this range just use a binary search as it's faster.\n return findNearestItemBinarySearch$1(props, instanceProps, lastMeasuredIndex, 0, offset);\n } else {\n // If we haven't yet measured this high, fallback to an exponential search with an inner binary search.\n // The exponential search avoids pre-computing sizes for the full set of items as a binary search would.\n // The overall complexity for this approach is O(log n).\n return findNearestItemExponentialSearch$1(props, instanceProps, Math.max(0, lastMeasuredIndex), offset);\n }\n};\n\nvar findNearestItemBinarySearch$1 = function findNearestItemBinarySearch(props, instanceProps, high, low, offset) {\n while (low <= high) {\n var middle = low + Math.floor((high - low) / 2);\n var currentOffset = getItemMetadata$1(props, middle, instanceProps).offset;\n\n if (currentOffset === offset) {\n return middle;\n } else if (currentOffset < offset) {\n low = middle + 1;\n } else if (currentOffset > offset) {\n high = middle - 1;\n }\n }\n\n if (low > 0) {\n return low - 1;\n } else {\n return 0;\n }\n};\n\nvar findNearestItemExponentialSearch$1 = function findNearestItemExponentialSearch(props, instanceProps, index, offset) {\n var itemCount = props.itemCount;\n var interval = 1;\n\n while (index < itemCount && getItemMetadata$1(props, index, instanceProps).offset < offset) {\n index += interval;\n interval *= 2;\n }\n\n return findNearestItemBinarySearch$1(props, instanceProps, Math.min(index, itemCount - 1), Math.floor(index / 2), offset);\n};\n\nvar getEstimatedTotalSize = function getEstimatedTotalSize(_ref2, _ref3) {\n var itemCount = _ref2.itemCount;\n var itemMetadataMap = _ref3.itemMetadataMap,\n estimatedItemSize = _ref3.estimatedItemSize,\n lastMeasuredIndex = _ref3.lastMeasuredIndex;\n var totalSizeOfMeasuredItems = 0; // Edge case check for when the number of items decreases while a scroll is in progress.\n // https://github.com/bvaughn/react-window/pull/138\n\n if (lastMeasuredIndex >= itemCount) {\n lastMeasuredIndex = itemCount - 1;\n }\n\n if (lastMeasuredIndex >= 0) {\n var itemMetadata = itemMetadataMap[lastMeasuredIndex];\n totalSizeOfMeasuredItems = itemMetadata.offset + itemMetadata.size;\n }\n\n var numUnmeasuredItems = itemCount - lastMeasuredIndex - 1;\n var totalSizeOfUnmeasuredItems = numUnmeasuredItems * estimatedItemSize;\n return totalSizeOfMeasuredItems + totalSizeOfUnmeasuredItems;\n};\n\nvar VariableSizeList = /*#__PURE__*/createListComponent({\n getItemOffset: function getItemOffset(props, index, instanceProps) {\n return getItemMetadata$1(props, index, instanceProps).offset;\n },\n getItemSize: function getItemSize(props, index, instanceProps) {\n return instanceProps.itemMetadataMap[index].size;\n },\n getEstimatedTotalSize: getEstimatedTotalSize,\n getOffsetForIndexAndAlignment: function getOffsetForIndexAndAlignment(props, index, align, scrollOffset, instanceProps, scrollbarSize) {\n var direction = props.direction,\n height = props.height,\n layout = props.layout,\n width = props.width; // TODO Deprecate direction \"horizontal\"\n\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n var size = isHorizontal ? width : height;\n var itemMetadata = getItemMetadata$1(props, index, instanceProps); // Get estimated total size after ItemMetadata is computed,\n // To ensure it reflects actual measurements instead of just estimates.\n\n var estimatedTotalSize = getEstimatedTotalSize(props, instanceProps);\n var maxOffset = Math.max(0, Math.min(estimatedTotalSize - size, itemMetadata.offset));\n var minOffset = Math.max(0, itemMetadata.offset - size + itemMetadata.size + scrollbarSize);\n\n if (align === 'smart') {\n if (scrollOffset >= minOffset - size && scrollOffset <= maxOffset + size) {\n align = 'auto';\n } else {\n align = 'center';\n }\n }\n\n switch (align) {\n case 'start':\n return maxOffset;\n\n case 'end':\n return minOffset;\n\n case 'center':\n return Math.round(minOffset + (maxOffset - minOffset) / 2);\n\n case 'auto':\n default:\n if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n return scrollOffset;\n } else if (scrollOffset < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n\n }\n },\n getStartIndexForOffset: function getStartIndexForOffset(props, offset, instanceProps) {\n return findNearestItem$1(props, instanceProps, offset);\n },\n getStopIndexForStartIndex: function getStopIndexForStartIndex(props, startIndex, scrollOffset, instanceProps) {\n var direction = props.direction,\n height = props.height,\n itemCount = props.itemCount,\n layout = props.layout,\n width = props.width; // TODO Deprecate direction \"horizontal\"\n\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n var size = isHorizontal ? width : height;\n var itemMetadata = getItemMetadata$1(props, startIndex, instanceProps);\n var maxOffset = scrollOffset + size;\n var offset = itemMetadata.offset + itemMetadata.size;\n var stopIndex = startIndex;\n\n while (stopIndex < itemCount - 1 && offset < maxOffset) {\n stopIndex++;\n offset += getItemMetadata$1(props, stopIndex, instanceProps).size;\n }\n\n return stopIndex;\n },\n initInstanceProps: function initInstanceProps(props, instance) {\n var _ref4 = props,\n estimatedItemSize = _ref4.estimatedItemSize;\n var instanceProps = {\n itemMetadataMap: {},\n estimatedItemSize: estimatedItemSize || DEFAULT_ESTIMATED_ITEM_SIZE$1,\n lastMeasuredIndex: -1\n };\n\n instance.resetAfterIndex = function (index, shouldForceUpdate) {\n if (shouldForceUpdate === void 0) {\n shouldForceUpdate = true;\n }\n\n instanceProps.lastMeasuredIndex = Math.min(instanceProps.lastMeasuredIndex, index - 1); // We could potentially optimize further by only evicting styles after this index,\n // But since styles are only cached while scrolling is in progress-\n // It seems an unnecessary optimization.\n // It's unlikely that resetAfterIndex() will be called while a user is scrolling.\n\n instance._getItemStyleCache(-1);\n\n if (shouldForceUpdate) {\n instance.forceUpdate();\n }\n };\n\n return instanceProps;\n },\n shouldResetStyleCacheOnItemSizeChange: false,\n validateProps: function validateProps(_ref5) {\n var itemSize = _ref5.itemSize;\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof itemSize !== 'function') {\n throw Error('An invalid \"itemSize\" prop has been specified. ' + 'Value should be a function. ' + (\"\\\"\" + (itemSize === null ? 'null' : typeof itemSize) + \"\\\" was specified.\"));\n }\n }\n }\n});\n\nvar FixedSizeGrid = /*#__PURE__*/createGridComponent({\n getColumnOffset: function getColumnOffset(_ref, index) {\n var columnWidth = _ref.columnWidth;\n return index * columnWidth;\n },\n getColumnWidth: function getColumnWidth(_ref2, index) {\n var columnWidth = _ref2.columnWidth;\n return columnWidth;\n },\n getRowOffset: function getRowOffset(_ref3, index) {\n var rowHeight = _ref3.rowHeight;\n return index * rowHeight;\n },\n getRowHeight: function getRowHeight(_ref4, index) {\n var rowHeight = _ref4.rowHeight;\n return rowHeight;\n },\n getEstimatedTotalHeight: function getEstimatedTotalHeight(_ref5) {\n var rowCount = _ref5.rowCount,\n rowHeight = _ref5.rowHeight;\n return rowHeight * rowCount;\n },\n getEstimatedTotalWidth: function getEstimatedTotalWidth(_ref6) {\n var columnCount = _ref6.columnCount,\n columnWidth = _ref6.columnWidth;\n return columnWidth * columnCount;\n },\n getOffsetForColumnAndAlignment: function getOffsetForColumnAndAlignment(_ref7, columnIndex, align, scrollLeft, instanceProps, scrollbarSize) {\n var columnCount = _ref7.columnCount,\n columnWidth = _ref7.columnWidth,\n width = _ref7.width;\n var lastColumnOffset = Math.max(0, columnCount * columnWidth - width);\n var maxOffset = Math.min(lastColumnOffset, columnIndex * columnWidth);\n var minOffset = Math.max(0, columnIndex * columnWidth - width + scrollbarSize + columnWidth);\n\n if (align === 'smart') {\n if (scrollLeft >= minOffset - width && scrollLeft <= maxOffset + width) {\n align = 'auto';\n } else {\n align = 'center';\n }\n }\n\n switch (align) {\n case 'start':\n return maxOffset;\n\n case 'end':\n return minOffset;\n\n case 'center':\n // \"Centered\" offset is usually the average of the min and max.\n // But near the edges of the list, this doesn't hold true.\n var middleOffset = Math.round(minOffset + (maxOffset - minOffset) / 2);\n\n if (middleOffset < Math.ceil(width / 2)) {\n return 0; // near the beginning\n } else if (middleOffset > lastColumnOffset + Math.floor(width / 2)) {\n return lastColumnOffset; // near the end\n } else {\n return middleOffset;\n }\n\n case 'auto':\n default:\n if (scrollLeft >= minOffset && scrollLeft <= maxOffset) {\n return scrollLeft;\n } else if (minOffset > maxOffset) {\n // Because we only take into account the scrollbar size when calculating minOffset\n // this value can be larger than maxOffset when at the end of the list\n return minOffset;\n } else if (scrollLeft < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n\n }\n },\n getOffsetForRowAndAlignment: function getOffsetForRowAndAlignment(_ref8, rowIndex, align, scrollTop, instanceProps, scrollbarSize) {\n var rowHeight = _ref8.rowHeight,\n height = _ref8.height,\n rowCount = _ref8.rowCount;\n var lastRowOffset = Math.max(0, rowCount * rowHeight - height);\n var maxOffset = Math.min(lastRowOffset, rowIndex * rowHeight);\n var minOffset = Math.max(0, rowIndex * rowHeight - height + scrollbarSize + rowHeight);\n\n if (align === 'smart') {\n if (scrollTop >= minOffset - height && scrollTop <= maxOffset + height) {\n align = 'auto';\n } else {\n align = 'center';\n }\n }\n\n switch (align) {\n case 'start':\n return maxOffset;\n\n case 'end':\n return minOffset;\n\n case 'center':\n // \"Centered\" offset is usually the average of the min and max.\n // But near the edges of the list, this doesn't hold true.\n var middleOffset = Math.round(minOffset + (maxOffset - minOffset) / 2);\n\n if (middleOffset < Math.ceil(height / 2)) {\n return 0; // near the beginning\n } else if (middleOffset > lastRowOffset + Math.floor(height / 2)) {\n return lastRowOffset; // near the end\n } else {\n return middleOffset;\n }\n\n case 'auto':\n default:\n if (scrollTop >= minOffset && scrollTop <= maxOffset) {\n return scrollTop;\n } else if (minOffset > maxOffset) {\n // Because we only take into account the scrollbar size when calculating minOffset\n // this value can be larger than maxOffset when at the end of the list\n return minOffset;\n } else if (scrollTop < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n\n }\n },\n getColumnStartIndexForOffset: function getColumnStartIndexForOffset(_ref9, scrollLeft) {\n var columnWidth = _ref9.columnWidth,\n columnCount = _ref9.columnCount;\n return Math.max(0, Math.min(columnCount - 1, Math.floor(scrollLeft / columnWidth)));\n },\n getColumnStopIndexForStartIndex: function getColumnStopIndexForStartIndex(_ref10, startIndex, scrollLeft) {\n var columnWidth = _ref10.columnWidth,\n columnCount = _ref10.columnCount,\n width = _ref10.width;\n var left = startIndex * columnWidth;\n var numVisibleColumns = Math.ceil((width + scrollLeft - left) / columnWidth);\n return Math.max(0, Math.min(columnCount - 1, startIndex + numVisibleColumns - 1 // -1 is because stop index is inclusive\n ));\n },\n getRowStartIndexForOffset: function getRowStartIndexForOffset(_ref11, scrollTop) {\n var rowHeight = _ref11.rowHeight,\n rowCount = _ref11.rowCount;\n return Math.max(0, Math.min(rowCount - 1, Math.floor(scrollTop / rowHeight)));\n },\n getRowStopIndexForStartIndex: function getRowStopIndexForStartIndex(_ref12, startIndex, scrollTop) {\n var rowHeight = _ref12.rowHeight,\n rowCount = _ref12.rowCount,\n height = _ref12.height;\n var top = startIndex * rowHeight;\n var numVisibleRows = Math.ceil((height + scrollTop - top) / rowHeight);\n return Math.max(0, Math.min(rowCount - 1, startIndex + numVisibleRows - 1 // -1 is because stop index is inclusive\n ));\n },\n initInstanceProps: function initInstanceProps(props) {// Noop\n },\n shouldResetStyleCacheOnItemSizeChange: true,\n validateProps: function validateProps(_ref13) {\n var columnWidth = _ref13.columnWidth,\n rowHeight = _ref13.rowHeight;\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof columnWidth !== 'number') {\n throw Error('An invalid \"columnWidth\" prop has been specified. ' + 'Value should be a number. ' + (\"\\\"\" + (columnWidth === null ? 'null' : typeof columnWidth) + \"\\\" was specified.\"));\n }\n\n if (typeof rowHeight !== 'number') {\n throw Error('An invalid \"rowHeight\" prop has been specified. ' + 'Value should be a number. ' + (\"\\\"\" + (rowHeight === null ? 'null' : typeof rowHeight) + \"\\\" was specified.\"));\n }\n }\n }\n});\n\nvar FixedSizeList = /*#__PURE__*/createListComponent({\n getItemOffset: function getItemOffset(_ref, index) {\n var itemSize = _ref.itemSize;\n return index * itemSize;\n },\n getItemSize: function getItemSize(_ref2, index) {\n var itemSize = _ref2.itemSize;\n return itemSize;\n },\n getEstimatedTotalSize: function getEstimatedTotalSize(_ref3) {\n var itemCount = _ref3.itemCount,\n itemSize = _ref3.itemSize;\n return itemSize * itemCount;\n },\n getOffsetForIndexAndAlignment: function getOffsetForIndexAndAlignment(_ref4, index, align, scrollOffset, instanceProps, scrollbarSize) {\n var direction = _ref4.direction,\n height = _ref4.height,\n itemCount = _ref4.itemCount,\n itemSize = _ref4.itemSize,\n layout = _ref4.layout,\n width = _ref4.width;\n // TODO Deprecate direction \"horizontal\"\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n var size = isHorizontal ? width : height;\n var lastItemOffset = Math.max(0, itemCount * itemSize - size);\n var maxOffset = Math.min(lastItemOffset, index * itemSize);\n var minOffset = Math.max(0, index * itemSize - size + itemSize + scrollbarSize);\n\n if (align === 'smart') {\n if (scrollOffset >= minOffset - size && scrollOffset <= maxOffset + size) {\n align = 'auto';\n } else {\n align = 'center';\n }\n }\n\n switch (align) {\n case 'start':\n return maxOffset;\n\n case 'end':\n return minOffset;\n\n case 'center':\n {\n // \"Centered\" offset is usually the average of the min and max.\n // But near the edges of the list, this doesn't hold true.\n var middleOffset = Math.round(minOffset + (maxOffset - minOffset) / 2);\n\n if (middleOffset < Math.ceil(size / 2)) {\n return 0; // near the beginning\n } else if (middleOffset > lastItemOffset + Math.floor(size / 2)) {\n return lastItemOffset; // near the end\n } else {\n return middleOffset;\n }\n }\n\n case 'auto':\n default:\n if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n return scrollOffset;\n } else if (scrollOffset < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n\n }\n },\n getStartIndexForOffset: function getStartIndexForOffset(_ref5, offset) {\n var itemCount = _ref5.itemCount,\n itemSize = _ref5.itemSize;\n return Math.max(0, Math.min(itemCount - 1, Math.floor(offset / itemSize)));\n },\n getStopIndexForStartIndex: function getStopIndexForStartIndex(_ref6, startIndex, scrollOffset) {\n var direction = _ref6.direction,\n height = _ref6.height,\n itemCount = _ref6.itemCount,\n itemSize = _ref6.itemSize,\n layout = _ref6.layout,\n width = _ref6.width;\n // TODO Deprecate direction \"horizontal\"\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n var offset = startIndex * itemSize;\n var size = isHorizontal ? width : height;\n var numVisibleItems = Math.ceil((size + scrollOffset - offset) / itemSize);\n return Math.max(0, Math.min(itemCount - 1, startIndex + numVisibleItems - 1 // -1 is because stop index is inclusive\n ));\n },\n initInstanceProps: function initInstanceProps(props) {// Noop\n },\n shouldResetStyleCacheOnItemSizeChange: true,\n validateProps: function validateProps(_ref7) {\n var itemSize = _ref7.itemSize;\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof itemSize !== 'number') {\n throw Error('An invalid \"itemSize\" prop has been specified. ' + 'Value should be a number. ' + (\"\\\"\" + (itemSize === null ? 'null' : typeof itemSize) + \"\\\" was specified.\"));\n }\n }\n }\n});\n\n// Pulled from react-compat\n// https://github.com/developit/preact-compat/blob/7c5de00e7c85e2ffd011bf3af02899b63f699d3a/src/index.js#L349\nfunction shallowDiffers(prev, next) {\n for (var attribute in prev) {\n if (!(attribute in next)) {\n return true;\n }\n }\n\n for (var _attribute in next) {\n if (prev[_attribute] !== next[_attribute]) {\n return true;\n }\n }\n\n return false;\n}\n\nvar _excluded = [\"style\"],\n _excluded2 = [\"style\"];\n// It knows to compare individual style props and ignore the wrapper object.\n// See https://reactjs.org/docs/react-api.html#reactmemo\n\nfunction areEqual(prevProps, nextProps) {\n var prevStyle = prevProps.style,\n prevRest = _objectWithoutPropertiesLoose(prevProps, _excluded);\n\n var nextStyle = nextProps.style,\n nextRest = _objectWithoutPropertiesLoose(nextProps, _excluded2);\n\n return !shallowDiffers(prevStyle, nextStyle) && !shallowDiffers(prevRest, nextRest);\n}\n\n// It knows to compare individual style props and ignore the wrapper object.\n// See https://reactjs.org/docs/react-component.html#shouldcomponentupdate\n\nfunction shouldComponentUpdate(nextProps, nextState) {\n return !areEqual(this.props, nextProps) || shallowDiffers(this.state, nextState);\n}\n\nexport { FixedSizeGrid, FixedSizeList, VariableSizeGrid, VariableSizeList, areEqual, shouldComponentUpdate };\n//# sourceMappingURL=index.esm.js.map\n","/** @license React v17.0.2\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';require(\"object-assign\");var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; };\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n defineProperty(generator, \"_invoke\", { value: makeInvokeMethod(innerFn, self, context) });\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n defineProperty(Gp, \"constructor\", { value: GeneratorFunctionPrototype, configurable: true });\n defineProperty(\n GeneratorFunctionPrototype,\n \"constructor\",\n { value: GeneratorFunction, configurable: true }\n );\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n defineProperty(this, \"_invoke\", { value: enqueue });\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(val) {\n var object = Object(val);\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = global || self, factory(global.rudderanalytics = {}));\n}(this, (function (exports) { 'use strict';\n\n function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\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 Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n }\n\n function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n }\n\n function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n }\n\n function _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n }\n\n function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n }\n\n function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n }\n\n function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n }\n\n function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n\n function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\n function createCommonjsModule(fn, module) {\n \treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n }\n\n function getCjsExportFromNamespace (n) {\n \treturn n && n['default'] || n;\n }\n\n var componentEmitter = createCommonjsModule(function (module) {\n /**\n * Expose `Emitter`.\n */\n {\n module.exports = Emitter;\n }\n /**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\n\n function Emitter(obj) {\n if (obj) return mixin(obj);\n }\n /**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\n function mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n\n return obj;\n }\n /**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\n\n Emitter.prototype.on = Emitter.prototype.addEventListener = function (event, fn) {\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || []).push(fn);\n return this;\n };\n /**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\n\n Emitter.prototype.once = function (event, fn) {\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n };\n /**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\n\n Emitter.prototype.off = Emitter.prototype.removeListener = Emitter.prototype.removeAllListeners = Emitter.prototype.removeEventListener = function (event, fn) {\n this._callbacks = this._callbacks || {}; // all\n\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n } // specific event\n\n\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this; // remove all handlers\n\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n } // remove specific handler\n\n\n var cb;\n\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n } // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n\n\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n };\n /**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\n\n Emitter.prototype.emit = function (event) {\n this._callbacks = this._callbacks || {};\n var args = new Array(arguments.length - 1),\n callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n };\n /**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\n\n Emitter.prototype.listeners = function (event) {\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n };\n /**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\n\n Emitter.prototype.hasListeners = function (event) {\n return !!this.listeners(event).length;\n };\n });\n\n var after_1 = after;\n\n function after(count, callback, err_cb) {\n var bail = false;\n err_cb = err_cb || noop;\n proxy.count = count;\n return count === 0 ? callback() : proxy;\n\n function proxy(err, result) {\n if (proxy.count <= 0) {\n throw new Error('after called too many times');\n }\n\n --proxy.count; // after first error, rest are passed to err_cb\n\n if (err) {\n bail = true;\n callback(err); // future error callbacks will go to error handler\n\n callback = err_cb;\n } else if (proxy.count === 0 && !bail) {\n callback(null, result);\n }\n }\n }\n\n function noop() {}\n\n var trim_1 = createCommonjsModule(function (module, exports) {\n exports = module.exports = trim;\n\n function trim(str) {\n if (str.trim) return str.trim();\n return exports.right(exports.left(str));\n }\n\n exports.left = function (str) {\n if (str.trimLeft) return str.trimLeft();\n return str.replace(/^\\s\\s*/, '');\n };\n\n exports.right = function (str) {\n if (str.trimRight) return str.trimRight();\n var whitespace_pattern = /\\s/,\n i = str.length;\n\n while (whitespace_pattern.test(str.charAt(--i))) {\n }\n\n return str.slice(0, i + 1);\n };\n });\n var trim_2 = trim_1.left;\n var trim_3 = trim_1.right;\n\n /**\n * toString ref.\n */\n var toString = Object.prototype.toString;\n /**\n * Return the type of `val`.\n *\n * @param {Mixed} val\n * @return {String}\n * @api public\n */\n\n var componentType = function componentType(val) {\n switch (toString.call(val)) {\n case '[object Date]':\n return 'date';\n\n case '[object RegExp]':\n return 'regexp';\n\n case '[object Arguments]':\n return 'arguments';\n\n case '[object Array]':\n return 'array';\n\n case '[object Error]':\n return 'error';\n }\n\n if (val === null) return 'null';\n if (val === undefined) return 'undefined';\n if (val !== val) return 'nan';\n if (val && val.nodeType === 1) return 'element';\n val = val.valueOf ? val.valueOf() : Object.prototype.valueOf.apply(val);\n return _typeof(val);\n };\n\n /**\n * Module dependencies.\n */\n\n var pattern = /(\\w+)\\[(\\d+)\\]/;\n /**\n * Safely encode the given string\n * \n * @param {String} str\n * @return {String}\n * @api private\n */\n\n var encode = function encode(str) {\n try {\n return encodeURIComponent(str);\n } catch (e) {\n return str;\n }\n };\n /**\n * Safely decode the string\n * \n * @param {String} str\n * @return {String}\n * @api private\n */\n\n\n var decode = function decode(str) {\n try {\n return decodeURIComponent(str.replace(/\\+/g, ' '));\n } catch (e) {\n return str;\n }\n };\n /**\n * Parse the given query `str`.\n *\n * @param {String} str\n * @return {Object}\n * @api public\n */\n\n\n var parse = function parse(str) {\n if ('string' != typeof str) return {};\n str = trim_1(str);\n if ('' == str) return {};\n if ('?' == str.charAt(0)) str = str.slice(1);\n var obj = {};\n var pairs = str.split('&');\n\n for (var i = 0; i < pairs.length; i++) {\n var parts = pairs[i].split('=');\n var key = decode(parts[0]);\n var m;\n\n if (m = pattern.exec(key)) {\n obj[m[1]] = obj[m[1]] || [];\n obj[m[1]][m[2]] = decode(parts[1]);\n continue;\n }\n\n obj[parts[0]] = null == parts[1] ? '' : decode(parts[1]);\n }\n\n return obj;\n };\n /**\n * Stringify the given `obj`.\n *\n * @param {Object} obj\n * @return {String}\n * @api public\n */\n\n\n var stringify = function stringify(obj) {\n if (!obj) return '';\n var pairs = [];\n\n for (var key in obj) {\n var value = obj[key];\n\n if ('array' == componentType(value)) {\n for (var i = 0; i < value.length; ++i) {\n pairs.push(encode(key + '[' + i + ']') + '=' + encode(value[i]));\n }\n\n continue;\n }\n\n pairs.push(encode(key) + '=' + encode(obj[key]));\n }\n\n return pairs.join('&');\n };\n\n var componentQuerystring = {\n parse: parse,\n stringify: stringify\n };\n\n var lodash_merge = createCommonjsModule(function (module, exports) {\n /**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n /** Used to stand-in for `undefined` hash values. */\n\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n /** Used as references for various `Number` constants. */\n\n var MAX_SAFE_INTEGER = 9007199254740991;\n /** `Object#toString` result references. */\n\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n /** Used to detect host constructors (Safari). */\n\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n /** Used to detect unsigned integer values. */\n\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n /** Used to identify `toStringTag` values of typed arrays. */\n\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n /** Detect free variable `global` from Node.js. */\n\n var freeGlobal = _typeof(commonjsGlobal) == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n /** Detect free variable `self`. */\n\n var freeSelf = (typeof self === \"undefined\" ? \"undefined\" : _typeof(self)) == 'object' && self && self.Object === Object && self;\n /** Used as a reference to the global object. */\n\n var root = freeGlobal || freeSelf || Function('return this')();\n /** Detect free variable `exports`. */\n\n var freeExports = exports && !exports.nodeType && exports;\n /** Detect free variable `module`. */\n\n var freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n /** Detect the popular CommonJS extension `module.exports`. */\n\n var moduleExports = freeModule && freeModule.exports === freeExports;\n /** Detect free variable `process` from Node.js. */\n\n var freeProcess = moduleExports && freeGlobal.process;\n /** Used to access faster Node.js helpers. */\n\n var nodeUtil = function () {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n } // Legacy `process.binding('util')` for Node.js < 10.\n\n\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }();\n /* Node.js helper references. */\n\n\n var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0:\n return func.call(thisArg);\n\n case 1:\n return func.call(thisArg, args[0]);\n\n case 2:\n return func.call(thisArg, args[0], args[1]);\n\n case 3:\n return func.call(thisArg, args[0], args[1], args[2]);\n }\n\n return func.apply(thisArg, args);\n }\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n\n\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n\n return result;\n }\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n\n\n function baseUnary(func) {\n return function (value) {\n return func(value);\n };\n }\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n\n\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n\n\n function overArg(func, transform) {\n return function (arg) {\n return func(transform(arg));\n };\n }\n /** Used for built-in method references. */\n\n\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n /** Used to detect overreaching core-js shims. */\n\n var coreJsData = root['__core-js_shared__'];\n /** Used to resolve the decompiled source of functions. */\n\n var funcToString = funcProto.toString;\n /** Used to check objects for own properties. */\n\n var hasOwnProperty = objectProto.hasOwnProperty;\n /** Used to detect methods masquerading as native. */\n\n var maskSrcKey = function () {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? 'Symbol(src)_1.' + uid : '';\n }();\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\n\n var nativeObjectToString = objectProto.toString;\n /** Used to infer the `Object` constructor. */\n\n var objectCtorString = funcToString.call(Object);\n /** Used to detect if a method is native. */\n\n var reIsNative = RegExp('^' + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&').replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n /** Built-in value references. */\n\n var Buffer = moduleExports ? root.Buffer : undefined,\n _Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;\n\n var defineProperty = function () {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }();\n /* Built-in method references for those with the same name as other `lodash` methods. */\n\n\n var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeMax = Math.max,\n nativeNow = Date.now;\n /* Built-in method references that are verified to be native. */\n\n var Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n\n var baseCreate = function () {\n function object() {}\n\n return function (proto) {\n if (!isObject(proto)) {\n return {};\n }\n\n if (objectCreate) {\n return objectCreate(proto);\n }\n\n object.prototype = proto;\n var result = new object();\n object.prototype = undefined;\n return result;\n };\n }();\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\n\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n this.clear();\n\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n\n\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\n\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\n\n function hashGet(key) {\n var data = this.__data__;\n\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n }\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n\n\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = nativeCreate && value === undefined ? HASH_UNDEFINED : value;\n return this;\n } // Add methods to `Hash`.\n\n\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n this.clear();\n\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n\n\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\n\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n\n var lastIndex = data.length - 1;\n\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n\n --this.size;\n return true;\n }\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\n\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n return index < 0 ? undefined : data[index][1];\n }\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n\n\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n\n return this;\n } // Add methods to `ListCache`.\n\n\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n this.clear();\n\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n\n\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash(),\n 'map': new (Map || ListCache)(),\n 'string': new Hash()\n };\n }\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\n\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\n\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n\n\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n } // Add methods to `MapCache`.\n\n\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n\n\n function stackClear() {\n this.__data__ = new ListCache();\n this.size = 0;\n }\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\n\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n this.size = data.size;\n return result;\n }\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\n\n function stackGet(key) {\n return this.__data__.get(key);\n }\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\n function stackHas(key) {\n return this.__data__.has(key);\n }\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n\n\n function stackSet(key, value) {\n var data = this.__data__;\n\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n\n if (!Map || pairs.length < LARGE_ARRAY_SIZE - 1) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n\n data = this.__data__ = new MapCache(pairs);\n }\n\n data.set(key, value);\n this.size = data.size;\n return this;\n } // Add methods to `Stack`.\n\n\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && ( // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' || // Node.js 0.10 has enumerable non-index properties on buffers.\n isBuff && (key == 'offset' || key == 'parent') || // PhantomJS 2 has enumerable non-index properties on typed arrays.\n isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset') || // Skip index properties.\n isIndex(key, length)))) {\n result.push(key);\n }\n }\n\n return result;\n }\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n\n\n function assignMergeValue(object, key, value) {\n if (value !== undefined && !eq(object[key], value) || value === undefined && !(key in object)) {\n baseAssignValue(object, key, value);\n }\n }\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n\n\n function assignValue(object, key, value) {\n var objValue = object[key];\n\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || value === undefined && !(key in object)) {\n baseAssignValue(object, key, value);\n }\n }\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n\n\n function assocIndexOf(array, key) {\n var length = array.length;\n\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n\n return -1;\n }\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n\n\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n\n\n var baseFor = createBaseFor();\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n\n return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);\n }\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n\n\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n\n\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n\n\n function baseIsTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n\n\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n\n return result;\n }\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n\n\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n\n baseFor(source, function (srcValue, key) {\n stack || (stack = new Stack());\n\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n } else {\n var newValue = customizer ? customizer(safeGet(object, key), srcValue, key + '', object, source, stack) : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n\n\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n\n var newValue = customizer ? customizer(objValue, srcValue, key + '', object, source, stack) : undefined;\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n newValue = srcValue;\n\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n } else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n } else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n } else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n } else {\n newValue = [];\n }\n } else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n } else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n } else {\n isCommon = false;\n }\n }\n\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n\n assignMergeValue(object, key, newValue);\n }\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n\n\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n\n\n var baseSetToString = !defineProperty ? identity : function (func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n buffer.copy(result);\n return result;\n }\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n\n\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n\n\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n\n\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n array || (array = Array(length));\n\n while (++index < length) {\n array[index] = source[index];\n }\n\n return array;\n }\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n\n\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n var newValue = customizer ? customizer(object[key], source[key], key, object, source) : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n\n return object;\n }\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n\n\n function createAssigner(assigner) {\n return baseRest(function (object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n customizer = assigner.length > 3 && typeof customizer == 'function' ? (length--, customizer) : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n\n object = Object(object);\n\n while (++index < length) {\n var source = sources[index];\n\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n\n return object;\n });\n }\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n\n\n function createBaseFor(fromRight) {\n return function (object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n\n return object;\n };\n }\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n\n\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map;\n }\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n\n\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n\n\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n\n return result;\n }\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n\n\n function initCloneObject(object) {\n return typeof object.constructor == 'function' && !isPrototype(object) ? baseCreate(getPrototype(object)) : {};\n }\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n\n\n function isIndex(value, length) {\n var type = _typeof(value);\n\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length && (type == 'number' || type != 'symbol' && reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;\n }\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n\n\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n\n var type = _typeof(index);\n\n if (type == 'number' ? isArrayLike(object) && isIndex(index, object.length) : type == 'string' && index in object) {\n return eq(object[index], value);\n }\n\n return false;\n }\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n\n\n function isKeyable(value) {\n var type = _typeof(value);\n\n return type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean' ? value !== '__proto__' : value === null;\n }\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n\n\n function isMasked(func) {\n return !!maskSrcKey && maskSrcKey in func;\n }\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n\n\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = typeof Ctor == 'function' && Ctor.prototype || objectProto;\n return value === proto;\n }\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n\n\n function nativeKeysIn(object) {\n var result = [];\n\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n\n return result;\n }\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n\n\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n\n\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? func.length - 1 : start, 0);\n return function () {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n\n index = -1;\n var otherArgs = Array(start + 1);\n\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n\n\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n\n\n var setToString = shortOut(baseSetToString);\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n return function () {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n lastCalled = stamp;\n\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n\n return func.apply(undefined, arguments);\n };\n }\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n\n\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n\n try {\n return func + '';\n } catch (e) {}\n }\n\n return '';\n }\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n\n\n function eq(value, other) {\n return value === other || value !== value && other !== other;\n }\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n\n\n var isArguments = baseIsArguments(function () {\n return arguments;\n }()) ? baseIsArguments : function (value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');\n };\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n\n var isArray = Array.isArray;\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n\n\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n\n\n var isBuffer = nativeIsBuffer || stubFalse;\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n } // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n\n\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n\n\n function isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n\n\n function isObject(value) {\n var type = _typeof(value);\n\n return value != null && (type == 'object' || type == 'function');\n }\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n\n\n function isObjectLike(value) {\n return value != null && _typeof(value) == 'object';\n }\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n\n\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n\n var proto = getPrototype(value);\n\n if (proto === null) {\n return true;\n }\n\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString;\n }\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n\n\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n\n\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n\n\n var merge = createAssigner(function (object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n /**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\n\n function constant(value) {\n return function () {\n return value;\n };\n }\n /**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\n\n\n function identity(value) {\n return value;\n }\n /**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\n\n\n function stubFalse() {\n return false;\n }\n\n module.exports = merge;\n });\n\n var hop = Object.prototype.hasOwnProperty;\n var strCharAt = String.prototype.charAt;\n var toStr = Object.prototype.toString;\n /**\n * Returns the character at a given index.\n *\n * @param {string} str\n * @param {number} index\n * @return {string|undefined}\n */\n // TODO: Move to a library\n\n var charAt = function charAt(str, index) {\n return strCharAt.call(str, index);\n };\n /**\n * hasOwnProperty, wrapped as a function.\n *\n * @name has\n * @api private\n * @param {*} context\n * @param {string|number} prop\n * @return {boolean}\n */\n // TODO: Move to a library\n\n\n var has = function has(context, prop) {\n return hop.call(context, prop);\n };\n /**\n * Returns true if a value is a string, otherwise false.\n *\n * @name isString\n * @api private\n * @param {*} val\n * @return {boolean}\n */\n // TODO: Move to a library\n\n\n var isString = function isString(val) {\n return toStr.call(val) === '[object String]';\n };\n /**\n * Returns true if a value is array-like, otherwise false. Array-like means a\n * value is not null, undefined, or a function, and has a numeric `length`\n * property.\n *\n * @name isArrayLike\n * @api private\n * @param {*} val\n * @return {boolean}\n */\n // TODO: Move to a library\n\n\n var isArrayLike = function isArrayLike(val) {\n return val != null && typeof val !== 'function' && typeof val.length === 'number';\n };\n /**\n * indexKeys\n *\n * @name indexKeys\n * @api private\n * @param {} target\n * @param {Function} pred\n * @return {Array}\n */\n\n\n var indexKeys = function indexKeys(target, pred) {\n pred = pred || has;\n var results = [];\n\n for (var i = 0, len = target.length; i < len; i += 1) {\n if (pred(target, i)) {\n results.push(String(i));\n }\n }\n\n return results;\n };\n /**\n * Returns an array of an object's owned keys.\n *\n * @name objectKeys\n * @api private\n * @param {*} target\n * @param {Function} pred Predicate function used to include/exclude values from\n * the resulting array.\n * @return {Array}\n */\n\n\n var objectKeys = function objectKeys(target, pred) {\n pred = pred || has;\n var results = [];\n\n for (var key in target) {\n if (pred(target, key)) {\n results.push(String(key));\n }\n }\n\n return results;\n };\n /**\n * Creates an array composed of all keys on the input object. Ignores any non-enumerable properties.\n * More permissive than the native `Object.keys` function (non-objects will not throw errors).\n *\n * @name keys\n * @api public\n * @category Object\n * @param {Object} source The value to retrieve keys from.\n * @return {Array} An array containing all the input `source`'s keys.\n * @example\n * keys({ likes: 'avocado', hates: 'pineapple' });\n * //=> ['likes', 'pineapple'];\n *\n * // Ignores non-enumerable properties\n * var hasHiddenKey = { name: 'Tim' };\n * Object.defineProperty(hasHiddenKey, 'hidden', {\n * value: 'i am not enumerable!',\n * enumerable: false\n * })\n * keys(hasHiddenKey);\n * //=> ['name'];\n *\n * // Works on arrays\n * keys(['a', 'b', 'c']);\n * //=> ['0', '1', '2']\n *\n * // Skips unpopulated indices in sparse arrays\n * var arr = [1];\n * arr[4] = 4;\n * keys(arr);\n * //=> ['0', '4']\n */\n\n\n var keys = function keys(source) {\n if (source == null) {\n return [];\n } // IE6-8 compatibility (string)\n\n\n if (isString(source)) {\n return indexKeys(source, charAt);\n } // IE6-8 compatibility (arguments)\n\n\n if (isArrayLike(source)) {\n return indexKeys(source, has);\n }\n\n return objectKeys(source);\n };\n /*\n * Exports.\n */\n\n\n var keys_1 = keys;\n\n /*\n * Module dependencies.\n */\n\n\n var objToString = Object.prototype.toString;\n /**\n * Tests if a value is a number.\n *\n * @name isNumber\n * @api private\n * @param {*} val The value to test.\n * @return {boolean} Returns `true` if `val` is a number, otherwise `false`.\n */\n // TODO: Move to library\n\n var isNumber = function isNumber(val) {\n var type = _typeof(val);\n\n return type === 'number' || type === 'object' && objToString.call(val) === '[object Number]';\n };\n /**\n * Tests if a value is an array.\n *\n * @name isArray\n * @api private\n * @param {*} val The value to test.\n * @return {boolean} Returns `true` if the value is an array, otherwise `false`.\n */\n // TODO: Move to library\n\n\n var isArray = typeof Array.isArray === 'function' ? Array.isArray : function isArray(val) {\n return objToString.call(val) === '[object Array]';\n };\n /**\n * Tests if a value is array-like. Array-like means the value is not a function and has a numeric\n * `.length` property.\n *\n * @name isArrayLike\n * @api private\n * @param {*} val\n * @return {boolean}\n */\n // TODO: Move to library\n\n var isArrayLike$1 = function isArrayLike(val) {\n return val != null && (isArray(val) || val !== 'function' && isNumber(val.length));\n };\n /**\n * Internal implementation of `each`. Works on arrays and array-like data structures.\n *\n * @name arrayEach\n * @api private\n * @param {Function(value, key, collection)} iterator The function to invoke per iteration.\n * @param {Array} array The array(-like) structure to iterate over.\n * @return {undefined}\n */\n\n\n var arrayEach = function arrayEach(iterator, array) {\n for (var i = 0; i < array.length; i += 1) {\n // Break iteration early if `iterator` returns `false`\n if (iterator(array[i], i, array) === false) {\n break;\n }\n }\n };\n /**\n * Internal implementation of `each`. Works on objects.\n *\n * @name baseEach\n * @api private\n * @param {Function(value, key, collection)} iterator The function to invoke per iteration.\n * @param {Object} object The object to iterate over.\n * @return {undefined}\n */\n\n\n var baseEach = function baseEach(iterator, object) {\n var ks = keys_1(object);\n\n for (var i = 0; i < ks.length; i += 1) {\n // Break iteration early if `iterator` returns `false`\n if (iterator(object[ks[i]], ks[i], object) === false) {\n break;\n }\n }\n };\n /**\n * Iterate over an input collection, invoking an `iterator` function for each element in the\n * collection and passing to it three arguments: `(value, index, collection)`. The `iterator`\n * function can end iteration early by returning `false`.\n *\n * @name each\n * @api public\n * @param {Function(value, key, collection)} iterator The function to invoke per iteration.\n * @param {Array|Object|string} collection The collection to iterate over.\n * @return {undefined} Because `each` is run only for side effects, always returns `undefined`.\n * @example\n * var log = console.log.bind(console);\n *\n * each(log, ['a', 'b', 'c']);\n * //-> 'a', 0, ['a', 'b', 'c']\n * //-> 'b', 1, ['a', 'b', 'c']\n * //-> 'c', 2, ['a', 'b', 'c']\n * //=> undefined\n *\n * each(log, 'tim');\n * //-> 't', 2, 'tim'\n * //-> 'i', 1, 'tim'\n * //-> 'm', 0, 'tim'\n * //=> undefined\n *\n * // Note: Iteration order not guaranteed across environments\n * each(log, { name: 'tim', occupation: 'enchanter' });\n * //-> 'tim', 'name', { name: 'tim', occupation: 'enchanter' }\n * //-> 'enchanter', 'occupation', { name: 'tim', occupation: 'enchanter' }\n * //=> undefined\n */\n\n\n var each = function each(iterator, collection) {\n return (isArrayLike$1(collection) ? arrayEach : baseEach).call(this, iterator, collection);\n };\n /*\n * Exports.\n */\n\n\n var each_1 = each;\n\n /*\n * Module dependencies.\n */\n\n /**\n * Reduces all the values in a collection down into a single value. Does so by iterating through the\n * collection from left to right, repeatedly calling an `iterator` function and passing to it four\n * arguments: `(accumulator, value, index, collection)`.\n *\n * Returns the final return value of the `iterator` function.\n *\n * @name foldl\n * @api public\n * @param {Function} iterator The function to invoke per iteration.\n * @param {*} accumulator The initial accumulator value, passed to the first invocation of `iterator`.\n * @param {Array|Object} collection The collection to iterate over.\n * @return {*} The return value of the final call to `iterator`.\n * @example\n * foldl(function(total, n) {\n * return total + n;\n * }, 0, [1, 2, 3]);\n * //=> 6\n *\n * var phonebook = { bob: '555-111-2345', tim: '655-222-6789', sheila: '655-333-1298' };\n *\n * foldl(function(results, phoneNumber) {\n * if (phoneNumber[0] === '6') {\n * return results.concat(phoneNumber);\n * }\n * return results;\n * }, [], phonebook);\n * // => ['655-222-6789', '655-333-1298']\n */\n\n\n var foldl = function foldl(iterator, accumulator, collection) {\n if (typeof iterator !== 'function') {\n throw new TypeError('Expected a function but received a ' + _typeof(iterator));\n }\n\n each_1(function (val, i, collection) {\n accumulator = iterator(accumulator, val, i, collection);\n }, collection);\n return accumulator;\n };\n /*\n * Exports.\n */\n\n\n var foldl_1 = foldl;\n\n /**\n * Module dependencies.\n */\n\n\n var parse$1 = componentQuerystring.parse;\n /**\n * hasOwnProperty reference.\n */\n\n var has$1 = Object.prototype.hasOwnProperty;\n /**\n * Get all utm params from the given `querystring`\n *\n * @param {String} query\n * @return {Object}\n * @api private\n */\n\n function utm(query) {\n // Remove leading ? if present\n if (query.charAt(0) === '?') {\n query = query.substring(1);\n }\n\n query = query.replace(/\\?/g, '&');\n var param;\n var params = parse$1(query);\n var results = {};\n\n for (var key in params) {\n if (has$1.call(params, key)) {\n if (key.substr(0, 4) === 'utm_') {\n param = key.substr(4);\n if (param === 'campaign') param = 'name';\n results[param] = params[key];\n }\n }\n }\n\n return results;\n }\n\n var allowedKeys = {\n name: true,\n term: true,\n source: true,\n medium: true,\n content: true\n };\n /**\n * Get strict utm params - from the given `querystring`\n *\n * @param {String} query\n * @return {Object}\n * @api private\n */\n\n function strict(query) {\n return foldl_1(function (acc, val, key) {\n if (has$1.call(allowedKeys, key)) acc[key] = val;\n return acc;\n }, {}, utm(query));\n }\n /*\n * Exports.\n */\n\n\n var lib = utm;\n var strict_1 = strict;\n lib.strict = strict_1;\n\n var componentUrl = createCommonjsModule(function (module, exports) {\n /**\n * Parse the given `url`.\n *\n * @param {String} str\n * @return {Object}\n * @api public\n */\n exports.parse = function (url) {\n var a = document.createElement('a');\n a.href = url;\n return {\n href: a.href,\n host: a.host || location.host,\n port: '0' === a.port || '' === a.port ? port(a.protocol) : a.port,\n hash: a.hash,\n hostname: a.hostname || location.hostname,\n pathname: a.pathname.charAt(0) != '/' ? '/' + a.pathname : a.pathname,\n protocol: !a.protocol || ':' == a.protocol ? location.protocol : a.protocol,\n search: a.search,\n query: a.search.slice(1)\n };\n };\n /**\n * Check if `url` is absolute.\n *\n * @param {String} url\n * @return {Boolean}\n * @api public\n */\n\n\n exports.isAbsolute = function (url) {\n return 0 == url.indexOf('//') || !!~url.indexOf('://');\n };\n /**\n * Check if `url` is relative.\n *\n * @param {String} url\n * @return {Boolean}\n * @api public\n */\n\n\n exports.isRelative = function (url) {\n return !exports.isAbsolute(url);\n };\n /**\n * Check if `url` is cross domain.\n *\n * @param {String} url\n * @return {Boolean}\n * @api public\n */\n\n\n exports.isCrossDomain = function (url) {\n url = exports.parse(url);\n var location = exports.parse(window.location.href);\n return url.hostname !== location.hostname || url.port !== location.port || url.protocol !== location.protocol;\n };\n /**\n * Return default port for `protocol`.\n *\n * @param {String} protocol\n * @return {String}\n * @api private\n */\n\n\n function port(protocol) {\n switch (protocol) {\n case 'http:':\n return 80;\n\n case 'https:':\n return 443;\n\n default:\n return location.port;\n }\n }\n });\n var componentUrl_1 = componentUrl.parse;\n var componentUrl_2 = componentUrl.isAbsolute;\n var componentUrl_3 = componentUrl.isRelative;\n var componentUrl_4 = componentUrl.isCrossDomain;\n\n /*!\n * isobject <https://github.com/jonschlinkert/isobject>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n var isobject = function isObject(val) {\n return val != null && _typeof(val) === 'object' && Array.isArray(val) === false;\n };\n\n /*!\n * get-value <https://github.com/jonschlinkert/get-value>\n *\n * Copyright (c) 2014-2018, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n var getValue = function getValue(target, path, options) {\n if (!isobject(options)) {\n options = {\n \"default\": options\n };\n }\n\n if (!isValidObject(target)) {\n return typeof options[\"default\"] !== 'undefined' ? options[\"default\"] : target;\n }\n\n if (typeof path === 'number') {\n path = String(path);\n }\n\n var isArray = Array.isArray(path);\n var isString = typeof path === 'string';\n var splitChar = options.separator || '.';\n var joinChar = options.joinChar || (typeof splitChar === 'string' ? splitChar : '.');\n\n if (!isString && !isArray) {\n return target;\n }\n\n if (isString && path in target) {\n return isValid(path, target, options) ? target[path] : options[\"default\"];\n }\n\n var segs = isArray ? path : split(path, splitChar, options);\n var len = segs.length;\n var idx = 0;\n\n do {\n var prop = segs[idx];\n\n if (typeof prop === 'number') {\n prop = String(prop);\n }\n\n while (prop && prop.slice(-1) === '\\\\') {\n prop = join([prop.slice(0, -1), segs[++idx] || ''], joinChar, options);\n }\n\n if (prop in target) {\n if (!isValid(prop, target, options)) {\n return options[\"default\"];\n }\n\n target = target[prop];\n } else {\n var hasProp = false;\n var n = idx + 1;\n\n while (n < len) {\n prop = join([prop, segs[n++]], joinChar, options);\n\n if (hasProp = prop in target) {\n if (!isValid(prop, target, options)) {\n return options[\"default\"];\n }\n\n target = target[prop];\n idx = n - 1;\n break;\n }\n }\n\n if (!hasProp) {\n return options[\"default\"];\n }\n }\n } while (++idx < len && isValidObject(target));\n\n if (idx === len) {\n return target;\n }\n\n return options[\"default\"];\n };\n\n function join(segs, joinChar, options) {\n if (typeof options.join === 'function') {\n return options.join(segs);\n }\n\n return segs[0] + joinChar + segs[1];\n }\n\n function split(path, splitChar, options) {\n if (typeof options.split === 'function') {\n return options.split(path);\n }\n\n return path.split(splitChar);\n }\n\n function isValid(key, target, options) {\n if (typeof options.isValid === 'function') {\n return options.isValid(key, target);\n }\n\n return true;\n }\n\n function isValidObject(val) {\n return isobject(val) || Array.isArray(val) || typeof val === 'function';\n }\n\n /*!\n * isobject <https://github.com/jonschlinkert/isobject>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n var isobject$1 = function isObject(val) {\n return val != null && _typeof(val) === 'object' && Array.isArray(val) === false;\n };\n\n function isObjectObject(o) {\n return isobject$1(o) === true && Object.prototype.toString.call(o) === '[object Object]';\n }\n\n var isPlainObject = function isPlainObject(o) {\n var ctor, prot;\n if (isObjectObject(o) === false) return false; // If has modified constructor\n\n ctor = o.constructor;\n if (typeof ctor !== 'function') return false; // If has modified prototype\n\n prot = ctor.prototype;\n if (isObjectObject(prot) === false) return false; // If constructor does not have an Object-specific method\n\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n } // Most likely a plain Object\n\n\n return true;\n };\n\n function set(target, path, value, options) {\n if (!isObject(target)) {\n return target;\n }\n\n var opts = options || {};\n var isArray = Array.isArray(path);\n\n if (!isArray && typeof path !== 'string') {\n return target;\n }\n\n var merge = opts.merge;\n\n if (merge && typeof merge !== 'function') {\n merge = Object.assign;\n }\n\n var keys = (isArray ? path : split$1(path, opts)).filter(isValidKey);\n var len = keys.length;\n var orig = target;\n\n if (!options && keys.length === 1) {\n result(target, keys[0], value, merge);\n return target;\n }\n\n for (var i = 0; i < len; i++) {\n var prop = keys[i];\n\n if (!isObject(target[prop])) {\n target[prop] = {};\n }\n\n if (i === len - 1) {\n result(target, prop, value, merge);\n break;\n }\n\n target = target[prop];\n }\n\n return orig;\n }\n\n function result(target, path, value, merge) {\n if (merge && isPlainObject(target[path]) && isPlainObject(value)) {\n target[path] = merge({}, target[path], value);\n } else {\n target[path] = value;\n }\n }\n\n function split$1(path, options) {\n var id = createKey(path, options);\n if (set.memo[id]) return set.memo[id];\n\n var _char = options && options.separator ? options.separator : '.';\n\n var keys = [];\n var res = [];\n\n if (options && typeof options.split === 'function') {\n keys = options.split(path);\n } else {\n keys = path.split(_char);\n }\n\n for (var i = 0; i < keys.length; i++) {\n var prop = keys[i];\n\n while (prop && prop.slice(-1) === '\\\\' && keys[i + 1] != null) {\n prop = prop.slice(0, -1) + _char + keys[++i];\n }\n\n res.push(prop);\n }\n\n set.memo[id] = res;\n return res;\n }\n\n function createKey(pattern, options) {\n var id = pattern;\n\n if (typeof options === 'undefined') {\n return id + '';\n }\n\n var keys = Object.keys(options);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n id += ';' + key + '=' + String(options[key]);\n }\n\n return id;\n }\n\n function isValidKey(key) {\n return key !== '__proto__' && key !== 'constructor' && key !== 'prototype';\n }\n\n function isObject(val) {\n return val !== null && (_typeof(val) === 'object' || typeof val === 'function');\n }\n\n set.memo = {};\n var setValue = set;\n\n var LOG_LEVEL_INFO = 1;\n var LOG_LEVEL_DEBUG = 2;\n var LOG_LEVEL_WARN = 3;\n var LOG_LEVEL_ERROR = 4;\n var LOG_LEVEL = LOG_LEVEL_ERROR;\n var logger = {\n setLogLevel: function setLogLevel(logLevel) {\n switch (logLevel.toUpperCase()) {\n case \"INFO\":\n LOG_LEVEL = LOG_LEVEL_INFO;\n return;\n\n case \"DEBUG\":\n LOG_LEVEL = LOG_LEVEL_DEBUG;\n return;\n\n case \"WARN\":\n LOG_LEVEL = LOG_LEVEL_WARN;\n }\n },\n info: function info() {\n if (LOG_LEVEL <= LOG_LEVEL_INFO) {\n var _console;\n\n (_console = console).log.apply(_console, arguments);\n }\n },\n debug: function debug() {\n if (LOG_LEVEL <= LOG_LEVEL_DEBUG) {\n var _console2;\n\n (_console2 = console).log.apply(_console2, arguments);\n }\n },\n warn: function warn() {\n if (LOG_LEVEL <= LOG_LEVEL_WARN) {\n var _console3;\n\n (_console3 = console).log.apply(_console3, arguments);\n }\n },\n error: function error() {\n if (LOG_LEVEL <= LOG_LEVEL_ERROR) {\n var _console4;\n\n (_console4 = console).log.apply(_console4, arguments);\n }\n }\n };\n\n // for sdk side native integration identification\n // add a mapping from common names to index.js exported key names as identified by Rudder\n var commonNames = {\n All: \"All\",\n \"Google Analytics\": \"GA\",\n GoogleAnalytics: \"GA\",\n GA: \"GA\",\n \"Google Ads\": \"GOOGLEADS\",\n GoogleAds: \"GOOGLEADS\",\n GOOGLEADS: \"GOOGLEADS\",\n Braze: \"BRAZE\",\n BRAZE: \"BRAZE\",\n Chartbeat: \"CHARTBEAT\",\n CHARTBEAT: \"CHARTBEAT\",\n Comscore: \"COMSCORE\",\n COMSCORE: \"COMSCORE\",\n Customerio: \"CUSTOMERIO\",\n \"Customer.io\": \"CUSTOMERIO\",\n \"FB Pixel\": \"FACEBOOK_PIXEL\",\n \"Facebook Pixel\": \"FACEBOOK_PIXEL\",\n FB_PIXEL: \"FACEBOOK_PIXEL\",\n \"Google Tag Manager\": \"GOOGLETAGMANAGER\",\n GTM: \"GTM\",\n Hotjar: \"HOTJAR\",\n hotjar: \"HOTJAR\",\n HOTJAR: \"HOTJAR\",\n Hubspot: \"HS\",\n HUBSPOT: \"HS\",\n Intercom: \"INTERCOM\",\n INTERCOM: \"INTERCOM\",\n Keen: \"KEEN\",\n \"Keen.io\": \"KEEN\",\n KEEN: \"KEEN\",\n Kissmetrics: \"KISSMETRICS\",\n KISSMETRICS: \"KISSMETRICS\",\n Lotame: \"LOTAME\",\n LOTAME: \"LOTAME\",\n \"Visual Website Optimizer\": \"VWO\",\n VWO: \"VWO\",\n OPTIMIZELY: \"OPTIMIZELY\",\n Optimizely: \"OPTIMIZELY\",\n FULLSTORY: \"FULLSTORY\",\n Fullstory: \"FULLSTORY\",\n BUGSNAG: \"BUGSNAG\",\n TVSQUARED: \"TVSQUARED\",\n \"Google Analytics 4\": \"GA4\",\n GoogleAnalytics4: \"GA4\",\n GA4: \"GA4\",\n MOENGAGE: \"MoEngage\",\n AM: \"AM\",\n AMPLITUDE: \"AM\",\n Amplitude: \"AM\",\n Pendo: \"PENDO\",\n PENDO: \"PENDO\",\n Lytics: \"Lytics\",\n LYTICS: \"Lytics\",\n Appcues: \"APPCUES\",\n APPCUES: \"APPCUES\",\n POSTHOG: \"POSTHOG\",\n PostHog: \"POSTHOG\",\n Posthog: \"POSTHOG\",\n KLAVIYO: \"KLAVIYO\",\n Klaviyo: \"KLAVIYO\",\n CLEVERTAP: \"CLEVERTAP\",\n Clevertap: \"CLEVERTAP\"\n };\n\n // from client native integration name to server identified display name\n // add a mapping from Rudder identified key names to Rudder server recognizable names\n var clientToServerNames = {\n All: \"All\",\n GA: \"Google Analytics\",\n GOOGLEADS: \"Google Ads\",\n BRAZE: \"Braze\",\n CHARTBEAT: \"Chartbeat\",\n COMSCORE: \"Comscore\",\n CUSTOMERIO: \"Customer IO\",\n FACEBOOK_PIXEL: \"Facebook Pixel\",\n GTM: \"Google Tag Manager\",\n HOTJAR: \"Hotjar\",\n HS: \"HubSpot\",\n INTERCOM: \"Intercom\",\n KEEN: \"Keen\",\n KISSMETRICS: \"Kiss Metrics\",\n LOTAME: \"Lotame\",\n VWO: \"VWO\",\n OPTIMIZELY: \"Optimizely\",\n FULLSTORY: \"Fullstory\",\n TVSQUUARED: \"TVSquared\",\n GA4: \"Google Analytics 4\",\n MOENGAGE: \"MoEngage\",\n AM: \"Amplitude\",\n PENDO: \"Pendo\",\n LYTICS: \"Lytics\",\n APPCUES: \"Appcues\",\n POSTHOG: \"PostHog\",\n KLAVIYO: \"Klaviyo\",\n CLEVERTAP: \"Clevertap\"\n };\n\n // Reserved Keywords for properties/triats\n var ReservedPropertyKeywords = [\"anonymous_id\", \"id\", \"sent_at\", \"received_at\", \"timestamp\", \"original_timestamp\", \"event_text\", \"event\"]; // Message Type enumeration\n\n var MessageType = {\n TRACK: \"track\",\n PAGE: \"page\",\n // SCREEN: \"screen\",\n IDENTIFY: \"identify\"\n }; // ECommerce Parameter Names Enumeration\n\n var ECommerceEvents = {\n PRODUCTS_SEARCHED: \"Products Searched\",\n PRODUCT_LIST_VIEWED: \"Product List Viewed\",\n PRODUCT_LIST_FILTERED: \"Product List Filtered\",\n PROMOTION_VIEWED: \"Promotion Viewed\",\n PROMOTION_CLICKED: \"Promotion Clicked\",\n PRODUCT_CLICKED: \"Product Clicked\",\n PRODUCT_VIEWED: \"Product Viewed\",\n PRODUCT_ADDED: \"Product Added\",\n PRODUCT_REMOVED: \"Product Removed\",\n CART_VIEWED: \"Cart Viewed\",\n CHECKOUT_STARTED: \"Checkout Started\",\n CHECKOUT_STEP_VIEWED: \"Checkout Step Viewed\",\n CHECKOUT_STEP_COMPLETED: \"Checkout Step Completed\",\n PAYMENT_INFO_ENTERED: \"Payment Info Entered\",\n ORDER_UPDATED: \"Order Updated\",\n ORDER_COMPLETED: \"Order Completed\",\n ORDER_REFUNDED: \"Order Refunded\",\n ORDER_CANCELLED: \"Order Cancelled\",\n COUPON_ENTERED: \"Coupon Entered\",\n COUPON_APPLIED: \"Coupon Applied\",\n COUPON_DENIED: \"Coupon Denied\",\n COUPON_REMOVED: \"Coupon Removed\",\n PRODUCT_ADDED_TO_WISHLIST: \"Product Added to Wishlist\",\n PRODUCT_REMOVED_FROM_WISHLIST: \"Product Removed from Wishlist\",\n WISH_LIST_PRODUCT_ADDED_TO_CART: \"Wishlist Product Added to Cart\",\n PRODUCT_SHARED: \"Product Shared\",\n CART_SHARED: \"Cart Shared\",\n PRODUCT_REVIEWED: \"Product Reviewed\"\n }; // Enumeration for integrations supported\n\n var CONFIG_URL = \"https://api.rudderlabs.com/sourceConfig/?p=npm&v=1.0.16\";\n var MAX_WAIT_FOR_INTEGRATION_LOAD = 10000;\n var INTEGRATION_LOAD_CHECK_INTERVAL = 1000;\n /* module.exports = {\n MessageType: MessageType,\n ECommerceParamNames: ECommerceParamNames,\n ECommerceEvents: ECommerceEvents,\n RudderIntegrationPlatform: RudderIntegrationPlatform,\n BASE_URL: BASE_URL,\n CONFIG_URL: CONFIG_URL,\n FLUSH_QUEUE_SIZE: FLUSH_QUEUE_SIZE\n }; */\n\n /**\n *\n * Utility method for excluding null and empty values in JSON\n * @param {*} key\n * @param {*} value\n * @returns\n */\n\n function replacer(key, value) {\n if (value === null || value === undefined) {\n return undefined;\n }\n\n return value;\n }\n /**\n *\n * Utility function for UUID genration\n * @returns\n */\n\n\n function generateUUID() {\n // Public Domain/MIT\n var d = new Date().getTime();\n\n if (typeof performance !== \"undefined\" && typeof performance.now === \"function\") {\n d += performance.now(); // use high-precision timer if available\n }\n\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function (c) {\n var r = (d + Math.random() * 16) % 16 | 0;\n d = Math.floor(d / 16);\n return (c === \"x\" ? r : r & 0x3 | 0x8).toString(16);\n });\n }\n /**\n *\n * Utility function to get current time (formatted) for including in sent_at field\n * @returns\n */\n\n\n function getCurrentTimeFormatted() {\n var curDateTime = new Date().toISOString(); // Keeping same as iso string\n\n /* let curDate = curDateTime.split(\"T\")[0];\n let curTimeExceptMillis = curDateTime\n .split(\"T\")[1]\n .split(\"Z\")[0]\n .split(\".\")[0];\n let curTimeMillis = curDateTime.split(\"Z\")[0].split(\".\")[1];\n return curDate + \" \" + curTimeExceptMillis + \"+\" + curTimeMillis; */\n\n return curDateTime;\n }\n /**\n *\n * Utility function to retrieve configuration JSON from server\n * @param {*} context\n * @param {*} url\n * @param {*} callback\n */\n\n\n function getJSONTrimmed(context, url, writeKey, callback) {\n // server-side integration, XHR is node module\n var cb_ = callback.bind(context);\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.setRequestHeader(\"Authorization\", \"Basic \".concat(btoa(\"\".concat(writeKey, \":\"))));\n\n xhr.onload = function () {\n var status = xhr.status;\n\n if (status == 200) {\n logger.debug(\"status 200 \" + \"calling callback\");\n cb_(200, xhr.responseText);\n } else {\n handleError(new Error(\"request failed with status: \".concat(xhr.status, \" for url: \").concat(url)));\n cb_(status);\n }\n };\n\n xhr.send();\n }\n\n function handleError(error, analyticsInstance) {\n var errorMessage = error.message ? error.message : undefined;\n var sampleAdBlockTest;\n\n try {\n if (error instanceof Event) {\n if (error.target && error.target.localName == \"script\") {\n errorMessage = \"error in script loading:: src:: \".concat(error.target.src, \" id:: \").concat(error.target.id);\n\n if (analyticsInstance && error.target.src.includes(\"adsbygoogle\")) {\n sampleAdBlockTest = true;\n analyticsInstance.page(\"RudderJS-Initiated\", \"ad-block page request\", {\n path: \"/ad-blocked\",\n title: errorMessage\n }, analyticsInstance.sendAdblockPageOptions);\n }\n }\n }\n\n if (errorMessage && !sampleAdBlockTest) {\n logger.error(\"[Util] handleError:: \", errorMessage);\n }\n } catch (e) {\n logger.error(\"[Util] handleError:: \", e);\n }\n }\n\n function getDefaultPageProperties() {\n var canonicalUrl = getCanonicalUrl();\n var path = canonicalUrl ? componentUrl_1(canonicalUrl).pathname : window.location.pathname; //const { referrer } = document;\n\n var search = window.location.search;\n var _document = document,\n title = _document.title;\n var url = getUrl(search);\n var referrer = getReferrer();\n var referring_domain = getReferringDomain(referrer);\n return {\n path: path,\n referrer: referrer,\n referring_domain: referring_domain,\n search: search,\n title: title,\n url: url\n };\n }\n\n function getReferrer() {\n return document.referrer || \"$direct\";\n }\n\n function getReferringDomain(referrer) {\n var split = referrer.split(\"/\");\n\n if (split.length >= 3) {\n return split[2];\n }\n\n return \"\";\n }\n\n function getUrl(search) {\n var canonicalUrl = getCanonicalUrl();\n var url = canonicalUrl ? canonicalUrl.indexOf(\"?\") > -1 ? canonicalUrl : canonicalUrl + search : window.location.href;\n var hashIndex = url.indexOf(\"#\");\n return hashIndex > -1 ? url.slice(0, hashIndex) : url;\n }\n\n function getCanonicalUrl() {\n var tags = document.getElementsByTagName(\"link\");\n\n for (var i = 0, tag; tag = tags[i]; i++) {\n if (tag.getAttribute(\"rel\") === \"canonical\") {\n return tag.getAttribute(\"href\");\n }\n }\n }\n\n function getCurrency(val) {\n if (!val) return;\n\n if (typeof val === \"number\") {\n return val;\n }\n\n if (typeof val !== \"string\") {\n return;\n }\n\n val = val.replace(/\\$/g, \"\");\n val = parseFloat(val);\n\n if (!isNaN(val)) {\n return val;\n }\n }\n\n function getRevenue(properties, eventName) {\n var revenue = properties.revenue;\n var orderCompletedRegExp = /^[ _]?completed[ _]?order[ _]?|^[ _]?order[ _]?completed[ _]?$/i; // it's always revenue, unless it's called during an order completion.\n\n if (!revenue && eventName && eventName.match(orderCompletedRegExp)) {\n revenue = properties.total;\n }\n\n return getCurrency(revenue);\n }\n /**\n *\n *\n * @param {*} integrationObject\n */\n\n\n function tranformToRudderNames(integrationObject) {\n Object.keys(integrationObject).forEach(function (key) {\n if (integrationObject.hasOwnProperty(key)) {\n if (commonNames[key]) {\n integrationObject[commonNames[key]] = integrationObject[key];\n }\n\n if (key != \"All\") {\n // delete user supplied keys except All and if except those where oldkeys are not present or oldkeys are same as transformed keys\n if (commonNames[key] != undefined && commonNames[key] != key) {\n delete integrationObject[key];\n }\n }\n }\n });\n }\n\n function transformToServerNames(integrationObject) {\n Object.keys(integrationObject).forEach(function (key) {\n if (integrationObject.hasOwnProperty(key)) {\n if (clientToServerNames[key]) {\n integrationObject[clientToServerNames[key]] = integrationObject[key];\n }\n\n if (key != \"All\") {\n // delete user supplied keys except All and if except those where oldkeys are not present or oldkeys are same as transformed keys\n if (clientToServerNames[key] != undefined && clientToServerNames[key] != key) {\n delete integrationObject[key];\n }\n }\n }\n });\n }\n /**\n *\n * @param {*} sdkSuppliedIntegrations\n * @param {*} configPlaneEnabledIntegrations\n */\n\n\n function findAllEnabledDestinations(sdkSuppliedIntegrations, configPlaneEnabledIntegrations) {\n var enabledList = [];\n\n if (!configPlaneEnabledIntegrations || configPlaneEnabledIntegrations.length == 0) {\n return enabledList;\n }\n\n var allValue = true;\n\n if (typeof configPlaneEnabledIntegrations[0] === \"string\") {\n if (sdkSuppliedIntegrations.All != undefined) {\n allValue = sdkSuppliedIntegrations.All;\n }\n\n configPlaneEnabledIntegrations.forEach(function (intg) {\n if (!allValue) {\n // All false ==> check if intg true supplied\n if (sdkSuppliedIntegrations[intg] != undefined && sdkSuppliedIntegrations[intg] == true) {\n enabledList.push(intg);\n }\n } else {\n // All true ==> intg true by default\n var intgValue = true; // check if intg false supplied\n\n if (sdkSuppliedIntegrations[intg] != undefined && sdkSuppliedIntegrations[intg] == false) {\n intgValue = false;\n }\n\n if (intgValue) {\n enabledList.push(intg);\n }\n }\n });\n return enabledList;\n }\n\n if (_typeof(configPlaneEnabledIntegrations[0]) === \"object\") {\n if (sdkSuppliedIntegrations.All != undefined) {\n allValue = sdkSuppliedIntegrations.All;\n }\n\n configPlaneEnabledIntegrations.forEach(function (intg) {\n if (!allValue) {\n // All false ==> check if intg true supplied\n if (sdkSuppliedIntegrations[intg.name] != undefined && sdkSuppliedIntegrations[intg.name] == true) {\n enabledList.push(intg);\n }\n } else {\n // All true ==> intg true by default\n var intgValue = true; // check if intg false supplied\n\n if (sdkSuppliedIntegrations[intg.name] != undefined && sdkSuppliedIntegrations[intg.name] == false) {\n intgValue = false;\n }\n\n if (intgValue) {\n enabledList.push(intg);\n }\n }\n });\n return enabledList;\n }\n }\n /**\n * reject all null values from array/object\n * @param {} obj\n * @param {} fn\n */\n\n\n function rejectArr(obj, fn) {\n fn = fn || compact;\n return type(obj) == \"array\" ? rejectarray(obj, fn) : rejectobject(obj, fn);\n }\n /**\n * particular case when rejecting an array\n * @param {} arr\n * @param {} fn\n */\n\n\n var rejectarray = function rejectarray(arr, fn) {\n var ret = [];\n\n for (var i = 0; i < arr.length; ++i) {\n if (!fn(arr[i], i)) ret[ret.length] = arr[i];\n }\n\n return ret;\n };\n /**\n * Rejecting null from any object other than arrays\n * @param {} obj\n * @param {} fn\n *\n */\n\n\n var rejectobject = function rejectobject(obj, fn) {\n var ret = {};\n\n for (var k in obj) {\n if (obj.hasOwnProperty(k) && !fn(obj[k], k)) {\n ret[k] = obj[k];\n }\n }\n\n return ret;\n };\n\n function compact(value) {\n return value == null;\n }\n /**\n * check type of object incoming in the rejectArr function\n * @param {} val\n */\n\n\n function type(val) {\n switch (Object.prototype.toString.call(val)) {\n case \"[object Function]\":\n return \"function\";\n\n case \"[object Date]\":\n return \"date\";\n\n case \"[object RegExp]\":\n return \"regexp\";\n\n case \"[object Arguments]\":\n return \"arguments\";\n\n case \"[object Array]\":\n return \"array\";\n }\n\n if (val === null) return \"null\";\n if (val === undefined) return \"undefined\";\n if (val === Object(val)) return \"object\";\n return _typeof(val);\n }\n\n function getUserProvidedConfigUrl(configUrl) {\n var url = configUrl;\n\n if (configUrl.indexOf(\"sourceConfig\") == -1) {\n url = url.slice(-1) == \"/\" ? url.slice(0, -1) : url;\n url = \"\".concat(url, \"/sourceConfig/\");\n }\n\n url = url.slice(-1) == \"/\" ? url : \"\".concat(url, \"/\");\n\n if (url.indexOf(\"?\") > -1) {\n if (url.split(\"?\")[1] !== CONFIG_URL.split(\"?\")[1]) {\n url = \"\".concat(url.split(\"?\")[0], \"?\").concat(CONFIG_URL.split(\"?\")[1]);\n }\n } else {\n url = \"\".concat(url, \"?\").concat(CONFIG_URL.split(\"?\")[1]);\n }\n\n return url;\n }\n /**\n * Check if a reserved keyword is present in properties/traits\n * @param {*} properties\n * @param {*} reservedKeywords\n * @param {*} type\n */\n\n\n function checkReservedKeywords(message, messageType) {\n // properties, traits, contextualTraits are either undefined or object\n var properties = message.properties,\n traits = message.traits;\n var contextualTraits = message.context.traits;\n\n if (properties) {\n Object.keys(properties).forEach(function (property) {\n if (ReservedPropertyKeywords.indexOf(property.toLowerCase()) >= 0) {\n logger.error(\"Warning! : Reserved keyword used in properties--> \".concat(property, \" with \").concat(messageType, \" call\"));\n }\n });\n }\n\n if (traits) {\n Object.keys(traits).forEach(function (trait) {\n if (ReservedPropertyKeywords.indexOf(trait.toLowerCase()) >= 0) {\n logger.error(\"Warning! : Reserved keyword used in traits--> \".concat(trait, \" with \").concat(messageType, \" call\"));\n }\n });\n }\n\n if (contextualTraits) {\n Object.keys(contextualTraits).forEach(function (contextTrait) {\n if (ReservedPropertyKeywords.indexOf(contextTrait.toLowerCase()) >= 0) {\n logger.error(\"Warning! : Reserved keyword used in traits --> \".concat(contextTrait, \" with \").concat(messageType, \" call\"));\n }\n });\n }\n }\n /* ------- Start FlattenJson -----------\n * This function flatten given json object to single level.\n * So if there is nested object or array, all will apear in first level properties of an object.\n * Following is case we are handling in this function ::\n * condition 1: String\n * condition 2: Array\n * condition 3: Nested object\n */\n\n\n function recurse(cur, prop, result) {\n var res = result;\n\n if (Object(cur) !== cur) {\n res[prop] = cur;\n } else if (Array.isArray(cur)) {\n var l = cur.length;\n\n for (var i = 0; i < l; i += 1) {\n recurse(cur[i], prop ? \"\".concat(prop, \".\").concat(i) : \"\".concat(i), res);\n }\n\n if (l === 0) res[prop] = [];\n } else {\n var isEmpty = true;\n Object.keys(cur).forEach(function (key) {\n isEmpty = false;\n recurse(cur[key], prop ? \"\".concat(prop, \".\").concat(key) : key, res);\n });\n if (isEmpty) res[prop] = {};\n }\n\n return res;\n }\n\n function flattenJsonPayload(data) {\n return recurse(data, \"\", {});\n }\n /* ------- End FlattenJson ----------- */\n\n /**\n *\n * @param {*} message\n * @param {*} destination\n * @param {*} keys\n * @param {*} exclusionFields\n * Extract fileds from message with exclusions\n * Pass the keys of message for extraction and\n * exclusion fields to exlude and the payload to map into\n * -----------------Example-------------------\n * extractCustomFields(message,payload,[\"traits\", \"context.traits\", \"properties\"], \"email\",\n * [\"firstName\",\n * \"lastName\",\n * \"phone\",\n * \"title\",\n * \"organization\",\n * \"city\",\n * \"region\",\n * \"country\",\n * \"zip\",\n * \"image\",\n * \"timezone\"])\n * -------------------------------------------\n * The above call will map the fields other than the\n * exlusion list from the given keys to the destination payload\n *\n */\n\n\n function extractCustomFields(message, destination, keys, exclusionFields) {\n keys.map(function (key) {\n var messageContext = getValue(message, key);\n\n if (messageContext) {\n var objKeys = [];\n Object.keys(messageContext).map(function (k) {\n if (exclusionFields.indexOf(k) < 0) {\n objKeys.push(k);\n }\n });\n objKeys.map(function (k) {\n if (!(typeof messageContext[k] === \"undefined\")) {\n setValue(destination, k, getValue(messageContext, k));\n }\n });\n }\n });\n return destination;\n }\n /**\n *\n * @param {*} message\n *\n * Use get-value to retrieve defined trais from message traits\n */\n\n\n function getDefinedTraits(message) {\n var traitsValue = {\n userId: getValue(message, \"userId\") || getValue(message, \"context.traits.userId\") || getValue(message, \"anonymousId\"),\n email: getValue(message, \"context.traits.email\") || getValue(message, \"context.traits.Email\") || getValue(message, \"context.traits.E-mail\"),\n phone: getValue(message, \"context.traits.phone\") || getValue(message, \"context.traits.Phone\"),\n firstName: getValue(message, \"context.traits.firstName\") || getValue(message, \"context.traits.firstname\") || getValue(message, \"context.traits.first_name\"),\n lastName: getValue(message, \"context.traits.lastName\") || getValue(message, \"context.traits.lastname\") || getValue(message, \"context.traits.last_name\"),\n name: getValue(message, \"context.traits.name\") || getValue(message, \"context.traits.Name\"),\n city: getValue(message, \"context.traits.city\") || getValue(message, \"context.traits.City\"),\n country: getValue(message, \"context.traits.country\") || getValue(message, \"context.traits.Country\")\n };\n\n if (!getValue(traitsValue, \"name\") && getValue(traitsValue, \"firstName\") && getValue(traitsValue, \"lastName\")) {\n setValue(traitsValue, \"name\", \"\".concat(getValue(traitsValue, \"firstName\"), \" \").concat(getValue(traitsValue, \"lastName\")));\n }\n\n return traitsValue;\n }\n /**\n * To check if a variable is storing object or not\n */\n\n\n var isObject$1 = function isObject(obj) {\n return type(obj) === \"object\";\n };\n /**\n * To check if a variable is storing array or not\n */\n\n\n var isArray$1 = function isArray(obj) {\n return type(obj) === \"array\";\n };\n\n /* eslint-disable no-use-before-define */\n\n var ScriptLoader = function ScriptLoader(id, src) {\n logger.debug(\"in script loader=== \".concat(id));\n var js = document.createElement(\"script\");\n js.src = src;\n js.async = true;\n js.type = \"text/javascript\";\n js.id = id;\n var e = document.getElementsByTagName(\"script\")[0];\n logger.debug(\"==parent script==\", e);\n logger.debug(\"==adding script==\", js);\n e.parentNode.insertBefore(js, e);\n };\n\n var HubSpot = /*#__PURE__*/function () {\n function HubSpot(config) {\n _classCallCheck(this, HubSpot);\n\n this.hubId = config.hubID; // 6405167\n\n this.name = \"HS\";\n }\n\n _createClass(HubSpot, [{\n key: \"init\",\n value: function init() {\n var hubspotJs = \"https://js.hs-scripts.com/\".concat(this.hubId, \".js\");\n ScriptLoader(\"hubspot-integration\", hubspotJs);\n logger.debug(\"===in init HS===\");\n }\n }, {\n key: \"identify\",\n value: function identify(rudderElement) {\n logger.debug(\"in HubspotAnalyticsManager identify\");\n var traits = rudderElement.message.context.traits;\n var traitsValue = {};\n\n for (var k in traits) {\n if (!!Object.getOwnPropertyDescriptor(traits, k) && traits[k]) {\n var hubspotkey = k; // k.startsWith(\"rl_\") ? k.substring(3, k.length) : k;\n\n if (Object.prototype.toString.call(traits[k]) == \"[object Date]\") {\n traitsValue[hubspotkey] = traits[k].getTime();\n } else {\n traitsValue[hubspotkey] = traits[k];\n }\n }\n }\n /* if (traitsValue[\"address\"]) {\n let address = traitsValue[\"address\"];\n //traitsValue.delete(address)\n delete traitsValue[\"address\"];\n for (let k in address) {\n if (!!Object.getOwnPropertyDescriptor(address, k) && address[k]) {\n let hubspotkey = k;//k.startsWith(\"rl_\") ? k.substring(3, k.length) : k;\n hubspotkey = hubspotkey == \"street\" ? \"address\" : hubspotkey;\n traitsValue[hubspotkey] = address[k];\n }\n }\n } */\n\n\n var userProperties = rudderElement.message.context.user_properties;\n\n for (var _k in userProperties) {\n if (!!Object.getOwnPropertyDescriptor(userProperties, _k) && userProperties[_k]) {\n var _hubspotkey = _k; // k.startsWith(\"rl_\") ? k.substring(3, k.length) : k;\n\n traitsValue[_hubspotkey] = userProperties[_k];\n }\n }\n\n logger.debug(traitsValue);\n\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) !== undefined) {\n var _hsq = window._hsq = window._hsq || [];\n\n _hsq.push([\"identify\", traitsValue]);\n }\n }\n }, {\n key: \"track\",\n value: function track(rudderElement) {\n logger.debug(\"in HubspotAnalyticsManager track\");\n\n var _hsq = window._hsq = window._hsq || [];\n\n var eventValue = {};\n eventValue.id = rudderElement.message.event;\n\n if (rudderElement.message.properties && (rudderElement.message.properties.revenue || rudderElement.message.properties.value)) {\n eventValue.value = rudderElement.message.properties.revenue || rudderElement.message.properties.value;\n }\n\n _hsq.push([\"trackEvent\", eventValue]);\n }\n }, {\n key: \"page\",\n value: function page(rudderElement) {\n logger.debug(\"in HubspotAnalyticsManager page\");\n\n var _hsq = window._hsq = window._hsq || []; // logger.debug(\"path: \" + rudderElement.message.properties.path);\n // _hsq.push([\"setPath\", rudderElement.message.properties.path]);\n\n /* _hsq.push([\"identify\",{\n email: \"testtrackpage@email.com\"\n }]); */\n\n\n if (rudderElement.message.properties && rudderElement.message.properties.path) {\n _hsq.push([\"setPath\", rudderElement.message.properties.path]);\n }\n\n _hsq.push([\"trackPageView\"]);\n }\n }, {\n key: \"isLoaded\",\n value: function isLoaded() {\n logger.debug(\"in hubspot isLoaded\");\n return !!(window._hsq && window._hsq.push !== Array.prototype.push);\n }\n }, {\n key: \"isReady\",\n value: function isReady() {\n return !!(window._hsq && window._hsq.push !== Array.prototype.push);\n }\n }]);\n\n return HubSpot;\n }();\n\n var index = HubSpot ;\n\n /* globals window, HTMLElement */\n var objProto = Object.prototype;\n var owns = objProto.hasOwnProperty;\n var toStr$1 = objProto.toString;\n var symbolValueOf;\n\n if (typeof Symbol === 'function') {\n symbolValueOf = Symbol.prototype.valueOf;\n }\n\n var bigIntValueOf;\n\n if (typeof BigInt === 'function') {\n bigIntValueOf = BigInt.prototype.valueOf;\n }\n\n var isActualNaN = function isActualNaN(value) {\n return value !== value;\n };\n\n var NON_HOST_TYPES = {\n 'boolean': 1,\n number: 1,\n string: 1,\n undefined: 1\n };\n var base64Regex = /^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$/;\n var hexRegex = /^[A-Fa-f0-9]+$/;\n /**\n * Expose `is`\n */\n\n var is = {};\n /**\n * Test general.\n */\n\n /**\n * is.type\n * Test if `value` is a type of `type`.\n *\n * @param {*} value value to test\n * @param {String} type type\n * @return {Boolean} true if `value` is a type of `type`, false otherwise\n * @api public\n */\n\n is.a = is.type = function (value, type) {\n return _typeof(value) === type;\n };\n /**\n * is.defined\n * Test if `value` is defined.\n *\n * @param {*} value value to test\n * @return {Boolean} true if 'value' is defined, false otherwise\n * @api public\n */\n\n\n is.defined = function (value) {\n return typeof value !== 'undefined';\n };\n /**\n * is.empty\n * Test if `value` is empty.\n *\n * @param {*} value value to test\n * @return {Boolean} true if `value` is empty, false otherwise\n * @api public\n */\n\n\n is.empty = function (value) {\n var type = toStr$1.call(value);\n var key;\n\n if (type === '[object Array]' || type === '[object Arguments]' || type === '[object String]') {\n return value.length === 0;\n }\n\n if (type === '[object Object]') {\n for (key in value) {\n if (owns.call(value, key)) {\n return false;\n }\n }\n\n return true;\n }\n\n return !value;\n };\n /**\n * is.equal\n * Test if `value` is equal to `other`.\n *\n * @param {*} value value to test\n * @param {*} other value to compare with\n * @return {Boolean} true if `value` is equal to `other`, false otherwise\n */\n\n\n is.equal = function equal(value, other) {\n if (value === other) {\n return true;\n }\n\n var type = toStr$1.call(value);\n var key;\n\n if (type !== toStr$1.call(other)) {\n return false;\n }\n\n if (type === '[object Object]') {\n for (key in value) {\n if (!is.equal(value[key], other[key]) || !(key in other)) {\n return false;\n }\n }\n\n for (key in other) {\n if (!is.equal(value[key], other[key]) || !(key in value)) {\n return false;\n }\n }\n\n return true;\n }\n\n if (type === '[object Array]') {\n key = value.length;\n\n if (key !== other.length) {\n return false;\n }\n\n while (key--) {\n if (!is.equal(value[key], other[key])) {\n return false;\n }\n }\n\n return true;\n }\n\n if (type === '[object Function]') {\n return value.prototype === other.prototype;\n }\n\n if (type === '[object Date]') {\n return value.getTime() === other.getTime();\n }\n\n return false;\n };\n /**\n * is.hosted\n * Test if `value` is hosted by `host`.\n *\n * @param {*} value to test\n * @param {*} host host to test with\n * @return {Boolean} true if `value` is hosted by `host`, false otherwise\n * @api public\n */\n\n\n is.hosted = function (value, host) {\n var type = _typeof(host[value]);\n\n return type === 'object' ? !!host[value] : !NON_HOST_TYPES[type];\n };\n /**\n * is.instance\n * Test if `value` is an instance of `constructor`.\n *\n * @param {*} value value to test\n * @return {Boolean} true if `value` is an instance of `constructor`\n * @api public\n */\n\n\n is.instance = is['instanceof'] = function (value, constructor) {\n return value instanceof constructor;\n };\n /**\n * is.nil / is.null\n * Test if `value` is null.\n *\n * @param {*} value value to test\n * @return {Boolean} true if `value` is null, false otherwise\n * @api public\n */\n\n\n is.nil = is['null'] = function (value) {\n return value === null;\n };\n /**\n * is.undef / is.undefined\n * Test if `value` is undefined.\n *\n * @param {*} value value to test\n * @return {Boolean} true if `value` is undefined, false otherwise\n * @api public\n */\n\n\n is.undef = is.undefined = function (value) {\n return typeof value === 'undefined';\n };\n /**\n * Test arguments.\n */\n\n /**\n * is.args\n * Test if `value` is an arguments object.\n *\n * @param {*} value value to test\n * @return {Boolean} true if `value` is an arguments object, false otherwise\n * @api public\n */\n\n\n is.args = is.arguments = function (value) {\n var isStandardArguments = toStr$1.call(value) === '[object Arguments]';\n var isOldArguments = !is.array(value) && is.arraylike(value) && is.object(value) && is.fn(value.callee);\n return isStandardArguments || isOldArguments;\n };\n /**\n * Test array.\n */\n\n /**\n * is.array\n * Test if 'value' is an array.\n *\n * @param {*} value value to test\n * @return {Boolean} true if `value` is an array, false otherwise\n * @api public\n */\n\n\n is.array = Array.isArray || function (value) {\n return toStr$1.call(value) === '[object Array]';\n };\n /**\n * is.arguments.empty\n * Test if `value` is an empty arguments object.\n *\n * @param {*} value value to test\n * @return {Boolean} true if `value` is an empty arguments object, false otherwise\n * @api public\n */\n\n\n is.args.empty = function (value) {\n return is.args(value) && value.length === 0;\n };\n /**\n * is.array.empty\n * Test if `value` is an empty array.\n *\n * @param {*} value value to test\n * @return {Boolean} true if `value` is an empty array, false otherwise\n * @api public\n */\n\n\n is.array.empty = function (value) {\n return is.array(value) && value.length === 0;\n };\n /**\n * is.arraylike\n * Test if `value` is an arraylike object.\n *\n * @param {*} value value to test\n * @return {Boolean} true if `value` is an arguments object, false otherwise\n * @api public\n */\n\n\n is.arraylike = function (value) {\n return !!value && !is.bool(value) && owns.call(value, 'length') && isFinite(value.length) && is.number(value.length) && value.length >= 0;\n };\n /**\n * Test boolean.\n */\n\n /**\n * is.bool\n * Test if `value` is a boolean.\n *\n * @param {*} value value to test\n * @return {Boolean} true if `value` is a boolean, false otherwise\n * @api public\n */\n\n\n is.bool = is['boolean'] = function (value) {\n return toStr$1.call(value) === '[object Boolean]';\n };\n /**\n * is.false\n * Test if `value` is false.\n *\n * @param {*} value value to test\n * @return {Boolean} true if `value` is false, false otherwise\n * @api public\n */\n\n\n is['false'] = function (value) {\n return is.bool(value) && Boolean(Number(value)) === false;\n };\n /**\n * is.true\n * Test if `value` is true.\n *\n * @param {*} value value to test\n * @return {Boolean} true if `value` is true, false otherwise\n * @api public\n */\n\n\n is['true'] = function (value) {\n return is.bool(value) && Boolean(Number(value)) === true;\n };\n /**\n * Test date.\n */\n\n /**\n * is.date\n * Test if `value` is a date.\n *\n * @param {*} value value to test\n * @return {Boolean} true if `value` is a date, false otherwise\n * @api public\n */\n\n\n is.date = function (value) {\n return toStr$1.call(value) === '[object Date]';\n };\n /**\n * is.date.valid\n * Test if `value` is a valid date.\n *\n * @param {*} value value to test\n * @returns {Boolean} true if `value` is a valid date, false otherwise\n */\n\n\n is.date.valid = function (value) {\n return is.date(value) && !isNaN(Number(value));\n };\n /**\n * Test element.\n */\n\n /**\n * is.element\n * Test if `value` is an html element.\n *\n * @param {*} value value to test\n * @return {Boolean} true if `value` is an HTML Element, false otherwise\n * @api public\n */\n\n\n is.element = function (value) {\n return value !== undefined && typeof HTMLElement !== 'undefined' && value instanceof HTMLElement && value.nodeType === 1;\n };\n /**\n * Test error.\n */\n\n /**\n * is.error\n * Test if `value` is an error object.\n *\n * @param {*} value value to test\n * @return {Boolean} true if `value` is an error object, false otherwise\n * @api public\n */\n\n\n is.error = function (value) {\n return toStr$1.call(value) === '[object Error]';\n };\n /**\n * Test function.\n */\n\n /**\n * is.fn / is.function (deprecated)\n * Test if `value` is a function.\n *\n * @param {*} value value to test\n * @return {Boolean} true if `value` is a function, false otherwise\n * @api public\n */\n\n\n is.fn = is['function'] = function (value) {\n var isAlert = typeof window !== 'undefined' && value === window.alert;\n\n if (isAlert) {\n return true;\n }\n\n var str = toStr$1.call(value);\n return str === '[object Function]' || str === '[object GeneratorFunction]' || str === '[object AsyncFunction]';\n };\n /**\n * Test number.\n */\n\n /**\n * is.number\n * Test if `value` is a number.\n *\n * @param {*} value value to test\n * @return {Boolean} true if `value` is a number, false otherwise\n * @api public\n */\n\n\n is.number = function (value) {\n return toStr$1.call(value) === '[object Number]';\n };\n /**\n * is.infinite\n * Test if `value` is positive or negative infinity.\n *\n * @param {*} value value to test\n * @return {Boolean} true if `value` is positive or negative Infinity, false otherwise\n * @api public\n */\n\n\n is.infinite = function (value) {\n return value === Infinity || value === -Infinity;\n };\n /**\n * is.decimal\n * Test if `value` is a decimal number.\n *\n * @param {*} value value to test\n * @return {Boolean} true if `value` is a decimal number, false otherwise\n * @api public\n */\n\n\n is.decimal = function (value) {\n return is.number(value) && !isActualNaN(value) && !is.infinite(value) && value % 1 !== 0;\n };\n /**\n * is.divisibleBy\n * Test if `value` is divisible by `n`.\n *\n * @param {Number} value value to test\n * @param {Number} n dividend\n * @return {Boolean} true if `value` is divisible by `n`, false otherwise\n * @api public\n */\n\n\n is.divisibleBy = function (value, n) {\n var isDividendInfinite = is.infinite(value);\n var isDivisorInfinite = is.infinite(n);\n var isNonZeroNumber = is.number(value) && !isActualNaN(value) && is.number(n) && !isActualNaN(n) && n !== 0;\n return isDividendInfinite || isDivisorInfinite || isNonZeroNumber && value % n === 0;\n };\n /**\n * is.integer\n * Test if `value` is an integer.\n *\n * @param value to test\n * @return {Boolean} true if `value` is an integer, false otherwise\n * @api public\n */\n\n\n is.integer = is['int'] = function (value) {\n return is.number(value) && !isActualNaN(value) && value % 1 === 0;\n };\n /**\n * is.maximum\n * Test if `value` is greater than 'others' values.\n *\n * @param {Number} value value to test\n * @param {Array} others values to compare with\n * @return {Boolean} true if `value` is greater than `others` values\n * @api public\n */\n\n\n is.maximum = function (value, others) {\n if (isActualNaN(value)) {\n throw new TypeError('NaN is not a valid value');\n } else if (!is.arraylike(others)) {\n throw new TypeError('second argument must be array-like');\n }\n\n var len = others.length;\n\n while (--len >= 0) {\n if (value < others[len]) {\n return false;\n }\n }\n\n return true;\n };\n /**\n * is.minimum\n * Test if `value` is less than `others` values.\n *\n * @param {Number} value value to test\n * @param {Array} others values to compare with\n * @return {Boolean} true if `value` is less than `others` values\n * @api public\n */\n\n\n is.minimum = function (value, others) {\n if (isActualNaN(value)) {\n throw new TypeError('NaN is not a valid value');\n } else if (!is.arraylike(others)) {\n throw new TypeError('second argument must be array-like');\n }\n\n var len = others.length;\n\n while (--len >= 0) {\n if (value > others[len]) {\n return false;\n }\n }\n\n return true;\n };\n /**\n * is.nan\n * Test if `value` is not a number.\n *\n * @param {*} value value to test\n * @return {Boolean} true if `value` is not a number, false otherwise\n * @api public\n */\n\n\n is.nan = function (value) {\n return !is.number(value) || value !== value;\n };\n /**\n * is.even\n * Test if `value` is an even number.\n *\n * @param {Number} value value to test\n * @return {Boolean} true if `value` is an even number, false otherwise\n * @api public\n */\n\n\n is.even = function (value) {\n return is.infinite(value) || is.number(value) && value === value && value % 2 === 0;\n };\n /**\n * is.odd\n * Test if `value` is an odd number.\n *\n * @param {Number} value value to test\n * @return {Boolean} true if `value` is an odd number, false otherwise\n * @api public\n */\n\n\n is.odd = function (value) {\n return is.infinite(value) || is.number(value) && value === value && value % 2 !== 0;\n };\n /**\n * is.ge\n * Test if `value` is greater than or equal to `other`.\n *\n * @param {Number} value value to test\n * @param {Number} other value to compare with\n * @return {Boolean}\n * @api public\n */\n\n\n is.ge = function (value, other) {\n if (isActualNaN(value) || isActualNaN(other)) {\n throw new TypeError('NaN is not a valid value');\n }\n\n return !is.infinite(value) && !is.infinite(other) && value >= other;\n };\n /**\n * is.gt\n * Test if `value` is greater than `other`.\n *\n * @param {Number} value value to test\n * @param {Number} other value to compare with\n * @return {Boolean}\n * @api public\n */\n\n\n is.gt = function (value, other) {\n if (isActualNaN(value) || isActualNaN(other)) {\n throw new TypeError('NaN is not a valid value');\n }\n\n return !is.infinite(value) && !is.infinite(other) && value > other;\n };\n /**\n * is.le\n * Test if `value` is less than or equal to `other`.\n *\n * @param {Number} value value to test\n * @param {Number} other value to compare with\n * @return {Boolean} if 'value' is less than or equal to 'other'\n * @api public\n */\n\n\n is.le = function (value, other) {\n if (isActualNaN(value) || isActualNaN(other)) {\n throw new TypeError('NaN is not a valid value');\n }\n\n return !is.infinite(value) && !is.infinite(other) && value <= other;\n };\n /**\n * is.lt\n * Test if `value` is less than `other`.\n *\n * @param {Number} value value to test\n * @param {Number} other value to compare with\n * @return {Boolean} if `value` is less than `other`\n * @api public\n */\n\n\n is.lt = function (value, other) {\n if (isActualNaN(value) || isActualNaN(other)) {\n throw new TypeError('NaN is not a valid value');\n }\n\n return !is.infinite(value) && !is.infinite(other) && value < other;\n };\n /**\n * is.within\n * Test if `value` is within `start` and `finish`.\n *\n * @param {Number} value value to test\n * @param {Number} start lower bound\n * @param {Number} finish upper bound\n * @return {Boolean} true if 'value' is is within 'start' and 'finish'\n * @api public\n */\n\n\n is.within = function (value, start, finish) {\n if (isActualNaN(value) || isActualNaN(start) || isActualNaN(finish)) {\n throw new TypeError('NaN is not a valid value');\n } else if (!is.number(value) || !is.number(start) || !is.number(finish)) {\n throw new TypeError('all arguments must be numbers');\n }\n\n var isAnyInfinite = is.infinite(value) || is.infinite(start) || is.infinite(finish);\n return isAnyInfinite || value >= start && value <= finish;\n };\n /**\n * Test object.\n */\n\n /**\n * is.object\n * Test if `value` is an object.\n *\n * @param {*} value value to test\n * @return {Boolean} true if `value` is an object, false otherwise\n * @api public\n */\n\n\n is.object = function (value) {\n return toStr$1.call(value) === '[object Object]';\n };\n /**\n * is.primitive\n * Test if `value` is a primitive.\n *\n * @param {*} value value to test\n * @return {Boolean} true if `value` is a primitive, false otherwise\n * @api public\n */\n\n\n is.primitive = function isPrimitive(value) {\n if (!value) {\n return true;\n }\n\n if (_typeof(value) === 'object' || is.object(value) || is.fn(value) || is.array(value)) {\n return false;\n }\n\n return true;\n };\n /**\n * is.hash\n * Test if `value` is a hash - a plain object literal.\n *\n * @param {*} value value to test\n * @return {Boolean} true if `value` is a hash, false otherwise\n * @api public\n */\n\n\n is.hash = function (value) {\n return is.object(value) && value.constructor === Object && !value.nodeType && !value.setInterval;\n };\n /**\n * Test regexp.\n */\n\n /**\n * is.regexp\n * Test if `value` is a regular expression.\n *\n * @param {*} value value to test\n * @return {Boolean} true if `value` is a regexp, false otherwise\n * @api public\n */\n\n\n is.regexp = function (value) {\n return toStr$1.call(value) === '[object RegExp]';\n };\n /**\n * Test string.\n */\n\n /**\n * is.string\n * Test if `value` is a string.\n *\n * @param {*} value value to test\n * @return {Boolean} true if 'value' is a string, false otherwise\n * @api public\n */\n\n\n is.string = function (value) {\n return toStr$1.call(value) === '[object String]';\n };\n /**\n * Test base64 string.\n */\n\n /**\n * is.base64\n * Test if `value` is a valid base64 encoded string.\n *\n * @param {*} value value to test\n * @return {Boolean} true if 'value' is a base64 encoded string, false otherwise\n * @api public\n */\n\n\n is.base64 = function (value) {\n return is.string(value) && (!value.length || base64Regex.test(value));\n };\n /**\n * Test base64 string.\n */\n\n /**\n * is.hex\n * Test if `value` is a valid hex encoded string.\n *\n * @param {*} value value to test\n * @return {Boolean} true if 'value' is a hex encoded string, false otherwise\n * @api public\n */\n\n\n is.hex = function (value) {\n return is.string(value) && (!value.length || hexRegex.test(value));\n };\n /**\n * is.symbol\n * Test if `value` is an ES6 Symbol\n *\n * @param {*} value value to test\n * @return {Boolean} true if `value` is a Symbol, false otherise\n * @api public\n */\n\n\n is.symbol = function (value) {\n return typeof Symbol === 'function' && toStr$1.call(value) === '[object Symbol]' && _typeof(symbolValueOf.call(value)) === 'symbol';\n };\n /**\n * is.bigint\n * Test if `value` is an ES-proposed BigInt\n *\n * @param {*} value value to test\n * @return {Boolean} true if `value` is a BigInt, false otherise\n * @api public\n */\n\n\n is.bigint = function (value) {\n // eslint-disable-next-line valid-typeof\n return typeof BigInt === 'function' && toStr$1.call(value) === '[object BigInt]' && typeof bigIntValueOf.call(value) === 'bigint';\n };\n\n var is_1 = is;\n\n /**\n * toString ref.\n */\n var toString$1 = Object.prototype.toString;\n /**\n * Return the type of `val`.\n *\n * @param {Mixed} val\n * @return {String}\n * @api public\n */\n\n var componentType$1 = function componentType(val) {\n switch (toString$1.call(val)) {\n case '[object Function]':\n return 'function';\n\n case '[object Date]':\n return 'date';\n\n case '[object RegExp]':\n return 'regexp';\n\n case '[object Arguments]':\n return 'arguments';\n\n case '[object Array]':\n return 'array';\n\n case '[object String]':\n return 'string';\n }\n\n if (val === null) return 'null';\n if (val === undefined) return 'undefined';\n if (val && val.nodeType === 1) return 'element';\n if (val === Object(val)) return 'object';\n return _typeof(val);\n };\n\n /**\n * Global Names\n */\n var globals = /\\b(Array|Date|Object|Math|JSON)\\b/g;\n /**\n * Return immediate identifiers parsed from `str`.\n *\n * @param {String} str\n * @param {String|Function} map function or prefix\n * @return {Array}\n * @api public\n */\n\n var componentProps = function componentProps(str, fn) {\n var p = unique(props(str));\n if (fn && 'string' == typeof fn) fn = prefixed(fn);\n if (fn) return map(str, p, fn);\n return p;\n };\n /**\n * Return immediate identifiers in `str`.\n *\n * @param {String} str\n * @return {Array}\n * @api private\n */\n\n\n function props(str) {\n return str.replace(/\\.\\w+|\\w+ *\\(|\"[^\"]*\"|'[^']*'|\\/([^/]+)\\//g, '').replace(globals, '').match(/[a-zA-Z_]\\w*/g) || [];\n }\n /**\n * Return `str` with `props` mapped with `fn`.\n *\n * @param {String} str\n * @param {Array} props\n * @param {Function} fn\n * @return {String}\n * @api private\n */\n\n\n function map(str, props, fn) {\n var re = /\\.\\w+|\\w+ *\\(|\"[^\"]*\"|'[^']*'|\\/([^/]+)\\/|[a-zA-Z_]\\w*/g;\n return str.replace(re, function (_) {\n if ('(' == _[_.length - 1]) return fn(_);\n if (!~props.indexOf(_)) return _;\n return fn(_);\n });\n }\n /**\n * Return unique array.\n *\n * @param {Array} arr\n * @return {Array}\n * @api private\n */\n\n\n function unique(arr) {\n var ret = [];\n\n for (var i = 0; i < arr.length; i++) {\n if (~ret.indexOf(arr[i])) continue;\n ret.push(arr[i]);\n }\n\n return ret;\n }\n /**\n * Map with prefix `str`.\n */\n\n\n function prefixed(str) {\n return function (_) {\n return str + _;\n };\n }\n\n /**\n * Module Dependencies\n */\n\n var expr;\n\n try {\n expr = componentProps;\n } catch (e) {\n expr = componentProps;\n }\n /**\n * Expose `toFunction()`.\n */\n\n\n var toFunction_1 = toFunction;\n /**\n * Convert `obj` to a `Function`.\n *\n * @param {Mixed} obj\n * @return {Function}\n * @api private\n */\n\n function toFunction(obj) {\n switch ({}.toString.call(obj)) {\n case '[object Object]':\n return objectToFunction(obj);\n\n case '[object Function]':\n return obj;\n\n case '[object String]':\n return stringToFunction(obj);\n\n case '[object RegExp]':\n return regexpToFunction(obj);\n\n default:\n return defaultToFunction(obj);\n }\n }\n /**\n * Default to strict equality.\n *\n * @param {Mixed} val\n * @return {Function}\n * @api private\n */\n\n\n function defaultToFunction(val) {\n return function (obj) {\n return val === obj;\n };\n }\n /**\n * Convert `re` to a function.\n *\n * @param {RegExp} re\n * @return {Function}\n * @api private\n */\n\n\n function regexpToFunction(re) {\n return function (obj) {\n return re.test(obj);\n };\n }\n /**\n * Convert property `str` to a function.\n *\n * @param {String} str\n * @return {Function}\n * @api private\n */\n\n\n function stringToFunction(str) {\n // immediate such as \"> 20\"\n if (/^ *\\W+/.test(str)) return new Function('_', 'return _ ' + str); // properties such as \"name.first\" or \"age > 18\" or \"age > 18 && age < 36\"\n\n return new Function('_', 'return ' + get(str));\n }\n /**\n * Convert `object` to a function.\n *\n * @param {Object} object\n * @return {Function}\n * @api private\n */\n\n\n function objectToFunction(obj) {\n var match = {};\n\n for (var key in obj) {\n match[key] = typeof obj[key] === 'string' ? defaultToFunction(obj[key]) : toFunction(obj[key]);\n }\n\n return function (val) {\n if (_typeof(val) !== 'object') return false;\n\n for (var key in match) {\n if (!(key in val)) return false;\n if (!match[key](val[key])) return false;\n }\n\n return true;\n };\n }\n /**\n * Built the getter function. Supports getter style functions\n *\n * @param {String} str\n * @return {String}\n * @api private\n */\n\n\n function get(str) {\n var props = expr(str);\n if (!props.length) return '_.' + str;\n var val, i, prop;\n\n for (i = 0; i < props.length; i++) {\n prop = props[i];\n val = '_.' + prop;\n val = \"('function' == typeof \" + val + \" ? \" + val + \"() : \" + val + \")\"; // mimic negative lookbehind to avoid problems with nested properties\n\n str = stripNested(prop, str, val);\n }\n\n return str;\n }\n /**\n * Mimic negative lookbehind to avoid problems with nested properties.\n *\n * See: http://blog.stevenlevithan.com/archives/mimic-lookbehind-javascript\n *\n * @param {String} prop\n * @param {String} str\n * @param {String} val\n * @return {String}\n * @api private\n */\n\n\n function stripNested(prop, str, val) {\n return str.replace(new RegExp('(\\\\.)?' + prop, 'g'), function ($0, $1) {\n return $1 ? $0 : val;\n });\n }\n\n /**\n * Module dependencies.\n */\n\n try {\n var type$1 = componentType$1;\n } catch (err) {\n var type$1 = componentType$1;\n }\n /**\n * HOP reference.\n */\n\n\n var has$2 = Object.prototype.hasOwnProperty;\n /**\n * Iterate the given `obj` and invoke `fn(val, i)`\n * in optional context `ctx`.\n *\n * @param {String|Array|Object} obj\n * @param {Function} fn\n * @param {Object} [ctx]\n * @api public\n */\n\n var componentEach = function componentEach(obj, fn, ctx) {\n fn = toFunction_1(fn);\n ctx = ctx || this;\n\n switch (type$1(obj)) {\n case 'array':\n return array(obj, fn, ctx);\n\n case 'object':\n if ('number' == typeof obj.length) return array(obj, fn, ctx);\n return object(obj, fn, ctx);\n\n case 'string':\n return string(obj, fn, ctx);\n }\n };\n /**\n * Iterate string chars.\n *\n * @param {String} obj\n * @param {Function} fn\n * @param {Object} ctx\n * @api private\n */\n\n\n function string(obj, fn, ctx) {\n for (var i = 0; i < obj.length; ++i) {\n fn.call(ctx, obj.charAt(i), i);\n }\n }\n /**\n * Iterate object keys.\n *\n * @param {Object} obj\n * @param {Function} fn\n * @param {Object} ctx\n * @api private\n */\n\n\n function object(obj, fn, ctx) {\n for (var key in obj) {\n if (has$2.call(obj, key)) {\n fn.call(ctx, key, obj[key]);\n }\n }\n }\n /**\n * Iterate array-ish.\n *\n * @param {Array|Object} obj\n * @param {Function} fn\n * @param {Object} ctx\n * @api private\n */\n\n\n function array(obj, fn, ctx) {\n for (var i = 0; i < obj.length; ++i) {\n fn.call(ctx, obj[i], i);\n }\n }\n\n var GA = /*#__PURE__*/function () {\n function GA(config, analytics) {\n _classCallCheck(this, GA);\n\n this.analytics = analytics;\n this.trackingID = config.trackingID;\n this.sendUserId = config.sendUserId || false;\n this.dimensions = config.dimensions || [];\n this.metrics = config.metrics || [];\n this.contentGroupings = config.contentGroupings || [];\n this.nonInteraction = config.nonInteraction || false;\n this.anonymizeIp = config.anonymizeIp || false;\n this.useGoogleAmpClientId = config.useGoogleAmpClientId || false;\n this.domain = config.domain || \"auto\";\n this.doubleClick = config.doubleClick || false;\n this.enhancedEcommerce = config.enhancedEcommerce || false;\n this.enhancedLinkAttribution = config.enhancedLinkAttribution || false;\n this.includeSearch = config.includeSearch || false;\n this.setAllMappedProps = config.setAllMappedProps || true;\n this.siteSpeedSampleRate = config.siteSpeedSampleRate || 1;\n this.sampleRate = config.sampleRate || 100;\n this.trackCategorizedPages = config.trackCategorizedPages || true;\n this.trackNamedPages = config.trackNamedPages || true;\n this.optimizeContainerId = config.optimize || \"\";\n this.resetCustomDimensionsOnPage = config.resetCustomDimensionsOnPage || [];\n this.enhancedEcommerceLoaded = 0;\n this.namedTracker = config.namedTracker || false;\n this.name = \"GA\";\n this.eventWithCategoryFieldProductScoped = [\"product clicked\", \"product added\", \"product viewed\", \"product removed\"];\n }\n\n _createClass(GA, [{\n key: \"initializeGlobalObject\",\n value: function initializeGlobalObject() {\n window.GoogleAnalyticsObject = \"ga\";\n\n window.ga = window.ga || function a() {\n window.ga.q = window.ga.q || [];\n window.ga.q.push(arguments);\n };\n\n window.ga.l = new Date().getTime();\n }\n }, {\n key: \"loadScript\",\n value: function loadScript() {\n ScriptLoader(\"google-analytics\", \"https://www.google-analytics.com/analytics.js\");\n }\n }, {\n key: \"init\",\n value: function init() {\n var _this = this;\n\n this.pageCalled = false;\n this.dimensionsArray = {};\n var elementTo;\n this.dimensions.forEach(function (element) {\n if (element.to.startsWith(\"dimension\")) {\n _this.dimensionsArray[element.from] = element.to;\n } else {\n /* eslint-disable no-param-reassign */\n elementTo = element.to.replace(/cd/g, \"dimension\");\n _this.dimensionsArray[element.from] = elementTo;\n }\n });\n this.metricsArray = {};\n this.metrics.forEach(function (element) {\n if (element.to.startsWith(\"dimension\")) {\n _this.metricsArray[element.from] = element.to;\n } else {\n elementTo = element.to.replace(/cm/g, \"metric\");\n _this.metricsArray[element.from] = elementTo;\n }\n });\n this.contentGroupingsArray = {};\n this.contentGroupings.forEach(function (element) {\n _this.contentGroupingsArray[element.from] = element.to;\n });\n\n if (this.analytics.loadIntegration) {\n this.initializeGlobalObject();\n this.loadScript();\n } // create ga with these properties. if the properties are empty it will take default values.\n\n\n var config = {\n cookieDomain: this.domain || GA.prototype.defaults.domain,\n siteSpeedSampleRate: this.siteSpeedSampleRate,\n sampleRate: this.sampleRate,\n allowLinker: true,\n useAmpClientId: this.useGoogleAmpClientId\n }; // set tracker name to rudderGATracker if on\n\n if (this.namedTracker) {\n config.name = \"rudderGATracker\";\n this.trackerName = \"rudderGATracker.\";\n } else {\n this.trackerName = \"\";\n }\n\n window.ga(\"create\", this.trackingID, config);\n\n if (this.analytics.loadIntegration) {\n if (this.optimizeContainerId) {\n window.ga(\"\".concat(this.trackerName, \"require\"), this.optimizeContainerId);\n } // ecommerce is required\n\n\n if (!this.ecommerce) {\n window.ga(\"\".concat(this.trackerName, \"require\"), \"ecommerce\");\n this.ecommerce = true;\n } // this is to display advertising\n\n\n if (this.doubleClick) {\n window.ga(\"\".concat(this.trackerName, \"require\"), \"displayfeatures\");\n } // https://support.google.com/analytics/answer/2558867?hl=en\n\n\n if (this.enhancedLinkAttribution) {\n window.ga(\"\".concat(this.trackerName, \"require\"), \"linkid\");\n }\n } // a warning is in ga debugger if anonymize is false after initialization\n\n\n if (this.anonymizeIp) {\n window.ga(\"\".concat(this.trackerName, \"set\"), \"anonymizeIp\", true);\n }\n\n logger.debug(\"===in init GA===\");\n }\n }, {\n key: \"identify\",\n value: function identify(rudderElement) {\n // send global id\n if (this.sendUserId && rudderElement.message.userId) {\n window.ga(\"\".concat(this.trackerName, \"set\"), \"userId\", rudderElement.message.userId);\n } // custom dimensions and metrics\n\n\n var custom = this.metricsFunction(rudderElement.message.context.traits, this.dimensionsArray, this.metricsArray, this.contentGroupingsArray);\n\n if (Object.keys(custom).length) {\n window.ga(\"\".concat(this.trackerName, \"set\"), custom);\n }\n\n logger.debug(\"in GoogleAnalyticsManager identify\");\n }\n }, {\n key: \"track\",\n value: function track(rudderElement) {\n var _this2 = this;\n\n var self = this; // Ecommerce events\n\n var _rudderElement$messag = rudderElement.message,\n event = _rudderElement$messag.event,\n properties = _rudderElement$messag.properties,\n name = _rudderElement$messag.name;\n var options = this.extractCheckoutOptions(rudderElement);\n var props = rudderElement.message.properties;\n var products = properties.products;\n var total = properties.total;\n var data = {};\n var eventCategory = rudderElement.message.properties.category;\n var orderId = properties.order_id;\n var eventAction = event || name || \"\";\n var eventLabel = rudderElement.message.properties.label;\n var eventValue = \"\";\n var payload;\n var campaign = rudderElement.message.context.campaign;\n var params;\n var filters;\n var sorts;\n\n if (event === \"Order Completed\" && !this.enhancedEcommerce) {\n // order_id is required\n if (!orderId) {\n logger.debug(\"order_id not present events are not sent to GA\");\n return;\n } // add transaction\n\n\n window.ga(\"\".concat(this.trackerName, \"ecommerce:addTransaction\"), {\n affiliation: properties.affiliation,\n shipping: properties.shipping,\n revenue: total,\n tax: properties.tax,\n id: orderId,\n currency: properties.currency\n }); // products added\n\n products.forEach(function (product) {\n var productTrack = self.createProductTrack(rudderElement, product);\n window.ga(\"\".concat(_this2.trackerName, \"ecommerce:addItem\"), {\n category: productTrack.properties.category,\n quantity: productTrack.properties.quantity,\n price: productTrack.properties.price,\n name: productTrack.properties.name,\n sku: productTrack.properties.sku,\n id: orderId,\n currency: productTrack.properties.currency\n });\n });\n window.ga(\"\".concat(this.trackerName, \"ecommerce:send\"));\n } // enhanced ecommerce events\n else if (this.enhancedEcommerce) {\n switch (event) {\n case \"Checkout Started\":\n case \"Checkout Step Viewed\":\n case \"Order Updated\":\n this.loadEnhancedEcommerce(rudderElement);\n componentEach(products, function (product) {\n var productTrack = self.createProductTrack(rudderElement, product);\n productTrack = {\n message: productTrack\n };\n self.enhancedEcommerceTrackProduct(productTrack);\n });\n window.ga(\"\".concat(this.trackerName, \"ec:setAction\"), \"checkout\", {\n step: properties.step || 1,\n option: options || undefined\n });\n this.pushEnhancedEcommerce(rudderElement);\n break;\n\n case \"Checkout Step Completed\":\n if (!props.step) {\n logger.debug(\"step not present events are not sent to GA\");\n return;\n }\n\n params = {\n step: props.step || 1,\n option: options || undefined\n };\n this.loadEnhancedEcommerce(rudderElement);\n window.ga(\"\".concat(this.trackerName, \"ec:setAction\"), \"checkout_option\", params);\n window.ga(\"\".concat(this.trackerName, \"send\"), \"event\", \"Checkout\", \"Option\");\n break;\n\n case \"Order Completed\":\n total = rudderElement.message.properties.total || rudderElement.message.properties.revenue || 0;\n\n if (!orderId) {\n logger.debug(\"order_id not present events are not sent to GA\");\n return;\n }\n\n this.loadEnhancedEcommerce(rudderElement);\n componentEach(products, function (product) {\n var productTrack = self.createProductTrack(rudderElement, product);\n productTrack = {\n message: productTrack\n };\n self.enhancedEcommerceTrackProduct(productTrack);\n });\n window.ga(\"\".concat(this.trackerName, \"ec:setAction\"), \"purchase\", {\n id: orderId,\n affiliation: props.affiliation,\n revenue: total,\n tax: props.tax,\n shipping: props.shipping,\n coupon: props.coupon\n });\n this.pushEnhancedEcommerce(rudderElement);\n break;\n\n case \"Order Refunded\":\n if (!orderId) {\n logger.debug(\"order_id not present events are not sent to GA\");\n return;\n }\n\n this.loadEnhancedEcommerce(rudderElement);\n componentEach(products, function (product) {\n var track = {\n properties: product\n };\n window.ga(\"\".concat(_this2.trackerName, \"ec:addProduct\"), {\n id: track.properties.product_id || track.properties.id || track.properties.sku,\n quantity: track.properties.quantity\n });\n });\n window.ga(\"\".concat(this.trackerName, \"ec:setAction\"), \"refund\", {\n id: orderId\n });\n this.pushEnhancedEcommerce(rudderElement);\n break;\n\n case \"Product Added\":\n this.loadEnhancedEcommerce(rudderElement);\n this.enhancedEcommerceTrackProductAction(rudderElement, \"add\", null);\n this.pushEnhancedEcommerce(rudderElement);\n break;\n\n case \"Product Removed\":\n this.loadEnhancedEcommerce(rudderElement);\n this.enhancedEcommerceTrackProductAction(rudderElement, \"remove\", null);\n this.pushEnhancedEcommerce(rudderElement);\n break;\n\n case \"Product Viewed\":\n this.loadEnhancedEcommerce(rudderElement);\n if (props.list) data.list = props.list;\n this.enhancedEcommerceTrackProductAction(rudderElement, \"detail\", data);\n this.pushEnhancedEcommerce(rudderElement);\n break;\n\n case \"Product Clicked\":\n this.loadEnhancedEcommerce(rudderElement);\n if (props.list) data.list = props.list;\n this.enhancedEcommerceTrackProductAction(rudderElement, \"click\", data);\n this.pushEnhancedEcommerce(rudderElement);\n break;\n\n case \"Promotion Viewed\":\n this.loadEnhancedEcommerce(rudderElement);\n window.ga(\"\".concat(this.trackerName, \"ec:addPromo\"), {\n id: props.promotion_id || props.id,\n name: props.name,\n creative: props.creative,\n position: props.position\n });\n this.pushEnhancedEcommerce(rudderElement);\n break;\n\n case \"Promotion Clicked\":\n this.loadEnhancedEcommerce(rudderElement);\n window.ga(\"\".concat(this.trackerName, \"ec:addPromo\"), {\n id: props.promotion_id || props.id,\n name: props.name,\n creative: props.creative,\n position: props.position\n });\n window.ga(\"\".concat(this.trackerName, \"ec:setAction\"), \"promo_click\", {});\n this.pushEnhancedEcommerce(rudderElement);\n break;\n\n case \"Product List Viewed\":\n this.loadEnhancedEcommerce(rudderElement);\n componentEach(products, function (product) {\n var item = {\n properties: product\n };\n\n if (!(item.properties.product_id || item.properties.sku) && !item.properties.name) {\n logger.debug(\"product_id/sku/name of product not present events are not sent to GA\");\n return;\n }\n\n var impressionObj = {\n id: item.properties.product_id || item.properties.sku,\n name: item.properties.name,\n category: item.properties.category || props.category,\n list: props.list_id || props.category || \"products\",\n brand: item.properties.band,\n variant: item.properties.variant,\n price: item.properties.price,\n position: self.getProductPosition(item, products)\n };\n impressionObj = _objectSpread2(_objectSpread2({}, impressionObj), self.metricsFunction(item.properties, self.dimensionsArray, self.metricsArray, self.contentGroupingsArray));\n Object.keys(impressionObj).forEach(function (key) {\n if (impressionObj[key] === undefined) delete impressionObj[key];\n });\n window.ga(\"\".concat(_this2.trackerName, \"ec:addImpression\"), impressionObj);\n });\n this.pushEnhancedEcommerce(rudderElement);\n break;\n\n case \"Product List Filtered\":\n props.filters = props.filters || [];\n props.sorts = props.sorts || [];\n filters = props.filters.map(function (obj) {\n return \"\".concat(obj.type, \":\").concat(obj.value);\n }).join();\n sorts = props.sorters.map(function (obj) {\n return \"\".concat(obj.type, \":\").concat(obj.value);\n }).join();\n this.loadEnhancedEcommerce(rudderElement);\n componentEach(products, function (product) {\n var item = {\n properties: product\n };\n\n if (!(item.properties.product_id || item.properties.sku) && !item.properties.name) {\n logger.debug(\"product_id/sku/name of product not present events are not sent to GA\");\n return;\n }\n\n var impressionObj = {\n id: item.properties.product_id || item.sku,\n name: item.name,\n category: item.category || props.category,\n list: props.list_id || props.category || \"search results\",\n brand: props.brand,\n variant: \"\".concat(filters, \"::\").concat(sorts),\n price: item.price,\n position: self.getProductPosition(item, products)\n };\n impressionObj = _objectSpread2({\n impressionObj: impressionObj\n }, self.metricsFunction(item.properties, self.dimensionsArray, self.metricsArray, self.contentGroupingsArray));\n Object.keys(impressionObj).forEach(function (key) {\n if (impressionObj[key] === undefined) delete impressionObj[key];\n });\n window.ga(\"\".concat(_this2.trackerName, \"ec:addImpression\"), impressionObj);\n });\n this.pushEnhancedEcommerce(rudderElement);\n break;\n\n default:\n if (rudderElement.message.properties) {\n eventValue = rudderElement.message.properties.value ? rudderElement.message.properties.value : rudderElement.message.properties.revenue;\n }\n\n payload = {\n eventCategory: eventCategory || \"All\",\n eventAction: eventAction,\n eventLabel: eventLabel,\n eventValue: this.formatValue(eventValue),\n // Allow users to override their nonInteraction integration setting for any single particluar event.\n nonInteraction: rudderElement.message.properties.nonInteraction !== undefined ? !!rudderElement.message.properties.nonInteraction : !!this.nonInteraction\n };\n\n if (campaign) {\n if (campaign.name) payload.campaignName = campaign.name;\n if (campaign.source) payload.campaignSource = campaign.source;\n if (campaign.medium) payload.campaignMedium = campaign.medium;\n if (campaign.content) payload.campaignContent = campaign.content;\n if (campaign.term) payload.campaignKeyword = campaign.term;\n }\n\n payload = _objectSpread2({\n payload: payload\n }, this.setCustomDimenionsAndMetrics(rudderElement.message.properties));\n window.ga(\"\".concat(this.trackerName, \"send\"), \"event\", payload.payload);\n logger.debug(\"in GoogleAnalyticsManager track\");\n }\n } else {\n if (rudderElement.message.properties) {\n eventValue = rudderElement.message.properties.value ? rudderElement.message.properties.value : rudderElement.message.properties.revenue;\n }\n\n payload = {\n eventCategory: eventCategory || \"All\",\n eventAction: eventAction,\n eventLabel: eventLabel,\n eventValue: this.formatValue(eventValue),\n // Allow users to override their nonInteraction integration setting for any single particluar event.\n nonInteraction: rudderElement.message.properties.nonInteraction !== undefined ? !!rudderElement.message.properties.nonInteraction : !!this.nonInteraction\n };\n\n if (campaign) {\n if (campaign.name) payload.campaignName = campaign.name;\n if (campaign.source) payload.campaignSource = campaign.source;\n if (campaign.medium) payload.campaignMedium = campaign.medium;\n if (campaign.content) payload.campaignContent = campaign.content;\n if (campaign.term) payload.campaignKeyword = campaign.term;\n }\n\n payload = _objectSpread2({\n payload: payload\n }, this.setCustomDimenionsAndMetrics(rudderElement.message.properties));\n window.ga(\"\".concat(this.trackerName, \"send\"), \"event\", payload.payload);\n logger.debug(\"in GoogleAnalyticsManager track\");\n }\n }\n }, {\n key: \"page\",\n value: function page(rudderElement) {\n logger.debug(\"in GoogleAnalyticsManager page\");\n var category = rudderElement.message.properties.category;\n var eventProperties = rudderElement.message.properties;\n var name;\n\n if (rudderElement.message.properties.category && rudderElement.message.name) {\n name = \"\".concat(rudderElement.message.properties.category, \" \").concat(rudderElement.message.name);\n } else if (!rudderElement.message.properties.category && !rudderElement.message.name) {\n name = \"\";\n } else {\n name = rudderElement.message.name || rudderElement.message.properties.category;\n }\n\n var campaign = rudderElement.message.context.campaign || {};\n var pageview = {};\n var pagePath = this.path(eventProperties, this.includeSearch);\n var pageReferrer = rudderElement.message.properties.referrer || \"\";\n var pageTitle;\n if (!rudderElement.message.properties.category && !rudderElement.message.name) pageTitle = eventProperties.title;else if (!rudderElement.message.properties.category) pageTitle = rudderElement.message.name;else if (!rudderElement.message.name) pageTitle = rudderElement.message.properties.category;else pageTitle = name;\n pageview.page = pagePath;\n pageview.title = pageTitle;\n pageview.location = eventProperties.url;\n\n if (campaign) {\n if (campaign.name) pageview.campaignName = campaign.name;\n if (campaign.source) pageview.campaignSource = campaign.source;\n if (campaign.medium) pageview.campaignMedium = campaign.medium;\n if (campaign.content) pageview.campaignContent = campaign.content;\n if (campaign.term) pageview.campaignKeyword = campaign.term;\n }\n\n var resetCustomDimensions = {};\n\n for (var i = 0; i < this.resetCustomDimensionsOnPage.length; i += 1) {\n var property = this.resetCustomDimensionsOnPage[i].resetCustomDimensionsOnPage;\n\n if (this.dimensionsArray[property]) {\n resetCustomDimensions[this.dimensionsArray[property]] = null;\n }\n }\n\n window.ga(\"\".concat(this.trackerName, \"set\"), resetCustomDimensions); // adds more properties to pageview which will be sent\n\n pageview = _objectSpread2(_objectSpread2({}, pageview), this.setCustomDimenionsAndMetrics(eventProperties));\n var payload = {\n page: pagePath,\n title: pageTitle\n };\n logger.debug(\"referrer: \" + pageReferrer);\n logger.debug(\"document referrer: \", document.referrer);\n if (pageReferrer !== document.referrer) payload.referrer = pageReferrer;\n window.ga(\"\".concat(this.trackerName, \"set\"), payload);\n if (this.pageCalled) delete pageview.location;\n window.ga(\"\".concat(this.trackerName, \"send\"), \"pageview\", pageview); // categorized pages\n\n if (category && this.trackCategorizedPages) {\n this.track(rudderElement, {\n nonInteraction: 1\n });\n } // named pages\n\n\n if (name && this.trackNamedPages) {\n this.track(rudderElement, {\n nonInteraction: 1\n });\n }\n\n this.pageCalled = true;\n }\n }, {\n key: \"isLoaded\",\n value: function isLoaded() {\n logger.debug(\"in GA isLoaded\");\n return !!window.gaplugins;\n }\n }, {\n key: \"isReady\",\n value: function isReady() {\n return !!window.gaplugins;\n }\n /**\n *\n *\n * @param {} obj incoming properties\n * @param {} dimensions the dimension mapping which is entered by the user in the ui. Eg: firstName : dimension1\n * @param {} metrics the metrics mapping which is entered by the user in the ui. Eg: age : metrics1\n * @param {} contentGroupings the contentGrouping mapping which is entered by the user in the ui. Eg: section : contentGrouping1\n *\n * This function maps these dimensions,metrics and contentGroupings with the incoming properties to send it to GA where the user has to set the corresponding dimension/metric/content group.\n * For example if:\n * if obj -> {age: 24}\n * metrics -> {age: metric1}\n * then the function will return {metric1:24} and it will be shown sent to GA if metric1 is set there.\n *\n * if obj -> {age: 24}\n * metrics - {revenue: metric2}\n * then the function will return {} as there is no corresponding mapping of metric.\n *\n */\n\n }, {\n key: \"metricsFunction\",\n value: function metricsFunction(obj, dimensions, metrics, contentGroupings) {\n var ret = {};\n componentEach([metrics, dimensions, contentGroupings], function (group) {\n componentEach(group, function (prop, key) {\n var value = obj[prop];\n if (is_1[\"boolean\"](value)) value = value.toString();\n if (value || value === 0) ret[key] = value;\n });\n });\n return ret;\n }\n }, {\n key: \"formatValue\",\n value: function formatValue(value) {\n if (!value || value < 0) return 0;\n return Math.round(value);\n }\n /**\n * @param {} props\n * @param {} inputs\n */\n\n }, {\n key: \"setCustomDimenionsAndMetrics\",\n value: function setCustomDimenionsAndMetrics(props) {\n var ret = {};\n var custom = this.metricsFunction(props, this.dimensionsArray, this.metricsArray, this.contentGroupingsArray);\n\n if (Object.keys(custom).length) {\n if (this.setAllMappedProps) {\n window.ga(\"\".concat(this.trackerName, \"set\"), custom);\n } else {\n Object.keys(custom).forEach(function (key) {\n ret[key] = custom[key];\n }); // each(custom, (key, value) => {\n // ret[key] = value;\n // });\n }\n }\n\n return ret;\n }\n /**\n * Return the path based on `properties` and `options`\n *\n * @param {} properties\n * @param {} includeSearch\n */\n\n }, {\n key: \"path\",\n value: function path(properties, includeSearch) {\n var str = properties.path;\n\n if (properties) {\n if (includeSearch && properties.search) {\n str += properties.search;\n }\n }\n\n return str;\n }\n /**\n * Creates a track out of product properties\n * @param {} rudderElement\n * @param {} properties\n */\n\n }, {\n key: \"createProductTrack\",\n value: function createProductTrack(rudderElement, properties) {\n var props = properties || {};\n props.currency = properties.currency || rudderElement.message.properties.currency;\n return {\n properties: props\n };\n }\n /**\n * Loads ec.js (unless already loaded)\n * @param {} rudderElement\n * @param {} a\n */\n\n }, {\n key: \"loadEnhancedEcommerce\",\n value: function loadEnhancedEcommerce(rudderElement) {\n if (this.enhancedEcommerceLoaded === 0) {\n window.ga(\"\".concat(this.trackerName, \"require\"), \"ec\");\n this.enhancedEcommerceLoaded = 1;\n }\n\n window.ga(\"\".concat(this.trackerName, \"set\"), \"&cu\", rudderElement.message.properties.currency);\n }\n /**\n * helper class to not repeat `ec:addProduct`\n * @param {} rudderElement\n * @param {} inputs\n */\n\n }, {\n key: \"enhancedEcommerceTrackProduct\",\n value: function enhancedEcommerceTrackProduct(rudderElement) {\n var props = rudderElement.message.properties;\n var product = {\n id: props.product_id || props.id || props.sku,\n name: props.name,\n category: props.category,\n quantity: props.quantity,\n price: props.price,\n brand: props.brand,\n variant: props.variant,\n currency: props.currency\n };\n\n if (props.position != null) {\n product.position = Math.round(props.position);\n }\n\n var coupon = props.coupon;\n if (coupon) product.coupon = coupon;\n product = _objectSpread2(_objectSpread2({}, product), this.metricsFunction(props, this.dimensionsArray, this.metricsArray, this.contentGroupingsArray));\n window.ga(\"\".concat(this.trackerName, \"ec:addProduct\"), product);\n }\n /**\n * set action with data\n * @param {} rudderElement\n * @param {} action\n * @param {} data\n * @param {} inputs\n */\n\n }, {\n key: \"enhancedEcommerceTrackProductAction\",\n value: function enhancedEcommerceTrackProductAction(rudderElement, action, data) {\n this.enhancedEcommerceTrackProduct(rudderElement);\n window.ga(\"\".concat(this.trackerName, \"ec:setAction\"), action, data || {});\n }\n /**\n * @param {} rudderElement\n * @param {} inputs\n */\n\n }, {\n key: \"pushEnhancedEcommerce\",\n value: function pushEnhancedEcommerce(rudderElement) {\n var _window$ga;\n\n var args = rejectArr([\"send\", \"event\", rudderElement.message.properties.category || \"EnhancedEcommerce\", rudderElement.message.event || \"Action not defined\", rudderElement.message.properties.label, _objectSpread2({\n nonInteraction: 1\n }, this.setCustomDimenionsAndMetrics(rudderElement.message.properties))]);\n var event = rudderElement.message.event;\n event = event.toLowerCase();\n\n if (this.eventWithCategoryFieldProductScoped.includes(event)) {\n args[2] = \"EnhancedEcommerce\";\n }\n\n (_window$ga = window.ga).call.apply(_window$ga, [window].concat(_toConsumableArray(args)));\n }\n /**\n * @param {} item\n * @param {} products\n */\n\n }, {\n key: \"getProductPosition\",\n value: function getProductPosition(item, products) {\n var position = item.properties.position;\n\n if (typeof position !== \"undefined\" && !Number.isNaN(Number(position)) && Number(position) > -1) {\n return position;\n }\n\n return products.map(function (x) {\n return x.product_id;\n }).indexOf(item.properties.product_id) + 1;\n }\n /**\n *extracts checkout options\n * @param {} rudderElement\n */\n\n }, {\n key: \"extractCheckoutOptions\",\n value: function extractCheckoutOptions(rudderElement) {\n var options = [rudderElement.message.properties.paymentMethod, rudderElement.message.properties.shippingMethod]; // remove all nulls and join with commas.\n\n var valid = rejectArr(options);\n return valid.length > 0 ? valid.join(\", \") : null;\n }\n }]);\n\n return GA;\n }();\n\n var index$1 = GA ;\n\n var Hotjar = /*#__PURE__*/function () {\n function Hotjar(config) {\n _classCallCheck(this, Hotjar);\n\n this.siteId = config.siteID; // 1549611\n\n this.name = \"HOTJAR\";\n this._ready = false;\n }\n\n _createClass(Hotjar, [{\n key: \"init\",\n value: function init() {\n window.hotjarSiteId = this.siteId;\n\n (function (h, o, t, j, a, r) {\n h.hj = h.hj || function () {\n (h.hj.q = h.hj.q || []).push(arguments);\n };\n\n h._hjSettings = {\n hjid: h.hotjarSiteId,\n hjsv: 6\n };\n a = o.getElementsByTagName(\"head\")[0];\n r = o.createElement(\"script\");\n r.async = 1;\n r.src = t + h._hjSettings.hjid + j + h._hjSettings.hjsv;\n a.appendChild(r);\n })(window, document, \"https://static.hotjar.com/c/hotjar-\", \".js?sv=\");\n\n this._ready = true;\n logger.debug(\"===in init Hotjar===\");\n }\n }, {\n key: \"identify\",\n value: function identify(rudderElement) {\n var userId = rudderElement.message.userId || rudderElement.message.anonymousId;\n\n if (!userId) {\n logger.debug(\"[Hotjar] identify:: user id is required\");\n return;\n }\n\n var traits = rudderElement.message.context.traits;\n window.hj(\"identify\", rudderElement.message.userId, traits);\n }\n }, {\n key: \"track\",\n value: function track(rudderElement) {\n logger.debug(\"[Hotjar] track:: method not supported\");\n }\n }, {\n key: \"page\",\n value: function page(rudderElement) {\n logger.debug(\"[Hotjar] page:: method not supported\");\n }\n }, {\n key: \"isLoaded\",\n value: function isLoaded() {\n return this._ready;\n }\n }, {\n key: \"isReady\",\n value: function isReady() {\n return this._ready;\n }\n }]);\n\n return Hotjar;\n }();\n\n var index$2 = Hotjar ;\n\n var GoogleAds = /*#__PURE__*/function () {\n function GoogleAds(config) {\n _classCallCheck(this, GoogleAds);\n\n // this.accountId = config.accountId;//AW-696901813\n this.conversionId = config.conversionID;\n this.pageLoadConversions = config.pageLoadConversions;\n this.clickEventConversions = config.clickEventConversions;\n this.defaultPageConversion = config.defaultPageConversion;\n this.name = \"GOOGLEADS\";\n }\n\n _createClass(GoogleAds, [{\n key: \"init\",\n value: function init() {\n var sourceUrl = \"https://www.googletagmanager.com/gtag/js?id=\".concat(this.conversionId);\n\n (function (id, src, document) {\n logger.debug(\"in script loader=== \".concat(id));\n var js = document.createElement(\"script\");\n js.src = src;\n js.async = 1;\n js.type = \"text/javascript\";\n js.id = id;\n var e = document.getElementsByTagName(\"head\")[0];\n logger.debug(\"==script==\", e);\n e.appendChild(js);\n })(\"googleAds-integration\", sourceUrl, document);\n\n window.dataLayer = window.dataLayer || [];\n\n window.gtag = function () {\n window.dataLayer.push(arguments);\n };\n\n window.gtag(\"js\", new Date());\n window.gtag(\"config\", this.conversionId);\n logger.debug(\"===in init Google Ads===\");\n }\n }, {\n key: \"identify\",\n value: function identify(rudderElement) {\n logger.debug(\"[GoogleAds] identify:: method not supported\");\n } // https://developers.google.com/gtagjs/reference/event\n\n }, {\n key: \"track\",\n value: function track(rudderElement) {\n logger.debug(\"in GoogleAdsAnalyticsManager track\");\n var conversionData = this.getConversionData(this.clickEventConversions, rudderElement.message.event);\n\n if (conversionData.conversionLabel) {\n var conversionLabel = conversionData.conversionLabel;\n var eventName = conversionData.eventName;\n var sendToValue = \"\".concat(this.conversionId, \"/\").concat(conversionLabel);\n var properties = {};\n\n if (rudderElement.properties) {\n properties.value = rudderElement.properties.revenue;\n properties.currency = rudderElement.properties.currency;\n properties.transaction_id = rudderElement.properties.order_id;\n }\n\n properties.send_to = sendToValue;\n window.gtag(\"event\", eventName, properties);\n }\n }\n }, {\n key: \"page\",\n value: function page(rudderElement) {\n logger.debug(\"in GoogleAdsAnalyticsManager page\");\n var conversionData = this.getConversionData(this.pageLoadConversions, rudderElement.message.name);\n\n if (conversionData.conversionLabel) {\n var conversionLabel = conversionData.conversionLabel;\n var eventName = conversionData.eventName;\n window.gtag(\"event\", eventName, {\n send_to: \"\".concat(this.conversionId, \"/\").concat(conversionLabel)\n });\n }\n }\n }, {\n key: \"getConversionData\",\n value: function getConversionData(eventTypeConversions, eventName) {\n var conversionData = {};\n\n if (eventTypeConversions) {\n if (eventName) {\n eventTypeConversions.forEach(function (eventTypeConversion) {\n if (eventTypeConversion.name.toLowerCase() === eventName.toLowerCase()) {\n // rudderElement[\"message\"][\"name\"]\n conversionData.conversionLabel = eventTypeConversion.conversionLabel;\n conversionData.eventName = eventTypeConversion.name;\n }\n });\n } else if (this.defaultPageConversion) {\n conversionData.conversionLabel = this.defaultPageConversion;\n conversionData.eventName = \"Viewed a Page\";\n }\n }\n\n return conversionData;\n }\n }, {\n key: \"isLoaded\",\n value: function isLoaded() {\n return window.dataLayer.push !== Array.prototype.push;\n }\n }, {\n key: \"isReady\",\n value: function isReady() {\n return window.dataLayer.push !== Array.prototype.push;\n }\n }]);\n\n return GoogleAds;\n }();\n\n var index$3 = GoogleAds ;\n\n var VWO = /*#__PURE__*/function () {\n function VWO(config, analytics) {\n _classCallCheck(this, VWO);\n\n this.accountId = config.accountId; // 1549611\n\n this.settingsTolerance = config.settingsTolerance;\n this.isSPA = config.isSPA;\n this.libraryTolerance = config.libraryTolerance;\n this.useExistingJquery = config.useExistingJquery;\n this.sendExperimentTrack = config.sendExperimentTrack;\n this.sendExperimentIdentify = config.sendExperimentIdentify;\n this.name = \"VWO\";\n this.analytics = analytics;\n logger.debug(\"Config \", config);\n }\n\n _createClass(VWO, [{\n key: \"init\",\n value: function init() {\n logger.debug(\"===in init VWO===\");\n var account_id = this.accountId;\n var settings_tolerance = this.settingsTolerance;\n var _library_tolerance = this.libraryTolerance;\n var _use_existing_jquery = this.useExistingJquery;\n var isSPA = this.isSPA;\n\n window._vwo_code = function () {\n var f = false;\n var d = document;\n return {\n use_existing_jquery: function use_existing_jquery() {\n return _use_existing_jquery;\n },\n library_tolerance: function library_tolerance() {\n return _library_tolerance;\n },\n finish: function finish() {\n if (!f) {\n f = true;\n var a = d.getElementById(\"_vis_opt_path_hides\");\n if (a) a.parentNode.removeChild(a);\n }\n },\n finished: function finished() {\n return f;\n },\n load: function load(a) {\n var b = d.createElement(\"script\");\n b.src = a;\n b.type = \"text/javascript\";\n b.innerText;\n\n b.onerror = function () {\n _vwo_code.finish();\n };\n\n d.getElementsByTagName(\"head\")[0].appendChild(b);\n },\n init: function init() {\n var settings_timer = setTimeout(\"_vwo_code.finish()\", settings_tolerance);\n var a = d.createElement(\"style\");\n var b = \"body{opacity:0 !important;filter:alpha(opacity=0) !important;background:none !important;}\";\n var h = d.getElementsByTagName(\"head\")[0];\n a.setAttribute(\"id\", \"_vis_opt_path_hides\");\n a.setAttribute(\"type\", \"text/css\");\n if (a.styleSheet) a.styleSheet.cssText = b;else a.appendChild(d.createTextNode(b));\n h.appendChild(a);\n this.load(\"//dev.visualwebsiteoptimizer.com/j.php?a=\".concat(account_id, \"&u=\").concat(encodeURIComponent(d.URL), \"&r=\").concat(Math.random(), \"&f=\").concat(+isSPA));\n return settings_timer;\n }\n };\n }();\n\n window._vwo_settings_timer = window._vwo_code.init(); // Send track or iddentify when\n\n if (this.sendExperimentTrack || this.experimentViewedIdentify) {\n this.experimentViewed();\n }\n }\n }, {\n key: \"experimentViewed\",\n value: function experimentViewed() {\n var _this = this;\n\n window.VWO = window.VWO || [];\n var self = this;\n window.VWO.push([\"onVariationApplied\", function (data) {\n if (!data) {\n return;\n }\n\n logger.debug(\"Variation Applied\");\n var expId = data[1];\n var variationId = data[2];\n logger.debug(\"experiment id:\", expId, \"Variation Name:\", _vwo_exp[expId].comb_n[variationId]);\n\n if (typeof _vwo_exp[expId].comb_n[variationId] !== \"undefined\" && [\"VISUAL_AB\", \"VISUAL\", \"SPLIT_URL\", \"SURVEY\"].indexOf(_vwo_exp[expId].type) > -1) {\n try {\n if (self.sendExperimentTrack) {\n logger.debug(\"Tracking...\");\n\n _this.analytics.track(\"Experiment Viewed\", {\n experimentId: expId,\n variationName: _vwo_exp[expId].comb_n[variationId]\n });\n }\n } catch (error) {\n logger.error(\"[VWO] experimentViewed:: \", error);\n }\n\n try {\n if (self.sendExperimentIdentify) {\n logger.debug(\"Identifying...\");\n\n _this.analytics.identify(_defineProperty({}, \"Experiment: \".concat(expId), _vwo_exp[expId].comb_n[variationId]));\n }\n } catch (error) {\n logger.error(\"[VWO] experimentViewed:: \", error);\n }\n }\n }]);\n }\n }, {\n key: \"identify\",\n value: function identify(rudderElement) {\n logger.debug(\"method not supported\");\n }\n }, {\n key: \"track\",\n value: function track(rudderElement) {\n var eventName = rudderElement.message.event;\n\n if (eventName === \"Order Completed\") {\n var total = rudderElement.message.properties ? rudderElement.message.properties.total || rudderElement.message.properties.revenue : 0;\n logger.debug(\"Revenue\", total);\n window.VWO = window.VWO || [];\n window.VWO.push([\"track.revenueConversion\", total]);\n }\n }\n }, {\n key: \"page\",\n value: function page(rudderElement) {\n logger.debug(\"method not supported\");\n }\n }, {\n key: \"isLoaded\",\n value: function isLoaded() {\n return !!window._vwo_code;\n }\n }, {\n key: \"isReady\",\n value: function isReady() {\n return !!window._vwo_code;\n }\n }]);\n\n return VWO;\n }();\n\n var GoogleTagManager = /*#__PURE__*/function () {\n function GoogleTagManager(config) {\n _classCallCheck(this, GoogleTagManager);\n\n this.containerID = config.containerID;\n this.name = \"GOOGLETAGMANAGER\";\n }\n\n _createClass(GoogleTagManager, [{\n key: \"init\",\n value: function init() {\n logger.debug(\"===in init GoogleTagManager===\");\n\n (function (w, d, s, l, i) {\n w[l] = w[l] || [];\n w[l].push({\n \"gtm.start\": new Date().getTime(),\n event: \"gtm.js\"\n });\n var f = d.getElementsByTagName(s)[0];\n var j = d.createElement(s);\n var dl = l != \"dataLayer\" ? \"&l=\".concat(l) : \"\";\n j.async = true;\n j.src = \"https://www.googletagmanager.com/gtm.js?id=\".concat(i).concat(dl);\n f.parentNode.insertBefore(j, f);\n })(window, document, \"script\", \"dataLayer\", this.containerID);\n }\n }, {\n key: \"identify\",\n value: function identify(rudderElement) {\n logger.debug(\"[GTM] identify:: method not supported\");\n }\n }, {\n key: \"track\",\n value: function track(rudderElement) {\n logger.debug(\"===in track GoogleTagManager===\");\n var rudderMessage = rudderElement.message;\n\n var props = _objectSpread2({\n event: rudderMessage.event,\n userId: rudderMessage.userId,\n anonymousId: rudderMessage.anonymousId\n }, rudderMessage.properties);\n\n this.sendToGTMDatalayer(props);\n }\n }, {\n key: \"page\",\n value: function page(rudderElement) {\n logger.debug(\"===in page GoogleTagManager===\");\n var rudderMessage = rudderElement.message;\n var pageName = rudderMessage.name;\n var pageCategory = rudderMessage.properties ? rudderMessage.properties.category : undefined;\n var eventName;\n\n if (pageName) {\n eventName = \"Viewed \".concat(pageName, \" page\");\n }\n\n if (pageCategory && pageName) {\n eventName = \"Viewed \".concat(pageCategory, \" \").concat(pageName, \" page\");\n }\n\n if (!eventName) {\n eventName = \"Viewed a Page\";\n }\n\n var props = _objectSpread2({\n event: eventName,\n userId: rudderMessage.userId,\n anonymousId: rudderMessage.anonymousId\n }, rudderMessage.properties);\n\n this.sendToGTMDatalayer(props);\n }\n }, {\n key: \"isLoaded\",\n value: function isLoaded() {\n return !!(window.dataLayer && Array.prototype.push !== window.dataLayer.push);\n }\n }, {\n key: \"sendToGTMDatalayer\",\n value: function sendToGTMDatalayer(props) {\n window.dataLayer.push(props);\n }\n }, {\n key: \"isReady\",\n value: function isReady() {\n return !!(window.dataLayer && Array.prototype.push !== window.dataLayer.push);\n }\n }]);\n\n return GoogleTagManager;\n }();\n\n /*\n E-commerce support required for logPurchase support & other e-commerce events as track with productId changed\n */\n\n var Braze = /*#__PURE__*/function () {\n function Braze(config, analytics) {\n _classCallCheck(this, Braze);\n\n this.analytics = analytics;\n this.appKey = config.appKey;\n if (!config.appKey) this.appKey = \"\";\n this.endPoint = \"\";\n\n if (config.dataCenter) {\n var dataCenterArr = config.dataCenter.trim().split(\"-\");\n\n if (dataCenterArr[0].toLowerCase() === \"eu\") {\n this.endPoint = \"sdk.fra-01.braze.eu\";\n } else {\n this.endPoint = \"sdk.iad-\".concat(dataCenterArr[1], \".braze.com\");\n }\n }\n\n this.name = \"BRAZE\";\n logger.debug(\"Config \", config);\n }\n /** https://js.appboycdn.com/web-sdk/latest/doc/ab.User.html#toc4\n */\n\n\n _createClass(Braze, [{\n key: \"formatGender\",\n value: function formatGender(gender) {\n if (!gender) return;\n if (typeof gender !== \"string\") return;\n var femaleGenders = [\"woman\", \"female\", \"w\", \"f\"];\n var maleGenders = [\"man\", \"male\", \"m\"];\n var otherGenders = [\"other\", \"o\"];\n if (femaleGenders.indexOf(gender.toLowerCase()) > -1) return window.appboy.ab.User.Genders.FEMALE;\n if (maleGenders.indexOf(gender.toLowerCase()) > -1) return window.appboy.ab.User.Genders.MALE;\n if (otherGenders.indexOf(gender.toLowerCase()) > -1) return window.appboy.ab.User.Genders.OTHER;\n }\n }, {\n key: \"init\",\n value: function init() {\n logger.debug(\"===in init Braze===\"); // load appboy\n\n +function (a, p, P, b, y) {\n a.appboy = {};\n a.appboyQueue = [];\n\n for (var s = \"initialize destroy getDeviceId toggleAppboyLogging setLogger openSession changeUser requestImmediateDataFlush requestFeedRefresh subscribeToFeedUpdates requestContentCardsRefresh subscribeToContentCardsUpdates logCardImpressions logCardClick logCardDismissal logFeedDisplayed logContentCardsDisplayed logInAppMessageImpression logInAppMessageClick logInAppMessageButtonClick logInAppMessageHtmlClick subscribeToNewInAppMessages subscribeToInAppMessage removeSubscription removeAllSubscriptions logCustomEvent logPurchase isPushSupported isPushBlocked isPushGranted isPushPermissionGranted registerAppboyPushMessages unregisterAppboyPushMessages trackLocation stopWebTracking resumeWebTracking wipeData ab ab.DeviceProperties ab.User ab.User.Genders ab.User.NotificationSubscriptionTypes ab.User.prototype.getUserId ab.User.prototype.setFirstName ab.User.prototype.setLastName ab.User.prototype.setEmail ab.User.prototype.setGender ab.User.prototype.setDateOfBirth ab.User.prototype.setCountry ab.User.prototype.setHomeCity ab.User.prototype.setLanguage ab.User.prototype.setEmailNotificationSubscriptionType ab.User.prototype.setPushNotificationSubscriptionType ab.User.prototype.setPhoneNumber ab.User.prototype.setAvatarImageUrl ab.User.prototype.setLastKnownLocation ab.User.prototype.setUserAttribute ab.User.prototype.setCustomUserAttribute ab.User.prototype.addToCustomAttributeArray ab.User.prototype.removeFromCustomAttributeArray ab.User.prototype.incrementCustomUserAttribute ab.User.prototype.addAlias ab.User.prototype.setCustomLocationAttribute ab.InAppMessage ab.InAppMessage.SlideFrom ab.InAppMessage.ClickAction ab.InAppMessage.DismissType ab.InAppMessage.OpenTarget ab.InAppMessage.ImageStyle ab.InAppMessage.TextAlignment ab.InAppMessage.Orientation ab.InAppMessage.CropType ab.InAppMessage.prototype.subscribeToClickedEvent ab.InAppMessage.prototype.subscribeToDismissedEvent ab.InAppMessage.prototype.removeSubscription ab.InAppMessage.prototype.removeAllSubscriptions ab.InAppMessage.prototype.closeMessage ab.InAppMessage.Button ab.InAppMessage.Button.prototype.subscribeToClickedEvent ab.InAppMessage.Button.prototype.removeSubscription ab.InAppMessage.Button.prototype.removeAllSubscriptions ab.SlideUpMessage ab.ModalMessage ab.FullScreenMessage ab.HtmlMessage ab.ControlMessage ab.Feed ab.Feed.prototype.getUnreadCardCount ab.ContentCards ab.ContentCards.prototype.getUnviewedCardCount ab.Card ab.Card.prototype.dismissCard ab.ClassicCard ab.CaptionedImage ab.Banner ab.ControlCard ab.WindowUtils display display.automaticallyShowNewInAppMessages display.showInAppMessage display.showFeed display.destroyFeed display.toggleFeed display.showContentCards display.hideContentCards display.toggleContentCards sharedLib\".split(\" \"), i = 0; i < s.length; i++) {\n for (var m = s[i], k = a.appboy, l = m.split(\".\"), j = 0; j < l.length - 1; j++) {\n k = k[l[j]];\n }\n\n k[l[j]] = new Function(\"return function \".concat(m.replace(/\\./g, \"_\"), \"(){window.appboyQueue.push(arguments); return true}\"))();\n }\n\n window.appboy.getUser = function () {\n return new window.appboy.ab.User();\n };\n\n window.appboy.getCachedFeed = function () {\n return new window.appboy.ab.Feed();\n };\n\n window.appboy.getCachedContentCards = function () {\n return new window.appboy.ab.ContentCards();\n };\n\n (y = p.createElement(P)).type = \"text/javascript\";\n y.src = \"https://js.appboycdn.com/web-sdk/2.4/appboy.min.js\";\n y.async = 1;\n (b = p.getElementsByTagName(P)[0]).parentNode.insertBefore(y, b);\n }(window, document, \"script\");\n window.appboy.initialize(this.appKey, {\n enableLogging: true,\n baseUrl: this.endPoint\n });\n window.appboy.display.automaticallyShowNewInAppMessages();\n var userId = this.analytics.userId; // send userId if you have it https://js.appboycdn.com/web-sdk/latest/doc/module-appboy.html#.changeUser\n\n if (userId) appboy.changeUser(userId);\n window.appboy.openSession();\n }\n }, {\n key: \"handleReservedProperties\",\n value: function handleReservedProperties(props) {\n // remove reserved keys from custom event properties\n // https://www.appboy.com/documentation/Platform_Wide/#reserved-keys\n var reserved = [\"time\", \"product_id\", \"quantity\", \"event_name\", \"price\", \"currency\"];\n reserved.forEach(function (element) {\n delete props[element];\n });\n return props;\n }\n }, {\n key: \"identify\",\n value: function identify(rudderElement) {\n var userId = rudderElement.message.userId;\n var address = rudderElement.message.context.traits.address;\n var avatar = rudderElement.message.context.traits.avatar;\n var birthday = rudderElement.message.context.traits.birthday;\n var email = rudderElement.message.context.traits.email;\n var firstname = rudderElement.message.context.traits.firstname;\n var gender = rudderElement.message.context.traits.gender;\n var lastname = rudderElement.message.context.traits.lastname;\n var phone = rudderElement.message.context.traits.phone; // This is a hack to make a deep copy that is not recommended because it will often fail:\n\n var traits = JSON.parse(JSON.stringify(rudderElement.message.context.traits));\n window.appboy.changeUser(userId);\n window.appboy.getUser().setAvatarImageUrl(avatar);\n if (email) window.appboy.getUser().setEmail(email);\n if (firstname) window.appboy.getUser().setFirstName(firstname);\n if (gender) window.appboy.getUser().setGender(this.formatGender(gender));\n if (lastname) window.appboy.getUser().setLastName(lastname);\n if (phone) window.appboy.getUser().setPhoneNumber(phone);\n\n if (address) {\n window.appboy.getUser().setCountry(address.country);\n window.appboy.getUser().setHomeCity(address.city);\n }\n\n if (birthday) {\n window.appboy.getUser().setDateOfBirth(birthday.getUTCFullYear(), birthday.getUTCMonth() + 1, birthday.getUTCDate());\n } // remove reserved keys https://www.appboy.com/documentation/Platform_Wide/#reserved-keys\n\n\n var reserved = [\"avatar\", \"address\", \"birthday\", \"email\", \"id\", \"firstname\", \"gender\", \"lastname\", \"phone\", \"facebook\", \"twitter\", \"first_name\", \"last_name\", \"dob\", \"external_id\", \"country\", \"home_city\", \"bio\", \"gender\", \"phone\", \"email_subscribe\", \"push_subscribe\"];\n reserved.forEach(function (element) {\n delete traits[element];\n });\n Object.keys(traits).forEach(function (key) {\n window.appboy.getUser().setCustomUserAttribute(key, traits[key]);\n });\n }\n }, {\n key: \"handlePurchase\",\n value: function handlePurchase(properties, userId) {\n var products = properties.products;\n var currencyCode = properties.currency;\n window.appboy.changeUser(userId); // del used properties\n\n del(properties, \"products\");\n del(properties, \"currency\"); // we have to make a separate call to appboy for each product\n\n products.forEach(function (product) {\n var productId = product.product_id;\n var price = product.price;\n var quantity = product.quantity;\n if (quantity && price && productId) window.appboy.logPurchase(productId, price, currencyCode, quantity, properties);\n });\n }\n }, {\n key: \"track\",\n value: function track(rudderElement) {\n var userId = rudderElement.message.userId;\n var eventName = rudderElement.message.event;\n var properties = rudderElement.message.properties;\n window.appboy.changeUser(userId);\n\n if (eventName.toLowerCase() === \"order completed\") {\n this.handlePurchase(properties, userId);\n } else {\n properties = this.handleReservedProperties(properties);\n window.appboy.logCustomEvent(eventName, properties);\n }\n }\n }, {\n key: \"page\",\n value: function page(rudderElement) {\n var userId = rudderElement.message.userId;\n var eventName = rudderElement.message.name;\n var properties = rudderElement.message.properties;\n properties = this.handleReservedProperties(properties);\n window.appboy.changeUser(userId);\n window.appboy.logCustomEvent(eventName, properties);\n }\n }, {\n key: \"isLoaded\",\n value: function isLoaded() {\n return window.appboyQueue === null;\n }\n }, {\n key: \"isReady\",\n value: function isReady() {\n return window.appboyQueue === null;\n }\n }]);\n\n return Braze;\n }();\n\n var crypt = createCommonjsModule(function (module) {\n (function () {\n var base64map = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n crypt = {\n // Bit-wise rotation left\n rotl: function rotl(n, b) {\n return n << b | n >>> 32 - b;\n },\n // Bit-wise rotation right\n rotr: function rotr(n, b) {\n return n << 32 - b | n >>> b;\n },\n // Swap big-endian to little-endian and vice versa\n endian: function endian(n) {\n // If number given, swap endian\n if (n.constructor == Number) {\n return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;\n } // Else, assume array and swap all items\n\n\n for (var i = 0; i < n.length; i++) {\n n[i] = crypt.endian(n[i]);\n }\n\n return n;\n },\n // Generate an array of any length of random bytes\n randomBytes: function randomBytes(n) {\n for (var bytes = []; n > 0; n--) {\n bytes.push(Math.floor(Math.random() * 256));\n }\n\n return bytes;\n },\n // Convert a byte array to big-endian 32-bit words\n bytesToWords: function bytesToWords(bytes) {\n for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8) {\n words[b >>> 5] |= bytes[i] << 24 - b % 32;\n }\n\n return words;\n },\n // Convert big-endian 32-bit words to a byte array\n wordsToBytes: function wordsToBytes(words) {\n for (var bytes = [], b = 0; b < words.length * 32; b += 8) {\n bytes.push(words[b >>> 5] >>> 24 - b % 32 & 0xFF);\n }\n\n return bytes;\n },\n // Convert a byte array to a hex string\n bytesToHex: function bytesToHex(bytes) {\n for (var hex = [], i = 0; i < bytes.length; i++) {\n hex.push((bytes[i] >>> 4).toString(16));\n hex.push((bytes[i] & 0xF).toString(16));\n }\n\n return hex.join('');\n },\n // Convert a hex string to a byte array\n hexToBytes: function hexToBytes(hex) {\n for (var bytes = [], c = 0; c < hex.length; c += 2) {\n bytes.push(parseInt(hex.substr(c, 2), 16));\n }\n\n return bytes;\n },\n // Convert a byte array to a base-64 string\n bytesToBase64: function bytesToBase64(bytes) {\n for (var base64 = [], i = 0; i < bytes.length; i += 3) {\n var triplet = bytes[i] << 16 | bytes[i + 1] << 8 | bytes[i + 2];\n\n for (var j = 0; j < 4; j++) {\n if (i * 8 + j * 6 <= bytes.length * 8) base64.push(base64map.charAt(triplet >>> 6 * (3 - j) & 0x3F));else base64.push('=');\n }\n }\n\n return base64.join('');\n },\n // Convert a base-64 string to a byte array\n base64ToBytes: function base64ToBytes(base64) {\n // Remove non-base-64 characters\n base64 = base64.replace(/[^A-Z0-9+\\/]/ig, '');\n\n for (var bytes = [], i = 0, imod4 = 0; i < base64.length; imod4 = ++i % 4) {\n if (imod4 == 0) continue;\n bytes.push((base64map.indexOf(base64.charAt(i - 1)) & Math.pow(2, -2 * imod4 + 8) - 1) << imod4 * 2 | base64map.indexOf(base64.charAt(i)) >>> 6 - imod4 * 2);\n }\n\n return bytes;\n }\n };\n module.exports = crypt;\n })();\n });\n\n var charenc = {\n // UTF-8 encoding\n utf8: {\n // Convert a string to a byte array\n stringToBytes: function stringToBytes(str) {\n return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));\n },\n // Convert a byte array to a string\n bytesToString: function bytesToString(bytes) {\n return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));\n }\n },\n // Binary encoding\n bin: {\n // Convert a string to a byte array\n stringToBytes: function stringToBytes(str) {\n for (var bytes = [], i = 0; i < str.length; i++) {\n bytes.push(str.charCodeAt(i) & 0xFF);\n }\n\n return bytes;\n },\n // Convert a byte array to a string\n bytesToString: function bytesToString(bytes) {\n for (var str = [], i = 0; i < bytes.length; i++) {\n str.push(String.fromCharCode(bytes[i]));\n }\n\n return str.join('');\n }\n }\n };\n var charenc_1 = charenc;\n\n /*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n // The _isBuffer check is for Safari 5-7 support, because it's missing\n // Object.prototype.constructor. Remove this eventually\n var isBuffer_1 = function isBuffer_1(obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer);\n };\n\n function isBuffer(obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj);\n } // For Node v0.10 support. Remove this eventually.\n\n\n function isSlowBuffer(obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0));\n }\n\n var md5 = createCommonjsModule(function (module) {\n (function () {\n var crypt$1 = crypt,\n utf8 = charenc_1.utf8,\n isBuffer = isBuffer_1,\n bin = charenc_1.bin,\n // The core\n md5 = function md5(message, options) {\n // Convert to byte array\n if (message.constructor == String) {\n if (options && options.encoding === 'binary') message = bin.stringToBytes(message);else message = utf8.stringToBytes(message);\n } else if (isBuffer(message)) message = Array.prototype.slice.call(message, 0);else if (!Array.isArray(message) && message.constructor !== Uint8Array) message = message.toString(); // else, assume byte array already\n\n var m = crypt$1.bytesToWords(message),\n l = message.length * 8,\n a = 1732584193,\n b = -271733879,\n c = -1732584194,\n d = 271733878; // Swap endian\n\n for (var i = 0; i < m.length; i++) {\n m[i] = (m[i] << 8 | m[i] >>> 24) & 0x00FF00FF | (m[i] << 24 | m[i] >>> 8) & 0xFF00FF00;\n } // Padding\n\n\n m[l >>> 5] |= 0x80 << l % 32;\n m[(l + 64 >>> 9 << 4) + 14] = l; // Method shortcuts\n\n var FF = md5._ff,\n GG = md5._gg,\n HH = md5._hh,\n II = md5._ii;\n\n for (var i = 0; i < m.length; i += 16) {\n var aa = a,\n bb = b,\n cc = c,\n dd = d;\n a = FF(a, b, c, d, m[i + 0], 7, -680876936);\n d = FF(d, a, b, c, m[i + 1], 12, -389564586);\n c = FF(c, d, a, b, m[i + 2], 17, 606105819);\n b = FF(b, c, d, a, m[i + 3], 22, -1044525330);\n a = FF(a, b, c, d, m[i + 4], 7, -176418897);\n d = FF(d, a, b, c, m[i + 5], 12, 1200080426);\n c = FF(c, d, a, b, m[i + 6], 17, -1473231341);\n b = FF(b, c, d, a, m[i + 7], 22, -45705983);\n a = FF(a, b, c, d, m[i + 8], 7, 1770035416);\n d = FF(d, a, b, c, m[i + 9], 12, -1958414417);\n c = FF(c, d, a, b, m[i + 10], 17, -42063);\n b = FF(b, c, d, a, m[i + 11], 22, -1990404162);\n a = FF(a, b, c, d, m[i + 12], 7, 1804603682);\n d = FF(d, a, b, c, m[i + 13], 12, -40341101);\n c = FF(c, d, a, b, m[i + 14], 17, -1502002290);\n b = FF(b, c, d, a, m[i + 15], 22, 1236535329);\n a = GG(a, b, c, d, m[i + 1], 5, -165796510);\n d = GG(d, a, b, c, m[i + 6], 9, -1069501632);\n c = GG(c, d, a, b, m[i + 11], 14, 643717713);\n b = GG(b, c, d, a, m[i + 0], 20, -373897302);\n a = GG(a, b, c, d, m[i + 5], 5, -701558691);\n d = GG(d, a, b, c, m[i + 10], 9, 38016083);\n c = GG(c, d, a, b, m[i + 15], 14, -660478335);\n b = GG(b, c, d, a, m[i + 4], 20, -405537848);\n a = GG(a, b, c, d, m[i + 9], 5, 568446438);\n d = GG(d, a, b, c, m[i + 14], 9, -1019803690);\n c = GG(c, d, a, b, m[i + 3], 14, -187363961);\n b = GG(b, c, d, a, m[i + 8], 20, 1163531501);\n a = GG(a, b, c, d, m[i + 13], 5, -1444681467);\n d = GG(d, a, b, c, m[i + 2], 9, -51403784);\n c = GG(c, d, a, b, m[i + 7], 14, 1735328473);\n b = GG(b, c, d, a, m[i + 12], 20, -1926607734);\n a = HH(a, b, c, d, m[i + 5], 4, -378558);\n d = HH(d, a, b, c, m[i + 8], 11, -2022574463);\n c = HH(c, d, a, b, m[i + 11], 16, 1839030562);\n b = HH(b, c, d, a, m[i + 14], 23, -35309556);\n a = HH(a, b, c, d, m[i + 1], 4, -1530992060);\n d = HH(d, a, b, c, m[i + 4], 11, 1272893353);\n c = HH(c, d, a, b, m[i + 7], 16, -155497632);\n b = HH(b, c, d, a, m[i + 10], 23, -1094730640);\n a = HH(a, b, c, d, m[i + 13], 4, 681279174);\n d = HH(d, a, b, c, m[i + 0], 11, -358537222);\n c = HH(c, d, a, b, m[i + 3], 16, -722521979);\n b = HH(b, c, d, a, m[i + 6], 23, 76029189);\n a = HH(a, b, c, d, m[i + 9], 4, -640364487);\n d = HH(d, a, b, c, m[i + 12], 11, -421815835);\n c = HH(c, d, a, b, m[i + 15], 16, 530742520);\n b = HH(b, c, d, a, m[i + 2], 23, -995338651);\n a = II(a, b, c, d, m[i + 0], 6, -198630844);\n d = II(d, a, b, c, m[i + 7], 10, 1126891415);\n c = II(c, d, a, b, m[i + 14], 15, -1416354905);\n b = II(b, c, d, a, m[i + 5], 21, -57434055);\n a = II(a, b, c, d, m[i + 12], 6, 1700485571);\n d = II(d, a, b, c, m[i + 3], 10, -1894986606);\n c = II(c, d, a, b, m[i + 10], 15, -1051523);\n b = II(b, c, d, a, m[i + 1], 21, -2054922799);\n a = II(a, b, c, d, m[i + 8], 6, 1873313359);\n d = II(d, a, b, c, m[i + 15], 10, -30611744);\n c = II(c, d, a, b, m[i + 6], 15, -1560198380);\n b = II(b, c, d, a, m[i + 13], 21, 1309151649);\n a = II(a, b, c, d, m[i + 4], 6, -145523070);\n d = II(d, a, b, c, m[i + 11], 10, -1120210379);\n c = II(c, d, a, b, m[i + 2], 15, 718787259);\n b = II(b, c, d, a, m[i + 9], 21, -343485551);\n a = a + aa >>> 0;\n b = b + bb >>> 0;\n c = c + cc >>> 0;\n d = d + dd >>> 0;\n }\n\n return crypt$1.endian([a, b, c, d]);\n }; // Auxiliary functions\n\n\n md5._ff = function (a, b, c, d, x, s, t) {\n var n = a + (b & c | ~b & d) + (x >>> 0) + t;\n return (n << s | n >>> 32 - s) + b;\n };\n\n md5._gg = function (a, b, c, d, x, s, t) {\n var n = a + (b & d | c & ~d) + (x >>> 0) + t;\n return (n << s | n >>> 32 - s) + b;\n };\n\n md5._hh = function (a, b, c, d, x, s, t) {\n var n = a + (b ^ c ^ d) + (x >>> 0) + t;\n return (n << s | n >>> 32 - s) + b;\n };\n\n md5._ii = function (a, b, c, d, x, s, t) {\n var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;\n return (n << s | n >>> 32 - s) + b;\n }; // Package private blocksize\n\n\n md5._blocksize = 16;\n md5._digestsize = 16;\n\n module.exports = function (message, options) {\n if (message === undefined || message === null) throw new Error('Illegal argument ' + message);\n var digestbytes = crypt$1.wordsToBytes(md5(message, options));\n return options && options.asBytes ? digestbytes : options && options.asString ? bin.bytesToString(digestbytes) : crypt$1.bytesToHex(digestbytes);\n };\n })();\n });\n\n var INTERCOM = /*#__PURE__*/function () {\n function INTERCOM(config) {\n _classCallCheck(this, INTERCOM);\n\n this.NAME = \"INTERCOM\";\n this.API_KEY = config.apiKey;\n this.APP_ID = config.appId;\n this.MOBILE_APP_ID = config.mobileAppId;\n logger.debug(\"Config \", config);\n }\n\n _createClass(INTERCOM, [{\n key: \"init\",\n value: function init() {\n window.intercomSettings = {\n app_id: this.APP_ID\n };\n\n (function () {\n var w = window;\n var ic = w.Intercom;\n\n if (typeof ic === \"function\") {\n ic(\"reattach_activator\");\n ic(\"update\", w.intercomSettings);\n } else {\n var d = document;\n\n var i = function i() {\n i.c(arguments);\n };\n\n i.q = [];\n\n i.c = function (args) {\n i.q.push(args);\n };\n\n w.Intercom = i;\n\n var l = function l() {\n var s = d.createElement(\"script\");\n s.type = \"text/javascript\";\n s.async = true;\n s.src = \"https://widget.intercom.io/widget/\".concat(window.intercomSettings.app_id);\n var x = d.getElementsByTagName(\"script\")[0];\n x.parentNode.insertBefore(s, x);\n };\n\n if (document.readyState === \"complete\") {\n l();\n window.intercom_code = true;\n } else if (w.attachEvent) {\n w.attachEvent(\"onload\", l);\n window.intercom_code = true;\n } else {\n w.addEventListener(\"load\", l, false);\n window.intercom_code = true;\n }\n }\n })();\n }\n }, {\n key: \"page\",\n value: function page() {\n // Get new messages of the current user\n window.Intercom(\"update\");\n }\n }, {\n key: \"identify\",\n value: function identify(rudderElement) {\n var rawPayload = {};\n var context = rudderElement.message.context;\n var identityVerificationProps = context.Intercom ? context.Intercom : null;\n\n if (identityVerificationProps != null) {\n // user hash\n var userHash = context.Intercom.user_hash ? context.Intercom.user_hash : null;\n\n if (userHash != null) {\n rawPayload.user_hash = userHash;\n } // hide default launcher\n\n\n var hideDefaultLauncher = context.Intercom.hideDefaultLauncher ? context.Intercom.hideDefaultLauncher : null;\n\n if (hideDefaultLauncher != null) {\n rawPayload.hide_default_launcher = hideDefaultLauncher;\n }\n } // map rudderPayload to desired\n\n\n Object.keys(context.traits).forEach(function (field) {\n if (context.traits.hasOwnProperty(field)) {\n var value = context.traits[field];\n\n if (field === \"company\") {\n var companies = [];\n var company = {}; // special handling string\n\n if (typeof context.traits[field] === \"string\") {\n company.company_id = md5(context.traits[field]);\n }\n\n var companyFields = _typeof(context.traits[field]) === \"object\" && Object.keys(context.traits[field]) || [];\n companyFields.forEach(function (key) {\n if (companyFields.hasOwnProperty(key)) {\n if (key != \"id\") {\n company[key] = context.traits[field][key];\n } else {\n company.company_id = context.traits[field][key];\n }\n }\n });\n\n if (_typeof(context.traits[field]) === \"object\" && !companyFields.includes(\"id\")) {\n company.company_id = md5(company.name);\n }\n\n companies.push(company);\n rawPayload.companies = companies;\n } else {\n rawPayload[field] = context.traits[field];\n }\n\n switch (field) {\n case \"createdAt\":\n rawPayload.created_at = value;\n break;\n\n case \"anonymousId\":\n rawPayload.user_id = value;\n break;\n }\n }\n });\n rawPayload.user_id = rudderElement.message.userId;\n window.Intercom(\"update\", rawPayload);\n }\n }, {\n key: \"track\",\n value: function track(rudderElement) {\n var rawPayload = {};\n var message = rudderElement.message;\n var properties = message.properties ? Object.keys(message.properties) : null;\n properties.forEach(function (property) {\n var value = message.properties[property];\n rawPayload[property] = value;\n });\n\n if (message.event) {\n rawPayload.event_name = message.event;\n }\n\n rawPayload.user_id = message.userId ? message.userId : message.anonymousId;\n rawPayload.created_at = Math.floor(new Date(message.originalTimestamp).getTime() / 1000);\n window.Intercom(\"trackEvent\", rawPayload.event_name, rawPayload);\n }\n }, {\n key: \"isLoaded\",\n value: function isLoaded() {\n return !!window.intercom_code;\n }\n }, {\n key: \"isReady\",\n value: function isReady() {\n return !!window.intercom_code;\n }\n }]);\n\n return INTERCOM;\n }();\n\n var Keen = /*#__PURE__*/function () {\n function Keen(config) {\n _classCallCheck(this, Keen);\n\n this.projectID = config.projectID;\n this.writeKey = config.writeKey;\n this.ipAddon = config.ipAddon;\n this.uaAddon = config.uaAddon;\n this.urlAddon = config.urlAddon;\n this.referrerAddon = config.referrerAddon;\n this.client = null;\n this.name = \"KEEN\";\n }\n\n _createClass(Keen, [{\n key: \"init\",\n value: function init() {\n logger.debug(\"===in init Keen===\");\n ScriptLoader(\"keen-integration\", \"https://cdn.jsdelivr.net/npm/keen-tracking@4\");\n var check = setInterval(checkAndInitKeen.bind(this), 1000);\n\n function initKeen(object) {\n object.client = new window.KeenTracking({\n projectId: object.projectID,\n writeKey: object.writeKey\n });\n return object.client;\n }\n\n function checkAndInitKeen() {\n if (window.KeenTracking !== undefined && window.KeenTracking !== void 0) {\n this.client = initKeen(this);\n clearInterval(check);\n }\n }\n }\n }, {\n key: \"identify\",\n value: function identify(rudderElement) {\n logger.debug(\"in Keen identify\");\n var traits = rudderElement.message.context.traits;\n var userId = rudderElement.message.userId ? rudderElement.message.userId : rudderElement.message.anonymousId;\n var properties = rudderElement.message.properties ? _extends(properties, rudderElement.message.properties) : {};\n properties.user = {\n userId: userId,\n traits: traits\n };\n properties = this.getAddOn(properties);\n this.client.extendEvents(properties);\n }\n }, {\n key: \"track\",\n value: function track(rudderElement) {\n logger.debug(\"in Keen track\");\n var event = rudderElement.message.event;\n var properties = rudderElement.message.properties;\n properties = this.getAddOn(properties);\n this.client.recordEvent(event, properties);\n }\n }, {\n key: \"page\",\n value: function page(rudderElement) {\n logger.debug(\"in Keen page\");\n var pageName = rudderElement.message.name;\n var pageCategory = rudderElement.message.properties ? rudderElement.message.properties.category : undefined;\n var name = \"Loaded a Page\";\n\n if (pageName) {\n name = \"Viewed \".concat(pageName, \" page\");\n }\n\n if (pageCategory && pageName) {\n name = \"Viewed \".concat(pageCategory, \" \").concat(pageName, \" page\");\n }\n\n var properties = rudderElement.message.properties;\n properties = this.getAddOn(properties);\n this.client.recordEvent(name, properties);\n }\n }, {\n key: \"isLoaded\",\n value: function isLoaded() {\n logger.debug(\"in Keen isLoaded\");\n return !!(this.client != null);\n }\n }, {\n key: \"isReady\",\n value: function isReady() {\n return !!(this.client != null);\n }\n }, {\n key: \"getAddOn\",\n value: function getAddOn(properties) {\n var addOns = [];\n\n if (this.ipAddon) {\n properties.ip_address = \"${keen.ip}\";\n addOns.push({\n name: \"keen:ip_to_geo\",\n input: {\n ip: \"ip_address\"\n },\n output: \"ip_geo_info\"\n });\n }\n\n if (this.uaAddon) {\n properties.user_agent = \"${keen.user_agent}\";\n addOns.push({\n name: \"keen:ua_parser\",\n input: {\n ua_string: \"user_agent\"\n },\n output: \"parsed_user_agent\"\n });\n }\n\n if (this.urlAddon) {\n properties.page_url = document.location.href;\n addOns.push({\n name: \"keen:url_parser\",\n input: {\n url: \"page_url\"\n },\n output: \"parsed_page_url\"\n });\n }\n\n if (this.referrerAddon) {\n properties.page_url = document.location.href;\n properties.referrer_url = document.referrer;\n addOns.push({\n name: \"keen:referrer_parser\",\n input: {\n referrer_url: \"referrer_url\",\n page_url: \"page_url\"\n },\n output: \"referrer_info\"\n });\n }\n\n properties.keen = {\n addons: addOns\n };\n return properties;\n }\n }]);\n\n return Keen;\n }();\n\n var has$3 = Object.prototype.hasOwnProperty;\n /**\n * Copy the properties of one or more `objects` onto a destination object. Input objects are iterated over\n * in left-to-right order, so duplicate properties on later objects will overwrite those from\n * erevious ones. Only enumerable and own properties of the input objects are copied onto the\n * resulting object.\n *\n * @name extend\n * @api public\n * @category Object\n * @param {Object} dest The destination object.\n * @param {...Object} sources The source objects.\n * @return {Object} `dest`, extended with the properties of all `sources`.\n * @example\n * var a = { a: 'a' };\n * var b = { b: 'b' };\n * var c = { c: 'c' };\n *\n * extend(a, b, c);\n * //=> { a: 'a', b: 'b', c: 'c' };\n */\n\n var extend = function extend(dest\n /*, sources */\n ) {\n var sources = Array.prototype.slice.call(arguments, 1);\n\n for (var i = 0; i < sources.length; i += 1) {\n for (var key in sources[i]) {\n if (has$3.call(sources[i], key)) {\n dest[key] = sources[i][key];\n }\n }\n }\n\n return dest;\n };\n /*\n * Exports.\n */\n\n\n var extend_1 = extend;\n\n var objCase = createCommonjsModule(function (module) {\n /**\n * Module exports, export\n */\n\n\n module.exports = multiple(find);\n module.exports.find = module.exports;\n /**\n * Export the replacement function, return the modified object\n */\n\n module.exports.replace = function (obj, key, val, options) {\n multiple(replace).call(this, obj, key, val, options);\n return obj;\n };\n /**\n * Export the delete function, return the modified object\n */\n\n\n module.exports.del = function (obj, key, options) {\n multiple(del).call(this, obj, key, null, options);\n return obj;\n };\n /**\n * Compose applying the function to a nested key\n */\n\n\n function multiple(fn) {\n return function (obj, path, val, options) {\n normalize = options && isFunction(options.normalizer) ? options.normalizer : defaultNormalize;\n path = normalize(path);\n var key;\n var finished = false;\n\n while (!finished) {\n loop();\n }\n\n function loop() {\n for (key in obj) {\n var normalizedKey = normalize(key);\n\n if (0 === path.indexOf(normalizedKey)) {\n var temp = path.substr(normalizedKey.length);\n\n if (temp.charAt(0) === '.' || temp.length === 0) {\n path = temp.substr(1);\n var child = obj[key]; // we're at the end and there is nothing.\n\n if (null == child) {\n finished = true;\n return;\n } // we're at the end and there is something.\n\n\n if (!path.length) {\n finished = true;\n return;\n } // step into child\n\n\n obj = child; // but we're done here\n\n return;\n }\n }\n }\n\n key = undefined; // if we found no matching properties\n // on the current object, there's no match.\n\n finished = true;\n }\n\n if (!key) return;\n if (null == obj) return obj; // the `obj` and `key` is one above the leaf object and key, so\n // start object: { a: { 'b.c': 10 } }\n // end object: { 'b.c': 10 }\n // end key: 'b.c'\n // this way, you can do `obj[key]` and get `10`.\n\n return fn(obj, key, val);\n };\n }\n /**\n * Find an object by its key\n *\n * find({ first_name : 'Calvin' }, 'firstName')\n */\n\n\n function find(obj, key) {\n if (obj.hasOwnProperty(key)) return obj[key];\n }\n /**\n * Delete a value for a given key\n *\n * del({ a : 'b', x : 'y' }, 'X' }) -> { a : 'b' }\n */\n\n\n function del(obj, key) {\n if (obj.hasOwnProperty(key)) delete obj[key];\n return obj;\n }\n /**\n * Replace an objects existing value with a new one\n *\n * replace({ a : 'b' }, 'a', 'c') -> { a : 'c' }\n */\n\n\n function replace(obj, key, val) {\n if (obj.hasOwnProperty(key)) obj[key] = val;\n return obj;\n }\n /**\n * Normalize a `dot.separated.path`.\n *\n * A.HELL(!*&#(!)O_WOR LD.bar => ahelloworldbar\n *\n * @param {String} path\n * @return {String}\n */\n\n\n function defaultNormalize(path) {\n return path.replace(/[^a-zA-Z0-9\\.]+/g, '').toLowerCase();\n }\n /**\n * Check if a value is a function.\n *\n * @param {*} val\n * @return {boolean} Returns `true` if `val` is a function, otherwise `false`.\n */\n\n\n function isFunction(val) {\n return typeof val === 'function';\n }\n });\n var objCase_1 = objCase.find;\n var objCase_2 = objCase.replace;\n var objCase_3 = objCase.del;\n\n var Kissmetrics = /*#__PURE__*/function () {\n function Kissmetrics(config) {\n _classCallCheck(this, Kissmetrics);\n\n this.apiKey = config.apiKey;\n this.prefixProperties = config.prefixProperties;\n this.name = \"KISSMETRICS\";\n }\n\n _createClass(Kissmetrics, [{\n key: \"init\",\n value: function init() {\n logger.debug(\"===in init Kissmetrics===\");\n window._kmq = window._kmq || [];\n\n var _kmk = window._kmk || this.apiKey;\n\n function _kms(u) {\n setTimeout(function () {\n var d = document;\n var f = d.getElementsByTagName(\"script\")[0];\n var s = d.createElement(\"script\");\n s.type = \"text/javascript\";\n s.async = true;\n s.src = u;\n f.parentNode.insertBefore(s, f);\n }, 1);\n }\n\n _kms(\"//i.kissmetrics.com/i.js\");\n\n _kms(\"//scripts.kissmetrics.com/\".concat(_kmk, \".2.js\"));\n\n if (this.isEnvMobile()) {\n window._kmq.push([\"set\", {\n \"Mobile Session\": \"Yes\"\n }]);\n }\n }\n }, {\n key: \"isEnvMobile\",\n value: function isEnvMobile() {\n return navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/BlackBerry/i) || navigator.userAgent.match(/IEMobile/i) || navigator.userAgent.match(/Opera Mini/i) || navigator.userAgent.match(/iPad/i) || navigator.userAgent.match(/iPhone|iPod/i);\n } // source : https://github.com/segment-integrations/analytics.js-integration-kissmetrics/blob/master/lib/index.js\n\n }, {\n key: \"toUnixTimestamp\",\n value: function toUnixTimestamp(date) {\n date = new Date(date);\n return Math.floor(date.getTime() / 1000);\n } // source : https://github.com/segment-integrations/analytics.js-integration-kissmetrics/blob/master/lib/index.js\n\n }, {\n key: \"clean\",\n value: function clean(obj) {\n var ret = {};\n\n for (var k in obj) {\n if (obj.hasOwnProperty(k)) {\n var value = obj[k];\n if (value === null || typeof value === \"undefined\") continue; // convert date to unix\n\n if (is_1.date(value)) {\n ret[k] = this.toUnixTimestamp(value);\n continue;\n } // leave boolean as is\n\n\n if (is_1.bool(value)) {\n ret[k] = value;\n continue;\n } // leave numbers as is\n\n\n if (is_1.number(value)) {\n ret[k] = value;\n continue;\n } // convert non objects to strings\n\n\n logger.debug(value.toString());\n\n if (value.toString() !== \"[object Object]\") {\n ret[k] = value.toString();\n continue;\n } // json\n // must flatten including the name of the original trait/property\n\n\n var nestedObj = {};\n nestedObj[k] = value;\n var flattenedObj = this.flatten(nestedObj, {\n safe: true\n }); // stringify arrays inside nested object to be consistent with top level behavior of arrays\n\n for (var key in flattenedObj) {\n if (is_1.array(flattenedObj[key])) {\n flattenedObj[key] = flattenedObj[key].toString();\n }\n }\n\n ret = extend_1(ret, flattenedObj);\n delete ret[k];\n }\n }\n\n return ret;\n } // source : https://github.com/segment-integrations/analytics.js-integration-kissmetrics/blob/master/lib/index.js\n\n }, {\n key: \"flatten\",\n value: function flatten(target, opts) {\n opts = opts || {};\n var delimiter = opts.delimiter || \".\";\n var _opts = opts,\n maxDepth = _opts.maxDepth;\n var currentDepth = 1;\n var output = {};\n\n function step(object, prev) {\n for (var key in object) {\n if (object.hasOwnProperty(key)) {\n var value = object[key];\n var isarray = opts.safe && is_1.array(value);\n var type = Object.prototype.toString.call(value);\n var isobject = type === \"[object Object]\" || type === \"[object Array]\";\n var arr = [];\n var newKey = prev ? prev + delimiter + key : key;\n\n if (!opts.maxDepth) {\n maxDepth = currentDepth + 1;\n }\n\n for (var keys in value) {\n if (value.hasOwnProperty(keys)) {\n arr.push(keys);\n }\n }\n\n if (!isarray && isobject && arr.length && currentDepth < maxDepth) {\n ++currentDepth;\n return step(value, newKey);\n }\n\n output[newKey] = value;\n }\n }\n }\n\n step(target);\n return output;\n } // source : https://github.com/segment-integrations/analytics.js-integration-kissmetrics/blob/master/lib/index.js\n\n }, {\n key: \"prefix\",\n value: function prefix(event, properties) {\n var prefixed = {};\n componentEach(properties, function (key, val) {\n if (key === \"Billing Amount\") {\n prefixed[key] = val;\n } else if (key === \"revenue\") {\n prefixed[\"\".concat(event, \" - \").concat(key)] = val;\n prefixed[\"Billing Amount\"] = val;\n } else {\n prefixed[\"\".concat(event, \" - \").concat(key)] = val;\n }\n });\n return prefixed;\n }\n }, {\n key: \"identify\",\n value: function identify(rudderElement) {\n logger.debug(\"in Kissmetrics identify\");\n var traits = this.clean(rudderElement.message.context.traits);\n var userId = rudderElement.message.userId && rudderElement.message.userId != \"\" ? rudderElement.message.userId : undefined;\n\n if (userId) {\n window._kmq.push([\"identify\", userId]);\n }\n\n if (traits) {\n window._kmq.push([\"set\", traits]);\n }\n }\n }, {\n key: \"track\",\n value: function track(rudderElement) {\n logger.debug(\"in Kissmetrics track\");\n var event = rudderElement.message.event;\n var properties = JSON.parse(JSON.stringify(rudderElement.message.properties));\n var timestamp = this.toUnixTimestamp(new Date());\n var revenue = getRevenue(properties);\n\n if (revenue) {\n properties.revenue = revenue;\n }\n\n var _properties = properties,\n products = _properties.products;\n\n if (products) {\n delete properties.products;\n }\n\n properties = this.clean(properties);\n logger.debug(JSON.stringify(properties));\n\n if (this.prefixProperties) {\n properties = this.prefix(event, properties);\n }\n\n window._kmq.push([\"record\", event, properties]);\n\n var iterator = function pushItem(product, i) {\n var item = product;\n if (this.prefixProperties) item = this.prefix(event, item);\n item._t = timestamp + i;\n item._d = 1;\n window.KM.set(item);\n }.bind(this);\n\n if (products) {\n window._kmq.push(function () {\n componentEach(products, iterator);\n });\n }\n }\n }, {\n key: \"page\",\n value: function page(rudderElement) {\n logger.debug(\"in Kissmetrics page\");\n var pageName = rudderElement.message.name;\n var pageCategory = rudderElement.message.properties ? rudderElement.message.properties.category : undefined;\n var name = \"Loaded a Page\";\n\n if (pageName) {\n name = \"Viewed \".concat(pageName, \" page\");\n }\n\n if (pageCategory && pageName) {\n name = \"Viewed \".concat(pageCategory, \" \").concat(pageName, \" page\");\n }\n\n var properties = rudderElement.message.properties;\n\n if (this.prefixProperties) {\n properties = this.prefix(\"Page\", properties);\n }\n\n window._kmq.push([\"record\", name, properties]);\n }\n }, {\n key: \"alias\",\n value: function alias(rudderElement) {\n var prev = rudderElement.message.previousId;\n var userId = rudderElement.message.userId;\n\n window._kmq.push([\"alias\", userId, prev]);\n }\n }, {\n key: \"group\",\n value: function group(rudderElement) {\n var groupId = rudderElement.message.groupId;\n var groupTraits = rudderElement.message.traits;\n groupTraits = this.prefix(\"Group\", groupTraits);\n\n if (groupId) {\n groupTraits[\"Group - id\"] = groupId;\n }\n\n window._kmq.push([\"set\", groupTraits]);\n\n logger.debug(\"in Kissmetrics group\");\n }\n }, {\n key: \"isLoaded\",\n value: function isLoaded() {\n return is_1.object(window.KM);\n }\n }, {\n key: \"isReady\",\n value: function isReady() {\n return is_1.object(window.KM);\n }\n }]);\n\n return Kissmetrics;\n }();\n\n var CustomerIO = /*#__PURE__*/function () {\n function CustomerIO(config) {\n _classCallCheck(this, CustomerIO);\n\n this.siteID = config.siteID;\n this.apiKey = config.apiKey;\n this.name = \"CUSTOMERIO\";\n }\n\n _createClass(CustomerIO, [{\n key: \"init\",\n value: function init() {\n logger.debug(\"===in init Customer IO init===\");\n window._cio = window._cio || [];\n var siteID = this.siteID;\n\n (function () {\n var a;\n var b;\n var c;\n\n a = function a(f) {\n return function () {\n window._cio.push([f].concat(Array.prototype.slice.call(arguments, 0)));\n };\n };\n\n b = [\"load\", \"identify\", \"sidentify\", \"track\", \"page\"];\n\n for (c = 0; c < b.length; c++) {\n window._cio[b[c]] = a(b[c]);\n }\n\n var t = document.createElement(\"script\");\n var s = document.getElementsByTagName(\"script\")[0];\n t.async = true;\n t.id = \"cio-tracker\";\n t.setAttribute(\"data-site-id\", siteID);\n t.src = \"https://assets.customer.io/assets/track.js\";\n s.parentNode.insertBefore(t, s);\n })();\n }\n }, {\n key: \"identify\",\n value: function identify(rudderElement) {\n logger.debug(\"in Customer IO identify\");\n var userId = rudderElement.message.userId ? rudderElement.message.userId : rudderElement.message.anonymousId;\n var traits = rudderElement.message.context.traits ? rudderElement.message.context.traits : {};\n\n if (!traits.created_at) {\n traits.created_at = Math.floor(new Date().getTime() / 1000);\n }\n\n traits.id = userId;\n\n window._cio.identify(traits);\n }\n }, {\n key: \"track\",\n value: function track(rudderElement) {\n logger.debug(\"in Customer IO track\");\n var eventName = rudderElement.message.event;\n var properties = rudderElement.message.properties;\n\n window._cio.track(eventName, properties);\n }\n }, {\n key: \"page\",\n value: function page(rudderElement) {\n logger.debug(\"in Customer IO page\");\n var name = rudderElement.message.name || rudderElement.message.properties.url;\n\n window._cio.page(name, rudderElement.message.properties);\n }\n }, {\n key: \"isLoaded\",\n value: function isLoaded() {\n return !!(window._cio && window._cio.push !== Array.prototype.push);\n }\n }, {\n key: \"isReady\",\n value: function isReady() {\n return !!(window._cio && window._cio.push !== Array.prototype.push);\n }\n }]);\n\n return CustomerIO;\n }();\n\n /**\n * Cache whether `<body>` exists.\n */\n\n var body = false;\n /**\n * Callbacks to call when the body exists.\n */\n\n var callbacks = [];\n /**\n * Export a way to add handlers to be invoked once the body exists.\n *\n * @param {Function} callback A function to call when the body exists.\n */\n\n var onBody = function onBody(callback) {\n if (body) {\n call(callback);\n } else {\n callbacks.push(callback);\n }\n };\n /**\n * Set an interval to check for `document.body`.\n */\n\n\n var interval = setInterval(function () {\n if (!document.body) return;\n body = true;\n componentEach(callbacks, call);\n clearInterval(interval);\n }, 5);\n /**\n * Call a callback, passing it the body.\n *\n * @param {Function} callback The callback to call.\n */\n\n function call(callback) {\n callback(document.body);\n }\n\n var Chartbeat = /*#__PURE__*/function () {\n function Chartbeat(config, analytics) {\n _classCallCheck(this, Chartbeat);\n\n this.analytics = analytics; // use this to modify failed integrations or for passing events from callback to other destinations\n\n this._sf_async_config = window._sf_async_config = window._sf_async_config || {};\n window._sf_async_config.useCanonical = true;\n window._sf_async_config.uid = config.uid;\n window._sf_async_config.domain = config.domain;\n this.isVideo = !!config.video;\n this.sendNameAndCategoryAsTitle = config.sendNameAndCategoryAsTitle || true;\n this.subscriberEngagementKeys = config.subscriberEngagementKeys || [];\n this.replayEvents = [];\n this.failed = false;\n this.isFirstPageCallMade = false;\n this.name = \"CHARTBEAT\";\n }\n\n _createClass(Chartbeat, [{\n key: \"init\",\n value: function init() {\n logger.debug(\"===in init Chartbeat===\");\n }\n }, {\n key: \"identify\",\n value: function identify(rudderElement) {\n logger.debug(\"in Chartbeat identify\");\n }\n }, {\n key: \"track\",\n value: function track(rudderElement) {\n logger.debug(\"in Chartbeat track\");\n }\n }, {\n key: \"page\",\n value: function page(rudderElement) {\n logger.debug(\"in Chartbeat page\");\n this.loadConfig(rudderElement);\n\n if (!this.isFirstPageCallMade) {\n this.isFirstPageCallMade = true;\n this.initAfterPage();\n } else {\n if (this.failed) {\n logger.debug(\"===ignoring cause failed integration===\");\n this.replayEvents = [];\n return;\n }\n\n if (!this.isLoaded() && !this.failed) {\n logger.debug(\"===pushing to replay queue for chartbeat===\");\n this.replayEvents.push([\"page\", rudderElement]);\n return;\n }\n\n logger.debug(\"===processing page event in chartbeat===\");\n var properties = rudderElement.message.properties;\n window.pSUPERFLY.virtualPage(properties.path);\n }\n }\n }, {\n key: \"isLoaded\",\n value: function isLoaded() {\n logger.debug(\"in Chartbeat isLoaded\");\n\n if (!this.isFirstPageCallMade) {\n return true;\n }\n\n return !!window.pSUPERFLY;\n }\n }, {\n key: \"isFailed\",\n value: function isFailed() {\n return this.failed;\n }\n }, {\n key: \"isReady\",\n value: function isReady() {\n return !!window.pSUPERFLY;\n }\n }, {\n key: \"loadConfig\",\n value: function loadConfig(rudderElement) {\n var properties = rudderElement.message.properties;\n var category = properties ? properties.category : undefined;\n var name = rudderElement.message.name;\n var author = properties ? properties.author : undefined;\n var title;\n\n if (this.sendNameAndCategoryAsTitle) {\n title = category && name ? \"\".concat(category, \" \").concat(name) : name;\n }\n\n if (category) window._sf_async_config.sections = category;\n if (author) window._sf_async_config.authors = author;\n if (title) window._sf_async_config.title = title;\n\n var _cbq = window._cbq = window._cbq || [];\n\n for (var key in properties) {\n if (!properties.hasOwnProperty(key)) continue;\n\n if (this.subscriberEngagementKeys.indexOf(key) > -1) {\n _cbq.push([key, properties[key]]);\n }\n }\n }\n }, {\n key: \"initAfterPage\",\n value: function initAfterPage() {\n var _this = this;\n\n onBody(function () {\n var script = _this.isVideo ? \"chartbeat_video.js\" : \"chartbeat.js\";\n\n function loadChartbeat() {\n var e = document.createElement(\"script\");\n var n = document.getElementsByTagName(\"script\")[0];\n e.type = \"text/javascript\";\n e.async = true;\n e.src = \"//static.chartbeat.com/js/\".concat(script);\n n.parentNode.insertBefore(e, n);\n }\n\n loadChartbeat();\n });\n\n this._isReady(this).then(function (instance) {\n logger.debug(\"===replaying on chartbeat===\");\n instance.replayEvents.forEach(function (event) {\n instance[event[0]](event[1]);\n });\n });\n }\n }, {\n key: \"pause\",\n value: function pause(time) {\n return new Promise(function (resolve) {\n setTimeout(resolve, time);\n });\n }\n }, {\n key: \"_isReady\",\n value: function _isReady(instance) {\n var _this2 = this;\n\n var time = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return new Promise(function (resolve) {\n if (_this2.isLoaded()) {\n _this2.failed = false;\n logger.debug(\"===chartbeat loaded successfully===\");\n instance.analytics.emit(\"ready\");\n return resolve(instance);\n }\n\n if (time >= MAX_WAIT_FOR_INTEGRATION_LOAD) {\n _this2.failed = true;\n logger.debug(\"===chartbeat failed===\");\n return resolve(instance);\n }\n\n _this2.pause(INTEGRATION_LOAD_CHECK_INTERVAL).then(function () {\n return _this2._isReady(instance, time + INTEGRATION_LOAD_CHECK_INTERVAL).then(resolve);\n });\n });\n }\n }]);\n\n return Chartbeat;\n }();\n\n var Comscore = /*#__PURE__*/function () {\n function Comscore(config, analytics) {\n _classCallCheck(this, Comscore);\n\n this.c2ID = config.c2ID;\n this.analytics = analytics;\n this.comScoreBeaconParam = config.comScoreBeaconParam ? config.comScoreBeaconParam : {};\n this.isFirstPageCallMade = false;\n this.failed = false;\n this.comScoreParams = {};\n this.replayEvents = [];\n this.name = \"COMSCORE\";\n }\n\n _createClass(Comscore, [{\n key: \"init\",\n value: function init() {\n logger.debug(\"===in init Comscore init===\");\n }\n }, {\n key: \"identify\",\n value: function identify(rudderElement) {\n logger.debug(\"in Comscore identify\");\n }\n }, {\n key: \"track\",\n value: function track(rudderElement) {\n logger.debug(\"in Comscore track\");\n }\n }, {\n key: \"page\",\n value: function page(rudderElement) {\n logger.debug(\"in Comscore page\");\n this.loadConfig(rudderElement);\n\n if (!this.isFirstPageCallMade) {\n this.isFirstPageCallMade = true;\n this.initAfterPage();\n } else {\n if (this.failed) {\n this.replayEvents = [];\n return;\n }\n\n if (!this.isLoaded() && !this.failed) {\n this.replayEvents.push([\"page\", rudderElement]);\n return;\n }\n\n var properties = rudderElement.message.properties; // window.COMSCORE.beacon({c1:\"2\", c2: \"\"});\n // this.comScoreParams = this.mapComscoreParams(properties);\n\n window.COMSCORE.beacon(this.comScoreParams);\n }\n }\n }, {\n key: \"loadConfig\",\n value: function loadConfig(rudderElement) {\n logger.debug(\"=====in loadConfig=====\");\n this.comScoreParams = this.mapComscoreParams(rudderElement.message.properties);\n window._comscore = window._comscore || [];\n\n window._comscore.push(this.comScoreParams);\n }\n }, {\n key: \"initAfterPage\",\n value: function initAfterPage() {\n logger.debug(\"=====in initAfterPage=====\");\n\n (function () {\n var s = document.createElement(\"script\");\n var el = document.getElementsByTagName(\"script\")[0];\n s.async = true;\n s.src = \"\".concat(document.location.protocol == \"https:\" ? \"https://sb\" : \"http://b\", \".scorecardresearch.com/beacon.js\");\n el.parentNode.insertBefore(s, el);\n })();\n\n this._isReady(this).then(function (instance) {\n instance.replayEvents.forEach(function (event) {\n instance[event[0]](event[1]);\n });\n });\n }\n }, {\n key: \"pause\",\n value: function pause(time) {\n return new Promise(function (resolve) {\n setTimeout(resolve, time);\n });\n }\n }, {\n key: \"_isReady\",\n value: function _isReady(instance) {\n var _this = this;\n\n var time = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return new Promise(function (resolve) {\n if (_this.isLoaded()) {\n _this.failed = false;\n instance.analytics.emit(\"ready\");\n return resolve(instance);\n }\n\n if (time >= MAX_WAIT_FOR_INTEGRATION_LOAD) {\n _this.failed = true;\n return resolve(instance);\n }\n\n _this.pause(INTEGRATION_LOAD_CHECK_INTERVAL).then(function () {\n return _this._isReady(instance, time + INTEGRATION_LOAD_CHECK_INTERVAL).then(resolve);\n });\n });\n }\n }, {\n key: \"mapComscoreParams\",\n value: function mapComscoreParams(properties) {\n logger.debug(\"=====in mapComscoreParams=====\");\n var comScoreBeaconParamsMap = this.comScoreBeaconParam;\n var comScoreParams = {};\n Object.keys(comScoreBeaconParamsMap).forEach(function (property) {\n if (property in properties) {\n var key = comScoreBeaconParamsMap[property];\n var value = properties[property];\n comScoreParams[key] = value;\n }\n });\n comScoreParams.c1 = \"2\";\n comScoreParams.c2 = this.c2ID;\n /* if (this.options.comscorekw.length) {\n comScoreParams.comscorekw = this.options.comscorekw;\n } */\n\n logger.debug(\"=====in mapComscoreParams=====\", comScoreParams);\n return comScoreParams;\n }\n }, {\n key: \"isLoaded\",\n value: function isLoaded() {\n logger.debug(\"in Comscore isLoaded\");\n\n if (!this.isFirstPageCallMade) {\n return true;\n }\n\n return !!window.COMSCORE;\n }\n }, {\n key: \"isReady\",\n value: function isReady() {\n return !!window.COMSCORE;\n }\n }]);\n\n return Comscore;\n }();\n\n var FacebookPixel = /*#__PURE__*/function () {\n function FacebookPixel(config) {\n _classCallCheck(this, FacebookPixel);\n\n this.blacklistPiiProperties = config.blacklistPiiProperties;\n this.categoryToContent = config.categoryToContent;\n this.pixelId = config.pixelId;\n this.eventsToEvents = config.eventsToEvents;\n this.eventCustomProperties = config.eventCustomProperties;\n this.valueFieldIdentifier = config.valueFieldIdentifier;\n this.advancedMapping = config.advancedMapping;\n this.traitKeyToExternalId = config.traitKeyToExternalId;\n this.legacyConversionPixelId = config.legacyConversionPixelId;\n this.userIdAsPixelId = config.userIdAsPixelId;\n this.whitelistPiiProperties = config.whitelistPiiProperties;\n this.name = \"FB_PIXEL\";\n }\n\n _createClass(FacebookPixel, [{\n key: \"init\",\n value: function init() {\n if (this.categoryToContent === undefined) {\n this.categoryToContent = [];\n }\n\n if (this.legacyConversionPixelId === undefined) {\n this.legacyConversionPixelId = [];\n }\n\n if (this.userIdAsPixelId === undefined) {\n this.userIdAsPixelId = [];\n }\n\n logger.debug(\"===in init FbPixel===\");\n\n window._fbq = function () {\n if (window.fbq.callMethod) {\n window.fbq.callMethod.apply(window.fbq, arguments);\n } else {\n window.fbq.queue.push(arguments);\n }\n };\n\n window.fbq = window.fbq || window._fbq;\n window.fbq.push = window.fbq;\n window.fbq.loaded = true;\n window.fbq.disablePushState = true; // disables automatic pageview tracking\n\n window.fbq.allowDuplicatePageViews = true; // enables fb\n\n window.fbq.version = \"2.0\";\n window.fbq.queue = [];\n window.fbq(\"init\", this.pixelId);\n ScriptLoader(\"fbpixel-integration\", \"https://connect.facebook.net/en_US/fbevents.js\");\n }\n }, {\n key: \"isLoaded\",\n value: function isLoaded() {\n logger.debug(\"in FBPixel isLoaded\");\n return !!(window.fbq && window.fbq.callMethod);\n }\n }, {\n key: \"isReady\",\n value: function isReady() {\n logger.debug(\"in FBPixel isReady\");\n return !!(window.fbq && window.fbq.callMethod);\n }\n }, {\n key: \"page\",\n value: function page(rudderElement) {\n window.fbq(\"track\", \"PageView\");\n }\n }, {\n key: \"identify\",\n value: function identify(rudderElement) {\n if (this.advancedMapping) {\n window.fbq(\"init\", this.pixelId, rudderElement.message.context.traits);\n }\n }\n }, {\n key: \"track\",\n value: function track(rudderElement) {\n var _this = this;\n\n var self = this;\n var event = rudderElement.message.event;\n var revenue = this.formatRevenue(rudderElement.message.properties.revenue);\n var payload = this.buildPayLoad(rudderElement, true);\n\n if (this.categoryToContent === undefined) {\n this.categoryToContent = [];\n }\n\n if (this.legacyConversionPixelId === undefined) {\n this.legacyConversionPixelId = [];\n }\n\n if (this.userIdAsPixelId === undefined) {\n this.userIdAsPixelId = [];\n }\n\n payload.value = revenue;\n var standard = this.eventsToEvents;\n var legacy = this.legacyConversionPixelId;\n var standardTo;\n var legacyTo;\n standardTo = standard.reduce(function (filtered, standard) {\n if (standard.from === event) {\n filtered.push(standard.to);\n }\n\n return filtered;\n }, []);\n legacyTo = legacy.reduce(function (filtered, legacy) {\n if (legacy.from === event) {\n filtered.push(legacy.to);\n }\n\n return filtered;\n }, []);\n each_1(function (event) {\n payload.currency = rudderElement.message.properties.currency || \"USD\";\n window.fbq(\"trackSingle\", self.pixelId, event, payload, {\n eventID: rudderElement.message.messageId\n });\n }, standardTo);\n each_1(function (event) {\n window.fbq(\"trackSingle\", self.pixelId, event, {\n currency: rudderElement.message.properties.currency,\n value: revenue\n }, {\n eventID: rudderElement.message.messageId\n });\n }, legacyTo);\n\n if (event === \"Product List Viewed\") {\n var contentType;\n var contentIds;\n var contents = [];\n var products = rudderElement.message.properties.products;\n var customProperties = this.buildPayLoad(rudderElement, true);\n\n if (Array.isArray(products)) {\n products.forEach(function (product) {\n var productId = product.product_id;\n\n if (productId) {\n contentIds.push(productId);\n contents.push({\n id: productId,\n quantity: rudderElement.message.properties.quantity\n });\n }\n });\n }\n\n if (contentIds.length) {\n contentType = [\"product\"];\n } else {\n contentIds.push(rudderElement.message.properties.category || \"\");\n contents.push({\n id: rudderElement.message.properties.category || \"\",\n quantity: 1\n });\n contentType = [\"product_group\"];\n }\n\n window.fbq(\"trackSingle\", self.pixelId, \"ViewContent\", this.merge({\n content_ids: contentIds,\n content_type: this.getContentType(rudderElement, contentType),\n contents: contents\n }, customProperties), {\n eventID: rudderElement.message.messageId\n });\n each_1(function (event) {\n window.fbq(\"trackSingle\", self.pixelId, event, {\n currency: rudderElement.message.properties.currency,\n value: _this.formatRevenue(rudderElement.message.properties.revenue)\n }, {\n eventID: rudderElement.message.messageId\n });\n }, legacyTo);\n } else if (event === \"Product Viewed\") {\n var useValue = this.valueFieldIdentifier === \"properties.value\";\n var customProperties = this.buildPayLoad(rudderElement, true);\n window.fbq(\"trackSingle\", self.pixelId, \"ViewContent\", this.merge({\n content_ids: [rudderElement.message.properties.product_id || rudderElement.message.properties.id || rudderElement.message.properties.sku || \"\"],\n content_type: this.getContentType(rudderElement, [\"product\"]),\n content_name: rudderElement.message.properties.product_name || \"\",\n content_category: rudderElement.message.properties.category || \"\",\n currency: rudderElement.message.properties.currency,\n value: useValue ? this.formatRevenue(rudderElement.message.properties.value) : this.formatRevenue(rudderElement.message.properties.price),\n contents: [{\n id: rudderElement.message.properties.product_id || rudderElement.message.properties.id || rudderElement.message.properties.sku || \"\",\n quantity: rudderElement.message.properties.quantity,\n item_price: rudderElement.message.properties.price\n }]\n }, customProperties), {\n eventID: rudderElement.message.messageId\n });\n each_1(function (event) {\n window.fbq(\"trackSingle\", self.pixelId, event, {\n currency: rudderElement.message.properties.currency,\n value: useValue ? _this.formatRevenue(rudderElement.message.properties.value) : _this.formatRevenue(rudderElement.message.properties.price)\n }, {\n eventID: rudderElement.message.messageId\n });\n }, legacyTo);\n } else if (event === \"Product Added\") {\n var useValue = this.valueFieldIdentifier === \"properties.value\";\n var customProperties = this.buildPayLoad(rudderElement, true);\n window.fbq(\"trackSingle\", self.pixelId, \"AddToCart\", this.merge({\n content_ids: [rudderElement.message.properties.product_id || rudderElement.message.properties.id || rudderElement.message.properties.sku || \"\"],\n content_type: this.getContentType(rudderElement, [\"product\"]),\n content_name: rudderElement.message.properties.product_name || \"\",\n content_category: rudderElement.message.properties.category || \"\",\n currency: rudderElement.message.properties.currency,\n value: useValue ? this.formatRevenue(rudderElement.message.properties.value) : this.formatRevenue(rudderElement.message.properties.price),\n contents: [{\n id: rudderElement.message.properties.product_id || rudderElement.message.properties.id || rudderElement.message.properties.sku || \"\",\n quantity: rudderElement.message.properties.quantity,\n item_price: rudderElement.message.properties.price\n }]\n }, customProperties), {\n eventID: rudderElement.message.messageId\n });\n each_1(function (event) {\n window.fbq(\"trackSingle\", self.pixelId, event, {\n currency: rudderElement.message.properties.currency,\n value: useValue ? _this.formatRevenue(rudderElement.message.properties.value) : _this.formatRevenue(rudderElement.message.properties.price)\n }, {\n eventID: rudderElement.message.messageId\n });\n }, legacyTo);\n this.merge({\n content_ids: [rudderElement.message.properties.product_id || rudderElement.message.properties.id || rudderElement.message.properties.sku || \"\"],\n content_type: this.getContentType(rudderElement, [\"product\"]),\n content_name: rudderElement.message.properties.product_name || \"\",\n content_category: rudderElement.message.properties.category || \"\",\n currency: rudderElement.message.properties.currency,\n value: useValue ? this.formatRevenue(rudderElement.message.properties.value) : this.formatRevenue(rudderElement.message.properties.price),\n contents: [{\n id: rudderElement.message.properties.product_id || rudderElement.message.properties.id || rudderElement.message.properties.sku || \"\",\n quantity: rudderElement.message.properties.quantity,\n item_price: rudderElement.message.properties.price\n }]\n }, customProperties);\n } else if (event === \"Order Completed\") {\n var products = rudderElement.message.properties.products;\n var customProperties = this.buildPayLoad(rudderElement, true);\n var revenue = this.formatRevenue(rudderElement.message.properties.revenue);\n var contentType = this.getContentType(rudderElement, [\"product\"]);\n var contentIds = [];\n var contents = [];\n\n for (var i = 0; i < products.length; i++) {\n var pId = products[i].product_id;\n contentIds.push(pId);\n var content = {\n id: pId,\n quantity: rudderElement.message.properties.quantity\n };\n\n if (rudderElement.message.properties.price) {\n content.item_price = rudderElement.message.properties.price;\n }\n\n contents.push(content);\n }\n\n window.fbq(\"trackSingle\", self.pixelId, \"Purchase\", this.merge({\n content_ids: contentIds,\n content_type: contentType,\n currency: rudderElement.message.properties.currency,\n value: revenue,\n contents: contents,\n num_items: contentIds.length\n }, customProperties), {\n eventID: rudderElement.message.messageId\n });\n each_1(function (event) {\n window.fbq(\"trackSingle\", self.pixelId, event, {\n currency: rudderElement.message.properties.currency,\n value: _this.formatRevenue(rudderElement.message.properties.revenue)\n }, {\n eventID: rudderElement.message.messageId\n });\n }, legacyTo);\n } else if (event === \"Products Searched\") {\n var customProperties = this.buildPayLoad(rudderElement, true);\n window.fbq(\"trackSingle\", self.pixelId, \"Search\", this.merge({\n search_string: rudderElement.message.properties.query\n }, customProperties), {\n eventID: rudderElement.message.messageId\n });\n each_1(function (event) {\n window.fbq(\"trackSingle\", self.pixelId, event, {\n currency: rudderElement.message.properties.currency,\n value: formatRevenue(rudderElement.message.properties.revenue)\n }, {\n eventID: rudderElement.message.messageId\n });\n }, legacyTo);\n } else if (event === \"Checkout Started\") {\n var products = rudderElement.message.properties.products;\n var customProperties = this.buildPayLoad(rudderElement, true);\n var revenue = this.formatRevenue(rudderElement.message.properties.revenue);\n var contentCategory = rudderElement.message.properties.category;\n var contentIds = [];\n var contents = [];\n\n for (var i = 0; i < products.length; i++) {\n var product = products[i];\n var pId = product.product_id;\n contentIds.push(pId);\n var content = {\n id: pId,\n quantity: rudderElement.message.properties.quantity,\n item_price: rudderElement.message.properties.price\n };\n\n if (rudderElement.message.properties.price) {\n content.item_price = rudderElement.message.properties.price;\n }\n\n contents.push(content);\n }\n\n if (!contentCategory && products[0] && products[0].category) {\n contentCategory = products[0].category;\n }\n\n window.fbq(\"trackSingle\", self.pixelId, \"InitiateCheckout\", this.merge({\n content_category: contentCategory,\n content_ids: contentIds,\n content_type: this.getContentType(rudderElement, [\"product\"]),\n currency: rudderElement.message.properties.currency,\n value: revenue,\n contents: contents,\n num_items: contentIds.length\n }, customProperties), {\n eventID: rudderElement.message.messageId\n });\n each_1(function (event) {\n window.fbq(\"trackSingle\", self.pixelId, event, {\n currency: rudderElement.message.properties.currency,\n value: _this.formatRevenue(rudderElement.message.properties.revenue)\n }, {\n eventID: rudderElement.message.messageId\n });\n }, legacyTo);\n }\n }\n }, {\n key: \"getContentType\",\n value: function getContentType(rudderElement, defaultValue) {\n var options = rudderElement.message.options;\n\n if (options && options.contentType) {\n return [options.contentType];\n }\n\n var category = rudderElement.message.properties.category;\n\n if (!category) {\n var products = rudderElement.message.properties.products;\n\n if (products && products.length) {\n category = products[0].category;\n }\n }\n\n if (category) {\n var mapped = this.categoryToContent;\n var mappedTo;\n mappedTo = mapped.reduce(function (filtered, mapped) {\n if (mapped.from == category) {\n filtered.push(mapped.to);\n }\n\n return filtered;\n }, []);\n\n if (mappedTo.length) {\n return mappedTo;\n }\n }\n\n return defaultValue;\n }\n }, {\n key: \"merge\",\n value: function merge(obj1, obj2) {\n var res = {}; // All properties of obj1\n\n for (var propObj1 in obj1) {\n if (obj1.hasOwnProperty(propObj1)) {\n res[propObj1] = obj1[propObj1];\n }\n } // Extra properties of obj2\n\n\n for (var propObj2 in obj2) {\n if (obj2.hasOwnProperty(propObj2) && !res.hasOwnProperty(propObj2)) {\n res[propObj2] = obj2[propObj2];\n }\n }\n\n return res;\n }\n }, {\n key: \"formatRevenue\",\n value: function formatRevenue(revenue) {\n return Number(revenue || 0).toFixed(2);\n }\n }, {\n key: \"buildPayLoad\",\n value: function buildPayLoad(rudderElement, isStandardEvent) {\n var dateFields = [\"checkinDate\", \"checkoutDate\", \"departingArrivalDate\", \"departingDepartureDate\", \"returningArrivalDate\", \"returningDepartureDate\", \"travelEnd\", \"travelStart\"];\n var defaultPiiProperties = [\"email\", \"firstName\", \"lastName\", \"gender\", \"city\", \"country\", \"phone\", \"state\", \"zip\", \"birthday\"];\n var whitelistPiiProperties = this.whitelistPiiProperties || [];\n var blacklistPiiProperties = this.blacklistPiiProperties || [];\n var eventCustomProperties = this.eventCustomProperties || [];\n var customPiiProperties = {};\n\n for (var i = 0; i < blacklistPiiProperties[i]; i++) {\n var configuration = blacklistPiiProperties[i];\n customPiiProperties[configuration.blacklistPiiProperties] = configuration.blacklistPiiHash;\n }\n\n var payload = {};\n var properties = rudderElement.message.properties;\n\n for (var property in properties) {\n if (!properties.hasOwnProperty(property)) {\n continue;\n }\n\n if (isStandardEvent && eventCustomProperties.indexOf(property) < 0) {\n continue;\n }\n\n var value = properties[property];\n\n if (dateFields.indexOf(properties) >= 0) {\n if (is_1.date(value)) {\n payload[property] = value.toISOTring().split(\"T\")[0];\n continue;\n }\n }\n\n if (customPiiProperties.hasOwnProperty(property)) {\n if (customPiiProperties[property] && typeof value === \"string\") {\n payload[property] = sha256(value);\n }\n\n continue;\n }\n\n var isPropertyPii = defaultPiiProperties.indexOf(property) >= 0;\n var isProperyWhiteListed = whitelistPiiProperties.indexOf(property) >= 0;\n\n if (!isPropertyPii || isProperyWhiteListed) {\n payload[property] = value;\n }\n }\n\n return payload;\n }\n }]);\n\n return FacebookPixel;\n }();\n\n var core = createCommonjsModule(function (module, exports) {\n\n (function (root, factory) {\n {\n // CommonJS\n module.exports = exports = factory();\n }\n })(commonjsGlobal, function () {\n /**\n * CryptoJS core components.\n */\n var CryptoJS = CryptoJS || function (Math, undefined$1) {\n /*\n * Local polyfil of Object.create\n */\n var create = Object.create || function () {\n function F() {}\n return function (obj) {\n var subtype;\n F.prototype = obj;\n subtype = new F();\n F.prototype = null;\n return subtype;\n };\n }();\n /**\n * CryptoJS namespace.\n */\n\n\n var C = {};\n /**\n * Library namespace.\n */\n\n var C_lib = C.lib = {};\n /**\n * Base object for prototypal inheritance.\n */\n\n var Base = C_lib.Base = function () {\n return {\n /**\n * Creates a new object that inherits from this object.\n *\n * @param {Object} overrides Properties to copy into the new object.\n *\n * @return {Object} The new object.\n *\n * @static\n *\n * @example\n *\n * var MyType = CryptoJS.lib.Base.extend({\n * field: 'value',\n *\n * method: function () {\n * }\n * });\n */\n extend: function extend(overrides) {\n // Spawn\n var subtype = create(this); // Augment\n\n if (overrides) {\n subtype.mixIn(overrides);\n } // Create default initializer\n\n\n if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n subtype.init = function () {\n subtype.$super.init.apply(this, arguments);\n };\n } // Initializer's prototype is the subtype object\n\n\n subtype.init.prototype = subtype; // Reference supertype\n\n subtype.$super = this;\n return subtype;\n },\n\n /**\n * Extends this object and runs the init method.\n * Arguments to create() will be passed to init().\n *\n * @return {Object} The new object.\n *\n * @static\n *\n * @example\n *\n * var instance = MyType.create();\n */\n create: function create() {\n var instance = this.extend();\n instance.init.apply(instance, arguments);\n return instance;\n },\n\n /**\n * Initializes a newly created object.\n * Override this method to add some logic when your objects are created.\n *\n * @example\n *\n * var MyType = CryptoJS.lib.Base.extend({\n * init: function () {\n * // ...\n * }\n * });\n */\n init: function init() {},\n\n /**\n * Copies properties into this object.\n *\n * @param {Object} properties The properties to mix in.\n *\n * @example\n *\n * MyType.mixIn({\n * field: 'value'\n * });\n */\n mixIn: function mixIn(properties) {\n for (var propertyName in properties) {\n if (properties.hasOwnProperty(propertyName)) {\n this[propertyName] = properties[propertyName];\n }\n } // IE won't copy toString using the loop above\n\n\n if (properties.hasOwnProperty('toString')) {\n this.toString = properties.toString;\n }\n },\n\n /**\n * Creates a copy of this object.\n *\n * @return {Object} The clone.\n *\n * @example\n *\n * var clone = instance.clone();\n */\n clone: function clone() {\n return this.init.prototype.extend(this);\n }\n };\n }();\n /**\n * An array of 32-bit words.\n *\n * @property {Array} words The array of 32-bit words.\n * @property {number} sigBytes The number of significant bytes in this word array.\n */\n\n\n var WordArray = C_lib.WordArray = Base.extend({\n /**\n * Initializes a newly created word array.\n *\n * @param {Array} words (Optional) An array of 32-bit words.\n * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n *\n * @example\n *\n * var wordArray = CryptoJS.lib.WordArray.create();\n * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n */\n init: function init(words, sigBytes) {\n words = this.words = words || [];\n\n if (sigBytes != undefined$1) {\n this.sigBytes = sigBytes;\n } else {\n this.sigBytes = words.length * 4;\n }\n },\n\n /**\n * Converts this word array to a string.\n *\n * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n *\n * @return {string} The stringified word array.\n *\n * @example\n *\n * var string = wordArray + '';\n * var string = wordArray.toString();\n * var string = wordArray.toString(CryptoJS.enc.Utf8);\n */\n toString: function toString(encoder) {\n return (encoder || Hex).stringify(this);\n },\n\n /**\n * Concatenates a word array to this word array.\n *\n * @param {WordArray} wordArray The word array to append.\n *\n * @return {WordArray} This word array.\n *\n * @example\n *\n * wordArray1.concat(wordArray2);\n */\n concat: function concat(wordArray) {\n // Shortcuts\n var thisWords = this.words;\n var thatWords = wordArray.words;\n var thisSigBytes = this.sigBytes;\n var thatSigBytes = wordArray.sigBytes; // Clamp excess bits\n\n this.clamp(); // Concat\n\n if (thisSigBytes % 4) {\n // Copy one byte at a time\n for (var i = 0; i < thatSigBytes; i++) {\n var thatByte = thatWords[i >>> 2] >>> 24 - i % 4 * 8 & 0xff;\n thisWords[thisSigBytes + i >>> 2] |= thatByte << 24 - (thisSigBytes + i) % 4 * 8;\n }\n } else {\n // Copy one word at a time\n for (var i = 0; i < thatSigBytes; i += 4) {\n thisWords[thisSigBytes + i >>> 2] = thatWords[i >>> 2];\n }\n }\n\n this.sigBytes += thatSigBytes; // Chainable\n\n return this;\n },\n\n /**\n * Removes insignificant bits.\n *\n * @example\n *\n * wordArray.clamp();\n */\n clamp: function clamp() {\n // Shortcuts\n var words = this.words;\n var sigBytes = this.sigBytes; // Clamp\n\n words[sigBytes >>> 2] &= 0xffffffff << 32 - sigBytes % 4 * 8;\n words.length = Math.ceil(sigBytes / 4);\n },\n\n /**\n * Creates a copy of this word array.\n *\n * @return {WordArray} The clone.\n *\n * @example\n *\n * var clone = wordArray.clone();\n */\n clone: function clone() {\n var clone = Base.clone.call(this);\n clone.words = this.words.slice(0);\n return clone;\n },\n\n /**\n * Creates a word array filled with random bytes.\n *\n * @param {number} nBytes The number of random bytes to generate.\n *\n * @return {WordArray} The random word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.lib.WordArray.random(16);\n */\n random: function random(nBytes) {\n var words = [];\n\n var r = function r(m_w) {\n var m_w = m_w;\n var m_z = 0x3ade68b1;\n var mask = 0xffffffff;\n return function () {\n m_z = 0x9069 * (m_z & 0xFFFF) + (m_z >> 0x10) & mask;\n m_w = 0x4650 * (m_w & 0xFFFF) + (m_w >> 0x10) & mask;\n var result = (m_z << 0x10) + m_w & mask;\n result /= 0x100000000;\n result += 0.5;\n return result * (Math.random() > .5 ? 1 : -1);\n };\n };\n\n for (var i = 0, rcache; i < nBytes; i += 4) {\n var _r = r((rcache || Math.random()) * 0x100000000);\n\n rcache = _r() * 0x3ade67b7;\n words.push(_r() * 0x100000000 | 0);\n }\n\n return new WordArray.init(words, nBytes);\n }\n });\n /**\n * Encoder namespace.\n */\n\n var C_enc = C.enc = {};\n /**\n * Hex encoding strategy.\n */\n\n var Hex = C_enc.Hex = {\n /**\n * Converts a word array to a hex string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The hex string.\n *\n * @static\n *\n * @example\n *\n * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n */\n stringify: function stringify(wordArray) {\n // Shortcuts\n var words = wordArray.words;\n var sigBytes = wordArray.sigBytes; // Convert\n\n var hexChars = [];\n\n for (var i = 0; i < sigBytes; i++) {\n var bite = words[i >>> 2] >>> 24 - i % 4 * 8 & 0xff;\n hexChars.push((bite >>> 4).toString(16));\n hexChars.push((bite & 0x0f).toString(16));\n }\n\n return hexChars.join('');\n },\n\n /**\n * Converts a hex string to a word array.\n *\n * @param {string} hexStr The hex string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n */\n parse: function parse(hexStr) {\n // Shortcut\n var hexStrLength = hexStr.length; // Convert\n\n var words = [];\n\n for (var i = 0; i < hexStrLength; i += 2) {\n words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << 24 - i % 8 * 4;\n }\n\n return new WordArray.init(words, hexStrLength / 2);\n }\n };\n /**\n * Latin1 encoding strategy.\n */\n\n var Latin1 = C_enc.Latin1 = {\n /**\n * Converts a word array to a Latin1 string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The Latin1 string.\n *\n * @static\n *\n * @example\n *\n * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n */\n stringify: function stringify(wordArray) {\n // Shortcuts\n var words = wordArray.words;\n var sigBytes = wordArray.sigBytes; // Convert\n\n var latin1Chars = [];\n\n for (var i = 0; i < sigBytes; i++) {\n var bite = words[i >>> 2] >>> 24 - i % 4 * 8 & 0xff;\n latin1Chars.push(String.fromCharCode(bite));\n }\n\n return latin1Chars.join('');\n },\n\n /**\n * Converts a Latin1 string to a word array.\n *\n * @param {string} latin1Str The Latin1 string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n */\n parse: function parse(latin1Str) {\n // Shortcut\n var latin1StrLength = latin1Str.length; // Convert\n\n var words = [];\n\n for (var i = 0; i < latin1StrLength; i++) {\n words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << 24 - i % 4 * 8;\n }\n\n return new WordArray.init(words, latin1StrLength);\n }\n };\n /**\n * UTF-8 encoding strategy.\n */\n\n var Utf8 = C_enc.Utf8 = {\n /**\n * Converts a word array to a UTF-8 string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The UTF-8 string.\n *\n * @static\n *\n * @example\n *\n * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n */\n stringify: function stringify(wordArray) {\n try {\n return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n } catch (e) {\n throw new Error('Malformed UTF-8 data');\n }\n },\n\n /**\n * Converts a UTF-8 string to a word array.\n *\n * @param {string} utf8Str The UTF-8 string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n */\n parse: function parse(utf8Str) {\n return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n }\n };\n /**\n * Abstract buffered block algorithm template.\n *\n * The property blockSize must be implemented in a concrete subtype.\n *\n * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n */\n\n var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n /**\n * Resets this block algorithm's data buffer to its initial state.\n *\n * @example\n *\n * bufferedBlockAlgorithm.reset();\n */\n reset: function reset() {\n // Initial values\n this._data = new WordArray.init();\n this._nDataBytes = 0;\n },\n\n /**\n * Adds new data to this block algorithm's buffer.\n *\n * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n *\n * @example\n *\n * bufferedBlockAlgorithm._append('data');\n * bufferedBlockAlgorithm._append(wordArray);\n */\n _append: function _append(data) {\n // Convert string to WordArray, else assume WordArray already\n if (typeof data == 'string') {\n data = Utf8.parse(data);\n } // Append\n\n\n this._data.concat(data);\n\n this._nDataBytes += data.sigBytes;\n },\n\n /**\n * Processes available data blocks.\n *\n * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n *\n * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n *\n * @return {WordArray} The processed data.\n *\n * @example\n *\n * var processedData = bufferedBlockAlgorithm._process();\n * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n */\n _process: function _process(doFlush) {\n // Shortcuts\n var data = this._data;\n var dataWords = data.words;\n var dataSigBytes = data.sigBytes;\n var blockSize = this.blockSize;\n var blockSizeBytes = blockSize * 4; // Count blocks ready\n\n var nBlocksReady = dataSigBytes / blockSizeBytes;\n\n if (doFlush) {\n // Round up to include partial blocks\n nBlocksReady = Math.ceil(nBlocksReady);\n } else {\n // Round down to include only full blocks,\n // less the number of blocks that must remain in the buffer\n nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n } // Count words ready\n\n\n var nWordsReady = nBlocksReady * blockSize; // Count bytes ready\n\n var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes); // Process blocks\n\n if (nWordsReady) {\n for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n // Perform concrete-algorithm logic\n this._doProcessBlock(dataWords, offset);\n } // Remove processed words\n\n\n var processedWords = dataWords.splice(0, nWordsReady);\n data.sigBytes -= nBytesReady;\n } // Return processed words\n\n\n return new WordArray.init(processedWords, nBytesReady);\n },\n\n /**\n * Creates a copy of this object.\n *\n * @return {Object} The clone.\n *\n * @example\n *\n * var clone = bufferedBlockAlgorithm.clone();\n */\n clone: function clone() {\n var clone = Base.clone.call(this);\n clone._data = this._data.clone();\n return clone;\n },\n _minBufferSize: 0\n });\n /**\n * Abstract hasher template.\n *\n * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n */\n\n var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n /**\n * Configuration options.\n */\n cfg: Base.extend(),\n\n /**\n * Initializes a newly created hasher.\n *\n * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n *\n * @example\n *\n * var hasher = CryptoJS.algo.SHA256.create();\n */\n init: function init(cfg) {\n // Apply config defaults\n this.cfg = this.cfg.extend(cfg); // Set initial values\n\n this.reset();\n },\n\n /**\n * Resets this hasher to its initial state.\n *\n * @example\n *\n * hasher.reset();\n */\n reset: function reset() {\n // Reset data buffer\n BufferedBlockAlgorithm.reset.call(this); // Perform concrete-hasher logic\n\n this._doReset();\n },\n\n /**\n * Updates this hasher with a message.\n *\n * @param {WordArray|string} messageUpdate The message to append.\n *\n * @return {Hasher} This hasher.\n *\n * @example\n *\n * hasher.update('message');\n * hasher.update(wordArray);\n */\n update: function update(messageUpdate) {\n // Append\n this._append(messageUpdate); // Update the hash\n\n\n this._process(); // Chainable\n\n\n return this;\n },\n\n /**\n * Finalizes the hash computation.\n * Note that the finalize operation is effectively a destructive, read-once operation.\n *\n * @param {WordArray|string} messageUpdate (Optional) A final message update.\n *\n * @return {WordArray} The hash.\n *\n * @example\n *\n * var hash = hasher.finalize();\n * var hash = hasher.finalize('message');\n * var hash = hasher.finalize(wordArray);\n */\n finalize: function finalize(messageUpdate) {\n // Final message update\n if (messageUpdate) {\n this._append(messageUpdate);\n } // Perform concrete-hasher logic\n\n\n var hash = this._doFinalize();\n\n return hash;\n },\n blockSize: 512 / 32,\n\n /**\n * Creates a shortcut function to a hasher's object interface.\n *\n * @param {Hasher} hasher The hasher to create a helper for.\n *\n * @return {Function} The shortcut function.\n *\n * @static\n *\n * @example\n *\n * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n */\n _createHelper: function _createHelper(hasher) {\n return function (message, cfg) {\n return new hasher.init(cfg).finalize(message);\n };\n },\n\n /**\n * Creates a shortcut function to the HMAC's object interface.\n *\n * @param {Hasher} hasher The hasher to use in this HMAC helper.\n *\n * @return {Function} The shortcut function.\n *\n * @static\n *\n * @example\n *\n * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n */\n _createHmacHelper: function _createHmacHelper(hasher) {\n return function (message, key) {\n return new C_algo.HMAC.init(hasher, key).finalize(message);\n };\n }\n });\n /**\n * Algorithm namespace.\n */\n\n var C_algo = C.algo = {};\n return C;\n }(Math);\n\n return CryptoJS;\n });\n });\n\n var encBase64 = createCommonjsModule(function (module, exports) {\n\n (function (root, factory) {\n {\n // CommonJS\n module.exports = exports = factory(core);\n }\n })(commonjsGlobal, function (CryptoJS) {\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var C_enc = C.enc;\n /**\n * Base64 encoding strategy.\n */\n\n var Base64 = C_enc.Base64 = {\n /**\n * Converts a word array to a Base64 string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The Base64 string.\n *\n * @static\n *\n * @example\n *\n * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n */\n stringify: function stringify(wordArray) {\n // Shortcuts\n var words = wordArray.words;\n var sigBytes = wordArray.sigBytes;\n var map = this._map; // Clamp excess bits\n\n wordArray.clamp(); // Convert\n\n var base64Chars = [];\n\n for (var i = 0; i < sigBytes; i += 3) {\n var byte1 = words[i >>> 2] >>> 24 - i % 4 * 8 & 0xff;\n var byte2 = words[i + 1 >>> 2] >>> 24 - (i + 1) % 4 * 8 & 0xff;\n var byte3 = words[i + 2 >>> 2] >>> 24 - (i + 2) % 4 * 8 & 0xff;\n var triplet = byte1 << 16 | byte2 << 8 | byte3;\n\n for (var j = 0; j < 4 && i + j * 0.75 < sigBytes; j++) {\n base64Chars.push(map.charAt(triplet >>> 6 * (3 - j) & 0x3f));\n }\n } // Add padding\n\n\n var paddingChar = map.charAt(64);\n\n if (paddingChar) {\n while (base64Chars.length % 4) {\n base64Chars.push(paddingChar);\n }\n }\n\n return base64Chars.join('');\n },\n\n /**\n * Converts a Base64 string to a word array.\n *\n * @param {string} base64Str The Base64 string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n */\n parse: function parse(base64Str) {\n // Shortcuts\n var base64StrLength = base64Str.length;\n var map = this._map;\n var reverseMap = this._reverseMap;\n\n if (!reverseMap) {\n reverseMap = this._reverseMap = [];\n\n for (var j = 0; j < map.length; j++) {\n reverseMap[map.charCodeAt(j)] = j;\n }\n } // Ignore padding\n\n\n var paddingChar = map.charAt(64);\n\n if (paddingChar) {\n var paddingIndex = base64Str.indexOf(paddingChar);\n\n if (paddingIndex !== -1) {\n base64StrLength = paddingIndex;\n }\n } // Convert\n\n\n return parseLoop(base64Str, base64StrLength, reverseMap);\n },\n _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n };\n\n function parseLoop(base64Str, base64StrLength, reverseMap) {\n var words = [];\n var nBytes = 0;\n\n for (var i = 0; i < base64StrLength; i++) {\n if (i % 4) {\n var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << i % 4 * 2;\n var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> 6 - i % 4 * 2;\n words[nBytes >>> 2] |= (bits1 | bits2) << 24 - nBytes % 4 * 8;\n nBytes++;\n }\n }\n\n return WordArray.create(words, nBytes);\n }\n })();\n\n return CryptoJS.enc.Base64;\n });\n });\n\n var md5$1 = createCommonjsModule(function (module, exports) {\n\n (function (root, factory) {\n {\n // CommonJS\n module.exports = exports = factory(core);\n }\n })(commonjsGlobal, function (CryptoJS) {\n (function (Math) {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var Hasher = C_lib.Hasher;\n var C_algo = C.algo; // Constants table\n\n var T = []; // Compute constants\n\n (function () {\n for (var i = 0; i < 64; i++) {\n T[i] = Math.abs(Math.sin(i + 1)) * 0x100000000 | 0;\n }\n })();\n /**\n * MD5 hash algorithm.\n */\n\n\n var MD5 = C_algo.MD5 = Hasher.extend({\n _doReset: function _doReset() {\n this._hash = new WordArray.init([0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476]);\n },\n _doProcessBlock: function _doProcessBlock(M, offset) {\n // Swap endian\n for (var i = 0; i < 16; i++) {\n // Shortcuts\n var offset_i = offset + i;\n var M_offset_i = M[offset_i];\n M[offset_i] = (M_offset_i << 8 | M_offset_i >>> 24) & 0x00ff00ff | (M_offset_i << 24 | M_offset_i >>> 8) & 0xff00ff00;\n } // Shortcuts\n\n\n var H = this._hash.words;\n var M_offset_0 = M[offset + 0];\n var M_offset_1 = M[offset + 1];\n var M_offset_2 = M[offset + 2];\n var M_offset_3 = M[offset + 3];\n var M_offset_4 = M[offset + 4];\n var M_offset_5 = M[offset + 5];\n var M_offset_6 = M[offset + 6];\n var M_offset_7 = M[offset + 7];\n var M_offset_8 = M[offset + 8];\n var M_offset_9 = M[offset + 9];\n var M_offset_10 = M[offset + 10];\n var M_offset_11 = M[offset + 11];\n var M_offset_12 = M[offset + 12];\n var M_offset_13 = M[offset + 13];\n var M_offset_14 = M[offset + 14];\n var M_offset_15 = M[offset + 15]; // Working varialbes\n\n var a = H[0];\n var b = H[1];\n var c = H[2];\n var d = H[3]; // Computation\n\n a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n a = II(a, b, c, d, M_offset_0, 6, T[48]);\n d = II(d, a, b, c, M_offset_7, 10, T[49]);\n c = II(c, d, a, b, M_offset_14, 15, T[50]);\n b = II(b, c, d, a, M_offset_5, 21, T[51]);\n a = II(a, b, c, d, M_offset_12, 6, T[52]);\n d = II(d, a, b, c, M_offset_3, 10, T[53]);\n c = II(c, d, a, b, M_offset_10, 15, T[54]);\n b = II(b, c, d, a, M_offset_1, 21, T[55]);\n a = II(a, b, c, d, M_offset_8, 6, T[56]);\n d = II(d, a, b, c, M_offset_15, 10, T[57]);\n c = II(c, d, a, b, M_offset_6, 15, T[58]);\n b = II(b, c, d, a, M_offset_13, 21, T[59]);\n a = II(a, b, c, d, M_offset_4, 6, T[60]);\n d = II(d, a, b, c, M_offset_11, 10, T[61]);\n c = II(c, d, a, b, M_offset_2, 15, T[62]);\n b = II(b, c, d, a, M_offset_9, 21, T[63]); // Intermediate hash value\n\n H[0] = H[0] + a | 0;\n H[1] = H[1] + b | 0;\n H[2] = H[2] + c | 0;\n H[3] = H[3] + d | 0;\n },\n _doFinalize: function _doFinalize() {\n // Shortcuts\n var data = this._data;\n var dataWords = data.words;\n var nBitsTotal = this._nDataBytes * 8;\n var nBitsLeft = data.sigBytes * 8; // Add padding\n\n dataWords[nBitsLeft >>> 5] |= 0x80 << 24 - nBitsLeft % 32;\n var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n var nBitsTotalL = nBitsTotal;\n dataWords[(nBitsLeft + 64 >>> 9 << 4) + 15] = (nBitsTotalH << 8 | nBitsTotalH >>> 24) & 0x00ff00ff | (nBitsTotalH << 24 | nBitsTotalH >>> 8) & 0xff00ff00;\n dataWords[(nBitsLeft + 64 >>> 9 << 4) + 14] = (nBitsTotalL << 8 | nBitsTotalL >>> 24) & 0x00ff00ff | (nBitsTotalL << 24 | nBitsTotalL >>> 8) & 0xff00ff00;\n data.sigBytes = (dataWords.length + 1) * 4; // Hash final blocks\n\n this._process(); // Shortcuts\n\n\n var hash = this._hash;\n var H = hash.words; // Swap endian\n\n for (var i = 0; i < 4; i++) {\n // Shortcut\n var H_i = H[i];\n H[i] = (H_i << 8 | H_i >>> 24) & 0x00ff00ff | (H_i << 24 | H_i >>> 8) & 0xff00ff00;\n } // Return final computed hash\n\n\n return hash;\n },\n clone: function clone() {\n var clone = Hasher.clone.call(this);\n clone._hash = this._hash.clone();\n return clone;\n }\n });\n\n function FF(a, b, c, d, x, s, t) {\n var n = a + (b & c | ~b & d) + x + t;\n return (n << s | n >>> 32 - s) + b;\n }\n\n function GG(a, b, c, d, x, s, t) {\n var n = a + (b & d | c & ~d) + x + t;\n return (n << s | n >>> 32 - s) + b;\n }\n\n function HH(a, b, c, d, x, s, t) {\n var n = a + (b ^ c ^ d) + x + t;\n return (n << s | n >>> 32 - s) + b;\n }\n\n function II(a, b, c, d, x, s, t) {\n var n = a + (c ^ (b | ~d)) + x + t;\n return (n << s | n >>> 32 - s) + b;\n }\n /**\n * Shortcut function to the hasher's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n *\n * @return {WordArray} The hash.\n *\n * @static\n *\n * @example\n *\n * var hash = CryptoJS.MD5('message');\n * var hash = CryptoJS.MD5(wordArray);\n */\n\n\n C.MD5 = Hasher._createHelper(MD5);\n /**\n * Shortcut function to the HMAC's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n * @param {WordArray|string} key The secret key.\n *\n * @return {WordArray} The HMAC.\n *\n * @static\n *\n * @example\n *\n * var hmac = CryptoJS.HmacMD5(message, key);\n */\n\n C.HmacMD5 = Hasher._createHmacHelper(MD5);\n })(Math);\n\n return CryptoJS.MD5;\n });\n });\n\n var sha1 = createCommonjsModule(function (module, exports) {\n\n (function (root, factory) {\n {\n // CommonJS\n module.exports = exports = factory(core);\n }\n })(commonjsGlobal, function (CryptoJS) {\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var Hasher = C_lib.Hasher;\n var C_algo = C.algo; // Reusable object\n\n var W = [];\n /**\n * SHA-1 hash algorithm.\n */\n\n var SHA1 = C_algo.SHA1 = Hasher.extend({\n _doReset: function _doReset() {\n this._hash = new WordArray.init([0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0]);\n },\n _doProcessBlock: function _doProcessBlock(M, offset) {\n // Shortcut\n var H = this._hash.words; // Working variables\n\n var a = H[0];\n var b = H[1];\n var c = H[2];\n var d = H[3];\n var e = H[4]; // Computation\n\n for (var i = 0; i < 80; i++) {\n if (i < 16) {\n W[i] = M[offset + i] | 0;\n } else {\n var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n W[i] = n << 1 | n >>> 31;\n }\n\n var t = (a << 5 | a >>> 27) + e + W[i];\n\n if (i < 20) {\n t += (b & c | ~b & d) + 0x5a827999;\n } else if (i < 40) {\n t += (b ^ c ^ d) + 0x6ed9eba1;\n } else if (i < 60) {\n t += (b & c | b & d | c & d) - 0x70e44324;\n } else\n /* if (i < 80) */\n {\n t += (b ^ c ^ d) - 0x359d3e2a;\n }\n\n e = d;\n d = c;\n c = b << 30 | b >>> 2;\n b = a;\n a = t;\n } // Intermediate hash value\n\n\n H[0] = H[0] + a | 0;\n H[1] = H[1] + b | 0;\n H[2] = H[2] + c | 0;\n H[3] = H[3] + d | 0;\n H[4] = H[4] + e | 0;\n },\n _doFinalize: function _doFinalize() {\n // Shortcuts\n var data = this._data;\n var dataWords = data.words;\n var nBitsTotal = this._nDataBytes * 8;\n var nBitsLeft = data.sigBytes * 8; // Add padding\n\n dataWords[nBitsLeft >>> 5] |= 0x80 << 24 - nBitsLeft % 32;\n dataWords[(nBitsLeft + 64 >>> 9 << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n dataWords[(nBitsLeft + 64 >>> 9 << 4) + 15] = nBitsTotal;\n data.sigBytes = dataWords.length * 4; // Hash final blocks\n\n this._process(); // Return final computed hash\n\n\n return this._hash;\n },\n clone: function clone() {\n var clone = Hasher.clone.call(this);\n clone._hash = this._hash.clone();\n return clone;\n }\n });\n /**\n * Shortcut function to the hasher's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n *\n * @return {WordArray} The hash.\n *\n * @static\n *\n * @example\n *\n * var hash = CryptoJS.SHA1('message');\n * var hash = CryptoJS.SHA1(wordArray);\n */\n\n C.SHA1 = Hasher._createHelper(SHA1);\n /**\n * Shortcut function to the HMAC's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n * @param {WordArray|string} key The secret key.\n *\n * @return {WordArray} The HMAC.\n *\n * @static\n *\n * @example\n *\n * var hmac = CryptoJS.HmacSHA1(message, key);\n */\n\n C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n })();\n\n return CryptoJS.SHA1;\n });\n });\n\n var hmac = createCommonjsModule(function (module, exports) {\n\n (function (root, factory) {\n {\n // CommonJS\n module.exports = exports = factory(core);\n }\n })(commonjsGlobal, function (CryptoJS) {\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var Base = C_lib.Base;\n var C_enc = C.enc;\n var Utf8 = C_enc.Utf8;\n var C_algo = C.algo;\n /**\n * HMAC algorithm.\n */\n\n var HMAC = C_algo.HMAC = Base.extend({\n /**\n * Initializes a newly created HMAC.\n *\n * @param {Hasher} hasher The hash algorithm to use.\n * @param {WordArray|string} key The secret key.\n *\n * @example\n *\n * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n */\n init: function init(hasher, key) {\n // Init hasher\n hasher = this._hasher = new hasher.init(); // Convert string to WordArray, else assume WordArray already\n\n if (typeof key == 'string') {\n key = Utf8.parse(key);\n } // Shortcuts\n\n\n var hasherBlockSize = hasher.blockSize;\n var hasherBlockSizeBytes = hasherBlockSize * 4; // Allow arbitrary length keys\n\n if (key.sigBytes > hasherBlockSizeBytes) {\n key = hasher.finalize(key);\n } // Clamp excess bits\n\n\n key.clamp(); // Clone key for inner and outer pads\n\n var oKey = this._oKey = key.clone();\n var iKey = this._iKey = key.clone(); // Shortcuts\n\n var oKeyWords = oKey.words;\n var iKeyWords = iKey.words; // XOR keys with pad constants\n\n for (var i = 0; i < hasherBlockSize; i++) {\n oKeyWords[i] ^= 0x5c5c5c5c;\n iKeyWords[i] ^= 0x36363636;\n }\n\n oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes; // Set initial values\n\n this.reset();\n },\n\n /**\n * Resets this HMAC to its initial state.\n *\n * @example\n *\n * hmacHasher.reset();\n */\n reset: function reset() {\n // Shortcut\n var hasher = this._hasher; // Reset\n\n hasher.reset();\n hasher.update(this._iKey);\n },\n\n /**\n * Updates this HMAC with a message.\n *\n * @param {WordArray|string} messageUpdate The message to append.\n *\n * @return {HMAC} This HMAC instance.\n *\n * @example\n *\n * hmacHasher.update('message');\n * hmacHasher.update(wordArray);\n */\n update: function update(messageUpdate) {\n this._hasher.update(messageUpdate); // Chainable\n\n\n return this;\n },\n\n /**\n * Finalizes the HMAC computation.\n * Note that the finalize operation is effectively a destructive, read-once operation.\n *\n * @param {WordArray|string} messageUpdate (Optional) A final message update.\n *\n * @return {WordArray} The HMAC.\n *\n * @example\n *\n * var hmac = hmacHasher.finalize();\n * var hmac = hmacHasher.finalize('message');\n * var hmac = hmacHasher.finalize(wordArray);\n */\n finalize: function finalize(messageUpdate) {\n // Shortcut\n var hasher = this._hasher; // Compute HMAC\n\n var innerHash = hasher.finalize(messageUpdate);\n hasher.reset();\n var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n return hmac;\n }\n });\n })();\n });\n });\n\n var evpkdf = createCommonjsModule(function (module, exports) {\n\n (function (root, factory, undef) {\n {\n // CommonJS\n module.exports = exports = factory(core, sha1, hmac);\n }\n })(commonjsGlobal, function (CryptoJS) {\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var Base = C_lib.Base;\n var WordArray = C_lib.WordArray;\n var C_algo = C.algo;\n var MD5 = C_algo.MD5;\n /**\n * This key derivation function is meant to conform with EVP_BytesToKey.\n * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n */\n\n var EvpKDF = C_algo.EvpKDF = Base.extend({\n /**\n * Configuration options.\n *\n * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n * @property {number} iterations The number of iterations to perform. Default: 1\n */\n cfg: Base.extend({\n keySize: 128 / 32,\n hasher: MD5,\n iterations: 1\n }),\n\n /**\n * Initializes a newly created key derivation function.\n *\n * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n *\n * @example\n *\n * var kdf = CryptoJS.algo.EvpKDF.create();\n * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n */\n init: function init(cfg) {\n this.cfg = this.cfg.extend(cfg);\n },\n\n /**\n * Derives a key from a password.\n *\n * @param {WordArray|string} password The password.\n * @param {WordArray|string} salt A salt.\n *\n * @return {WordArray} The derived key.\n *\n * @example\n *\n * var key = kdf.compute(password, salt);\n */\n compute: function compute(password, salt) {\n // Shortcut\n var cfg = this.cfg; // Init hasher\n\n var hasher = cfg.hasher.create(); // Initial values\n\n var derivedKey = WordArray.create(); // Shortcuts\n\n var derivedKeyWords = derivedKey.words;\n var keySize = cfg.keySize;\n var iterations = cfg.iterations; // Generate key\n\n while (derivedKeyWords.length < keySize) {\n if (block) {\n hasher.update(block);\n }\n\n var block = hasher.update(password).finalize(salt);\n hasher.reset(); // Iterations\n\n for (var i = 1; i < iterations; i++) {\n block = hasher.finalize(block);\n hasher.reset();\n }\n\n derivedKey.concat(block);\n }\n\n derivedKey.sigBytes = keySize * 4;\n return derivedKey;\n }\n });\n /**\n * Derives a key from a password.\n *\n * @param {WordArray|string} password The password.\n * @param {WordArray|string} salt A salt.\n * @param {Object} cfg (Optional) The configuration options to use for this computation.\n *\n * @return {WordArray} The derived key.\n *\n * @static\n *\n * @example\n *\n * var key = CryptoJS.EvpKDF(password, salt);\n * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n */\n\n C.EvpKDF = function (password, salt, cfg) {\n return EvpKDF.create(cfg).compute(password, salt);\n };\n })();\n\n return CryptoJS.EvpKDF;\n });\n });\n\n var cipherCore = createCommonjsModule(function (module, exports) {\n\n (function (root, factory, undef) {\n {\n // CommonJS\n module.exports = exports = factory(core, evpkdf);\n }\n })(commonjsGlobal, function (CryptoJS) {\n /**\n * Cipher core components.\n */\n CryptoJS.lib.Cipher || function (undefined$1) {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var Base = C_lib.Base;\n var WordArray = C_lib.WordArray;\n var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n var C_enc = C.enc;\n var Utf8 = C_enc.Utf8;\n var Base64 = C_enc.Base64;\n var C_algo = C.algo;\n var EvpKDF = C_algo.EvpKDF;\n /**\n * Abstract base cipher template.\n *\n * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n */\n\n var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n /**\n * Configuration options.\n *\n * @property {WordArray} iv The IV to use for this operation.\n */\n cfg: Base.extend(),\n\n /**\n * Creates this cipher in encryption mode.\n *\n * @param {WordArray} key The key.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {Cipher} A cipher instance.\n *\n * @static\n *\n * @example\n *\n * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n */\n createEncryptor: function createEncryptor(key, cfg) {\n return this.create(this._ENC_XFORM_MODE, key, cfg);\n },\n\n /**\n * Creates this cipher in decryption mode.\n *\n * @param {WordArray} key The key.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {Cipher} A cipher instance.\n *\n * @static\n *\n * @example\n *\n * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n */\n createDecryptor: function createDecryptor(key, cfg) {\n return this.create(this._DEC_XFORM_MODE, key, cfg);\n },\n\n /**\n * Initializes a newly created cipher.\n *\n * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n * @param {WordArray} key The key.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @example\n *\n * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n */\n init: function init(xformMode, key, cfg) {\n // Apply config defaults\n this.cfg = this.cfg.extend(cfg); // Store transform mode and key\n\n this._xformMode = xformMode;\n this._key = key; // Set initial values\n\n this.reset();\n },\n\n /**\n * Resets this cipher to its initial state.\n *\n * @example\n *\n * cipher.reset();\n */\n reset: function reset() {\n // Reset data buffer\n BufferedBlockAlgorithm.reset.call(this); // Perform concrete-cipher logic\n\n this._doReset();\n },\n\n /**\n * Adds data to be encrypted or decrypted.\n *\n * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n *\n * @return {WordArray} The data after processing.\n *\n * @example\n *\n * var encrypted = cipher.process('data');\n * var encrypted = cipher.process(wordArray);\n */\n process: function process(dataUpdate) {\n // Append\n this._append(dataUpdate); // Process available blocks\n\n\n return this._process();\n },\n\n /**\n * Finalizes the encryption or decryption process.\n * Note that the finalize operation is effectively a destructive, read-once operation.\n *\n * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n *\n * @return {WordArray} The data after final processing.\n *\n * @example\n *\n * var encrypted = cipher.finalize();\n * var encrypted = cipher.finalize('data');\n * var encrypted = cipher.finalize(wordArray);\n */\n finalize: function finalize(dataUpdate) {\n // Final data update\n if (dataUpdate) {\n this._append(dataUpdate);\n } // Perform concrete-cipher logic\n\n\n var finalProcessedData = this._doFinalize();\n\n return finalProcessedData;\n },\n keySize: 128 / 32,\n ivSize: 128 / 32,\n _ENC_XFORM_MODE: 1,\n _DEC_XFORM_MODE: 2,\n\n /**\n * Creates shortcut functions to a cipher's object interface.\n *\n * @param {Cipher} cipher The cipher to create a helper for.\n *\n * @return {Object} An object with encrypt and decrypt shortcut functions.\n *\n * @static\n *\n * @example\n *\n * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n */\n _createHelper: function () {\n function selectCipherStrategy(key) {\n if (typeof key == 'string') {\n return PasswordBasedCipher;\n } else {\n return SerializableCipher;\n }\n }\n\n return function (cipher) {\n return {\n encrypt: function encrypt(message, key, cfg) {\n return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n },\n decrypt: function decrypt(ciphertext, key, cfg) {\n return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n }\n };\n };\n }()\n });\n /**\n * Abstract base stream cipher template.\n *\n * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n */\n\n var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n _doFinalize: function _doFinalize() {\n // Process partial blocks\n var finalProcessedBlocks = this._process(!!'flush');\n\n return finalProcessedBlocks;\n },\n blockSize: 1\n });\n /**\n * Mode namespace.\n */\n\n var C_mode = C.mode = {};\n /**\n * Abstract base block cipher mode template.\n */\n\n var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n /**\n * Creates this mode for encryption.\n *\n * @param {Cipher} cipher A block cipher instance.\n * @param {Array} iv The IV words.\n *\n * @static\n *\n * @example\n *\n * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n */\n createEncryptor: function createEncryptor(cipher, iv) {\n return this.Encryptor.create(cipher, iv);\n },\n\n /**\n * Creates this mode for decryption.\n *\n * @param {Cipher} cipher A block cipher instance.\n * @param {Array} iv The IV words.\n *\n * @static\n *\n * @example\n *\n * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n */\n createDecryptor: function createDecryptor(cipher, iv) {\n return this.Decryptor.create(cipher, iv);\n },\n\n /**\n * Initializes a newly created mode.\n *\n * @param {Cipher} cipher A block cipher instance.\n * @param {Array} iv The IV words.\n *\n * @example\n *\n * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n */\n init: function init(cipher, iv) {\n this._cipher = cipher;\n this._iv = iv;\n }\n });\n /**\n * Cipher Block Chaining mode.\n */\n\n var CBC = C_mode.CBC = function () {\n /**\n * Abstract base CBC mode.\n */\n var CBC = BlockCipherMode.extend();\n /**\n * CBC encryptor.\n */\n\n CBC.Encryptor = CBC.extend({\n /**\n * Processes the data block at offset.\n *\n * @param {Array} words The data words to operate on.\n * @param {number} offset The offset where the block starts.\n *\n * @example\n *\n * mode.processBlock(data.words, offset);\n */\n processBlock: function processBlock(words, offset) {\n // Shortcuts\n var cipher = this._cipher;\n var blockSize = cipher.blockSize; // XOR and encrypt\n\n xorBlock.call(this, words, offset, blockSize);\n cipher.encryptBlock(words, offset); // Remember this block to use with next block\n\n this._prevBlock = words.slice(offset, offset + blockSize);\n }\n });\n /**\n * CBC decryptor.\n */\n\n CBC.Decryptor = CBC.extend({\n /**\n * Processes the data block at offset.\n *\n * @param {Array} words The data words to operate on.\n * @param {number} offset The offset where the block starts.\n *\n * @example\n *\n * mode.processBlock(data.words, offset);\n */\n processBlock: function processBlock(words, offset) {\n // Shortcuts\n var cipher = this._cipher;\n var blockSize = cipher.blockSize; // Remember this block to use with next block\n\n var thisBlock = words.slice(offset, offset + blockSize); // Decrypt and XOR\n\n cipher.decryptBlock(words, offset);\n xorBlock.call(this, words, offset, blockSize); // This block becomes the previous block\n\n this._prevBlock = thisBlock;\n }\n });\n\n function xorBlock(words, offset, blockSize) {\n // Shortcut\n var iv = this._iv; // Choose mixing block\n\n if (iv) {\n var block = iv; // Remove IV for subsequent blocks\n\n this._iv = undefined$1;\n } else {\n var block = this._prevBlock;\n } // XOR blocks\n\n\n for (var i = 0; i < blockSize; i++) {\n words[offset + i] ^= block[i];\n }\n }\n\n return CBC;\n }();\n /**\n * Padding namespace.\n */\n\n\n var C_pad = C.pad = {};\n /**\n * PKCS #5/7 padding strategy.\n */\n\n var Pkcs7 = C_pad.Pkcs7 = {\n /**\n * Pads data using the algorithm defined in PKCS #5/7.\n *\n * @param {WordArray} data The data to pad.\n * @param {number} blockSize The multiple that the data should be padded to.\n *\n * @static\n *\n * @example\n *\n * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n */\n pad: function pad(data, blockSize) {\n // Shortcut\n var blockSizeBytes = blockSize * 4; // Count padding bytes\n\n var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes; // Create padding word\n\n var paddingWord = nPaddingBytes << 24 | nPaddingBytes << 16 | nPaddingBytes << 8 | nPaddingBytes; // Create padding\n\n var paddingWords = [];\n\n for (var i = 0; i < nPaddingBytes; i += 4) {\n paddingWords.push(paddingWord);\n }\n\n var padding = WordArray.create(paddingWords, nPaddingBytes); // Add padding\n\n data.concat(padding);\n },\n\n /**\n * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n *\n * @param {WordArray} data The data to unpad.\n *\n * @static\n *\n * @example\n *\n * CryptoJS.pad.Pkcs7.unpad(wordArray);\n */\n unpad: function unpad(data) {\n // Get number of padding bytes from last byte\n var nPaddingBytes = data.words[data.sigBytes - 1 >>> 2] & 0xff; // Remove padding\n\n data.sigBytes -= nPaddingBytes;\n }\n };\n /**\n * Abstract base block cipher template.\n *\n * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n */\n\n var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n /**\n * Configuration options.\n *\n * @property {Mode} mode The block mode to use. Default: CBC\n * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n */\n cfg: Cipher.cfg.extend({\n mode: CBC,\n padding: Pkcs7\n }),\n reset: function reset() {\n // Reset cipher\n Cipher.reset.call(this); // Shortcuts\n\n var cfg = this.cfg;\n var iv = cfg.iv;\n var mode = cfg.mode; // Reset block mode\n\n if (this._xformMode == this._ENC_XFORM_MODE) {\n var modeCreator = mode.createEncryptor;\n } else\n /* if (this._xformMode == this._DEC_XFORM_MODE) */\n {\n var modeCreator = mode.createDecryptor; // Keep at least one block in the buffer for unpadding\n\n this._minBufferSize = 1;\n }\n\n if (this._mode && this._mode.__creator == modeCreator) {\n this._mode.init(this, iv && iv.words);\n } else {\n this._mode = modeCreator.call(mode, this, iv && iv.words);\n this._mode.__creator = modeCreator;\n }\n },\n _doProcessBlock: function _doProcessBlock(words, offset) {\n this._mode.processBlock(words, offset);\n },\n _doFinalize: function _doFinalize() {\n // Shortcut\n var padding = this.cfg.padding; // Finalize\n\n if (this._xformMode == this._ENC_XFORM_MODE) {\n // Pad data\n padding.pad(this._data, this.blockSize); // Process final blocks\n\n var finalProcessedBlocks = this._process(!!'flush');\n } else\n /* if (this._xformMode == this._DEC_XFORM_MODE) */\n {\n // Process final blocks\n var finalProcessedBlocks = this._process(!!'flush'); // Unpad data\n\n\n padding.unpad(finalProcessedBlocks);\n }\n\n return finalProcessedBlocks;\n },\n blockSize: 128 / 32\n });\n /**\n * A collection of cipher parameters.\n *\n * @property {WordArray} ciphertext The raw ciphertext.\n * @property {WordArray} key The key to this ciphertext.\n * @property {WordArray} iv The IV used in the ciphering operation.\n * @property {WordArray} salt The salt used with a key derivation function.\n * @property {Cipher} algorithm The cipher algorithm.\n * @property {Mode} mode The block mode used in the ciphering operation.\n * @property {Padding} padding The padding scheme used in the ciphering operation.\n * @property {number} blockSize The block size of the cipher.\n * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n */\n\n var CipherParams = C_lib.CipherParams = Base.extend({\n /**\n * Initializes a newly created cipher params object.\n *\n * @param {Object} cipherParams An object with any of the possible cipher parameters.\n *\n * @example\n *\n * var cipherParams = CryptoJS.lib.CipherParams.create({\n * ciphertext: ciphertextWordArray,\n * key: keyWordArray,\n * iv: ivWordArray,\n * salt: saltWordArray,\n * algorithm: CryptoJS.algo.AES,\n * mode: CryptoJS.mode.CBC,\n * padding: CryptoJS.pad.PKCS7,\n * blockSize: 4,\n * formatter: CryptoJS.format.OpenSSL\n * });\n */\n init: function init(cipherParams) {\n this.mixIn(cipherParams);\n },\n\n /**\n * Converts this cipher params object to a string.\n *\n * @param {Format} formatter (Optional) The formatting strategy to use.\n *\n * @return {string} The stringified cipher params.\n *\n * @throws Error If neither the formatter nor the default formatter is set.\n *\n * @example\n *\n * var string = cipherParams + '';\n * var string = cipherParams.toString();\n * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n */\n toString: function toString(formatter) {\n return (formatter || this.formatter).stringify(this);\n }\n });\n /**\n * Format namespace.\n */\n\n var C_format = C.format = {};\n /**\n * OpenSSL formatting strategy.\n */\n\n var OpenSSLFormatter = C_format.OpenSSL = {\n /**\n * Converts a cipher params object to an OpenSSL-compatible string.\n *\n * @param {CipherParams} cipherParams The cipher params object.\n *\n * @return {string} The OpenSSL-compatible string.\n *\n * @static\n *\n * @example\n *\n * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n */\n stringify: function stringify(cipherParams) {\n // Shortcuts\n var ciphertext = cipherParams.ciphertext;\n var salt = cipherParams.salt; // Format\n\n if (salt) {\n var wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n } else {\n var wordArray = ciphertext;\n }\n\n return wordArray.toString(Base64);\n },\n\n /**\n * Converts an OpenSSL-compatible string to a cipher params object.\n *\n * @param {string} openSSLStr The OpenSSL-compatible string.\n *\n * @return {CipherParams} The cipher params object.\n *\n * @static\n *\n * @example\n *\n * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n */\n parse: function parse(openSSLStr) {\n // Parse base64\n var ciphertext = Base64.parse(openSSLStr); // Shortcut\n\n var ciphertextWords = ciphertext.words; // Test for salt\n\n if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n // Extract salt\n var salt = WordArray.create(ciphertextWords.slice(2, 4)); // Remove salt from ciphertext\n\n ciphertextWords.splice(0, 4);\n ciphertext.sigBytes -= 16;\n }\n\n return CipherParams.create({\n ciphertext: ciphertext,\n salt: salt\n });\n }\n };\n /**\n * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n */\n\n var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n /**\n * Configuration options.\n *\n * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n */\n cfg: Base.extend({\n format: OpenSSLFormatter\n }),\n\n /**\n * Encrypts a message.\n *\n * @param {Cipher} cipher The cipher algorithm to use.\n * @param {WordArray|string} message The message to encrypt.\n * @param {WordArray} key The key.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {CipherParams} A cipher params object.\n *\n * @static\n *\n * @example\n *\n * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n */\n encrypt: function encrypt(cipher, message, key, cfg) {\n // Apply config defaults\n cfg = this.cfg.extend(cfg); // Encrypt\n\n var encryptor = cipher.createEncryptor(key, cfg);\n var ciphertext = encryptor.finalize(message); // Shortcut\n\n var cipherCfg = encryptor.cfg; // Create and return serializable cipher params\n\n return CipherParams.create({\n ciphertext: ciphertext,\n key: key,\n iv: cipherCfg.iv,\n algorithm: cipher,\n mode: cipherCfg.mode,\n padding: cipherCfg.padding,\n blockSize: cipher.blockSize,\n formatter: cfg.format\n });\n },\n\n /**\n * Decrypts serialized ciphertext.\n *\n * @param {Cipher} cipher The cipher algorithm to use.\n * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n * @param {WordArray} key The key.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {WordArray} The plaintext.\n *\n * @static\n *\n * @example\n *\n * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n */\n decrypt: function decrypt(cipher, ciphertext, key, cfg) {\n // Apply config defaults\n cfg = this.cfg.extend(cfg); // Convert string to CipherParams\n\n ciphertext = this._parse(ciphertext, cfg.format); // Decrypt\n\n var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n return plaintext;\n },\n\n /**\n * Converts serialized ciphertext to CipherParams,\n * else assumed CipherParams already and returns ciphertext unchanged.\n *\n * @param {CipherParams|string} ciphertext The ciphertext.\n * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n *\n * @return {CipherParams} The unserialized ciphertext.\n *\n * @static\n *\n * @example\n *\n * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n */\n _parse: function _parse(ciphertext, format) {\n if (typeof ciphertext == 'string') {\n return format.parse(ciphertext, this);\n } else {\n return ciphertext;\n }\n }\n });\n /**\n * Key derivation function namespace.\n */\n\n var C_kdf = C.kdf = {};\n /**\n * OpenSSL key derivation function.\n */\n\n var OpenSSLKdf = C_kdf.OpenSSL = {\n /**\n * Derives a key and IV from a password.\n *\n * @param {string} password The password to derive from.\n * @param {number} keySize The size in words of the key to generate.\n * @param {number} ivSize The size in words of the IV to generate.\n * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n *\n * @return {CipherParams} A cipher params object with the key, IV, and salt.\n *\n * @static\n *\n * @example\n *\n * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n */\n execute: function execute(password, keySize, ivSize, salt) {\n // Generate random salt\n if (!salt) {\n salt = WordArray.random(64 / 8);\n } // Derive key and IV\n\n\n var key = EvpKDF.create({\n keySize: keySize + ivSize\n }).compute(password, salt); // Separate key and IV\n\n var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n key.sigBytes = keySize * 4; // Return params\n\n return CipherParams.create({\n key: key,\n iv: iv,\n salt: salt\n });\n }\n };\n /**\n * A serializable cipher wrapper that derives the key from a password,\n * and returns ciphertext as a serializable cipher params object.\n */\n\n var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n /**\n * Configuration options.\n *\n * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n */\n cfg: SerializableCipher.cfg.extend({\n kdf: OpenSSLKdf\n }),\n\n /**\n * Encrypts a message using a password.\n *\n * @param {Cipher} cipher The cipher algorithm to use.\n * @param {WordArray|string} message The message to encrypt.\n * @param {string} password The password.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {CipherParams} A cipher params object.\n *\n * @static\n *\n * @example\n *\n * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n */\n encrypt: function encrypt(cipher, message, password, cfg) {\n // Apply config defaults\n cfg = this.cfg.extend(cfg); // Derive key and other params\n\n var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize); // Add IV to config\n\n cfg.iv = derivedParams.iv; // Encrypt\n\n var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg); // Mix in derived params\n\n ciphertext.mixIn(derivedParams);\n return ciphertext;\n },\n\n /**\n * Decrypts serialized ciphertext using a password.\n *\n * @param {Cipher} cipher The cipher algorithm to use.\n * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n * @param {string} password The password.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {WordArray} The plaintext.\n *\n * @static\n *\n * @example\n *\n * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n */\n decrypt: function decrypt(cipher, ciphertext, password, cfg) {\n // Apply config defaults\n cfg = this.cfg.extend(cfg); // Convert string to CipherParams\n\n ciphertext = this._parse(ciphertext, cfg.format); // Derive key and other params\n\n var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt); // Add IV to config\n\n cfg.iv = derivedParams.iv; // Decrypt\n\n var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n return plaintext;\n }\n });\n }();\n });\n });\n\n var aes = createCommonjsModule(function (module, exports) {\n\n (function (root, factory, undef) {\n {\n // CommonJS\n module.exports = exports = factory(core, encBase64, md5$1, evpkdf, cipherCore);\n }\n })(commonjsGlobal, function (CryptoJS) {\n (function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var BlockCipher = C_lib.BlockCipher;\n var C_algo = C.algo; // Lookup tables\n\n var SBOX = [];\n var INV_SBOX = [];\n var SUB_MIX_0 = [];\n var SUB_MIX_1 = [];\n var SUB_MIX_2 = [];\n var SUB_MIX_3 = [];\n var INV_SUB_MIX_0 = [];\n var INV_SUB_MIX_1 = [];\n var INV_SUB_MIX_2 = [];\n var INV_SUB_MIX_3 = []; // Compute lookup tables\n\n (function () {\n // Compute double table\n var d = [];\n\n for (var i = 0; i < 256; i++) {\n if (i < 128) {\n d[i] = i << 1;\n } else {\n d[i] = i << 1 ^ 0x11b;\n }\n } // Walk GF(2^8)\n\n\n var x = 0;\n var xi = 0;\n\n for (var i = 0; i < 256; i++) {\n // Compute sbox\n var sx = xi ^ xi << 1 ^ xi << 2 ^ xi << 3 ^ xi << 4;\n sx = sx >>> 8 ^ sx & 0xff ^ 0x63;\n SBOX[x] = sx;\n INV_SBOX[sx] = x; // Compute multiplication\n\n var x2 = d[x];\n var x4 = d[x2];\n var x8 = d[x4]; // Compute sub bytes, mix columns tables\n\n var t = d[sx] * 0x101 ^ sx * 0x1010100;\n SUB_MIX_0[x] = t << 24 | t >>> 8;\n SUB_MIX_1[x] = t << 16 | t >>> 16;\n SUB_MIX_2[x] = t << 8 | t >>> 24;\n SUB_MIX_3[x] = t; // Compute inv sub bytes, inv mix columns tables\n\n var t = x8 * 0x1010101 ^ x4 * 0x10001 ^ x2 * 0x101 ^ x * 0x1010100;\n INV_SUB_MIX_0[sx] = t << 24 | t >>> 8;\n INV_SUB_MIX_1[sx] = t << 16 | t >>> 16;\n INV_SUB_MIX_2[sx] = t << 8 | t >>> 24;\n INV_SUB_MIX_3[sx] = t; // Compute next counter\n\n if (!x) {\n x = xi = 1;\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]];\n xi ^= d[d[xi]];\n }\n }\n })(); // Precomputed Rcon lookup\n\n\n var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n /**\n * AES block cipher algorithm.\n */\n\n var AES = C_algo.AES = BlockCipher.extend({\n _doReset: function _doReset() {\n // Skip reset of nRounds has been set before and key did not change\n if (this._nRounds && this._keyPriorReset === this._key) {\n return;\n } // Shortcuts\n\n\n var key = this._keyPriorReset = this._key;\n var keyWords = key.words;\n var keySize = key.sigBytes / 4; // Compute number of rounds\n\n var nRounds = this._nRounds = keySize + 6; // Compute number of key schedule rows\n\n var ksRows = (nRounds + 1) * 4; // Compute key schedule\n\n var keySchedule = this._keySchedule = [];\n\n for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n if (ksRow < keySize) {\n keySchedule[ksRow] = keyWords[ksRow];\n } else {\n var t = keySchedule[ksRow - 1];\n\n if (!(ksRow % keySize)) {\n // Rot word\n t = t << 8 | t >>> 24; // Sub word\n\n t = SBOX[t >>> 24] << 24 | SBOX[t >>> 16 & 0xff] << 16 | SBOX[t >>> 8 & 0xff] << 8 | SBOX[t & 0xff]; // Mix Rcon\n\n t ^= RCON[ksRow / keySize | 0] << 24;\n } else if (keySize > 6 && ksRow % keySize == 4) {\n // Sub word\n t = SBOX[t >>> 24] << 24 | SBOX[t >>> 16 & 0xff] << 16 | SBOX[t >>> 8 & 0xff] << 8 | SBOX[t & 0xff];\n }\n\n keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n }\n } // Compute inv key schedule\n\n\n var invKeySchedule = this._invKeySchedule = [];\n\n for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n var ksRow = ksRows - invKsRow;\n\n if (invKsRow % 4) {\n var t = keySchedule[ksRow];\n } else {\n var t = keySchedule[ksRow - 4];\n }\n\n if (invKsRow < 4 || ksRow <= 4) {\n invKeySchedule[invKsRow] = t;\n } else {\n invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[t >>> 16 & 0xff]] ^ INV_SUB_MIX_2[SBOX[t >>> 8 & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n }\n }\n },\n encryptBlock: function encryptBlock(M, offset) {\n this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n },\n decryptBlock: function decryptBlock(M, offset) {\n // Swap 2nd and 4th rows\n var t = M[offset + 1];\n M[offset + 1] = M[offset + 3];\n M[offset + 3] = t;\n\n this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX); // Inv swap 2nd and 4th rows\n\n\n var t = M[offset + 1];\n M[offset + 1] = M[offset + 3];\n M[offset + 3] = t;\n },\n _doCryptBlock: function _doCryptBlock(M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n // Shortcut\n var nRounds = this._nRounds; // Get input, add round key\n\n var s0 = M[offset] ^ keySchedule[0];\n var s1 = M[offset + 1] ^ keySchedule[1];\n var s2 = M[offset + 2] ^ keySchedule[2];\n var s3 = M[offset + 3] ^ keySchedule[3]; // Key schedule row counter\n\n var ksRow = 4; // Rounds\n\n for (var round = 1; round < nRounds; round++) {\n // Shift rows, sub bytes, mix columns, add round key\n var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[s1 >>> 16 & 0xff] ^ SUB_MIX_2[s2 >>> 8 & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[s2 >>> 16 & 0xff] ^ SUB_MIX_2[s3 >>> 8 & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[s3 >>> 16 & 0xff] ^ SUB_MIX_2[s0 >>> 8 & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[s0 >>> 16 & 0xff] ^ SUB_MIX_2[s1 >>> 8 & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++]; // Update state\n\n s0 = t0;\n s1 = t1;\n s2 = t2;\n s3 = t3;\n } // Shift rows, sub bytes, add round key\n\n\n var t0 = (SBOX[s0 >>> 24] << 24 | SBOX[s1 >>> 16 & 0xff] << 16 | SBOX[s2 >>> 8 & 0xff] << 8 | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n var t1 = (SBOX[s1 >>> 24] << 24 | SBOX[s2 >>> 16 & 0xff] << 16 | SBOX[s3 >>> 8 & 0xff] << 8 | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n var t2 = (SBOX[s2 >>> 24] << 24 | SBOX[s3 >>> 16 & 0xff] << 16 | SBOX[s0 >>> 8 & 0xff] << 8 | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n var t3 = (SBOX[s3 >>> 24] << 24 | SBOX[s0 >>> 16 & 0xff] << 16 | SBOX[s1 >>> 8 & 0xff] << 8 | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]; // Set output\n\n M[offset] = t0;\n M[offset + 1] = t1;\n M[offset + 2] = t2;\n M[offset + 3] = t3;\n },\n keySize: 256 / 32\n });\n /**\n * Shortcut functions to the cipher's object interface.\n *\n * @example\n *\n * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n */\n\n C.AES = BlockCipher._createHelper(AES);\n })();\n\n return CryptoJS.AES;\n });\n });\n\n var encUtf8 = createCommonjsModule(function (module, exports) {\n\n (function (root, factory) {\n {\n // CommonJS\n module.exports = exports = factory(core);\n }\n })(commonjsGlobal, function (CryptoJS) {\n return CryptoJS.enc.Utf8;\n });\n });\n\n /**\n * toString ref.\n */\n var toString$2 = Object.prototype.toString;\n /**\n * Return the type of `val`.\n *\n * @param {Mixed} val\n * @return {String}\n * @api public\n */\n\n var componentType$2 = function componentType(val) {\n switch (toString$2.call(val)) {\n case '[object Date]':\n return 'date';\n\n case '[object RegExp]':\n return 'regexp';\n\n case '[object Arguments]':\n return 'arguments';\n\n case '[object Array]':\n return 'array';\n\n case '[object Error]':\n return 'error';\n }\n\n if (val === null) return 'null';\n if (val === undefined) return 'undefined';\n if (val !== val) return 'nan';\n if (val && val.nodeType === 1) return 'element';\n if (isBuffer$1(val)) return 'buffer';\n val = val.valueOf ? val.valueOf() : Object.prototype.valueOf.apply(val);\n return _typeof(val);\n }; // code borrowed from https://github.com/feross/is-buffer/blob/master/index.js\n\n\n function isBuffer$1(obj) {\n return !!(obj != null && (obj._isBuffer || // For Safari 5-7 (missing Object.prototype.constructor)\n obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)));\n }\n\n /*\n * Module dependencies.\n */\n\n /**\n * Deeply clone an object.\n *\n * @param {*} obj Any object.\n */\n\n\n var clone = function clone(obj) {\n var t = componentType$2(obj);\n\n if (t === 'object') {\n var copy = {};\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n copy[key] = clone(obj[key]);\n }\n }\n\n return copy;\n }\n\n if (t === 'array') {\n var copy = new Array(obj.length);\n\n for (var i = 0, l = obj.length; i < l; i++) {\n copy[i] = clone(obj[i]);\n }\n\n return copy;\n }\n\n if (t === 'regexp') {\n // from millermedeiros/amd-utils - MIT\n var flags = '';\n flags += obj.multiline ? 'm' : '';\n flags += obj.global ? 'g' : '';\n flags += obj.ignoreCase ? 'i' : '';\n return new RegExp(obj.source, flags);\n }\n\n if (t === 'date') {\n return new Date(obj.getTime());\n } // string, number, boolean, etc.\n\n\n return obj;\n };\n /*\n * Exports.\n */\n\n\n var clone_1 = clone;\n\n /**\n * Helpers.\n */\n var s = 1000;\n var m = s * 60;\n var h = m * 60;\n var d = h * 24;\n var y = d * 365.25;\n /**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} options\n * @return {String|Number}\n * @api public\n */\n\n var ms = function ms(val, options) {\n options = options || {};\n if ('string' == typeof val) return parse$2(val);\n return options[\"long\"] ? _long(val) : _short(val);\n };\n /**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\n\n function parse$2(str) {\n str = '' + str;\n if (str.length > 10000) return;\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(str);\n if (!match) return;\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n }\n }\n /**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\n\n function _short(ms) {\n if (ms >= d) return Math.round(ms / d) + 'd';\n if (ms >= h) return Math.round(ms / h) + 'h';\n if (ms >= m) return Math.round(ms / m) + 'm';\n if (ms >= s) return Math.round(ms / s) + 's';\n return ms + 'ms';\n }\n /**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\n\n function _long(ms) {\n return plural(ms, d, 'day') || plural(ms, h, 'hour') || plural(ms, m, 'minute') || plural(ms, s, 'second') || ms + ' ms';\n }\n /**\n * Pluralization helper.\n */\n\n\n function plural(ms, n, name) {\n if (ms < n) return;\n if (ms < n * 1.5) return Math.floor(ms / n) + ' ' + name;\n return Math.ceil(ms / n) + ' ' + name + 's';\n }\n\n var debug_1 = createCommonjsModule(function (module, exports) {\n /**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n exports = module.exports = debug;\n exports.coerce = coerce;\n exports.disable = disable;\n exports.enable = enable;\n exports.enabled = enabled;\n exports.humanize = ms;\n /**\n * The currently active debug mode names, and names to skip.\n */\n\n exports.names = [];\n exports.skips = [];\n /**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lowercased letter, i.e. \"n\".\n */\n\n exports.formatters = {};\n /**\n * Previously assigned color.\n */\n\n var prevColor = 0;\n /**\n * Previous log timestamp.\n */\n\n var prevTime;\n /**\n * Select a color.\n *\n * @return {Number}\n * @api private\n */\n\n function selectColor() {\n return exports.colors[prevColor++ % exports.colors.length];\n }\n /**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\n\n function debug(namespace) {\n // define the `disabled` version\n function disabled() {}\n\n disabled.enabled = false; // define the `enabled` version\n\n function enabled() {\n var self = enabled; // set `diff` timestamp\n\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr; // add the `color` if not set\n\n if (null == self.useColors) self.useColors = exports.useColors();\n if (null == self.color && self.useColors) self.color = selectColor();\n var args = Array.prototype.slice.call(arguments);\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %o\n args = ['%o'].concat(args);\n } // apply any `formatters` transformations\n\n\n var index = 0;\n args[0] = args[0].replace(/%([a-z%])/g, function (match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val); // now we need to remove `args[index]` since it's inlined in the `format`\n\n args.splice(index, 1);\n index--;\n }\n\n return match;\n });\n\n if ('function' === typeof exports.formatArgs) {\n args = exports.formatArgs.apply(self, args);\n }\n\n var logFn = enabled.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n enabled.enabled = true;\n var fn = exports.enabled(namespace) ? enabled : disabled;\n fn.namespace = namespace;\n return fn;\n }\n /**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\n\n function enable(namespaces) {\n exports.save(namespaces);\n var split = (namespaces || '').split(/[\\s,]+/);\n var len = split.length;\n\n for (var i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n\n namespaces = split[i].replace(/\\*/g, '.*?');\n\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n }\n /**\n * Disable debug output.\n *\n * @api public\n */\n\n\n function disable() {\n exports.enable('');\n }\n /**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\n\n function enabled(name) {\n var i, len;\n\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n\n return false;\n }\n /**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\n\n function coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n }\n });\n var debug_2 = debug_1.coerce;\n var debug_3 = debug_1.disable;\n var debug_4 = debug_1.enable;\n var debug_5 = debug_1.enabled;\n var debug_6 = debug_1.humanize;\n var debug_7 = debug_1.names;\n var debug_8 = debug_1.skips;\n var debug_9 = debug_1.formatters;\n\n var browser = createCommonjsModule(function (module, exports) {\n /**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n exports = module.exports = debug_1;\n exports.log = log;\n exports.formatArgs = formatArgs;\n exports.save = save;\n exports.load = load;\n exports.useColors = useColors;\n exports.storage = 'undefined' != typeof chrome && 'undefined' != typeof chrome.storage ? chrome.storage.local : localstorage();\n /**\n * Colors.\n */\n\n exports.colors = ['lightseagreen', 'forestgreen', 'goldenrod', 'dodgerblue', 'darkorchid', 'crimson'];\n /**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n function useColors() {\n // is webkit? http://stackoverflow.com/a/16459606/376773\n return 'WebkitAppearance' in document.documentElement.style || // is firebug? http://stackoverflow.com/a/398120/376773\n window.console && (console.firebug || console.exception && console.table) || // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31;\n }\n /**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\n\n exports.formatters.j = function (v) {\n return JSON.stringify(v);\n };\n /**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\n\n function formatArgs() {\n var args = arguments;\n var useColors = this.useColors;\n args[0] = (useColors ? '%c' : '') + this.namespace + (useColors ? ' %c' : ' ') + args[0] + (useColors ? '%c ' : ' ') + '+' + exports.humanize(this.diff);\n if (!useColors) return args;\n var c = 'color: ' + this.color;\n args = [args[0], c, 'color: inherit'].concat(Array.prototype.slice.call(args, 1)); // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-z%]/g, function (match) {\n if ('%%' === match) return;\n index++;\n\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n args.splice(lastC, 0, c);\n return args;\n }\n /**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\n\n function log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === (typeof console === \"undefined\" ? \"undefined\" : _typeof(console)) && console.log && Function.prototype.apply.call(console.log, console, arguments);\n }\n /**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\n\n function save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch (e) {}\n }\n /**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\n\n function load() {\n var r;\n\n try {\n r = exports.storage.debug;\n } catch (e) {}\n\n return r;\n }\n /**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\n\n exports.enable(load());\n /**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\n function localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n }\n });\n var browser_1 = browser.log;\n var browser_2 = browser.formatArgs;\n var browser_3 = browser.save;\n var browser_4 = browser.load;\n var browser_5 = browser.useColors;\n var browser_6 = browser.storage;\n var browser_7 = browser.colors;\n\n /**\n * Module dependencies.\n */\n\n var debug = browser('cookie');\n /**\n * Set or get cookie `name` with `value` and `options` object.\n *\n * @param {String} name\n * @param {String} value\n * @param {Object} options\n * @return {Mixed}\n * @api public\n */\n\n var rudderComponentCookie = function rudderComponentCookie(name, value, options) {\n switch (arguments.length) {\n case 3:\n case 2:\n return set$1(name, value, options);\n\n case 1:\n return get$1(name);\n\n default:\n return all();\n }\n };\n /**\n * Set cookie `name` to `value`.\n *\n * @param {String} name\n * @param {String} value\n * @param {Object} options\n * @api private\n */\n\n\n function set$1(name, value, options) {\n options = options || {};\n var str = encode$1(name) + '=' + encode$1(value);\n if (null == value) options.maxage = -1;\n\n if (options.maxage) {\n options.expires = new Date(+new Date() + options.maxage);\n }\n\n if (options.path) str += '; path=' + options.path;\n if (options.domain) str += '; domain=' + options.domain;\n if (options.expires) str += '; expires=' + options.expires.toUTCString();\n if (options.samesite) str += '; samesite=' + options.samesite;\n if (options.secure) str += '; secure';\n document.cookie = str;\n }\n /**\n * Return all cookies.\n *\n * @return {Object}\n * @api private\n */\n\n\n function all() {\n var str;\n\n try {\n str = document.cookie;\n } catch (err) {\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(err.stack || err);\n }\n\n return {};\n }\n\n return parse$3(str);\n }\n /**\n * Get cookie `name`.\n *\n * @param {String} name\n * @return {String}\n * @api private\n */\n\n\n function get$1(name) {\n return all()[name];\n }\n /**\n * Parse cookie `str`.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\n\n function parse$3(str) {\n var obj = {};\n var pairs = str.split(/ *; */);\n var pair;\n if ('' == pairs[0]) return obj;\n\n for (var i = 0; i < pairs.length; ++i) {\n pair = pairs[i].split('=');\n obj[decode$1(pair[0])] = decode$1(pair[1]);\n }\n\n return obj;\n }\n /**\n * Encode.\n */\n\n\n function encode$1(value) {\n try {\n return encodeURIComponent(value);\n } catch (e) {\n debug('error `encode(%o)` - %o', value, e);\n }\n }\n /**\n * Decode.\n */\n\n\n function decode$1(value) {\n try {\n return decodeURIComponent(value);\n } catch (e) {\n debug('error `decode(%o)` - %o', value, e);\n }\n }\n\n var max = Math.max;\n /**\n * Produce a new array composed of all but the first `n` elements of an input `collection`.\n *\n * @name drop\n * @api public\n * @param {number} count The number of elements to drop.\n * @param {Array} collection The collection to iterate over.\n * @return {Array} A new array containing all but the first element from `collection`.\n * @example\n * drop(0, [1, 2, 3]); // => [1, 2, 3]\n * drop(1, [1, 2, 3]); // => [2, 3]\n * drop(2, [1, 2, 3]); // => [3]\n * drop(3, [1, 2, 3]); // => []\n * drop(4, [1, 2, 3]); // => []\n */\n\n var drop = function drop(count, collection) {\n var length = collection ? collection.length : 0;\n\n if (!length) {\n return [];\n } // Preallocating an array *significantly* boosts performance when dealing with\n // `arguments` objects on v8. For a summary, see:\n // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments\n\n\n var toDrop = max(Number(count) || 0, 0);\n var resultsLength = max(length - toDrop, 0);\n var results = new Array(resultsLength);\n\n for (var i = 0; i < resultsLength; i += 1) {\n results[i] = collection[i + toDrop];\n }\n\n return results;\n };\n /*\n * Exports.\n */\n\n\n var drop_1 = drop;\n\n var max$1 = Math.max;\n /**\n * Produce a new array by passing each value in the input `collection` through a transformative\n * `iterator` function. The `iterator` function is passed three arguments:\n * `(value, index, collection)`.\n *\n * @name rest\n * @api public\n * @param {Array} collection The collection to iterate over.\n * @return {Array} A new array containing all but the first element from `collection`.\n * @example\n * rest([1, 2, 3]); // => [2, 3]\n */\n\n var rest = function rest(collection) {\n if (collection == null || !collection.length) {\n return [];\n } // Preallocating an array *significantly* boosts performance when dealing with\n // `arguments` objects on v8. For a summary, see:\n // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments\n\n\n var results = new Array(max$1(collection.length - 2, 0));\n\n for (var i = 1; i < collection.length; i += 1) {\n results[i - 1] = collection[i];\n }\n\n return results;\n };\n /*\n * Exports.\n */\n\n\n var rest_1 = rest;\n\n /*\n * Module dependencies.\n */\n\n\n var has$4 = Object.prototype.hasOwnProperty;\n var objToString$1 = Object.prototype.toString;\n /**\n * Returns `true` if a value is an object, otherwise `false`.\n *\n * @name isObject\n * @api private\n * @param {*} val The value to test.\n * @return {boolean}\n */\n // TODO: Move to a library\n\n var isObject$2 = function isObject(value) {\n return Boolean(value) && _typeof(value) === 'object';\n };\n /**\n * Returns `true` if a value is a plain object, otherwise `false`.\n *\n * @name isPlainObject\n * @api private\n * @param {*} val The value to test.\n * @return {boolean}\n */\n // TODO: Move to a library\n\n\n var isPlainObject$1 = function isPlainObject(value) {\n return Boolean(value) && objToString$1.call(value) === '[object Object]';\n };\n /**\n * Assigns a key-value pair to a target object when the value assigned is owned,\n * and where target[key] is undefined.\n *\n * @name shallowCombiner\n * @api private\n * @param {Object} target\n * @param {Object} source\n * @param {*} value\n * @param {string} key\n */\n\n\n var shallowCombiner = function shallowCombiner(target, source, value, key) {\n if (has$4.call(source, key) && target[key] === undefined) {\n target[key] = value;\n }\n\n return source;\n };\n /**\n * Assigns a key-value pair to a target object when the value assigned is owned,\n * and where target[key] is undefined; also merges objects recursively.\n *\n * @name deepCombiner\n * @api private\n * @param {Object} target\n * @param {Object} source\n * @param {*} value\n * @param {string} key\n * @return {Object}\n */\n\n\n var deepCombiner = function deepCombiner(target, source, value, key) {\n if (has$4.call(source, key)) {\n if (isPlainObject$1(target[key]) && isPlainObject$1(value)) {\n target[key] = defaultsDeep(target[key], value);\n } else if (target[key] === undefined) {\n target[key] = value;\n }\n }\n\n return source;\n };\n /**\n * TODO: Document\n *\n * @name defaultsWith\n * @api private\n * @param {Function} combiner\n * @param {Object} target\n * @param {...Object} sources\n * @return {Object} Return the input `target`.\n */\n\n\n var defaultsWith = function defaultsWith(combiner, target\n /*, ...sources */\n ) {\n if (!isObject$2(target)) {\n return target;\n }\n\n combiner = combiner || shallowCombiner;\n var sources = drop_1(2, arguments);\n\n for (var i = 0; i < sources.length; i += 1) {\n for (var key in sources[i]) {\n combiner(target, sources[i], sources[i][key], key);\n }\n }\n\n return target;\n };\n /**\n * Copies owned, enumerable properties from a source object(s) to a target\n * object when the value of that property on the source object is `undefined`.\n * Recurses on objects.\n *\n * @name defaultsDeep\n * @api public\n * @param {Object} target\n * @param {...Object} sources\n * @return {Object} The input `target`.\n */\n\n\n var defaultsDeep = function defaultsDeep(target\n /*, sources */\n ) {\n // TODO: Replace with `partial` call?\n return defaultsWith.apply(null, [deepCombiner, target].concat(rest_1(arguments)));\n };\n /**\n * Copies owned, enumerable properties from a source object(s) to a target\n * object when the value of that property on the source object is `undefined`.\n *\n * @name defaults\n * @api public\n * @param {Object} target\n * @param {...Object} sources\n * @return {Object}\n * @example\n * var a = { a: 1 };\n * var b = { a: 2, b: 2 };\n *\n * defaults(a, b);\n * console.log(a); //=> { a: 1, b: 2 }\n */\n\n\n var defaults = function defaults(target\n /*, ...sources */\n ) {\n // TODO: Replace with `partial` call?\n return defaultsWith.apply(null, [null, target].concat(rest_1(arguments)));\n };\n /*\n * Exports.\n */\n\n\n var defaults_1 = defaults;\n var deep = defaultsDeep;\n defaults_1.deep = deep;\n\n var json3 = createCommonjsModule(function (module, exports) {\n (function () {\n // Detect the `define` function exposed by asynchronous module loaders. The\n // strict `define` check is necessary for compatibility with `r.js`.\n var isLoader = typeof undefined === \"function\" ; // A set of types used to distinguish objects from primitives.\n\n var objectTypes = {\n \"function\": true,\n \"object\": true\n }; // Detect the `exports` object exposed by CommonJS implementations.\n\n var freeExports = objectTypes['object'] && exports && !exports.nodeType && exports; // Use the `global` object exposed by Node (including Browserify via\n // `insert-module-globals`), Narwhal, and Ringo as the default context,\n // and the `window` object in browsers. Rhino exports a `global` function\n // instead.\n\n var root = objectTypes[typeof window === \"undefined\" ? \"undefined\" : _typeof(window)] && window || this,\n freeGlobal = freeExports && objectTypes['object'] && module && !module.nodeType && _typeof(commonjsGlobal) == \"object\" && commonjsGlobal;\n\n if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal)) {\n root = freeGlobal;\n } // Public: Initializes JSON 3 using the given `context` object, attaching the\n // `stringify` and `parse` functions to the specified `exports` object.\n\n\n function runInContext(context, exports) {\n context || (context = root.Object());\n exports || (exports = root.Object()); // Native constructor aliases.\n\n var Number = context.Number || root.Number,\n String = context.String || root.String,\n Object = context.Object || root.Object,\n Date = context.Date || root.Date,\n SyntaxError = context.SyntaxError || root.SyntaxError,\n TypeError = context.TypeError || root.TypeError,\n Math = context.Math || root.Math,\n nativeJSON = context.JSON || root.JSON; // Delegate to the native `stringify` and `parse` implementations.\n\n if (_typeof(nativeJSON) == \"object\" && nativeJSON) {\n exports.stringify = nativeJSON.stringify;\n exports.parse = nativeJSON.parse;\n } // Convenience aliases.\n\n\n var objectProto = Object.prototype,\n getClass = objectProto.toString,\n isProperty = objectProto.hasOwnProperty,\n undefined$1; // Internal: Contains `try...catch` logic used by other functions.\n // This prevents other functions from being deoptimized.\n\n function attempt(func, errorFunc) {\n try {\n func();\n } catch (exception) {\n if (errorFunc) {\n errorFunc();\n }\n }\n } // Test the `Date#getUTC*` methods. Based on work by @Yaffle.\n\n\n var isExtended = new Date(-3509827334573292);\n attempt(function () {\n // The `getUTCFullYear`, `Month`, and `Date` methods return nonsensical\n // results for certain dates in Opera >= 10.53.\n isExtended = isExtended.getUTCFullYear() == -109252 && isExtended.getUTCMonth() === 0 && isExtended.getUTCDate() === 1 && isExtended.getUTCHours() == 10 && isExtended.getUTCMinutes() == 37 && isExtended.getUTCSeconds() == 6 && isExtended.getUTCMilliseconds() == 708;\n }); // Internal: Determines whether the native `JSON.stringify` and `parse`\n // implementations are spec-compliant. Based on work by Ken Snyder.\n\n function has(name) {\n if (has[name] != null) {\n // Return cached feature test result.\n return has[name];\n }\n\n var isSupported;\n\n if (name == \"bug-string-char-index\") {\n // IE <= 7 doesn't support accessing string characters using square\n // bracket notation. IE 8 only supports this for primitives.\n isSupported = \"a\"[0] != \"a\";\n } else if (name == \"json\") {\n // Indicates whether both `JSON.stringify` and `JSON.parse` are\n // supported.\n isSupported = has(\"json-stringify\") && has(\"date-serialization\") && has(\"json-parse\");\n } else if (name == \"date-serialization\") {\n // Indicates whether `Date`s can be serialized accurately by `JSON.stringify`.\n isSupported = has(\"json-stringify\") && isExtended;\n\n if (isSupported) {\n var stringify = exports.stringify;\n attempt(function () {\n isSupported = // JSON 2, Prototype <= 1.7, and older WebKit builds incorrectly\n // serialize extended years.\n stringify(new Date(-8.64e15)) == '\"-271821-04-20T00:00:00.000Z\"' && // The milliseconds are optional in ES 5, but required in 5.1.\n stringify(new Date(8.64e15)) == '\"+275760-09-13T00:00:00.000Z\"' && // Firefox <= 11.0 incorrectly serializes years prior to 0 as negative\n // four-digit years instead of six-digit years. Credits: @Yaffle.\n stringify(new Date(-621987552e5)) == '\"-000001-01-01T00:00:00.000Z\"' && // Safari <= 5.1.5 and Opera >= 10.53 incorrectly serialize millisecond\n // values less than 1000. Credits: @Yaffle.\n stringify(new Date(-1)) == '\"1969-12-31T23:59:59.999Z\"';\n });\n }\n } else {\n var value,\n serialized = \"{\\\"a\\\":[1,true,false,null,\\\"\\\\u0000\\\\b\\\\n\\\\f\\\\r\\\\t\\\"]}\"; // Test `JSON.stringify`.\n\n if (name == \"json-stringify\") {\n var stringify = exports.stringify,\n stringifySupported = typeof stringify == \"function\";\n\n if (stringifySupported) {\n // A test function object with a custom `toJSON` method.\n (value = function value() {\n return 1;\n }).toJSON = value;\n attempt(function () {\n stringifySupported = // Firefox 3.1b1 and b2 serialize string, number, and boolean\n // primitives as object literals.\n stringify(0) === \"0\" && // FF 3.1b1, b2, and JSON 2 serialize wrapped primitives as object\n // literals.\n stringify(new Number()) === \"0\" && stringify(new String()) == '\"\"' && // FF 3.1b1, 2 throw an error if the value is `null`, `undefined`, or\n // does not define a canonical JSON representation (this applies to\n // objects with `toJSON` properties as well, *unless* they are nested\n // within an object or array).\n stringify(getClass) === undefined$1 && // IE 8 serializes `undefined` as `\"undefined\"`. Safari <= 5.1.7 and\n // FF 3.1b3 pass this test.\n stringify(undefined$1) === undefined$1 && // Safari <= 5.1.7 and FF 3.1b3 throw `Error`s and `TypeError`s,\n // respectively, if the value is omitted entirely.\n stringify() === undefined$1 && // FF 3.1b1, 2 throw an error if the given value is not a number,\n // string, array, object, Boolean, or `null` literal. This applies to\n // objects with custom `toJSON` methods as well, unless they are nested\n // inside object or array literals. YUI 3.0.0b1 ignores custom `toJSON`\n // methods entirely.\n stringify(value) === \"1\" && stringify([value]) == \"[1]\" && // Prototype <= 1.6.1 serializes `[undefined]` as `\"[]\"` instead of\n // `\"[null]\"`.\n stringify([undefined$1]) == \"[null]\" && // YUI 3.0.0b1 fails to serialize `null` literals.\n stringify(null) == \"null\" && // FF 3.1b1, 2 halts serialization if an array contains a function:\n // `[1, true, getClass, 1]` serializes as \"[1,true,],\". FF 3.1b3\n // elides non-JSON values from objects and arrays, unless they\n // define custom `toJSON` methods.\n stringify([undefined$1, getClass, null]) == \"[null,null,null]\" && // Simple serialization test. FF 3.1b1 uses Unicode escape sequences\n // where character escape codes are expected (e.g., `\\b` => `\\u0008`).\n stringify({\n \"a\": [value, true, false, null, \"\\x00\\b\\n\\f\\r\\t\"]\n }) == serialized && // FF 3.1b1 and b2 ignore the `filter` and `width` arguments.\n stringify(null, value) === \"1\" && stringify([1, 2], null, 1) == \"[\\n 1,\\n 2\\n]\";\n }, function () {\n stringifySupported = false;\n });\n }\n\n isSupported = stringifySupported;\n } // Test `JSON.parse`.\n\n\n if (name == \"json-parse\") {\n var parse = exports.parse,\n parseSupported;\n\n if (typeof parse == \"function\") {\n attempt(function () {\n // FF 3.1b1, b2 will throw an exception if a bare literal is provided.\n // Conforming implementations should also coerce the initial argument to\n // a string prior to parsing.\n if (parse(\"0\") === 0 && !parse(false)) {\n // Simple parsing test.\n value = parse(serialized);\n parseSupported = value[\"a\"].length == 5 && value[\"a\"][0] === 1;\n\n if (parseSupported) {\n attempt(function () {\n // Safari <= 5.1.2 and FF 3.1b1 allow unescaped tabs in strings.\n parseSupported = !parse('\"\\t\"');\n });\n\n if (parseSupported) {\n attempt(function () {\n // FF 4.0 and 4.0.1 allow leading `+` signs and leading\n // decimal points. FF 4.0, 4.0.1, and IE 9-10 also allow\n // certain octal literals.\n parseSupported = parse(\"01\") !== 1;\n });\n }\n\n if (parseSupported) {\n attempt(function () {\n // FF 4.0, 4.0.1, and Rhino 1.7R3-R4 allow trailing decimal\n // points. These environments, along with FF 3.1b1 and 2,\n // also allow trailing commas in JSON objects and arrays.\n parseSupported = parse(\"1.\") !== 1;\n });\n }\n }\n }\n }, function () {\n parseSupported = false;\n });\n }\n\n isSupported = parseSupported;\n }\n }\n\n return has[name] = !!isSupported;\n }\n\n has[\"bug-string-char-index\"] = has[\"date-serialization\"] = has[\"json\"] = has[\"json-stringify\"] = has[\"json-parse\"] = null;\n\n if (!has(\"json\")) {\n // Common `[[Class]]` name aliases.\n var functionClass = \"[object Function]\",\n dateClass = \"[object Date]\",\n numberClass = \"[object Number]\",\n stringClass = \"[object String]\",\n arrayClass = \"[object Array]\",\n booleanClass = \"[object Boolean]\"; // Detect incomplete support for accessing string characters by index.\n\n var charIndexBuggy = has(\"bug-string-char-index\"); // Internal: Normalizes the `for...in` iteration algorithm across\n // environments. Each enumerated key is yielded to a `callback` function.\n\n var _forOwn = function forOwn(object, callback) {\n var size = 0,\n Properties,\n dontEnums,\n property; // Tests for bugs in the current environment's `for...in` algorithm. The\n // `valueOf` property inherits the non-enumerable flag from\n // `Object.prototype` in older versions of IE, Netscape, and Mozilla.\n\n (Properties = function Properties() {\n this.valueOf = 0;\n }).prototype.valueOf = 0; // Iterate over a new instance of the `Properties` class.\n\n dontEnums = new Properties();\n\n for (property in dontEnums) {\n // Ignore all properties inherited from `Object.prototype`.\n if (isProperty.call(dontEnums, property)) {\n size++;\n }\n }\n\n Properties = dontEnums = null; // Normalize the iteration algorithm.\n\n if (!size) {\n // A list of non-enumerable properties inherited from `Object.prototype`.\n dontEnums = [\"valueOf\", \"toString\", \"toLocaleString\", \"propertyIsEnumerable\", \"isPrototypeOf\", \"hasOwnProperty\", \"constructor\"]; // IE <= 8, Mozilla 1.0, and Netscape 6.2 ignore shadowed non-enumerable\n // properties.\n\n _forOwn = function forOwn(object, callback) {\n var isFunction = getClass.call(object) == functionClass,\n property,\n length;\n var hasProperty = !isFunction && typeof object.constructor != \"function\" && objectTypes[_typeof(object.hasOwnProperty)] && object.hasOwnProperty || isProperty;\n\n for (property in object) {\n // Gecko <= 1.0 enumerates the `prototype` property of functions under\n // certain conditions; IE does not.\n if (!(isFunction && property == \"prototype\") && hasProperty.call(object, property)) {\n callback(property);\n }\n } // Manually invoke the callback for each non-enumerable property.\n\n\n for (length = dontEnums.length; property = dontEnums[--length];) {\n if (hasProperty.call(object, property)) {\n callback(property);\n }\n }\n };\n } else {\n // No bugs detected; use the standard `for...in` algorithm.\n _forOwn = function forOwn(object, callback) {\n var isFunction = getClass.call(object) == functionClass,\n property,\n isConstructor;\n\n for (property in object) {\n if (!(isFunction && property == \"prototype\") && isProperty.call(object, property) && !(isConstructor = property === \"constructor\")) {\n callback(property);\n }\n } // Manually invoke the callback for the `constructor` property due to\n // cross-environment inconsistencies.\n\n\n if (isConstructor || isProperty.call(object, property = \"constructor\")) {\n callback(property);\n }\n };\n }\n\n return _forOwn(object, callback);\n }; // Public: Serializes a JavaScript `value` as a JSON string. The optional\n // `filter` argument may specify either a function that alters how object and\n // array members are serialized, or an array of strings and numbers that\n // indicates which properties should be serialized. The optional `width`\n // argument may be either a string or number that specifies the indentation\n // level of the output.\n\n\n if (!has(\"json-stringify\") && !has(\"date-serialization\")) {\n // Internal: A map of control characters and their escaped equivalents.\n var Escapes = {\n 92: \"\\\\\\\\\",\n 34: '\\\\\"',\n 8: \"\\\\b\",\n 12: \"\\\\f\",\n 10: \"\\\\n\",\n 13: \"\\\\r\",\n 9: \"\\\\t\"\n }; // Internal: Converts `value` into a zero-padded string such that its\n // length is at least equal to `width`. The `width` must be <= 6.\n\n var leadingZeroes = \"000000\";\n\n var toPaddedString = function toPaddedString(width, value) {\n // The `|| 0` expression is necessary to work around a bug in\n // Opera <= 7.54u2 where `0 == -0`, but `String(-0) !== \"0\"`.\n return (leadingZeroes + (value || 0)).slice(-width);\n }; // Internal: Serializes a date object.\n\n\n var _serializeDate = function serializeDate(value) {\n var getData, year, month, date, time, hours, minutes, seconds, milliseconds; // Define additional utility methods if the `Date` methods are buggy.\n\n if (!isExtended) {\n var floor = Math.floor; // A mapping between the months of the year and the number of days between\n // January 1st and the first of the respective month.\n\n var Months = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]; // Internal: Calculates the number of days between the Unix epoch and the\n // first day of the given month.\n\n var getDay = function getDay(year, month) {\n return Months[month] + 365 * (year - 1970) + floor((year - 1969 + (month = +(month > 1))) / 4) - floor((year - 1901 + month) / 100) + floor((year - 1601 + month) / 400);\n };\n\n getData = function getData(value) {\n // Manually compute the year, month, date, hours, minutes,\n // seconds, and milliseconds if the `getUTC*` methods are\n // buggy. Adapted from @Yaffle's `date-shim` project.\n date = floor(value / 864e5);\n\n for (year = floor(date / 365.2425) + 1970 - 1; getDay(year + 1, 0) <= date; year++) {\n }\n\n for (month = floor((date - getDay(year, 0)) / 30.42); getDay(year, month + 1) <= date; month++) {\n }\n\n date = 1 + date - getDay(year, month); // The `time` value specifies the time within the day (see ES\n // 5.1 section 15.9.1.2). The formula `(A % B + B) % B` is used\n // to compute `A modulo B`, as the `%` operator does not\n // correspond to the `modulo` operation for negative numbers.\n\n time = (value % 864e5 + 864e5) % 864e5; // The hours, minutes, seconds, and milliseconds are obtained by\n // decomposing the time within the day. See section 15.9.1.10.\n\n hours = floor(time / 36e5) % 24;\n minutes = floor(time / 6e4) % 60;\n seconds = floor(time / 1e3) % 60;\n milliseconds = time % 1e3;\n };\n } else {\n getData = function getData(value) {\n year = value.getUTCFullYear();\n month = value.getUTCMonth();\n date = value.getUTCDate();\n hours = value.getUTCHours();\n minutes = value.getUTCMinutes();\n seconds = value.getUTCSeconds();\n milliseconds = value.getUTCMilliseconds();\n };\n }\n\n _serializeDate = function serializeDate(value) {\n if (value > -1 / 0 && value < 1 / 0) {\n // Dates are serialized according to the `Date#toJSON` method\n // specified in ES 5.1 section 15.9.5.44. See section 15.9.1.15\n // for the ISO 8601 date time string format.\n getData(value); // Serialize extended years correctly.\n\n value = (year <= 0 || year >= 1e4 ? (year < 0 ? \"-\" : \"+\") + toPaddedString(6, year < 0 ? -year : year) : toPaddedString(4, year)) + \"-\" + toPaddedString(2, month + 1) + \"-\" + toPaddedString(2, date) + // Months, dates, hours, minutes, and seconds should have two\n // digits; milliseconds should have three.\n \"T\" + toPaddedString(2, hours) + \":\" + toPaddedString(2, minutes) + \":\" + toPaddedString(2, seconds) + // Milliseconds are optional in ES 5.0, but required in 5.1.\n \".\" + toPaddedString(3, milliseconds) + \"Z\";\n year = month = date = hours = minutes = seconds = milliseconds = null;\n } else {\n value = null;\n }\n\n return value;\n };\n\n return _serializeDate(value);\n }; // For environments with `JSON.stringify` but buggy date serialization,\n // we override the native `Date#toJSON` implementation with a\n // spec-compliant one.\n\n\n if (has(\"json-stringify\") && !has(\"date-serialization\")) {\n // Internal: the `Date#toJSON` implementation used to override the native one.\n var dateToJSON = function dateToJSON(key) {\n return _serializeDate(this);\n }; // Public: `JSON.stringify`. See ES 5.1 section 15.12.3.\n\n\n var nativeStringify = exports.stringify;\n\n exports.stringify = function (source, filter, width) {\n var nativeToJSON = Date.prototype.toJSON;\n Date.prototype.toJSON = dateToJSON;\n var result = nativeStringify(source, filter, width);\n Date.prototype.toJSON = nativeToJSON;\n return result;\n };\n } else {\n // Internal: Double-quotes a string `value`, replacing all ASCII control\n // characters (characters with code unit values between 0 and 31) with\n // their escaped equivalents. This is an implementation of the\n // `Quote(value)` operation defined in ES 5.1 section 15.12.3.\n var unicodePrefix = \"\\\\u00\";\n\n var escapeChar = function escapeChar(character) {\n var charCode = character.charCodeAt(0),\n escaped = Escapes[charCode];\n\n if (escaped) {\n return escaped;\n }\n\n return unicodePrefix + toPaddedString(2, charCode.toString(16));\n };\n\n var reEscape = /[\\x00-\\x1f\\x22\\x5c]/g;\n\n var quote = function quote(value) {\n reEscape.lastIndex = 0;\n return '\"' + (reEscape.test(value) ? value.replace(reEscape, escapeChar) : value) + '\"';\n }; // Internal: Recursively serializes an object. Implements the\n // `Str(key, holder)`, `JO(value)`, and `JA(value)` operations.\n\n\n var serialize = function serialize(property, object, callback, properties, whitespace, indentation, stack) {\n var value, type, className, results, element, index, length, prefix, result;\n attempt(function () {\n // Necessary for host object support.\n value = object[property];\n });\n\n if (_typeof(value) == \"object\" && value) {\n if (value.getUTCFullYear && getClass.call(value) == dateClass && value.toJSON === Date.prototype.toJSON) {\n value = _serializeDate(value);\n } else if (typeof value.toJSON == \"function\") {\n value = value.toJSON(property);\n }\n }\n\n if (callback) {\n // If a replacement function was provided, call it to obtain the value\n // for serialization.\n value = callback.call(object, property, value);\n } // Exit early if value is `undefined` or `null`.\n\n\n if (value == undefined$1) {\n return value === undefined$1 ? value : \"null\";\n }\n\n type = _typeof(value); // Only call `getClass` if the value is an object.\n\n if (type == \"object\") {\n className = getClass.call(value);\n }\n\n switch (className || type) {\n case \"boolean\":\n case booleanClass:\n // Booleans are represented literally.\n return \"\" + value;\n\n case \"number\":\n case numberClass:\n // JSON numbers must be finite. `Infinity` and `NaN` are serialized as\n // `\"null\"`.\n return value > -1 / 0 && value < 1 / 0 ? \"\" + value : \"null\";\n\n case \"string\":\n case stringClass:\n // Strings are double-quoted and escaped.\n return quote(\"\" + value);\n } // Recursively serialize objects and arrays.\n\n\n if (_typeof(value) == \"object\") {\n // Check for cyclic structures. This is a linear search; performance\n // is inversely proportional to the number of unique nested objects.\n for (length = stack.length; length--;) {\n if (stack[length] === value) {\n // Cyclic structures cannot be serialized by `JSON.stringify`.\n throw TypeError();\n }\n } // Add the object to the stack of traversed objects.\n\n\n stack.push(value);\n results = []; // Save the current indentation level and indent one additional level.\n\n prefix = indentation;\n indentation += whitespace;\n\n if (className == arrayClass) {\n // Recursively serialize array elements.\n for (index = 0, length = value.length; index < length; index++) {\n element = serialize(index, value, callback, properties, whitespace, indentation, stack);\n results.push(element === undefined$1 ? \"null\" : element);\n }\n\n result = results.length ? whitespace ? \"[\\n\" + indentation + results.join(\",\\n\" + indentation) + \"\\n\" + prefix + \"]\" : \"[\" + results.join(\",\") + \"]\" : \"[]\";\n } else {\n // Recursively serialize object members. Members are selected from\n // either a user-specified list of property names, or the object\n // itself.\n _forOwn(properties || value, function (property) {\n var element = serialize(property, value, callback, properties, whitespace, indentation, stack);\n\n if (element !== undefined$1) {\n // According to ES 5.1 section 15.12.3: \"If `gap` {whitespace}\n // is not the empty string, let `member` {quote(property) + \":\"}\n // be the concatenation of `member` and the `space` character.\"\n // The \"`space` character\" refers to the literal space\n // character, not the `space` {width} argument provided to\n // `JSON.stringify`.\n results.push(quote(property) + \":\" + (whitespace ? \" \" : \"\") + element);\n }\n });\n\n result = results.length ? whitespace ? \"{\\n\" + indentation + results.join(\",\\n\" + indentation) + \"\\n\" + prefix + \"}\" : \"{\" + results.join(\",\") + \"}\" : \"{}\";\n } // Remove the object from the traversed object stack.\n\n\n stack.pop();\n return result;\n }\n }; // Public: `JSON.stringify`. See ES 5.1 section 15.12.3.\n\n\n exports.stringify = function (source, filter, width) {\n var whitespace, callback, properties, className;\n\n if (objectTypes[_typeof(filter)] && filter) {\n className = getClass.call(filter);\n\n if (className == functionClass) {\n callback = filter;\n } else if (className == arrayClass) {\n // Convert the property names array into a makeshift set.\n properties = {};\n\n for (var index = 0, length = filter.length, value; index < length;) {\n value = filter[index++];\n className = getClass.call(value);\n\n if (className == \"[object String]\" || className == \"[object Number]\") {\n properties[value] = 1;\n }\n }\n }\n }\n\n if (width) {\n className = getClass.call(width);\n\n if (className == numberClass) {\n // Convert the `width` to an integer and create a string containing\n // `width` number of space characters.\n if ((width -= width % 1) > 0) {\n if (width > 10) {\n width = 10;\n }\n\n for (whitespace = \"\"; whitespace.length < width;) {\n whitespace += \" \";\n }\n }\n } else if (className == stringClass) {\n whitespace = width.length <= 10 ? width : width.slice(0, 10);\n }\n } // Opera <= 7.54u2 discards the values associated with empty string keys\n // (`\"\"`) only if they are used directly within an object member list\n // (e.g., `!(\"\" in { \"\": 1})`).\n\n\n return serialize(\"\", (value = {}, value[\"\"] = source, value), callback, properties, whitespace, \"\", []);\n };\n }\n } // Public: Parses a JSON source string.\n\n\n if (!has(\"json-parse\")) {\n var fromCharCode = String.fromCharCode; // Internal: A map of escaped control characters and their unescaped\n // equivalents.\n\n var Unescapes = {\n 92: \"\\\\\",\n 34: '\"',\n 47: \"/\",\n 98: \"\\b\",\n 116: \"\\t\",\n 110: \"\\n\",\n 102: \"\\f\",\n 114: \"\\r\"\n }; // Internal: Stores the parser state.\n\n var Index, Source; // Internal: Resets the parser state and throws a `SyntaxError`.\n\n var abort = function abort() {\n Index = Source = null;\n throw SyntaxError();\n }; // Internal: Returns the next token, or `\"$\"` if the parser has reached\n // the end of the source string. A token may be a string, number, `null`\n // literal, or Boolean literal.\n\n\n var lex = function lex() {\n var source = Source,\n length = source.length,\n value,\n begin,\n position,\n isSigned,\n charCode;\n\n while (Index < length) {\n charCode = source.charCodeAt(Index);\n\n switch (charCode) {\n case 9:\n case 10:\n case 13:\n case 32:\n // Skip whitespace tokens, including tabs, carriage returns, line\n // feeds, and space characters.\n Index++;\n break;\n\n case 123:\n case 125:\n case 91:\n case 93:\n case 58:\n case 44:\n // Parse a punctuator token (`{`, `}`, `[`, `]`, `:`, or `,`) at\n // the current position.\n value = charIndexBuggy ? source.charAt(Index) : source[Index];\n Index++;\n return value;\n\n case 34:\n // `\"` delimits a JSON string; advance to the next character and\n // begin parsing the string. String tokens are prefixed with the\n // sentinel `@` character to distinguish them from punctuators and\n // end-of-string tokens.\n for (value = \"@\", Index++; Index < length;) {\n charCode = source.charCodeAt(Index);\n\n if (charCode < 32) {\n // Unescaped ASCII control characters (those with a code unit\n // less than the space character) are not permitted.\n abort();\n } else if (charCode == 92) {\n // A reverse solidus (`\\`) marks the beginning of an escaped\n // control character (including `\"`, `\\`, and `/`) or Unicode\n // escape sequence.\n charCode = source.charCodeAt(++Index);\n\n switch (charCode) {\n case 92:\n case 34:\n case 47:\n case 98:\n case 116:\n case 110:\n case 102:\n case 114:\n // Revive escaped control characters.\n value += Unescapes[charCode];\n Index++;\n break;\n\n case 117:\n // `\\u` marks the beginning of a Unicode escape sequence.\n // Advance to the first character and validate the\n // four-digit code point.\n begin = ++Index;\n\n for (position = Index + 4; Index < position; Index++) {\n charCode = source.charCodeAt(Index); // A valid sequence comprises four hexdigits (case-\n // insensitive) that form a single hexadecimal value.\n\n if (!(charCode >= 48 && charCode <= 57 || charCode >= 97 && charCode <= 102 || charCode >= 65 && charCode <= 70)) {\n // Invalid Unicode escape sequence.\n abort();\n }\n } // Revive the escaped character.\n\n\n value += fromCharCode(\"0x\" + source.slice(begin, Index));\n break;\n\n default:\n // Invalid escape sequence.\n abort();\n }\n } else {\n if (charCode == 34) {\n // An unescaped double-quote character marks the end of the\n // string.\n break;\n }\n\n charCode = source.charCodeAt(Index);\n begin = Index; // Optimize for the common case where a string is valid.\n\n while (charCode >= 32 && charCode != 92 && charCode != 34) {\n charCode = source.charCodeAt(++Index);\n } // Append the string as-is.\n\n\n value += source.slice(begin, Index);\n }\n }\n\n if (source.charCodeAt(Index) == 34) {\n // Advance to the next character and return the revived string.\n Index++;\n return value;\n } // Unterminated string.\n\n\n abort();\n\n default:\n // Parse numbers and literals.\n begin = Index; // Advance past the negative sign, if one is specified.\n\n if (charCode == 45) {\n isSigned = true;\n charCode = source.charCodeAt(++Index);\n } // Parse an integer or floating-point value.\n\n\n if (charCode >= 48 && charCode <= 57) {\n // Leading zeroes are interpreted as octal literals.\n if (charCode == 48 && (charCode = source.charCodeAt(Index + 1), charCode >= 48 && charCode <= 57)) {\n // Illegal octal literal.\n abort();\n }\n\n isSigned = false; // Parse the integer component.\n\n for (; Index < length && (charCode = source.charCodeAt(Index), charCode >= 48 && charCode <= 57); Index++) {\n } // Floats cannot contain a leading decimal point; however, this\n // case is already accounted for by the parser.\n\n\n if (source.charCodeAt(Index) == 46) {\n position = ++Index; // Parse the decimal component.\n\n for (; position < length; position++) {\n charCode = source.charCodeAt(position);\n\n if (charCode < 48 || charCode > 57) {\n break;\n }\n }\n\n if (position == Index) {\n // Illegal trailing decimal.\n abort();\n }\n\n Index = position;\n } // Parse exponents. The `e` denoting the exponent is\n // case-insensitive.\n\n\n charCode = source.charCodeAt(Index);\n\n if (charCode == 101 || charCode == 69) {\n charCode = source.charCodeAt(++Index); // Skip past the sign following the exponent, if one is\n // specified.\n\n if (charCode == 43 || charCode == 45) {\n Index++;\n } // Parse the exponential component.\n\n\n for (position = Index; position < length; position++) {\n charCode = source.charCodeAt(position);\n\n if (charCode < 48 || charCode > 57) {\n break;\n }\n }\n\n if (position == Index) {\n // Illegal empty exponent.\n abort();\n }\n\n Index = position;\n } // Coerce the parsed value to a JavaScript number.\n\n\n return +source.slice(begin, Index);\n } // A negative sign may only precede numbers.\n\n\n if (isSigned) {\n abort();\n } // `true`, `false`, and `null` literals.\n\n\n var temp = source.slice(Index, Index + 4);\n\n if (temp == \"true\") {\n Index += 4;\n return true;\n } else if (temp == \"fals\" && source.charCodeAt(Index + 4) == 101) {\n Index += 5;\n return false;\n } else if (temp == \"null\") {\n Index += 4;\n return null;\n } // Unrecognized token.\n\n\n abort();\n }\n } // Return the sentinel `$` character if the parser has reached the end\n // of the source string.\n\n\n return \"$\";\n }; // Internal: Parses a JSON `value` token.\n\n\n var get = function get(value) {\n var results, hasMembers;\n\n if (value == \"$\") {\n // Unexpected end of input.\n abort();\n }\n\n if (typeof value == \"string\") {\n if ((charIndexBuggy ? value.charAt(0) : value[0]) == \"@\") {\n // Remove the sentinel `@` character.\n return value.slice(1);\n } // Parse object and array literals.\n\n\n if (value == \"[\") {\n // Parses a JSON array, returning a new JavaScript array.\n results = [];\n\n for (;;) {\n value = lex(); // A closing square bracket marks the end of the array literal.\n\n if (value == \"]\") {\n break;\n } // If the array literal contains elements, the current token\n // should be a comma separating the previous element from the\n // next.\n\n\n if (hasMembers) {\n if (value == \",\") {\n value = lex();\n\n if (value == \"]\") {\n // Unexpected trailing `,` in array literal.\n abort();\n }\n } else {\n // A `,` must separate each array element.\n abort();\n }\n } else {\n hasMembers = true;\n } // Elisions and leading commas are not permitted.\n\n\n if (value == \",\") {\n abort();\n }\n\n results.push(get(value));\n }\n\n return results;\n } else if (value == \"{\") {\n // Parses a JSON object, returning a new JavaScript object.\n results = {};\n\n for (;;) {\n value = lex(); // A closing curly brace marks the end of the object literal.\n\n if (value == \"}\") {\n break;\n } // If the object literal contains members, the current token\n // should be a comma separator.\n\n\n if (hasMembers) {\n if (value == \",\") {\n value = lex();\n\n if (value == \"}\") {\n // Unexpected trailing `,` in object literal.\n abort();\n }\n } else {\n // A `,` must separate each object member.\n abort();\n }\n } else {\n hasMembers = true;\n } // Leading commas are not permitted, object property names must be\n // double-quoted strings, and a `:` must separate each property\n // name and value.\n\n\n if (value == \",\" || typeof value != \"string\" || (charIndexBuggy ? value.charAt(0) : value[0]) != \"@\" || lex() != \":\") {\n abort();\n }\n\n results[value.slice(1)] = get(lex());\n }\n\n return results;\n } // Unexpected token encountered.\n\n\n abort();\n }\n\n return value;\n }; // Internal: Updates a traversed object member.\n\n\n var update = function update(source, property, callback) {\n var element = walk(source, property, callback);\n\n if (element === undefined$1) {\n delete source[property];\n } else {\n source[property] = element;\n }\n }; // Internal: Recursively traverses a parsed JSON object, invoking the\n // `callback` function for each value. This is an implementation of the\n // `Walk(holder, name)` operation defined in ES 5.1 section 15.12.2.\n\n\n var walk = function walk(source, property, callback) {\n var value = source[property],\n length;\n\n if (_typeof(value) == \"object\" && value) {\n // `forOwn` can't be used to traverse an array in Opera <= 8.54\n // because its `Object#hasOwnProperty` implementation returns `false`\n // for array indices (e.g., `![1, 2, 3].hasOwnProperty(\"0\")`).\n if (getClass.call(value) == arrayClass) {\n for (length = value.length; length--;) {\n update(getClass, _forOwn, value, length, callback);\n }\n } else {\n _forOwn(value, function (property) {\n update(value, property, callback);\n });\n }\n }\n\n return callback.call(source, property, value);\n }; // Public: `JSON.parse`. See ES 5.1 section 15.12.2.\n\n\n exports.parse = function (source, callback) {\n var result, value;\n Index = 0;\n Source = \"\" + source;\n result = get(lex()); // If a JSON string contains multiple tokens, it is invalid.\n\n if (lex() != \"$\") {\n abort();\n } // Reset the parser state.\n\n\n Index = Source = null;\n return callback && getClass.call(callback) == functionClass ? walk((value = {}, value[\"\"] = result, value), \"\", callback) : result;\n };\n }\n }\n\n exports.runInContext = runInContext;\n return exports;\n }\n\n if (freeExports && !isLoader) {\n // Export for CommonJS environments.\n runInContext(root, freeExports);\n } else {\n // Export for web browsers and JavaScript engines.\n var nativeJSON = root.JSON,\n previousJSON = root.JSON3,\n isRestored = false;\n var JSON3 = runInContext(root, root.JSON3 = {\n // Public: Restores the original value of the global `JSON` object and\n // returns a reference to the `JSON3` object.\n \"noConflict\": function noConflict() {\n if (!isRestored) {\n isRestored = true;\n root.JSON = nativeJSON;\n root.JSON3 = previousJSON;\n nativeJSON = previousJSON = null;\n }\n\n return JSON3;\n }\n });\n root.JSON = {\n \"parse\": JSON3.parse,\n \"stringify\": JSON3.stringify\n };\n } // Export for asynchronous module loaders.\n }).call(commonjsGlobal);\n });\n\n var debug_1$1 = createCommonjsModule(function (module, exports) {\n /**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n exports = module.exports = debug;\n exports.coerce = coerce;\n exports.disable = disable;\n exports.enable = enable;\n exports.enabled = enabled;\n exports.humanize = ms;\n /**\n * The currently active debug mode names, and names to skip.\n */\n\n exports.names = [];\n exports.skips = [];\n /**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lowercased letter, i.e. \"n\".\n */\n\n exports.formatters = {};\n /**\n * Previously assigned color.\n */\n\n var prevColor = 0;\n /**\n * Previous log timestamp.\n */\n\n var prevTime;\n /**\n * Select a color.\n *\n * @return {Number}\n * @api private\n */\n\n function selectColor() {\n return exports.colors[prevColor++ % exports.colors.length];\n }\n /**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\n\n function debug(namespace) {\n // define the `disabled` version\n function disabled() {}\n\n disabled.enabled = false; // define the `enabled` version\n\n function enabled() {\n var self = enabled; // set `diff` timestamp\n\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr; // add the `color` if not set\n\n if (null == self.useColors) self.useColors = exports.useColors();\n if (null == self.color && self.useColors) self.color = selectColor();\n var args = Array.prototype.slice.call(arguments);\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %o\n args = ['%o'].concat(args);\n } // apply any `formatters` transformations\n\n\n var index = 0;\n args[0] = args[0].replace(/%([a-z%])/g, function (match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val); // now we need to remove `args[index]` since it's inlined in the `format`\n\n args.splice(index, 1);\n index--;\n }\n\n return match;\n });\n\n if ('function' === typeof exports.formatArgs) {\n args = exports.formatArgs.apply(self, args);\n }\n\n var logFn = enabled.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n enabled.enabled = true;\n var fn = exports.enabled(namespace) ? enabled : disabled;\n fn.namespace = namespace;\n return fn;\n }\n /**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\n\n function enable(namespaces) {\n exports.save(namespaces);\n var split = (namespaces || '').split(/[\\s,]+/);\n var len = split.length;\n\n for (var i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n\n namespaces = split[i].replace(/\\*/g, '.*?');\n\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n }\n /**\n * Disable debug output.\n *\n * @api public\n */\n\n\n function disable() {\n exports.enable('');\n }\n /**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\n\n function enabled(name) {\n var i, len;\n\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n\n return false;\n }\n /**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\n\n function coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n }\n });\n var debug_2$1 = debug_1$1.coerce;\n var debug_3$1 = debug_1$1.disable;\n var debug_4$1 = debug_1$1.enable;\n var debug_5$1 = debug_1$1.enabled;\n var debug_6$1 = debug_1$1.humanize;\n var debug_7$1 = debug_1$1.names;\n var debug_8$1 = debug_1$1.skips;\n var debug_9$1 = debug_1$1.formatters;\n\n var browser$1 = createCommonjsModule(function (module, exports) {\n /**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n exports = module.exports = debug_1$1;\n exports.log = log;\n exports.formatArgs = formatArgs;\n exports.save = save;\n exports.load = load;\n exports.useColors = useColors;\n exports.storage = 'undefined' != typeof chrome && 'undefined' != typeof chrome.storage ? chrome.storage.local : localstorage();\n /**\n * Colors.\n */\n\n exports.colors = ['lightseagreen', 'forestgreen', 'goldenrod', 'dodgerblue', 'darkorchid', 'crimson'];\n /**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n function useColors() {\n // is webkit? http://stackoverflow.com/a/16459606/376773\n return 'WebkitAppearance' in document.documentElement.style || // is firebug? http://stackoverflow.com/a/398120/376773\n window.console && (console.firebug || console.exception && console.table) || // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31;\n }\n /**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\n\n exports.formatters.j = function (v) {\n return JSON.stringify(v);\n };\n /**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\n\n function formatArgs() {\n var args = arguments;\n var useColors = this.useColors;\n args[0] = (useColors ? '%c' : '') + this.namespace + (useColors ? ' %c' : ' ') + args[0] + (useColors ? '%c ' : ' ') + '+' + exports.humanize(this.diff);\n if (!useColors) return args;\n var c = 'color: ' + this.color;\n args = [args[0], c, 'color: inherit'].concat(Array.prototype.slice.call(args, 1)); // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-z%]/g, function (match) {\n if ('%%' === match) return;\n index++;\n\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n args.splice(lastC, 0, c);\n return args;\n }\n /**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\n\n function log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === (typeof console === \"undefined\" ? \"undefined\" : _typeof(console)) && console.log && Function.prototype.apply.call(console.log, console, arguments);\n }\n /**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\n\n function save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch (e) {}\n }\n /**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\n\n function load() {\n var r;\n\n try {\n r = exports.storage.debug;\n } catch (e) {}\n\n return r;\n }\n /**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\n\n exports.enable(load());\n /**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\n function localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n }\n });\n var browser_1$1 = browser$1.log;\n var browser_2$1 = browser$1.formatArgs;\n var browser_3$1 = browser$1.save;\n var browser_4$1 = browser$1.load;\n var browser_5$1 = browser$1.useColors;\n var browser_6$1 = browser$1.storage;\n var browser_7$1 = browser$1.colors;\n\n /**\n * Module dependencies.\n */\n\n var debug$1 = browser$1('cookie');\n /**\n * Set or get cookie `name` with `value` and `options` object.\n *\n * @param {String} name\n * @param {String} value\n * @param {Object} options\n * @return {Mixed}\n * @api public\n */\n\n var componentCookie = function componentCookie(name, value, options) {\n switch (arguments.length) {\n case 3:\n case 2:\n return set$2(name, value, options);\n\n case 1:\n return get$2(name);\n\n default:\n return all$1();\n }\n };\n /**\n * Set cookie `name` to `value`.\n *\n * @param {String} name\n * @param {String} value\n * @param {Object} options\n * @api private\n */\n\n\n function set$2(name, value, options) {\n options = options || {};\n var str = encode$2(name) + '=' + encode$2(value);\n if (null == value) options.maxage = -1;\n\n if (options.maxage) {\n options.expires = new Date(+new Date() + options.maxage);\n }\n\n if (options.path) str += '; path=' + options.path;\n if (options.domain) str += '; domain=' + options.domain;\n if (options.expires) str += '; expires=' + options.expires.toUTCString();\n if (options.secure) str += '; secure';\n document.cookie = str;\n }\n /**\n * Return all cookies.\n *\n * @return {Object}\n * @api private\n */\n\n\n function all$1() {\n var str;\n\n try {\n str = document.cookie;\n } catch (err) {\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(err.stack || err);\n }\n\n return {};\n }\n\n return parse$4(str);\n }\n /**\n * Get cookie `name`.\n *\n * @param {String} name\n * @return {String}\n * @api private\n */\n\n\n function get$2(name) {\n return all$1()[name];\n }\n /**\n * Parse cookie `str`.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\n\n function parse$4(str) {\n var obj = {};\n var pairs = str.split(/ *; */);\n var pair;\n if ('' == pairs[0]) return obj;\n\n for (var i = 0; i < pairs.length; ++i) {\n pair = pairs[i].split('=');\n obj[decode$2(pair[0])] = decode$2(pair[1]);\n }\n\n return obj;\n }\n /**\n * Encode.\n */\n\n\n function encode$2(value) {\n try {\n return encodeURIComponent(value);\n } catch (e) {\n debug$1('error `encode(%o)` - %o', value, e);\n }\n }\n /**\n * Decode.\n */\n\n\n function decode$2(value) {\n try {\n return decodeURIComponent(value);\n } catch (e) {\n debug$1('error `decode(%o)` - %o', value, e);\n }\n }\n\n var lib$1 = createCommonjsModule(function (module, exports) {\n /**\n * Module dependencies.\n */\n\n var parse = componentUrl.parse;\n /**\n * Get the top domain.\n *\n * The function constructs the levels of domain and attempts to set a global\n * cookie on each one when it succeeds it returns the top level domain.\n *\n * The method returns an empty string when the hostname is an ip or `localhost`.\n *\n * Example levels:\n *\n * domain.levels('http://www.google.co.uk');\n * // => [\"co.uk\", \"google.co.uk\", \"www.google.co.uk\"]\n *\n * Example:\n *\n * domain('http://localhost:3000/baz');\n * // => ''\n * domain('http://dev:3000/baz');\n * // => ''\n * domain('http://127.0.0.1:3000/baz');\n * // => ''\n * domain('http://segment.io/baz');\n * // => 'segment.io'\n *\n * @param {string} url\n * @return {string}\n * @api public\n */\n\n function domain(url) {\n var cookie = exports.cookie;\n var levels = exports.levels(url); // Lookup the real top level one.\n\n for (var i = 0; i < levels.length; ++i) {\n var cname = '__tld__';\n var domain = levels[i];\n var opts = {\n domain: '.' + domain\n };\n cookie(cname, 1, opts);\n\n if (cookie(cname)) {\n cookie(cname, null, opts);\n return domain;\n }\n }\n\n return '';\n }\n /**\n * Levels returns all levels of the given url.\n *\n * @param {string} url\n * @return {Array}\n * @api public\n */\n\n\n domain.levels = function (url) {\n var host = parse(url).hostname;\n var parts = host.split('.');\n var last = parts[parts.length - 1];\n var levels = []; // Ip address.\n\n if (parts.length === 4 && last === parseInt(last, 10)) {\n return levels;\n } // Localhost.\n\n\n if (parts.length <= 1) {\n return levels;\n } // Create levels.\n\n\n for (var i = parts.length - 2; i >= 0; --i) {\n levels.push(parts.slice(i).join('.'));\n }\n\n return levels;\n };\n /**\n * Expose cookie on domain.\n */\n\n\n domain.cookie = componentCookie;\n /*\n * Exports.\n */\n\n exports = module.exports = domain;\n });\n\n /**\n * An object utility to persist values in cookies\n */\n\n var CookieLocal = /*#__PURE__*/function () {\n function CookieLocal(options) {\n _classCallCheck(this, CookieLocal);\n\n this._options = {};\n this.options(options);\n }\n /**\n *\n * @param {*} options\n */\n\n\n _createClass(CookieLocal, [{\n key: \"options\",\n value: function options() {\n var _options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (arguments.length === 0) return this._options;\n var domain = \".\".concat(lib$1(window.location.href));\n if (domain === \".\") domain = null; // the default maxage and path\n\n this._options = defaults_1(_options, {\n maxage: 31536000000,\n path: \"/\",\n domain: domain,\n samesite: \"Lax\"\n }); // try setting a cookie first\n\n this.set(\"test_rudder\", true);\n\n if (!this.get(\"test_rudder\")) {\n this._options.domain = null;\n }\n\n this.remove(\"test_rudder\");\n }\n /**\n *\n * @param {*} key\n * @param {*} value\n */\n\n }, {\n key: \"set\",\n value: function set(key, value) {\n try {\n rudderComponentCookie(key, value, clone_1(this._options));\n return true;\n } catch (e) {\n logger.error(e);\n return false;\n }\n }\n /**\n *\n * @param {*} key\n */\n\n }, {\n key: \"get\",\n value: function get(key) {\n return rudderComponentCookie(key);\n }\n /**\n *\n * @param {*} key\n */\n\n }, {\n key: \"remove\",\n value: function remove(key) {\n try {\n rudderComponentCookie(key, null, clone_1(this._options));\n return true;\n } catch (e) {\n return false;\n }\n }\n }]);\n\n return CookieLocal;\n }(); // Exporting only the instance\n\n\n var Cookie = new CookieLocal({});\n\n var store = function () {\n // Store.js\n var store = {},\n win = typeof window != 'undefined' ? window : commonjsGlobal,\n doc = win.document,\n localStorageName = 'localStorage',\n scriptTag = 'script',\n storage;\n store.disabled = false;\n store.version = '1.3.20';\n\n store.set = function (key, value) {};\n\n store.get = function (key, defaultVal) {};\n\n store.has = function (key) {\n return store.get(key) !== undefined;\n };\n\n store.remove = function (key) {};\n\n store.clear = function () {};\n\n store.transact = function (key, defaultVal, transactionFn) {\n if (transactionFn == null) {\n transactionFn = defaultVal;\n defaultVal = null;\n }\n\n if (defaultVal == null) {\n defaultVal = {};\n }\n\n var val = store.get(key, defaultVal);\n transactionFn(val);\n store.set(key, val);\n };\n\n store.getAll = function () {\n var ret = {};\n store.forEach(function (key, val) {\n ret[key] = val;\n });\n return ret;\n };\n\n store.forEach = function () {};\n\n store.serialize = function (value) {\n return json3.stringify(value);\n };\n\n store.deserialize = function (value) {\n if (typeof value != 'string') {\n return undefined;\n }\n\n try {\n return json3.parse(value);\n } catch (e) {\n return value || undefined;\n }\n }; // Functions to encapsulate questionable FireFox 3.6.13 behavior\n // when about.config::dom.storage.enabled === false\n // See https://github.com/marcuswestin/store.js/issues#issue/13\n\n\n function isLocalStorageNameSupported() {\n try {\n return localStorageName in win && win[localStorageName];\n } catch (err) {\n return false;\n }\n }\n\n if (isLocalStorageNameSupported()) {\n storage = win[localStorageName];\n\n store.set = function (key, val) {\n if (val === undefined) {\n return store.remove(key);\n }\n\n storage.setItem(key, store.serialize(val));\n return val;\n };\n\n store.get = function (key, defaultVal) {\n var val = store.deserialize(storage.getItem(key));\n return val === undefined ? defaultVal : val;\n };\n\n store.remove = function (key) {\n storage.removeItem(key);\n };\n\n store.clear = function () {\n storage.clear();\n };\n\n store.forEach = function (callback) {\n for (var i = 0; i < storage.length; i++) {\n var key = storage.key(i);\n callback(key, store.get(key));\n }\n };\n } else if (doc && doc.documentElement.addBehavior) {\n var storageOwner, storageContainer; // Since #userData storage applies only to specific paths, we need to\n // somehow link our data to a specific path. We choose /favicon.ico\n // as a pretty safe option, since all browsers already make a request to\n // this URL anyway and being a 404 will not hurt us here. We wrap an\n // iframe pointing to the favicon in an ActiveXObject(htmlfile) object\n // (see: http://msdn.microsoft.com/en-us/library/aa752574(v=VS.85).aspx)\n // since the iframe access rules appear to allow direct access and\n // manipulation of the document element, even for a 404 page. This\n // document can be used instead of the current document (which would\n // have been limited to the current path) to perform #userData storage.\n\n try {\n storageContainer = new ActiveXObject('htmlfile');\n storageContainer.open();\n storageContainer.write('<' + scriptTag + '>document.w=window</' + scriptTag + '><iframe src=\"/favicon.ico\"></iframe>');\n storageContainer.close();\n storageOwner = storageContainer.w.frames[0].document;\n storage = storageOwner.createElement('div');\n } catch (e) {\n // somehow ActiveXObject instantiation failed (perhaps some special\n // security settings or otherwse), fall back to per-path storage\n storage = doc.createElement('div');\n storageOwner = doc.body;\n }\n\n var withIEStorage = function withIEStorage(storeFunction) {\n return function () {\n var args = Array.prototype.slice.call(arguments, 0);\n args.unshift(storage); // See http://msdn.microsoft.com/en-us/library/ms531081(v=VS.85).aspx\n // and http://msdn.microsoft.com/en-us/library/ms531424(v=VS.85).aspx\n\n storageOwner.appendChild(storage);\n storage.addBehavior('#default#userData');\n storage.load(localStorageName);\n var result = storeFunction.apply(store, args);\n storageOwner.removeChild(storage);\n return result;\n };\n }; // In IE7, keys cannot start with a digit or contain certain chars.\n // See https://github.com/marcuswestin/store.js/issues/40\n // See https://github.com/marcuswestin/store.js/issues/83\n\n\n var forbiddenCharsRegex = new RegExp(\"[!\\\"#$%&'()*+,/\\\\\\\\:;<=>?@[\\\\]^`{|}~]\", \"g\");\n\n var ieKeyFix = function ieKeyFix(key) {\n return key.replace(/^d/, '___$&').replace(forbiddenCharsRegex, '___');\n };\n\n store.set = withIEStorage(function (storage, key, val) {\n key = ieKeyFix(key);\n\n if (val === undefined) {\n return store.remove(key);\n }\n\n storage.setAttribute(key, store.serialize(val));\n storage.save(localStorageName);\n return val;\n });\n store.get = withIEStorage(function (storage, key, defaultVal) {\n key = ieKeyFix(key);\n var val = store.deserialize(storage.getAttribute(key));\n return val === undefined ? defaultVal : val;\n });\n store.remove = withIEStorage(function (storage, key) {\n key = ieKeyFix(key);\n storage.removeAttribute(key);\n storage.save(localStorageName);\n });\n store.clear = withIEStorage(function (storage) {\n var attributes = storage.XMLDocument.documentElement.attributes;\n storage.load(localStorageName);\n\n for (var i = attributes.length - 1; i >= 0; i--) {\n storage.removeAttribute(attributes[i].name);\n }\n\n storage.save(localStorageName);\n });\n store.forEach = withIEStorage(function (storage, callback) {\n var attributes = storage.XMLDocument.documentElement.attributes;\n\n for (var i = 0, attr; attr = attributes[i]; ++i) {\n callback(attr.name, store.deserialize(storage.getAttribute(attr.name)));\n }\n });\n }\n\n try {\n var testKey = '__storejs__';\n store.set(testKey, testKey);\n\n if (store.get(testKey) != testKey) {\n store.disabled = true;\n }\n\n store.remove(testKey);\n } catch (e) {\n store.disabled = true;\n }\n\n store.enabled = !store.disabled;\n return store;\n }();\n\n /**\n * An object utility to persist user and other values in localstorage\n */\n\n var StoreLocal = /*#__PURE__*/function () {\n function StoreLocal(options) {\n _classCallCheck(this, StoreLocal);\n\n this._options = {};\n this.enabled = false;\n this.options(options);\n }\n /**\n *\n * @param {*} options\n */\n\n\n _createClass(StoreLocal, [{\n key: \"options\",\n value: function options() {\n var _options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (arguments.length === 0) return this._options;\n defaults_1(_options, {\n enabled: true\n });\n this.enabled = _options.enabled && store.enabled;\n this._options = _options;\n }\n /**\n *\n * @param {*} key\n * @param {*} value\n */\n\n }, {\n key: \"set\",\n value: function set(key, value) {\n if (!this.enabled) return false;\n return store.set(key, value);\n }\n /**\n *\n * @param {*} key\n */\n\n }, {\n key: \"get\",\n value: function get(key) {\n if (!this.enabled) return null;\n return store.get(key);\n }\n /**\n *\n * @param {*} key\n */\n\n }, {\n key: \"remove\",\n value: function remove(key) {\n if (!this.enabled) return false;\n return store.remove(key);\n }\n }]);\n\n return StoreLocal;\n }(); // Exporting only the instance\n\n\n var Store = new StoreLocal({});\n\n var defaults$1 = {\n user_storage_key: \"rl_user_id\",\n user_storage_trait: \"rl_trait\",\n user_storage_anonymousId: \"rl_anonymous_id\",\n group_storage_key: \"rl_group_id\",\n group_storage_trait: \"rl_group_trait\",\n page_storage_init_referrer: \"rl_page_init_referrer\",\n page_storage_init_referring_domain: \"rl_page_init_referring_domain\",\n prefix: \"RudderEncrypt:\",\n key: \"Rudder\"\n };\n /**\n * An object that handles persisting key-val from Analytics\n */\n\n var Storage = /*#__PURE__*/function () {\n function Storage() {\n _classCallCheck(this, Storage);\n\n // First try setting the storage to cookie else to localstorage\n Cookie.set(\"rudder_cookies\", true);\n\n if (Cookie.get(\"rudder_cookies\")) {\n Cookie.remove(\"rudder_cookies\");\n this.storage = Cookie;\n return;\n } // localStorage is enabled.\n\n\n if (Store.enabled) {\n this.storage = Store;\n }\n }\n\n _createClass(Storage, [{\n key: \"options\",\n value: function options() {\n var _options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this.storage.options(_options);\n }\n /**\n * Json stringify the given value\n * @param {*} value\n */\n\n }, {\n key: \"stringify\",\n value: function stringify(value) {\n return JSON.stringify(value);\n }\n /**\n * JSON parse the value\n * @param {*} value\n */\n\n }, {\n key: \"parse\",\n value: function parse(value) {\n // if not parseable, return as is without json parse\n try {\n return value ? JSON.parse(value) : null;\n } catch (e) {\n logger.error(e);\n return value || null;\n }\n }\n /**\n * trim using regex for browser polyfill\n * @param {*} value\n */\n\n }, {\n key: \"trim\",\n value: function trim(value) {\n return value.replace(/^\\s+|\\s+$/gm, \"\");\n }\n /**\n * AES encrypt value with constant prefix\n * @param {*} value\n */\n\n }, {\n key: \"encryptValue\",\n value: function encryptValue(value) {\n if (this.trim(value) == \"\") {\n return value;\n }\n\n var prefixedVal = \"\".concat(defaults$1.prefix).concat(aes.encrypt(value, defaults$1.key).toString());\n return prefixedVal;\n }\n /**\n * decrypt value\n * @param {*} value\n */\n\n }, {\n key: \"decryptValue\",\n value: function decryptValue(value) {\n if (!value || typeof value === \"string\" && this.trim(value) == \"\") {\n return value;\n }\n\n if (value.substring(0, defaults$1.prefix.length) == defaults$1.prefix) {\n return aes.decrypt(value.substring(defaults$1.prefix.length), defaults$1.key).toString(encUtf8);\n }\n\n return value;\n }\n /**\n *\n * @param {*} key\n * @param {*} value\n */\n\n }, {\n key: \"setItem\",\n value: function setItem(key, value) {\n this.storage.set(key, this.encryptValue(this.stringify(value)));\n }\n /**\n *\n * @param {*} value\n */\n\n }, {\n key: \"setUserId\",\n value: function setUserId(value) {\n if (typeof value !== \"string\") {\n logger.error(\"[Storage] setUserId:: userId should be string\");\n return;\n }\n\n this.storage.set(defaults$1.user_storage_key, this.encryptValue(this.stringify(value)));\n }\n /**\n *\n * @param {*} value\n */\n\n }, {\n key: \"setUserTraits\",\n value: function setUserTraits(value) {\n this.storage.set(defaults$1.user_storage_trait, this.encryptValue(this.stringify(value)));\n }\n /**\n *\n * @param {*} value\n */\n\n }, {\n key: \"setGroupId\",\n value: function setGroupId(value) {\n if (typeof value !== \"string\") {\n logger.error(\"[Storage] setGroupId:: groupId should be string\");\n return;\n }\n\n this.storage.set(defaults$1.group_storage_key, this.encryptValue(this.stringify(value)));\n }\n /**\n *\n * @param {*} value\n */\n\n }, {\n key: \"setGroupTraits\",\n value: function setGroupTraits(value) {\n this.storage.set(defaults$1.group_storage_trait, this.encryptValue(this.stringify(value)));\n }\n /**\n *\n * @param {*} value\n */\n\n }, {\n key: \"setAnonymousId\",\n value: function setAnonymousId(value) {\n if (typeof value !== \"string\") {\n logger.error(\"[Storage] setAnonymousId:: anonymousId should be string\");\n return;\n }\n\n this.storage.set(defaults$1.user_storage_anonymousId, this.encryptValue(this.stringify(value)));\n }\n /**\n * @param {*} value\n */\n\n }, {\n key: \"setInitialReferrer\",\n value: function setInitialReferrer(value) {\n this.storage.set(defaults$1.page_storage_init_referrer, this.encryptValue(this.stringify(value)));\n }\n /**\n * @param {*} value\n */\n\n }, {\n key: \"setInitialReferringDomain\",\n value: function setInitialReferringDomain(value) {\n this.storage.set(defaults$1.page_storage_init_referring_domain, this.encryptValue(this.stringify(value)));\n }\n /**\n *\n * @param {*} key\n */\n\n }, {\n key: \"getItem\",\n value: function getItem(key) {\n return this.parse(this.decryptValue(this.storage.get(key)));\n }\n /**\n * get the stored userId\n */\n\n }, {\n key: \"getUserId\",\n value: function getUserId() {\n return this.parse(this.decryptValue(this.storage.get(defaults$1.user_storage_key)));\n }\n /**\n * get the stored user traits\n */\n\n }, {\n key: \"getUserTraits\",\n value: function getUserTraits() {\n return this.parse(this.decryptValue(this.storage.get(defaults$1.user_storage_trait)));\n }\n /**\n * get the stored userId\n */\n\n }, {\n key: \"getGroupId\",\n value: function getGroupId() {\n return this.parse(this.decryptValue(this.storage.get(defaults$1.group_storage_key)));\n }\n /**\n * get the stored user traits\n */\n\n }, {\n key: \"getGroupTraits\",\n value: function getGroupTraits() {\n return this.parse(this.decryptValue(this.storage.get(defaults$1.group_storage_trait)));\n }\n /**\n * get stored anonymous id\n */\n\n }, {\n key: \"getAnonymousId\",\n value: function getAnonymousId() {\n return this.parse(this.decryptValue(this.storage.get(defaults$1.user_storage_anonymousId)));\n }\n /**\n * get stored initial referrer\n */\n\n }, {\n key: \"getInitialReferrer\",\n value: function getInitialReferrer(value) {\n return this.parse(this.decryptValue(this.storage.get(defaults$1.page_storage_init_referrer)));\n }\n /**\n * get stored initial referring domain\n */\n\n }, {\n key: \"getInitialReferringDomain\",\n value: function getInitialReferringDomain(value) {\n return this.parse(this.decryptValue(this.storage.get(defaults$1.page_storage_init_referring_domain)));\n }\n /**\n *\n * @param {*} key\n */\n\n }, {\n key: \"removeItem\",\n value: function removeItem(key) {\n return this.storage.remove(key);\n }\n /**\n * remove stored keys\n */\n\n }, {\n key: \"clear\",\n value: function clear() {\n this.storage.remove(defaults$1.user_storage_key);\n this.storage.remove(defaults$1.user_storage_trait);\n this.storage.remove(defaults$1.group_storage_key);\n this.storage.remove(defaults$1.group_storage_trait); // this.storage.remove(defaults.user_storage_anonymousId);\n }\n }]);\n\n return Storage;\n }();\n\n var Storage$1 = new Storage();\n\n var defaults$2 = {\n lotame_synch_time_key: \"lt_synch_timestamp\"\n };\n\n var LotameStorage = /*#__PURE__*/function () {\n function LotameStorage() {\n _classCallCheck(this, LotameStorage);\n\n this.storage = Storage$1; // new Storage();\n }\n\n _createClass(LotameStorage, [{\n key: \"setLotameSynchTime\",\n value: function setLotameSynchTime(value) {\n this.storage.setItem(defaults$2.lotame_synch_time_key, value);\n }\n }, {\n key: \"getLotameSynchTime\",\n value: function getLotameSynchTime() {\n return this.storage.getItem(defaults$2.lotame_synch_time_key);\n }\n }]);\n\n return LotameStorage;\n }();\n\n var lotameStorage = new LotameStorage();\n\n var Lotame = /*#__PURE__*/function () {\n function Lotame(config, analytics) {\n var _this = this;\n\n _classCallCheck(this, Lotame);\n\n this.name = \"LOTAME\";\n this.analytics = analytics;\n this.storage = lotameStorage;\n this.bcpUrlSettingsPixel = config.bcpUrlSettingsPixel;\n this.bcpUrlSettingsIframe = config.bcpUrlSettingsIframe;\n this.dspUrlSettingsPixel = config.dspUrlSettingsPixel;\n this.dspUrlSettingsIframe = config.dspUrlSettingsIframe;\n this.mappings = {};\n config.mappings.forEach(function (mapping) {\n var key = mapping.key;\n var value = mapping.value;\n _this.mappings[key] = value;\n });\n }\n\n _createClass(Lotame, [{\n key: \"init\",\n value: function init() {\n logger.debug(\"===in init Lotame===\");\n\n window.LOTAME_SYNCH_CALLBACK = function () {};\n }\n }, {\n key: \"addPixel\",\n value: function addPixel(source, width, height) {\n logger.debug(\"Adding pixel for :: \".concat(source));\n var image = document.createElement(\"img\");\n image.src = source;\n image.setAttribute(\"width\", width);\n image.setAttribute(\"height\", height);\n logger.debug(\"Image Pixel :: \".concat(image));\n document.getElementsByTagName(\"body\")[0].appendChild(image);\n }\n }, {\n key: \"addIFrame\",\n value: function addIFrame(source) {\n logger.debug(\"Adding iframe for :: \".concat(source));\n var iframe = document.createElement(\"iframe\");\n iframe.src = source;\n iframe.title = \"empty\";\n iframe.setAttribute(\"id\", \"LOTCCFrame\");\n iframe.setAttribute(\"tabindex\", \"-1\");\n iframe.setAttribute(\"role\", \"presentation\");\n iframe.setAttribute(\"aria-hidden\", \"true\");\n iframe.setAttribute(\"style\", \"border: 0px; width: 0px; height: 0px; display: block;\");\n logger.debug(\"IFrame :: \".concat(iframe));\n document.getElementsByTagName(\"body\")[0].appendChild(iframe);\n }\n }, {\n key: \"syncPixel\",\n value: function syncPixel(userId) {\n var _this2 = this;\n\n logger.debug(\"===== in syncPixel ======\");\n logger.debug(\"Firing DSP Pixel URLs\");\n\n if (this.dspUrlSettingsPixel && this.dspUrlSettingsPixel.length > 0) {\n var currentTime = Date.now();\n this.dspUrlSettingsPixel.forEach(function (urlSettings) {\n var dspUrl = _this2.compileUrl(_objectSpread2(_objectSpread2({}, _this2.mappings), {}, {\n userId: userId,\n random: currentTime\n }), urlSettings.dspUrlTemplate);\n\n _this2.addPixel(dspUrl, \"1\", \"1\");\n });\n }\n\n logger.debug(\"Firing DSP IFrame URLs\");\n\n if (this.dspUrlSettingsIframe && this.dspUrlSettingsIframe.length > 0) {\n var _currentTime = Date.now();\n\n this.dspUrlSettingsIframe.forEach(function (urlSettings) {\n var dspUrl = _this2.compileUrl(_objectSpread2(_objectSpread2({}, _this2.mappings), {}, {\n userId: userId,\n random: _currentTime\n }), urlSettings.dspUrlTemplate);\n\n _this2.addIFrame(dspUrl);\n });\n }\n\n this.storage.setLotameSynchTime(Date.now()); // emit on syncPixel\n\n if (this.analytics.methodToCallbackMapping.syncPixel) {\n this.analytics.emit(\"syncPixel\", {\n destination: this.name\n });\n }\n }\n }, {\n key: \"compileUrl\",\n value: function compileUrl(map, url) {\n Object.keys(map).forEach(function (key) {\n if (map.hasOwnProperty(key)) {\n var replaceKey = \"{{\".concat(key, \"}}\");\n var regex = new RegExp(replaceKey, \"gi\");\n url = url.replace(regex, map[key]);\n }\n });\n return url;\n }\n }, {\n key: \"identify\",\n value: function identify(rudderElement) {\n logger.debug(\"in Lotame identify\");\n var userId = rudderElement.message.userId;\n this.syncPixel(userId);\n }\n }, {\n key: \"track\",\n value: function track(rudderElement) {\n logger.debug(\"track not supported for lotame\");\n }\n }, {\n key: \"page\",\n value: function page(rudderElement) {\n var _this3 = this;\n\n logger.debug(\"in Lotame page\");\n logger.debug(\"Firing BCP Pixel URLs\");\n\n if (this.bcpUrlSettingsPixel && this.bcpUrlSettingsPixel.length > 0) {\n var currentTime = Date.now();\n this.bcpUrlSettingsPixel.forEach(function (urlSettings) {\n var bcpUrl = _this3.compileUrl(_objectSpread2(_objectSpread2({}, _this3.mappings), {}, {\n random: currentTime\n }), urlSettings.bcpUrlTemplate);\n\n _this3.addPixel(bcpUrl, \"1\", \"1\");\n });\n }\n\n logger.debug(\"Firing BCP IFrame URLs\");\n\n if (this.bcpUrlSettingsIframe && this.bcpUrlSettingsIframe.length > 0) {\n var _currentTime2 = Date.now();\n\n this.bcpUrlSettingsIframe.forEach(function (urlSettings) {\n var bcpUrl = _this3.compileUrl(_objectSpread2(_objectSpread2({}, _this3.mappings), {}, {\n random: _currentTime2\n }), urlSettings.bcpUrlTemplate);\n\n _this3.addIFrame(bcpUrl);\n });\n }\n\n if (rudderElement.message.userId && this.isPixelToBeSynched()) {\n this.syncPixel(rudderElement.message.userId);\n }\n }\n }, {\n key: \"isPixelToBeSynched\",\n value: function isPixelToBeSynched() {\n var lastSynchedTime = this.storage.getLotameSynchTime();\n var currentTime = Date.now();\n\n if (!lastSynchedTime) {\n return true;\n }\n\n var difference = Math.floor((currentTime - lastSynchedTime) / (1000 * 3600 * 24));\n return difference >= 7;\n }\n }, {\n key: \"isLoaded\",\n value: function isLoaded() {\n logger.debug(\"in Lotame isLoaded\");\n return true;\n }\n }, {\n key: \"isReady\",\n value: function isReady() {\n return true;\n }\n }]);\n\n return Lotame;\n }();\n\n var Optimizely = /*#__PURE__*/function () {\n function Optimizely(config, analytics) {\n var _this = this;\n\n _classCallCheck(this, Optimizely);\n\n this.referrerOverride = function (referrer) {\n if (referrer) {\n window.optimizelyEffectiveReferrer = referrer;\n return referrer;\n }\n\n return undefined;\n };\n\n this.sendDataToRudder = function (campaignState) {\n logger.debug(campaignState);\n var experiment = campaignState.experiment;\n var variation = campaignState.variation;\n var context = {\n integrations: {\n All: true\n }\n };\n var audiences = campaignState.audiences; // Reformatting this data structure into hash map so concatenating variation ids and names is easier later\n\n var audiencesMap = {};\n audiences.forEach(function (audience) {\n audiencesMap[audience.id] = audience.name;\n });\n var audienceIds = Object.keys(audiencesMap).sort().join();\n var audienceNames = Object.values(audiencesMap).sort().join(\", \");\n\n if (_this.sendExperimentTrack) {\n var props = {\n campaignName: campaignState.campaignName,\n campaignId: campaignState.id,\n experimentId: experiment.id,\n experimentName: experiment.name,\n variationName: variation.name,\n variationId: variation.id,\n audienceId: audienceIds,\n // eg. '7527562222,7527111138'\n audienceName: audienceNames,\n // eg. 'Peaky Blinders, Trust Tree'\n isInCampaignHoldback: campaignState.isInCampaignHoldback\n }; // If this was a redirect experiment and the effective referrer is different from document.referrer,\n // this value is made available. So if a customer came in via google.com/ad -> tb12.com -> redirect experiment -> Belichickgoat.com\n // `experiment.referrer` would be google.com/ad here NOT `tb12.com`.\n\n if (experiment.referrer) {\n props.referrer = experiment.referrer;\n context.page = {\n referrer: experiment.referrer\n };\n } // For Google's nonInteraction flag\n\n\n if (_this.sendExperimentTrackAsNonInteractive) props.nonInteraction = 1; // If customCampaignProperties is provided overide the props with it.\n // If valid customCampaignProperties present it will override existing props.\n // const data = window.optimizely && window.optimizely.get(\"data\");\n\n var data = campaignState;\n\n if (data && _this.customCampaignProperties.length > 0) {\n for (var index = 0; index < _this.customCampaignProperties.length; index += 1) {\n var rudderProp = _this.customCampaignProperties[index].from;\n var optimizelyProp = _this.customCampaignProperties[index].to;\n\n if (typeof props[optimizelyProp] !== \"undefined\") {\n props[rudderProp] = props[optimizelyProp];\n delete props[optimizelyProp];\n }\n }\n } // Send to Rudder\n\n\n _this.analytics.track(\"Experiment Viewed\", props, context);\n }\n\n if (_this.sendExperimentIdentify) {\n var traits = {};\n traits[\"Experiment: \".concat(experiment.name)] = variation.name; // Send to Rudder\n\n _this.analytics.identify(traits);\n }\n };\n\n this.analytics = analytics;\n this.sendExperimentTrack = config.sendExperimentTrack;\n this.sendExperimentIdentify = config.sendExperimentIdentify;\n this.sendExperimentTrackAsNonInteractive = config.sendExperimentTrackAsNonInteractive;\n this.revenueOnlyOnOrderCompleted = config.revenueOnlyOnOrderCompleted;\n this.trackCategorizedPages = config.trackCategorizedPages;\n this.trackNamedPages = config.trackNamedPages;\n this.customCampaignProperties = config.customCampaignProperties ? config.customCampaignProperties : [];\n this.customExperimentProperties = config.customExperimentProperties ? config.customExperimentProperties : [];\n this.name = \"OPTIMIZELY\";\n }\n\n _createClass(Optimizely, [{\n key: \"init\",\n value: function init() {\n logger.debug(\"=== in optimizely init ===\");\n this.initOptimizelyIntegration(this.referrerOverride, this.sendDataToRudder);\n }\n }, {\n key: \"initOptimizelyIntegration\",\n value: function initOptimizelyIntegration(referrerOverride, sendCampaignData) {\n var newActiveCampaign = function newActiveCampaign(id, referrer) {\n var state = window.optimizely.get && window.optimizely.get(\"state\");\n\n if (state) {\n var activeCampaigns = state.getCampaignStates({\n isActive: true\n });\n var campaignState = activeCampaigns[id];\n if (referrer) campaignState.experiment.referrer = referrer;\n sendCampaignData(campaignState);\n }\n };\n\n var checkReferrer = function checkReferrer() {\n var state = window.optimizely.get && window.optimizely.get(\"state\");\n\n if (state) {\n var referrer = state.getRedirectInfo() && state.getRedirectInfo().referrer;\n\n if (referrer) {\n referrerOverride(referrer);\n return referrer;\n }\n }\n\n return undefined;\n };\n\n var registerFutureActiveCampaigns = function registerFutureActiveCampaigns() {\n window.optimizely = window.optimizely || [];\n window.optimizely.push({\n type: \"addListener\",\n filter: {\n type: \"lifecycle\",\n name: \"campaignDecided\"\n },\n handler: function handler(event) {\n var id = event.data.campaign.id;\n newActiveCampaign(id);\n }\n });\n };\n\n var registerCurrentlyActiveCampaigns = function registerCurrentlyActiveCampaigns() {\n window.optimizely = window.optimizely || [];\n var state = window.optimizely.get && window.optimizely.get(\"state\");\n\n if (state) {\n var referrer = checkReferrer();\n var activeCampaigns = state.getCampaignStates({\n isActive: true\n });\n Object.keys(activeCampaigns).forEach(function (id) {\n if (referrer) {\n newActiveCampaign(id, referrer);\n } else {\n newActiveCampaign(id);\n }\n });\n } else {\n window.optimizely.push({\n type: \"addListener\",\n filter: {\n type: \"lifecycle\",\n name: \"initialized\"\n },\n handler: function handler() {\n checkReferrer();\n }\n });\n }\n };\n\n registerCurrentlyActiveCampaigns();\n registerFutureActiveCampaigns();\n }\n }, {\n key: \"track\",\n value: function track(rudderElement) {\n logger.debug(\"in Optimizely web track\");\n var eventProperties = rudderElement.message.properties;\n var event = rudderElement.message.event;\n\n if (eventProperties.revenue && this.revenueOnlyOnOrderCompleted) {\n if (event === \"Order Completed\") {\n eventProperties.revenue = Math.round(eventProperties.revenue * 100);\n } else if (event !== \"Order Completed\") {\n delete eventProperties.revenue;\n }\n }\n\n var eventName = event.replace(/:/g, \"_\"); // can't have colons so replacing with underscores\n\n var payload = {\n type: \"event\",\n eventName: eventName,\n tags: eventProperties\n };\n window.optimizely.push(payload);\n }\n }, {\n key: \"page\",\n value: function page(rudderElement) {\n logger.debug(\"in Optimizely web page\");\n var category = rudderElement.message.properties.category;\n var name = rudderElement.message.name;\n /* const contextOptimizely = {\n integrations: { All: false, Optimizely: true },\n }; */\n // categorized pages\n\n if (category && this.trackCategorizedPages) {\n // this.analytics.track(`Viewed ${category} page`, {}, contextOptimizely);\n rudderElement.message.event = \"Viewed \".concat(category, \" page\");\n rudderElement.message.type = \"track\";\n this.track(rudderElement);\n } // named pages\n\n\n if (name && this.trackNamedPages) {\n // this.analytics.track(`Viewed ${name} page`, {}, contextOptimizely);\n rudderElement.message.event = \"Viewed \".concat(name, \" page\");\n rudderElement.message.type = \"track\";\n this.track(rudderElement);\n }\n }\n }, {\n key: \"isLoaded\",\n value: function isLoaded() {\n return !!(window.optimizely && window.optimizely.push !== Array.prototype.push);\n }\n }, {\n key: \"isReady\",\n value: function isReady() {\n return !!(window.optimizely && window.optimizely.push !== Array.prototype.push);\n }\n }]);\n\n return Optimizely;\n }();\n\n var Bugsnag = /*#__PURE__*/function () {\n function Bugsnag(config) {\n _classCallCheck(this, Bugsnag);\n\n this.releaseStage = config.releaseStage;\n this.apiKey = config.apiKey;\n this.name = \"BUGSNAG\";\n this.setIntervalHandler = undefined;\n }\n\n _createClass(Bugsnag, [{\n key: \"init\",\n value: function init() {\n logger.debug(\"===in init Bugsnag===\");\n ScriptLoader(\"bugsnag-id\", \"https://d2wy8f7a9ursnm.cloudfront.net/v6/bugsnag.min.js\");\n this.setIntervalHandler = setInterval(this.initBugsnagClient.bind(this), 1000);\n }\n }, {\n key: \"initBugsnagClient\",\n value: function initBugsnagClient() {\n if (window.bugsnag !== undefined) {\n window.bugsnagClient = window.bugsnag(this.apiKey);\n window.bugsnagClient.releaseStage = this.releaseStage;\n clearInterval(this.setIntervalHandler);\n }\n }\n }, {\n key: \"isLoaded\",\n value: function isLoaded() {\n logger.debug(\"in bugsnag isLoaded\");\n return !!window.bugsnagClient;\n }\n }, {\n key: \"isReady\",\n value: function isReady() {\n logger.debug(\"in bugsnag isReady\");\n return !!window.bugsnagClient;\n }\n }, {\n key: \"identify\",\n value: function identify(rudderElement) {\n var traits = rudderElement.message.context.traits;\n var traitsFinal = {\n id: rudderElement.message.userId || rudderElement.message.anonymousId,\n name: traits.name,\n email: traits.email\n };\n window.bugsnagClient.user = traitsFinal;\n window.bugsnagClient.notify(new Error(\"error in identify\"));\n }\n }]);\n\n return Bugsnag;\n }();\n\n var preserveCamelCase = function preserveCamelCase(string, locale) {\n var isLastCharLower = false;\n var isLastCharUpper = false;\n var isLastLastCharUpper = false;\n\n for (var i = 0; i < string.length; i++) {\n var character = string[i];\n\n if (isLastCharLower && /(?:[A-Z\\xC0-\\xD6\\xD8-\\xDE\\u0100\\u0102\\u0104\\u0106\\u0108\\u010A\\u010C\\u010E\\u0110\\u0112\\u0114\\u0116\\u0118\\u011A\\u011C\\u011E\\u0120\\u0122\\u0124\\u0126\\u0128\\u012A\\u012C\\u012E\\u0130\\u0132\\u0134\\u0136\\u0139\\u013B\\u013D\\u013F\\u0141\\u0143\\u0145\\u0147\\u014A\\u014C\\u014E\\u0150\\u0152\\u0154\\u0156\\u0158\\u015A\\u015C\\u015E\\u0160\\u0162\\u0164\\u0166\\u0168\\u016A\\u016C\\u016E\\u0170\\u0172\\u0174\\u0176\\u0178\\u0179\\u017B\\u017D\\u0181\\u0182\\u0184\\u0186\\u0187\\u0189-\\u018B\\u018E-\\u0191\\u0193\\u0194\\u0196-\\u0198\\u019C\\u019D\\u019F\\u01A0\\u01A2\\u01A4\\u01A6\\u01A7\\u01A9\\u01AC\\u01AE\\u01AF\\u01B1-\\u01B3\\u01B5\\u01B7\\u01B8\\u01BC\\u01C4\\u01C7\\u01CA\\u01CD\\u01CF\\u01D1\\u01D3\\u01D5\\u01D7\\u01D9\\u01DB\\u01DE\\u01E0\\u01E2\\u01E4\\u01E6\\u01E8\\u01EA\\u01EC\\u01EE\\u01F1\\u01F4\\u01F6-\\u01F8\\u01FA\\u01FC\\u01FE\\u0200\\u0202\\u0204\\u0206\\u0208\\u020A\\u020C\\u020E\\u0210\\u0212\\u0214\\u0216\\u0218\\u021A\\u021C\\u021E\\u0220\\u0222\\u0224\\u0226\\u0228\\u022A\\u022C\\u022E\\u0230\\u0232\\u023A\\u023B\\u023D\\u023E\\u0241\\u0243-\\u0246\\u0248\\u024A\\u024C\\u024E\\u0370\\u0372\\u0376\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E\\u038F\\u0391-\\u03A1\\u03A3-\\u03AB\\u03CF\\u03D2-\\u03D4\\u03D8\\u03DA\\u03DC\\u03DE\\u03E0\\u03E2\\u03E4\\u03E6\\u03E8\\u03EA\\u03EC\\u03EE\\u03F4\\u03F7\\u03F9\\u03FA\\u03FD-\\u042F\\u0460\\u0462\\u0464\\u0466\\u0468\\u046A\\u046C\\u046E\\u0470\\u0472\\u0474\\u0476\\u0478\\u047A\\u047C\\u047E\\u0480\\u048A\\u048C\\u048E\\u0490\\u0492\\u0494\\u0496\\u0498\\u049A\\u049C\\u049E\\u04A0\\u04A2\\u04A4\\u04A6\\u04A8\\u04AA\\u04AC\\u04AE\\u04B0\\u04B2\\u04B4\\u04B6\\u04B8\\u04BA\\u04BC\\u04BE\\u04C0\\u04C1\\u04C3\\u04C5\\u04C7\\u04C9\\u04CB\\u04CD\\u04D0\\u04D2\\u04D4\\u04D6\\u04D8\\u04DA\\u04DC\\u04DE\\u04E0\\u04E2\\u04E4\\u04E6\\u04E8\\u04EA\\u04EC\\u04EE\\u04F0\\u04F2\\u04F4\\u04F6\\u04F8\\u04FA\\u04FC\\u04FE\\u0500\\u0502\\u0504\\u0506\\u0508\\u050A\\u050C\\u050E\\u0510\\u0512\\u0514\\u0516\\u0518\\u051A\\u051C\\u051E\\u0520\\u0522\\u0524\\u0526\\u0528\\u052A\\u052C\\u052E\\u0531-\\u0556\\u10A0-\\u10C5\\u10C7\\u10CD\\u13A0-\\u13F5\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1E00\\u1E02\\u1E04\\u1E06\\u1E08\\u1E0A\\u1E0C\\u1E0E\\u1E10\\u1E12\\u1E14\\u1E16\\u1E18\\u1E1A\\u1E1C\\u1E1E\\u1E20\\u1E22\\u1E24\\u1E26\\u1E28\\u1E2A\\u1E2C\\u1E2E\\u1E30\\u1E32\\u1E34\\u1E36\\u1E38\\u1E3A\\u1E3C\\u1E3E\\u1E40\\u1E42\\u1E44\\u1E46\\u1E48\\u1E4A\\u1E4C\\u1E4E\\u1E50\\u1E52\\u1E54\\u1E56\\u1E58\\u1E5A\\u1E5C\\u1E5E\\u1E60\\u1E62\\u1E64\\u1E66\\u1E68\\u1E6A\\u1E6C\\u1E6E\\u1E70\\u1E72\\u1E74\\u1E76\\u1E78\\u1E7A\\u1E7C\\u1E7E\\u1E80\\u1E82\\u1E84\\u1E86\\u1E88\\u1E8A\\u1E8C\\u1E8E\\u1E90\\u1E92\\u1E94\\u1E9E\\u1EA0\\u1EA2\\u1EA4\\u1EA6\\u1EA8\\u1EAA\\u1EAC\\u1EAE\\u1EB0\\u1EB2\\u1EB4\\u1EB6\\u1EB8\\u1EBA\\u1EBC\\u1EBE\\u1EC0\\u1EC2\\u1EC4\\u1EC6\\u1EC8\\u1ECA\\u1ECC\\u1ECE\\u1ED0\\u1ED2\\u1ED4\\u1ED6\\u1ED8\\u1EDA\\u1EDC\\u1EDE\\u1EE0\\u1EE2\\u1EE4\\u1EE6\\u1EE8\\u1EEA\\u1EEC\\u1EEE\\u1EF0\\u1EF2\\u1EF4\\u1EF6\\u1EF8\\u1EFA\\u1EFC\\u1EFE\\u1F08-\\u1F0F\\u1F18-\\u1F1D\\u1F28-\\u1F2F\\u1F38-\\u1F3F\\u1F48-\\u1F4D\\u1F59\\u1F5B\\u1F5D\\u1F5F\\u1F68-\\u1F6F\\u1FB8-\\u1FBB\\u1FC8-\\u1FCB\\u1FD8-\\u1FDB\\u1FE8-\\u1FEC\\u1FF8-\\u1FFB\\u2102\\u2107\\u210B-\\u210D\\u2110-\\u2112\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u2130-\\u2133\\u213E\\u213F\\u2145\\u2183\\u2C00-\\u2C2E\\u2C60\\u2C62-\\u2C64\\u2C67\\u2C69\\u2C6B\\u2C6D-\\u2C70\\u2C72\\u2C75\\u2C7E-\\u2C80\\u2C82\\u2C84\\u2C86\\u2C88\\u2C8A\\u2C8C\\u2C8E\\u2C90\\u2C92\\u2C94\\u2C96\\u2C98\\u2C9A\\u2C9C\\u2C9E\\u2CA0\\u2CA2\\u2CA4\\u2CA6\\u2CA8\\u2CAA\\u2CAC\\u2CAE\\u2CB0\\u2CB2\\u2CB4\\u2CB6\\u2CB8\\u2CBA\\u2CBC\\u2CBE\\u2CC0\\u2CC2\\u2CC4\\u2CC6\\u2CC8\\u2CCA\\u2CCC\\u2CCE\\u2CD0\\u2CD2\\u2CD4\\u2CD6\\u2CD8\\u2CDA\\u2CDC\\u2CDE\\u2CE0\\u2CE2\\u2CEB\\u2CED\\u2CF2\\uA640\\uA642\\uA644\\uA646\\uA648\\uA64A\\uA64C\\uA64E\\uA650\\uA652\\uA654\\uA656\\uA658\\uA65A\\uA65C\\uA65E\\uA660\\uA662\\uA664\\uA666\\uA668\\uA66A\\uA66C\\uA680\\uA682\\uA684\\uA686\\uA688\\uA68A\\uA68C\\uA68E\\uA690\\uA692\\uA694\\uA696\\uA698\\uA69A\\uA722\\uA724\\uA726\\uA728\\uA72A\\uA72C\\uA72E\\uA732\\uA734\\uA736\\uA738\\uA73A\\uA73C\\uA73E\\uA740\\uA742\\uA744\\uA746\\uA748\\uA74A\\uA74C\\uA74E\\uA750\\uA752\\uA754\\uA756\\uA758\\uA75A\\uA75C\\uA75E\\uA760\\uA762\\uA764\\uA766\\uA768\\uA76A\\uA76C\\uA76E\\uA779\\uA77B\\uA77D\\uA77E\\uA780\\uA782\\uA784\\uA786\\uA78B\\uA78D\\uA790\\uA792\\uA796\\uA798\\uA79A\\uA79C\\uA79E\\uA7A0\\uA7A2\\uA7A4\\uA7A6\\uA7A8\\uA7AA-\\uA7AE\\uA7B0-\\uA7B4\\uA7B6\\uA7B8\\uA7BA\\uA7BC\\uA7BE\\uA7C2\\uA7C4-\\uA7C7\\uA7C9\\uA7F5\\uFF21-\\uFF3A]|\\uD801[\\uDC00-\\uDC27\\uDCB0-\\uDCD3]|\\uD803[\\uDC80-\\uDCB2]|\\uD806[\\uDCA0-\\uDCBF]|\\uD81B[\\uDE40-\\uDE5F]|\\uD835[\\uDC00-\\uDC19\\uDC34-\\uDC4D\\uDC68-\\uDC81\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB5\\uDCD0-\\uDCE9\\uDD04\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD38\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD6C-\\uDD85\\uDDA0-\\uDDB9\\uDDD4-\\uDDED\\uDE08-\\uDE21\\uDE3C-\\uDE55\\uDE70-\\uDE89\\uDEA8-\\uDEC0\\uDEE2-\\uDEFA\\uDF1C-\\uDF34\\uDF56-\\uDF6E\\uDF90-\\uDFA8\\uDFCA]|\\uD83A[\\uDD00-\\uDD21])/.test(character)) {\n string = string.slice(0, i) + '-' + string.slice(i);\n isLastCharLower = false;\n isLastLastCharUpper = isLastCharUpper;\n isLastCharUpper = true;\n i++;\n } else if (isLastCharUpper && isLastLastCharUpper && /(?:[a-z\\xB5\\xDF-\\xF6\\xF8-\\xFF\\u0101\\u0103\\u0105\\u0107\\u0109\\u010B\\u010D\\u010F\\u0111\\u0113\\u0115\\u0117\\u0119\\u011B\\u011D\\u011F\\u0121\\u0123\\u0125\\u0127\\u0129\\u012B\\u012D\\u012F\\u0131\\u0133\\u0135\\u0137\\u0138\\u013A\\u013C\\u013E\\u0140\\u0142\\u0144\\u0146\\u0148\\u0149\\u014B\\u014D\\u014F\\u0151\\u0153\\u0155\\u0157\\u0159\\u015B\\u015D\\u015F\\u0161\\u0163\\u0165\\u0167\\u0169\\u016B\\u016D\\u016F\\u0171\\u0173\\u0175\\u0177\\u017A\\u017C\\u017E-\\u0180\\u0183\\u0185\\u0188\\u018C\\u018D\\u0192\\u0195\\u0199-\\u019B\\u019E\\u01A1\\u01A3\\u01A5\\u01A8\\u01AA\\u01AB\\u01AD\\u01B0\\u01B4\\u01B6\\u01B9\\u01BA\\u01BD-\\u01BF\\u01C6\\u01C9\\u01CC\\u01CE\\u01D0\\u01D2\\u01D4\\u01D6\\u01D8\\u01DA\\u01DC\\u01DD\\u01DF\\u01E1\\u01E3\\u01E5\\u01E7\\u01E9\\u01EB\\u01ED\\u01EF\\u01F0\\u01F3\\u01F5\\u01F9\\u01FB\\u01FD\\u01FF\\u0201\\u0203\\u0205\\u0207\\u0209\\u020B\\u020D\\u020F\\u0211\\u0213\\u0215\\u0217\\u0219\\u021B\\u021D\\u021F\\u0221\\u0223\\u0225\\u0227\\u0229\\u022B\\u022D\\u022F\\u0231\\u0233-\\u0239\\u023C\\u023F\\u0240\\u0242\\u0247\\u0249\\u024B\\u024D\\u024F-\\u0293\\u0295-\\u02AF\\u0371\\u0373\\u0377\\u037B-\\u037D\\u0390\\u03AC-\\u03CE\\u03D0\\u03D1\\u03D5-\\u03D7\\u03D9\\u03DB\\u03DD\\u03DF\\u03E1\\u03E3\\u03E5\\u03E7\\u03E9\\u03EB\\u03ED\\u03EF-\\u03F3\\u03F5\\u03F8\\u03FB\\u03FC\\u0430-\\u045F\\u0461\\u0463\\u0465\\u0467\\u0469\\u046B\\u046D\\u046F\\u0471\\u0473\\u0475\\u0477\\u0479\\u047B\\u047D\\u047F\\u0481\\u048B\\u048D\\u048F\\u0491\\u0493\\u0495\\u0497\\u0499\\u049B\\u049D\\u049F\\u04A1\\u04A3\\u04A5\\u04A7\\u04A9\\u04AB\\u04AD\\u04AF\\u04B1\\u04B3\\u04B5\\u04B7\\u04B9\\u04BB\\u04BD\\u04BF\\u04C2\\u04C4\\u04C6\\u04C8\\u04CA\\u04CC\\u04CE\\u04CF\\u04D1\\u04D3\\u04D5\\u04D7\\u04D9\\u04DB\\u04DD\\u04DF\\u04E1\\u04E3\\u04E5\\u04E7\\u04E9\\u04EB\\u04ED\\u04EF\\u04F1\\u04F3\\u04F5\\u04F7\\u04F9\\u04FB\\u04FD\\u04FF\\u0501\\u0503\\u0505\\u0507\\u0509\\u050B\\u050D\\u050F\\u0511\\u0513\\u0515\\u0517\\u0519\\u051B\\u051D\\u051F\\u0521\\u0523\\u0525\\u0527\\u0529\\u052B\\u052D\\u052F\\u0560-\\u0588\\u10D0-\\u10FA\\u10FD-\\u10FF\\u13F8-\\u13FD\\u1C80-\\u1C88\\u1D00-\\u1D2B\\u1D6B-\\u1D77\\u1D79-\\u1D9A\\u1E01\\u1E03\\u1E05\\u1E07\\u1E09\\u1E0B\\u1E0D\\u1E0F\\u1E11\\u1E13\\u1E15\\u1E17\\u1E19\\u1E1B\\u1E1D\\u1E1F\\u1E21\\u1E23\\u1E25\\u1E27\\u1E29\\u1E2B\\u1E2D\\u1E2F\\u1E31\\u1E33\\u1E35\\u1E37\\u1E39\\u1E3B\\u1E3D\\u1E3F\\u1E41\\u1E43\\u1E45\\u1E47\\u1E49\\u1E4B\\u1E4D\\u1E4F\\u1E51\\u1E53\\u1E55\\u1E57\\u1E59\\u1E5B\\u1E5D\\u1E5F\\u1E61\\u1E63\\u1E65\\u1E67\\u1E69\\u1E6B\\u1E6D\\u1E6F\\u1E71\\u1E73\\u1E75\\u1E77\\u1E79\\u1E7B\\u1E7D\\u1E7F\\u1E81\\u1E83\\u1E85\\u1E87\\u1E89\\u1E8B\\u1E8D\\u1E8F\\u1E91\\u1E93\\u1E95-\\u1E9D\\u1E9F\\u1EA1\\u1EA3\\u1EA5\\u1EA7\\u1EA9\\u1EAB\\u1EAD\\u1EAF\\u1EB1\\u1EB3\\u1EB5\\u1EB7\\u1EB9\\u1EBB\\u1EBD\\u1EBF\\u1EC1\\u1EC3\\u1EC5\\u1EC7\\u1EC9\\u1ECB\\u1ECD\\u1ECF\\u1ED1\\u1ED3\\u1ED5\\u1ED7\\u1ED9\\u1EDB\\u1EDD\\u1EDF\\u1EE1\\u1EE3\\u1EE5\\u1EE7\\u1EE9\\u1EEB\\u1EED\\u1EEF\\u1EF1\\u1EF3\\u1EF5\\u1EF7\\u1EF9\\u1EFB\\u1EFD\\u1EFF-\\u1F07\\u1F10-\\u1F15\\u1F20-\\u1F27\\u1F30-\\u1F37\\u1F40-\\u1F45\\u1F50-\\u1F57\\u1F60-\\u1F67\\u1F70-\\u1F7D\\u1F80-\\u1F87\\u1F90-\\u1F97\\u1FA0-\\u1FA7\\u1FB0-\\u1FB4\\u1FB6\\u1FB7\\u1FBE\\u1FC2-\\u1FC4\\u1FC6\\u1FC7\\u1FD0-\\u1FD3\\u1FD6\\u1FD7\\u1FE0-\\u1FE7\\u1FF2-\\u1FF4\\u1FF6\\u1FF7\\u210A\\u210E\\u210F\\u2113\\u212F\\u2134\\u2139\\u213C\\u213D\\u2146-\\u2149\\u214E\\u2184\\u2C30-\\u2C5E\\u2C61\\u2C65\\u2C66\\u2C68\\u2C6A\\u2C6C\\u2C71\\u2C73\\u2C74\\u2C76-\\u2C7B\\u2C81\\u2C83\\u2C85\\u2C87\\u2C89\\u2C8B\\u2C8D\\u2C8F\\u2C91\\u2C93\\u2C95\\u2C97\\u2C99\\u2C9B\\u2C9D\\u2C9F\\u2CA1\\u2CA3\\u2CA5\\u2CA7\\u2CA9\\u2CAB\\u2CAD\\u2CAF\\u2CB1\\u2CB3\\u2CB5\\u2CB7\\u2CB9\\u2CBB\\u2CBD\\u2CBF\\u2CC1\\u2CC3\\u2CC5\\u2CC7\\u2CC9\\u2CCB\\u2CCD\\u2CCF\\u2CD1\\u2CD3\\u2CD5\\u2CD7\\u2CD9\\u2CDB\\u2CDD\\u2CDF\\u2CE1\\u2CE3\\u2CE4\\u2CEC\\u2CEE\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\uA641\\uA643\\uA645\\uA647\\uA649\\uA64B\\uA64D\\uA64F\\uA651\\uA653\\uA655\\uA657\\uA659\\uA65B\\uA65D\\uA65F\\uA661\\uA663\\uA665\\uA667\\uA669\\uA66B\\uA66D\\uA681\\uA683\\uA685\\uA687\\uA689\\uA68B\\uA68D\\uA68F\\uA691\\uA693\\uA695\\uA697\\uA699\\uA69B\\uA723\\uA725\\uA727\\uA729\\uA72B\\uA72D\\uA72F-\\uA731\\uA733\\uA735\\uA737\\uA739\\uA73B\\uA73D\\uA73F\\uA741\\uA743\\uA745\\uA747\\uA749\\uA74B\\uA74D\\uA74F\\uA751\\uA753\\uA755\\uA757\\uA759\\uA75B\\uA75D\\uA75F\\uA761\\uA763\\uA765\\uA767\\uA769\\uA76B\\uA76D\\uA76F\\uA771-\\uA778\\uA77A\\uA77C\\uA77F\\uA781\\uA783\\uA785\\uA787\\uA78C\\uA78E\\uA791\\uA793-\\uA795\\uA797\\uA799\\uA79B\\uA79D\\uA79F\\uA7A1\\uA7A3\\uA7A5\\uA7A7\\uA7A9\\uA7AF\\uA7B5\\uA7B7\\uA7B9\\uA7BB\\uA7BD\\uA7BF\\uA7C3\\uA7C8\\uA7CA\\uA7F6\\uA7FA\\uAB30-\\uAB5A\\uAB60-\\uAB68\\uAB70-\\uABBF\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF41-\\uFF5A]|\\uD801[\\uDC28-\\uDC4F\\uDCD8-\\uDCFB]|\\uD803[\\uDCC0-\\uDCF2]|\\uD806[\\uDCC0-\\uDCDF]|\\uD81B[\\uDE60-\\uDE7F]|\\uD835[\\uDC1A-\\uDC33\\uDC4E-\\uDC54\\uDC56-\\uDC67\\uDC82-\\uDC9B\\uDCB6-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDCCF\\uDCEA-\\uDD03\\uDD1E-\\uDD37\\uDD52-\\uDD6B\\uDD86-\\uDD9F\\uDDBA-\\uDDD3\\uDDEE-\\uDE07\\uDE22-\\uDE3B\\uDE56-\\uDE6F\\uDE8A-\\uDEA5\\uDEC2-\\uDEDA\\uDEDC-\\uDEE1\\uDEFC-\\uDF14\\uDF16-\\uDF1B\\uDF36-\\uDF4E\\uDF50-\\uDF55\\uDF70-\\uDF88\\uDF8A-\\uDF8F\\uDFAA-\\uDFC2\\uDFC4-\\uDFC9\\uDFCB]|\\uD83A[\\uDD22-\\uDD43])/.test(character)) {\n string = string.slice(0, i - 1) + '-' + string.slice(i - 1);\n isLastLastCharUpper = isLastCharUpper;\n isLastCharUpper = false;\n isLastCharLower = true;\n } else {\n isLastCharLower = character.toLocaleLowerCase(locale) === character && character.toLocaleUpperCase(locale) !== character;\n isLastLastCharUpper = isLastCharUpper;\n isLastCharUpper = character.toLocaleUpperCase(locale) === character && character.toLocaleLowerCase(locale) !== character;\n }\n }\n\n return string;\n };\n\n var preserveConsecutiveUppercase = function preserveConsecutiveUppercase(input) {\n return input.replace(/^(?:[A-Z\\xC0-\\xD6\\xD8-\\xDE\\u0100\\u0102\\u0104\\u0106\\u0108\\u010A\\u010C\\u010E\\u0110\\u0112\\u0114\\u0116\\u0118\\u011A\\u011C\\u011E\\u0120\\u0122\\u0124\\u0126\\u0128\\u012A\\u012C\\u012E\\u0130\\u0132\\u0134\\u0136\\u0139\\u013B\\u013D\\u013F\\u0141\\u0143\\u0145\\u0147\\u014A\\u014C\\u014E\\u0150\\u0152\\u0154\\u0156\\u0158\\u015A\\u015C\\u015E\\u0160\\u0162\\u0164\\u0166\\u0168\\u016A\\u016C\\u016E\\u0170\\u0172\\u0174\\u0176\\u0178\\u0179\\u017B\\u017D\\u0181\\u0182\\u0184\\u0186\\u0187\\u0189-\\u018B\\u018E-\\u0191\\u0193\\u0194\\u0196-\\u0198\\u019C\\u019D\\u019F\\u01A0\\u01A2\\u01A4\\u01A6\\u01A7\\u01A9\\u01AC\\u01AE\\u01AF\\u01B1-\\u01B3\\u01B5\\u01B7\\u01B8\\u01BC\\u01C4\\u01C7\\u01CA\\u01CD\\u01CF\\u01D1\\u01D3\\u01D5\\u01D7\\u01D9\\u01DB\\u01DE\\u01E0\\u01E2\\u01E4\\u01E6\\u01E8\\u01EA\\u01EC\\u01EE\\u01F1\\u01F4\\u01F6-\\u01F8\\u01FA\\u01FC\\u01FE\\u0200\\u0202\\u0204\\u0206\\u0208\\u020A\\u020C\\u020E\\u0210\\u0212\\u0214\\u0216\\u0218\\u021A\\u021C\\u021E\\u0220\\u0222\\u0224\\u0226\\u0228\\u022A\\u022C\\u022E\\u0230\\u0232\\u023A\\u023B\\u023D\\u023E\\u0241\\u0243-\\u0246\\u0248\\u024A\\u024C\\u024E\\u0370\\u0372\\u0376\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E\\u038F\\u0391-\\u03A1\\u03A3-\\u03AB\\u03CF\\u03D2-\\u03D4\\u03D8\\u03DA\\u03DC\\u03DE\\u03E0\\u03E2\\u03E4\\u03E6\\u03E8\\u03EA\\u03EC\\u03EE\\u03F4\\u03F7\\u03F9\\u03FA\\u03FD-\\u042F\\u0460\\u0462\\u0464\\u0466\\u0468\\u046A\\u046C\\u046E\\u0470\\u0472\\u0474\\u0476\\u0478\\u047A\\u047C\\u047E\\u0480\\u048A\\u048C\\u048E\\u0490\\u0492\\u0494\\u0496\\u0498\\u049A\\u049C\\u049E\\u04A0\\u04A2\\u04A4\\u04A6\\u04A8\\u04AA\\u04AC\\u04AE\\u04B0\\u04B2\\u04B4\\u04B6\\u04B8\\u04BA\\u04BC\\u04BE\\u04C0\\u04C1\\u04C3\\u04C5\\u04C7\\u04C9\\u04CB\\u04CD\\u04D0\\u04D2\\u04D4\\u04D6\\u04D8\\u04DA\\u04DC\\u04DE\\u04E0\\u04E2\\u04E4\\u04E6\\u04E8\\u04EA\\u04EC\\u04EE\\u04F0\\u04F2\\u04F4\\u04F6\\u04F8\\u04FA\\u04FC\\u04FE\\u0500\\u0502\\u0504\\u0506\\u0508\\u050A\\u050C\\u050E\\u0510\\u0512\\u0514\\u0516\\u0518\\u051A\\u051C\\u051E\\u0520\\u0522\\u0524\\u0526\\u0528\\u052A\\u052C\\u052E\\u0531-\\u0556\\u10A0-\\u10C5\\u10C7\\u10CD\\u13A0-\\u13F5\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1E00\\u1E02\\u1E04\\u1E06\\u1E08\\u1E0A\\u1E0C\\u1E0E\\u1E10\\u1E12\\u1E14\\u1E16\\u1E18\\u1E1A\\u1E1C\\u1E1E\\u1E20\\u1E22\\u1E24\\u1E26\\u1E28\\u1E2A\\u1E2C\\u1E2E\\u1E30\\u1E32\\u1E34\\u1E36\\u1E38\\u1E3A\\u1E3C\\u1E3E\\u1E40\\u1E42\\u1E44\\u1E46\\u1E48\\u1E4A\\u1E4C\\u1E4E\\u1E50\\u1E52\\u1E54\\u1E56\\u1E58\\u1E5A\\u1E5C\\u1E5E\\u1E60\\u1E62\\u1E64\\u1E66\\u1E68\\u1E6A\\u1E6C\\u1E6E\\u1E70\\u1E72\\u1E74\\u1E76\\u1E78\\u1E7A\\u1E7C\\u1E7E\\u1E80\\u1E82\\u1E84\\u1E86\\u1E88\\u1E8A\\u1E8C\\u1E8E\\u1E90\\u1E92\\u1E94\\u1E9E\\u1EA0\\u1EA2\\u1EA4\\u1EA6\\u1EA8\\u1EAA\\u1EAC\\u1EAE\\u1EB0\\u1EB2\\u1EB4\\u1EB6\\u1EB8\\u1EBA\\u1EBC\\u1EBE\\u1EC0\\u1EC2\\u1EC4\\u1EC6\\u1EC8\\u1ECA\\u1ECC\\u1ECE\\u1ED0\\u1ED2\\u1ED4\\u1ED6\\u1ED8\\u1EDA\\u1EDC\\u1EDE\\u1EE0\\u1EE2\\u1EE4\\u1EE6\\u1EE8\\u1EEA\\u1EEC\\u1EEE\\u1EF0\\u1EF2\\u1EF4\\u1EF6\\u1EF8\\u1EFA\\u1EFC\\u1EFE\\u1F08-\\u1F0F\\u1F18-\\u1F1D\\u1F28-\\u1F2F\\u1F38-\\u1F3F\\u1F48-\\u1F4D\\u1F59\\u1F5B\\u1F5D\\u1F5F\\u1F68-\\u1F6F\\u1FB8-\\u1FBB\\u1FC8-\\u1FCB\\u1FD8-\\u1FDB\\u1FE8-\\u1FEC\\u1FF8-\\u1FFB\\u2102\\u2107\\u210B-\\u210D\\u2110-\\u2112\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u2130-\\u2133\\u213E\\u213F\\u2145\\u2183\\u2C00-\\u2C2E\\u2C60\\u2C62-\\u2C64\\u2C67\\u2C69\\u2C6B\\u2C6D-\\u2C70\\u2C72\\u2C75\\u2C7E-\\u2C80\\u2C82\\u2C84\\u2C86\\u2C88\\u2C8A\\u2C8C\\u2C8E\\u2C90\\u2C92\\u2C94\\u2C96\\u2C98\\u2C9A\\u2C9C\\u2C9E\\u2CA0\\u2CA2\\u2CA4\\u2CA6\\u2CA8\\u2CAA\\u2CAC\\u2CAE\\u2CB0\\u2CB2\\u2CB4\\u2CB6\\u2CB8\\u2CBA\\u2CBC\\u2CBE\\u2CC0\\u2CC2\\u2CC4\\u2CC6\\u2CC8\\u2CCA\\u2CCC\\u2CCE\\u2CD0\\u2CD2\\u2CD4\\u2CD6\\u2CD8\\u2CDA\\u2CDC\\u2CDE\\u2CE0\\u2CE2\\u2CEB\\u2CED\\u2CF2\\uA640\\uA642\\uA644\\uA646\\uA648\\uA64A\\uA64C\\uA64E\\uA650\\uA652\\uA654\\uA656\\uA658\\uA65A\\uA65C\\uA65E\\uA660\\uA662\\uA664\\uA666\\uA668\\uA66A\\uA66C\\uA680\\uA682\\uA684\\uA686\\uA688\\uA68A\\uA68C\\uA68E\\uA690\\uA692\\uA694\\uA696\\uA698\\uA69A\\uA722\\uA724\\uA726\\uA728\\uA72A\\uA72C\\uA72E\\uA732\\uA734\\uA736\\uA738\\uA73A\\uA73C\\uA73E\\uA740\\uA742\\uA744\\uA746\\uA748\\uA74A\\uA74C\\uA74E\\uA750\\uA752\\uA754\\uA756\\uA758\\uA75A\\uA75C\\uA75E\\uA760\\uA762\\uA764\\uA766\\uA768\\uA76A\\uA76C\\uA76E\\uA779\\uA77B\\uA77D\\uA77E\\uA780\\uA782\\uA784\\uA786\\uA78B\\uA78D\\uA790\\uA792\\uA796\\uA798\\uA79A\\uA79C\\uA79E\\uA7A0\\uA7A2\\uA7A4\\uA7A6\\uA7A8\\uA7AA-\\uA7AE\\uA7B0-\\uA7B4\\uA7B6\\uA7B8\\uA7BA\\uA7BC\\uA7BE\\uA7C2\\uA7C4-\\uA7C7\\uA7C9\\uA7F5\\uFF21-\\uFF3A]|\\uD801[\\uDC00-\\uDC27\\uDCB0-\\uDCD3]|\\uD803[\\uDC80-\\uDCB2]|\\uD806[\\uDCA0-\\uDCBF]|\\uD81B[\\uDE40-\\uDE5F]|\\uD835[\\uDC00-\\uDC19\\uDC34-\\uDC4D\\uDC68-\\uDC81\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB5\\uDCD0-\\uDCE9\\uDD04\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD38\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD6C-\\uDD85\\uDDA0-\\uDDB9\\uDDD4-\\uDDED\\uDE08-\\uDE21\\uDE3C-\\uDE55\\uDE70-\\uDE89\\uDEA8-\\uDEC0\\uDEE2-\\uDEFA\\uDF1C-\\uDF34\\uDF56-\\uDF6E\\uDF90-\\uDFA8\\uDFCA]|\\uD83A[\\uDD00-\\uDD21])(?!(?:[A-Z\\xC0-\\xD6\\xD8-\\xDE\\u0100\\u0102\\u0104\\u0106\\u0108\\u010A\\u010C\\u010E\\u0110\\u0112\\u0114\\u0116\\u0118\\u011A\\u011C\\u011E\\u0120\\u0122\\u0124\\u0126\\u0128\\u012A\\u012C\\u012E\\u0130\\u0132\\u0134\\u0136\\u0139\\u013B\\u013D\\u013F\\u0141\\u0143\\u0145\\u0147\\u014A\\u014C\\u014E\\u0150\\u0152\\u0154\\u0156\\u0158\\u015A\\u015C\\u015E\\u0160\\u0162\\u0164\\u0166\\u0168\\u016A\\u016C\\u016E\\u0170\\u0172\\u0174\\u0176\\u0178\\u0179\\u017B\\u017D\\u0181\\u0182\\u0184\\u0186\\u0187\\u0189-\\u018B\\u018E-\\u0191\\u0193\\u0194\\u0196-\\u0198\\u019C\\u019D\\u019F\\u01A0\\u01A2\\u01A4\\u01A6\\u01A7\\u01A9\\u01AC\\u01AE\\u01AF\\u01B1-\\u01B3\\u01B5\\u01B7\\u01B8\\u01BC\\u01C4\\u01C7\\u01CA\\u01CD\\u01CF\\u01D1\\u01D3\\u01D5\\u01D7\\u01D9\\u01DB\\u01DE\\u01E0\\u01E2\\u01E4\\u01E6\\u01E8\\u01EA\\u01EC\\u01EE\\u01F1\\u01F4\\u01F6-\\u01F8\\u01FA\\u01FC\\u01FE\\u0200\\u0202\\u0204\\u0206\\u0208\\u020A\\u020C\\u020E\\u0210\\u0212\\u0214\\u0216\\u0218\\u021A\\u021C\\u021E\\u0220\\u0222\\u0224\\u0226\\u0228\\u022A\\u022C\\u022E\\u0230\\u0232\\u023A\\u023B\\u023D\\u023E\\u0241\\u0243-\\u0246\\u0248\\u024A\\u024C\\u024E\\u0370\\u0372\\u0376\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E\\u038F\\u0391-\\u03A1\\u03A3-\\u03AB\\u03CF\\u03D2-\\u03D4\\u03D8\\u03DA\\u03DC\\u03DE\\u03E0\\u03E2\\u03E4\\u03E6\\u03E8\\u03EA\\u03EC\\u03EE\\u03F4\\u03F7\\u03F9\\u03FA\\u03FD-\\u042F\\u0460\\u0462\\u0464\\u0466\\u0468\\u046A\\u046C\\u046E\\u0470\\u0472\\u0474\\u0476\\u0478\\u047A\\u047C\\u047E\\u0480\\u048A\\u048C\\u048E\\u0490\\u0492\\u0494\\u0496\\u0498\\u049A\\u049C\\u049E\\u04A0\\u04A2\\u04A4\\u04A6\\u04A8\\u04AA\\u04AC\\u04AE\\u04B0\\u04B2\\u04B4\\u04B6\\u04B8\\u04BA\\u04BC\\u04BE\\u04C0\\u04C1\\u04C3\\u04C5\\u04C7\\u04C9\\u04CB\\u04CD\\u04D0\\u04D2\\u04D4\\u04D6\\u04D8\\u04DA\\u04DC\\u04DE\\u04E0\\u04E2\\u04E4\\u04E6\\u04E8\\u04EA\\u04EC\\u04EE\\u04F0\\u04F2\\u04F4\\u04F6\\u04F8\\u04FA\\u04FC\\u04FE\\u0500\\u0502\\u0504\\u0506\\u0508\\u050A\\u050C\\u050E\\u0510\\u0512\\u0514\\u0516\\u0518\\u051A\\u051C\\u051E\\u0520\\u0522\\u0524\\u0526\\u0528\\u052A\\u052C\\u052E\\u0531-\\u0556\\u10A0-\\u10C5\\u10C7\\u10CD\\u13A0-\\u13F5\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1E00\\u1E02\\u1E04\\u1E06\\u1E08\\u1E0A\\u1E0C\\u1E0E\\u1E10\\u1E12\\u1E14\\u1E16\\u1E18\\u1E1A\\u1E1C\\u1E1E\\u1E20\\u1E22\\u1E24\\u1E26\\u1E28\\u1E2A\\u1E2C\\u1E2E\\u1E30\\u1E32\\u1E34\\u1E36\\u1E38\\u1E3A\\u1E3C\\u1E3E\\u1E40\\u1E42\\u1E44\\u1E46\\u1E48\\u1E4A\\u1E4C\\u1E4E\\u1E50\\u1E52\\u1E54\\u1E56\\u1E58\\u1E5A\\u1E5C\\u1E5E\\u1E60\\u1E62\\u1E64\\u1E66\\u1E68\\u1E6A\\u1E6C\\u1E6E\\u1E70\\u1E72\\u1E74\\u1E76\\u1E78\\u1E7A\\u1E7C\\u1E7E\\u1E80\\u1E82\\u1E84\\u1E86\\u1E88\\u1E8A\\u1E8C\\u1E8E\\u1E90\\u1E92\\u1E94\\u1E9E\\u1EA0\\u1EA2\\u1EA4\\u1EA6\\u1EA8\\u1EAA\\u1EAC\\u1EAE\\u1EB0\\u1EB2\\u1EB4\\u1EB6\\u1EB8\\u1EBA\\u1EBC\\u1EBE\\u1EC0\\u1EC2\\u1EC4\\u1EC6\\u1EC8\\u1ECA\\u1ECC\\u1ECE\\u1ED0\\u1ED2\\u1ED4\\u1ED6\\u1ED8\\u1EDA\\u1EDC\\u1EDE\\u1EE0\\u1EE2\\u1EE4\\u1EE6\\u1EE8\\u1EEA\\u1EEC\\u1EEE\\u1EF0\\u1EF2\\u1EF4\\u1EF6\\u1EF8\\u1EFA\\u1EFC\\u1EFE\\u1F08-\\u1F0F\\u1F18-\\u1F1D\\u1F28-\\u1F2F\\u1F38-\\u1F3F\\u1F48-\\u1F4D\\u1F59\\u1F5B\\u1F5D\\u1F5F\\u1F68-\\u1F6F\\u1FB8-\\u1FBB\\u1FC8-\\u1FCB\\u1FD8-\\u1FDB\\u1FE8-\\u1FEC\\u1FF8-\\u1FFB\\u2102\\u2107\\u210B-\\u210D\\u2110-\\u2112\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u2130-\\u2133\\u213E\\u213F\\u2145\\u2183\\u2C00-\\u2C2E\\u2C60\\u2C62-\\u2C64\\u2C67\\u2C69\\u2C6B\\u2C6D-\\u2C70\\u2C72\\u2C75\\u2C7E-\\u2C80\\u2C82\\u2C84\\u2C86\\u2C88\\u2C8A\\u2C8C\\u2C8E\\u2C90\\u2C92\\u2C94\\u2C96\\u2C98\\u2C9A\\u2C9C\\u2C9E\\u2CA0\\u2CA2\\u2CA4\\u2CA6\\u2CA8\\u2CAA\\u2CAC\\u2CAE\\u2CB0\\u2CB2\\u2CB4\\u2CB6\\u2CB8\\u2CBA\\u2CBC\\u2CBE\\u2CC0\\u2CC2\\u2CC4\\u2CC6\\u2CC8\\u2CCA\\u2CCC\\u2CCE\\u2CD0\\u2CD2\\u2CD4\\u2CD6\\u2CD8\\u2CDA\\u2CDC\\u2CDE\\u2CE0\\u2CE2\\u2CEB\\u2CED\\u2CF2\\uA640\\uA642\\uA644\\uA646\\uA648\\uA64A\\uA64C\\uA64E\\uA650\\uA652\\uA654\\uA656\\uA658\\uA65A\\uA65C\\uA65E\\uA660\\uA662\\uA664\\uA666\\uA668\\uA66A\\uA66C\\uA680\\uA682\\uA684\\uA686\\uA688\\uA68A\\uA68C\\uA68E\\uA690\\uA692\\uA694\\uA696\\uA698\\uA69A\\uA722\\uA724\\uA726\\uA728\\uA72A\\uA72C\\uA72E\\uA732\\uA734\\uA736\\uA738\\uA73A\\uA73C\\uA73E\\uA740\\uA742\\uA744\\uA746\\uA748\\uA74A\\uA74C\\uA74E\\uA750\\uA752\\uA754\\uA756\\uA758\\uA75A\\uA75C\\uA75E\\uA760\\uA762\\uA764\\uA766\\uA768\\uA76A\\uA76C\\uA76E\\uA779\\uA77B\\uA77D\\uA77E\\uA780\\uA782\\uA784\\uA786\\uA78B\\uA78D\\uA790\\uA792\\uA796\\uA798\\uA79A\\uA79C\\uA79E\\uA7A0\\uA7A2\\uA7A4\\uA7A6\\uA7A8\\uA7AA-\\uA7AE\\uA7B0-\\uA7B4\\uA7B6\\uA7B8\\uA7BA\\uA7BC\\uA7BE\\uA7C2\\uA7C4-\\uA7C7\\uA7C9\\uA7F5\\uFF21-\\uFF3A]|\\uD801[\\uDC00-\\uDC27\\uDCB0-\\uDCD3]|\\uD803[\\uDC80-\\uDCB2]|\\uD806[\\uDCA0-\\uDCBF]|\\uD81B[\\uDE40-\\uDE5F]|\\uD835[\\uDC00-\\uDC19\\uDC34-\\uDC4D\\uDC68-\\uDC81\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB5\\uDCD0-\\uDCE9\\uDD04\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD38\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD6C-\\uDD85\\uDDA0-\\uDDB9\\uDDD4-\\uDDED\\uDE08-\\uDE21\\uDE3C-\\uDE55\\uDE70-\\uDE89\\uDEA8-\\uDEC0\\uDEE2-\\uDEFA\\uDF1C-\\uDF34\\uDF56-\\uDF6E\\uDF90-\\uDFA8\\uDFCA]|\\uD83A[\\uDD00-\\uDD21]))/g, function (m1) {\n return m1.toLowerCase();\n });\n };\n\n var postProcess = function postProcess(input, options) {\n return input.replace(/[ \\x2D\\._]+((?:[0-9A-Z_a-z\\xAA\\xB2\\xB3\\xB5\\xB9\\xBA\\xBC-\\xBE\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0345\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05B0-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0610-\\u061A\\u0620-\\u0657\\u0659-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06E1-\\u06E8\\u06ED-\\u06FC\\u06FF\\u0710-\\u073F\\u074D-\\u07B1\\u07C0-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0817\\u081A-\\u082C\\u0840-\\u0858\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08C7\\u08D4-\\u08DF\\u08E3-\\u08E9\\u08F0-\\u093B\\u093D-\\u094C\\u094E-\\u0950\\u0955-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD-\\u09C4\\u09C7\\u09C8\\u09CB\\u09CC\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u09F4-\\u09F9\\u09FC\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B\\u0A4C\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB\\u0ACC\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AF9-\\u0AFC\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D-\\u0B44\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71-\\u0B77\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD0\\u0BD7\\u0BE6-\\u0BF2\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4C\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0C80-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCC\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D00-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D4E\\u0D54-\\u0D63\\u0D66-\\u0D78\\u0D7A-\\u0D7F\\u0D81-\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E46\\u0E4D\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F20-\\u0F33\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F81\\u0F88-\\u0F97\\u0F99-\\u0FBC\\u1000-\\u1036\\u1038\\u103B-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1369-\\u137C\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1713\\u1720-\\u1733\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17B3\\u17B6-\\u17C8\\u17D7\\u17DC\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1820-\\u1878\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u1938\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A61-\\u1A74\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1ABF\\u1AC0\\u1B00-\\u1B33\\u1B35-\\u1B43\\u1B45-\\u1B4B\\u1B50-\\u1B59\\u1B80-\\u1BA9\\u1BAC-\\u1BE5\\u1BE7-\\u1BF1\\u1C00-\\u1C36\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1DE7-\\u1DF4\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2070\\u2071\\u2074-\\u2079\\u207F-\\u2089\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2189\\u2150-\\u2182\\u2460-\\u249B\\u24B6-\\u24FF\\u2776-\\u2793\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2CFD\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u3192-\\u3195\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\u3400-\\u4DBF\\u4E00-\\u9FFC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66E\\uA674-\\uA67B\\uA67F-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7BF\\uA7C2-\\uA7CA\\uA7F5-\\uA805\\uA807-\\uA827\\uA830-\\uA835\\uA840-\\uA873\\uA880-\\uA8C3\\uA8C5\\uA8D0-\\uA8D9\\uA8F2-\\uA8F7\\uA8FB\\uA8FD-\\uA92A\\uA930-\\uA952\\uA960-\\uA97C\\uA980-\\uA9B2\\uA9B4-\\uA9BF\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAABE\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF5\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABEA\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD07-\\uDD33\\uDD40-\\uDD78\\uDD8A\\uDD8B\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE1-\\uDEFB\\uDF00-\\uDF23\\uDF2D-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC58-\\uDC76\\uDC79-\\uDC9E\\uDCA7-\\uDCAF\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDCFB-\\uDD1B\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBC-\\uDDCF\\uDDD2-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE40-\\uDE48\\uDE60-\\uDE7E\\uDE80-\\uDE9F\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDEEB-\\uDEEF\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF58-\\uDF72\\uDF78-\\uDF91\\uDFA9-\\uDFAF]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDCFA-\\uDD27\\uDD30-\\uDD39\\uDE60-\\uDE7E\\uDE80-\\uDEA9\\uDEAB\\uDEAC\\uDEB0\\uDEB1\\uDF00-\\uDF27\\uDF30-\\uDF45\\uDF51-\\uDF54\\uDFB0-\\uDFCB\\uDFE0-\\uDFF6]|\\uD804[\\uDC00-\\uDC45\\uDC52-\\uDC6F\\uDC82-\\uDCB8\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD32\\uDD36-\\uDD3F\\uDD44-\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD80-\\uDDBF\\uDDC1-\\uDDC4\\uDDCE-\\uDDDA\\uDDDC\\uDDE1-\\uDDF4\\uDE00-\\uDE11\\uDE13-\\uDE34\\uDE37\\uDE3E\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEE8\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D-\\uDF44\\uDF47\\uDF48\\uDF4B\\uDF4C\\uDF50\\uDF57\\uDF5D-\\uDF63]|\\uD805[\\uDC00-\\uDC41\\uDC43-\\uDC45\\uDC47-\\uDC4A\\uDC50-\\uDC59\\uDC5F-\\uDC61\\uDC80-\\uDCC1\\uDCC4\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDBE\\uDDD8-\\uDDDD\\uDE00-\\uDE3E\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB5\\uDEB8\\uDEC0-\\uDEC9\\uDF00-\\uDF1A\\uDF1D-\\uDF2A\\uDF30-\\uDF3B]|\\uD806[\\uDC00-\\uDC38\\uDCA0-\\uDCF2\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD35\\uDD37\\uDD38\\uDD3B\\uDD3C\\uDD3F-\\uDD42\\uDD50-\\uDD59\\uDDA0-\\uDDA7\\uDDAA-\\uDDD7\\uDDDA-\\uDDDF\\uDDE1\\uDDE3\\uDDE4\\uDE00-\\uDE32\\uDE35-\\uDE3E\\uDE50-\\uDE97\\uDE9D\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC36\\uDC38-\\uDC3E\\uDC40\\uDC50-\\uDC6C\\uDC72-\\uDC8F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD41\\uDD43\\uDD46\\uDD47\\uDD50-\\uDD59\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD8E\\uDD90\\uDD91\\uDD93-\\uDD96\\uDD98\\uDDA0-\\uDDA9\\uDEE0-\\uDEF6\\uDFB0\\uDFC0-\\uDFD4]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF5B-\\uDF61\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE96\\uDF00-\\uDF4A\\uDF4F-\\uDF87\\uDF8F-\\uDF9F\\uDFE0\\uDFE1\\uDFE3\\uDFF0\\uDFF1]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82C[\\uDC00-\\uDD1E\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9E]|\\uD834[\\uDEE0-\\uDEF3\\uDF60-\\uDF78]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD40-\\uDD49\\uDD4E\\uDEC0-\\uDEEB\\uDEF0-\\uDEF9]|\\uD83A[\\uDC00-\\uDCC4\\uDCC7-\\uDCCF\\uDD00-\\uDD43\\uDD47\\uDD4B\\uDD50-\\uDD59]|\\uD83B[\\uDC71-\\uDCAB\\uDCAD-\\uDCAF\\uDCB1-\\uDCB4\\uDD01-\\uDD2D\\uDD2F-\\uDD3D\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD83C[\\uDD00-\\uDD0C\\uDD30-\\uDD49\\uDD50-\\uDD69\\uDD70-\\uDD89]|\\uD83E[\\uDFF0-\\uDFF9]|\\uD869[\\uDC00-\\uDEDD\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A])|$)/g, function (_, p1) {\n return p1.toLocaleUpperCase(options.locale);\n }).replace(/[0-9]+((?:[0-9A-Z_a-z\\xAA\\xB2\\xB3\\xB5\\xB9\\xBA\\xBC-\\xBE\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0345\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05B0-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0610-\\u061A\\u0620-\\u0657\\u0659-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06E1-\\u06E8\\u06ED-\\u06FC\\u06FF\\u0710-\\u073F\\u074D-\\u07B1\\u07C0-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0817\\u081A-\\u082C\\u0840-\\u0858\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08C7\\u08D4-\\u08DF\\u08E3-\\u08E9\\u08F0-\\u093B\\u093D-\\u094C\\u094E-\\u0950\\u0955-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD-\\u09C4\\u09C7\\u09C8\\u09CB\\u09CC\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u09F4-\\u09F9\\u09FC\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B\\u0A4C\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB\\u0ACC\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AF9-\\u0AFC\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D-\\u0B44\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71-\\u0B77\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD0\\u0BD7\\u0BE6-\\u0BF2\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4C\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0C80-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCC\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D00-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D4E\\u0D54-\\u0D63\\u0D66-\\u0D78\\u0D7A-\\u0D7F\\u0D81-\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E46\\u0E4D\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F20-\\u0F33\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F81\\u0F88-\\u0F97\\u0F99-\\u0FBC\\u1000-\\u1036\\u1038\\u103B-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1369-\\u137C\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1713\\u1720-\\u1733\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17B3\\u17B6-\\u17C8\\u17D7\\u17DC\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1820-\\u1878\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u1938\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A61-\\u1A74\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1ABF\\u1AC0\\u1B00-\\u1B33\\u1B35-\\u1B43\\u1B45-\\u1B4B\\u1B50-\\u1B59\\u1B80-\\u1BA9\\u1BAC-\\u1BE5\\u1BE7-\\u1BF1\\u1C00-\\u1C36\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1DE7-\\u1DF4\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2070\\u2071\\u2074-\\u2079\\u207F-\\u2089\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2189\\u2150-\\u2182\\u2460-\\u249B\\u24B6-\\u24FF\\u2776-\\u2793\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2CFD\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u3192-\\u3195\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\u3400-\\u4DBF\\u4E00-\\u9FFC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66E\\uA674-\\uA67B\\uA67F-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7BF\\uA7C2-\\uA7CA\\uA7F5-\\uA805\\uA807-\\uA827\\uA830-\\uA835\\uA840-\\uA873\\uA880-\\uA8C3\\uA8C5\\uA8D0-\\uA8D9\\uA8F2-\\uA8F7\\uA8FB\\uA8FD-\\uA92A\\uA930-\\uA952\\uA960-\\uA97C\\uA980-\\uA9B2\\uA9B4-\\uA9BF\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAABE\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF5\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABEA\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD07-\\uDD33\\uDD40-\\uDD78\\uDD8A\\uDD8B\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE1-\\uDEFB\\uDF00-\\uDF23\\uDF2D-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC58-\\uDC76\\uDC79-\\uDC9E\\uDCA7-\\uDCAF\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDCFB-\\uDD1B\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBC-\\uDDCF\\uDDD2-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE40-\\uDE48\\uDE60-\\uDE7E\\uDE80-\\uDE9F\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDEEB-\\uDEEF\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF58-\\uDF72\\uDF78-\\uDF91\\uDFA9-\\uDFAF]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDCFA-\\uDD27\\uDD30-\\uDD39\\uDE60-\\uDE7E\\uDE80-\\uDEA9\\uDEAB\\uDEAC\\uDEB0\\uDEB1\\uDF00-\\uDF27\\uDF30-\\uDF45\\uDF51-\\uDF54\\uDFB0-\\uDFCB\\uDFE0-\\uDFF6]|\\uD804[\\uDC00-\\uDC45\\uDC52-\\uDC6F\\uDC82-\\uDCB8\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD32\\uDD36-\\uDD3F\\uDD44-\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD80-\\uDDBF\\uDDC1-\\uDDC4\\uDDCE-\\uDDDA\\uDDDC\\uDDE1-\\uDDF4\\uDE00-\\uDE11\\uDE13-\\uDE34\\uDE37\\uDE3E\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEE8\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D-\\uDF44\\uDF47\\uDF48\\uDF4B\\uDF4C\\uDF50\\uDF57\\uDF5D-\\uDF63]|\\uD805[\\uDC00-\\uDC41\\uDC43-\\uDC45\\uDC47-\\uDC4A\\uDC50-\\uDC59\\uDC5F-\\uDC61\\uDC80-\\uDCC1\\uDCC4\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDBE\\uDDD8-\\uDDDD\\uDE00-\\uDE3E\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB5\\uDEB8\\uDEC0-\\uDEC9\\uDF00-\\uDF1A\\uDF1D-\\uDF2A\\uDF30-\\uDF3B]|\\uD806[\\uDC00-\\uDC38\\uDCA0-\\uDCF2\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD35\\uDD37\\uDD38\\uDD3B\\uDD3C\\uDD3F-\\uDD42\\uDD50-\\uDD59\\uDDA0-\\uDDA7\\uDDAA-\\uDDD7\\uDDDA-\\uDDDF\\uDDE1\\uDDE3\\uDDE4\\uDE00-\\uDE32\\uDE35-\\uDE3E\\uDE50-\\uDE97\\uDE9D\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC36\\uDC38-\\uDC3E\\uDC40\\uDC50-\\uDC6C\\uDC72-\\uDC8F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD41\\uDD43\\uDD46\\uDD47\\uDD50-\\uDD59\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD8E\\uDD90\\uDD91\\uDD93-\\uDD96\\uDD98\\uDDA0-\\uDDA9\\uDEE0-\\uDEF6\\uDFB0\\uDFC0-\\uDFD4]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF5B-\\uDF61\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE96\\uDF00-\\uDF4A\\uDF4F-\\uDF87\\uDF8F-\\uDF9F\\uDFE0\\uDFE1\\uDFE3\\uDFF0\\uDFF1]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82C[\\uDC00-\\uDD1E\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9E]|\\uD834[\\uDEE0-\\uDEF3\\uDF60-\\uDF78]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD40-\\uDD49\\uDD4E\\uDEC0-\\uDEEB\\uDEF0-\\uDEF9]|\\uD83A[\\uDC00-\\uDCC4\\uDCC7-\\uDCCF\\uDD00-\\uDD43\\uDD47\\uDD4B\\uDD50-\\uDD59]|\\uD83B[\\uDC71-\\uDCAB\\uDCAD-\\uDCAF\\uDCB1-\\uDCB4\\uDD01-\\uDD2D\\uDD2F-\\uDD3D\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD83C[\\uDD00-\\uDD0C\\uDD30-\\uDD49\\uDD50-\\uDD69\\uDD70-\\uDD89]|\\uD83E[\\uDFF0-\\uDFF9]|\\uD869[\\uDC00-\\uDEDD\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A])|$)/g, function (m) {\n return m.toLocaleUpperCase(options.locale);\n });\n };\n\n var camelCase = function camelCase(input, options) {\n if (!(typeof input === 'string' || Array.isArray(input))) {\n throw new TypeError('Expected the input to be `string | string[]`');\n }\n\n options = _objectSpread2({\n pascalCase: false,\n preserveConsecutiveUppercase: false\n }, options);\n\n if (Array.isArray(input)) {\n input = input.map(function (x) {\n return x.trim();\n }).filter(function (x) {\n return x.length;\n }).join('-');\n } else {\n input = input.trim();\n }\n\n if (input.length === 0) {\n return '';\n }\n\n if (input.length === 1) {\n return options.pascalCase ? input.toLocaleUpperCase(options.locale) : input.toLocaleLowerCase(options.locale);\n }\n\n var hasUpperCase = input !== input.toLocaleLowerCase(options.locale);\n\n if (hasUpperCase) {\n input = preserveCamelCase(input, options.locale);\n }\n\n input = input.replace(/^[_.\\- ]+/, '');\n\n if (options.preserveConsecutiveUppercase) {\n input = preserveConsecutiveUppercase(input);\n } else {\n input = input.toLocaleLowerCase();\n }\n\n if (options.pascalCase) {\n input = input.charAt(0).toLocaleUpperCase(options.locale) + input.slice(1);\n }\n\n return postProcess(input, options);\n };\n\n var camelcase = camelCase; // TODO: Remove this for the next major release\n\n var default_1 = camelCase;\n camelcase[\"default\"] = default_1;\n\n var Fullstory = /*#__PURE__*/function () {\n function Fullstory(config) {\n _classCallCheck(this, Fullstory);\n\n this.fs_org = config.fs_org;\n this.fs_debug_mode = config.fs_debug_mode;\n this.name = \"FULLSTORY\";\n }\n\n _createClass(Fullstory, [{\n key: \"init\",\n value: function init() {\n logger.debug(\"===in init FULLSTORY===\");\n window._fs_debug = this.fs_debug_mode;\n window._fs_host = \"fullstory.com\";\n window._fs_script = \"edge.fullstory.com/s/fs.js\";\n window._fs_org = this.fs_org;\n window._fs_namespace = \"FS\";\n\n (function (m, n, e, t, l, o, g, y) {\n if (e in m) {\n if (m.console && m.console.log) {\n m.console.log('FullStory namespace conflict. Please set window[\"_fs_namespace\"].');\n }\n\n return;\n }\n\n g = m[e] = function (a, b, s) {\n g.q ? g.q.push([a, b, s]) : g._api(a, b, s);\n };\n\n g.q = [];\n o = n.createElement(t);\n o.async = 1;\n o.crossOrigin = \"anonymous\";\n o.src = \"https://\".concat(_fs_script);\n y = n.getElementsByTagName(t)[0];\n y.parentNode.insertBefore(o, y);\n\n g.identify = function (i, v, s) {\n g(l, {\n uid: i\n }, s);\n if (v) g(l, v, s);\n };\n\n g.setUserVars = function (v, s) {\n g(l, v, s);\n };\n\n g.event = function (i, v, s) {\n g(\"event\", {\n n: i,\n p: v\n }, s);\n };\n\n g.shutdown = function () {\n g(\"rec\", !1);\n };\n\n g.restart = function () {\n g(\"rec\", !0);\n };\n\n g.log = function (a, b) {\n g(\"log\", [a, b]);\n };\n\n g.consent = function (a) {\n g(\"consent\", !arguments.length || a);\n };\n\n g.identifyAccount = function (i, v) {\n o = \"account\";\n v = v || {};\n v.acctId = i;\n g(o, v);\n };\n\n g.clearUserCookie = function () {};\n\n g._w = {};\n y = \"XMLHttpRequest\";\n g._w[y] = m[y];\n y = \"fetch\";\n g._w[y] = m[y];\n if (m[y]) m[y] = function () {\n return g._w[y].apply(this, arguments);\n };\n })(window, document, window._fs_namespace, \"script\", \"user\");\n }\n }, {\n key: \"page\",\n value: function page(rudderElement) {\n logger.debug(\"in FULLSORY page\");\n var rudderMessage = rudderElement.message;\n var pageName = rudderMessage.name;\n\n var props = _objectSpread2({\n name: pageName\n }, rudderMessage.properties);\n\n window.FS.event(\"Viewed a Page\", Fullstory.getFSProperties(props));\n }\n }, {\n key: \"identify\",\n value: function identify(rudderElement) {\n logger.debug(\"in FULLSORY identify\");\n var userId = rudderElement.message.userId;\n var traits = rudderElement.message.context.traits;\n if (!userId) userId = rudderElement.message.anonymousId;\n if (Object.keys(traits).length === 0 && traits.constructor === Object) window.FS.identify(userId);else window.FS.identify(userId, Fullstory.getFSProperties(traits));\n }\n }, {\n key: \"track\",\n value: function track(rudderElement) {\n logger.debug(\"in FULLSTORY track\");\n window.FS.event(rudderElement.message.event, Fullstory.getFSProperties(rudderElement.message.properties));\n }\n }, {\n key: \"isLoaded\",\n value: function isLoaded() {\n logger.debug(\"in FULLSTORY isLoaded\");\n return !!window.FS;\n }\n }], [{\n key: \"getFSProperties\",\n value: function getFSProperties(properties) {\n var FS_properties = {};\n Object.keys(properties).map(function (key, index) {\n FS_properties[key === \"displayName\" || key === \"email\" ? key : Fullstory.camelCaseField(key)] = properties[key];\n });\n return FS_properties;\n }\n }, {\n key: \"camelCaseField\",\n value: function camelCaseField(fieldName) {\n // Do not camel case across type suffixes.\n var parts = fieldName.split(\"_\");\n\n if (parts.length > 1) {\n var typeSuffix = parts.pop();\n\n switch (typeSuffix) {\n case \"str\":\n case \"int\":\n case \"date\":\n case \"real\":\n case \"bool\":\n case \"strs\":\n case \"ints\":\n case \"dates\":\n case \"reals\":\n case \"bools\":\n return \"\".concat(camelcase(parts.join(\"_\")), \"_\").concat(typeSuffix);\n\n }\n } // No type suffix found. Camel case the whole field name.\n\n\n return camelcase(fieldName);\n }\n }]);\n\n return Fullstory;\n }();\n\n var TVSquared = /*#__PURE__*/function () {\n function TVSquared(config) {\n _classCallCheck(this, TVSquared);\n\n this.isLoaded = function () {\n logger.debug(\"in TVSqaured isLoaded\");\n return !!(window._tvq && window._tvq.push !== Array.prototype.push);\n };\n\n this.isReady = function () {\n logger.debug(\"in TVSqaured isReady\");\n return !!(window._tvq && window._tvq.push !== Array.prototype.push);\n };\n\n this.page = function () {\n window._tvq.push([\"trackPageView\"]);\n };\n\n this.formatRevenue = function (revenue) {\n var rev = revenue;\n rev = parseFloat(rev.toString().replace(/^[^\\d.]*/, \"\"));\n return rev;\n };\n\n this.brandId = config.brandId;\n this.clientId = config.clientId;\n this.eventWhiteList = config.eventWhiteList || [];\n this.customMetrics = config.customMetrics || [];\n this.name = \"TVSquared\";\n }\n\n _createClass(TVSquared, [{\n key: \"init\",\n value: function init() {\n logger.debug(\"===in init TVSquared===\");\n window._tvq = window._tvq || [];\n var url = document.location.protocol === \"https:\" ? \"https://\" : \"http://\";\n url += \"collector-\".concat(this.clientId, \".tvsquared.com/\");\n\n window._tvq.push([\"setSiteId\", this.brandId]);\n\n window._tvq.push([\"setTrackerUrl\", \"\".concat(url, \"tv2track.php\")]);\n\n ScriptLoader(\"TVSquared-integration\", \"\".concat(url, \"tv2track.js\"));\n }\n }, {\n key: \"track\",\n value: function track(rudderElement) {\n var _rudderElement$messag = rudderElement.message,\n event = _rudderElement$messag.event,\n userId = _rudderElement$messag.userId,\n anonymousId = _rudderElement$messag.anonymousId;\n var _rudderElement$messag2 = rudderElement.message.properties,\n revenue = _rudderElement$messag2.revenue,\n productType = _rudderElement$messag2.productType,\n category = _rudderElement$messag2.category,\n order_id = _rudderElement$messag2.order_id,\n promotion_id = _rudderElement$messag2.promotion_id;\n var i;\n var j;\n var whitelist = this.eventWhiteList.slice();\n whitelist = whitelist.filter(function (wl) {\n return wl.event !== \"\";\n });\n\n for (i = 0; i < whitelist.length; i += 1) {\n if (event.toUpperCase() === whitelist[i].event.toUpperCase()) {\n break;\n }\n\n if (i === whitelist.length - 1) {\n return;\n }\n }\n\n var session = {\n user: userId || anonymousId || \"\"\n };\n var action = {\n rev: revenue ? this.formatRevenue(revenue) : \"\",\n prod: category || productType || \"\",\n id: order_id || \"\",\n promo: promotion_id || \"\"\n };\n var customMetrics = this.customMetrics.slice();\n customMetrics = customMetrics.filter(function (cm) {\n return cm.propertyName !== \"\";\n });\n\n if (customMetrics.length) {\n for (j = 0; j < customMetrics.length; j += 1) {\n var key = customMetrics[j].propertyName;\n var value = rudderElement.message.properties[key];\n\n if (value) {\n action[key] = value;\n }\n }\n }\n\n window._tvq.push([function () {\n this.setCustomVariable(5, \"session\", JSON.stringify(session), \"visit\");\n }]);\n\n if (event.toUpperCase() !== \"RESPONSE\") {\n window._tvq.push([function () {\n this.setCustomVariable(5, event, JSON.stringify(action), \"page\");\n }]);\n\n window._tvq.push([\"trackPageView\"]);\n }\n }\n }]);\n\n return TVSquared;\n }();\n\n var requiredEventParameters = {\n PromotionId: \"promotion_id\",\n PromotionName: \"promotion_name\",\n Search: \"search_term\",\n ProductId: \"item_id\",\n ProductName: \"item_name\"\n }; // To Do : Future Scope :: We can remove this one and add everything in include list.\n // This will also simplify our existing code and complex logics related to that\n\n var includeParams = {\n CartShare: {\n defaults: {\n content_type: \"Cart\"\n },\n mappings: {\n share_via: \"method\",\n cart_id: \"content_id\"\n }\n },\n ProductShare: {\n defaults: {\n content_type: \"Product\"\n },\n mappings: {\n share_via: \"method\",\n product_id: \"content_id\"\n }\n },\n Search: {\n mappings: {\n query: \"search_term\"\n }\n },\n Promotion: {\n mappings: {\n position: \"location_id\"\n }\n }\n };\n var eventParametersConfigArray = {\n ListId: {\n src: \"list_id\",\n dest: \"item_list_id\",\n inItems: true\n },\n Category: {\n src: \"category\",\n dest: \"item_list_name\",\n inItems: true\n },\n Price: {\n src: \"price\",\n dest: \"value\"\n },\n Currency: {\n src: \"currency\",\n dest: \"currency\",\n inItems: true\n },\n Coupon: {\n src: \"coupon\",\n dest: \"coupon\",\n inItems: true\n },\n Affiliation: {\n src: \"affiliation\",\n dest: \"affiliation\",\n inItems: true\n },\n Shipping: {\n src: \"shipping\",\n dest: \"shipping\"\n },\n Tax: {\n src: \"tax\",\n dest: \"tax\"\n },\n Total: {\n src: \"total\",\n dest: \"value\"\n },\n CheckoutId: {\n src: \"checkout_id\",\n dest: \"transaction_id\"\n },\n ShippingMethod: {\n src: \"shipping_method\",\n dest: \"shipping_tier\"\n },\n PaymentMethod: {\n src: \"payment_method\",\n dest: \"payment_type\"\n }\n };\n var itemParametersConfigArray = [{\n src: \"product_id\",\n dest: \"item_id\"\n }, {\n src: \"order_id\",\n dest: \"item_id\"\n }, {\n src: \"name\",\n dest: \"item_name\"\n }, {\n src: \"coupon\",\n dest: \"coupon\"\n }, {\n src: \"category\",\n dest: \"item_category\"\n }, {\n src: \"brand\",\n dest: \"item_brand\"\n }, {\n src: \"variant\",\n dest: \"item_variant\"\n }, {\n src: \"price\",\n dest: \"price\"\n }, {\n src: \"quantity\",\n dest: \"quantity\"\n }, {\n src: \"position\",\n dest: \"index\"\n }];\n var eventNamesConfigArray = [// Browsing Section\n {\n src: [\"products searched\", \"product searched\"],\n dest: \"search\",\n requiredParams: requiredEventParameters.Search,\n onlyIncludeParams: includeParams.Search\n }, {\n src: [\"product list viewed\"],\n dest: \"view_item_list\",\n requiredParams: [requiredEventParameters.ProductId, requiredEventParameters.ProductName],\n hasItem: true,\n includeList: [eventParametersConfigArray.ListId, eventParametersConfigArray.Category]\n }, // Promotion Section\n {\n src: [\"promotion viewed\"],\n dest: \"view_promotion\",\n onlyIncludeParams: includeParams.Promotion\n }, {\n src: [\"promotion clicked\"],\n dest: \"select_promotion\",\n onlyIncludeParams: includeParams.Promotion\n }, // Ordering Section\n {\n src: [\"product clicked\", \"products clicked\"],\n dest: \"select_item\",\n requiredParams: [requiredEventParameters.ProductId, requiredEventParameters.ProductName],\n hasItem: true,\n includeList: [eventParametersConfigArray.ListId, eventParametersConfigArray.Category]\n }, {\n src: [\"product viewed\"],\n dest: \"view_item\",\n requiredParams: [requiredEventParameters.ProductId, requiredEventParameters.ProductName],\n hasItem: true,\n includeList: [eventParametersConfigArray.Currency, eventParametersConfigArray.Total]\n }, {\n src: [\"product added\"],\n dest: \"add_to_cart\",\n requiredParams: [requiredEventParameters.ProductId, requiredEventParameters.ProductName],\n hasItem: true,\n includeList: [eventParametersConfigArray.Currency, eventParametersConfigArray.Total]\n }, {\n src: [\"product removed\"],\n dest: \"remove_from_cart\",\n requiredParams: [requiredEventParameters.ProductId, requiredEventParameters.ProductName],\n hasItem: true,\n includeList: [eventParametersConfigArray.Currency, eventParametersConfigArray.Total]\n }, {\n src: [\"cart viewed\"],\n dest: \"view_cart\",\n requiredParams: [requiredEventParameters.ProductId, requiredEventParameters.ProductName],\n hasItem: true,\n includeList: [eventParametersConfigArray.Currency, eventParametersConfigArray.Total]\n }, {\n src: [\"checkout started\"],\n dest: \"begin_checkout\",\n requiredParams: [requiredEventParameters.ProductId, requiredEventParameters.ProductName],\n hasItem: true,\n includeList: [eventParametersConfigArray.Coupon, eventParametersConfigArray.Currency, eventParametersConfigArray.Total]\n }, {\n src: [\"payment info entered\"],\n dest: \"add_payment_info\",\n hasItem: false,\n includeList: [eventParametersConfigArray.PaymentMethod]\n }, {\n src: [\"payment info entered\"],\n dest: \"add_shipping_info\",\n hasItem: false,\n includeList: [eventParametersConfigArray.ShippingMethod]\n }, {\n src: [\"order completed\"],\n dest: \"purchase\",\n requiredParams: [requiredEventParameters.ProductId, requiredEventParameters.ProductName],\n hasItem: true,\n includeList: [eventParametersConfigArray.Affiliation, eventParametersConfigArray.Coupon, eventParametersConfigArray.Currency, eventParametersConfigArray.CheckoutId, eventParametersConfigArray.Shipping, eventParametersConfigArray.Tax, eventParametersConfigArray.Total]\n }, {\n src: [\"order refunded\"],\n dest: \"refund\",\n hasItem: true,\n includeList: [eventParametersConfigArray.Affiliation, eventParametersConfigArray.Coupon, eventParametersConfigArray.Currency, eventParametersConfigArray.CheckoutId, eventParametersConfigArray.Shipping, eventParametersConfigArray.Tax, eventParametersConfigArray.Total]\n },\n /* Coupon Section\n No Coupon Events present in GA4\n /---------- */\n // Wishlist Section\n {\n src: [\"product added to wishlist\"],\n dest: \"add_to_wishlist\",\n requiredParams: [requiredEventParameters.ProductId, requiredEventParameters.ProductName],\n hasItem: true,\n includeList: [eventParametersConfigArray.Currency, eventParametersConfigArray.Total]\n }, //-------\n // Sharing Section\n {\n src: [\"product shared\"],\n dest: \"share\",\n hasItem: false,\n onlyIncludeParams: includeParams.ProductShare\n }, {\n src: [\"cart shared\"],\n dest: \"share\",\n hasItem: false,\n onlyIncludeParams: includeParams.CartShare\n } //---------\n ];\n\n var pageEventParametersConfigArray = [{\n src: \"path\",\n dest: \"page_location\"\n }, {\n src: \"referrer\",\n dest: \"page_referrer\"\n }, {\n src: \"title\",\n dest: \"page_title\"\n }];\n\n /**\n * Check if event name is not one of the following reserved names\n * @param {*} name\n */\n\n function isReservedName(name) {\n var reservedEventNames = [\"ad_activeview\", \"ad_click\", \"ad_exposure\", \"ad_impression\", \"ad_query\", \"adunit_exposure\", \"app_clear_data\", \"app_install\", \"app_update\", \"app_remove\", \"error\", \"first_open\", \"first_visit\", \"in_app_purchase\", \"notification_dismiss\", \"notification_foreground\", \"notification_open\", \"notification_receive\", \"os_update\", \"screen_view\", \"session_start\", \"user_engagement\"];\n return reservedEventNames.includes(name);\n }\n /**\n * map rudder event name to ga4 ecomm event name and return array\n * @param {*} event\n */\n\n\n function getDestinationEventName(event) {\n return eventNamesConfigArray.filter(function (p) {\n return p.src.includes(event.toLowerCase());\n });\n }\n /**\n * Create item array and add into destination parameters\n * If 'items' prop is present push new key value into it else create a new and push data\n * 'items' -> name of GA4 Ecommerce property name.\n * For now its hard coded, we can think of some better soln. later.\n * @param {*} dest\n * @param {*} key\n * @param {*} value\n */\n\n\n function createItemProperty(dest, key, value) {\n var destinationProperties = dest;\n\n if (!destinationProperties.items) {\n destinationProperties.items = [];\n destinationProperties.items.push(_defineProperty({}, key, value));\n } else {\n destinationProperties.items[0][key] = value;\n }\n\n return destinationProperties;\n }\n /**\n * Check if your payload contains required parameters to map to ga4 ecomm\n * @param {*} includeRequiredParams this can be boolean or an array or required object\n * @param {*} key\n * @param {*} src\n */\n\n\n function hasRequiredParameters(props, eventMappingObj) {\n var requiredParams = eventMappingObj.requiredParams || false;\n if (!requiredParams) return true;\n\n if (!Array.isArray(requiredParams)) {\n if (props[requiredParams]) {\n return true;\n }\n\n return false;\n }\n\n for (var i in props.items) {\n for (var p in requiredParams) {\n if (!props.items[i][requiredParams[p]]) {\n return false;\n }\n }\n }\n\n return true;\n }\n /**\n * TO DO Future Improvement ::::\n * Here we only support mapping single level object mapping.\n * Implement using recursion to handle multi level prop mapping.\n * @param {*} props { product_id: 123456_abcdef, name: \"chess-board\", list_id: \"ls_abcdef\", category: games }\n * @param {*} destParameterConfig\n * Defined Parameter present GA4/utils.js ex: [{ src: \"category\", dest: \"item_list_name\", inItems: true }]\n * @param {*} includeRequiredParams contains object of required parameter to be mapped from source payload\n * output: {\n \"item_list_id\": \"ls_abcdef\",\n \"items\": [\n {\n \"item_id\": \"123456_abcdef\",\n \"item_name\": \"chess-board\",\n \"item_list_id\": \"ls_abc\",\n \"item_list_name\": \"games\"\n }\n ],\n \"item_list_name\": \"games\"\n }\n */\n\n\n function getDestinationEventProperties(props, destParameterConfig) {\n var hasItem = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var destinationProperties = {};\n Object.keys(props).forEach(function (key) {\n destParameterConfig.forEach(function (param) {\n if (key === param.src) {\n // handle case where the key needs to go inside items as well as top level params in GA4\n if (param.inItems && hasItem) {\n destinationProperties = createItemProperty(destinationProperties, param.dest, props[key]);\n }\n\n destinationProperties[param.dest] = props[key]; // eslint-disable-next-line no-param-reassign\n\n delete props[key];\n }\n });\n });\n return destinationProperties;\n }\n /**\n * Map rudder products arrays payload to ga4 ecomm items array\n * @param {*} products\n * @param {*} item\n */\n\n\n function getDestinationItemProperties(products, item) {\n var items = [];\n var obj = {};\n\n if (type(products) !== \"array\") {\n logger.debug(\"Event payload doesn't have products array\");\n } else {\n // get the dest keys from itemParameters config\n // append the already created item object keys (this is done to get the keys that are actually top level props in Rudder payload but GA expects them under items too)\n products.forEach(function (p) {\n obj = _objectSpread2(_objectSpread2({}, getDestinationEventProperties(p, itemParametersConfigArray)), item && type(item) === \"array\" && item[0] || {});\n items.push(obj);\n });\n }\n\n return items;\n }\n /**\n * Generate ga4 page_view events payload\n * @param {*} props\n */\n\n\n function getPageViewProperty(props) {\n return getDestinationEventProperties(props, pageEventParametersConfigArray);\n }\n\n var GA4 = /*#__PURE__*/function () {\n function GA4(config, analytics) {\n _classCallCheck(this, GA4);\n\n this.measurementId = config.measurementId;\n this.analytics = analytics;\n this.sendUserId = config.sendUserId || false;\n this.blockPageView = config.blockPageViewEvent || false;\n this.extendPageViewParams = config.extendPageViewParams || false;\n this.name = \"GA4\";\n }\n\n _createClass(GA4, [{\n key: \"loadScript\",\n value: function loadScript(measurementId, userId) {\n window.dataLayer = window.dataLayer || [];\n\n window.gtag = window.gtag || function gt() {\n // eslint-disable-next-line prefer-rest-params\n window.dataLayer.push(arguments);\n };\n\n window.gtag(\"js\", new Date()); // This condition is not working, even after disabling page view\n // page_view is even getting called on page load\n\n if (this.blockPageView) {\n if (this.sendUserId) {\n window.gtag(\"config\", measurementId, {\n user_id: userId,\n send_page_view: false\n });\n } else {\n window.gtag(\"config\", measurementId, {\n send_page_view: false\n });\n }\n } else if (this.sendUserId) {\n window.gtag(\"config\", measurementId, {\n user_id: userId\n });\n } else {\n window.gtag(\"config\", measurementId);\n }\n\n ScriptLoader(\"google-analytics 4\", \"https://www.googletagmanager.com/gtag/js?id=\".concat(measurementId));\n }\n }, {\n key: \"init\",\n value: function init() {\n // To do :: check how custom dimension and metrics is used\n var userId = this.analytics.userId || this.analytics.anonymousId;\n this.loadScript(this.measurementId, userId);\n }\n /* utility functions ---Start here --- */\n\n }, {\n key: \"isLoaded\",\n value: function isLoaded() {\n return !!(window.gtag && window.gtag.push !== Array.prototype.push);\n }\n }, {\n key: \"isReady\",\n value: function isReady() {\n return !!(window.gtag && window.gtag.push !== Array.prototype.push);\n }\n /* utility functions --- Ends here --- */\n\n /**\n * Function to get destination properties for both event parameters and items array if present\n * For top level properties, include only those properties that are in the includeList\n * @param {*} properties\n * @param {*} hasItem\n * @param {*} products\n * @param {*} includeList\n */\n\n }, {\n key: \"getdestinationProperties\",\n value: function getdestinationProperties(properties, hasItem, products, includeList) {\n var destinationProperties = {};\n destinationProperties = getDestinationEventProperties(properties, includeList, hasItem);\n\n if (hasItem) {\n // only for events where GA requires an items array to be sent\n // get the product related destination keys || if products is not present use the rudder message properties to get the product related destination keys\n destinationProperties.items = getDestinationItemProperties(products || [properties], destinationProperties.items);\n }\n\n return destinationProperties;\n }\n /**\n * Only include params that are present in given mapping config for things like Cart/Product shared, Product/Products shared\n * @param {*} params\n * @param {*} properties\n */\n\n }, {\n key: \"getIncludedParameters\",\n value: function getIncludedParameters(params, properties) {\n var destinationProperties = {};\n\n if (type(params) === \"object\") {\n var defaults = params.defaults,\n mappings = params.mappings;\n\n if (type(defaults) === \"object\") {\n Object.keys(defaults).forEach(function (key) {\n destinationProperties[key] = defaults[key];\n });\n }\n\n if (type(mappings) === \"object\") {\n Object.keys(mappings).forEach(function (key) {\n destinationProperties[mappings[key]] = properties[key];\n });\n }\n }\n\n return destinationProperties;\n }\n }, {\n key: \"sendGAEvent\",\n value: function sendGAEvent(event, parameters, checkRequiredParameters, eventMappingObj) {\n if (checkRequiredParameters) {\n if (!hasRequiredParameters(parameters, eventMappingObj)) {\n throw Error(\"Payload must have required parameters..\");\n }\n }\n\n window.gtag(\"event\", event, parameters);\n }\n }, {\n key: \"handleEventMapper\",\n value: function handleEventMapper(eventMappingObj, properties, products) {\n var destinationProperties = {};\n var event = eventMappingObj.dest;\n\n if (eventMappingObj.onlyIncludeParams) {\n /* Only include params that are present in given mapping config for things like Cart/Product shared, Product/Products shared\n */\n var includeParams = eventMappingObj.onlyIncludeParams;\n destinationProperties = this.getIncludedParameters(includeParams, properties);\n } else {\n destinationProperties = this.getdestinationProperties(properties, eventMappingObj.hasItem, products, eventMappingObj.includeList);\n }\n\n this.sendGAEvent(event, destinationProperties, true, eventMappingObj);\n }\n /**\n *\n * @param {*} rudderElement\n */\n\n }, {\n key: \"track\",\n value: function track(rudderElement) {\n var _this = this;\n\n var event = rudderElement.message.event;\n var properties = rudderElement.message.properties;\n var products = properties.products;\n\n if (!event || isReservedName(event)) {\n throw Error(\"Cannot call un-named/reserved named track event\");\n } // get GA4 event name and corresponding configs defined to add properties to that event\n\n\n var eventMappingArray = getDestinationEventName(event);\n\n if (eventMappingArray && eventMappingArray.length) {\n eventMappingArray.forEach(function (events) {\n _this.handleEventMapper(events, properties, products);\n });\n } else {\n this.sendGAEvent(event, flattenJsonPayload(properties), false);\n }\n }\n }, {\n key: \"identify\",\n value: function identify(rudderElement) {\n window.gtag(\"set\", \"user_properties\", flattenJsonPayload(this.analytics.userTraits));\n\n if (this.sendUserId && rudderElement.message.userId) {\n var userId = this.analytics.userId || this.analytics.anonymousId;\n\n if (this.blockPageView) {\n window.gtag(\"config\", this.measurementId, {\n user_id: userId,\n send_page_view: false\n });\n } else {\n window.gtag(\"config\", this.measurementId, {\n user_id: userId\n });\n }\n }\n\n logger.debug(\"in GoogleAnalyticsManager identify\");\n }\n }, {\n key: \"page\",\n value: function page(rudderElement) {\n var pageProps = rudderElement.message.properties;\n if (!pageProps) return;\n pageProps = flattenJsonPayload(pageProps);\n\n if (this.extendPageViewParams) {\n window.gtag(\"event\", \"page_view\", _objectSpread2(_objectSpread2({}, pageProps), getPageViewProperty(pageProps)));\n } else {\n window.gtag(\"event\", \"page_view\", getPageViewProperty(pageProps));\n }\n }\n }]);\n\n return GA4;\n }();\n\n var traitsMap = {\n firstName: \"first_name\",\n lastName: \"last_name\",\n firstname: \"first_name\",\n lastname: \"last_name\",\n email: \"email\",\n phone: \"mobile\",\n name: \"user_name\",\n username: \"user_name\",\n userName: \"user_name\",\n gender: \"gender\",\n birthday: \"birthday\",\n id: null\n };\n\n var MoEngage = /*#__PURE__*/function () {\n function MoEngage(config, analyticsinstance) {\n _classCallCheck(this, MoEngage);\n\n this.isLoaded = function () {\n logger.debug(\"in MoEngage isLoaded\");\n return !!window.moeBannerText;\n };\n\n this.isReady = function () {\n logger.debug(\"in MoEngage isReady\");\n return !!window.moeBannerText;\n };\n\n this.apiId = config.apiId;\n this.debug = config.debug;\n this.region = config.region;\n this.name = \"MoEngage\";\n this.analyticsinstance = analyticsinstance;\n }\n\n _createClass(MoEngage, [{\n key: \"init\",\n value: function init() {\n var self = this;\n logger.debug(\"===in init MoEnagage===\"); // loading the script for moengage web sdk\n\n /* eslint-disable */\n\n (function (i, s, o, g, r, a, m, n) {\n i.moengage_object = r;\n var t = {};\n\n var q = function q(f) {\n return function () {\n (i.moengage_q = i.moengage_q || []).push({\n f: f,\n a: arguments\n });\n };\n };\n\n var f = [\"track_event\", \"add_user_attribute\", \"add_first_name\", \"add_last_name\", \"add_email\", \"add_mobile\", \"add_user_name\", \"add_gender\", \"add_birthday\", \"destroy_session\", \"add_unique_user_id\", \"moe_events\", \"call_web_push\", \"track\", \"location_type_attribute\"];\n var h = {\n onsite: [\"getData\", \"registerCallback\"]\n };\n\n for (var k in f) {\n t[f[k]] = q(f[k]);\n }\n\n for (var k in h) {\n for (var l in h[k]) {\n null == t[k] && (t[k] = {}), t[k][h[k][l]] = q(k + \".\" + h[k][l]);\n }\n }\n\n a = s.createElement(o);\n m = s.getElementsByTagName(o)[0];\n a.async = 1;\n a.src = g;\n m.parentNode.insertBefore(a, m);\n\n i.moe = i.moe || function () {\n n = arguments[0];\n return t;\n };\n\n a.onload = function () {\n if (n) {\n i[r] = moe(n);\n }\n };\n })(window, document, \"script\", document.location.protocol === \"https:\" ? \"https://cdn.moengage.com/webpush/moe_webSdk.min.latest.js\" : \"http://cdn.moengage.com/webpush/moe_webSdk.min.latest.js\", \"Moengage\");\n /* eslint-enable */\n // setting the region if us then not needed.\n\n\n if (this.region !== \"US\") {\n self.moeClient = window.moe({\n app_id: this.apiId,\n debug_logs: this.debug ? 1 : 0,\n cluster: this.region === \"EU\" ? \"eu\" : \"in\"\n });\n } else {\n self.moeClient = window.moe({\n app_id: this.apiId,\n debug_logs: this.debug ? 1 : 0\n });\n }\n\n this.initialUserId = this.analyticsinstance.userId;\n }\n }, {\n key: \"track\",\n value: function track(rudderElement) {\n logger.debug(\"inside track\"); // Check if the user id is same as previous session if not a new session will start\n\n if (!rudderElement.message) {\n logger.error(\"Payload not correct\");\n return;\n }\n\n var _rudderElement$messag = rudderElement.message,\n event = _rudderElement$messag.event,\n properties = _rudderElement$messag.properties,\n userId = _rudderElement$messag.userId;\n\n if (userId) {\n if (this.initialUserId !== userId) {\n this.reset();\n }\n } // track event : https://docs.moengage.com/docs/tracking-events\n\n\n if (!event) {\n logger.error(\"Event name not present\");\n return;\n }\n\n if (properties) {\n this.moeClient.track_event(event, properties);\n } else {\n this.moeClient.track_event(event);\n }\n }\n }, {\n key: \"reset\",\n value: function reset() {\n logger.debug(\"inside reset\"); // reset the user id\n\n this.initialUserId = this.analyticsinstance.userId;\n this.moeClient.destroy_session();\n }\n }, {\n key: \"identify\",\n value: function identify(rudderElement) {\n var self = this;\n var userId = rudderElement.message.userId;\n var traits = null;\n\n if (rudderElement.message.context) {\n traits = rudderElement.message.context.traits;\n } // check if user id is same or not\n\n\n if (this.initialUserId !== userId) {\n this.reset();\n } // if user is present map\n\n\n if (userId) {\n this.moeClient.add_unique_user_id(userId);\n } // track user attributes : https://docs.moengage.com/docs/tracking-web-user-attributes\n\n\n if (traits) {\n each_1(function add(value, key) {\n // check if name is present\n if (key === \"name\") {\n self.moeClient.add_user_name(value);\n }\n\n if (Object.prototype.hasOwnProperty.call(traitsMap, key)) {\n var method = \"add_\".concat(traitsMap[key]);\n self.moeClient[method](value);\n } else {\n self.moeClient.add_user_attribute(key, value);\n }\n }, traits);\n }\n }\n }]);\n\n return MoEngage;\n }();\n\n var Amplitude = /*#__PURE__*/function () {\n function Amplitude(config, analytics) {\n var _this = this;\n\n _classCallCheck(this, Amplitude);\n\n this.name = \"AM\";\n this.analytics = analytics;\n this.apiKey = config.apiKey;\n this.trackAllPages = config.trackAllPages || false;\n this.trackNamedPages = config.trackNamedPages || false;\n this.trackCategorizedPages = config.trackCategorizedPages || false;\n this.trackUtmProperties = config.trackUtmProperties || false;\n this.trackReferrer = config.trackReferrer || false;\n this.batchEvents = config.batchEvents || false;\n this.eventUploadThreshold = +config.eventUploadThreshold || 30;\n this.eventUploadPeriodMillis = +config.eventUploadPeriodMillis || 30000;\n this.forceHttps = config.forceHttps || false;\n this.trackGclid = config.trackGclid || false;\n this.saveParamsReferrerOncePerSession = config.saveParamsReferrerOncePerSession || false;\n this.deviceIdFromUrlParam = config.deviceIdFromUrlParam || false; // this.mapQueryParams = config.mapQueryParams;\n\n this.trackRevenuePerProduct = config.trackRevenuePerProduct || false;\n this.preferAnonymousIdForDeviceId = config.preferAnonymousIdForDeviceId || false;\n this.traitsToSetOnce = [];\n this.traitsToIncrement = [];\n this.appendFieldsToEventProps = config.appendFieldsToEventProps || false;\n this.unsetParamsReferrerOnNewSession = config.unsetParamsReferrerOnNewSession || false;\n this.trackProductsOnce = config.trackProductsOnce || false;\n this.versionName = config.versionName;\n\n if (config.traitsToSetOnce && config.traitsToSetOnce.length > 0) {\n config.traitsToSetOnce.forEach(function (element) {\n if (element && element.traits && element.traits !== \"\") {\n _this.traitsToSetOnce.push(element.traits);\n }\n });\n }\n\n if (config.traitsToIncrement && config.traitsToIncrement.length > 0) {\n config.traitsToIncrement.forEach(function (element) {\n if (element && element.traits && element.traits !== \"\") {\n _this.traitsToIncrement.push(element.traits);\n }\n });\n }\n }\n\n _createClass(Amplitude, [{\n key: \"init\",\n value: function init() {\n if (this.analytics.loadIntegration) {\n (function (e, t) {\n var n = e.amplitude || {\n _q: [],\n _iq: {}\n };\n var r = t.createElement(\"script\");\n r.type = \"text/javascript\";\n r.integrity = \"sha384-girahbTbYZ9tT03PWWj0mEVgyxtZoyDF9KVZdL+R53PP5wCY0PiVUKq0jeRlMx9M\";\n r.crossOrigin = \"anonymous\";\n r.async = true;\n r.src = \"https://cdn.amplitude.com/libs/amplitude-7.2.1-min.gz.js\";\n\n r.onload = function () {\n if (!e.amplitude.runQueuedFunctions) {\n console.log(\"[Amplitude] Error: could not load SDK\");\n }\n };\n\n var i = t.getElementsByTagName(\"script\")[0];\n i.parentNode.insertBefore(r, i);\n\n function s(e, t) {\n e.prototype[t] = function () {\n this._q.push([t].concat(Array.prototype.slice.call(arguments, 0)));\n\n return this;\n };\n }\n\n var o = function o() {\n this._q = [];\n return this;\n };\n\n var a = [\"add\", \"append\", \"clearAll\", \"prepend\", \"set\", \"setOnce\", \"unset\"];\n\n for (var c = 0; c < a.length; c++) {\n s(o, a[c]);\n }\n\n n.Identify = o;\n\n var u = function u() {\n this._q = [];\n return this;\n };\n\n var l = [\"setProductId\", \"setQuantity\", \"setPrice\", \"setRevenueType\", \"setEventProperties\"];\n\n for (var p = 0; p < l.length; p++) {\n s(u, l[p]);\n }\n\n n.Revenue = u;\n var d = [\"init\", \"logEvent\", \"logRevenue\", \"setUserId\", \"setUserProperties\", \"setOptOut\", \"setVersionName\", \"setDomain\", \"setDeviceId\", \"enableTracking\", \"setGlobalUserProperties\", \"identify\", \"clearUserProperties\", \"setGroup\", \"logRevenueV2\", \"regenerateDeviceId\", \"groupIdentify\", \"onInit\", \"logEventWithTimestamp\", \"logEventWithGroups\", \"setSessionId\", \"resetSessionId\"];\n\n function v(e) {\n function t(t) {\n e[t] = function () {\n e._q.push([t].concat(Array.prototype.slice.call(arguments, 0)));\n };\n }\n\n for (var _n = 0; _n < d.length; _n++) {\n t(d[_n]);\n }\n }\n\n v(n);\n\n n.getInstance = function (e) {\n e = (!e || e.length === 0 ? \"$default_instance\" : e).toLowerCase();\n\n if (!n._iq.hasOwnProperty(e)) {\n n._iq[e] = {\n _q: []\n };\n v(n._iq[e]);\n }\n\n return n._iq[e];\n };\n\n e.amplitude = n;\n })(window, document);\n }\n\n var initOptions = {\n includeUtm: this.trackUtmProperties,\n batchEvents: this.batchEvents,\n eventUploadThreshold: this.eventUploadThreshold,\n eventUploadPeriodMillis: this.eventUploadPeriodMillis,\n forceHttps: this.forceHttps,\n includeGclid: this.trackGclid,\n includeReferrer: this.trackReferrer,\n saveParamsReferrerOncePerSession: this.saveParamsReferrerOncePerSession,\n deviceIdFromUrlParam: this.deviceIdFromUrlParam,\n unsetParamsReferrerOnNewSession: this.unsetParamsReferrerOnNewSession,\n deviceId: this.preferAnonymousIdForDeviceId && this.analytics && this.analytics.getAnonymousId()\n };\n window.amplitude.getInstance().init(this.apiKey, null, initOptions);\n\n if (this.versionName) {\n window.amplitude.getInstance().setVersionName(this.versionName);\n }\n }\n }, {\n key: \"identify\",\n value: function identify(rudderElement) {\n logger.debug(\"in Amplitude identify\");\n this.setDeviceId(rudderElement); // rudderElement.message.context will always be present as part of identify event payload.\n\n var traits = rudderElement.message.context.traits;\n var userId = rudderElement.message.userId;\n\n if (userId) {\n window.amplitude.getInstance().setUserId(userId);\n }\n\n if (traits) {\n var amplitudeIdentify = new window.amplitude.Identify();\n\n for (var trait in traits) {\n if (!traits.hasOwnProperty(trait)) {\n continue;\n }\n\n var shouldIncrement = this.traitsToIncrement.indexOf(trait) >= 0;\n var shouldSetOnce = this.traitsToSetOnce.indexOf(trait) >= 0;\n\n if (shouldIncrement) {\n amplitudeIdentify.add(trait, traits[trait]);\n }\n\n if (shouldSetOnce) {\n amplitudeIdentify.setOnce(trait, traits[trait]);\n }\n\n if (!shouldIncrement && !shouldSetOnce) {\n amplitudeIdentify.set(trait, traits[trait]);\n }\n }\n\n window.amplitude.identify(amplitudeIdentify);\n }\n }\n }, {\n key: \"track\",\n value: function track(rudderElement) {\n logger.debug(\"in Amplitude track\");\n this.setDeviceId(rudderElement);\n var properties = rudderElement.message.properties; // message.properties will always be present as part of track event.\n\n var products = properties.products;\n var clonedTrackEvent = {};\n\n _extends(clonedTrackEvent, rudderElement.message); // For track products once, we will send the products in a single call.\n\n\n if (this.trackProductsOnce) {\n if (products && type(products) == \"array\") {\n // track all the products in a single event.\n var allProducts = [];\n var productKeys = Object.keys(products);\n\n for (var index = 0; index < productKeys.length; index++) {\n var product = {};\n product = this.getProductAttributes(products[index]);\n allProducts.push(product);\n }\n\n clonedTrackEvent.properties.products = allProducts;\n this.logEventAndCorrespondingRevenue(clonedTrackEvent, this.trackRevenuePerProduct); // we do not want to track revenue as a whole if trackRevenuePerProduct is enabled.\n // If trackRevenuePerProduct is enabled, track revenues per product.\n\n if (this.trackRevenuePerProduct) {\n var trackEventMessage = {};\n\n _extends(trackEventMessage, clonedTrackEvent);\n\n this.trackingEventAndRevenuePerProduct(trackEventMessage, products, false); // also track revenue only and not event per product.\n }\n } else {\n // track event and revenue as a whole as products array is not available.\n this.logEventAndCorrespondingRevenue(clonedTrackEvent, false);\n }\n\n return;\n }\n\n if (products && type(products) == \"array\") {\n // track events iterating over product array individually.\n // Log the actuall event without products array. We will subsequently track each product with 'Product Purchased' event.\n delete clonedTrackEvent.properties.products;\n this.logEventAndCorrespondingRevenue(clonedTrackEvent, this.trackRevenuePerProduct);\n var _trackEventMessage = {};\n\n _extends(_trackEventMessage, clonedTrackEvent); // track products and revenue per product basis.\n\n\n this.trackingEventAndRevenuePerProduct(_trackEventMessage, products, true); // track both event and revenue on per product basis.\n } else {\n // track event and revenue as a whole as no product array is present.\n this.logEventAndCorrespondingRevenue(clonedTrackEvent, false);\n }\n }\n }, {\n key: \"trackingEventAndRevenuePerProduct\",\n value: function trackingEventAndRevenuePerProduct(trackEventMessage, products, shouldTrackEventPerProduct) {\n var _trackEventMessage$pr = trackEventMessage.properties,\n revenue = _trackEventMessage$pr.revenue,\n revenueType = _trackEventMessage$pr.revenueType,\n revenue_type = _trackEventMessage$pr.revenue_type;\n revenueType = revenueType || revenue_type;\n\n for (var index = 0; index < products.length; index++) {\n var product = products[index];\n trackEventMessage.properties = product;\n trackEventMessage.event = \"Product Purchased\";\n\n if (this.trackRevenuePerProduct) {\n if (revenueType) {\n trackEventMessage.properties.revenueType = revenueType;\n }\n\n if (revenue) {\n trackEventMessage.properties.revenue = revenue;\n }\n\n this.trackRevenue(trackEventMessage);\n }\n\n if (shouldTrackEventPerProduct) {\n this.logEventAndCorrespondingRevenue(trackEventMessage, true);\n }\n }\n } // Always to be called for general and top level events (and not product level)\n // For these events we expect top level revenue property.\n\n }, {\n key: \"logEventAndCorrespondingRevenue\",\n value: function logEventAndCorrespondingRevenue(rudderMessage, dontTrackRevenue) {\n var properties = rudderMessage.properties,\n event = rudderMessage.event;\n window.amplitude.getInstance().logEvent(event, properties);\n\n if (properties.revenue && !dontTrackRevenue) {\n this.trackRevenue(rudderMessage);\n }\n }\n /**\n * track page events base on destination settings. If more than one settings is enabled, multiple events may be logged for a single page event.\n * For example, if category of a page is present, and both trackAllPages and trackCategorizedPages are enabled, then 2 events will be tracked for\n * a single pageview - 'Loaded a page' and `Viewed page ${category}`.\n *\n * @memberof Amplitude\n */\n\n }, {\n key: \"page\",\n value: function page(rudderElement) {\n logger.debug(\"in Amplitude page\");\n this.setDeviceId(rudderElement);\n var _rudderElement$messag = rudderElement.message,\n properties = _rudderElement$messag.properties,\n name = _rudderElement$messag.name,\n category = _rudderElement$messag.category; // all pages\n\n if (this.trackAllPages) {\n var event = \"Loaded a page\";\n amplitude.getInstance().logEvent(event, properties);\n } // categorized pages\n\n\n if (category && this.trackCategorizedPages) {\n var _event = \"Viewed page \".concat(category);\n\n amplitude.getInstance().logEvent(_event, properties);\n } // named pages\n\n\n if (name && this.trackNamedPages) {\n var _event2 = \"Viewed page \".concat(name);\n\n amplitude.getInstance().logEvent(_event2, properties);\n }\n }\n }, {\n key: \"group\",\n value: function group(rudderElement) {\n logger.debug(\"in Amplitude group\");\n this.setDeviceId(rudderElement);\n var _rudderElement$messag2 = rudderElement.message,\n groupId = _rudderElement$messag2.groupId,\n traits = _rudderElement$messag2.traits;\n var groupTypeTrait = this.groupTypeTrait;\n var groupValueTrait = this.groupValueTrait;\n\n if (groupTypeTrait && groupValueTrait && traits) {\n var groupType = traits[groupTypeTrait];\n var groupValue = traits[groupValueTrait];\n }\n\n if (groupType && groupValue) {\n window.amplitude.getInstance().setGroup(groupTypeTrait, groupValueTrait);\n } else if (groupId) {\n // Similar as segment but not sure whether we need it as our cloud mode supports only the above if block\n window.amplitude.getInstance().setGroup(\"[Rudderstack] Group\", groupId);\n } // https://developers.amplitude.com/docs/setting-user-properties#setting-group-properties\n // no other api for setting group properties for javascript\n\n }\n }, {\n key: \"setDeviceId\",\n value: function setDeviceId(rudderElement) {\n var anonymousId = rudderElement.message.anonymousId;\n\n if (this.preferAnonymousIdForDeviceId && anonymousId) {\n window.amplitude.getInstance().setDeviceId(anonymousId);\n }\n }\n /**\n * Tracks revenue with logRevenueV2() api based on revenue/price present in event payload. If neither of revenue/price present, it returns.\n * The event payload may contain ruddermessage of an original track event payload (from trackEvent method) or it is derived from a product\n * array (from trackingRevenuePerProduct) in an e-comm event.\n *\n * @param {*} rudderMessage\n * @returns\n * @memberof Amplitude\n */\n\n }, {\n key: \"trackRevenue\",\n value: function trackRevenue(rudderMessage) {\n var mapRevenueType = {\n \"order completed\": \"Purchase\",\n \"completed order\": \"Purchase\",\n \"product purchased\": \"Purchase\"\n };\n var properties = rudderMessage.properties,\n event = rudderMessage.event;\n var price = properties.price,\n productId = properties.productId,\n quantity = properties.quantity,\n revenue = properties.revenue,\n product_id = properties.product_id;\n var revenueType = properties.revenueType || properties.revenue_type || mapRevenueType[event.toLowerCase()];\n productId = productId || product_id; // If neither revenue nor price is present, then return\n // else send price and quantity from properties to amplitude\n // If price not present set price as revenue's value and force quantity to be 1.\n // Ultimately set quantity to 1 if not already present from above logic.\n\n if (!revenue && !price) {\n console.debug(\"revenue or price is not present.\");\n return;\n }\n\n if (!price) {\n price = revenue;\n quantity = 1;\n }\n\n if (!quantity) {\n quantity = 1;\n }\n\n var amplitudeRevenue = new window.amplitude.Revenue().setPrice(price).setQuantity(quantity).setEventProperties(properties);\n\n if (revenueType) {\n amplitudeRevenue.setRevenueType(revenueType);\n }\n\n if (productId) {\n amplitudeRevenue.setProductId(productId);\n }\n\n window.amplitude.getInstance().logRevenueV2(amplitudeRevenue);\n }\n }, {\n key: \"getProductAttributes\",\n value: function getProductAttributes(product) {\n return {\n productId: product.productId || product.product_id,\n sku: product.sku,\n name: product.name,\n price: product.price,\n quantity: product.quantity,\n category: product.category\n };\n }\n }, {\n key: \"isLoaded\",\n value: function isLoaded() {\n logger.debug(\"in Amplitude isLoaded\");\n return !!(window.amplitude && window.amplitude.getInstance().options);\n }\n }, {\n key: \"isReady\",\n value: function isReady() {\n return !!(window.amplitude && window.amplitude.getInstance().options);\n }\n }]);\n\n return Amplitude;\n }();\n\n var Pendo = /*#__PURE__*/function () {\n function Pendo(config, analytics) {\n _classCallCheck(this, Pendo);\n\n this.analytics = analytics;\n this.apiKey = !config.apiKey ? \"\" : config.apiKey;\n this.name = \"PENDO\";\n logger.debug(\"Config \", config);\n }\n\n _createClass(Pendo, [{\n key: \"init\",\n value: function init() {\n (function (apiKey) {\n (function (p, e, n, d, o) {\n var v, w, x, y, z;\n o = p[d] = p[d] || {};\n o._q = [];\n v = [\"initialize\", \"identify\", \"updateOptions\", \"pageLoad\", \"track\"];\n\n for (w = 0, x = v.length; w < x; ++w) {\n (function (m) {\n o[m] = o[m] || function () {\n o._q[m === v[0] ? \"unshift\" : \"push\"]([m].concat([].slice.call(arguments, 0)));\n };\n })(v[w]);\n }\n\n y = e.createElement(n);\n y.async = !0;\n y.src = \"https://cdn.pendo.io/agent/static/\".concat(apiKey, \"/pendo.js\");\n z = e.getElementsByTagName(n)[0];\n z.parentNode.insertBefore(y, z);\n })(window, document, \"script\", \"pendo\");\n })(this.apiKey);\n\n this.initializeMe();\n logger.debug(\"===in init Pendo===\");\n }\n }, {\n key: \"initializeMe\",\n value: function initializeMe() {\n var userId = this.analytics.userId || this.constructPendoAnonymousId(this.analytics.anonymousId);\n\n var accountObj = _objectSpread2({\n id: this.analytics.groupId\n }, this.analytics.groupTraits);\n\n var visitorObj = _objectSpread2({\n id: userId\n }, this.analytics.userTraits);\n\n window.pendo.initialize({\n account: accountObj,\n visitor: visitorObj\n });\n }\n /* utility functions ---Start here --- */\n\n }, {\n key: \"isLoaded\",\n value: function isLoaded() {\n return !!(window.pendo && window.pendo.push !== Array.prototype.push);\n }\n }, {\n key: \"isReady\",\n value: function isReady() {\n return !!(window.pendo && window.pendo.push !== Array.prototype.push);\n }\n }, {\n key: \"constructPendoAnonymousId\",\n value: function constructPendoAnonymousId(id) {\n return \"_PENDO_T_\".concat(id);\n }\n /* utility functions --- Ends here --- */\n\n /*\n * PENDO MAPPED FUNCTIONS :: identify, track, group\n */\n\n /* Pendo's identify call works intelligently, once u have identified a visitor/user,\n *or associated a visitor to a group/account then Pendo save this data in local storage and\n *any further upcoming calls are done taking user info from local.\n * To track user perndo maps user to Visitor in Pendo.\n */\n\n }, {\n key: \"identify\",\n value: function identify(rudderElement) {\n var visitorObj = {};\n var accountObj = {};\n var groupId = this.analytics.groupId;\n var id = this.analytics.userId || this.constructPendoAnonymousId(this.analytics.anonymousId);\n visitorObj = _objectSpread2({\n id: id\n }, this.analytics.userTraits);\n\n if (groupId) {\n accountObj = _objectSpread2({\n id: groupId\n }, this.analytics.groupTraits);\n }\n\n window.pendo.identify({\n visitor: visitorObj,\n account: accountObj\n });\n }\n /*\n *Group call maps to an account for which visitor belongs.\n *It is same as identify call but here we send account object.\n */\n\n }, {\n key: \"group\",\n value: function group(rudderElement) {\n var accountObj = {};\n var visitorObj = {};\n var _rudderElement$messag = rudderElement.message,\n userId = _rudderElement$messag.userId,\n traits = _rudderElement$messag.traits;\n accountObj.id = this.analytics.groupId || this.analytics.anonymousId;\n accountObj = _objectSpread2(_objectSpread2({}, accountObj), traits);\n\n if (userId) {\n visitorObj = _objectSpread2({\n id: userId\n }, rudderElement.message.context && rudderElement.message.context.traits);\n }\n\n window.pendo.identify({\n account: accountObj,\n visitor: visitorObj\n });\n }\n /* Once user is identified Pendo makes Track call to track user activity.\n */\n\n }, {\n key: \"track\",\n value: function track(rudderElement) {\n var event = rudderElement.message.event;\n\n if (!event) {\n throw Error(\"Cannot call un-named track event\");\n }\n\n var props = rudderElement.message.properties;\n window.pendo.track(event, props);\n }\n }]);\n\n return Pendo;\n }();\n\n var Lytics = /*#__PURE__*/function () {\n function Lytics(config) {\n _classCallCheck(this, Lytics);\n\n this.accountId = config.accountId;\n this.stream = config.stream;\n this.blockload = config.blockload;\n this.loadid = config.loadid;\n this.name = \"LYTICS\";\n }\n\n _createClass(Lytics, [{\n key: \"loadLyticsScript\",\n value: function loadLyticsScript() {\n (function () {\n\n var o = window.jstag || (window.jstag = {}),\n r = [];\n\n function n(e) {\n o[e] = function () {\n for (var n = arguments.length, t = new Array(n), i = 0; i < n; i++) {\n t[i] = arguments[i];\n }\n\n r.push([e, t]);\n };\n }\n\n n(\"send\"), n(\"mock\"), n(\"identify\"), n(\"pageView\"), n(\"unblock\"), n(\"getid\"), n(\"setid\"), n(\"loadEntity\"), n(\"getEntity\"), n(\"on\"), n(\"once\"), n(\"call\"), o.loadScript = function (n, t, i) {\n var e = document.createElement(\"script\");\n e.async = !0, e.src = n, e.onload = t, e.onerror = i;\n var o = document.getElementsByTagName(\"script\")[0],\n r = o && o.parentNode || document.head || document.body,\n c = o || r.lastChild;\n return null != c ? r.insertBefore(e, c) : r.appendChild(e), this;\n }, o.init = function n(t) {\n return this.config = t, this.loadScript(t.src, function () {\n if (o.init === n) throw new Error(\"Load error!\"); // eslint-disable-next-line no-unused-expressions\n\n o.init(o.config), // eslint-disable-next-line func-names\n function () {\n for (var n = 0; n < r.length; n++) {\n var t = r[n][0],\n i = r[n][1];\n o[t].apply(o, i);\n }\n\n r = void 0;\n }();\n }), this;\n };\n })(); // Define config and initialize Lytics tracking tag.\n\n\n window.jstag.init({\n loadid: this.loadid,\n blocked: this.blockload,\n stream: this.stream,\n sessecs: 1800,\n src: document.location.protocal === \"https:\" ? \"https://c.lytics.io/api/tag/\".concat(this.accountId, \"/latest.min.js\") : \"http://c.lytics.io/api/tag/\".concat(this.accountId, \"/latest.min.js\")\n });\n }\n }, {\n key: \"init\",\n value: function init() {\n this.loadLyticsScript();\n logger.debug(\"===in init Lytics===\");\n }\n }, {\n key: \"isLoaded\",\n value: function isLoaded() {\n logger.debug(\"in Lytics isLoaded\");\n logger.debug(!!(window.jstag && window.jstag.push !== Array.prototype.push));\n return !!(window.jstag && window.jstag.push !== Array.prototype.push);\n }\n }, {\n key: \"isReady\",\n value: function isReady() {\n logger.debug(\"in Lytics isReady\");\n return !!(window.jstag && window.jstag.push !== Array.prototype.push);\n }\n }, {\n key: \"identify\",\n value: function identify(rudderElement) {\n logger.debug(\"in Lytics identify\"); // eslint-disable-next-line camelcase\n\n var user_id = rudderElement.message.userId || rudderElement.message.anonymousId;\n var traits = rudderElement.message.context.traits;\n\n var payload = _objectSpread2({\n user_id: user_id\n }, traits);\n\n window.jstag.send(this.stream, payload);\n }\n }, {\n key: \"page\",\n value: function page(rudderElement) {\n logger.debug(\"in Lytics page\");\n var properties = rudderElement.message.properties;\n\n var payload = _objectSpread2({\n event: rudderElement.message.name\n }, properties);\n\n window.jstag.pageView(this.stream, payload);\n }\n }, {\n key: \"track\",\n value: function track(rudderElement) {\n logger.debug(\"in Lytics track\");\n var properties = rudderElement.message.properties;\n\n var payload = _objectSpread2({\n _e: rudderElement.message.event\n }, properties);\n\n window.jstag.send(this.stream, payload);\n }\n }]);\n\n return Lytics;\n }();\n\n var Appcues = /*#__PURE__*/function () {\n function Appcues(config) {\n _classCallCheck(this, Appcues);\n\n this.accountId = config.accountId;\n this.apiKey = config.apiKey;\n this.name = \"APPCUES\"; //this.sendToAllDestinations = config.sendToAll;\n }\n\n _createClass(Appcues, [{\n key: \"init\",\n value: function init() {\n logger.debug(\"===in init Appcues===\");\n ScriptLoader(\"appcues-id\", \"https://fast.appcues.com/\".concat(this.accountId, \".js\"));\n }\n }, {\n key: \"isLoaded\",\n value: function isLoaded() {\n logger.debug(\"in appcues isLoaded\");\n return !!window.Appcues;\n }\n }, {\n key: \"isReady\",\n value: function isReady() {\n logger.debug(\"in appcues isReady\"); // This block of code enables us to send Appcues Flow events to all the other destinations connected to the same source (we might use it in future)\n // if (this.sendToAllDestinations && window.Appcues) {\n // window.Appcues.on(\"all\", function(eventName, event) {\n // window.rudderanalytics.track(eventName, event, {\n // integrations: {\n // All: true,\n // APPCUES: false\n // }\n // });\n // });\n // }\n\n return !!window.Appcues;\n }\n }, {\n key: \"identify\",\n value: function identify(rudderElement) {\n var traits = rudderElement.message.context.traits;\n var userId = rudderElement.message.userId;\n\n if (userId) {\n window.Appcues.identify(userId, traits);\n } else {\n logger.error(\"user id is empty\");\n }\n }\n }, {\n key: \"track\",\n value: function track(rudderElement) {\n var eventName = rudderElement.message.event;\n var properties = rudderElement.message.properties;\n\n if (eventName) {\n window.Appcues.track(eventName, properties);\n } else {\n logger.error(\"event name is empty\");\n }\n }\n }, {\n key: \"page\",\n value: function page(rudderElement) {\n var _rudderElement$messag = rudderElement.message,\n properties = _rudderElement$messag.properties,\n name = _rudderElement$messag.name;\n window.Appcues.page(name, properties);\n } // To be uncommented after adding Reset feature to our SDK\n // reset() {\n // window.Appcues.reset();\n // }\n\n }]);\n\n return Appcues;\n }();\n\n var Posthog = /*#__PURE__*/function () {\n function Posthog(config, analytics) {\n var _this = this;\n\n _classCallCheck(this, Posthog);\n\n this.name = \"POSTHOG\";\n this.analytics = analytics;\n this.teamApiKey = config.teamApiKey;\n this.yourInstance = config.yourInstance || \"https://app.posthog.com\";\n this.autocapture = config.autocapture || false;\n this.capturePageView = config.capturePageView || false;\n this.disableSessionRecording = config.disableSessionRecording || false;\n this.disableCookie = config.disableCookie || false;\n this.propertyBlackList = [];\n this.xhrHeaders = {};\n\n if (config.xhrHeaders && config.xhrHeaders.length > 0) {\n config.xhrHeaders.forEach(function (header) {\n if (header && header.key && header.value && header.key.trim() != \"\" && header.value.trim() != \"\") {\n _this.xhrHeaders[header.key] = header.value;\n }\n });\n }\n\n if (config.propertyBlackList && config.propertyBlackList.length > 0) {\n config.propertyBlackList.forEach(function (element) {\n if (element && element.property && element.property.trim() != \"\") {\n _this.propertyBlackList.push(element.property);\n }\n });\n }\n }\n\n _createClass(Posthog, [{\n key: \"init\",\n value: function init() {\n !function (t, e) {\n var o, n, p, r;\n e.__SV || (window.posthog = e, e._i = [], e.init = function (i, s, a) {\n function g(t, e) {\n var o = e.split(\".\");\n 2 == o.length && (t = t[o[0]], e = o[1]), t[e] = function () {\n t.push([e].concat(Array.prototype.slice.call(arguments, 0)));\n };\n }\n\n (p = t.createElement(\"script\")).type = \"text/javascript\", p.async = !0, p.src = s.api_host + \"/static/array.js\", (r = t.getElementsByTagName(\"script\")[0]).parentNode.insertBefore(p, r);\n var u = e;\n\n for (void 0 !== a ? u = e[a] = [] : a = \"posthog\", u.people = u.people || [], u.toString = function (t) {\n var e = \"posthog\";\n return \"posthog\" !== a && (e += \".\" + a), t || (e += \" (stub)\"), e;\n }, u.people.toString = function () {\n return u.toString(1) + \".people (stub)\";\n }, o = \"capture identify alias people.set people.set_once set_config register register_once unregister opt_out_capturing has_opted_out_capturing opt_in_capturing reset isFeatureEnabled onFeatureFlags\".split(\" \"), n = 0; n < o.length; n++) {\n g(u, o[n]);\n }\n\n e._i.push([i, s, a]);\n }, e.__SV = 1);\n }(document, window.posthog || []);\n var configObject = {\n api_host: this.yourInstance,\n autocapture: this.autocapture,\n capture_pageview: this.capturePageView,\n disable_session_recording: this.disableSessionRecording,\n property_blacklist: this.propertyBlackList,\n disable_cookie: this.disableCookie\n };\n\n if (this.xhrHeaders && Object.keys(this.xhrHeaders).length > 0) {\n configObject.xhr_headers = this.xhrHeaders;\n }\n\n posthog.init(this.teamApiKey, configObject);\n }\n /**\n * superproperties should be part of rudderelement.message.integrations.POSTHOG object.\n * Once we call the posthog.register api, the corresponding property will be sent along with subsequent capture calls.\n * To remove the superproperties, we call unregister api.\n */\n\n }, {\n key: \"processSuperProperties\",\n value: function processSuperProperties(rudderElement) {\n var integrations = rudderElement.message.integrations;\n\n if (integrations && integrations.POSTHOG) {\n var _integrations$POSTHOG = integrations.POSTHOG,\n superProperties = _integrations$POSTHOG.superProperties,\n setOnceProperties = _integrations$POSTHOG.setOnceProperties,\n unsetProperties = _integrations$POSTHOG.unsetProperties;\n\n if (superProperties && Object.keys(superProperties).length > 0) {\n posthog.register(superProperties);\n }\n\n if (setOnceProperties && Object.keys(setOnceProperties).length > 0) {\n posthog.register_once(setOnceProperties);\n }\n\n if (unsetProperties && unsetProperties.length > 0) {\n unsetProperties.forEach(function (property) {\n if (property && property.trim() != \"\") {\n posthog.unregister(property);\n }\n });\n }\n }\n }\n }, {\n key: \"identify\",\n value: function identify(rudderElement) {\n logger.debug(\"in Posthog identify\"); // rudderElement.message.context will always be present as part of identify event payload.\n\n var traits = rudderElement.message.context.traits;\n var userId = rudderElement.message.userId;\n\n if (userId) {\n posthog.identify(userId, traits);\n }\n\n this.processSuperProperties(rudderElement);\n }\n }, {\n key: \"track\",\n value: function track(rudderElement) {\n logger.debug(\"in Posthog track\");\n var _rudderElement$messag = rudderElement.message,\n event = _rudderElement$messag.event,\n properties = _rudderElement$messag.properties;\n this.processSuperProperties(rudderElement);\n posthog.capture(event, properties);\n }\n /**\n * \n *\n * @memberof Posthog\n */\n\n }, {\n key: \"page\",\n value: function page(rudderElement) {\n logger.debug(\"in Posthog page\");\n this.processSuperProperties(rudderElement);\n posthog.capture('$pageview');\n }\n }, {\n key: \"isLoaded\",\n value: function isLoaded() {\n logger.debug(\"in Posthog isLoaded\");\n return !!(window.posthog && window.posthog.__loaded);\n }\n }, {\n key: \"isReady\",\n value: function isReady() {\n return !!(window.posthog && window.posthog.__loaded);\n }\n }]);\n\n return Posthog;\n }();\n\n var Klaviyo = /*#__PURE__*/function () {\n function Klaviyo(config) {\n _classCallCheck(this, Klaviyo);\n\n this.publicApiKey = config.publicApiKey;\n this.sendPageAsTrack = config.sendPageAsTrack;\n this.additionalPageInfo = config.additionalPageInfo;\n this.enforceEmailAsPrimary = config.enforceEmailAsPrimary;\n this.name = \"KLAVIYO\";\n this.keysToExtract = [\"context.traits\"];\n this.exclusionKeys = [\"email\", \"E-mail\", \"Email\", \"firstName\", \"firstname\", \"first_name\", \"lastName\", \"lastname\", \"last_name\", \"phone\", \"Phone\", \"title\", \"organization\", \"city\", \"City\", \"region\", \"country\", \"Country\", \"zip\", \"image\", \"timezone\", \"anonymousId\", \"userId\", \"properties\"];\n }\n\n _createClass(Klaviyo, [{\n key: \"init\",\n value: function init() {\n logger.debug(\"===in init Klaviyo===\");\n ScriptLoader(\"klaviyo-integration\", \"https://static.klaviyo.com/onsite/js/klaviyo.js?company_id=\".concat(this.publicApiKey));\n }\n }, {\n key: \"isLoaded\",\n value: function isLoaded() {\n logger.debug(\"===in isLoaded Klaviyo===\");\n return !!(window._learnq && window._learnq.push !== Array.prototype.push);\n }\n }, {\n key: \"isReady\",\n value: function isReady() {\n logger.debug(\"===in isReady Klaviyo===\");\n return !!(window._learnq && window._learnq.push !== Array.prototype.push);\n }\n }, {\n key: \"identify\",\n value: function identify(rudderElement) {\n var message = rudderElement.message;\n\n if (!(message.context && message.context.traits)) {\n logger.error(\"user traits not present\");\n return;\n }\n\n var _getDefinedTraits = getDefinedTraits(message),\n userId = _getDefinedTraits.userId,\n email = _getDefinedTraits.email,\n phone = _getDefinedTraits.phone,\n firstName = _getDefinedTraits.firstName,\n lastName = _getDefinedTraits.lastName,\n city = _getDefinedTraits.city,\n country = _getDefinedTraits.country;\n\n var payload = {\n $id: userId,\n $email: email,\n $phone_number: phone,\n $first_name: firstName,\n $last_name: lastName,\n $city: city,\n $country: country,\n $organization: getValue(message, \"context.traits.organization\"),\n $title: getValue(message, \"context.traits.title\"),\n $region: getValue(message, \"context.traits.region\"),\n $zip: getValue(message, \"context.traits.zip\")\n };\n\n if (!payload.$email && !payload.$phone_number && !payload.$id) {\n logger.error(\"user id, phone or email not present\");\n return;\n }\n\n if (this.enforceEmailAsPrimary) {\n delete payload.$id;\n payload._id = userId;\n } // Extract other K-V property from traits about user custom properties\n\n\n try {\n payload = extractCustomFields(message, payload, this.keysToExtract, this.exclusionKeys);\n } catch (err) {\n logger.debug(\"Error occured at extractCustomFields \".concat(err));\n }\n\n window._learnq.push([\"identify\", payload]);\n }\n }, {\n key: \"track\",\n value: function track(rudderElement) {\n var message = rudderElement.message;\n\n if (message.properties) {\n var propsPayload = message.properties;\n\n if (propsPayload.revenue) {\n propsPayload.$value = propsPayload.revenue;\n delete propsPayload.revenue;\n }\n\n window._learnq.push([\"track\", message.event, propsPayload]);\n } else window._learnq.push([\"track\", message.event]);\n }\n }, {\n key: \"page\",\n value: function page(rudderElement) {\n var message = rudderElement.message;\n\n if (this.sendPageAsTrack) {\n var eventName;\n\n if (message.properties && message.properties.category && message.name) {\n eventName = \"Viewed \".concat(message.properties.category, \" \").concat(message.name, \" page\");\n } else if (message.name) {\n eventName = \"Viewed \".concat(message.name, \" page\");\n } else {\n eventName = \"Viewed a Page\";\n }\n\n if (this.additionalPageInfo && message.properties) {\n window._learnq.push([\"track\", \"\".concat(eventName), message.properties]);\n } else {\n window._learnq.push([\"track\", \"\".concat(eventName)]);\n }\n } else {\n window._learnq.push([\"track\"]);\n }\n }\n }]);\n\n return Klaviyo;\n }();\n\n var Clevertap = /*#__PURE__*/function () {\n function Clevertap(config) {\n _classCallCheck(this, Clevertap);\n\n this.accountId = config.accountId;\n this.apiKey = config.passcode;\n this.name = \"CLEVERTAP\";\n this.region = config.region;\n this.keysToExtract = [\"context.traits\"];\n this.exclusionKeys = [\"email\", \"E-mail\", \"Email\", \"phone\", \"Phone\", \"name\", \"Name\", \"gender\", \"Gender\", \"birthday\", \"Birthday\", \"anonymousId\", \"userId\", \"lastName\", \"lastname\", \"last_name\", \"firstName\", \"firstname\", \"first_name\", \"employed\", \"education\", \"married\", \"customerType\"];\n }\n\n _createClass(Clevertap, [{\n key: \"init\",\n value: function init() {\n logger.debug(\"===in init Clevertap===\");\n var sourceUrl = document.location.protocol == \"https:\" ? \"https://d2r1yp2w7bby2u.cloudfront.net/js/a.js\" : \"http://static.clevertap.com/js/a.js\";\n window.clevertap = {\n event: [],\n profile: [],\n account: [],\n onUserLogin: [],\n notifications: []\n };\n window.clevertap.enablePersonalization = true;\n window.clevertap.account.push({\n id: this.accountId\n });\n\n if (this.region && this.region !== \"none\") {\n window.clevertap.region.push(this.region);\n }\n\n ScriptLoader(\"clevertap-integration\", sourceUrl);\n }\n }, {\n key: \"isLoaded\",\n value: function isLoaded() {\n logger.debug(\"in clevertap isLoaded\");\n return !!window.clevertap && window.clevertap.logout !== undefined;\n }\n }, {\n key: \"isReady\",\n value: function isReady() {\n logger.debug(\"in clevertap isReady\");\n return !!window.clevertap && window.clevertap.logout !== undefined;\n }\n }, {\n key: \"identify\",\n value: function identify(rudderElement) {\n logger.debug(\"in clevertap identify\");\n var message = rudderElement.message;\n\n if (!(message.context && message.context.traits)) {\n logger.error(\"user traits not present\");\n return;\n }\n\n var _getDefinedTraits = getDefinedTraits(message),\n userId = _getDefinedTraits.userId,\n email = _getDefinedTraits.email,\n phone = _getDefinedTraits.phone,\n name = _getDefinedTraits.name;\n\n var payload = {\n Name: name,\n Identity: userId,\n Email: email,\n Phone: phone,\n Gender: getValue(message, \"context.traits.gender\"),\n DOB: getValue(message, \"context.traits.birthday\"),\n Photo: getValue(message, \"context.traits.avatar\"),\n Employed: getValue(message, \"context.traits.employed\"),\n Education: getValue(message, \"context.traits.education\"),\n Married: getValue(message, \"context.traits.married\"),\n \"Customer Type\": getValue(message, \"context.traits.customerType\")\n }; // Extract other K-V property from traits about user custom properties\n\n try {\n payload = extractCustomFields(message, payload, this.keysToExtract, this.exclusionKeys);\n } catch (err) {\n logger.debug(\"Error occured at extractCustomFields \".concat(err));\n }\n\n Object.keys(payload).map(function (key) {\n if (isObject$1(payload[key])) {\n logger.debug(\"cannot process, unsupported traits\");\n return;\n }\n });\n window.clevertap.onUserLogin.push({\n Site: payload\n });\n }\n }, {\n key: \"track\",\n value: function track(rudderElement) {\n logger.debug(\"in clevertap track\");\n var _rudderElement$messag = rudderElement.message,\n event = _rudderElement$messag.event,\n properties = _rudderElement$messag.properties;\n\n if (properties) {\n if (event === \"Order Completed\") {\n var ecomProperties = {\n \"Charged ID\": properties.checkout_id,\n Amount: properties.revenue,\n Items: properties.products\n }; // Extract other K-V property from traits about user custom properties\n\n try {\n ecomProperties = extractCustomFields(rudderElement.message, ecomProperties, [\"properties\"], [\"checkout_id\", \"revenue\", \"products\"]);\n } catch (err) {\n logger.debug(\"Error occured at extractCustomFields \".concat(err));\n }\n\n window.clevertap.event.push(\"Charged\", ecomProperties);\n } else {\n Object.keys(properties).map(function (key) {\n if (isObject$1(properties[key]) || isArray$1(properties[key])) {\n logger.debug(\"cannot process, unsupported event\");\n return;\n }\n });\n window.clevertap.event.push(event, properties);\n }\n } else if (event === \"Order Completed\") {\n window.clevertap.event.push(\"Charged\");\n } else {\n window.clevertap.event.push(event);\n }\n }\n }, {\n key: \"page\",\n value: function page(rudderElement) {\n logger.debug(\"in clevertap page\");\n var _rudderElement$messag2 = rudderElement.message,\n name = _rudderElement$messag2.name,\n properties = _rudderElement$messag2.properties;\n var eventName;\n\n if (properties && properties.category && name) {\n eventName = \"WebPage Viewed \".concat(name, \" \").concat(properties.category);\n } else if (name) {\n eventName = \"WebPage Viewed \".concat(name);\n } else {\n eventName = \"WebPage Viewed\";\n }\n\n if (properties) {\n Object.keys(properties).map(function (key) {\n if (isObject$1(properties[key]) || isArray$1(properties[key])) {\n logger.debug(\"cannot process, unsupported event\");\n return;\n }\n });\n window.clevertap.event.push(eventName, properties);\n } else {\n window.clevertap.event.push(eventName);\n }\n }\n }]);\n\n return Clevertap;\n }();\n\n // (config-plan name, native destination.name , exported integration name(this one below))\n\n var integrations = {\n HS: index,\n GA: index$1,\n HOTJAR: index$2,\n GOOGLEADS: index$3,\n VWO: VWO,\n GTM: GoogleTagManager,\n BRAZE: Braze,\n INTERCOM: INTERCOM,\n KEEN: Keen,\n KISSMETRICS: Kissmetrics,\n CUSTOMERIO: CustomerIO,\n CHARTBEAT: Chartbeat,\n COMSCORE: Comscore,\n FACEBOOK_PIXEL: FacebookPixel,\n LOTAME: Lotame,\n OPTIMIZELY: Optimizely,\n BUGSNAG: Bugsnag,\n FULLSTORY: Fullstory,\n TVSQUARED: TVSquared,\n GA4: GA4,\n MOENGAGE: MoEngage,\n AM: Amplitude,\n PENDO: Pendo,\n LYTICS: Lytics,\n APPCUES: Appcues,\n POSTHOG: Posthog,\n KLAVIYO: Klaviyo,\n CLEVERTAP: Clevertap\n };\n\n // Application class\n var RudderApp = function RudderApp() {\n _classCallCheck(this, RudderApp);\n\n this.build = \"1.0.0\";\n this.name = \"RudderLabs JavaScript SDK\";\n this.namespace = \"com.rudderlabs.javascript\";\n this.version = \"1.0.16\";\n };\n\n // Library information class\n var RudderLibraryInfo = function RudderLibraryInfo() {\n _classCallCheck(this, RudderLibraryInfo);\n\n this.name = \"RudderLabs JavaScript SDK\";\n this.version = \"1.0.16\";\n }; // Operating System information class\n\n\n var RudderOSInfo = function RudderOSInfo() {\n _classCallCheck(this, RudderOSInfo);\n\n this.name = \"\";\n this.version = \"\";\n }; // Screen information class\n\n\n var RudderScreenInfo = function RudderScreenInfo() {\n _classCallCheck(this, RudderScreenInfo);\n\n this.density = 0;\n this.width = 0;\n this.height = 0;\n }; // Device information class\n\n var RudderContext = function RudderContext() {\n _classCallCheck(this, RudderContext);\n\n this.app = new RudderApp();\n this.traits = null;\n this.library = new RudderLibraryInfo(); // this.os = null;\n\n var os = new RudderOSInfo();\n os.version = \"\"; // skipping version for simplicity now\n\n var screen = new RudderScreenInfo(); // Depending on environment within which the code is executing, screen\n // dimensions can be set\n // User agent and locale can be retrieved only for browser\n // For server-side integration, same needs to be set by calling program\n\n {\n // running within browser\n screen.width = window.width;\n screen.height = window.height;\n screen.density = window.devicePixelRatio;\n this.userAgent = navigator.userAgent; // property name differs based on browser version\n\n this.locale = navigator.language || navigator.browserLanguage;\n }\n\n this.os = os;\n this.screen = screen;\n this.device = null;\n this.network = null;\n };\n\n var RudderMessage = /*#__PURE__*/function () {\n function RudderMessage() {\n _classCallCheck(this, RudderMessage);\n\n this.channel = \"web\";\n this.context = new RudderContext();\n this.type = null;\n this.action = null;\n this.messageId = generateUUID().toString();\n this.originalTimestamp = new Date().toISOString();\n this.anonymousId = null;\n this.userId = null;\n this.event = null;\n this.properties = {};\n this.integrations = {}; // By default, all integrations will be set as enabled from client\n // Decision to route to specific destinations will be taken at server end\n\n this.integrations.All = true;\n } // Get property\n\n\n _createClass(RudderMessage, [{\n key: \"getProperty\",\n value: function getProperty(key) {\n return this.properties[key];\n } // Add property\n\n }, {\n key: \"addProperty\",\n value: function addProperty(key, value) {\n this.properties[key] = value;\n } // Validate whether this message is semantically valid for the type mentioned\n\n }, {\n key: \"validateFor\",\n value: function validateFor(messageType) {\n // First check that properties is populated\n if (!this.properties) {\n throw new Error(\"Key properties is required\");\n } // Event type specific checks\n\n\n switch (messageType) {\n case MessageType.TRACK:\n // check if event is present\n if (!this.event) {\n throw new Error(\"Key event is required for track event\");\n } // Next make specific checks for e-commerce events\n\n\n if (this.event in Object.values(ECommerceEvents)) {\n switch (this.event) {\n case ECommerceEvents.CHECKOUT_STEP_VIEWED:\n case ECommerceEvents.CHECKOUT_STEP_COMPLETED:\n case ECommerceEvents.PAYMENT_INFO_ENTERED:\n this.checkForKey(\"checkout_id\");\n this.checkForKey(\"step\");\n break;\n\n case ECommerceEvents.PROMOTION_VIEWED:\n case ECommerceEvents.PROMOTION_CLICKED:\n this.checkForKey(\"promotion_id\");\n break;\n\n case ECommerceEvents.ORDER_REFUNDED:\n this.checkForKey(\"order_id\");\n break;\n }\n } else if (!this.properties.category) {\n // if category is not there, set to event\n this.properties.category = this.event;\n }\n\n break;\n\n case MessageType.PAGE:\n break;\n\n case MessageType.SCREEN:\n if (!this.properties.name) {\n throw new Error(\"Key 'name' is required in properties\");\n }\n\n break;\n }\n } // Function for checking existence of a particular property\n\n }, {\n key: \"checkForKey\",\n value: function checkForKey(propertyName) {\n if (!this.properties[propertyName]) {\n throw new Error(\"Key '\".concat(propertyName, \"' is required in properties\"));\n }\n }\n }]);\n\n return RudderMessage;\n }();\n\n var RudderElement = /*#__PURE__*/function () {\n function RudderElement() {\n _classCallCheck(this, RudderElement);\n\n this.message = new RudderMessage();\n } // Setters that in turn set the field values for the contained object\n\n\n _createClass(RudderElement, [{\n key: \"setType\",\n value: function setType(type) {\n this.message.type = type;\n }\n }, {\n key: \"setProperty\",\n value: function setProperty(rudderProperty) {\n this.message.properties = rudderProperty;\n }\n }, {\n key: \"setUserProperty\",\n value: function setUserProperty(rudderUserProperty) {\n this.message.user_properties = rudderUserProperty;\n }\n }, {\n key: \"setUserId\",\n value: function setUserId(userId) {\n this.message.userId = userId;\n }\n }, {\n key: \"setEventName\",\n value: function setEventName(eventName) {\n this.message.event = eventName;\n }\n }, {\n key: \"updateTraits\",\n value: function updateTraits(traits) {\n this.message.context.traits = traits;\n }\n }, {\n key: \"getElementContent\",\n value: function getElementContent() {\n return this.message;\n }\n }]);\n\n return RudderElement;\n }();\n\n var RudderElementBuilder = /*#__PURE__*/function () {\n function RudderElementBuilder() {\n _classCallCheck(this, RudderElementBuilder);\n\n this.rudderProperty = null;\n this.rudderUserProperty = null;\n this.event = null;\n this.userId = null;\n this.channel = null;\n this.type = null;\n } // Set the property\n\n\n _createClass(RudderElementBuilder, [{\n key: \"setProperty\",\n value: function setProperty(inputRudderProperty) {\n this.rudderProperty = inputRudderProperty;\n return this;\n } // Build and set the property object\n\n }, {\n key: \"setPropertyBuilder\",\n value: function setPropertyBuilder(rudderPropertyBuilder) {\n this.rudderProperty = rudderPropertyBuilder.build();\n return this;\n }\n }, {\n key: \"setUserProperty\",\n value: function setUserProperty(inputRudderUserProperty) {\n this.rudderUserProperty = inputRudderUserProperty;\n return this;\n }\n }, {\n key: \"setUserPropertyBuilder\",\n value: function setUserPropertyBuilder(rudderUserPropertyBuilder) {\n this.rudderUserProperty = rudderUserPropertyBuilder.build();\n return this;\n } // Setter methods for all variables. Instance is returned for each call in\n // accordance with the Builder pattern\n\n }, {\n key: \"setEvent\",\n value: function setEvent(event) {\n this.event = event;\n return this;\n }\n }, {\n key: \"setUserId\",\n value: function setUserId(userId) {\n this.userId = userId;\n return this;\n }\n }, {\n key: \"setChannel\",\n value: function setChannel(channel) {\n this.channel = channel;\n return this;\n }\n }, {\n key: \"setType\",\n value: function setType(eventType) {\n this.type = eventType;\n return this;\n }\n }, {\n key: \"build\",\n value: function build() {\n var element = new RudderElement();\n element.setUserId(this.userId);\n element.setType(this.type);\n element.setEventName(this.event);\n element.setProperty(this.rudderProperty);\n element.setUserProperty(this.rudderUserProperty);\n return element;\n }\n }]);\n\n return RudderElementBuilder;\n }();\n\n var IDX = 256,\n HEX = [],\n BUFFER;\n\n while (IDX--) {\n HEX[IDX] = (IDX + 256).toString(16).substring(1);\n }\n\n function v4() {\n var i = 0,\n num,\n out = '';\n\n if (!BUFFER || IDX + 16 > 256) {\n BUFFER = Array(i = 256);\n\n while (i--) {\n BUFFER[i] = 256 * Math.random() | 0;\n }\n\n i = IDX = 0;\n }\n\n for (; i < 16; i++) {\n num = BUFFER[IDX + i];\n if (i == 6) out += HEX[num & 15 | 64];else if (i == 8) out += HEX[num & 63 | 128];else out += HEX[num];\n if (i & 1 && i > 1 && i < 11) out += '-';\n }\n\n IDX++;\n return out;\n }\n\n var dist = /*#__PURE__*/Object.freeze({\n __proto__: null,\n v4: v4\n });\n\n var rngBrowser = createCommonjsModule(function (module) {\n // Unique ID creation requires a high quality random # generator. In the\n // browser this is a little complicated due to unknown quality of Math.random()\n // and inconsistent support for the `crypto` API. We do the best we can via\n // feature-detection\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto\n // implementation. Also, find the complete implementation of crypto on IE11.\n var getRandomValues = typeof crypto != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto != 'undefined' && typeof window.msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (getRandomValues) {\n // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto\n var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\n module.exports = function whatwgRNG() {\n getRandomValues(rnds8);\n return rnds8;\n };\n } else {\n // Math.random()-based (RNG)\n //\n // If all else fails, use Math.random(). It's fast, but is of unspecified\n // quality.\n var rnds = new Array(16);\n\n module.exports = function mathRNG() {\n for (var i = 0, r; i < 16; i++) {\n if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n }\n\n return rnds;\n };\n }\n });\n\n /**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n var byteToHex = [];\n\n for (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n }\n\n function bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex; // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n\n return [bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]]].join('');\n }\n\n var bytesToUuid_1 = bytesToUuid;\n\n //\n // Inspired by https://github.com/LiosK/UUID.js\n // and http://docs.python.org/library/uuid.html\n\n var _nodeId;\n\n var _clockseq; // Previous uuid creation time\n\n\n var _lastMSecs = 0;\n var _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\n function v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || [];\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n var seedBytes = rngBrowser();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n var dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error('uuid.v1(): Can\\'t create more than 10M uuids/sec');\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n var tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf ? buf : bytesToUuid_1(b);\n }\n\n var v1_1 = v1;\n\n function v4$1(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof options == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n\n options = options || {};\n var rnds = options.random || (options.rng || rngBrowser)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid_1(rnds);\n }\n\n var v4_1 = v4$1;\n\n var uuid = v4_1;\n uuid.v1 = v1_1;\n uuid.v4 = v4_1;\n var uuid_1 = uuid;\n\n var uuid$1 = uuid_1.v4;\n var inMemoryStore = {\n _data: {},\n length: 0,\n setItem: function setItem(key, value) {\n this._data[key] = value;\n this.length = keys_1(this._data).length;\n return value;\n },\n getItem: function getItem(key) {\n if (key in this._data) {\n return this._data[key];\n }\n\n return null;\n },\n removeItem: function removeItem(key) {\n if (key in this._data) {\n delete this._data[key];\n }\n\n this.length = keys_1(this._data).length;\n return null;\n },\n clear: function clear() {\n this._data = {};\n this.length = 0;\n },\n key: function key(index) {\n return keys_1(this._data)[index];\n }\n };\n\n function isSupportedNatively() {\n try {\n if (!window.localStorage) return false;\n var key = uuid$1();\n window.localStorage.setItem(key, 'test_value');\n var value = window.localStorage.getItem(key);\n window.localStorage.removeItem(key); // handle localStorage silently failing\n\n return value === 'test_value';\n } catch (e) {\n // Can throw if localStorage is disabled\n return false;\n }\n }\n\n function pickStorage() {\n if (isSupportedNatively()) {\n return window.localStorage;\n } // fall back to in-memory\n\n\n return inMemoryStore;\n } // Return a shared instance\n\n\n var defaultEngine = pickStorage(); // Expose the in-memory store explicitly for testing\n\n var inMemoryEngine = inMemoryStore;\n var engine = {\n defaultEngine: defaultEngine,\n inMemoryEngine: inMemoryEngine\n };\n\n var defaultEngine$1 = engine.defaultEngine;\n var inMemoryEngine$1 = engine.inMemoryEngine;\n var json = JSON;\n /**\n * Store Implementation with dedicated\n */\n\n function Store$1(name, id, keys, optionalEngine) {\n this.id = id;\n this.name = name;\n this.keys = keys || {};\n this.engine = optionalEngine || defaultEngine$1;\n this.originalEngine = this.engine;\n }\n /**\n * Set value by key.\n */\n\n\n Store$1.prototype.set = function (key, value) {\n var compoundKey = this._createValidKey(key);\n\n if (!compoundKey) return;\n\n try {\n this.engine.setItem(compoundKey, json.stringify(value));\n } catch (err) {\n if (isQuotaExceeded(err)) {\n // switch to inMemory engine\n this._swapEngine(); // and save it there\n\n\n this.set(key, value);\n }\n }\n };\n /**\n * Get by Key.\n */\n\n\n Store$1.prototype.get = function (key) {\n try {\n var str = this.engine.getItem(this._createValidKey(key));\n\n if (str === null) {\n return null;\n }\n\n return json.parse(str);\n } catch (err) {\n return null;\n }\n };\n /**\n * Get original engine\n */\n\n\n Store$1.prototype.getOriginalEngine = function () {\n return this.originalEngine;\n };\n /**\n * Remove by Key.\n */\n\n\n Store$1.prototype.remove = function (key) {\n this.engine.removeItem(this._createValidKey(key));\n };\n /**\n * Ensure the key is valid\n */\n\n\n Store$1.prototype._createValidKey = function (key) {\n var name = this.name;\n var id = this.id;\n if (!keys_1(this.keys).length) return [name, id, key].join('.'); // validate and return undefined if invalid key\n\n var compoundKey;\n each_1(function (value) {\n if (value === key) {\n compoundKey = [name, id, key].join('.');\n }\n }, this.keys);\n return compoundKey;\n };\n /**\n * Switch to inMemoryEngine, bringing any existing data with.\n */\n\n\n Store$1.prototype._swapEngine = function () {\n var self = this; // grab existing data, but only for this page's queue instance, not all\n // better to keep other queues in localstorage to be flushed later\n // than to pull them into memory and remove them from durable storage\n\n each_1(function (key) {\n var value = self.get(key);\n inMemoryEngine$1.setItem([self.name, self.id, key].join('.'), value);\n self.remove(key);\n }, this.keys);\n this.engine = inMemoryEngine$1;\n };\n\n var store$1 = Store$1;\n\n function isQuotaExceeded(e) {\n var quotaExceeded = false;\n\n if (e.code) {\n switch (e.code) {\n case 22:\n quotaExceeded = true;\n break;\n\n case 1014:\n // Firefox\n if (e.name === 'NS_ERROR_DOM_QUOTA_REACHED') {\n quotaExceeded = true;\n }\n\n break;\n }\n } else if (e.number === -2147024882) {\n // Internet Explorer 8\n quotaExceeded = true;\n }\n\n return quotaExceeded;\n }\n\n var defaultClock = {\n setTimeout: function setTimeout(fn, ms) {\n return window.setTimeout(fn, ms);\n },\n clearTimeout: function clearTimeout(id) {\n return window.clearTimeout(id);\n },\n Date: window.Date\n };\n var clock = defaultClock;\n\n function Schedule() {\n this.tasks = {};\n this.nextId = 1;\n }\n\n Schedule.prototype.now = function () {\n return +new clock.Date();\n };\n\n Schedule.prototype.run = function (task, timeout) {\n var id = this.nextId++;\n this.tasks[id] = clock.setTimeout(this._handle(id, task), timeout);\n return id;\n };\n\n Schedule.prototype.cancel = function (id) {\n if (this.tasks[id]) {\n clock.clearTimeout(this.tasks[id]);\n delete this.tasks[id];\n }\n };\n\n Schedule.prototype.cancelAll = function () {\n each_1(clock.clearTimeout, this.tasks);\n this.tasks = {};\n };\n\n Schedule.prototype._handle = function (id, callback) {\n var self = this;\n return function () {\n delete self.tasks[id];\n return callback();\n };\n };\n\n Schedule.setClock = function (newClock) {\n clock = newClock;\n };\n\n Schedule.resetClock = function () {\n clock = defaultClock;\n };\n\n var schedule = Schedule;\n\n /**\n * Expose `debug()` as the module.\n */\n var debug_1$2 = debug$2;\n /**\n * Create a debugger with the given `name`.\n *\n * @param {String} name\n * @return {Type}\n * @api public\n */\n\n function debug$2(name) {\n if (!debug$2.enabled(name)) return function () {};\n return function (fmt) {\n fmt = coerce(fmt);\n var curr = new Date();\n var ms = curr - (debug$2[name] || curr);\n debug$2[name] = curr;\n fmt = name + ' ' + fmt + ' +' + debug$2.humanize(ms); // This hackery is required for IE8\n // where `console.log` doesn't have 'apply'\n\n window.console && console.log && Function.prototype.apply.call(console.log, console, arguments);\n };\n }\n /**\n * The currently active debug mode names.\n */\n\n\n debug$2.names = [];\n debug$2.skips = [];\n /**\n * Enables a debug mode by name. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} name\n * @api public\n */\n\n debug$2.enable = function (name) {\n try {\n localStorage.debug = name;\n } catch (e) {}\n\n var split = (name || '').split(/[\\s,]+/),\n len = split.length;\n\n for (var i = 0; i < len; i++) {\n name = split[i].replace('*', '.*?');\n\n if (name[0] === '-') {\n debug$2.skips.push(new RegExp('^' + name.substr(1) + '$'));\n } else {\n debug$2.names.push(new RegExp('^' + name + '$'));\n }\n }\n };\n /**\n * Disable debug output.\n *\n * @api public\n */\n\n\n debug$2.disable = function () {\n debug$2.enable('');\n };\n /**\n * Humanize the given `ms`.\n *\n * @param {Number} m\n * @return {String}\n * @api private\n */\n\n\n debug$2.humanize = function (ms) {\n var sec = 1000,\n min = 60 * 1000,\n hour = 60 * min;\n if (ms >= hour) return (ms / hour).toFixed(1) + 'h';\n if (ms >= min) return (ms / min).toFixed(1) + 'm';\n if (ms >= sec) return (ms / sec | 0) + 's';\n return ms + 'ms';\n };\n /**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\n\n debug$2.enabled = function (name) {\n for (var i = 0, len = debug$2.skips.length; i < len; i++) {\n if (debug$2.skips[i].test(name)) {\n return false;\n }\n }\n\n for (var i = 0, len = debug$2.names.length; i < len; i++) {\n if (debug$2.names[i].test(name)) {\n return true;\n }\n }\n\n return false;\n };\n /**\n * Coerce `val`.\n */\n\n\n function coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n } // persist\n\n\n try {\n if (window.localStorage) debug$2.enable(localStorage.debug);\n } catch (e) {}\n\n var require$$0 = getCjsExportFromNamespace(dist);\n\n var uuid$2 = require$$0.v4;\n var debug$3 = debug_1$2('localstorage-retry'); // Some browsers don't support Function.prototype.bind, so just including a simplified version here\n\n function bind(func, obj) {\n return function () {\n return func.apply(obj, arguments);\n };\n }\n /**\n * @callback processFunc\n * @param {Mixed} item The item added to the queue to process\n * @param {Function} done A function to call when processing is completed.\n * @param {Error} Optional error parameter if the processing failed\n * @param {Response} Optional response parameter to emit for async handling\n */\n\n /**\n * Constructs a Queue backed by localStorage\n *\n * @constructor\n * @param {String} name The name of the queue. Will be used to find abandoned queues and retry their items\n * @param {processFunc} fn The function to call in order to process an item added to the queue\n */\n\n\n function Queue(name, opts, fn) {\n if (typeof opts === 'function') fn = opts;\n this.name = name;\n this.id = uuid$2();\n this.fn = fn;\n this.maxItems = opts.maxItems || Infinity;\n this.maxAttempts = opts.maxAttempts || Infinity;\n this.backoff = {\n MIN_RETRY_DELAY: opts.minRetryDelay || 1000,\n MAX_RETRY_DELAY: opts.maxRetryDelay || 30000,\n FACTOR: opts.backoffFactor || 2,\n JITTER: opts.backoffJitter || 0\n }; // painstakingly tuned. that's why they're not \"easily\" configurable\n\n this.timeouts = {\n ACK_TIMER: 1000,\n RECLAIM_TIMER: 3000,\n RECLAIM_TIMEOUT: 10000,\n RECLAIM_WAIT: 500\n };\n this.keys = {\n IN_PROGRESS: 'inProgress',\n QUEUE: 'queue',\n RECLAIM_START: 'reclaimStart',\n RECLAIM_END: 'reclaimEnd',\n ACK: 'ack'\n };\n this._schedule = new schedule();\n this._processId = 0; // Set up our empty queues\n\n this._store = new store$1(this.name, this.id, this.keys);\n\n this._store.set(this.keys.IN_PROGRESS, {});\n\n this._store.set(this.keys.QUEUE, []); // bind recurring tasks for ease of use\n\n\n this._ack = bind(this._ack, this);\n this._checkReclaim = bind(this._checkReclaim, this);\n this._processHead = bind(this._processHead, this);\n this._running = false;\n }\n /**\n * Mix in event emitter\n */\n\n\n componentEmitter(Queue.prototype);\n /**\n * Starts processing the queue\n */\n\n Queue.prototype.start = function () {\n if (this._running) {\n this.stop();\n }\n\n this._running = true;\n\n this._ack();\n\n this._checkReclaim();\n\n this._processHead();\n };\n /**\n * Stops processing the queue\n */\n\n\n Queue.prototype.stop = function () {\n this._schedule.cancelAll();\n\n this._running = false;\n };\n /**\n * Decides whether to retry. Overridable.\n *\n * @param {Object} item The item being processed\n * @param {Number} attemptNumber The attemptNumber (1 for first retry)\n * @param {Error} error The error from previous attempt, if there was one\n * @return {Boolean} Whether to requeue the message\n */\n\n\n Queue.prototype.shouldRetry = function (_, attemptNumber) {\n if (attemptNumber > this.maxAttempts) return false;\n return true;\n };\n /**\n * Calculates the delay (in ms) for a retry attempt\n *\n * @param {Number} attemptNumber The attemptNumber (1 for first retry)\n * @return {Number} The delay in milliseconds to wait before attempting a retry\n */\n\n\n Queue.prototype.getDelay = function (attemptNumber) {\n var ms = this.backoff.MIN_RETRY_DELAY * Math.pow(this.backoff.FACTOR, attemptNumber);\n\n if (this.backoff.JITTER) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.backoff.JITTER * ms);\n\n if (Math.floor(rand * 10) < 5) {\n ms -= deviation;\n } else {\n ms += deviation;\n }\n }\n\n return Number(Math.min(ms, this.backoff.MAX_RETRY_DELAY).toPrecision(1));\n };\n /**\n * Adds an item to the queue\n *\n * @param {Mixed} item The item to process\n */\n\n\n Queue.prototype.addItem = function (item) {\n this._enqueue({\n item: item,\n attemptNumber: 0,\n time: this._schedule.now()\n });\n };\n /**\n * Adds an item to the retry queue\n *\n * @param {Mixed} item The item to retry\n * @param {Number} attemptNumber The attempt number (1 for first retry)\n * @param {Error} [error] The error from previous attempt, if there was one\n */\n\n\n Queue.prototype.requeue = function (item, attemptNumber, error) {\n if (this.shouldRetry(item, attemptNumber, error)) {\n this._enqueue({\n item: item,\n attemptNumber: attemptNumber,\n time: this._schedule.now() + this.getDelay(attemptNumber)\n });\n } else {\n this.emit('discard', item, attemptNumber);\n }\n };\n\n Queue.prototype._enqueue = function (entry) {\n var queue = this._store.get(this.keys.QUEUE) || [];\n queue = queue.slice(-(this.maxItems - 1));\n queue.push(entry);\n queue = queue.sort(function (a, b) {\n return a.time - b.time;\n });\n\n this._store.set(this.keys.QUEUE, queue);\n\n if (this._running) {\n this._processHead();\n }\n };\n\n Queue.prototype._processHead = function () {\n var self = this;\n var store = this._store; // cancel the scheduled task if it exists\n\n this._schedule.cancel(this._processId); // Pop the head off the queue\n\n\n var queue = store.get(this.keys.QUEUE) || [];\n var inProgress = store.get(this.keys.IN_PROGRESS) || {};\n\n var now = this._schedule.now();\n\n var toRun = [];\n\n function enqueue(el, id) {\n toRun.push({\n item: el.item,\n done: function handle(err, res) {\n var inProgress = store.get(self.keys.IN_PROGRESS) || {};\n delete inProgress[id];\n store.set(self.keys.IN_PROGRESS, inProgress);\n self.emit('processed', err, res, el.item);\n\n if (err) {\n self.requeue(el.item, el.attemptNumber + 1, err);\n }\n }\n });\n }\n\n var inProgressSize = Object.keys(inProgress).length;\n\n while (queue.length && queue[0].time <= now && inProgressSize++ < self.maxItems) {\n var el = queue.shift();\n var id = uuid$2(); // Save this to the in progress map\n\n inProgress[id] = {\n item: el.item,\n attemptNumber: el.attemptNumber,\n time: self._schedule.now()\n };\n enqueue(el, id);\n }\n\n store.set(this.keys.QUEUE, queue);\n store.set(this.keys.IN_PROGRESS, inProgress);\n each_1(function (el) {\n // TODO: handle fn timeout\n try {\n self.fn(el.item, el.done);\n } catch (err) {\n debug$3('Process function threw error: ' + err);\n }\n }, toRun); // re-read the queue in case the process function finished immediately or added another item\n\n queue = store.get(this.keys.QUEUE) || [];\n\n this._schedule.cancel(this._processId);\n\n if (queue.length > 0) {\n this._processId = this._schedule.run(this._processHead, queue[0].time - now);\n }\n }; // Ack continuously to prevent other tabs from claiming our queue\n\n\n Queue.prototype._ack = function () {\n this._store.set(this.keys.ACK, this._schedule.now());\n\n this._store.set(this.keys.RECLAIM_START, null);\n\n this._store.set(this.keys.RECLAIM_END, null);\n\n this._schedule.run(this._ack, this.timeouts.ACK_TIMER);\n };\n\n Queue.prototype._checkReclaim = function () {\n var self = this;\n\n function tryReclaim(store) {\n store.set(self.keys.RECLAIM_START, self.id);\n store.set(self.keys.ACK, self._schedule.now());\n\n self._schedule.run(function () {\n if (store.get(self.keys.RECLAIM_START) !== self.id) return;\n store.set(self.keys.RECLAIM_END, self.id);\n\n self._schedule.run(function () {\n if (store.get(self.keys.RECLAIM_END) !== self.id) return;\n if (store.get(self.keys.RECLAIM_START) !== self.id) return;\n\n self._reclaim(store.id);\n }, self.timeouts.RECLAIM_WAIT);\n }, self.timeouts.RECLAIM_WAIT);\n }\n\n function findOtherQueues(name) {\n var res = [];\n\n var storage = self._store.getOriginalEngine();\n\n for (var i = 0; i < storage.length; i++) {\n var k = storage.key(i);\n var parts = k.split('.');\n if (parts.length !== 3) continue;\n if (parts[0] !== name) continue;\n if (parts[2] !== 'ack') continue;\n res.push(new store$1(name, parts[1], self.keys));\n }\n\n return res;\n }\n\n each_1(function (store) {\n if (store.id === self.id) return;\n if (self._schedule.now() - store.get(self.keys.ACK) < self.timeouts.RECLAIM_TIMEOUT) return;\n tryReclaim(store);\n }, findOtherQueues(this.name));\n\n this._schedule.run(this._checkReclaim, this.timeouts.RECLAIM_TIMER);\n };\n\n Queue.prototype._reclaim = function (id) {\n var self = this;\n var other = new store$1(this.name, id, this.keys);\n var our = {\n queue: this._store.get(this.keys.QUEUE) || []\n };\n var their = {\n inProgress: other.get(this.keys.IN_PROGRESS) || {},\n queue: other.get(this.keys.QUEUE) || []\n }; // add their queue to ours, resetting run-time to immediate and copying the attempt#\n\n each_1(function (el) {\n our.queue.push({\n item: el.item,\n attemptNumber: el.attemptNumber,\n time: self._schedule.now()\n });\n }, their.queue); // if the queue is abandoned, all the in-progress are failed. retry them immediately and increment the attempt#\n\n each_1(function (el) {\n our.queue.push({\n item: el.item,\n attemptNumber: el.attemptNumber + 1,\n time: self._schedule.now()\n });\n }, their.inProgress);\n our.queue = our.queue.sort(function (a, b) {\n return a.time - b.time;\n });\n\n this._store.set(this.keys.QUEUE, our.queue); // remove all keys\n\n\n other.remove(this.keys.IN_PROGRESS);\n other.remove(this.keys.QUEUE);\n other.remove(this.keys.RECLAIM_START);\n other.remove(this.keys.RECLAIM_END);\n other.remove(this.keys.ACK); // process the new items we claimed\n\n this._processHead();\n };\n\n var lib$2 = Queue;\n\n // Payload class, contains batch of Elements\n var RudderPayload = function RudderPayload() {\n _classCallCheck(this, RudderPayload);\n\n this.batch = null;\n this.writeKey = null;\n };\n\n var queueOptions = {\n maxRetryDelay: 360000,\n minRetryDelay: 1000,\n backoffFactor: 2,\n maxAttempts: 10,\n maxItems: 100\n };\n var MESSAGE_LENGTH = 32 * 1000; // ~32 Kb\n\n /**\n *\n * @class EventRepository responsible for adding events into\n * flush queue and sending data to rudder backend\n * in batch and maintains order of the event.\n */\n\n var EventRepository = /*#__PURE__*/function () {\n /**\n *Creates an instance of EventRepository.\n * @memberof EventRepository\n */\n function EventRepository(options) {\n _classCallCheck(this, EventRepository);\n\n this.eventsBuffer = [];\n this.writeKey = \"\";\n this.url = \"\";\n this.state = \"READY\";\n this.batchSize = 0; // previous implementation\n // setInterval(this.preaparePayloadAndFlush, FLUSH_INTERVAL_DEFAULT, this);\n }\n\n _createClass(EventRepository, [{\n key: \"startQueue\",\n value: function startQueue(options) {\n if (options) {\n // TODO: add checks for value - has to be +ve?\n _extends(queueOptions, options);\n }\n\n this.payloadQueue = new lib$2(\"rudder\", queueOptions, function (item, done) {\n // apply sentAt at flush time and reset on each retry\n item.message.sentAt = getCurrentTimeFormatted(); // send this item for processing, with a callback to enable queue to get the done status\n\n eventRepository.processQueueElement(item.url, item.headers, item.message, 10 * 1000, function (err, res) {\n if (err) {\n return done(err);\n }\n\n done(null, res);\n });\n }); // start queue\n\n this.payloadQueue.start();\n }\n /**\n *\n *\n * @param {EventRepository} repo\n * @returns\n * @memberof EventRepository\n */\n\n }, {\n key: \"preaparePayloadAndFlush\",\n value: function preaparePayloadAndFlush(repo) {\n // construct payload\n logger.debug(\"==== in preaparePayloadAndFlush with state: \".concat(repo.state));\n logger.debug(repo.eventsBuffer);\n\n if (repo.eventsBuffer.length == 0 || repo.state === \"PROCESSING\") {\n return;\n }\n\n var eventsPayload = repo.eventsBuffer;\n var payload = new RudderPayload();\n payload.batch = eventsPayload;\n payload.writeKey = repo.writeKey;\n payload.sentAt = getCurrentTimeFormatted(); // add sentAt to individual events as well\n\n payload.batch.forEach(function (event) {\n event.sentAt = payload.sentAt;\n });\n repo.batchSize = repo.eventsBuffer.length; // server-side integration, XHR is node module\n\n if (true) {\n var xhr = new XMLHttpRequest();\n } else {\n var xhr;\n }\n\n logger.debug(\"==== in flush sending to Rudder BE ====\");\n logger.debug(JSON.stringify(payload, replacer));\n xhr.open(\"POST\", repo.url, true);\n xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n\n {\n xhr.setRequestHeader(\"Authorization\", \"Basic \".concat(btoa(\"\".concat(payload.writeKey, \":\"))));\n } // register call back to reset event buffer on successfull POST\n\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4 && xhr.status === 200) {\n logger.debug(\"====== request processed successfully: \".concat(xhr.status));\n repo.eventsBuffer = repo.eventsBuffer.slice(repo.batchSize);\n logger.debug(repo.eventsBuffer.length);\n } else if (xhr.readyState === 4 && xhr.status !== 200) {\n handleError(new Error(\"request failed with status: \".concat(xhr.status, \" for url: \").concat(repo.url)));\n }\n\n repo.state = \"READY\";\n };\n\n xhr.send(JSON.stringify(payload, replacer));\n repo.state = \"PROCESSING\";\n }\n /**\n * the queue item proceesor\n * @param {*} url to send requests to\n * @param {*} headers\n * @param {*} message\n * @param {*} timeout\n * @param {*} queueFn the function to call after request completion\n */\n\n }, {\n key: \"processQueueElement\",\n value: function processQueueElement(url, headers, message, timeout, queueFn) {\n try {\n var xhr = new XMLHttpRequest();\n xhr.open(\"POST\", url, true);\n\n for (var k in headers) {\n xhr.setRequestHeader(k, headers[k]);\n }\n\n xhr.timeout = timeout;\n xhr.ontimeout = queueFn;\n xhr.onerror = queueFn;\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n if (xhr.status === 429 || xhr.status >= 500 && xhr.status < 600) {\n handleError(new Error(\"request failed with status: \".concat(xhr.status).concat(xhr.statusText, \" for url: \").concat(url)));\n queueFn(new Error(\"request failed with status: \".concat(xhr.status).concat(xhr.statusText, \" for url: \").concat(url)));\n } else {\n logger.debug(\"====== request processed successfully: \".concat(xhr.status));\n queueFn(null, xhr.status);\n }\n }\n };\n\n xhr.send(JSON.stringify(message, replacer));\n } catch (error) {\n queueFn(error);\n }\n }\n /**\n *\n *\n * @param {RudderElement} rudderElement\n * @memberof EventRepository\n */\n\n }, {\n key: \"enqueue\",\n value: function enqueue(rudderElement, type) {\n var message = rudderElement.getElementContent();\n var headers = {\n \"Content-Type\": \"application/json\",\n Authorization: \"Basic \".concat(btoa(\"\".concat(this.writeKey, \":\"))),\n AnonymousId: btoa(message.anonymousId)\n };\n message.originalTimestamp = getCurrentTimeFormatted();\n message.sentAt = getCurrentTimeFormatted(); // add this, will get modified when actually being sent\n // check message size, if greater log an error\n\n if (JSON.stringify(message).length > MESSAGE_LENGTH) {\n logger.error(\"[EventRepository] enqueue:: message length greater 32 Kb \", message);\n } // modify the url for event specific endpoints\n\n\n var url = this.url.slice(-1) == \"/\" ? this.url.slice(0, -1) : this.url; // add items to the queue\n\n this.payloadQueue.addItem({\n url: \"\".concat(url, \"/v1/\").concat(type),\n headers: headers,\n message: message\n });\n }\n }]);\n\n return EventRepository;\n }();\n\n var eventRepository = new EventRepository();\n\n function addDomEventHandlers(rudderanalytics) {\n var handler = function handler(e) {\n e = e || window.event;\n var target = e.target || e.srcElement;\n\n if (isTextNode(target)) {\n target = target.parentNode;\n }\n\n if (shouldTrackDomEvent(target, e)) {\n logger.debug('to be tracked ', e.type);\n } else {\n logger.debug('not to be tracked ', e.type);\n }\n\n trackWindowEvent(e, rudderanalytics);\n };\n\n register_event(document, 'submit', handler, true);\n register_event(document, 'change', handler, true);\n register_event(document, 'click', handler, true);\n rudderanalytics.page();\n }\n\n function register_event(element, type, handler, useCapture) {\n if (!element) {\n logger.error('[Autotrack] register_event:: No valid element provided to register_event');\n return;\n }\n\n element.addEventListener(type, handler, !!useCapture);\n }\n\n function shouldTrackDomEvent(el, event) {\n if (!el || isTag(el, 'html') || !isElementNode(el)) {\n return false;\n }\n\n var tag = el.tagName.toLowerCase();\n\n switch (tag) {\n case 'html':\n return false;\n\n case 'form':\n return event.type === 'submit';\n\n case 'input':\n if (['button', 'submit'].indexOf(el.getAttribute('type')) === -1) {\n return event.type === 'change';\n }\n\n return event.type === 'click';\n\n case 'select':\n case 'textarea':\n return event.type === 'change';\n\n default:\n return event.type === 'click';\n }\n }\n\n function isTag(el, tag) {\n return el && el.tagName && el.tagName.toLowerCase() === tag.toLowerCase();\n }\n\n function isElementNode(el) {\n return el && el.nodeType === 1; // Node.ELEMENT_NODE - use integer constant for browser portability\n }\n\n function isTextNode(el) {\n return el && el.nodeType === 3; // Node.TEXT_NODE - use integer constant for browser portability\n } // excerpt from https://github.com/mixpanel/mixpanel-js/blob/master/src/autotrack-utils.js\n\n\n function shouldTrackElement(el) {\n if (!el.parentNode || isTag(el, 'body')) return false;\n var curEl = el;\n\n while (curEl.parentNode && !isTag(curEl, 'body')) {\n var _classes = getClassName(el).split(' '); // if explicitly specified \"rudder-no-track\", even at parent level, dont track the child nodes too.\n\n\n if (_classes.indexOf('rudder-no-track') >= 0) {\n return false;\n }\n\n curEl = curEl.parentNode;\n } // if explicitly set \"rudder-include\", at element level, then track the element even if the element is hidden or sensitive.\n\n\n var classes = getClassName(el).split(' ');\n\n if (classes.indexOf('rudder-include') >= 0) {\n return true;\n } // for general elements, do not track input/select/textarea(s)\n\n\n if (isTag(el, 'input') || isTag(el, 'select') || isTag(el, 'textarea') || el.getAttribute('contenteditable') === 'true') {\n return false;\n } else if (el.getAttribute('contenteditable') === 'inherit') {\n for (curEl = el.parentNode; curEl.parentNode && !isTag(curEl, 'body'); curEl = curEl.parentNode) {\n if (curEl.getAttribute('contenteditable') === 'true') {\n return false;\n }\n }\n } // do not track hidden/password elements\n\n\n var type = el.type || '';\n\n if (typeof type === 'string') {\n // it's possible for el.type to be a DOM element if el is a form with a child input[name=\"type\"]\n switch (type.toLowerCase()) {\n case 'hidden':\n return false;\n\n case 'password':\n return false;\n }\n } // filter out data from fields that look like sensitive field -\n // safeguard - match with regex with possible strings as id or name of an element for creditcard, password, ssn, pan, adhar\n\n\n var name = el.name || el.id || '';\n\n if (typeof name === 'string') {\n // it's possible for el.name or el.id to be a DOM element if el is a form with a child input[name=\"name\"]\n var sensitiveNameRegex = /^adhar|cc|cardnum|ccnum|creditcard|csc|cvc|cvv|exp|pan|pass|pwd|routing|seccode|securitycode|securitynum|socialsec|socsec|ssn/i;\n\n if (sensitiveNameRegex.test(name.replace(/[^a-zA-Z0-9]/g, ''))) {\n return false;\n }\n }\n\n return true;\n }\n\n function getClassName(el) {\n switch (_typeof(el.className)) {\n case 'string':\n return el.className;\n\n case 'object':\n // handle cases where className might be SVGAnimatedString or some other type\n return el.className.baseVal || el.getAttribute('class') || '';\n\n default:\n // future proof\n return '';\n }\n }\n\n function trackWindowEvent(e, rudderanalytics) {\n var target = e.target || e.srcElement;\n var formValues;\n\n if (isTextNode(target)) {\n target = target.parentNode;\n }\n\n if (shouldTrackDomEvent(target, e)) {\n if (target.tagName.toLowerCase() == 'form') {\n formValues = {};\n\n for (var i = 0; i < target.elements.length; i++) {\n var formElement = target.elements[i];\n\n if (shouldTrackElement(formElement) && isValueToBeTrackedFromTrackingList(formElement, rudderanalytics.trackValues)) {\n var name = formElement.id ? formElement.id : formElement.name;\n\n if (name && typeof name === 'string') {\n var key = formElement.id ? formElement.id : formElement.name; // formElement.value gives the same thing\n\n var value = formElement.id ? document.getElementById(formElement.id).value : document.getElementsByName(formElement.name)[0].value;\n\n if (formElement.type === 'checkbox' || formElement.type === 'radio') {\n value = formElement.checked;\n }\n\n if (key.trim() !== '') {\n formValues[encodeURIComponent(key)] = encodeURIComponent(value);\n }\n }\n }\n }\n }\n\n var targetElementList = [];\n var curEl = target;\n\n if (isExplicitNoTrack(curEl)) {\n return false;\n }\n\n while (curEl.parentNode && !isTag(curEl, 'body')) {\n if (shouldTrackElement(curEl)) {\n targetElementList.push(curEl);\n }\n\n curEl = curEl.parentNode;\n }\n\n var elementsJson = [];\n var href;\n targetElementList.forEach(function (el) {\n // if the element or a parent element is an anchor tag\n // include the href as a property\n if (el.tagName.toLowerCase() === 'a') {\n href = el.getAttribute('href');\n href = isValueToBeTracked(href) && href;\n }\n\n elementsJson.push(getPropertiesFromElement(el, rudderanalytics));\n });\n\n if (targetElementList && targetElementList.length == 0) {\n return false;\n }\n\n var elementText = '';\n var text = getText(target);\n\n if (text && text.length) {\n elementText = text;\n }\n\n var props = {\n event_type: e.type,\n page: getDefaultPageProperties(),\n elements: elementsJson,\n el_attr_href: href,\n el_text: elementText\n };\n\n if (formValues) {\n props.form_values = formValues;\n }\n\n logger.debug('web_event', props);\n rudderanalytics.track('autotrack', props);\n return true;\n }\n }\n\n function isExplicitNoTrack(el) {\n var classes = getClassName(el).split(' ');\n\n if (classes.indexOf('rudder-no-track') >= 0) {\n return true;\n }\n\n return false;\n } // excerpt from https://github.com/mixpanel/mixpanel-js/blob/master/src/autotrack-utils.js\n\n\n function isValueToBeTracked(value) {\n if (value === null || value === undefined) {\n return false;\n }\n\n if (typeof value === 'string') {\n value = value.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, ''); // check to see if input value looks like a credit card number\n // see: https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9781449327453/ch04s20.html\n\n var ccRegex = /^(?:(4[0-9]{12}(?:[0-9]{3})?)|(5[1-5][0-9]{14})|(6(?:011|5[0-9]{2})[0-9]{12})|(3[47][0-9]{13})|(3(?:0[0-5]|[68][0-9])[0-9]{11})|((?:2131|1800|35[0-9]{3})[0-9]{11}))$/;\n\n if (ccRegex.test((value || '').replace(/[- ]/g, ''))) {\n return false;\n } // check to see if input value looks like a social security number\n\n\n var ssnRegex = /(^\\d{3}-?\\d{2}-?\\d{4}$)/;\n\n if (ssnRegex.test(value)) {\n return false;\n } // check to see if input value looks like a adhar number\n\n\n var adharRegex = /(^\\d{4}-?\\d{4}-?\\d{4}$)/;\n\n if (adharRegex.test(value)) {\n return false;\n } // check to see if input value looks like a PAN number\n\n\n var panRegex = /(^\\w{5}-?\\d{4}-?\\w{1}$)/;\n\n if (panRegex.test(value)) {\n return false;\n }\n }\n\n return true;\n } // if the element name is provided in the valTrackingList while loading rudderanalytics, track the value.\n\n /**\n *\n * @param {*} el\n * @param {*} includeList - valTrackingList provided in rudderanalytics.load()\n */\n\n\n function isValueToBeTrackedFromTrackingList(el, includeList) {\n var elAttributesLength = el.attributes.length;\n\n for (var i = 0; i < elAttributesLength; i++) {\n var value = el.attributes[i].value;\n\n if (includeList.indexOf(value) > -1) {\n return true;\n }\n }\n\n return false;\n }\n\n function getText(el) {\n var text = '';\n el.childNodes.forEach(function (value) {\n if (value.nodeType === Node.TEXT_NODE) {\n var textContent = value.nodeValue.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, ''); // take each word from the text content and check whether the value should be tracked. Also, replace the whitespaces.\n\n var textValue = textContent.split(/(\\s+)/).filter(isValueToBeTracked).join('').replace(/[\\r\\n]/g, ' ');\n text += textValue;\n }\n });\n return text.trim();\n }\n\n function getPropertiesFromElement(elem, rudderanalytics) {\n var props = {\n classes: getClassName(elem).split(' '),\n tag_name: elem.tagName.toLowerCase()\n };\n var attrLength = elem.attributes.length;\n\n for (var i = 0; i < attrLength; i++) {\n var name = elem.attributes[i].name;\n var value = elem.attributes[i].value;\n\n if (value && isValueToBeTracked(value)) {\n props[\"attr__\".concat(name)] = value;\n }\n\n if ((name == 'name' || name == 'id') && isValueToBeTrackedFromTrackingList(elem, rudderanalytics.trackValues)) {\n props.field_value = name == 'id' ? document.getElementById(value).value : document.getElementsByName(value)[0].value;\n\n if (elem.type === 'checkbox' || elem.type === 'radio') {\n props.field_value = elem.checked;\n }\n }\n }\n\n var nthChild = 1;\n var nthOfType = 1;\n var currentElem = elem;\n\n while (currentElem = previousElementSibling(currentElem)) {\n nthChild++;\n\n if (currentElem.tagName === elem.tagName) {\n nthOfType++;\n }\n }\n\n props.nth_child = nthChild;\n props.nth_of_type = nthOfType;\n return props;\n }\n\n function previousElementSibling(el) {\n if (el.previousElementSibling) {\n return el.previousElementSibling;\n }\n\n do {\n el = el.previousSibling;\n } while (el && !isElementNode(el));\n\n return el;\n }\n\n /**\n * @description This is utility function for crc32 algorithm\n * @version v1.0.0 \n */\n\n /**\n * @description generate crc table\n * @params none\n * @returns arrray of CRC table\n */\n var makeCRCTable = function makeCRCTable() {\n var crcTable = [];\n var c;\n\n for (var n = 0; n < 256; n++) {\n c = n;\n\n for (var k = 0; k < 8; k++) {\n c = c & 1 ? 0xedb88320 ^ c >>> 1 : c >>> 1;\n }\n\n crcTable[n] = c;\n }\n\n return crcTable;\n };\n /**\n * \n * @param {string} str\n * @returns {Bystream} crc32\n */\n\n\n var crc32 = function crc32(str) {\n var crcTable = makeCRCTable();\n var crc = 0 ^ -1;\n\n for (var i = 0; i < str.length; i++) {\n crc = crc >>> 8 ^ crcTable[(crc ^ str.charCodeAt(i)) & 0xff];\n }\n\n return (crc ^ -1) >>> 0;\n };\n\n /**\n * @description An interface to fetch user device details.\n * @version v1.0.0\n */\n var USER_INTERFACE = {\n /**\n * @param {*} req\n * @returns {string} user language\n */\n getUserLanguage: function getUserLanguage() {\n return navigator && navigator.language;\n },\n\n /** \n * @param {*} req \n * @returns {string} userAgent\n */\n getUserAgent: function getUserAgent() {\n return navigator && navigator.userAgent;\n }\n };\n\n /**\n * @description This is utility function for decoding from base 64 to utf8\n * @version v1.0.0 \n */\n\n /**\n * @param {string} str base64\n * @returns {string} utf8 \n */\n function b64DecodeUnicode(str) {\n // Going backwards: from bytestream, to percent-encoding, to original string.\n return decodeURIComponent(atob(str).split('').map(function (c) {\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n }).join(''));\n }\n /**\n * @param {string} value\n * @return {string}\n */\n\n\n function decode$3() {\n var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n data = data.endsWith(\"..\") ? data.substr(0, data.length - 2) : data;\n return b64DecodeUnicode(data);\n }\n\n /**\n * @description AMP Linker Parser (works for Rudder, GA or any other linker created by following Google's linker standard.)\n * @version v1.0.0\n * @author Parth Mahajan, Ayush Mehra\n */\n var KEY_VALIDATOR = /^[a-zA-Z0-9\\-_.]+$/;\n var CHECKSUM_OFFSET_MAX_MIN = 1;\n var VALID_VERSION = 1;\n var DELIMITER = \"*\";\n /**\n * Return the key value pairs\n * @param {string} value\n * @return {?Object<string, string>}\n */\n\n function parseLinker(value) {\n var linkerObj = parseLinkerParamValue(value);\n\n if (!linkerObj) {\n return null;\n }\n\n var checksum = linkerObj.checksum,\n serializedIds = linkerObj.serializedIds;\n\n if (!isCheckSumValid(serializedIds, checksum)) {\n return null;\n }\n\n return deserialize(serializedIds);\n }\n /**\n * Parse the linker param value to version checksum and serializedParams\n * @param {string} value\n * @return {?Object}\n */\n\n\n function parseLinkerParamValue(value) {\n var parts = value.split(DELIMITER);\n var isEven = parts.length % 2 == 0;\n\n if (parts.length < 4 || !isEven) {\n // Format <version>*<checksum>*<key1>*<value1>\n // Note: linker makes sure there's at least one pair of non empty key value\n // Make sure there is at least three delimiters.\n return null;\n }\n\n var version = Number(parts.shift());\n\n if (version !== VALID_VERSION) {\n return null;\n }\n\n var checksum = parts.shift();\n var serializedIds = parts.join(DELIMITER);\n return {\n checksum: checksum,\n serializedIds: serializedIds\n };\n }\n /**\n * Check if the checksum is valid with time offset tolerance.\n * @param {string} serializedIds\n * @param {string} checksum\n * @return {boolean}\n */\n\n\n function isCheckSumValid(serializedIds, checksum) {\n var userAgent = USER_INTERFACE.getUserAgent();\n var language = USER_INTERFACE.getUserLanguage();\n\n for (var i = 0; i <= CHECKSUM_OFFSET_MAX_MIN; i++) {\n var calculateCheckSum = getCheckSum(serializedIds, i, userAgent, language);\n\n if (calculateCheckSum == checksum) {\n return true;\n }\n }\n\n return false;\n }\n /**\n * Deserialize the serializedIds and return keyValue pairs.\n * @param {string} serializedIds\n * @return {!Object<string, string>}\n */\n\n\n function deserialize(serializedIds) {\n var keyValuePairs = {};\n var params = serializedIds.split(DELIMITER);\n\n for (var i = 0; i < params.length; i += 2) {\n var key = params[i];\n var valid = KEY_VALIDATOR.test(key);\n\n if (!valid) {\n continue;\n }\n\n var value = decode$3(params[i + 1]); //const value = params[i + 1];\n\n keyValuePairs[key] = value;\n }\n\n return keyValuePairs;\n }\n /**\n * Create a unique checksum hashing the fingerprint and a few other values.\n * @param {string} serializedIds\n * @param {number=} opt_offsetMin\n * @return {string}\n */\n\n\n function getCheckSum(serializedIds, opt_offsetMin, userAgent, language) {\n var fingerprint = getFingerprint(userAgent, language);\n var offset = opt_offsetMin || 0;\n var timestamp = getMinSinceEpoch() - offset;\n var crc = crc32([fingerprint, timestamp, serializedIds].join(DELIMITER)); // Encoded to base36 for less bytes.\n\n return crc.toString(36);\n }\n /**\n * Generates a semi-unique value for page visitor.\n * @return {string}\n */\n\n\n function getFingerprint(userAgent, language) {\n var date = new Date();\n var timezone = date.getTimezoneOffset();\n return [userAgent, timezone, language].join(DELIMITER);\n }\n /**\n * Rounded time used to check if t2 - t1 is within our time tolerance.\n * @return {number}\n */\n\n\n function getMinSinceEpoch() {\n // Timestamp in minutes, floored.\n return Math.floor(Date.now() / 60000);\n }\n\n var queryDefaults = {\n trait: \"ajs_trait_\",\n prop: \"ajs_prop_\"\n }; // https://unpkg.com/test-rudder-sdk@1.0.5/dist/browser.js\n\n /**\n * Add the rudderelement object to flush queue\n *\n * @param {RudderElement} rudderElement\n */\n\n function enqueue(rudderElement, type) {\n if (!this.eventRepository) {\n this.eventRepository = eventRepository;\n }\n\n this.eventRepository.enqueue(rudderElement, type);\n }\n /**\n * class responsible for handling core\n * event tracking functionalities\n */\n\n\n var Analytics = /*#__PURE__*/function () {\n /**\n * Creates an instance of Analytics.\n * @memberof Analytics\n */\n function Analytics() {\n _classCallCheck(this, Analytics);\n\n this.autoTrackHandlersRegistered = false;\n this.autoTrackFeatureEnabled = false;\n this.initialized = false;\n this.areEventsReplayed = false;\n this.trackValues = [];\n this.eventsBuffer = [];\n this.clientIntegrations = [];\n this.loadOnlyIntegrations = {};\n this.clientIntegrationObjects = undefined;\n this.successfullyLoadedIntegration = [];\n this.failedToBeLoadedIntegration = [];\n this.toBeProcessedArray = [];\n this.toBeProcessedByIntegrationArray = [];\n this.storage = Storage$1;\n this.eventRepository = eventRepository;\n this.sendAdblockPage = false;\n this.sendAdblockPageOptions = {};\n this.clientSuppliedCallbacks = {};\n\n this.readyCallback = function () {};\n\n this.executeReadyCallback = undefined;\n this.methodToCallbackMapping = {\n syncPixel: \"syncPixelCallback\"\n };\n this.loaded = false;\n this.loadIntegration = true;\n }\n /**\n * initialize the user after load config\n */\n\n\n _createClass(Analytics, [{\n key: \"initializeUser\",\n value: function initializeUser() {\n this.userId = this.storage.getUserId() != undefined ? this.storage.getUserId() : \"\";\n this.userTraits = this.storage.getUserTraits() != undefined ? this.storage.getUserTraits() : {};\n this.groupId = this.storage.getGroupId() != undefined ? this.storage.getGroupId() : \"\";\n this.groupTraits = this.storage.getGroupTraits() != undefined ? this.storage.getGroupTraits() : {};\n this.anonymousId = this.getAnonymousId(); // save once for storing older values to encrypted\n\n this.storage.setUserId(this.userId);\n this.storage.setAnonymousId(this.anonymousId);\n this.storage.setGroupId(this.groupId);\n this.storage.setUserTraits(this.userTraits);\n this.storage.setGroupTraits(this.groupTraits);\n }\n }, {\n key: \"setInitialPageProperties\",\n value: function setInitialPageProperties() {\n var initialReferrer = this.storage.getInitialReferrer();\n var initialReferringDomain = this.storage.getInitialReferringDomain();\n\n if (initialReferrer == null && initialReferringDomain == null) {\n initialReferrer = getReferrer();\n initialReferringDomain = getReferringDomain(initialReferrer);\n this.storage.setInitialReferrer(initialReferrer);\n this.storage.setInitialReferringDomain(initialReferringDomain);\n }\n }\n /**\n * Process the response from control plane and\n * call initialize for integrations\n *\n * @param {*} status\n * @param {*} response\n * @memberof Analytics\n */\n\n }, {\n key: \"processResponse\",\n value: function processResponse(status, response) {\n try {\n logger.debug(\"===in process response=== \".concat(status));\n\n if (typeof response === 'string') {\n response = JSON.parse(response);\n }\n\n if (response.source.useAutoTracking && !this.autoTrackHandlersRegistered) {\n this.autoTrackFeatureEnabled = true;\n addDomEventHandlers(this);\n this.autoTrackHandlersRegistered = true;\n }\n\n response.source.destinations.forEach(function (destination, index) {\n logger.debug(\"Destination \".concat(index, \" Enabled? \").concat(destination.enabled, \" Type: \").concat(destination.destinationDefinition.name, \" Use Native SDK? true\"));\n\n if (destination.enabled) {\n this.clientIntegrations.push({\n name: destination.destinationDefinition.name,\n config: destination.config\n });\n }\n }, this);\n logger.debug(\"this.clientIntegrations: \", this.clientIntegrations); // intersection of config-plane native sdk destinations with sdk load time destination list\n\n this.clientIntegrations = findAllEnabledDestinations(this.loadOnlyIntegrations, this.clientIntegrations); // remove from the list which don't have support yet in SDK\n\n this.clientIntegrations = this.clientIntegrations.filter(function (intg) {\n return integrations[intg.name] != undefined;\n });\n this.init(this.clientIntegrations);\n } catch (error) {\n handleError(error);\n logger.debug(\"===handling config BE response processing error===\");\n logger.debug(\"autoTrackHandlersRegistered\", this.autoTrackHandlersRegistered);\n\n if (this.autoTrackFeatureEnabled && !this.autoTrackHandlersRegistered) {\n addDomEventHandlers(this);\n this.autoTrackHandlersRegistered = true;\n }\n }\n }\n /**\n * Initialize integrations by addinfg respective scripts\n * keep the instances reference in core\n *\n * @param {*} intgArray\n * @returns\n * @memberof Analytics\n */\n\n }, {\n key: \"init\",\n value: function init(intgArray) {\n var _this = this;\n\n var self = this;\n logger.debug(\"supported intgs \", integrations); // this.clientIntegrationObjects = [];\n\n if (!intgArray || intgArray.length == 0) {\n if (this.readyCallback) {\n this.readyCallback();\n }\n\n this.toBeProcessedByIntegrationArray = [];\n return;\n }\n\n var intgInstance;\n intgArray.forEach(function (intg) {\n try {\n logger.debug(\"[Analytics] init :: trying to initialize integration name:: \", intg.name);\n var intgClass = integrations[intg.name];\n var destConfig = intg.config;\n intgInstance = new intgClass(destConfig, self);\n intgInstance.init();\n logger.debug(\"initializing destination: \", intg);\n\n _this.isInitialized(intgInstance).then(_this.replayEvents);\n } catch (e) {\n logger.error(\"[Analytics] initialize integration (integration.init()) failed :: \", intg.name);\n\n _this.failedToBeLoadedIntegration.push(intgInstance);\n }\n });\n } // eslint-disable-next-line class-methods-use-this\n\n }, {\n key: \"replayEvents\",\n value: function replayEvents(object) {\n if (object.successfullyLoadedIntegration.length + object.failedToBeLoadedIntegration.length === object.clientIntegrations.length && !object.areEventsReplayed) {\n logger.debug(\"===replay events called====\", \" successfully loaded count: \", object.successfullyLoadedIntegration.length, \" failed loaded count: \", object.failedToBeLoadedIntegration.length); // eslint-disable-next-line no-param-reassign\n\n object.clientIntegrationObjects = []; // eslint-disable-next-line no-param-reassign\n\n object.clientIntegrationObjects = object.successfullyLoadedIntegration;\n logger.debug(\"==registering after callback===\", \" after to be called after count : \", object.clientIntegrationObjects.length);\n object.executeReadyCallback = after_1(object.clientIntegrationObjects.length, object.readyCallback);\n logger.debug(\"==registering ready callback===\");\n object.on(\"ready\", object.executeReadyCallback);\n object.clientIntegrationObjects.forEach(function (intg) {\n logger.debug(\"===looping over each successful integration====\");\n\n if (!intg.isReady || intg.isReady()) {\n logger.debug(\"===letting know I am ready=====\", intg.name);\n object.emit(\"ready\");\n }\n });\n\n if (object.toBeProcessedByIntegrationArray.length > 0) {\n // send the queued events to the fetched integration\n object.toBeProcessedByIntegrationArray.forEach(function (event) {\n var methodName = event[0];\n event.shift(); // convert common names to sdk identified name\n\n if (Object.keys(event[0].message.integrations).length > 0) {\n tranformToRudderNames(event[0].message.integrations);\n } // if not specified at event level, All: true is default\n\n\n var clientSuppliedIntegrations = event[0].message.integrations; // get intersection between config plane native enabled destinations\n // (which were able to successfully load on the page) vs user supplied integrations\n\n var succesfulLoadedIntersectClientSuppliedIntegrations = findAllEnabledDestinations(clientSuppliedIntegrations, object.clientIntegrationObjects); // send to all integrations now from the 'toBeProcessedByIntegrationArray' replay queue\n\n for (var i = 0; i < succesfulLoadedIntersectClientSuppliedIntegrations.length; i += 1) {\n try {\n if (!succesfulLoadedIntersectClientSuppliedIntegrations[i].isFailed || !succesfulLoadedIntersectClientSuppliedIntegrations[i].isFailed()) {\n if (succesfulLoadedIntersectClientSuppliedIntegrations[i][methodName]) {\n var _succesfulLoadedInter;\n\n (_succesfulLoadedInter = succesfulLoadedIntersectClientSuppliedIntegrations[i])[methodName].apply(_succesfulLoadedInter, _toConsumableArray(event));\n }\n }\n } catch (error) {\n handleError(error);\n }\n }\n });\n object.toBeProcessedByIntegrationArray = [];\n }\n\n object.areEventsReplayed = true;\n }\n }\n }, {\n key: \"pause\",\n value: function pause(time) {\n return new Promise(function (resolve) {\n setTimeout(resolve, time);\n });\n }\n }, {\n key: \"isInitialized\",\n value: function isInitialized(instance) {\n var _this2 = this;\n\n var time = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return new Promise(function (resolve) {\n if (instance.isLoaded()) {\n logger.debug(\"===integration loaded successfully====\", instance.name);\n\n _this2.successfullyLoadedIntegration.push(instance);\n\n return resolve(_this2);\n }\n\n if (time >= MAX_WAIT_FOR_INTEGRATION_LOAD) {\n logger.debug(\"====max wait over====\");\n\n _this2.failedToBeLoadedIntegration.push(instance);\n\n return resolve(_this2);\n }\n\n _this2.pause(INTEGRATION_LOAD_CHECK_INTERVAL).then(function () {\n logger.debug(\"====after pause, again checking====\");\n return _this2.isInitialized(instance, time + INTEGRATION_LOAD_CHECK_INTERVAL).then(resolve);\n });\n });\n }\n /**\n * Process page params and forward to page call\n *\n * @param {*} category\n * @param {*} name\n * @param {*} properties\n * @param {*} options\n * @param {*} callback\n * @memberof Analytics\n */\n\n }, {\n key: \"page\",\n value: function page(category, name, properties, options, callback) {\n if (!this.loaded) return;\n if (typeof options === \"function\") callback = options, options = null;\n if (typeof properties === \"function\") callback = properties, options = properties = null;\n if (typeof name === \"function\") callback = name, options = properties = name = null;\n if (_typeof(category) === \"object\" && category != null && category != undefined) options = name, properties = category, name = category = null;\n if (_typeof(name) === \"object\" && name != null && name != undefined) options = properties, properties = name, name = null;\n if (typeof category === \"string\" && typeof name !== \"string\") name = category, category = null;\n\n if (this.sendAdblockPage && category != \"RudderJS-Initiated\") {\n this.sendSampleRequest();\n }\n\n this.processPage(category, name, properties, options, callback);\n }\n /**\n * Process track params and forward to track call\n *\n * @param {*} event\n * @param {*} properties\n * @param {*} options\n * @param {*} callback\n * @memberof Analytics\n */\n\n }, {\n key: \"track\",\n value: function track(event, properties, options, callback) {\n if (!this.loaded) return;\n if (typeof options === \"function\") callback = options, options = null;\n if (typeof properties === \"function\") callback = properties, options = null, properties = null;\n this.processTrack(event, properties, options, callback);\n }\n /**\n * Process identify params and forward to indentify call\n *\n * @param {*} userId\n * @param {*} traits\n * @param {*} options\n * @param {*} callback\n * @memberof Analytics\n */\n\n }, {\n key: \"identify\",\n value: function identify(userId, traits, options, callback) {\n if (!this.loaded) return;\n if (typeof options === \"function\") callback = options, options = null;\n if (typeof traits === \"function\") callback = traits, options = null, traits = null;\n if (_typeof(userId) === \"object\") options = traits, traits = userId, userId = this.userId;\n this.processIdentify(userId, traits, options, callback);\n }\n /**\n *\n * @param {*} to\n * @param {*} from\n * @param {*} options\n * @param {*} callback\n */\n\n }, {\n key: \"alias\",\n value: function alias(to, from, options, callback) {\n if (!this.loaded) return;\n if (typeof options === \"function\") callback = options, options = null;\n if (typeof from === \"function\") callback = from, options = null, from = null;\n if (_typeof(from) === \"object\") options = from, from = null;\n var rudderElement = new RudderElementBuilder().setType(\"alias\").build();\n rudderElement.message.previousId = from || (this.userId ? this.userId : this.getAnonymousId());\n rudderElement.message.userId = to;\n this.processAndSendDataToDestinations(\"alias\", rudderElement, options, callback);\n }\n /**\n *\n * @param {*} to\n * @param {*} from\n * @param {*} options\n * @param {*} callback\n */\n\n }, {\n key: \"group\",\n value: function group(groupId, traits, options, callback) {\n if (!this.loaded) return;\n if (!arguments.length) return;\n if (typeof options === \"function\") callback = options, options = null;\n if (typeof traits === \"function\") callback = traits, options = null, traits = null;\n if (_typeof(groupId) === \"object\") options = traits, traits = groupId, groupId = this.groupId;\n this.groupId = groupId;\n this.storage.setGroupId(this.groupId);\n var rudderElement = new RudderElementBuilder().setType(\"group\").build();\n\n if (traits) {\n for (var key in traits) {\n this.groupTraits[key] = traits[key];\n }\n } else {\n this.groupTraits = {};\n }\n\n this.storage.setGroupTraits(this.groupTraits);\n this.processAndSendDataToDestinations(\"group\", rudderElement, options, callback);\n }\n /**\n * Send page call to Rudder BE and to initialized integrations\n *\n * @param {*} category\n * @param {*} name\n * @param {*} properties\n * @param {*} options\n * @param {*} callback\n * @memberof Analytics\n */\n\n }, {\n key: \"processPage\",\n value: function processPage(category, name, properties, options, callback) {\n var rudderElement = new RudderElementBuilder().setType(\"page\").build();\n\n if (!properties) {\n properties = {};\n }\n\n if (name) {\n rudderElement.message.name = name;\n properties.name = name;\n }\n\n if (category) {\n rudderElement.message.category = category;\n properties.category = category;\n }\n\n rudderElement.message.properties = this.getPageProperties(properties); // properties;\n\n this.trackPage(rudderElement, options, callback);\n }\n /**\n * Send track call to Rudder BE and to initialized integrations\n *\n * @param {*} event\n * @param {*} properties\n * @param {*} options\n * @param {*} callback\n * @memberof Analytics\n */\n\n }, {\n key: \"processTrack\",\n value: function processTrack(event, properties, options, callback) {\n var rudderElement = new RudderElementBuilder().setType(\"track\").build();\n\n if (event) {\n rudderElement.setEventName(event);\n }\n\n if (properties) {\n rudderElement.setProperty(properties);\n } else {\n rudderElement.setProperty({});\n }\n\n this.trackEvent(rudderElement, options, callback);\n }\n /**\n * Send identify call to Rudder BE and to initialized integrations\n *\n * @param {*} userId\n * @param {*} traits\n * @param {*} options\n * @param {*} callback\n * @memberof Analytics\n */\n\n }, {\n key: \"processIdentify\",\n value: function processIdentify(userId, traits, options, callback) {\n if (userId && this.userId && userId !== this.userId) {\n this.reset();\n }\n\n this.userId = userId;\n this.storage.setUserId(this.userId);\n var rudderElement = new RudderElementBuilder().setType(\"identify\").build();\n\n if (traits) {\n for (var key in traits) {\n this.userTraits[key] = traits[key];\n }\n\n this.storage.setUserTraits(this.userTraits);\n }\n\n this.identifyUser(rudderElement, options, callback);\n }\n /**\n * Identify call supporting rudderelement from builder\n *\n * @param {*} rudderElement\n * @param {*} callback\n * @memberof Analytics\n */\n\n }, {\n key: \"identifyUser\",\n value: function identifyUser(rudderElement, options, callback) {\n if (rudderElement.message.userId) {\n this.userId = rudderElement.message.userId;\n this.storage.setUserId(this.userId);\n }\n\n if (rudderElement && rudderElement.message && rudderElement.message.context && rudderElement.message.context.traits) {\n this.userTraits = _objectSpread2({}, rudderElement.message.context.traits);\n this.storage.setUserTraits(this.userTraits);\n }\n\n this.processAndSendDataToDestinations(\"identify\", rudderElement, options, callback);\n }\n /**\n * Page call supporting rudderelement from builder\n *\n * @param {*} rudderElement\n * @param {*} callback\n * @memberof Analytics\n */\n\n }, {\n key: \"trackPage\",\n value: function trackPage(rudderElement, options, callback) {\n this.processAndSendDataToDestinations(\"page\", rudderElement, options, callback);\n }\n /**\n * Track call supporting rudderelement from builder\n *\n * @param {*} rudderElement\n * @param {*} callback\n * @memberof Analytics\n */\n\n }, {\n key: \"trackEvent\",\n value: function trackEvent(rudderElement, options, callback) {\n this.processAndSendDataToDestinations(\"track\", rudderElement, options, callback);\n }\n /**\n * Process and send data to destinations along with rudder BE\n *\n * @param {*} type\n * @param {*} rudderElement\n * @param {*} callback\n * @memberof Analytics\n */\n\n }, {\n key: \"processAndSendDataToDestinations\",\n value: function processAndSendDataToDestinations(type, rudderElement, options, callback) {\n try {\n if (!this.anonymousId) {\n this.setAnonymousId();\n } // assign page properties to context\n // rudderElement.message.context.page = getDefaultPageProperties();\n\n\n rudderElement.message.context.traits = _objectSpread2({}, this.userTraits);\n logger.debug(\"anonymousId: \", this.anonymousId);\n rudderElement.message.anonymousId = this.anonymousId;\n rudderElement.message.userId = rudderElement.message.userId ? rudderElement.message.userId : this.userId;\n\n if (type == \"group\") {\n if (this.groupId) {\n rudderElement.message.groupId = this.groupId;\n }\n\n if (this.groupTraits) {\n rudderElement.message.traits = _objectSpread2({}, this.groupTraits);\n }\n }\n\n this.processOptionsParam(rudderElement, options);\n logger.debug(JSON.stringify(rudderElement)); // check for reserved keys and log\n\n checkReservedKeywords(rudderElement.message, type); // structure user supplied integrations object to rudder format\n\n if (Object.keys(rudderElement.message.integrations).length > 0) {\n tranformToRudderNames(rudderElement.message.integrations);\n } // if not specified at event level, All: true is default\n\n\n var clientSuppliedIntegrations = rudderElement.message.integrations; // get intersection between config plane native enabled destinations\n // (which were able to successfully load on the page) vs user supplied integrations\n\n var succesfulLoadedIntersectClientSuppliedIntegrations = findAllEnabledDestinations(clientSuppliedIntegrations, this.clientIntegrationObjects); // try to first send to all integrations, if list populated from BE\n\n try {\n succesfulLoadedIntersectClientSuppliedIntegrations.forEach(function (obj) {\n if (!obj.isFailed || !obj.isFailed()) {\n if (obj[type]) {\n obj[type](rudderElement);\n }\n }\n });\n } catch (err) {\n handleError({\n message: \"[sendToNative]:\".concat(err)\n });\n } // config plane native enabled destinations, still not completely loaded\n // in the page, add the events to a queue and process later\n\n\n if (!this.clientIntegrationObjects) {\n logger.debug(\"pushing in replay queue\"); // new event processing after analytics initialized but integrations not fetched from BE\n\n this.toBeProcessedByIntegrationArray.push([type, rudderElement]);\n } // convert integrations object to server identified names, kind of hack now!\n\n\n transformToServerNames(rudderElement.message.integrations); // self analytics process, send to rudder\n\n enqueue.call(this, rudderElement, type);\n logger.debug(\"\".concat(type, \" is called \"));\n\n if (callback) {\n callback();\n }\n } catch (error) {\n handleError(error);\n }\n }\n /**\n * add campaign parsed details under context\n * @param {*} rudderElement\n */\n\n }, {\n key: \"addCampaignInfo\",\n value: function addCampaignInfo(rudderElement) {\n var _getDefaultPageProper = getDefaultPageProperties(),\n search = _getDefaultPageProper.search;\n\n var campaign = lib(search);\n\n if (rudderElement.message.context && _typeof(rudderElement.message.context) === \"object\") {\n rudderElement.message.context.campaign = campaign;\n }\n }\n /**\n * process options parameter\n * Apart from top level keys merge everyting under context\n * context.page's default properties are overriden by same keys of\n * provided properties in case of page call\n *\n * @param {*} rudderElement\n * @param {*} options\n * @memberof Analytics\n */\n\n }, {\n key: \"processOptionsParam\",\n value: function processOptionsParam(rudderElement, options) {\n var _rudderElement$messag = rudderElement.message,\n type = _rudderElement$messag.type,\n properties = _rudderElement$messag.properties;\n this.addCampaignInfo(rudderElement); // assign page properties to context.page\n\n rudderElement.message.context.page = type == \"page\" ? this.getContextPageProperties(properties) : this.getContextPageProperties();\n var toplevelElements = [\"integrations\", \"anonymousId\", \"originalTimestamp\"];\n\n for (var key in options) {\n if (toplevelElements.includes(key)) {\n rudderElement.message[key] = options[key];\n } else if (key !== \"context\") {\n rudderElement.message.context = lodash_merge(rudderElement.message.context, _defineProperty({}, key, options[key]));\n } else if (_typeof(options[key]) === \"object\" && options[key] != null) {\n rudderElement.message.context = lodash_merge(rudderElement.message.context, _objectSpread2({}, options[key]));\n } else {\n logger.error(\"[Analytics: processOptionsParam] context passed in options is not object\");\n }\n }\n }\n }, {\n key: \"getPageProperties\",\n value: function getPageProperties(properties, options) {\n var defaultPageProperties = getDefaultPageProperties();\n var optionPageProperties = options && options.page ? options.page : {};\n defaultPageProperties.initial_referrer = this.storage.getInitialReferrer();\n defaultPageProperties.initial_referring_domain = this.storage.getInitialReferringDomain();\n\n for (var key in defaultPageProperties) {\n if (properties[key] === undefined) {\n properties[key] = optionPageProperties[key] || defaultPageProperties[key];\n }\n }\n\n return properties;\n } // Assign page properties to context.page if the same property is not provided under context.page\n\n }, {\n key: \"getContextPageProperties\",\n value: function getContextPageProperties(properties) {\n var defaultPageProperties = getDefaultPageProperties();\n var contextPageProperties = {};\n\n for (var key in defaultPageProperties) {\n contextPageProperties[key] = properties && properties[key] ? properties[key] : defaultPageProperties[key];\n }\n\n return contextPageProperties;\n }\n /**\n * Clear user information\n *\n * @memberof Analytics\n */\n\n }, {\n key: \"reset\",\n value: function reset() {\n if (!this.loaded) return;\n this.userId = \"\";\n this.userTraits = {};\n this.groupId = \"\";\n this.groupTraits = {};\n this.storage.clear();\n }\n }, {\n key: \"getAnonymousId\",\n value: function getAnonymousId() {\n // if (!this.loaded) return;\n this.anonymousId = this.storage.getAnonymousId();\n\n if (!this.anonymousId) {\n this.setAnonymousId();\n }\n\n return this.anonymousId;\n }\n /**\n * Sets anonymous id in the followin precedence:\n * 1. anonymousId: Id directly provided to the function.\n * 2. rudderAmpLinkerParm: value generated from linker query parm (rudderstack)\n * using praseLinker util.\n * 3. generateUUID: A new uniquie id is generated and assigned.\n *\n * @param {string} anonymousId\n * @param {string} rudderAmpLinkerParm\n */\n\n }, {\n key: \"setAnonymousId\",\n value: function setAnonymousId(anonymousId, rudderAmpLinkerParm) {\n // if (!this.loaded) return;\n var parsedAnonymousIdObj = rudderAmpLinkerParm ? parseLinker(rudderAmpLinkerParm) : null;\n var parsedAnonymousId = parsedAnonymousIdObj ? parsedAnonymousIdObj.rs_amp_id : null;\n this.anonymousId = anonymousId || parsedAnonymousId || generateUUID();\n this.storage.setAnonymousId(this.anonymousId);\n }\n }, {\n key: \"isValidWriteKey\",\n value: function isValidWriteKey(writeKey) {\n if (!writeKey || typeof writeKey !== \"string\" || writeKey.trim().length == 0) {\n return false;\n }\n\n return true;\n }\n }, {\n key: \"isValidServerUrl\",\n value: function isValidServerUrl(serverUrl) {\n if (!serverUrl || typeof serverUrl !== \"string\" || serverUrl.trim().length == 0) {\n return false;\n }\n\n return true;\n }\n /**\n * Call control pane to get client configs\n *\n * @param {*} writeKey\n * @memberof Analytics\n */\n\n }, {\n key: \"load\",\n value: function load(writeKey, serverUrl, options) {\n var _this3 = this;\n\n logger.debug(\"inside load \");\n if (this.loaded) return;\n var configUrl = CONFIG_URL;\n\n if (!this.isValidWriteKey(writeKey) || !this.isValidServerUrl(serverUrl)) {\n handleError({\n message: \"[Analytics] load:: Unable to load due to wrong writeKey or serverUrl\"\n });\n throw Error(\"failed to initialize\");\n }\n\n if (options && options.logLevel) {\n logger.setLogLevel(options.logLevel);\n }\n\n if (options && options.setCookieDomain) {\n this.storage.options({\n domain: options.setCookieDomain\n });\n }\n\n if (options && options.integrations) {\n _extends(this.loadOnlyIntegrations, options.integrations);\n\n tranformToRudderNames(this.loadOnlyIntegrations);\n }\n\n if (options && options.configUrl) {\n configUrl = getUserProvidedConfigUrl(options.configUrl);\n }\n\n if (options && options.sendAdblockPage) {\n this.sendAdblockPage = true;\n }\n\n if (options && options.sendAdblockPageOptions) {\n if (_typeof(options.sendAdblockPageOptions) === \"object\") {\n this.sendAdblockPageOptions = options.sendAdblockPageOptions;\n }\n }\n\n if (options && options.clientSuppliedCallbacks) {\n // convert to rudder recognised method names\n var tranformedCallbackMapping = {};\n Object.keys(this.methodToCallbackMapping).forEach(function (methodName) {\n if (_this3.methodToCallbackMapping.hasOwnProperty(methodName)) {\n if (options.clientSuppliedCallbacks[_this3.methodToCallbackMapping[methodName]]) {\n tranformedCallbackMapping[methodName] = options.clientSuppliedCallbacks[_this3.methodToCallbackMapping[methodName]];\n }\n }\n });\n\n _extends(this.clientSuppliedCallbacks, tranformedCallbackMapping);\n\n this.registerCallbacks(true);\n }\n\n if (options && options.queueOptions && options.queueOptions != null && _typeof(options.queueOptions) == \"object\") {\n this.eventRepository.startQueue(options.queueOptions);\n } else {\n this.eventRepository.startQueue({});\n }\n\n if (options && options.loadIntegration != undefined) {\n this.loadIntegration = !!options.loadIntegration;\n }\n\n this.eventRepository.writeKey = writeKey;\n\n if (serverUrl) {\n this.eventRepository.url = serverUrl;\n }\n\n this.initializeUser();\n this.setInitialPageProperties();\n this.loaded = true;\n\n if (options && options.valTrackingList && options.valTrackingList.push == Array.prototype.push) {\n this.trackValues = options.valTrackingList;\n }\n\n if (options && options.useAutoTracking) {\n this.autoTrackFeatureEnabled = true;\n\n if (this.autoTrackFeatureEnabled && !this.autoTrackHandlersRegistered) {\n addDomEventHandlers(this);\n this.autoTrackHandlersRegistered = true;\n logger.debug(\"autoTrackHandlersRegistered\", this.autoTrackHandlersRegistered);\n }\n }\n\n function errorHandler(error) {\n handleError(error);\n\n if (this.autoTrackFeatureEnabled && !this.autoTrackHandlersRegistered) {\n addDomEventHandlers(this);\n }\n }\n\n if (options && options.getSourceConfig) {\n if (typeof options.getSourceConfig !== \"function\") {\n handleError('option \"getSourceConfig\" must be a function');\n } else {\n var res = options.getSourceConfig();\n\n if (res instanceof Promise) {\n res.then(function (res) {\n return _this3.processResponse(200, res);\n })[\"catch\"](errorHandler);\n } else {\n this.processResponse(200, res);\n }\n\n processDataInAnalyticsArray(this);\n }\n\n return;\n }\n\n try {\n getJSONTrimmed(this, configUrl, writeKey, this.processResponse);\n } catch (error) {\n errorHandler(error);\n }\n\n processDataInAnalyticsArray(this);\n }\n }, {\n key: \"ready\",\n value: function ready(callback) {\n if (!this.loaded) return;\n\n if (typeof callback === \"function\") {\n this.readyCallback = callback;\n return;\n }\n\n logger.error(\"ready callback is not a function\");\n }\n }, {\n key: \"initializeCallbacks\",\n value: function initializeCallbacks() {\n var _this4 = this;\n\n Object.keys(this.methodToCallbackMapping).forEach(function (methodName) {\n if (_this4.methodToCallbackMapping.hasOwnProperty(methodName)) {\n _this4.on(methodName, function () {});\n }\n });\n }\n }, {\n key: \"registerCallbacks\",\n value: function registerCallbacks(calledFromLoad) {\n var _this5 = this;\n\n if (!calledFromLoad) {\n Object.keys(this.methodToCallbackMapping).forEach(function (methodName) {\n if (_this5.methodToCallbackMapping.hasOwnProperty(methodName)) {\n if (window.rudderanalytics) {\n if (typeof window.rudderanalytics[_this5.methodToCallbackMapping[methodName]] === \"function\") {\n _this5.clientSuppliedCallbacks[methodName] = window.rudderanalytics[_this5.methodToCallbackMapping[methodName]];\n }\n } // let callback =\n // ? typeof window.rudderanalytics[\n // this.methodToCallbackMapping[methodName]\n // ] == \"function\"\n // ? window.rudderanalytics[this.methodToCallbackMapping[methodName]]\n // : () => {}\n // : () => {};\n // logger.debug(\"registerCallbacks\", methodName, callback);\n // this.on(methodName, callback);\n\n }\n });\n }\n\n Object.keys(this.clientSuppliedCallbacks).forEach(function (methodName) {\n if (_this5.clientSuppliedCallbacks.hasOwnProperty(methodName)) {\n logger.debug(\"registerCallbacks\", methodName, _this5.clientSuppliedCallbacks[methodName]);\n\n _this5.on(methodName, _this5.clientSuppliedCallbacks[methodName]);\n }\n });\n }\n }, {\n key: \"sendSampleRequest\",\n value: function sendSampleRequest() {\n ScriptLoader(\"ad-block\", \"//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js\");\n }\n /**\n * parse the given query string into usable Rudder object\n * @param {*} query\n */\n\n }, {\n key: \"parseQueryString\",\n value: function parseQueryString(query) {\n function getTraitsFromQueryObject(qObj) {\n var traits = {};\n Object.keys(qObj).forEach(function (key) {\n if (key.substr(0, queryDefaults.trait.length) == queryDefaults.trait) {\n traits[key.substr(queryDefaults.trait.length)] = qObj[key];\n }\n });\n return traits;\n }\n\n function getEventPropertiesFromQueryObject(qObj) {\n var props = {};\n Object.keys(qObj).forEach(function (key) {\n if (key.substr(0, queryDefaults.prop.length) == queryDefaults.prop) {\n props[key.substr(queryDefaults.prop.length)] = qObj[key];\n }\n });\n return props;\n }\n\n var returnObj = {};\n var queryObject = componentQuerystring.parse(query);\n var userTraits = getTraitsFromQueryObject(queryObject);\n var eventProps = getEventPropertiesFromQueryObject(queryObject);\n\n if (queryObject.ajs_uid) {\n returnObj.userId = queryObject.ajs_uid;\n returnObj.traits = userTraits;\n }\n\n if (queryObject.ajs_aid) {\n returnObj.anonymousId = queryObject.ajs_aid;\n }\n\n if (queryObject.ajs_event) {\n returnObj.event = queryObject.ajs_event;\n returnObj.properties = eventProps;\n }\n\n return returnObj;\n }\n }]);\n\n return Analytics;\n }();\n\n function pushQueryStringDataToAnalyticsArray(obj) {\n if (obj.anonymousId) {\n if (obj.userId) {\n instance.toBeProcessedArray.push([\"setAnonymousId\", obj.anonymousId], [\"identify\", obj.userId, obj.traits]);\n } else {\n instance.toBeProcessedArray.push([\"setAnonymousId\", obj.anonymousId]);\n }\n } else if (obj.userId) {\n instance.toBeProcessedArray.push([\"identify\", obj.userId, obj.traits]);\n }\n\n if (obj.event) {\n instance.toBeProcessedArray.push([\"track\", obj.event, obj.properties]);\n }\n }\n\n function processDataInAnalyticsArray(analytics) {\n if (instance.loaded) {\n for (var i = 0; i < analytics.toBeProcessedArray.length; i++) {\n var event = _toConsumableArray(analytics.toBeProcessedArray[i]);\n\n var method = event[0];\n event.shift();\n logger.debug(\"=====from analytics array, calling method:: \", method);\n analytics[method].apply(analytics, _toConsumableArray(event));\n }\n\n instance.toBeProcessedArray = [];\n }\n }\n\n var instance = new Analytics();\n componentEmitter(instance);\n window.addEventListener(\"error\", function (e) {\n handleError(e, instance);\n }, true); // if (true) {\n // test for adblocker\n // instance.sendSampleRequest()\n // initialize supported callbacks\n\n instance.initializeCallbacks(); // register supported callbacks\n\n instance.registerCallbacks(false);\n var eventsPushedAlready = !!window.rudderanalytics && window.rudderanalytics.push == Array.prototype.push;\n var argumentsArray = window.rudderanalytics;\n\n while (argumentsArray && argumentsArray[0] && argumentsArray[0][0] !== \"load\") {\n argumentsArray.shift();\n }\n\n if (argumentsArray && argumentsArray.length > 0 && argumentsArray[0][0] === \"load\") {\n var method = argumentsArray[0][0];\n argumentsArray[0].shift();\n logger.debug(\"=====from init, calling method:: \", method);\n instance[method].apply(instance, _toConsumableArray(argumentsArray[0]));\n argumentsArray.shift();\n } // once loaded, parse querystring of the page url to send events\n\n\n var parsedQueryObject = instance.parseQueryString(window.location.search);\n pushQueryStringDataToAnalyticsArray(parsedQueryObject);\n\n if (argumentsArray && argumentsArray.length > 0) {\n for (var i$1 = 0; i$1 < argumentsArray.length; i$1++) {\n instance.toBeProcessedArray.push(argumentsArray[i$1]);\n }\n }\n\n if (eventsPushedAlready) {\n processDataInAnalyticsArray(instance);\n } // }\n\n\n var ready = instance.ready.bind(instance);\n var identify = instance.identify.bind(instance);\n var page = instance.page.bind(instance);\n var track = instance.track.bind(instance);\n var alias = instance.alias.bind(instance);\n var group = instance.group.bind(instance);\n var reset = instance.reset.bind(instance);\n var load = instance.load.bind(instance);\n var initialized = instance.initialized = true;\n var getAnonymousId = instance.getAnonymousId.bind(instance);\n var setAnonymousId = instance.setAnonymousId.bind(instance);\n\n exports.alias = alias;\n exports.getAnonymousId = getAnonymousId;\n exports.group = group;\n exports.identify = identify;\n exports.initialized = initialized;\n exports.load = load;\n exports.page = page;\n exports.ready = ready;\n exports.reset = reset;\n exports.setAnonymousId = setAnonymousId;\n exports.track = track;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","\nvar space = require('to-space-case')\n\n/**\n * Export.\n */\n\nmodule.exports = toCamelCase\n\n/**\n * Convert a `string` to camel case.\n *\n * @param {String} string\n * @return {String}\n */\n\nfunction toCamelCase(string) {\n return space(string).replace(/\\s(\\w)/g, function (matches, letter) {\n return letter.toUpperCase()\n })\n}\n","\n/**\n * Export.\n */\n\nmodule.exports = toNoCase\n\n/**\n * Test whether a string is camel-case.\n */\n\nvar hasSpace = /\\s/\nvar hasSeparator = /(_|-|\\.|:)/\nvar hasCamel = /([a-z][A-Z]|[A-Z][a-z])/\n\n/**\n * Remove any starting case from a `string`, like camel or snake, but keep\n * spaces and punctuation that may be important otherwise.\n *\n * @param {String} string\n * @return {String}\n */\n\nfunction toNoCase(string) {\n if (hasSpace.test(string)) return string.toLowerCase()\n if (hasSeparator.test(string)) return (unseparate(string) || string).toLowerCase()\n if (hasCamel.test(string)) return uncamelize(string).toLowerCase()\n return string.toLowerCase()\n}\n\n/**\n * Separator splitter.\n */\n\nvar separatorSplitter = /[\\W_]+(.|$)/g\n\n/**\n * Un-separate a `string`.\n *\n * @param {String} string\n * @return {String}\n */\n\nfunction unseparate(string) {\n return string.replace(separatorSplitter, function (m, next) {\n return next ? ' ' + next : ''\n })\n}\n\n/**\n * Camelcase splitter.\n */\n\nvar camelSplitter = /(.)([A-Z]+)/g\n\n/**\n * Un-camelcase a `string`.\n *\n * @param {String} string\n * @return {String}\n */\n\nfunction uncamelize(string) {\n return string.replace(camelSplitter, function (m, previous, uppers) {\n return previous + ' ' + uppers.toLowerCase().split('').join(' ')\n })\n}\n","\nvar clean = require('to-no-case')\n\n/**\n * Export.\n */\n\nmodule.exports = toSpaceCase\n\n/**\n * Convert a `string` to space case.\n *\n * @param {String} string\n * @return {String}\n */\n\nfunction toSpaceCase(string) {\n return clean(string).replace(/[\\W_]+(.|$)/g, function (matches, match) {\n return match ? ' ' + match : ''\n }).trim()\n}\n","function extend (destination) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (source.hasOwnProperty(key)) destination[key] = source[key];\n }\n }\n return destination\n}\n\nfunction repeat (character, count) {\n return Array(count + 1).join(character)\n}\n\nfunction trimLeadingNewlines (string) {\n return string.replace(/^\\n*/, '')\n}\n\nfunction trimTrailingNewlines (string) {\n // avoid match-at-end regexp bottleneck, see #370\n var indexEnd = string.length;\n while (indexEnd > 0 && string[indexEnd - 1] === '\\n') indexEnd--;\n return string.substring(0, indexEnd)\n}\n\nvar blockElements = [\n 'ADDRESS', 'ARTICLE', 'ASIDE', 'AUDIO', 'BLOCKQUOTE', 'BODY', 'CANVAS',\n 'CENTER', 'DD', 'DIR', 'DIV', 'DL', 'DT', 'FIELDSET', 'FIGCAPTION', 'FIGURE',\n 'FOOTER', 'FORM', 'FRAMESET', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'HEADER',\n 'HGROUP', 'HR', 'HTML', 'ISINDEX', 'LI', 'MAIN', 'MENU', 'NAV', 'NOFRAMES',\n 'NOSCRIPT', 'OL', 'OUTPUT', 'P', 'PRE', 'SECTION', 'TABLE', 'TBODY', 'TD',\n 'TFOOT', 'TH', 'THEAD', 'TR', 'UL'\n];\n\nfunction isBlock (node) {\n return is(node, blockElements)\n}\n\nvar voidElements = [\n 'AREA', 'BASE', 'BR', 'COL', 'COMMAND', 'EMBED', 'HR', 'IMG', 'INPUT',\n 'KEYGEN', 'LINK', 'META', 'PARAM', 'SOURCE', 'TRACK', 'WBR'\n];\n\nfunction isVoid (node) {\n return is(node, voidElements)\n}\n\nfunction hasVoid (node) {\n return has(node, voidElements)\n}\n\nvar meaningfulWhenBlankElements = [\n 'A', 'TABLE', 'THEAD', 'TBODY', 'TFOOT', 'TH', 'TD', 'IFRAME', 'SCRIPT',\n 'AUDIO', 'VIDEO'\n];\n\nfunction isMeaningfulWhenBlank (node) {\n return is(node, meaningfulWhenBlankElements)\n}\n\nfunction hasMeaningfulWhenBlank (node) {\n return has(node, meaningfulWhenBlankElements)\n}\n\nfunction is (node, tagNames) {\n return tagNames.indexOf(node.nodeName) >= 0\n}\n\nfunction has (node, tagNames) {\n return (\n node.getElementsByTagName &&\n tagNames.some(function (tagName) {\n return node.getElementsByTagName(tagName).length\n })\n )\n}\n\nvar rules = {};\n\nrules.paragraph = {\n filter: 'p',\n\n replacement: function (content) {\n return '\\n\\n' + content + '\\n\\n'\n }\n};\n\nrules.lineBreak = {\n filter: 'br',\n\n replacement: function (content, node, options) {\n return options.br + '\\n'\n }\n};\n\nrules.heading = {\n filter: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'],\n\n replacement: function (content, node, options) {\n var hLevel = Number(node.nodeName.charAt(1));\n\n if (options.headingStyle === 'setext' && hLevel < 3) {\n var underline = repeat((hLevel === 1 ? '=' : '-'), content.length);\n return (\n '\\n\\n' + content + '\\n' + underline + '\\n\\n'\n )\n } else {\n return '\\n\\n' + repeat('#', hLevel) + ' ' + content + '\\n\\n'\n }\n }\n};\n\nrules.blockquote = {\n filter: 'blockquote',\n\n replacement: function (content) {\n content = content.replace(/^\\n+|\\n+$/g, '');\n content = content.replace(/^/gm, '> ');\n return '\\n\\n' + content + '\\n\\n'\n }\n};\n\nrules.list = {\n filter: ['ul', 'ol'],\n\n replacement: function (content, node) {\n var parent = node.parentNode;\n if (parent.nodeName === 'LI' && parent.lastElementChild === node) {\n return '\\n' + content\n } else {\n return '\\n\\n' + content + '\\n\\n'\n }\n }\n};\n\nrules.listItem = {\n filter: 'li',\n\n replacement: function (content, node, options) {\n content = content\n .replace(/^\\n+/, '') // remove leading newlines\n .replace(/\\n+$/, '\\n') // replace trailing newlines with just a single one\n .replace(/\\n/gm, '\\n '); // indent\n var prefix = options.bulletListMarker + ' ';\n var parent = node.parentNode;\n if (parent.nodeName === 'OL') {\n var start = parent.getAttribute('start');\n var index = Array.prototype.indexOf.call(parent.children, node);\n prefix = (start ? Number(start) + index : index + 1) + '. ';\n }\n return (\n prefix + content + (node.nextSibling && !/\\n$/.test(content) ? '\\n' : '')\n )\n }\n};\n\nrules.indentedCodeBlock = {\n filter: function (node, options) {\n return (\n options.codeBlockStyle === 'indented' &&\n node.nodeName === 'PRE' &&\n node.firstChild &&\n node.firstChild.nodeName === 'CODE'\n )\n },\n\n replacement: function (content, node, options) {\n return (\n '\\n\\n ' +\n node.firstChild.textContent.replace(/\\n/g, '\\n ') +\n '\\n\\n'\n )\n }\n};\n\nrules.fencedCodeBlock = {\n filter: function (node, options) {\n return (\n options.codeBlockStyle === 'fenced' &&\n node.nodeName === 'PRE' &&\n node.firstChild &&\n node.firstChild.nodeName === 'CODE'\n )\n },\n\n replacement: function (content, node, options) {\n var className = node.firstChild.getAttribute('class') || '';\n var language = (className.match(/language-(\\S+)/) || [null, ''])[1];\n var code = node.firstChild.textContent;\n\n var fenceChar = options.fence.charAt(0);\n var fenceSize = 3;\n var fenceInCodeRegex = new RegExp('^' + fenceChar + '{3,}', 'gm');\n\n var match;\n while ((match = fenceInCodeRegex.exec(code))) {\n if (match[0].length >= fenceSize) {\n fenceSize = match[0].length + 1;\n }\n }\n\n var fence = repeat(fenceChar, fenceSize);\n\n return (\n '\\n\\n' + fence + language + '\\n' +\n code.replace(/\\n$/, '') +\n '\\n' + fence + '\\n\\n'\n )\n }\n};\n\nrules.horizontalRule = {\n filter: 'hr',\n\n replacement: function (content, node, options) {\n return '\\n\\n' + options.hr + '\\n\\n'\n }\n};\n\nrules.inlineLink = {\n filter: function (node, options) {\n return (\n options.linkStyle === 'inlined' &&\n node.nodeName === 'A' &&\n node.getAttribute('href')\n )\n },\n\n replacement: function (content, node) {\n var href = node.getAttribute('href');\n if (href) href = href.replace(/([()])/g, '\\\\$1');\n var title = cleanAttribute(node.getAttribute('title'));\n if (title) title = ' \"' + title.replace(/\"/g, '\\\\\"') + '\"';\n return '[' + content + '](' + href + title + ')'\n }\n};\n\nrules.referenceLink = {\n filter: function (node, options) {\n return (\n options.linkStyle === 'referenced' &&\n node.nodeName === 'A' &&\n node.getAttribute('href')\n )\n },\n\n replacement: function (content, node, options) {\n var href = node.getAttribute('href');\n var title = cleanAttribute(node.getAttribute('title'));\n if (title) title = ' \"' + title + '\"';\n var replacement;\n var reference;\n\n switch (options.linkReferenceStyle) {\n case 'collapsed':\n replacement = '[' + content + '][]';\n reference = '[' + content + ']: ' + href + title;\n break\n case 'shortcut':\n replacement = '[' + content + ']';\n reference = '[' + content + ']: ' + href + title;\n break\n default:\n var id = this.references.length + 1;\n replacement = '[' + content + '][' + id + ']';\n reference = '[' + id + ']: ' + href + title;\n }\n\n this.references.push(reference);\n return replacement\n },\n\n references: [],\n\n append: function (options) {\n var references = '';\n if (this.references.length) {\n references = '\\n\\n' + this.references.join('\\n') + '\\n\\n';\n this.references = []; // Reset references\n }\n return references\n }\n};\n\nrules.emphasis = {\n filter: ['em', 'i'],\n\n replacement: function (content, node, options) {\n if (!content.trim()) return ''\n return options.emDelimiter + content + options.emDelimiter\n }\n};\n\nrules.strong = {\n filter: ['strong', 'b'],\n\n replacement: function (content, node, options) {\n if (!content.trim()) return ''\n return options.strongDelimiter + content + options.strongDelimiter\n }\n};\n\nrules.code = {\n filter: function (node) {\n var hasSiblings = node.previousSibling || node.nextSibling;\n var isCodeBlock = node.parentNode.nodeName === 'PRE' && !hasSiblings;\n\n return node.nodeName === 'CODE' && !isCodeBlock\n },\n\n replacement: function (content) {\n if (!content) return ''\n content = content.replace(/\\r?\\n|\\r/g, ' ');\n\n var extraSpace = /^`|^ .*?[^ ].* $|`$/.test(content) ? ' ' : '';\n var delimiter = '`';\n var matches = content.match(/`+/gm) || [];\n while (matches.indexOf(delimiter) !== -1) delimiter = delimiter + '`';\n\n return delimiter + extraSpace + content + extraSpace + delimiter\n }\n};\n\nrules.image = {\n filter: 'img',\n\n replacement: function (content, node) {\n var alt = cleanAttribute(node.getAttribute('alt'));\n var src = node.getAttribute('src') || '';\n var title = cleanAttribute(node.getAttribute('title'));\n var titlePart = title ? ' \"' + title + '\"' : '';\n return src ? '![' + alt + ']' + '(' + src + titlePart + ')' : ''\n }\n};\n\nfunction cleanAttribute (attribute) {\n return attribute ? attribute.replace(/(\\n+\\s*)+/g, '\\n') : ''\n}\n\n/**\n * Manages a collection of rules used to convert HTML to Markdown\n */\n\nfunction Rules (options) {\n this.options = options;\n this._keep = [];\n this._remove = [];\n\n this.blankRule = {\n replacement: options.blankReplacement\n };\n\n this.keepReplacement = options.keepReplacement;\n\n this.defaultRule = {\n replacement: options.defaultReplacement\n };\n\n this.array = [];\n for (var key in options.rules) this.array.push(options.rules[key]);\n}\n\nRules.prototype = {\n add: function (key, rule) {\n this.array.unshift(rule);\n },\n\n keep: function (filter) {\n this._keep.unshift({\n filter: filter,\n replacement: this.keepReplacement\n });\n },\n\n remove: function (filter) {\n this._remove.unshift({\n filter: filter,\n replacement: function () {\n return ''\n }\n });\n },\n\n forNode: function (node) {\n if (node.isBlank) return this.blankRule\n var rule;\n\n if ((rule = findRule(this.array, node, this.options))) return rule\n if ((rule = findRule(this._keep, node, this.options))) return rule\n if ((rule = findRule(this._remove, node, this.options))) return rule\n\n return this.defaultRule\n },\n\n forEach: function (fn) {\n for (var i = 0; i < this.array.length; i++) fn(this.array[i], i);\n }\n};\n\nfunction findRule (rules, node, options) {\n for (var i = 0; i < rules.length; i++) {\n var rule = rules[i];\n if (filterValue(rule, node, options)) return rule\n }\n return void 0\n}\n\nfunction filterValue (rule, node, options) {\n var filter = rule.filter;\n if (typeof filter === 'string') {\n if (filter === node.nodeName.toLowerCase()) return true\n } else if (Array.isArray(filter)) {\n if (filter.indexOf(node.nodeName.toLowerCase()) > -1) return true\n } else if (typeof filter === 'function') {\n if (filter.call(rule, node, options)) return true\n } else {\n throw new TypeError('`filter` needs to be a string, array, or function')\n }\n}\n\n/**\n * The collapseWhitespace function is adapted from collapse-whitespace\n * by Luc Thevenard.\n *\n * The MIT License (MIT)\n *\n * Copyright (c) 2014 Luc Thevenard <lucthevenard@gmail.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n/**\n * collapseWhitespace(options) removes extraneous whitespace from an the given element.\n *\n * @param {Object} options\n */\nfunction collapseWhitespace (options) {\n var element = options.element;\n var isBlock = options.isBlock;\n var isVoid = options.isVoid;\n var isPre = options.isPre || function (node) {\n return node.nodeName === 'PRE'\n };\n\n if (!element.firstChild || isPre(element)) return\n\n var prevText = null;\n var keepLeadingWs = false;\n\n var prev = null;\n var node = next(prev, element, isPre);\n\n while (node !== element) {\n if (node.nodeType === 3 || node.nodeType === 4) { // Node.TEXT_NODE or Node.CDATA_SECTION_NODE\n var text = node.data.replace(/[ \\r\\n\\t]+/g, ' ');\n\n if ((!prevText || / $/.test(prevText.data)) &&\n !keepLeadingWs && text[0] === ' ') {\n text = text.substr(1);\n }\n\n // `text` might be empty at this point.\n if (!text) {\n node = remove(node);\n continue\n }\n\n node.data = text;\n\n prevText = node;\n } else if (node.nodeType === 1) { // Node.ELEMENT_NODE\n if (isBlock(node) || node.nodeName === 'BR') {\n if (prevText) {\n prevText.data = prevText.data.replace(/ $/, '');\n }\n\n prevText = null;\n keepLeadingWs = false;\n } else if (isVoid(node) || isPre(node)) {\n // Avoid trimming space around non-block, non-BR void elements and inline PRE.\n prevText = null;\n keepLeadingWs = true;\n } else if (prevText) {\n // Drop protection if set previously.\n keepLeadingWs = false;\n }\n } else {\n node = remove(node);\n continue\n }\n\n var nextNode = next(prev, node, isPre);\n prev = node;\n node = nextNode;\n }\n\n if (prevText) {\n prevText.data = prevText.data.replace(/ $/, '');\n if (!prevText.data) {\n remove(prevText);\n }\n }\n}\n\n/**\n * remove(node) removes the given node from the DOM and returns the\n * next node in the sequence.\n *\n * @param {Node} node\n * @return {Node} node\n */\nfunction remove (node) {\n var next = node.nextSibling || node.parentNode;\n\n node.parentNode.removeChild(node);\n\n return next\n}\n\n/**\n * next(prev, current, isPre) returns the next node in the sequence, given the\n * current and previous nodes.\n *\n * @param {Node} prev\n * @param {Node} current\n * @param {Function} isPre\n * @return {Node}\n */\nfunction next (prev, current, isPre) {\n if ((prev && prev.parentNode === current) || isPre(current)) {\n return current.nextSibling || current.parentNode\n }\n\n return current.firstChild || current.nextSibling || current.parentNode\n}\n\n/*\n * Set up window for Node.js\n */\n\nvar root = (typeof window !== 'undefined' ? window : {});\n\n/*\n * Parsing HTML strings\n */\n\nfunction canParseHTMLNatively () {\n var Parser = root.DOMParser;\n var canParse = false;\n\n // Adapted from https://gist.github.com/1129031\n // Firefox/Opera/IE throw errors on unsupported types\n try {\n // WebKit returns null on unsupported types\n if (new Parser().parseFromString('', 'text/html')) {\n canParse = true;\n }\n } catch (e) {}\n\n return canParse\n}\n\nfunction createHTMLParser () {\n var Parser = function () {};\n\n {\n if (shouldUseActiveX()) {\n Parser.prototype.parseFromString = function (string) {\n var doc = new window.ActiveXObject('htmlfile');\n doc.designMode = 'on'; // disable on-page scripts\n doc.open();\n doc.write(string);\n doc.close();\n return doc\n };\n } else {\n Parser.prototype.parseFromString = function (string) {\n var doc = document.implementation.createHTMLDocument('');\n doc.open();\n doc.write(string);\n doc.close();\n return doc\n };\n }\n }\n return Parser\n}\n\nfunction shouldUseActiveX () {\n var useActiveX = false;\n try {\n document.implementation.createHTMLDocument('').open();\n } catch (e) {\n if (root.ActiveXObject) useActiveX = true;\n }\n return useActiveX\n}\n\nvar HTMLParser = canParseHTMLNatively() ? root.DOMParser : createHTMLParser();\n\nfunction RootNode (input, options) {\n var root;\n if (typeof input === 'string') {\n var doc = htmlParser().parseFromString(\n // DOM parsers arrange elements in the <head> and <body>.\n // Wrapping in a custom element ensures elements are reliably arranged in\n // a single element.\n '<x-turndown id=\"turndown-root\">' + input + '</x-turndown>',\n 'text/html'\n );\n root = doc.getElementById('turndown-root');\n } else {\n root = input.cloneNode(true);\n }\n collapseWhitespace({\n element: root,\n isBlock: isBlock,\n isVoid: isVoid,\n isPre: options.preformattedCode ? isPreOrCode : null\n });\n\n return root\n}\n\nvar _htmlParser;\nfunction htmlParser () {\n _htmlParser = _htmlParser || new HTMLParser();\n return _htmlParser\n}\n\nfunction isPreOrCode (node) {\n return node.nodeName === 'PRE' || node.nodeName === 'CODE'\n}\n\nfunction Node (node, options) {\n node.isBlock = isBlock(node);\n node.isCode = node.nodeName === 'CODE' || node.parentNode.isCode;\n node.isBlank = isBlank(node);\n node.flankingWhitespace = flankingWhitespace(node, options);\n return node\n}\n\nfunction isBlank (node) {\n return (\n !isVoid(node) &&\n !isMeaningfulWhenBlank(node) &&\n /^\\s*$/i.test(node.textContent) &&\n !hasVoid(node) &&\n !hasMeaningfulWhenBlank(node)\n )\n}\n\nfunction flankingWhitespace (node, options) {\n if (node.isBlock || (options.preformattedCode && node.isCode)) {\n return { leading: '', trailing: '' }\n }\n\n var edges = edgeWhitespace(node.textContent);\n\n // abandon leading ASCII WS if left-flanked by ASCII WS\n if (edges.leadingAscii && isFlankedByWhitespace('left', node, options)) {\n edges.leading = edges.leadingNonAscii;\n }\n\n // abandon trailing ASCII WS if right-flanked by ASCII WS\n if (edges.trailingAscii && isFlankedByWhitespace('right', node, options)) {\n edges.trailing = edges.trailingNonAscii;\n }\n\n return { leading: edges.leading, trailing: edges.trailing }\n}\n\nfunction edgeWhitespace (string) {\n var m = string.match(/^(([ \\t\\r\\n]*)(\\s*))(?:(?=\\S)[\\s\\S]*\\S)?((\\s*?)([ \\t\\r\\n]*))$/);\n return {\n leading: m[1], // whole string for whitespace-only strings\n leadingAscii: m[2],\n leadingNonAscii: m[3],\n trailing: m[4], // empty for whitespace-only strings\n trailingNonAscii: m[5],\n trailingAscii: m[6]\n }\n}\n\nfunction isFlankedByWhitespace (side, node, options) {\n var sibling;\n var regExp;\n var isFlanked;\n\n if (side === 'left') {\n sibling = node.previousSibling;\n regExp = / $/;\n } else {\n sibling = node.nextSibling;\n regExp = /^ /;\n }\n\n if (sibling) {\n if (sibling.nodeType === 3) {\n isFlanked = regExp.test(sibling.nodeValue);\n } else if (options.preformattedCode && sibling.nodeName === 'CODE') {\n isFlanked = false;\n } else if (sibling.nodeType === 1 && !isBlock(sibling)) {\n isFlanked = regExp.test(sibling.textContent);\n }\n }\n return isFlanked\n}\n\nvar reduce = Array.prototype.reduce;\nvar escapes = [\n [/\\\\/g, '\\\\\\\\'],\n [/\\*/g, '\\\\*'],\n [/^-/g, '\\\\-'],\n [/^\\+ /g, '\\\\+ '],\n [/^(=+)/g, '\\\\$1'],\n [/^(#{1,6}) /g, '\\\\$1 '],\n [/`/g, '\\\\`'],\n [/^~~~/g, '\\\\~~~'],\n [/\\[/g, '\\\\['],\n [/\\]/g, '\\\\]'],\n [/^>/g, '\\\\>'],\n [/_/g, '\\\\_'],\n [/^(\\d+)\\. /g, '$1\\\\. ']\n];\n\nfunction TurndownService (options) {\n if (!(this instanceof TurndownService)) return new TurndownService(options)\n\n var defaults = {\n rules: rules,\n headingStyle: 'setext',\n hr: '* * *',\n bulletListMarker: '*',\n codeBlockStyle: 'indented',\n fence: '```',\n emDelimiter: '_',\n strongDelimiter: '**',\n linkStyle: 'inlined',\n linkReferenceStyle: 'full',\n br: ' ',\n preformattedCode: false,\n blankReplacement: function (content, node) {\n return node.isBlock ? '\\n\\n' : ''\n },\n keepReplacement: function (content, node) {\n return node.isBlock ? '\\n\\n' + node.outerHTML + '\\n\\n' : node.outerHTML\n },\n defaultReplacement: function (content, node) {\n return node.isBlock ? '\\n\\n' + content + '\\n\\n' : content\n }\n };\n this.options = extend({}, defaults, options);\n this.rules = new Rules(this.options);\n}\n\nTurndownService.prototype = {\n /**\n * The entry point for converting a string or DOM node to Markdown\n * @public\n * @param {String|HTMLElement} input The string or DOM node to convert\n * @returns A Markdown representation of the input\n * @type String\n */\n\n turndown: function (input) {\n if (!canConvert(input)) {\n throw new TypeError(\n input + ' is not a string, or an element/document/fragment node.'\n )\n }\n\n if (input === '') return ''\n\n var output = process.call(this, new RootNode(input, this.options));\n return postProcess.call(this, output)\n },\n\n /**\n * Add one or more plugins\n * @public\n * @param {Function|Array} plugin The plugin or array of plugins to add\n * @returns The Turndown instance for chaining\n * @type Object\n */\n\n use: function (plugin) {\n if (Array.isArray(plugin)) {\n for (var i = 0; i < plugin.length; i++) this.use(plugin[i]);\n } else if (typeof plugin === 'function') {\n plugin(this);\n } else {\n throw new TypeError('plugin must be a Function or an Array of Functions')\n }\n return this\n },\n\n /**\n * Adds a rule\n * @public\n * @param {String} key The unique key of the rule\n * @param {Object} rule The rule\n * @returns The Turndown instance for chaining\n * @type Object\n */\n\n addRule: function (key, rule) {\n this.rules.add(key, rule);\n return this\n },\n\n /**\n * Keep a node (as HTML) that matches the filter\n * @public\n * @param {String|Array|Function} filter The unique key of the rule\n * @returns The Turndown instance for chaining\n * @type Object\n */\n\n keep: function (filter) {\n this.rules.keep(filter);\n return this\n },\n\n /**\n * Remove a node that matches the filter\n * @public\n * @param {String|Array|Function} filter The unique key of the rule\n * @returns The Turndown instance for chaining\n * @type Object\n */\n\n remove: function (filter) {\n this.rules.remove(filter);\n return this\n },\n\n /**\n * Escapes Markdown syntax\n * @public\n * @param {String} string The string to escape\n * @returns A string with Markdown syntax escaped\n * @type String\n */\n\n escape: function (string) {\n return escapes.reduce(function (accumulator, escape) {\n return accumulator.replace(escape[0], escape[1])\n }, string)\n }\n};\n\n/**\n * Reduces a DOM node down to its Markdown string equivalent\n * @private\n * @param {HTMLElement} parentNode The node to convert\n * @returns A Markdown representation of the node\n * @type String\n */\n\nfunction process (parentNode) {\n var self = this;\n return reduce.call(parentNode.childNodes, function (output, node) {\n node = new Node(node, self.options);\n\n var replacement = '';\n if (node.nodeType === 3) {\n replacement = node.isCode ? node.nodeValue : self.escape(node.nodeValue);\n } else if (node.nodeType === 1) {\n replacement = replacementForNode.call(self, node);\n }\n\n return join(output, replacement)\n }, '')\n}\n\n/**\n * Appends strings as each rule requires and trims the output\n * @private\n * @param {String} output The conversion output\n * @returns A trimmed version of the ouput\n * @type String\n */\n\nfunction postProcess (output) {\n var self = this;\n this.rules.forEach(function (rule) {\n if (typeof rule.append === 'function') {\n output = join(output, rule.append(self.options));\n }\n });\n\n return output.replace(/^[\\t\\r\\n]+/, '').replace(/[\\t\\r\\n\\s]+$/, '')\n}\n\n/**\n * Converts an element node to its Markdown equivalent\n * @private\n * @param {HTMLElement} node The node to convert\n * @returns A Markdown representation of the node\n * @type String\n */\n\nfunction replacementForNode (node) {\n var rule = this.rules.forNode(node);\n var content = process.call(this, node);\n var whitespace = node.flankingWhitespace;\n if (whitespace.leading || whitespace.trailing) content = content.trim();\n return (\n whitespace.leading +\n rule.replacement(content, node, this.options) +\n whitespace.trailing\n )\n}\n\n/**\n * Joins replacement to the current output with appropriate number of new lines\n * @private\n * @param {String} output The current conversion output\n * @param {String} replacement The string to append to the output\n * @returns Joined output\n * @type String\n */\n\nfunction join (output, replacement) {\n var s1 = trimTrailingNewlines(output);\n var s2 = trimLeadingNewlines(replacement);\n var nls = Math.max(output.length - s1.length, replacement.length - s2.length);\n var separator = '\\n\\n'.substring(0, nls);\n\n return s1 + separator + s2\n}\n\n/**\n * Determines whether an input can be converted\n * @private\n * @param {String|HTMLElement} input Describe this parameter\n * @returns Describe what it returns\n * @type String|Object|Array|Boolean|Number\n */\n\nfunction canConvert (input) {\n return (\n input != null && (\n typeof input === 'string' ||\n (input.nodeType && (\n input.nodeType === 1 || input.nodeType === 9 || input.nodeType === 11\n ))\n )\n )\n}\n\nexport default TurndownService;\n","var deepFreezeEs6 = {exports: {}};\n\nfunction deepFreeze(obj) {\n if (obj instanceof Map) {\n obj.clear = obj.delete = obj.set = function () {\n throw new Error('map is read-only');\n };\n } else if (obj instanceof Set) {\n obj.add = obj.clear = obj.delete = function () {\n throw new Error('set is read-only');\n };\n }\n\n // Freeze self\n Object.freeze(obj);\n\n Object.getOwnPropertyNames(obj).forEach(function (name) {\n var prop = obj[name];\n\n // Freeze prop if it is an object\n if (typeof prop == 'object' && !Object.isFrozen(prop)) {\n deepFreeze(prop);\n }\n });\n\n return obj;\n}\n\ndeepFreezeEs6.exports = deepFreeze;\ndeepFreezeEs6.exports.default = deepFreeze;\n\n/** @typedef {import('highlight.js').CallbackResponse} CallbackResponse */\n/** @typedef {import('highlight.js').CompiledMode} CompiledMode */\n/** @implements CallbackResponse */\n\nclass Response {\n /**\n * @param {CompiledMode} mode\n */\n constructor(mode) {\n // eslint-disable-next-line no-undefined\n if (mode.data === undefined) mode.data = {};\n\n this.data = mode.data;\n this.isMatchIgnored = false;\n }\n\n ignoreMatch() {\n this.isMatchIgnored = true;\n }\n}\n\n/**\n * @param {string} value\n * @returns {string}\n */\nfunction escapeHTML(value) {\n return value\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\n/**\n * performs a shallow merge of multiple objects into one\n *\n * @template T\n * @param {T} original\n * @param {Record<string,any>[]} objects\n * @returns {T} a single new object\n */\nfunction inherit$1(original, ...objects) {\n /** @type Record<string,any> */\n const result = Object.create(null);\n\n for (const key in original) {\n result[key] = original[key];\n }\n objects.forEach(function(obj) {\n for (const key in obj) {\n result[key] = obj[key];\n }\n });\n return /** @type {T} */ (result);\n}\n\n/**\n * @typedef {object} Renderer\n * @property {(text: string) => void} addText\n * @property {(node: Node) => void} openNode\n * @property {(node: Node) => void} closeNode\n * @property {() => string} value\n */\n\n/** @typedef {{scope?: string, language?: string, sublanguage?: boolean}} Node */\n/** @typedef {{walk: (r: Renderer) => void}} Tree */\n/** */\n\nconst SPAN_CLOSE = '</span>';\n\n/**\n * Determines if a node needs to be wrapped in <span>\n *\n * @param {Node} node */\nconst emitsWrappingTags = (node) => {\n // rarely we can have a sublanguage where language is undefined\n // TODO: track down why\n return !!node.scope || (node.sublanguage && node.language);\n};\n\n/**\n *\n * @param {string} name\n * @param {{prefix:string}} options\n */\nconst scopeToCSSClass = (name, { prefix }) => {\n if (name.includes(\".\")) {\n const pieces = name.split(\".\");\n return [\n `${prefix}${pieces.shift()}`,\n ...(pieces.map((x, i) => `${x}${\"_\".repeat(i + 1)}`))\n ].join(\" \");\n }\n return `${prefix}${name}`;\n};\n\n/** @type {Renderer} */\nclass HTMLRenderer {\n /**\n * Creates a new HTMLRenderer\n *\n * @param {Tree} parseTree - the parse tree (must support `walk` API)\n * @param {{classPrefix: string}} options\n */\n constructor(parseTree, options) {\n this.buffer = \"\";\n this.classPrefix = options.classPrefix;\n parseTree.walk(this);\n }\n\n /**\n * Adds texts to the output stream\n *\n * @param {string} text */\n addText(text) {\n this.buffer += escapeHTML(text);\n }\n\n /**\n * Adds a node open to the output stream (if needed)\n *\n * @param {Node} node */\n openNode(node) {\n if (!emitsWrappingTags(node)) return;\n\n let className = \"\";\n if (node.sublanguage) {\n className = `language-${node.language}`;\n } else {\n className = scopeToCSSClass(node.scope, { prefix: this.classPrefix });\n }\n this.span(className);\n }\n\n /**\n * Adds a node close to the output stream (if needed)\n *\n * @param {Node} node */\n closeNode(node) {\n if (!emitsWrappingTags(node)) return;\n\n this.buffer += SPAN_CLOSE;\n }\n\n /**\n * returns the accumulated buffer\n */\n value() {\n return this.buffer;\n }\n\n // helpers\n\n /**\n * Builds a span element\n *\n * @param {string} className */\n span(className) {\n this.buffer += `<span class=\"${className}\">`;\n }\n}\n\n/** @typedef {{scope?: string, language?: string, sublanguage?: boolean, children: Node[]} | string} Node */\n/** @typedef {{scope?: string, language?: string, sublanguage?: boolean, children: Node[]} } DataNode */\n/** @typedef {import('highlight.js').Emitter} Emitter */\n/** */\n\n/** @returns {DataNode} */\nconst newNode = (opts = {}) => {\n /** @type DataNode */\n const result = { children: [] };\n Object.assign(result, opts);\n return result;\n};\n\nclass TokenTree {\n constructor() {\n /** @type DataNode */\n this.rootNode = newNode();\n this.stack = [this.rootNode];\n }\n\n get top() {\n return this.stack[this.stack.length - 1];\n }\n\n get root() { return this.rootNode; }\n\n /** @param {Node} node */\n add(node) {\n this.top.children.push(node);\n }\n\n /** @param {string} scope */\n openNode(scope) {\n /** @type Node */\n const node = newNode({ scope });\n this.add(node);\n this.stack.push(node);\n }\n\n closeNode() {\n if (this.stack.length > 1) {\n return this.stack.pop();\n }\n // eslint-disable-next-line no-undefined\n return undefined;\n }\n\n closeAllNodes() {\n while (this.closeNode());\n }\n\n toJSON() {\n return JSON.stringify(this.rootNode, null, 4);\n }\n\n /**\n * @typedef { import(\"./html_renderer\").Renderer } Renderer\n * @param {Renderer} builder\n */\n walk(builder) {\n // this does not\n return this.constructor._walk(builder, this.rootNode);\n // this works\n // return TokenTree._walk(builder, this.rootNode);\n }\n\n /**\n * @param {Renderer} builder\n * @param {Node} node\n */\n static _walk(builder, node) {\n if (typeof node === \"string\") {\n builder.addText(node);\n } else if (node.children) {\n builder.openNode(node);\n node.children.forEach((child) => this._walk(builder, child));\n builder.closeNode(node);\n }\n return builder;\n }\n\n /**\n * @param {Node} node\n */\n static _collapse(node) {\n if (typeof node === \"string\") return;\n if (!node.children) return;\n\n if (node.children.every(el => typeof el === \"string\")) {\n // node.text = node.children.join(\"\");\n // delete node.children;\n node.children = [node.children.join(\"\")];\n } else {\n node.children.forEach((child) => {\n TokenTree._collapse(child);\n });\n }\n }\n}\n\n/**\n Currently this is all private API, but this is the minimal API necessary\n that an Emitter must implement to fully support the parser.\n\n Minimal interface:\n\n - addKeyword(text, scope)\n - addText(text)\n - addSublanguage(emitter, subLanguageName)\n - finalize()\n - openNode(scope)\n - closeNode()\n - closeAllNodes()\n - toHTML()\n\n*/\n\n/**\n * @implements {Emitter}\n */\nclass TokenTreeEmitter extends TokenTree {\n /**\n * @param {*} options\n */\n constructor(options) {\n super();\n this.options = options;\n }\n\n /**\n * @param {string} text\n * @param {string} scope\n */\n addKeyword(text, scope) {\n if (text === \"\") { return; }\n\n this.openNode(scope);\n this.addText(text);\n this.closeNode();\n }\n\n /**\n * @param {string} text\n */\n addText(text) {\n if (text === \"\") { return; }\n\n this.add(text);\n }\n\n /**\n * @param {Emitter & {root: DataNode}} emitter\n * @param {string} name\n */\n addSublanguage(emitter, name) {\n /** @type DataNode */\n const node = emitter.root;\n node.sublanguage = true;\n node.language = name;\n this.add(node);\n }\n\n toHTML() {\n const renderer = new HTMLRenderer(this, this.options);\n return renderer.value();\n }\n\n finalize() {\n return true;\n }\n}\n\n/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction lookahead(re) {\n return concat('(?=', re, ')');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction anyNumberOfTimes(re) {\n return concat('(?:', re, ')*');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction optional(re) {\n return concat('(?:', re, ')?');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/**\n * @param { Array<string | RegExp | Object> } args\n * @returns {object}\n */\nfunction stripOptionsFromArgs(args) {\n const opts = args[args.length - 1];\n\n if (typeof opts === 'object' && opts.constructor === Object) {\n args.splice(args.length - 1, 1);\n return opts;\n } else {\n return {};\n }\n}\n\n/** @typedef { {capture?: boolean} } RegexEitherOptions */\n\n/**\n * Any of the passed expresssions may match\n *\n * Creates a huge this | this | that | that match\n * @param {(RegExp | string)[] | [...(RegExp | string)[], RegexEitherOptions]} args\n * @returns {string}\n */\nfunction either(...args) {\n /** @type { object & {capture?: boolean} } */\n const opts = stripOptionsFromArgs(args);\n const joined = '('\n + (opts.capture ? \"\" : \"?:\")\n + args.map((x) => source(x)).join(\"|\") + \")\";\n return joined;\n}\n\n/**\n * @param {RegExp | string} re\n * @returns {number}\n */\nfunction countMatchGroups(re) {\n return (new RegExp(re.toString() + '|')).exec('').length - 1;\n}\n\n/**\n * Does lexeme start with a regular expression match at the beginning\n * @param {RegExp} re\n * @param {string} lexeme\n */\nfunction startsWith(re, lexeme) {\n const match = re && re.exec(lexeme);\n return match && match.index === 0;\n}\n\n// BACKREF_RE matches an open parenthesis or backreference. To avoid\n// an incorrect parse, it additionally matches the following:\n// - [...] elements, where the meaning of parentheses and escapes change\n// - other escape sequences, so we do not misparse escape sequences as\n// interesting elements\n// - non-matching or lookahead parentheses, which do not capture. These\n// follow the '(' with a '?'.\nconst BACKREF_RE = /\\[(?:[^\\\\\\]]|\\\\.)*\\]|\\(\\??|\\\\([1-9][0-9]*)|\\\\./;\n\n// **INTERNAL** Not intended for outside usage\n// join logically computes regexps.join(separator), but fixes the\n// backreferences so they continue to match.\n// it also places each individual regular expression into it's own\n// match group, keeping track of the sequencing of those match groups\n// is currently an exercise for the caller. :-)\n/**\n * @param {(string | RegExp)[]} regexps\n * @param {{joinWith: string}} opts\n * @returns {string}\n */\nfunction _rewriteBackreferences(regexps, { joinWith }) {\n let numCaptures = 0;\n\n return regexps.map((regex) => {\n numCaptures += 1;\n const offset = numCaptures;\n let re = source(regex);\n let out = '';\n\n while (re.length > 0) {\n const match = BACKREF_RE.exec(re);\n if (!match) {\n out += re;\n break;\n }\n out += re.substring(0, match.index);\n re = re.substring(match.index + match[0].length);\n if (match[0][0] === '\\\\' && match[1]) {\n // Adjust the backreference.\n out += '\\\\' + String(Number(match[1]) + offset);\n } else {\n out += match[0];\n if (match[0] === '(') {\n numCaptures++;\n }\n }\n }\n return out;\n }).map(re => `(${re})`).join(joinWith);\n}\n\n/** @typedef {import('highlight.js').Mode} Mode */\n/** @typedef {import('highlight.js').ModeCallback} ModeCallback */\n\n// Common regexps\nconst MATCH_NOTHING_RE = /\\b\\B/;\nconst IDENT_RE = '[a-zA-Z]\\\\w*';\nconst UNDERSCORE_IDENT_RE = '[a-zA-Z_]\\\\w*';\nconst NUMBER_RE = '\\\\b\\\\d+(\\\\.\\\\d+)?';\nconst C_NUMBER_RE = '(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)'; // 0x..., 0..., decimal, float\nconst BINARY_NUMBER_RE = '\\\\b(0b[01]+)'; // 0b...\nconst RE_STARTERS_RE = '!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~';\n\n/**\n* @param { Partial<Mode> & {binary?: string | RegExp} } opts\n*/\nconst SHEBANG = (opts = {}) => {\n const beginShebang = /^#![ ]*\\//;\n if (opts.binary) {\n opts.begin = concat(\n beginShebang,\n /.*\\b/,\n opts.binary,\n /\\b.*/);\n }\n return inherit$1({\n scope: 'meta',\n begin: beginShebang,\n end: /$/,\n relevance: 0,\n /** @type {ModeCallback} */\n \"on:begin\": (m, resp) => {\n if (m.index !== 0) resp.ignoreMatch();\n }\n }, opts);\n};\n\n// Common modes\nconst BACKSLASH_ESCAPE = {\n begin: '\\\\\\\\[\\\\s\\\\S]', relevance: 0\n};\nconst APOS_STRING_MODE = {\n scope: 'string',\n begin: '\\'',\n end: '\\'',\n illegal: '\\\\n',\n contains: [BACKSLASH_ESCAPE]\n};\nconst QUOTE_STRING_MODE = {\n scope: 'string',\n begin: '\"',\n end: '\"',\n illegal: '\\\\n',\n contains: [BACKSLASH_ESCAPE]\n};\nconst PHRASAL_WORDS_MODE = {\n begin: /\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b/\n};\n/**\n * Creates a comment mode\n *\n * @param {string | RegExp} begin\n * @param {string | RegExp} end\n * @param {Mode | {}} [modeOptions]\n * @returns {Partial<Mode>}\n */\nconst COMMENT = function(begin, end, modeOptions = {}) {\n const mode = inherit$1(\n {\n scope: 'comment',\n begin,\n end,\n contains: []\n },\n modeOptions\n );\n mode.contains.push({\n scope: 'doctag',\n // hack to avoid the space from being included. the space is necessary to\n // match here to prevent the plain text rule below from gobbling up doctags\n begin: '[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)',\n end: /(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,\n excludeBegin: true,\n relevance: 0\n });\n const ENGLISH_WORD = either(\n // list of common 1 and 2 letter words in English\n \"I\",\n \"a\",\n \"is\",\n \"so\",\n \"us\",\n \"to\",\n \"at\",\n \"if\",\n \"in\",\n \"it\",\n \"on\",\n // note: this is not an exhaustive list of contractions, just popular ones\n /[A-Za-z]+['](d|ve|re|ll|t|s|n)/, // contractions - can't we'd they're let's, etc\n /[A-Za-z]+[-][a-z]+/, // `no-way`, etc.\n /[A-Za-z][a-z]{2,}/ // allow capitalized words at beginning of sentences\n );\n // looking like plain text, more likely to be a comment\n mode.contains.push(\n {\n // TODO: how to include \", (, ) without breaking grammars that use these for\n // comment delimiters?\n // begin: /[ ]+([()\"]?([A-Za-z'-]{3,}|is|a|I|so|us|[tT][oO]|at|if|in|it|on)[.]?[()\":]?([.][ ]|[ ]|\\))){3}/\n // ---\n\n // this tries to find sequences of 3 english words in a row (without any\n // \"programming\" type syntax) this gives us a strong signal that we've\n // TRULY found a comment - vs perhaps scanning with the wrong language.\n // It's possible to find something that LOOKS like the start of the\n // comment - but then if there is no readable text - good chance it is a\n // false match and not a comment.\n //\n // for a visual example please see:\n // https://github.com/highlightjs/highlight.js/issues/2827\n\n begin: concat(\n /[ ]+/, // necessary to prevent us gobbling up doctags like /* @author Bob Mcgill */\n '(',\n ENGLISH_WORD,\n /[.]?[:]?([.][ ]|[ ])/,\n '){3}') // look for 3 words in a row\n }\n );\n return mode;\n};\nconst C_LINE_COMMENT_MODE = COMMENT('//', '$');\nconst C_BLOCK_COMMENT_MODE = COMMENT('/\\\\*', '\\\\*/');\nconst HASH_COMMENT_MODE = COMMENT('#', '$');\nconst NUMBER_MODE = {\n scope: 'number',\n begin: NUMBER_RE,\n relevance: 0\n};\nconst C_NUMBER_MODE = {\n scope: 'number',\n begin: C_NUMBER_RE,\n relevance: 0\n};\nconst BINARY_NUMBER_MODE = {\n scope: 'number',\n begin: BINARY_NUMBER_RE,\n relevance: 0\n};\nconst REGEXP_MODE = {\n // this outer rule makes sure we actually have a WHOLE regex and not simply\n // an expression such as:\n //\n // 3 / something\n //\n // (which will then blow up when regex's `illegal` sees the newline)\n begin: /(?=\\/[^/\\n]*\\/)/,\n contains: [{\n scope: 'regexp',\n begin: /\\//,\n end: /\\/[gimuy]*/,\n illegal: /\\n/,\n contains: [\n BACKSLASH_ESCAPE,\n {\n begin: /\\[/,\n end: /\\]/,\n relevance: 0,\n contains: [BACKSLASH_ESCAPE]\n }\n ]\n }]\n};\nconst TITLE_MODE = {\n scope: 'title',\n begin: IDENT_RE,\n relevance: 0\n};\nconst UNDERSCORE_TITLE_MODE = {\n scope: 'title',\n begin: UNDERSCORE_IDENT_RE,\n relevance: 0\n};\nconst METHOD_GUARD = {\n // excludes method names from keyword processing\n begin: '\\\\.\\\\s*' + UNDERSCORE_IDENT_RE,\n relevance: 0\n};\n\n/**\n * Adds end same as begin mechanics to a mode\n *\n * Your mode must include at least a single () match group as that first match\n * group is what is used for comparison\n * @param {Partial<Mode>} mode\n */\nconst END_SAME_AS_BEGIN = function(mode) {\n return Object.assign(mode,\n {\n /** @type {ModeCallback} */\n 'on:begin': (m, resp) => { resp.data._beginMatch = m[1]; },\n /** @type {ModeCallback} */\n 'on:end': (m, resp) => { if (resp.data._beginMatch !== m[1]) resp.ignoreMatch(); }\n });\n};\n\nvar MODES = /*#__PURE__*/Object.freeze({\n __proto__: null,\n MATCH_NOTHING_RE: MATCH_NOTHING_RE,\n IDENT_RE: IDENT_RE,\n UNDERSCORE_IDENT_RE: UNDERSCORE_IDENT_RE,\n NUMBER_RE: NUMBER_RE,\n C_NUMBER_RE: C_NUMBER_RE,\n BINARY_NUMBER_RE: BINARY_NUMBER_RE,\n RE_STARTERS_RE: RE_STARTERS_RE,\n SHEBANG: SHEBANG,\n BACKSLASH_ESCAPE: BACKSLASH_ESCAPE,\n APOS_STRING_MODE: APOS_STRING_MODE,\n QUOTE_STRING_MODE: QUOTE_STRING_MODE,\n PHRASAL_WORDS_MODE: PHRASAL_WORDS_MODE,\n COMMENT: COMMENT,\n C_LINE_COMMENT_MODE: C_LINE_COMMENT_MODE,\n C_BLOCK_COMMENT_MODE: C_BLOCK_COMMENT_MODE,\n HASH_COMMENT_MODE: HASH_COMMENT_MODE,\n NUMBER_MODE: NUMBER_MODE,\n C_NUMBER_MODE: C_NUMBER_MODE,\n BINARY_NUMBER_MODE: BINARY_NUMBER_MODE,\n REGEXP_MODE: REGEXP_MODE,\n TITLE_MODE: TITLE_MODE,\n UNDERSCORE_TITLE_MODE: UNDERSCORE_TITLE_MODE,\n METHOD_GUARD: METHOD_GUARD,\n END_SAME_AS_BEGIN: END_SAME_AS_BEGIN\n});\n\n/**\n@typedef {import('highlight.js').CallbackResponse} CallbackResponse\n@typedef {import('highlight.js').CompilerExt} CompilerExt\n*/\n\n// Grammar extensions / plugins\n// See: https://github.com/highlightjs/highlight.js/issues/2833\n\n// Grammar extensions allow \"syntactic sugar\" to be added to the grammar modes\n// without requiring any underlying changes to the compiler internals.\n\n// `compileMatch` being the perfect small example of now allowing a grammar\n// author to write `match` when they desire to match a single expression rather\n// than being forced to use `begin`. The extension then just moves `match` into\n// `begin` when it runs. Ie, no features have been added, but we've just made\n// the experience of writing (and reading grammars) a little bit nicer.\n\n// ------\n\n// TODO: We need negative look-behind support to do this properly\n/**\n * Skip a match if it has a preceding dot\n *\n * This is used for `beginKeywords` to prevent matching expressions such as\n * `bob.keyword.do()`. The mode compiler automatically wires this up as a\n * special _internal_ 'on:begin' callback for modes with `beginKeywords`\n * @param {RegExpMatchArray} match\n * @param {CallbackResponse} response\n */\nfunction skipIfHasPrecedingDot(match, response) {\n const before = match.input[match.index - 1];\n if (before === \".\") {\n response.ignoreMatch();\n }\n}\n\n/**\n *\n * @type {CompilerExt}\n */\nfunction scopeClassName(mode, _parent) {\n // eslint-disable-next-line no-undefined\n if (mode.className !== undefined) {\n mode.scope = mode.className;\n delete mode.className;\n }\n}\n\n/**\n * `beginKeywords` syntactic sugar\n * @type {CompilerExt}\n */\nfunction beginKeywords(mode, parent) {\n if (!parent) return;\n if (!mode.beginKeywords) return;\n\n // for languages with keywords that include non-word characters checking for\n // a word boundary is not sufficient, so instead we check for a word boundary\n // or whitespace - this does no harm in any case since our keyword engine\n // doesn't allow spaces in keywords anyways and we still check for the boundary\n // first\n mode.begin = '\\\\b(' + mode.beginKeywords.split(' ').join('|') + ')(?!\\\\.)(?=\\\\b|\\\\s)';\n mode.__beforeBegin = skipIfHasPrecedingDot;\n mode.keywords = mode.keywords || mode.beginKeywords;\n delete mode.beginKeywords;\n\n // prevents double relevance, the keywords themselves provide\n // relevance, the mode doesn't need to double it\n // eslint-disable-next-line no-undefined\n if (mode.relevance === undefined) mode.relevance = 0;\n}\n\n/**\n * Allow `illegal` to contain an array of illegal values\n * @type {CompilerExt}\n */\nfunction compileIllegal(mode, _parent) {\n if (!Array.isArray(mode.illegal)) return;\n\n mode.illegal = either(...mode.illegal);\n}\n\n/**\n * `match` to match a single expression for readability\n * @type {CompilerExt}\n */\nfunction compileMatch(mode, _parent) {\n if (!mode.match) return;\n if (mode.begin || mode.end) throw new Error(\"begin & end are not supported with match\");\n\n mode.begin = mode.match;\n delete mode.match;\n}\n\n/**\n * provides the default 1 relevance to all modes\n * @type {CompilerExt}\n */\nfunction compileRelevance(mode, _parent) {\n // eslint-disable-next-line no-undefined\n if (mode.relevance === undefined) mode.relevance = 1;\n}\n\n// allow beforeMatch to act as a \"qualifier\" for the match\n// the full match begin must be [beforeMatch][begin]\nconst beforeMatchExt = (mode, parent) => {\n if (!mode.beforeMatch) return;\n // starts conflicts with endsParent which we need to make sure the child\n // rule is not matched multiple times\n if (mode.starts) throw new Error(\"beforeMatch cannot be used with starts\");\n\n const originalMode = Object.assign({}, mode);\n Object.keys(mode).forEach((key) => { delete mode[key]; });\n\n mode.keywords = originalMode.keywords;\n mode.begin = concat(originalMode.beforeMatch, lookahead(originalMode.begin));\n mode.starts = {\n relevance: 0,\n contains: [\n Object.assign(originalMode, { endsParent: true })\n ]\n };\n mode.relevance = 0;\n\n delete originalMode.beforeMatch;\n};\n\n// keywords that should have no default relevance value\nconst COMMON_KEYWORDS = [\n 'of',\n 'and',\n 'for',\n 'in',\n 'not',\n 'or',\n 'if',\n 'then',\n 'parent', // common variable name\n 'list', // common variable name\n 'value' // common variable name\n];\n\nconst DEFAULT_KEYWORD_SCOPE = \"keyword\";\n\n/**\n * Given raw keywords from a language definition, compile them.\n *\n * @param {string | Record<string,string|string[]> | Array<string>} rawKeywords\n * @param {boolean} caseInsensitive\n */\nfunction compileKeywords(rawKeywords, caseInsensitive, scopeName = DEFAULT_KEYWORD_SCOPE) {\n /** @type KeywordDict */\n const compiledKeywords = Object.create(null);\n\n // input can be a string of keywords, an array of keywords, or a object with\n // named keys representing scopeName (which can then point to a string or array)\n if (typeof rawKeywords === 'string') {\n compileList(scopeName, rawKeywords.split(\" \"));\n } else if (Array.isArray(rawKeywords)) {\n compileList(scopeName, rawKeywords);\n } else {\n Object.keys(rawKeywords).forEach(function(scopeName) {\n // collapse all our objects back into the parent object\n Object.assign(\n compiledKeywords,\n compileKeywords(rawKeywords[scopeName], caseInsensitive, scopeName)\n );\n });\n }\n return compiledKeywords;\n\n // ---\n\n /**\n * Compiles an individual list of keywords\n *\n * Ex: \"for if when while|5\"\n *\n * @param {string} scopeName\n * @param {Array<string>} keywordList\n */\n function compileList(scopeName, keywordList) {\n if (caseInsensitive) {\n keywordList = keywordList.map(x => x.toLowerCase());\n }\n keywordList.forEach(function(keyword) {\n const pair = keyword.split('|');\n compiledKeywords[pair[0]] = [scopeName, scoreForKeyword(pair[0], pair[1])];\n });\n }\n}\n\n/**\n * Returns the proper score for a given keyword\n *\n * Also takes into account comment keywords, which will be scored 0 UNLESS\n * another score has been manually assigned.\n * @param {string} keyword\n * @param {string} [providedScore]\n */\nfunction scoreForKeyword(keyword, providedScore) {\n // manual scores always win over common keywords\n // so you can force a score of 1 if you really insist\n if (providedScore) {\n return Number(providedScore);\n }\n\n return commonKeyword(keyword) ? 0 : 1;\n}\n\n/**\n * Determines if a given keyword is common or not\n *\n * @param {string} keyword */\nfunction commonKeyword(keyword) {\n return COMMON_KEYWORDS.includes(keyword.toLowerCase());\n}\n\n/*\n\nFor the reasoning behind this please see:\nhttps://github.com/highlightjs/highlight.js/issues/2880#issuecomment-747275419\n\n*/\n\n/**\n * @type {Record<string, boolean>}\n */\nconst seenDeprecations = {};\n\n/**\n * @param {string} message\n */\nconst error = (message) => {\n console.error(message);\n};\n\n/**\n * @param {string} message\n * @param {any} args\n */\nconst warn = (message, ...args) => {\n console.log(`WARN: ${message}`, ...args);\n};\n\n/**\n * @param {string} version\n * @param {string} message\n */\nconst deprecated = (version, message) => {\n if (seenDeprecations[`${version}/${message}`]) return;\n\n console.log(`Deprecated as of ${version}. ${message}`);\n seenDeprecations[`${version}/${message}`] = true;\n};\n\n/* eslint-disable no-throw-literal */\n\n/**\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n*/\n\nconst MultiClassError = new Error();\n\n/**\n * Renumbers labeled scope names to account for additional inner match\n * groups that otherwise would break everything.\n *\n * Lets say we 3 match scopes:\n *\n * { 1 => ..., 2 => ..., 3 => ... }\n *\n * So what we need is a clean match like this:\n *\n * (a)(b)(c) => [ \"a\", \"b\", \"c\" ]\n *\n * But this falls apart with inner match groups:\n *\n * (a)(((b)))(c) => [\"a\", \"b\", \"b\", \"b\", \"c\" ]\n *\n * Our scopes are now \"out of alignment\" and we're repeating `b` 3 times.\n * What needs to happen is the numbers are remapped:\n *\n * { 1 => ..., 2 => ..., 5 => ... }\n *\n * We also need to know that the ONLY groups that should be output\n * are 1, 2, and 5. This function handles this behavior.\n *\n * @param {CompiledMode} mode\n * @param {Array<RegExp | string>} regexes\n * @param {{key: \"beginScope\"|\"endScope\"}} opts\n */\nfunction remapScopeNames(mode, regexes, { key }) {\n let offset = 0;\n const scopeNames = mode[key];\n /** @type Record<number,boolean> */\n const emit = {};\n /** @type Record<number,string> */\n const positions = {};\n\n for (let i = 1; i <= regexes.length; i++) {\n positions[i + offset] = scopeNames[i];\n emit[i + offset] = true;\n offset += countMatchGroups(regexes[i - 1]);\n }\n // we use _emit to keep track of which match groups are \"top-level\" to avoid double\n // output from inside match groups\n mode[key] = positions;\n mode[key]._emit = emit;\n mode[key]._multi = true;\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction beginMultiClass(mode) {\n if (!Array.isArray(mode.begin)) return;\n\n if (mode.skip || mode.excludeBegin || mode.returnBegin) {\n error(\"skip, excludeBegin, returnBegin not compatible with beginScope: {}\");\n throw MultiClassError;\n }\n\n if (typeof mode.beginScope !== \"object\" || mode.beginScope === null) {\n error(\"beginScope must be object\");\n throw MultiClassError;\n }\n\n remapScopeNames(mode, mode.begin, { key: \"beginScope\" });\n mode.begin = _rewriteBackreferences(mode.begin, { joinWith: \"\" });\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction endMultiClass(mode) {\n if (!Array.isArray(mode.end)) return;\n\n if (mode.skip || mode.excludeEnd || mode.returnEnd) {\n error(\"skip, excludeEnd, returnEnd not compatible with endScope: {}\");\n throw MultiClassError;\n }\n\n if (typeof mode.endScope !== \"object\" || mode.endScope === null) {\n error(\"endScope must be object\");\n throw MultiClassError;\n }\n\n remapScopeNames(mode, mode.end, { key: \"endScope\" });\n mode.end = _rewriteBackreferences(mode.end, { joinWith: \"\" });\n}\n\n/**\n * this exists only to allow `scope: {}` to be used beside `match:`\n * Otherwise `beginScope` would necessary and that would look weird\n\n {\n match: [ /def/, /\\w+/ ]\n scope: { 1: \"keyword\" , 2: \"title\" }\n }\n\n * @param {CompiledMode} mode\n */\nfunction scopeSugar(mode) {\n if (mode.scope && typeof mode.scope === \"object\" && mode.scope !== null) {\n mode.beginScope = mode.scope;\n delete mode.scope;\n }\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction MultiClass(mode) {\n scopeSugar(mode);\n\n if (typeof mode.beginScope === \"string\") {\n mode.beginScope = { _wrap: mode.beginScope };\n }\n if (typeof mode.endScope === \"string\") {\n mode.endScope = { _wrap: mode.endScope };\n }\n\n beginMultiClass(mode);\n endMultiClass(mode);\n}\n\n/**\n@typedef {import('highlight.js').Mode} Mode\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n@typedef {import('highlight.js').Language} Language\n@typedef {import('highlight.js').HLJSPlugin} HLJSPlugin\n@typedef {import('highlight.js').CompiledLanguage} CompiledLanguage\n*/\n\n// compilation\n\n/**\n * Compiles a language definition result\n *\n * Given the raw result of a language definition (Language), compiles this so\n * that it is ready for highlighting code.\n * @param {Language} language\n * @returns {CompiledLanguage}\n */\nfunction compileLanguage(language) {\n /**\n * Builds a regex with the case sensitivity of the current language\n *\n * @param {RegExp | string} value\n * @param {boolean} [global]\n */\n function langRe(value, global) {\n return new RegExp(\n source(value),\n 'm'\n + (language.case_insensitive ? 'i' : '')\n + (language.unicodeRegex ? 'u' : '')\n + (global ? 'g' : '')\n );\n }\n\n /**\n Stores multiple regular expressions and allows you to quickly search for\n them all in a string simultaneously - returning the first match. It does\n this by creating a huge (a|b|c) regex - each individual item wrapped with ()\n and joined by `|` - using match groups to track position. When a match is\n found checking which position in the array has content allows us to figure\n out which of the original regexes / match groups triggered the match.\n\n The match object itself (the result of `Regex.exec`) is returned but also\n enhanced by merging in any meta-data that was registered with the regex.\n This is how we keep track of which mode matched, and what type of rule\n (`illegal`, `begin`, end, etc).\n */\n class MultiRegex {\n constructor() {\n this.matchIndexes = {};\n // @ts-ignore\n this.regexes = [];\n this.matchAt = 1;\n this.position = 0;\n }\n\n // @ts-ignore\n addRule(re, opts) {\n opts.position = this.position++;\n // @ts-ignore\n this.matchIndexes[this.matchAt] = opts;\n this.regexes.push([opts, re]);\n this.matchAt += countMatchGroups(re) + 1;\n }\n\n compile() {\n if (this.regexes.length === 0) {\n // avoids the need to check length every time exec is called\n // @ts-ignore\n this.exec = () => null;\n }\n const terminators = this.regexes.map(el => el[1]);\n this.matcherRe = langRe(_rewriteBackreferences(terminators, { joinWith: '|' }), true);\n this.lastIndex = 0;\n }\n\n /** @param {string} s */\n exec(s) {\n this.matcherRe.lastIndex = this.lastIndex;\n const match = this.matcherRe.exec(s);\n if (!match) { return null; }\n\n // eslint-disable-next-line no-undefined\n const i = match.findIndex((el, i) => i > 0 && el !== undefined);\n // @ts-ignore\n const matchData = this.matchIndexes[i];\n // trim off any earlier non-relevant match groups (ie, the other regex\n // match groups that make up the multi-matcher)\n match.splice(0, i);\n\n return Object.assign(match, matchData);\n }\n }\n\n /*\n Created to solve the key deficiently with MultiRegex - there is no way to\n test for multiple matches at a single location. Why would we need to do\n that? In the future a more dynamic engine will allow certain matches to be\n ignored. An example: if we matched say the 3rd regex in a large group but\n decided to ignore it - we'd need to started testing again at the 4th\n regex... but MultiRegex itself gives us no real way to do that.\n\n So what this class creates MultiRegexs on the fly for whatever search\n position they are needed.\n\n NOTE: These additional MultiRegex objects are created dynamically. For most\n grammars most of the time we will never actually need anything more than the\n first MultiRegex - so this shouldn't have too much overhead.\n\n Say this is our search group, and we match regex3, but wish to ignore it.\n\n regex1 | regex2 | regex3 | regex4 | regex5 ' ie, startAt = 0\n\n What we need is a new MultiRegex that only includes the remaining\n possibilities:\n\n regex4 | regex5 ' ie, startAt = 3\n\n This class wraps all that complexity up in a simple API... `startAt` decides\n where in the array of expressions to start doing the matching. It\n auto-increments, so if a match is found at position 2, then startAt will be\n set to 3. If the end is reached startAt will return to 0.\n\n MOST of the time the parser will be setting startAt manually to 0.\n */\n class ResumableMultiRegex {\n constructor() {\n // @ts-ignore\n this.rules = [];\n // @ts-ignore\n this.multiRegexes = [];\n this.count = 0;\n\n this.lastIndex = 0;\n this.regexIndex = 0;\n }\n\n // @ts-ignore\n getMatcher(index) {\n if (this.multiRegexes[index]) return this.multiRegexes[index];\n\n const matcher = new MultiRegex();\n this.rules.slice(index).forEach(([re, opts]) => matcher.addRule(re, opts));\n matcher.compile();\n this.multiRegexes[index] = matcher;\n return matcher;\n }\n\n resumingScanAtSamePosition() {\n return this.regexIndex !== 0;\n }\n\n considerAll() {\n this.regexIndex = 0;\n }\n\n // @ts-ignore\n addRule(re, opts) {\n this.rules.push([re, opts]);\n if (opts.type === \"begin\") this.count++;\n }\n\n /** @param {string} s */\n exec(s) {\n const m = this.getMatcher(this.regexIndex);\n m.lastIndex = this.lastIndex;\n let result = m.exec(s);\n\n // The following is because we have no easy way to say \"resume scanning at the\n // existing position but also skip the current rule ONLY\". What happens is\n // all prior rules are also skipped which can result in matching the wrong\n // thing. Example of matching \"booger\":\n\n // our matcher is [string, \"booger\", number]\n //\n // ....booger....\n\n // if \"booger\" is ignored then we'd really need a regex to scan from the\n // SAME position for only: [string, number] but ignoring \"booger\" (if it\n // was the first match), a simple resume would scan ahead who knows how\n // far looking only for \"number\", ignoring potential string matches (or\n // future \"booger\" matches that might be valid.)\n\n // So what we do: We execute two matchers, one resuming at the same\n // position, but the second full matcher starting at the position after:\n\n // /--- resume first regex match here (for [number])\n // |/---- full match here for [string, \"booger\", number]\n // vv\n // ....booger....\n\n // Which ever results in a match first is then used. So this 3-4 step\n // process essentially allows us to say \"match at this position, excluding\n // a prior rule that was ignored\".\n //\n // 1. Match \"booger\" first, ignore. Also proves that [string] does non match.\n // 2. Resume matching for [number]\n // 3. Match at index + 1 for [string, \"booger\", number]\n // 4. If #2 and #3 result in matches, which came first?\n if (this.resumingScanAtSamePosition()) {\n if (result && result.index === this.lastIndex) ; else { // use the second matcher result\n const m2 = this.getMatcher(0);\n m2.lastIndex = this.lastIndex + 1;\n result = m2.exec(s);\n }\n }\n\n if (result) {\n this.regexIndex += result.position + 1;\n if (this.regexIndex === this.count) {\n // wrap-around to considering all matches again\n this.considerAll();\n }\n }\n\n return result;\n }\n }\n\n /**\n * Given a mode, builds a huge ResumableMultiRegex that can be used to walk\n * the content and find matches.\n *\n * @param {CompiledMode} mode\n * @returns {ResumableMultiRegex}\n */\n function buildModeRegex(mode) {\n const mm = new ResumableMultiRegex();\n\n mode.contains.forEach(term => mm.addRule(term.begin, { rule: term, type: \"begin\" }));\n\n if (mode.terminatorEnd) {\n mm.addRule(mode.terminatorEnd, { type: \"end\" });\n }\n if (mode.illegal) {\n mm.addRule(mode.illegal, { type: \"illegal\" });\n }\n\n return mm;\n }\n\n /** skip vs abort vs ignore\n *\n * @skip - The mode is still entered and exited normally (and contains rules apply),\n * but all content is held and added to the parent buffer rather than being\n * output when the mode ends. Mostly used with `sublanguage` to build up\n * a single large buffer than can be parsed by sublanguage.\n *\n * - The mode begin ands ends normally.\n * - Content matched is added to the parent mode buffer.\n * - The parser cursor is moved forward normally.\n *\n * @abort - A hack placeholder until we have ignore. Aborts the mode (as if it\n * never matched) but DOES NOT continue to match subsequent `contains`\n * modes. Abort is bad/suboptimal because it can result in modes\n * farther down not getting applied because an earlier rule eats the\n * content but then aborts.\n *\n * - The mode does not begin.\n * - Content matched by `begin` is added to the mode buffer.\n * - The parser cursor is moved forward accordingly.\n *\n * @ignore - Ignores the mode (as if it never matched) and continues to match any\n * subsequent `contains` modes. Ignore isn't technically possible with\n * the current parser implementation.\n *\n * - The mode does not begin.\n * - Content matched by `begin` is ignored.\n * - The parser cursor is not moved forward.\n */\n\n /**\n * Compiles an individual mode\n *\n * This can raise an error if the mode contains certain detectable known logic\n * issues.\n * @param {Mode} mode\n * @param {CompiledMode | null} [parent]\n * @returns {CompiledMode | never}\n */\n function compileMode(mode, parent) {\n const cmode = /** @type CompiledMode */ (mode);\n if (mode.isCompiled) return cmode;\n\n [\n scopeClassName,\n // do this early so compiler extensions generally don't have to worry about\n // the distinction between match/begin\n compileMatch,\n MultiClass,\n beforeMatchExt\n ].forEach(ext => ext(mode, parent));\n\n language.compilerExtensions.forEach(ext => ext(mode, parent));\n\n // __beforeBegin is considered private API, internal use only\n mode.__beforeBegin = null;\n\n [\n beginKeywords,\n // do this later so compiler extensions that come earlier have access to the\n // raw array if they wanted to perhaps manipulate it, etc.\n compileIllegal,\n // default to 1 relevance if not specified\n compileRelevance\n ].forEach(ext => ext(mode, parent));\n\n mode.isCompiled = true;\n\n let keywordPattern = null;\n if (typeof mode.keywords === \"object\" && mode.keywords.$pattern) {\n // we need a copy because keywords might be compiled multiple times\n // so we can't go deleting $pattern from the original on the first\n // pass\n mode.keywords = Object.assign({}, mode.keywords);\n keywordPattern = mode.keywords.$pattern;\n delete mode.keywords.$pattern;\n }\n keywordPattern = keywordPattern || /\\w+/;\n\n if (mode.keywords) {\n mode.keywords = compileKeywords(mode.keywords, language.case_insensitive);\n }\n\n cmode.keywordPatternRe = langRe(keywordPattern, true);\n\n if (parent) {\n if (!mode.begin) mode.begin = /\\B|\\b/;\n cmode.beginRe = langRe(cmode.begin);\n if (!mode.end && !mode.endsWithParent) mode.end = /\\B|\\b/;\n if (mode.end) cmode.endRe = langRe(cmode.end);\n cmode.terminatorEnd = source(cmode.end) || '';\n if (mode.endsWithParent && parent.terminatorEnd) {\n cmode.terminatorEnd += (mode.end ? '|' : '') + parent.terminatorEnd;\n }\n }\n if (mode.illegal) cmode.illegalRe = langRe(/** @type {RegExp | string} */ (mode.illegal));\n if (!mode.contains) mode.contains = [];\n\n mode.contains = [].concat(...mode.contains.map(function(c) {\n return expandOrCloneMode(c === 'self' ? mode : c);\n }));\n mode.contains.forEach(function(c) { compileMode(/** @type Mode */ (c), cmode); });\n\n if (mode.starts) {\n compileMode(mode.starts, parent);\n }\n\n cmode.matcher = buildModeRegex(cmode);\n return cmode;\n }\n\n if (!language.compilerExtensions) language.compilerExtensions = [];\n\n // self is not valid at the top-level\n if (language.contains && language.contains.includes('self')) {\n throw new Error(\"ERR: contains `self` is not supported at the top-level of a language. See documentation.\");\n }\n\n // we need a null object, which inherit will guarantee\n language.classNameAliases = inherit$1(language.classNameAliases || {});\n\n return compileMode(/** @type Mode */ (language));\n}\n\n/**\n * Determines if a mode has a dependency on it's parent or not\n *\n * If a mode does have a parent dependency then often we need to clone it if\n * it's used in multiple places so that each copy points to the correct parent,\n * where-as modes without a parent can often safely be re-used at the bottom of\n * a mode chain.\n *\n * @param {Mode | null} mode\n * @returns {boolean} - is there a dependency on the parent?\n * */\nfunction dependencyOnParent(mode) {\n if (!mode) return false;\n\n return mode.endsWithParent || dependencyOnParent(mode.starts);\n}\n\n/**\n * Expands a mode or clones it if necessary\n *\n * This is necessary for modes with parental dependenceis (see notes on\n * `dependencyOnParent`) and for nodes that have `variants` - which must then be\n * exploded into their own individual modes at compile time.\n *\n * @param {Mode} mode\n * @returns {Mode | Mode[]}\n * */\nfunction expandOrCloneMode(mode) {\n if (mode.variants && !mode.cachedVariants) {\n mode.cachedVariants = mode.variants.map(function(variant) {\n return inherit$1(mode, { variants: null }, variant);\n });\n }\n\n // EXPAND\n // if we have variants then essentially \"replace\" the mode with the variants\n // this happens in compileMode, where this function is called from\n if (mode.cachedVariants) {\n return mode.cachedVariants;\n }\n\n // CLONE\n // if we have dependencies on parents then we need a unique\n // instance of ourselves, so we can be reused with many\n // different parents without issue\n if (dependencyOnParent(mode)) {\n return inherit$1(mode, { starts: mode.starts ? inherit$1(mode.starts) : null });\n }\n\n if (Object.isFrozen(mode)) {\n return inherit$1(mode);\n }\n\n // no special dependency issues, just return ourselves\n return mode;\n}\n\nvar version = \"11.6.0\";\n\nclass HTMLInjectionError extends Error {\n constructor(reason, html) {\n super(reason);\n this.name = \"HTMLInjectionError\";\n this.html = html;\n }\n}\n\n/*\nSyntax highlighting with language autodetection.\nhttps://highlightjs.org/\n*/\n\n/**\n@typedef {import('highlight.js').Mode} Mode\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n@typedef {import('highlight.js').CompiledScope} CompiledScope\n@typedef {import('highlight.js').Language} Language\n@typedef {import('highlight.js').HLJSApi} HLJSApi\n@typedef {import('highlight.js').HLJSPlugin} HLJSPlugin\n@typedef {import('highlight.js').PluginEvent} PluginEvent\n@typedef {import('highlight.js').HLJSOptions} HLJSOptions\n@typedef {import('highlight.js').LanguageFn} LanguageFn\n@typedef {import('highlight.js').HighlightedHTMLElement} HighlightedHTMLElement\n@typedef {import('highlight.js').BeforeHighlightContext} BeforeHighlightContext\n@typedef {import('highlight.js/private').MatchType} MatchType\n@typedef {import('highlight.js/private').KeywordData} KeywordData\n@typedef {import('highlight.js/private').EnhancedMatch} EnhancedMatch\n@typedef {import('highlight.js/private').AnnotatedError} AnnotatedError\n@typedef {import('highlight.js').AutoHighlightResult} AutoHighlightResult\n@typedef {import('highlight.js').HighlightOptions} HighlightOptions\n@typedef {import('highlight.js').HighlightResult} HighlightResult\n*/\n\n\nconst escape = escapeHTML;\nconst inherit = inherit$1;\nconst NO_MATCH = Symbol(\"nomatch\");\nconst MAX_KEYWORD_HITS = 7;\n\n/**\n * @param {any} hljs - object that is extended (legacy)\n * @returns {HLJSApi}\n */\nconst HLJS = function(hljs) {\n // Global internal variables used within the highlight.js library.\n /** @type {Record<string, Language>} */\n const languages = Object.create(null);\n /** @type {Record<string, string>} */\n const aliases = Object.create(null);\n /** @type {HLJSPlugin[]} */\n const plugins = [];\n\n // safe/production mode - swallows more errors, tries to keep running\n // even if a single syntax or parse hits a fatal error\n let SAFE_MODE = true;\n const LANGUAGE_NOT_FOUND = \"Could not find the language '{}', did you forget to load/include a language module?\";\n /** @type {Language} */\n const PLAINTEXT_LANGUAGE = { disableAutodetect: true, name: 'Plain text', contains: [] };\n\n // Global options used when within external APIs. This is modified when\n // calling the `hljs.configure` function.\n /** @type HLJSOptions */\n let options = {\n ignoreUnescapedHTML: false,\n throwUnescapedHTML: false,\n noHighlightRe: /^(no-?highlight)$/i,\n languageDetectRe: /\\blang(?:uage)?-([\\w-]+)\\b/i,\n classPrefix: 'hljs-',\n cssSelector: 'pre code',\n languages: null,\n // beta configuration options, subject to change, welcome to discuss\n // https://github.com/highlightjs/highlight.js/issues/1086\n __emitter: TokenTreeEmitter\n };\n\n /* Utility functions */\n\n /**\n * Tests a language name to see if highlighting should be skipped\n * @param {string} languageName\n */\n function shouldNotHighlight(languageName) {\n return options.noHighlightRe.test(languageName);\n }\n\n /**\n * @param {HighlightedHTMLElement} block - the HTML element to determine language for\n */\n function blockLanguage(block) {\n let classes = block.className + ' ';\n\n classes += block.parentNode ? block.parentNode.className : '';\n\n // language-* takes precedence over non-prefixed class names.\n const match = options.languageDetectRe.exec(classes);\n if (match) {\n const language = getLanguage(match[1]);\n if (!language) {\n warn(LANGUAGE_NOT_FOUND.replace(\"{}\", match[1]));\n warn(\"Falling back to no-highlight mode for this block.\", block);\n }\n return language ? match[1] : 'no-highlight';\n }\n\n return classes\n .split(/\\s+/)\n .find((_class) => shouldNotHighlight(_class) || getLanguage(_class));\n }\n\n /**\n * Core highlighting function.\n *\n * OLD API\n * highlight(lang, code, ignoreIllegals, continuation)\n *\n * NEW API\n * highlight(code, {lang, ignoreIllegals})\n *\n * @param {string} codeOrLanguageName - the language to use for highlighting\n * @param {string | HighlightOptions} optionsOrCode - the code to highlight\n * @param {boolean} [ignoreIllegals] - whether to ignore illegal matches, default is to bail\n *\n * @returns {HighlightResult} Result - an object that represents the result\n * @property {string} language - the language name\n * @property {number} relevance - the relevance score\n * @property {string} value - the highlighted HTML code\n * @property {string} code - the original raw code\n * @property {CompiledMode} top - top of the current mode stack\n * @property {boolean} illegal - indicates whether any illegal matches were found\n */\n function highlight(codeOrLanguageName, optionsOrCode, ignoreIllegals) {\n let code = \"\";\n let languageName = \"\";\n if (typeof optionsOrCode === \"object\") {\n code = codeOrLanguageName;\n ignoreIllegals = optionsOrCode.ignoreIllegals;\n languageName = optionsOrCode.language;\n } else {\n // old API\n deprecated(\"10.7.0\", \"highlight(lang, code, ...args) has been deprecated.\");\n deprecated(\"10.7.0\", \"Please use highlight(code, options) instead.\\nhttps://github.com/highlightjs/highlight.js/issues/2277\");\n languageName = codeOrLanguageName;\n code = optionsOrCode;\n }\n\n // https://github.com/highlightjs/highlight.js/issues/3149\n // eslint-disable-next-line no-undefined\n if (ignoreIllegals === undefined) { ignoreIllegals = true; }\n\n /** @type {BeforeHighlightContext} */\n const context = {\n code,\n language: languageName\n };\n // the plugin can change the desired language or the code to be highlighted\n // just be changing the object it was passed\n fire(\"before:highlight\", context);\n\n // a before plugin can usurp the result completely by providing it's own\n // in which case we don't even need to call highlight\n const result = context.result\n ? context.result\n : _highlight(context.language, context.code, ignoreIllegals);\n\n result.code = context.code;\n // the plugin can change anything in result to suite it\n fire(\"after:highlight\", result);\n\n return result;\n }\n\n /**\n * private highlight that's used internally and does not fire callbacks\n *\n * @param {string} languageName - the language to use for highlighting\n * @param {string} codeToHighlight - the code to highlight\n * @param {boolean?} [ignoreIllegals] - whether to ignore illegal matches, default is to bail\n * @param {CompiledMode?} [continuation] - current continuation mode, if any\n * @returns {HighlightResult} - result of the highlight operation\n */\n function _highlight(languageName, codeToHighlight, ignoreIllegals, continuation) {\n const keywordHits = Object.create(null);\n\n /**\n * Return keyword data if a match is a keyword\n * @param {CompiledMode} mode - current mode\n * @param {string} matchText - the textual match\n * @returns {KeywordData | false}\n */\n function keywordData(mode, matchText) {\n return mode.keywords[matchText];\n }\n\n function processKeywords() {\n if (!top.keywords) {\n emitter.addText(modeBuffer);\n return;\n }\n\n let lastIndex = 0;\n top.keywordPatternRe.lastIndex = 0;\n let match = top.keywordPatternRe.exec(modeBuffer);\n let buf = \"\";\n\n while (match) {\n buf += modeBuffer.substring(lastIndex, match.index);\n const word = language.case_insensitive ? match[0].toLowerCase() : match[0];\n const data = keywordData(top, word);\n if (data) {\n const [kind, keywordRelevance] = data;\n emitter.addText(buf);\n buf = \"\";\n\n keywordHits[word] = (keywordHits[word] || 0) + 1;\n if (keywordHits[word] <= MAX_KEYWORD_HITS) relevance += keywordRelevance;\n if (kind.startsWith(\"_\")) {\n // _ implied for relevance only, do not highlight\n // by applying a class name\n buf += match[0];\n } else {\n const cssClass = language.classNameAliases[kind] || kind;\n emitter.addKeyword(match[0], cssClass);\n }\n } else {\n buf += match[0];\n }\n lastIndex = top.keywordPatternRe.lastIndex;\n match = top.keywordPatternRe.exec(modeBuffer);\n }\n buf += modeBuffer.substring(lastIndex);\n emitter.addText(buf);\n }\n\n function processSubLanguage() {\n if (modeBuffer === \"\") return;\n /** @type HighlightResult */\n let result = null;\n\n if (typeof top.subLanguage === 'string') {\n if (!languages[top.subLanguage]) {\n emitter.addText(modeBuffer);\n return;\n }\n result = _highlight(top.subLanguage, modeBuffer, true, continuations[top.subLanguage]);\n continuations[top.subLanguage] = /** @type {CompiledMode} */ (result._top);\n } else {\n result = highlightAuto(modeBuffer, top.subLanguage.length ? top.subLanguage : null);\n }\n\n // Counting embedded language score towards the host language may be disabled\n // with zeroing the containing mode relevance. Use case in point is Markdown that\n // allows XML everywhere and makes every XML snippet to have a much larger Markdown\n // score.\n if (top.relevance > 0) {\n relevance += result.relevance;\n }\n emitter.addSublanguage(result._emitter, result.language);\n }\n\n function processBuffer() {\n if (top.subLanguage != null) {\n processSubLanguage();\n } else {\n processKeywords();\n }\n modeBuffer = '';\n }\n\n /**\n * @param {CompiledScope} scope\n * @param {RegExpMatchArray} match\n */\n function emitMultiClass(scope, match) {\n let i = 1;\n const max = match.length - 1;\n while (i <= max) {\n if (!scope._emit[i]) { i++; continue; }\n const klass = language.classNameAliases[scope[i]] || scope[i];\n const text = match[i];\n if (klass) {\n emitter.addKeyword(text, klass);\n } else {\n modeBuffer = text;\n processKeywords();\n modeBuffer = \"\";\n }\n i++;\n }\n }\n\n /**\n * @param {CompiledMode} mode - new mode to start\n * @param {RegExpMatchArray} match\n */\n function startNewMode(mode, match) {\n if (mode.scope && typeof mode.scope === \"string\") {\n emitter.openNode(language.classNameAliases[mode.scope] || mode.scope);\n }\n if (mode.beginScope) {\n // beginScope just wraps the begin match itself in a scope\n if (mode.beginScope._wrap) {\n emitter.addKeyword(modeBuffer, language.classNameAliases[mode.beginScope._wrap] || mode.beginScope._wrap);\n modeBuffer = \"\";\n } else if (mode.beginScope._multi) {\n // at this point modeBuffer should just be the match\n emitMultiClass(mode.beginScope, match);\n modeBuffer = \"\";\n }\n }\n\n top = Object.create(mode, { parent: { value: top } });\n return top;\n }\n\n /**\n * @param {CompiledMode } mode - the mode to potentially end\n * @param {RegExpMatchArray} match - the latest match\n * @param {string} matchPlusRemainder - match plus remainder of content\n * @returns {CompiledMode | void} - the next mode, or if void continue on in current mode\n */\n function endOfMode(mode, match, matchPlusRemainder) {\n let matched = startsWith(mode.endRe, matchPlusRemainder);\n\n if (matched) {\n if (mode[\"on:end\"]) {\n const resp = new Response(mode);\n mode[\"on:end\"](match, resp);\n if (resp.isMatchIgnored) matched = false;\n }\n\n if (matched) {\n while (mode.endsParent && mode.parent) {\n mode = mode.parent;\n }\n return mode;\n }\n }\n // even if on:end fires an `ignore` it's still possible\n // that we might trigger the end node because of a parent mode\n if (mode.endsWithParent) {\n return endOfMode(mode.parent, match, matchPlusRemainder);\n }\n }\n\n /**\n * Handle matching but then ignoring a sequence of text\n *\n * @param {string} lexeme - string containing full match text\n */\n function doIgnore(lexeme) {\n if (top.matcher.regexIndex === 0) {\n // no more regexes to potentially match here, so we move the cursor forward one\n // space\n modeBuffer += lexeme[0];\n return 1;\n } else {\n // no need to move the cursor, we still have additional regexes to try and\n // match at this very spot\n resumeScanAtSamePosition = true;\n return 0;\n }\n }\n\n /**\n * Handle the start of a new potential mode match\n *\n * @param {EnhancedMatch} match - the current match\n * @returns {number} how far to advance the parse cursor\n */\n function doBeginMatch(match) {\n const lexeme = match[0];\n const newMode = match.rule;\n\n const resp = new Response(newMode);\n // first internal before callbacks, then the public ones\n const beforeCallbacks = [newMode.__beforeBegin, newMode[\"on:begin\"]];\n for (const cb of beforeCallbacks) {\n if (!cb) continue;\n cb(match, resp);\n if (resp.isMatchIgnored) return doIgnore(lexeme);\n }\n\n if (newMode.skip) {\n modeBuffer += lexeme;\n } else {\n if (newMode.excludeBegin) {\n modeBuffer += lexeme;\n }\n processBuffer();\n if (!newMode.returnBegin && !newMode.excludeBegin) {\n modeBuffer = lexeme;\n }\n }\n startNewMode(newMode, match);\n return newMode.returnBegin ? 0 : lexeme.length;\n }\n\n /**\n * Handle the potential end of mode\n *\n * @param {RegExpMatchArray} match - the current match\n */\n function doEndMatch(match) {\n const lexeme = match[0];\n const matchPlusRemainder = codeToHighlight.substring(match.index);\n\n const endMode = endOfMode(top, match, matchPlusRemainder);\n if (!endMode) { return NO_MATCH; }\n\n const origin = top;\n if (top.endScope && top.endScope._wrap) {\n processBuffer();\n emitter.addKeyword(lexeme, top.endScope._wrap);\n } else if (top.endScope && top.endScope._multi) {\n processBuffer();\n emitMultiClass(top.endScope, match);\n } else if (origin.skip) {\n modeBuffer += lexeme;\n } else {\n if (!(origin.returnEnd || origin.excludeEnd)) {\n modeBuffer += lexeme;\n }\n processBuffer();\n if (origin.excludeEnd) {\n modeBuffer = lexeme;\n }\n }\n do {\n if (top.scope) {\n emitter.closeNode();\n }\n if (!top.skip && !top.subLanguage) {\n relevance += top.relevance;\n }\n top = top.parent;\n } while (top !== endMode.parent);\n if (endMode.starts) {\n startNewMode(endMode.starts, match);\n }\n return origin.returnEnd ? 0 : lexeme.length;\n }\n\n function processContinuations() {\n const list = [];\n for (let current = top; current !== language; current = current.parent) {\n if (current.scope) {\n list.unshift(current.scope);\n }\n }\n list.forEach(item => emitter.openNode(item));\n }\n\n /** @type {{type?: MatchType, index?: number, rule?: Mode}}} */\n let lastMatch = {};\n\n /**\n * Process an individual match\n *\n * @param {string} textBeforeMatch - text preceding the match (since the last match)\n * @param {EnhancedMatch} [match] - the match itself\n */\n function processLexeme(textBeforeMatch, match) {\n const lexeme = match && match[0];\n\n // add non-matched text to the current mode buffer\n modeBuffer += textBeforeMatch;\n\n if (lexeme == null) {\n processBuffer();\n return 0;\n }\n\n // we've found a 0 width match and we're stuck, so we need to advance\n // this happens when we have badly behaved rules that have optional matchers to the degree that\n // sometimes they can end up matching nothing at all\n // Ref: https://github.com/highlightjs/highlight.js/issues/2140\n if (lastMatch.type === \"begin\" && match.type === \"end\" && lastMatch.index === match.index && lexeme === \"\") {\n // spit the \"skipped\" character that our regex choked on back into the output sequence\n modeBuffer += codeToHighlight.slice(match.index, match.index + 1);\n if (!SAFE_MODE) {\n /** @type {AnnotatedError} */\n const err = new Error(`0 width match regex (${languageName})`);\n err.languageName = languageName;\n err.badRule = lastMatch.rule;\n throw err;\n }\n return 1;\n }\n lastMatch = match;\n\n if (match.type === \"begin\") {\n return doBeginMatch(match);\n } else if (match.type === \"illegal\" && !ignoreIllegals) {\n // illegal match, we do not continue processing\n /** @type {AnnotatedError} */\n const err = new Error('Illegal lexeme \"' + lexeme + '\" for mode \"' + (top.scope || '<unnamed>') + '\"');\n err.mode = top;\n throw err;\n } else if (match.type === \"end\") {\n const processed = doEndMatch(match);\n if (processed !== NO_MATCH) {\n return processed;\n }\n }\n\n // edge case for when illegal matches $ (end of line) which is technically\n // a 0 width match but not a begin/end match so it's not caught by the\n // first handler (when ignoreIllegals is true)\n if (match.type === \"illegal\" && lexeme === \"\") {\n // advance so we aren't stuck in an infinite loop\n return 1;\n }\n\n // infinite loops are BAD, this is a last ditch catch all. if we have a\n // decent number of iterations yet our index (cursor position in our\n // parsing) still 3x behind our index then something is very wrong\n // so we bail\n if (iterations > 100000 && iterations > match.index * 3) {\n const err = new Error('potential infinite loop, way more iterations than matches');\n throw err;\n }\n\n /*\n Why might be find ourselves here? An potential end match that was\n triggered but could not be completed. IE, `doEndMatch` returned NO_MATCH.\n (this could be because a callback requests the match be ignored, etc)\n\n This causes no real harm other than stopping a few times too many.\n */\n\n modeBuffer += lexeme;\n return lexeme.length;\n }\n\n const language = getLanguage(languageName);\n if (!language) {\n error(LANGUAGE_NOT_FOUND.replace(\"{}\", languageName));\n throw new Error('Unknown language: \"' + languageName + '\"');\n }\n\n const md = compileLanguage(language);\n let result = '';\n /** @type {CompiledMode} */\n let top = continuation || md;\n /** @type Record<string,CompiledMode> */\n const continuations = {}; // keep continuations for sub-languages\n const emitter = new options.__emitter(options);\n processContinuations();\n let modeBuffer = '';\n let relevance = 0;\n let index = 0;\n let iterations = 0;\n let resumeScanAtSamePosition = false;\n\n try {\n top.matcher.considerAll();\n\n for (;;) {\n iterations++;\n if (resumeScanAtSamePosition) {\n // only regexes not matched previously will now be\n // considered for a potential match\n resumeScanAtSamePosition = false;\n } else {\n top.matcher.considerAll();\n }\n top.matcher.lastIndex = index;\n\n const match = top.matcher.exec(codeToHighlight);\n // console.log(\"match\", match[0], match.rule && match.rule.begin)\n\n if (!match) break;\n\n const beforeMatch = codeToHighlight.substring(index, match.index);\n const processedCount = processLexeme(beforeMatch, match);\n index = match.index + processedCount;\n }\n processLexeme(codeToHighlight.substring(index));\n emitter.closeAllNodes();\n emitter.finalize();\n result = emitter.toHTML();\n\n return {\n language: languageName,\n value: result,\n relevance: relevance,\n illegal: false,\n _emitter: emitter,\n _top: top\n };\n } catch (err) {\n if (err.message && err.message.includes('Illegal')) {\n return {\n language: languageName,\n value: escape(codeToHighlight),\n illegal: true,\n relevance: 0,\n _illegalBy: {\n message: err.message,\n index: index,\n context: codeToHighlight.slice(index - 100, index + 100),\n mode: err.mode,\n resultSoFar: result\n },\n _emitter: emitter\n };\n } else if (SAFE_MODE) {\n return {\n language: languageName,\n value: escape(codeToHighlight),\n illegal: false,\n relevance: 0,\n errorRaised: err,\n _emitter: emitter,\n _top: top\n };\n } else {\n throw err;\n }\n }\n }\n\n /**\n * returns a valid highlight result, without actually doing any actual work,\n * auto highlight starts with this and it's possible for small snippets that\n * auto-detection may not find a better match\n * @param {string} code\n * @returns {HighlightResult}\n */\n function justTextHighlightResult(code) {\n const result = {\n value: escape(code),\n illegal: false,\n relevance: 0,\n _top: PLAINTEXT_LANGUAGE,\n _emitter: new options.__emitter(options)\n };\n result._emitter.addText(code);\n return result;\n }\n\n /**\n Highlighting with language detection. Accepts a string with the code to\n highlight. Returns an object with the following properties:\n\n - language (detected language)\n - relevance (int)\n - value (an HTML string with highlighting markup)\n - secondBest (object with the same structure for second-best heuristically\n detected language, may be absent)\n\n @param {string} code\n @param {Array<string>} [languageSubset]\n @returns {AutoHighlightResult}\n */\n function highlightAuto(code, languageSubset) {\n languageSubset = languageSubset || options.languages || Object.keys(languages);\n const plaintext = justTextHighlightResult(code);\n\n const results = languageSubset.filter(getLanguage).filter(autoDetection).map(name =>\n _highlight(name, code, false)\n );\n results.unshift(plaintext); // plaintext is always an option\n\n const sorted = results.sort((a, b) => {\n // sort base on relevance\n if (a.relevance !== b.relevance) return b.relevance - a.relevance;\n\n // always award the tie to the base language\n // ie if C++ and Arduino are tied, it's more likely to be C++\n if (a.language && b.language) {\n if (getLanguage(a.language).supersetOf === b.language) {\n return 1;\n } else if (getLanguage(b.language).supersetOf === a.language) {\n return -1;\n }\n }\n\n // otherwise say they are equal, which has the effect of sorting on\n // relevance while preserving the original ordering - which is how ties\n // have historically been settled, ie the language that comes first always\n // wins in the case of a tie\n return 0;\n });\n\n const [best, secondBest] = sorted;\n\n /** @type {AutoHighlightResult} */\n const result = best;\n result.secondBest = secondBest;\n\n return result;\n }\n\n /**\n * Builds new class name for block given the language name\n *\n * @param {HTMLElement} element\n * @param {string} [currentLang]\n * @param {string} [resultLang]\n */\n function updateClassName(element, currentLang, resultLang) {\n const language = (currentLang && aliases[currentLang]) || resultLang;\n\n element.classList.add(\"hljs\");\n element.classList.add(`language-${language}`);\n }\n\n /**\n * Applies highlighting to a DOM node containing code.\n *\n * @param {HighlightedHTMLElement} element - the HTML element to highlight\n */\n function highlightElement(element) {\n /** @type HTMLElement */\n let node = null;\n const language = blockLanguage(element);\n\n if (shouldNotHighlight(language)) return;\n\n fire(\"before:highlightElement\",\n { el: element, language: language });\n\n // we should be all text, no child nodes (unescaped HTML) - this is possibly\n // an HTML injection attack - it's likely too late if this is already in\n // production (the code has likely already done its damage by the time\n // we're seeing it)... but we yell loudly about this so that hopefully it's\n // more likely to be caught in development before making it to production\n if (element.children.length > 0) {\n if (!options.ignoreUnescapedHTML) {\n console.warn(\"One of your code blocks includes unescaped HTML. This is a potentially serious security risk.\");\n console.warn(\"https://github.com/highlightjs/highlight.js/wiki/security\");\n console.warn(\"The element with unescaped HTML:\");\n console.warn(element);\n }\n if (options.throwUnescapedHTML) {\n const err = new HTMLInjectionError(\n \"One of your code blocks includes unescaped HTML.\",\n element.innerHTML\n );\n throw err;\n }\n }\n\n node = element;\n const text = node.textContent;\n const result = language ? highlight(text, { language, ignoreIllegals: true }) : highlightAuto(text);\n\n element.innerHTML = result.value;\n updateClassName(element, language, result.language);\n element.result = {\n language: result.language,\n // TODO: remove with version 11.0\n re: result.relevance,\n relevance: result.relevance\n };\n if (result.secondBest) {\n element.secondBest = {\n language: result.secondBest.language,\n relevance: result.secondBest.relevance\n };\n }\n\n fire(\"after:highlightElement\", { el: element, result, text });\n }\n\n /**\n * Updates highlight.js global options with the passed options\n *\n * @param {Partial<HLJSOptions>} userOptions\n */\n function configure(userOptions) {\n options = inherit(options, userOptions);\n }\n\n // TODO: remove v12, deprecated\n const initHighlighting = () => {\n highlightAll();\n deprecated(\"10.6.0\", \"initHighlighting() deprecated. Use highlightAll() now.\");\n };\n\n // TODO: remove v12, deprecated\n function initHighlightingOnLoad() {\n highlightAll();\n deprecated(\"10.6.0\", \"initHighlightingOnLoad() deprecated. Use highlightAll() now.\");\n }\n\n let wantsHighlight = false;\n\n /**\n * auto-highlights all pre>code elements on the page\n */\n function highlightAll() {\n // if we are called too early in the loading process\n if (document.readyState === \"loading\") {\n wantsHighlight = true;\n return;\n }\n\n const blocks = document.querySelectorAll(options.cssSelector);\n blocks.forEach(highlightElement);\n }\n\n function boot() {\n // if a highlight was requested before DOM was loaded, do now\n if (wantsHighlight) highlightAll();\n }\n\n // make sure we are in the browser environment\n if (typeof window !== 'undefined' && window.addEventListener) {\n window.addEventListener('DOMContentLoaded', boot, false);\n }\n\n /**\n * Register a language grammar module\n *\n * @param {string} languageName\n * @param {LanguageFn} languageDefinition\n */\n function registerLanguage(languageName, languageDefinition) {\n let lang = null;\n try {\n lang = languageDefinition(hljs);\n } catch (error$1) {\n error(\"Language definition for '{}' could not be registered.\".replace(\"{}\", languageName));\n // hard or soft error\n if (!SAFE_MODE) { throw error$1; } else { error(error$1); }\n // languages that have serious errors are replaced with essentially a\n // \"plaintext\" stand-in so that the code blocks will still get normal\n // css classes applied to them - and one bad language won't break the\n // entire highlighter\n lang = PLAINTEXT_LANGUAGE;\n }\n // give it a temporary name if it doesn't have one in the meta-data\n if (!lang.name) lang.name = languageName;\n languages[languageName] = lang;\n lang.rawDefinition = languageDefinition.bind(null, hljs);\n\n if (lang.aliases) {\n registerAliases(lang.aliases, { languageName });\n }\n }\n\n /**\n * Remove a language grammar module\n *\n * @param {string} languageName\n */\n function unregisterLanguage(languageName) {\n delete languages[languageName];\n for (const alias of Object.keys(aliases)) {\n if (aliases[alias] === languageName) {\n delete aliases[alias];\n }\n }\n }\n\n /**\n * @returns {string[]} List of language internal names\n */\n function listLanguages() {\n return Object.keys(languages);\n }\n\n /**\n * @param {string} name - name of the language to retrieve\n * @returns {Language | undefined}\n */\n function getLanguage(name) {\n name = (name || '').toLowerCase();\n return languages[name] || languages[aliases[name]];\n }\n\n /**\n *\n * @param {string|string[]} aliasList - single alias or list of aliases\n * @param {{languageName: string}} opts\n */\n function registerAliases(aliasList, { languageName }) {\n if (typeof aliasList === 'string') {\n aliasList = [aliasList];\n }\n aliasList.forEach(alias => { aliases[alias.toLowerCase()] = languageName; });\n }\n\n /**\n * Determines if a given language has auto-detection enabled\n * @param {string} name - name of the language\n */\n function autoDetection(name) {\n const lang = getLanguage(name);\n return lang && !lang.disableAutodetect;\n }\n\n /**\n * Upgrades the old highlightBlock plugins to the new\n * highlightElement API\n * @param {HLJSPlugin} plugin\n */\n function upgradePluginAPI(plugin) {\n // TODO: remove with v12\n if (plugin[\"before:highlightBlock\"] && !plugin[\"before:highlightElement\"]) {\n plugin[\"before:highlightElement\"] = (data) => {\n plugin[\"before:highlightBlock\"](\n Object.assign({ block: data.el }, data)\n );\n };\n }\n if (plugin[\"after:highlightBlock\"] && !plugin[\"after:highlightElement\"]) {\n plugin[\"after:highlightElement\"] = (data) => {\n plugin[\"after:highlightBlock\"](\n Object.assign({ block: data.el }, data)\n );\n };\n }\n }\n\n /**\n * @param {HLJSPlugin} plugin\n */\n function addPlugin(plugin) {\n upgradePluginAPI(plugin);\n plugins.push(plugin);\n }\n\n /**\n *\n * @param {PluginEvent} event\n * @param {any} args\n */\n function fire(event, args) {\n const cb = event;\n plugins.forEach(function(plugin) {\n if (plugin[cb]) {\n plugin[cb](args);\n }\n });\n }\n\n /**\n * DEPRECATED\n * @param {HighlightedHTMLElement} el\n */\n function deprecateHighlightBlock(el) {\n deprecated(\"10.7.0\", \"highlightBlock will be removed entirely in v12.0\");\n deprecated(\"10.7.0\", \"Please use highlightElement now.\");\n\n return highlightElement(el);\n }\n\n /* Interface definition */\n Object.assign(hljs, {\n highlight,\n highlightAuto,\n highlightAll,\n highlightElement,\n // TODO: Remove with v12 API\n highlightBlock: deprecateHighlightBlock,\n configure,\n initHighlighting,\n initHighlightingOnLoad,\n registerLanguage,\n unregisterLanguage,\n listLanguages,\n getLanguage,\n registerAliases,\n autoDetection,\n inherit,\n addPlugin\n });\n\n hljs.debugMode = function() { SAFE_MODE = false; };\n hljs.safeMode = function() { SAFE_MODE = true; };\n hljs.versionString = version;\n\n hljs.regex = {\n concat: concat,\n lookahead: lookahead,\n either: either,\n optional: optional,\n anyNumberOfTimes: anyNumberOfTimes\n };\n\n for (const key in MODES) {\n // @ts-ignore\n if (typeof MODES[key] === \"object\") {\n // @ts-ignore\n deepFreezeEs6.exports(MODES[key]);\n }\n }\n\n // merge all the modes/regexes into our main object\n Object.assign(hljs, MODES);\n\n return hljs;\n};\n\n// export an \"instance\" of the highlighter\nvar highlight = HLJS({});\n\nmodule.exports = highlight;\nhighlight.HighlightJS = highlight;\nhighlight.default = highlight;\n","import { isShadowRoot, isHTMLElement } from '@floating-ui/utils/dom';\n\nfunction activeElement(doc) {\n let activeElement = doc.activeElement;\n while (((_activeElement = activeElement) == null || (_activeElement = _activeElement.shadowRoot) == null ? void 0 : _activeElement.activeElement) != null) {\n var _activeElement;\n activeElement = activeElement.shadowRoot.activeElement;\n }\n return activeElement;\n}\nfunction contains(parent, child) {\n if (!parent || !child) {\n return false;\n }\n const rootNode = child.getRootNode == null ? void 0 : child.getRootNode();\n\n // First, attempt with faster native method\n if (parent.contains(child)) {\n return true;\n }\n\n // then fallback to custom implementation with Shadow DOM support\n if (rootNode && isShadowRoot(rootNode)) {\n let next = child;\n while (next) {\n if (parent === next) {\n return true;\n }\n // @ts-ignore\n next = next.parentNode || next.host;\n }\n }\n\n // Give up, the result is false\n return false;\n}\n// Avoid Chrome DevTools blue warning.\nfunction getPlatform() {\n const uaData = navigator.userAgentData;\n if (uaData != null && uaData.platform) {\n return uaData.platform;\n }\n return navigator.platform;\n}\nfunction getUserAgent() {\n const uaData = navigator.userAgentData;\n if (uaData && Array.isArray(uaData.brands)) {\n return uaData.brands.map(_ref => {\n let {\n brand,\n version\n } = _ref;\n return brand + \"/\" + version;\n }).join(' ');\n }\n return navigator.userAgent;\n}\n\n// License: https://github.com/adobe/react-spectrum/blob/b35d5c02fe900badccd0cf1a8f23bb593419f238/packages/@react-aria/utils/src/isVirtualEvent.ts\nfunction isVirtualClick(event) {\n // FIXME: Firefox is now emitting a deprecation warning for `mozInputSource`.\n // Try to find a workaround for this. `react-aria` source still has the check.\n if (event.mozInputSource === 0 && event.isTrusted) {\n return true;\n }\n if (isAndroid() && event.pointerType) {\n return event.type === 'click' && event.buttons === 1;\n }\n return event.detail === 0 && !event.pointerType;\n}\nfunction isVirtualPointerEvent(event) {\n if (isJSDOM()) return false;\n return !isAndroid() && event.width === 0 && event.height === 0 || isAndroid() && event.width === 1 && event.height === 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === 'mouse' ||\n // iOS VoiceOver returns 0.333• for width/height.\n event.width < 1 && event.height < 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === 'touch';\n}\nfunction isSafari() {\n // Chrome DevTools does not complain about navigator.vendor\n return /apple/i.test(navigator.vendor);\n}\nfunction isAndroid() {\n const re = /android/i;\n return re.test(getPlatform()) || re.test(getUserAgent());\n}\nfunction isMac() {\n return getPlatform().toLowerCase().startsWith('mac') && !navigator.maxTouchPoints;\n}\nfunction isJSDOM() {\n return getUserAgent().includes('jsdom/');\n}\nfunction isMouseLikePointerType(pointerType, strict) {\n // On some Linux machines with Chromium, mouse inputs return a `pointerType`\n // of \"pen\": https://github.com/floating-ui/floating-ui/issues/2015\n const values = ['mouse', 'pen'];\n if (!strict) {\n values.push('', undefined);\n }\n return values.includes(pointerType);\n}\nfunction isReactEvent(event) {\n return 'nativeEvent' in event;\n}\nfunction isRootElement(element) {\n return element.matches('html,body');\n}\nfunction getDocument(node) {\n return (node == null ? void 0 : node.ownerDocument) || document;\n}\nfunction isEventTargetWithin(event, node) {\n if (node == null) {\n return false;\n }\n if ('composedPath' in event) {\n return event.composedPath().includes(node);\n }\n\n // TS thinks `event` is of type never as it assumes all browsers support composedPath, but browsers without shadow dom don't\n const e = event;\n return e.target != null && node.contains(e.target);\n}\nfunction getTarget(event) {\n if ('composedPath' in event) {\n return event.composedPath()[0];\n }\n\n // TS thinks `event` is of type never as it assumes all browsers support\n // `composedPath()`, but browsers without shadow DOM don't.\n return event.target;\n}\nconst TYPEABLE_SELECTOR = \"input:not([type='hidden']):not([disabled]),\" + \"[contenteditable]:not([contenteditable='false']),textarea:not([disabled])\";\nfunction isTypeableElement(element) {\n return isHTMLElement(element) && element.matches(TYPEABLE_SELECTOR);\n}\nfunction stopEvent(event) {\n event.preventDefault();\n event.stopPropagation();\n}\nfunction isTypeableCombobox(element) {\n if (!element) return false;\n return element.getAttribute('role') === 'combobox' && isTypeableElement(element);\n}\n\nexport { TYPEABLE_SELECTOR, activeElement, contains, getDocument, getPlatform, getTarget, getUserAgent, isAndroid, isEventTargetWithin, isJSDOM, isMac, isMouseLikePointerType, isReactEvent, isRootElement, isSafari, isTypeableCombobox, isTypeableElement, isVirtualClick, isVirtualPointerEvent, stopEvent };\n","/*!\n* tabbable 6.2.0\n* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE\n*/\n// NOTE: separate `:not()` selectors has broader browser support than the newer\n// `:not([inert], [inert] *)` (Feb 2023)\n// CAREFUL: JSDom does not support `:not([inert] *)` as a selector; using it causes\n// the entire query to fail, resulting in no nodes found, which will break a lot\n// of things... so we have to rely on JS to identify nodes inside an inert container\nvar candidateSelectors = ['input:not([inert])', 'select:not([inert])', 'textarea:not([inert])', 'a[href]:not([inert])', 'button:not([inert])', '[tabindex]:not(slot):not([inert])', 'audio[controls]:not([inert])', 'video[controls]:not([inert])', '[contenteditable]:not([contenteditable=\"false\"]):not([inert])', 'details>summary:first-of-type:not([inert])', 'details:not([inert])'];\nvar candidateSelector = /* #__PURE__ */candidateSelectors.join(',');\nvar NoElement = typeof Element === 'undefined';\nvar matches = NoElement ? function () {} : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\nvar getRootNode = !NoElement && Element.prototype.getRootNode ? function (element) {\n var _element$getRootNode;\n return element === null || element === void 0 ? void 0 : (_element$getRootNode = element.getRootNode) === null || _element$getRootNode === void 0 ? void 0 : _element$getRootNode.call(element);\n} : function (element) {\n return element === null || element === void 0 ? void 0 : element.ownerDocument;\n};\n\n/**\n * Determines if a node is inert or in an inert ancestor.\n * @param {Element} [node]\n * @param {boolean} [lookUp] If true and `node` is not inert, looks up at ancestors to\n * see if any of them are inert. If false, only `node` itself is considered.\n * @returns {boolean} True if inert itself or by way of being in an inert ancestor.\n * False if `node` is falsy.\n */\nvar isInert = function isInert(node, lookUp) {\n var _node$getAttribute;\n if (lookUp === void 0) {\n lookUp = true;\n }\n // CAREFUL: JSDom does not support inert at all, so we can't use the `HTMLElement.inert`\n // JS API property; we have to check the attribute, which can either be empty or 'true';\n // if it's `null` (not specified) or 'false', it's an active element\n var inertAtt = node === null || node === void 0 ? void 0 : (_node$getAttribute = node.getAttribute) === null || _node$getAttribute === void 0 ? void 0 : _node$getAttribute.call(node, 'inert');\n var inert = inertAtt === '' || inertAtt === 'true';\n\n // NOTE: this could also be handled with `node.matches('[inert], :is([inert] *)')`\n // if it weren't for `matches()` not being a function on shadow roots; the following\n // code works for any kind of node\n // CAREFUL: JSDom does not appear to support certain selectors like `:not([inert] *)`\n // so it likely would not support `:is([inert] *)` either...\n var result = inert || lookUp && node && isInert(node.parentNode); // recursive\n\n return result;\n};\n\n/**\n * Determines if a node's content is editable.\n * @param {Element} [node]\n * @returns True if it's content-editable; false if it's not or `node` is falsy.\n */\nvar isContentEditable = function isContentEditable(node) {\n var _node$getAttribute2;\n // CAREFUL: JSDom does not support the `HTMLElement.isContentEditable` API so we have\n // to use the attribute directly to check for this, which can either be empty or 'true';\n // if it's `null` (not specified) or 'false', it's a non-editable element\n var attValue = node === null || node === void 0 ? void 0 : (_node$getAttribute2 = node.getAttribute) === null || _node$getAttribute2 === void 0 ? void 0 : _node$getAttribute2.call(node, 'contenteditable');\n return attValue === '' || attValue === 'true';\n};\n\n/**\n * @param {Element} el container to check in\n * @param {boolean} includeContainer add container to check\n * @param {(node: Element) => boolean} filter filter candidates\n * @returns {Element[]}\n */\nvar getCandidates = function getCandidates(el, includeContainer, filter) {\n // even if `includeContainer=false`, we still have to check it for inertness because\n // if it's inert, all its children are inert\n if (isInert(el)) {\n return [];\n }\n var candidates = Array.prototype.slice.apply(el.querySelectorAll(candidateSelector));\n if (includeContainer && matches.call(el, candidateSelector)) {\n candidates.unshift(el);\n }\n candidates = candidates.filter(filter);\n return candidates;\n};\n\n/**\n * @callback GetShadowRoot\n * @param {Element} element to check for shadow root\n * @returns {ShadowRoot|boolean} ShadowRoot if available or boolean indicating if a shadowRoot is attached but not available.\n */\n\n/**\n * @callback ShadowRootFilter\n * @param {Element} shadowHostNode the element which contains shadow content\n * @returns {boolean} true if a shadow root could potentially contain valid candidates.\n */\n\n/**\n * @typedef {Object} CandidateScope\n * @property {Element} scopeParent contains inner candidates\n * @property {Element[]} candidates list of candidates found in the scope parent\n */\n\n/**\n * @typedef {Object} IterativeOptions\n * @property {GetShadowRoot|boolean} getShadowRoot true if shadow support is enabled; falsy if not;\n * if a function, implies shadow support is enabled and either returns the shadow root of an element\n * or a boolean stating if it has an undisclosed shadow root\n * @property {(node: Element) => boolean} filter filter candidates\n * @property {boolean} flatten if true then result will flatten any CandidateScope into the returned list\n * @property {ShadowRootFilter} shadowRootFilter filter shadow roots;\n */\n\n/**\n * @param {Element[]} elements list of element containers to match candidates from\n * @param {boolean} includeContainer add container list to check\n * @param {IterativeOptions} options\n * @returns {Array.<Element|CandidateScope>}\n */\nvar getCandidatesIteratively = function getCandidatesIteratively(elements, includeContainer, options) {\n var candidates = [];\n var elementsToCheck = Array.from(elements);\n while (elementsToCheck.length) {\n var element = elementsToCheck.shift();\n if (isInert(element, false)) {\n // no need to look up since we're drilling down\n // anything inside this container will also be inert\n continue;\n }\n if (element.tagName === 'SLOT') {\n // add shadow dom slot scope (slot itself cannot be focusable)\n var assigned = element.assignedElements();\n var content = assigned.length ? assigned : element.children;\n var nestedCandidates = getCandidatesIteratively(content, true, options);\n if (options.flatten) {\n candidates.push.apply(candidates, nestedCandidates);\n } else {\n candidates.push({\n scopeParent: element,\n candidates: nestedCandidates\n });\n }\n } else {\n // check candidate element\n var validCandidate = matches.call(element, candidateSelector);\n if (validCandidate && options.filter(element) && (includeContainer || !elements.includes(element))) {\n candidates.push(element);\n }\n\n // iterate over shadow content if possible\n var shadowRoot = element.shadowRoot ||\n // check for an undisclosed shadow\n typeof options.getShadowRoot === 'function' && options.getShadowRoot(element);\n\n // no inert look up because we're already drilling down and checking for inertness\n // on the way down, so all containers to this root node should have already been\n // vetted as non-inert\n var validShadowRoot = !isInert(shadowRoot, false) && (!options.shadowRootFilter || options.shadowRootFilter(element));\n if (shadowRoot && validShadowRoot) {\n // add shadow dom scope IIF a shadow root node was given; otherwise, an undisclosed\n // shadow exists, so look at light dom children as fallback BUT create a scope for any\n // child candidates found because they're likely slotted elements (elements that are\n // children of the web component element (which has the shadow), in the light dom, but\n // slotted somewhere _inside_ the undisclosed shadow) -- the scope is created below,\n // _after_ we return from this recursive call\n var _nestedCandidates = getCandidatesIteratively(shadowRoot === true ? element.children : shadowRoot.children, true, options);\n if (options.flatten) {\n candidates.push.apply(candidates, _nestedCandidates);\n } else {\n candidates.push({\n scopeParent: element,\n candidates: _nestedCandidates\n });\n }\n } else {\n // there's not shadow so just dig into the element's (light dom) children\n // __without__ giving the element special scope treatment\n elementsToCheck.unshift.apply(elementsToCheck, element.children);\n }\n }\n }\n return candidates;\n};\n\n/**\n * @private\n * Determines if the node has an explicitly specified `tabindex` attribute.\n * @param {HTMLElement} node\n * @returns {boolean} True if so; false if not.\n */\nvar hasTabIndex = function hasTabIndex(node) {\n return !isNaN(parseInt(node.getAttribute('tabindex'), 10));\n};\n\n/**\n * Determine the tab index of a given node.\n * @param {HTMLElement} node\n * @returns {number} Tab order (negative, 0, or positive number).\n * @throws {Error} If `node` is falsy.\n */\nvar getTabIndex = function getTabIndex(node) {\n if (!node) {\n throw new Error('No node provided');\n }\n if (node.tabIndex < 0) {\n // in Chrome, <details/>, <audio controls/> and <video controls/> elements get a default\n // `tabIndex` of -1 when the 'tabindex' attribute isn't specified in the DOM,\n // yet they are still part of the regular tab order; in FF, they get a default\n // `tabIndex` of 0; since Chrome still puts those elements in the regular tab\n // order, consider their tab index to be 0.\n // Also browsers do not return `tabIndex` correctly for contentEditable nodes;\n // so if they don't have a tabindex attribute specifically set, assume it's 0.\n if ((/^(AUDIO|VIDEO|DETAILS)$/.test(node.tagName) || isContentEditable(node)) && !hasTabIndex(node)) {\n return 0;\n }\n }\n return node.tabIndex;\n};\n\n/**\n * Determine the tab index of a given node __for sort order purposes__.\n * @param {HTMLElement} node\n * @param {boolean} [isScope] True for a custom element with shadow root or slot that, by default,\n * has tabIndex -1, but needs to be sorted by document order in order for its content to be\n * inserted into the correct sort position.\n * @returns {number} Tab order (negative, 0, or positive number).\n */\nvar getSortOrderTabIndex = function getSortOrderTabIndex(node, isScope) {\n var tabIndex = getTabIndex(node);\n if (tabIndex < 0 && isScope && !hasTabIndex(node)) {\n return 0;\n }\n return tabIndex;\n};\nvar sortOrderedTabbables = function sortOrderedTabbables(a, b) {\n return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex;\n};\nvar isInput = function isInput(node) {\n return node.tagName === 'INPUT';\n};\nvar isHiddenInput = function isHiddenInput(node) {\n return isInput(node) && node.type === 'hidden';\n};\nvar isDetailsWithSummary = function isDetailsWithSummary(node) {\n var r = node.tagName === 'DETAILS' && Array.prototype.slice.apply(node.children).some(function (child) {\n return child.tagName === 'SUMMARY';\n });\n return r;\n};\nvar getCheckedRadio = function getCheckedRadio(nodes, form) {\n for (var i = 0; i < nodes.length; i++) {\n if (nodes[i].checked && nodes[i].form === form) {\n return nodes[i];\n }\n }\n};\nvar isTabbableRadio = function isTabbableRadio(node) {\n if (!node.name) {\n return true;\n }\n var radioScope = node.form || getRootNode(node);\n var queryRadios = function queryRadios(name) {\n return radioScope.querySelectorAll('input[type=\"radio\"][name=\"' + name + '\"]');\n };\n var radioSet;\n if (typeof window !== 'undefined' && typeof window.CSS !== 'undefined' && typeof window.CSS.escape === 'function') {\n radioSet = queryRadios(window.CSS.escape(node.name));\n } else {\n try {\n radioSet = queryRadios(node.name);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s', err.message);\n return false;\n }\n }\n var checked = getCheckedRadio(radioSet, node.form);\n return !checked || checked === node;\n};\nvar isRadio = function isRadio(node) {\n return isInput(node) && node.type === 'radio';\n};\nvar isNonTabbableRadio = function isNonTabbableRadio(node) {\n return isRadio(node) && !isTabbableRadio(node);\n};\n\n// determines if a node is ultimately attached to the window's document\nvar isNodeAttached = function isNodeAttached(node) {\n var _nodeRoot;\n // The root node is the shadow root if the node is in a shadow DOM; some document otherwise\n // (but NOT _the_ document; see second 'If' comment below for more).\n // If rootNode is shadow root, it'll have a host, which is the element to which the shadow\n // is attached, and the one we need to check if it's in the document or not (because the\n // shadow, and all nodes it contains, is never considered in the document since shadows\n // behave like self-contained DOMs; but if the shadow's HOST, which is part of the document,\n // is hidden, or is not in the document itself but is detached, it will affect the shadow's\n // visibility, including all the nodes it contains). The host could be any normal node,\n // or a custom element (i.e. web component). Either way, that's the one that is considered\n // part of the document, not the shadow root, nor any of its children (i.e. the node being\n // tested).\n // To further complicate things, we have to look all the way up until we find a shadow HOST\n // that is attached (or find none) because the node might be in nested shadows...\n // If rootNode is not a shadow root, it won't have a host, and so rootNode should be the\n // document (per the docs) and while it's a Document-type object, that document does not\n // appear to be the same as the node's `ownerDocument` for some reason, so it's safer\n // to ignore the rootNode at this point, and use `node.ownerDocument`. Otherwise,\n // using `rootNode.contains(node)` will _always_ be true we'll get false-positives when\n // node is actually detached.\n // NOTE: If `nodeRootHost` or `node` happens to be the `document` itself (which is possible\n // if a tabbable/focusable node was quickly added to the DOM, focused, and then removed\n // from the DOM as in https://github.com/focus-trap/focus-trap-react/issues/905), then\n // `ownerDocument` will be `null`, hence the optional chaining on it.\n var nodeRoot = node && getRootNode(node);\n var nodeRootHost = (_nodeRoot = nodeRoot) === null || _nodeRoot === void 0 ? void 0 : _nodeRoot.host;\n\n // in some cases, a detached node will return itself as the root instead of a document or\n // shadow root object, in which case, we shouldn't try to look further up the host chain\n var attached = false;\n if (nodeRoot && nodeRoot !== node) {\n var _nodeRootHost, _nodeRootHost$ownerDo, _node$ownerDocument;\n attached = !!((_nodeRootHost = nodeRootHost) !== null && _nodeRootHost !== void 0 && (_nodeRootHost$ownerDo = _nodeRootHost.ownerDocument) !== null && _nodeRootHost$ownerDo !== void 0 && _nodeRootHost$ownerDo.contains(nodeRootHost) || node !== null && node !== void 0 && (_node$ownerDocument = node.ownerDocument) !== null && _node$ownerDocument !== void 0 && _node$ownerDocument.contains(node));\n while (!attached && nodeRootHost) {\n var _nodeRoot2, _nodeRootHost2, _nodeRootHost2$ownerD;\n // since it's not attached and we have a root host, the node MUST be in a nested shadow DOM,\n // which means we need to get the host's host and check if that parent host is contained\n // in (i.e. attached to) the document\n nodeRoot = getRootNode(nodeRootHost);\n nodeRootHost = (_nodeRoot2 = nodeRoot) === null || _nodeRoot2 === void 0 ? void 0 : _nodeRoot2.host;\n attached = !!((_nodeRootHost2 = nodeRootHost) !== null && _nodeRootHost2 !== void 0 && (_nodeRootHost2$ownerD = _nodeRootHost2.ownerDocument) !== null && _nodeRootHost2$ownerD !== void 0 && _nodeRootHost2$ownerD.contains(nodeRootHost));\n }\n }\n return attached;\n};\nvar isZeroArea = function isZeroArea(node) {\n var _node$getBoundingClie = node.getBoundingClientRect(),\n width = _node$getBoundingClie.width,\n height = _node$getBoundingClie.height;\n return width === 0 && height === 0;\n};\nvar isHidden = function isHidden(node, _ref) {\n var displayCheck = _ref.displayCheck,\n getShadowRoot = _ref.getShadowRoot;\n // NOTE: visibility will be `undefined` if node is detached from the document\n // (see notes about this further down), which means we will consider it visible\n // (this is legacy behavior from a very long way back)\n // NOTE: we check this regardless of `displayCheck=\"none\"` because this is a\n // _visibility_ check, not a _display_ check\n if (getComputedStyle(node).visibility === 'hidden') {\n return true;\n }\n var isDirectSummary = matches.call(node, 'details>summary:first-of-type');\n var nodeUnderDetails = isDirectSummary ? node.parentElement : node;\n if (matches.call(nodeUnderDetails, 'details:not([open]) *')) {\n return true;\n }\n if (!displayCheck || displayCheck === 'full' || displayCheck === 'legacy-full') {\n if (typeof getShadowRoot === 'function') {\n // figure out if we should consider the node to be in an undisclosed shadow and use the\n // 'non-zero-area' fallback\n var originalNode = node;\n while (node) {\n var parentElement = node.parentElement;\n var rootNode = getRootNode(node);\n if (parentElement && !parentElement.shadowRoot && getShadowRoot(parentElement) === true // check if there's an undisclosed shadow\n ) {\n // node has an undisclosed shadow which means we can only treat it as a black box, so we\n // fall back to a non-zero-area test\n return isZeroArea(node);\n } else if (node.assignedSlot) {\n // iterate up slot\n node = node.assignedSlot;\n } else if (!parentElement && rootNode !== node.ownerDocument) {\n // cross shadow boundary\n node = rootNode.host;\n } else {\n // iterate up normal dom\n node = parentElement;\n }\n }\n node = originalNode;\n }\n // else, `getShadowRoot` might be true, but all that does is enable shadow DOM support\n // (i.e. it does not also presume that all nodes might have undisclosed shadows); or\n // it might be a falsy value, which means shadow DOM support is disabled\n\n // Since we didn't find it sitting in an undisclosed shadow (or shadows are disabled)\n // now we can just test to see if it would normally be visible or not, provided it's\n // attached to the main document.\n // NOTE: We must consider case where node is inside a shadow DOM and given directly to\n // `isTabbable()` or `isFocusable()` -- regardless of `getShadowRoot` option setting.\n\n if (isNodeAttached(node)) {\n // this works wherever the node is: if there's at least one client rect, it's\n // somehow displayed; it also covers the CSS 'display: contents' case where the\n // node itself is hidden in place of its contents; and there's no need to search\n // up the hierarchy either\n return !node.getClientRects().length;\n }\n\n // Else, the node isn't attached to the document, which means the `getClientRects()`\n // API will __always__ return zero rects (this can happen, for example, if React\n // is used to render nodes onto a detached tree, as confirmed in this thread:\n // https://github.com/facebook/react/issues/9117#issuecomment-284228870)\n //\n // It also means that even window.getComputedStyle(node).display will return `undefined`\n // because styles are only computed for nodes that are in the document.\n //\n // NOTE: THIS HAS BEEN THE CASE FOR YEARS. It is not new, nor is it caused by tabbable\n // somehow. Though it was never stated officially, anyone who has ever used tabbable\n // APIs on nodes in detached containers has actually implicitly used tabbable in what\n // was later (as of v5.2.0 on Apr 9, 2021) called `displayCheck=\"none\"` mode -- essentially\n // considering __everything__ to be visible because of the innability to determine styles.\n //\n // v6.0.0: As of this major release, the default 'full' option __no longer treats detached\n // nodes as visible with the 'none' fallback.__\n if (displayCheck !== 'legacy-full') {\n return true; // hidden\n }\n // else, fallback to 'none' mode and consider the node visible\n } else if (displayCheck === 'non-zero-area') {\n // NOTE: Even though this tests that the node's client rect is non-zero to determine\n // whether it's displayed, and that a detached node will __always__ have a zero-area\n // client rect, we don't special-case for whether the node is attached or not. In\n // this mode, we do want to consider nodes that have a zero area to be hidden at all\n // times, and that includes attached or not.\n return isZeroArea(node);\n }\n\n // visible, as far as we can tell, or per current `displayCheck=none` mode, we assume\n // it's visible\n return false;\n};\n\n// form fields (nested) inside a disabled fieldset are not focusable/tabbable\n// unless they are in the _first_ <legend> element of the top-most disabled\n// fieldset\nvar isDisabledFromFieldset = function isDisabledFromFieldset(node) {\n if (/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(node.tagName)) {\n var parentNode = node.parentElement;\n // check if `node` is contained in a disabled <fieldset>\n while (parentNode) {\n if (parentNode.tagName === 'FIELDSET' && parentNode.disabled) {\n // look for the first <legend> among the children of the disabled <fieldset>\n for (var i = 0; i < parentNode.children.length; i++) {\n var child = parentNode.children.item(i);\n // when the first <legend> (in document order) is found\n if (child.tagName === 'LEGEND') {\n // if its parent <fieldset> is not nested in another disabled <fieldset>,\n // return whether `node` is a descendant of its first <legend>\n return matches.call(parentNode, 'fieldset[disabled] *') ? true : !child.contains(node);\n }\n }\n // the disabled <fieldset> containing `node` has no <legend>\n return true;\n }\n parentNode = parentNode.parentElement;\n }\n }\n\n // else, node's tabbable/focusable state should not be affected by a fieldset's\n // enabled/disabled state\n return false;\n};\nvar isNodeMatchingSelectorFocusable = function isNodeMatchingSelectorFocusable(options, node) {\n if (node.disabled ||\n // we must do an inert look up to filter out any elements inside an inert ancestor\n // because we're limited in the type of selectors we can use in JSDom (see related\n // note related to `candidateSelectors`)\n isInert(node) || isHiddenInput(node) || isHidden(node, options) ||\n // For a details element with a summary, the summary element gets the focus\n isDetailsWithSummary(node) || isDisabledFromFieldset(node)) {\n return false;\n }\n return true;\n};\nvar isNodeMatchingSelectorTabbable = function isNodeMatchingSelectorTabbable(options, node) {\n if (isNonTabbableRadio(node) || getTabIndex(node) < 0 || !isNodeMatchingSelectorFocusable(options, node)) {\n return false;\n }\n return true;\n};\nvar isValidShadowRootTabbable = function isValidShadowRootTabbable(shadowHostNode) {\n var tabIndex = parseInt(shadowHostNode.getAttribute('tabindex'), 10);\n if (isNaN(tabIndex) || tabIndex >= 0) {\n return true;\n }\n // If a custom element has an explicit negative tabindex,\n // browsers will not allow tab targeting said element's children.\n return false;\n};\n\n/**\n * @param {Array.<Element|CandidateScope>} candidates\n * @returns Element[]\n */\nvar sortByOrder = function sortByOrder(candidates) {\n var regularTabbables = [];\n var orderedTabbables = [];\n candidates.forEach(function (item, i) {\n var isScope = !!item.scopeParent;\n var element = isScope ? item.scopeParent : item;\n var candidateTabindex = getSortOrderTabIndex(element, isScope);\n var elements = isScope ? sortByOrder(item.candidates) : element;\n if (candidateTabindex === 0) {\n isScope ? regularTabbables.push.apply(regularTabbables, elements) : regularTabbables.push(element);\n } else {\n orderedTabbables.push({\n documentOrder: i,\n tabIndex: candidateTabindex,\n item: item,\n isScope: isScope,\n content: elements\n });\n }\n });\n return orderedTabbables.sort(sortOrderedTabbables).reduce(function (acc, sortable) {\n sortable.isScope ? acc.push.apply(acc, sortable.content) : acc.push(sortable.content);\n return acc;\n }, []).concat(regularTabbables);\n};\nvar tabbable = function tabbable(container, options) {\n options = options || {};\n var candidates;\n if (options.getShadowRoot) {\n candidates = getCandidatesIteratively([container], options.includeContainer, {\n filter: isNodeMatchingSelectorTabbable.bind(null, options),\n flatten: false,\n getShadowRoot: options.getShadowRoot,\n shadowRootFilter: isValidShadowRootTabbable\n });\n } else {\n candidates = getCandidates(container, options.includeContainer, isNodeMatchingSelectorTabbable.bind(null, options));\n }\n return sortByOrder(candidates);\n};\nvar focusable = function focusable(container, options) {\n options = options || {};\n var candidates;\n if (options.getShadowRoot) {\n candidates = getCandidatesIteratively([container], options.includeContainer, {\n filter: isNodeMatchingSelectorFocusable.bind(null, options),\n flatten: true,\n getShadowRoot: options.getShadowRoot\n });\n } else {\n candidates = getCandidates(container, options.includeContainer, isNodeMatchingSelectorFocusable.bind(null, options));\n }\n return candidates;\n};\nvar isTabbable = function isTabbable(node, options) {\n options = options || {};\n if (!node) {\n throw new Error('No node provided');\n }\n if (matches.call(node, candidateSelector) === false) {\n return false;\n }\n return isNodeMatchingSelectorTabbable(options, node);\n};\nvar focusableCandidateSelector = /* #__PURE__ */candidateSelectors.concat('iframe').join(',');\nvar isFocusable = function isFocusable(node, options) {\n options = options || {};\n if (!node) {\n throw new Error('No node provided');\n }\n if (matches.call(node, focusableCandidateSelector) === false) {\n return false;\n }\n return isNodeMatchingSelectorFocusable(options, node);\n};\n\nexport { focusable, getTabIndex, isFocusable, isTabbable, tabbable };\n//# sourceMappingURL=index.esm.js.map\n","import * as React from 'react';\nimport { useLayoutEffect, useEffect, useRef } from 'react';\nimport { stopEvent, getDocument, isMouseLikePointerType, contains, activeElement, isSafari, isTypeableCombobox, isVirtualClick, isVirtualPointerEvent, getTarget, getPlatform, isTypeableElement, isReactEvent, isRootElement, isEventTargetWithin, isMac, getUserAgent } from '@floating-ui/react/utils';\nimport { floor } from '@floating-ui/utils';\nimport { platform, getOverflowAncestors, useFloating as useFloating$1, offset, detectOverflow } from '@floating-ui/react-dom';\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, getOverflowAncestors, hide, inline, limitShift, offset, platform, shift, size } from '@floating-ui/react-dom';\nimport { isElement, isHTMLElement, getNodeName, getWindow, isLastTraversableNode, getParentNode, getComputedStyle } from '@floating-ui/utils/dom';\nimport { tabbable } from 'tabbable';\nimport { createPortal, flushSync } from 'react-dom';\n\n/**\n * Merges an array of refs into a single memoized callback ref or `null`.\n * @see https://floating-ui.com/docs/useMergeRefs\n */\nfunction useMergeRefs(refs) {\n // biome-ignore lint/correctness/useExhaustiveDependencies: intentional\n return React.useMemo(() => {\n if (refs.every(ref => ref == null)) {\n return null;\n }\n return value => {\n refs.forEach(ref => {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref != null) {\n ref.current = value;\n }\n });\n };\n }, refs);\n}\n\n// `toString()` prevents bundlers from trying to `import { useInsertionEffect } from 'react'`\nconst useInsertionEffect = React[/*#__PURE__*/'useInsertionEffect'.toString()];\nconst useSafeInsertionEffect = useInsertionEffect || (fn => fn());\nfunction useEffectEvent(callback) {\n const ref = React.useRef(() => {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error('Cannot call an event handler while rendering.');\n }\n });\n useSafeInsertionEffect(() => {\n ref.current = callback;\n });\n return React.useCallback(function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return ref.current == null ? void 0 : ref.current(...args);\n }, []);\n}\n\nconst ARROW_UP = 'ArrowUp';\nconst ARROW_DOWN = 'ArrowDown';\nconst ARROW_LEFT = 'ArrowLeft';\nconst ARROW_RIGHT = 'ArrowRight';\nfunction isDifferentRow(index, cols, prevRow) {\n return Math.floor(index / cols) !== prevRow;\n}\nfunction isIndexOutOfBounds(listRef, index) {\n return index < 0 || index >= listRef.current.length;\n}\nfunction getMinIndex(listRef, disabledIndices) {\n return findNonDisabledIndex(listRef, {\n disabledIndices\n });\n}\nfunction getMaxIndex(listRef, disabledIndices) {\n return findNonDisabledIndex(listRef, {\n decrement: true,\n startingIndex: listRef.current.length,\n disabledIndices\n });\n}\nfunction findNonDisabledIndex(listRef, _temp) {\n let {\n startingIndex = -1,\n decrement = false,\n disabledIndices,\n amount = 1\n } = _temp === void 0 ? {} : _temp;\n const list = listRef.current;\n const isDisabledIndex = disabledIndices ? index => disabledIndices.includes(index) : index => {\n const element = list[index];\n return element == null || element.hasAttribute('disabled') || element.getAttribute('aria-disabled') === 'true';\n };\n let index = startingIndex;\n do {\n index += decrement ? -amount : amount;\n } while (index >= 0 && index <= list.length - 1 && isDisabledIndex(index));\n return index;\n}\nfunction getGridNavigatedIndex(elementsRef, _ref) {\n let {\n event,\n orientation,\n loop,\n cols,\n disabledIndices,\n minIndex,\n maxIndex,\n prevIndex,\n stopEvent: stop = false\n } = _ref;\n let nextIndex = prevIndex;\n if (event.key === ARROW_UP) {\n stop && stopEvent(event);\n if (prevIndex === -1) {\n nextIndex = maxIndex;\n } else {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: nextIndex,\n amount: cols,\n decrement: true,\n disabledIndices\n });\n if (loop && (prevIndex - cols < minIndex || nextIndex < 0)) {\n const col = prevIndex % cols;\n const maxCol = maxIndex % cols;\n const offset = maxIndex - (maxCol - col);\n if (maxCol === col) {\n nextIndex = maxIndex;\n } else {\n nextIndex = maxCol > col ? offset : offset - cols;\n }\n }\n }\n if (isIndexOutOfBounds(elementsRef, nextIndex)) {\n nextIndex = prevIndex;\n }\n }\n if (event.key === ARROW_DOWN) {\n stop && stopEvent(event);\n if (prevIndex === -1) {\n nextIndex = minIndex;\n } else {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: prevIndex,\n amount: cols,\n disabledIndices\n });\n if (loop && prevIndex + cols > maxIndex) {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: prevIndex % cols - cols,\n amount: cols,\n disabledIndices\n });\n }\n }\n if (isIndexOutOfBounds(elementsRef, nextIndex)) {\n nextIndex = prevIndex;\n }\n }\n\n // Remains on the same row/column.\n if (orientation === 'both') {\n const prevRow = floor(prevIndex / cols);\n if (event.key === ARROW_RIGHT) {\n stop && stopEvent(event);\n if (prevIndex % cols !== cols - 1) {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: prevIndex,\n disabledIndices\n });\n if (loop && isDifferentRow(nextIndex, cols, prevRow)) {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: prevIndex - prevIndex % cols - 1,\n disabledIndices\n });\n }\n } else if (loop) {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: prevIndex - prevIndex % cols - 1,\n disabledIndices\n });\n }\n if (isDifferentRow(nextIndex, cols, prevRow)) {\n nextIndex = prevIndex;\n }\n }\n if (event.key === ARROW_LEFT) {\n stop && stopEvent(event);\n if (prevIndex % cols !== 0) {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: prevIndex,\n disabledIndices,\n decrement: true\n });\n if (loop && isDifferentRow(nextIndex, cols, prevRow)) {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: prevIndex + (cols - prevIndex % cols),\n decrement: true,\n disabledIndices\n });\n }\n } else if (loop) {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: prevIndex + (cols - prevIndex % cols),\n decrement: true,\n disabledIndices\n });\n }\n if (isDifferentRow(nextIndex, cols, prevRow)) {\n nextIndex = prevIndex;\n }\n }\n const lastRow = floor(maxIndex / cols) === prevRow;\n if (isIndexOutOfBounds(elementsRef, nextIndex)) {\n if (loop && lastRow) {\n nextIndex = event.key === ARROW_LEFT ? maxIndex : findNonDisabledIndex(elementsRef, {\n startingIndex: prevIndex - prevIndex % cols - 1,\n disabledIndices\n });\n } else {\n nextIndex = prevIndex;\n }\n }\n }\n return nextIndex;\n}\n\n/** For each cell index, gets the item index that occupies that cell */\nfunction buildCellMap(sizes, cols, dense) {\n const cellMap = [];\n let startIndex = 0;\n sizes.forEach((_ref2, index) => {\n let {\n width,\n height\n } = _ref2;\n if (width > cols) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\"[Floating UI]: Invalid grid - item width at index \" + index + \" is greater than grid columns\");\n }\n }\n let itemPlaced = false;\n if (dense) {\n startIndex = 0;\n }\n while (!itemPlaced) {\n const targetCells = [];\n for (let i = 0; i < width; i++) {\n for (let j = 0; j < height; j++) {\n targetCells.push(startIndex + i + j * cols);\n }\n }\n if (startIndex % cols + width <= cols && targetCells.every(cell => cellMap[cell] == null)) {\n targetCells.forEach(cell => {\n cellMap[cell] = index;\n });\n itemPlaced = true;\n } else {\n startIndex++;\n }\n }\n });\n\n // convert into a non-sparse array\n return [...cellMap];\n}\n\n/** Gets cell index of an item's corner or -1 when index is -1. */\nfunction getCellIndexOfCorner(index, sizes, cellMap, cols, corner) {\n if (index === -1) return -1;\n const firstCellIndex = cellMap.indexOf(index);\n switch (corner) {\n case 'tl':\n return firstCellIndex;\n case 'tr':\n return firstCellIndex + sizes[index].width - 1;\n case 'bl':\n return firstCellIndex + (sizes[index].height - 1) * cols;\n case 'br':\n return cellMap.lastIndexOf(index);\n }\n}\n\n/** Gets all cell indices that correspond to the specified indices */\nfunction getCellIndices(indices, cellMap) {\n return cellMap.flatMap((index, cellIndex) => indices.includes(index) ? [cellIndex] : []);\n}\n\nlet rafId = 0;\nfunction enqueueFocus(el, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n preventScroll = false,\n cancelPrevious = true,\n sync = false\n } = options;\n cancelPrevious && cancelAnimationFrame(rafId);\n const exec = () => el == null ? void 0 : el.focus({\n preventScroll\n });\n if (sync) {\n exec();\n } else {\n rafId = requestAnimationFrame(exec);\n }\n}\n\nvar index = typeof document !== 'undefined' ? useLayoutEffect : useEffect;\n\nfunction sortByDocumentPosition(a, b) {\n const position = a.compareDocumentPosition(b);\n if (position & Node.DOCUMENT_POSITION_FOLLOWING || position & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return -1;\n }\n if (position & Node.DOCUMENT_POSITION_PRECEDING || position & Node.DOCUMENT_POSITION_CONTAINS) {\n return 1;\n }\n return 0;\n}\nfunction areMapsEqual(map1, map2) {\n if (map1.size !== map2.size) {\n return false;\n }\n for (const [key, value] of map1.entries()) {\n if (value !== map2.get(key)) {\n return false;\n }\n }\n return true;\n}\nconst FloatingListContext = /*#__PURE__*/React.createContext({\n register: () => {},\n unregister: () => {},\n map: /*#__PURE__*/new Map(),\n elementsRef: {\n current: []\n }\n});\n/**\n * Provides context for a list of items within the floating element.\n * @see https://floating-ui.com/docs/FloatingList\n */\nfunction FloatingList(_ref) {\n let {\n children,\n elementsRef,\n labelsRef\n } = _ref;\n const [map, setMap] = React.useState(() => new Map());\n const register = React.useCallback(node => {\n setMap(prevMap => new Map(prevMap).set(node, null));\n }, []);\n const unregister = React.useCallback(node => {\n setMap(prevMap => {\n const map = new Map(prevMap);\n map.delete(node);\n return map;\n });\n }, []);\n index(() => {\n const newMap = new Map(map);\n const nodes = Array.from(newMap.keys()).sort(sortByDocumentPosition);\n nodes.forEach((node, index) => {\n newMap.set(node, index);\n });\n if (!areMapsEqual(map, newMap)) {\n setMap(newMap);\n }\n }, [map]);\n return /*#__PURE__*/React.createElement(FloatingListContext.Provider, {\n value: React.useMemo(() => ({\n register,\n unregister,\n map,\n elementsRef,\n labelsRef\n }), [register, unregister, map, elementsRef, labelsRef])\n }, children);\n}\nfunction useListItem(_temp) {\n let {\n label\n } = _temp === void 0 ? {} : _temp;\n const [index$1, setIndex] = React.useState(null);\n const componentRef = React.useRef(null);\n const {\n register,\n unregister,\n map,\n elementsRef,\n labelsRef\n } = React.useContext(FloatingListContext);\n const ref = React.useCallback(node => {\n componentRef.current = node;\n if (index$1 !== null) {\n elementsRef.current[index$1] = node;\n if (labelsRef) {\n var _node$textContent;\n const isLabelDefined = label !== undefined;\n labelsRef.current[index$1] = isLabelDefined ? label : (_node$textContent = node == null ? void 0 : node.textContent) != null ? _node$textContent : null;\n }\n }\n }, [index$1, elementsRef, labelsRef, label]);\n index(() => {\n const node = componentRef.current;\n if (node) {\n register(node);\n return () => {\n unregister(node);\n };\n }\n }, [register, unregister]);\n index(() => {\n const index = componentRef.current ? map.get(componentRef.current) : null;\n if (index != null) {\n setIndex(index);\n }\n }, [map]);\n return React.useMemo(() => ({\n ref,\n index: index$1 == null ? -1 : index$1\n }), [index$1, ref]);\n}\n\nfunction renderJsx(render, computedProps) {\n if (typeof render === 'function') {\n return render(computedProps);\n }\n if (render) {\n return /*#__PURE__*/React.cloneElement(render, computedProps);\n }\n return /*#__PURE__*/React.createElement(\"div\", computedProps);\n}\nconst CompositeContext = /*#__PURE__*/React.createContext({\n activeIndex: 0,\n onNavigate: () => {}\n});\nconst horizontalKeys = [ARROW_LEFT, ARROW_RIGHT];\nconst verticalKeys = [ARROW_UP, ARROW_DOWN];\nconst allKeys = [...horizontalKeys, ...verticalKeys];\nconst Composite = /*#__PURE__*/React.forwardRef(function Composite(_ref, forwardedRef) {\n let {\n render,\n orientation = 'both',\n loop = true,\n cols = 1,\n disabledIndices = [],\n activeIndex: externalActiveIndex,\n onNavigate: externalSetActiveIndex,\n itemSizes,\n dense = false,\n ...props\n } = _ref;\n const [internalActiveIndex, internalSetActiveIndex] = React.useState(0);\n const activeIndex = externalActiveIndex != null ? externalActiveIndex : internalActiveIndex;\n const onNavigate = useEffectEvent(externalSetActiveIndex != null ? externalSetActiveIndex : internalSetActiveIndex);\n const elementsRef = React.useRef([]);\n const renderElementProps = render && typeof render !== 'function' ? render.props : {};\n const contextValue = React.useMemo(() => ({\n activeIndex,\n onNavigate\n }), [activeIndex, onNavigate]);\n const isGrid = cols > 1;\n function handleKeyDown(event) {\n if (!allKeys.includes(event.key)) return;\n let nextIndex = activeIndex;\n if (isGrid) {\n const sizes = itemSizes != null ? itemSizes : Array.from(Array(elementsRef.current.length), () => ({\n width: 1,\n height: 1\n }));\n // To calculate movements on the grid, we use hypothetical cell indices\n // as if every item was 1x1, then convert back to real indices.\n const cellMap = buildCellMap(sizes, cols, dense);\n const minGridIndex = cellMap.findIndex(index => index != null && !disabledIndices.includes(index));\n // last enabled index\n const maxGridIndex = cellMap.reduce((foundIndex, index, cellIndex) => index != null && !(disabledIndices != null && disabledIndices.includes(index)) ? cellIndex : foundIndex, -1);\n nextIndex = cellMap[getGridNavigatedIndex({\n current: cellMap.map(itemIndex => itemIndex ? elementsRef.current[itemIndex] : null)\n }, {\n event,\n orientation,\n loop,\n cols,\n // treat undefined (empty grid spaces) as disabled indices so we\n // don't end up in them\n disabledIndices: getCellIndices([...disabledIndices, undefined], cellMap),\n minIndex: minGridIndex,\n maxIndex: maxGridIndex,\n prevIndex: getCellIndexOfCorner(activeIndex, sizes, cellMap, cols,\n // use a corner matching the edge closest to the direction we're\n // moving in so we don't end up in the same item. Prefer\n // top/left over bottom/right.\n event.key === ARROW_DOWN ? 'bl' : event.key === ARROW_RIGHT ? 'tr' : 'tl')\n })]; // navigated cell will never be nullish\n }\n const minIndex = getMinIndex(elementsRef, disabledIndices);\n const maxIndex = getMaxIndex(elementsRef, disabledIndices);\n const toEndKeys = {\n horizontal: [ARROW_RIGHT],\n vertical: [ARROW_DOWN],\n both: [ARROW_RIGHT, ARROW_DOWN]\n }[orientation];\n const toStartKeys = {\n horizontal: [ARROW_LEFT],\n vertical: [ARROW_UP],\n both: [ARROW_LEFT, ARROW_UP]\n }[orientation];\n const preventedKeys = isGrid ? allKeys : {\n horizontal: horizontalKeys,\n vertical: verticalKeys,\n both: allKeys\n }[orientation];\n if (nextIndex === activeIndex && [...toEndKeys, ...toStartKeys].includes(event.key)) {\n if (loop && nextIndex === maxIndex && toEndKeys.includes(event.key)) {\n nextIndex = minIndex;\n } else if (loop && nextIndex === minIndex && toStartKeys.includes(event.key)) {\n nextIndex = maxIndex;\n } else {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: nextIndex,\n decrement: toStartKeys.includes(event.key),\n disabledIndices\n });\n }\n }\n if (nextIndex !== activeIndex && !isIndexOutOfBounds(elementsRef, nextIndex)) {\n event.stopPropagation();\n if (preventedKeys.includes(event.key)) {\n event.preventDefault();\n }\n onNavigate(nextIndex);\n\n // Wait for FocusManager `returnFocus` to execute.\n queueMicrotask(() => {\n enqueueFocus(elementsRef.current[nextIndex]);\n });\n }\n }\n const computedProps = {\n ...props,\n ...renderElementProps,\n ref: forwardedRef,\n 'aria-orientation': orientation === 'both' ? undefined : orientation,\n onKeyDown(e) {\n props.onKeyDown == null || props.onKeyDown(e);\n renderElementProps.onKeyDown == null || renderElementProps.onKeyDown(e);\n handleKeyDown(e);\n }\n };\n return /*#__PURE__*/React.createElement(CompositeContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(FloatingList, {\n elementsRef: elementsRef\n }, renderJsx(render, computedProps)));\n});\nconst CompositeItem = /*#__PURE__*/React.forwardRef(function CompositeItem(_ref2, forwardedRef) {\n let {\n render,\n ...props\n } = _ref2;\n const renderElementProps = render && typeof render !== 'function' ? render.props : {};\n const {\n activeIndex,\n onNavigate\n } = React.useContext(CompositeContext);\n const {\n ref,\n index\n } = useListItem();\n const mergedRef = useMergeRefs([ref, forwardedRef, renderElementProps.ref]);\n const isActive = activeIndex === index;\n const computedProps = {\n ...props,\n ...renderElementProps,\n ref: mergedRef,\n tabIndex: isActive ? 0 : -1,\n 'data-active': isActive ? '' : undefined,\n onFocus(e) {\n props.onFocus == null || props.onFocus(e);\n renderElementProps.onFocus == null || renderElementProps.onFocus(e);\n onNavigate(index);\n }\n };\n return renderJsx(render, computedProps);\n});\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nlet serverHandoffComplete = false;\nlet count = 0;\nconst genId = () => \"floating-ui-\" + count++;\nfunction useFloatingId() {\n const [id, setId] = React.useState(() => serverHandoffComplete ? genId() : undefined);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: intentional\n index(() => {\n if (id == null) {\n setId(genId());\n }\n }, []);\n React.useEffect(() => {\n if (!serverHandoffComplete) {\n serverHandoffComplete = true;\n }\n }, []);\n return id;\n}\n\n// `toString()` prevents bundlers from trying to `import { useId } from 'react'`\nconst useReactId = React[/*#__PURE__*/'useId'.toString()];\n\n/**\n * Uses React 18's built-in `useId()` when available, or falls back to a\n * slightly less performant (requiring a double render) implementation for\n * earlier React versions.\n * @see https://floating-ui.com/docs/useId\n */\nconst useId = useReactId || useFloatingId;\n\n/**\n * Renders a pointing arrow triangle.\n * @see https://floating-ui.com/docs/FloatingArrow\n */\nconst FloatingArrow = /*#__PURE__*/React.forwardRef(function FloatingArrow(_ref, ref) {\n let {\n context: {\n placement,\n elements: {\n floating\n },\n middlewareData: {\n arrow\n }\n },\n width = 14,\n height = 7,\n tipRadius = 0,\n strokeWidth = 0,\n staticOffset,\n stroke,\n d,\n style: {\n transform,\n ...restStyle\n } = {},\n ...rest\n } = _ref;\n if (process.env.NODE_ENV !== \"production\") {\n if (!ref) {\n console.warn('Floating UI: The `ref` prop is required for the `FloatingArrow`', 'component.');\n }\n }\n const clipPathId = useId();\n if (!floating) {\n return null;\n }\n\n // Strokes must be double the border width, this ensures the stroke's width\n // works as you'd expect.\n strokeWidth *= 2;\n const halfStrokeWidth = strokeWidth / 2;\n const svgX = width / 2 * (tipRadius / -8 + 1);\n const svgY = height / 2 * tipRadius / 4;\n const [side, alignment] = placement.split('-');\n const isRTL = platform.isRTL(floating);\n const isCustomShape = !!d;\n const isVerticalSide = side === 'top' || side === 'bottom';\n const yOffsetProp = staticOffset && alignment === 'end' ? 'bottom' : 'top';\n let xOffsetProp = staticOffset && alignment === 'end' ? 'right' : 'left';\n if (staticOffset && isRTL) {\n xOffsetProp = alignment === 'end' ? 'left' : 'right';\n }\n const arrowX = (arrow == null ? void 0 : arrow.x) != null ? staticOffset || arrow.x : '';\n const arrowY = (arrow == null ? void 0 : arrow.y) != null ? staticOffset || arrow.y : '';\n const dValue = d ||\n // biome-ignore lint/style/useTemplate: readability\n 'M0,0' + (\" H\" + width) + (\" L\" + (width - svgX) + \",\" + (height - svgY)) + (\" Q\" + width / 2 + \",\" + height + \" \" + svgX + \",\" + (height - svgY)) + ' Z';\n const rotation = {\n top: isCustomShape ? 'rotate(180deg)' : '',\n left: isCustomShape ? 'rotate(90deg)' : 'rotate(-90deg)',\n bottom: isCustomShape ? '' : 'rotate(180deg)',\n right: isCustomShape ? 'rotate(-90deg)' : 'rotate(90deg)'\n }[side];\n return /*#__PURE__*/React.createElement(\"svg\", _extends({}, rest, {\n \"aria-hidden\": true,\n ref: ref,\n width: isCustomShape ? width : width + strokeWidth,\n height: width,\n viewBox: \"0 0 \" + width + \" \" + (height > width ? height : width),\n style: {\n position: 'absolute',\n pointerEvents: 'none',\n [xOffsetProp]: arrowX,\n [yOffsetProp]: arrowY,\n [side]: isVerticalSide || isCustomShape ? '100%' : \"calc(100% - \" + strokeWidth / 2 + \"px)\",\n transform: \"\" + rotation + (transform != null ? transform : ''),\n ...restStyle\n }\n }), strokeWidth > 0 && /*#__PURE__*/React.createElement(\"path\", {\n clipPath: \"url(#\" + clipPathId + \")\",\n fill: \"none\",\n stroke: stroke\n // Account for the stroke on the fill path rendered below.\n ,\n strokeWidth: strokeWidth + (d ? 0 : 1),\n d: dValue\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: strokeWidth && !d ? rest.fill : 'none',\n d: dValue\n }), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: clipPathId\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: -halfStrokeWidth,\n y: halfStrokeWidth * (isCustomShape ? -1 : 1),\n width: width + strokeWidth,\n height: width\n })));\n});\n\nfunction createPubSub() {\n const map = new Map();\n return {\n emit(event, data) {\n var _map$get;\n (_map$get = map.get(event)) == null || _map$get.forEach(handler => handler(data));\n },\n on(event, listener) {\n map.set(event, [...(map.get(event) || []), listener]);\n },\n off(event, listener) {\n var _map$get2;\n map.set(event, ((_map$get2 = map.get(event)) == null ? void 0 : _map$get2.filter(l => l !== listener)) || []);\n }\n };\n}\n\nconst FloatingNodeContext = /*#__PURE__*/React.createContext(null);\nconst FloatingTreeContext = /*#__PURE__*/React.createContext(null);\nconst useFloatingParentNodeId = () => {\n var _React$useContext;\n return ((_React$useContext = React.useContext(FloatingNodeContext)) == null ? void 0 : _React$useContext.id) || null;\n};\nconst useFloatingTree = () => React.useContext(FloatingTreeContext);\n\n/**\n * Registers a node into the floating tree, returning its id.\n */\nfunction useFloatingNodeId(customParentId) {\n const id = useId();\n const tree = useFloatingTree();\n const reactParentId = useFloatingParentNodeId();\n const parentId = customParentId || reactParentId;\n index(() => {\n const node = {\n id,\n parentId\n };\n tree == null || tree.addNode(node);\n return () => {\n tree == null || tree.removeNode(node);\n };\n }, [tree, id, parentId]);\n return id;\n}\n\n/**\n * Provides parent node context for nested floating elements.\n * @see https://floating-ui.com/docs/FloatingTree\n */\nfunction FloatingNode(_ref) {\n let {\n children,\n id\n } = _ref;\n const parentId = useFloatingParentNodeId();\n return /*#__PURE__*/React.createElement(FloatingNodeContext.Provider, {\n value: React.useMemo(() => ({\n id,\n parentId\n }), [id, parentId])\n }, children);\n}\n\n/**\n * Provides context for nested floating elements when they are not children of\n * each other on the DOM (i.e. portalled to a common node, rather than their\n * respective parent).\n * @see https://floating-ui.com/docs/FloatingTree\n */\nfunction FloatingTree(_ref2) {\n let {\n children\n } = _ref2;\n const nodesRef = React.useRef([]);\n const addNode = React.useCallback(node => {\n nodesRef.current = [...nodesRef.current, node];\n }, []);\n const removeNode = React.useCallback(node => {\n nodesRef.current = nodesRef.current.filter(n => n !== node);\n }, []);\n const events = React.useState(() => createPubSub())[0];\n return /*#__PURE__*/React.createElement(FloatingTreeContext.Provider, {\n value: React.useMemo(() => ({\n nodesRef,\n addNode,\n removeNode,\n events\n }), [addNode, removeNode, events])\n }, children);\n}\n\nfunction createAttribute(name) {\n return \"data-floating-ui-\" + name;\n}\n\nfunction useLatestRef(value) {\n const ref = useRef(value);\n index(() => {\n ref.current = value;\n });\n return ref;\n}\n\nconst safePolygonIdentifier = /*#__PURE__*/createAttribute('safe-polygon');\nfunction getDelay(value, prop, pointerType) {\n if (pointerType && !isMouseLikePointerType(pointerType)) {\n return 0;\n }\n if (typeof value === 'number') {\n return value;\n }\n return value == null ? void 0 : value[prop];\n}\n/**\n * Opens the floating element while hovering over the reference element, like\n * CSS `:hover`.\n * @see https://floating-ui.com/docs/useHover\n */\nfunction useHover(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n onOpenChange,\n dataRef,\n events,\n elements: {\n domReference,\n floating\n },\n refs\n } = context;\n const {\n enabled = true,\n delay = 0,\n handleClose = null,\n mouseOnly = false,\n restMs = 0,\n move = true\n } = props;\n const tree = useFloatingTree();\n const parentId = useFloatingParentNodeId();\n const handleCloseRef = useLatestRef(handleClose);\n const delayRef = useLatestRef(delay);\n const pointerTypeRef = React.useRef();\n const timeoutRef = React.useRef();\n const handlerRef = React.useRef();\n const restTimeoutRef = React.useRef();\n const blockMouseMoveRef = React.useRef(true);\n const performedPointerEventsMutationRef = React.useRef(false);\n const unbindMouseMoveRef = React.useRef(() => {});\n const isHoverOpen = React.useCallback(() => {\n var _dataRef$current$open;\n const type = (_dataRef$current$open = dataRef.current.openEvent) == null ? void 0 : _dataRef$current$open.type;\n return (type == null ? void 0 : type.includes('mouse')) && type !== 'mousedown';\n }, [dataRef]);\n\n // When closing before opening, clear the delay timeouts to cancel it\n // from showing.\n React.useEffect(() => {\n if (!enabled) {\n return;\n }\n function onOpenChange(_ref) {\n let {\n open\n } = _ref;\n if (!open) {\n clearTimeout(timeoutRef.current);\n clearTimeout(restTimeoutRef.current);\n blockMouseMoveRef.current = true;\n }\n }\n events.on('openchange', onOpenChange);\n return () => {\n events.off('openchange', onOpenChange);\n };\n }, [enabled, events]);\n React.useEffect(() => {\n if (!enabled || !handleCloseRef.current || !open) {\n return;\n }\n function onLeave(event) {\n if (isHoverOpen()) {\n onOpenChange(false, event, 'hover');\n }\n }\n const html = getDocument(floating).documentElement;\n html.addEventListener('mouseleave', onLeave);\n return () => {\n html.removeEventListener('mouseleave', onLeave);\n };\n }, [floating, open, onOpenChange, enabled, handleCloseRef, isHoverOpen]);\n const closeWithDelay = React.useCallback(function (event, runElseBranch, reason) {\n if (runElseBranch === void 0) {\n runElseBranch = true;\n }\n if (reason === void 0) {\n reason = 'hover';\n }\n const closeDelay = getDelay(delayRef.current, 'close', pointerTypeRef.current);\n if (closeDelay && !handlerRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => onOpenChange(false, event, reason), closeDelay);\n } else if (runElseBranch) {\n clearTimeout(timeoutRef.current);\n onOpenChange(false, event, reason);\n }\n }, [delayRef, onOpenChange]);\n const cleanupMouseMoveHandler = React.useCallback(() => {\n unbindMouseMoveRef.current();\n handlerRef.current = undefined;\n }, []);\n const clearPointerEvents = React.useCallback(() => {\n if (performedPointerEventsMutationRef.current) {\n const body = getDocument(refs.floating.current).body;\n body.style.pointerEvents = '';\n body.removeAttribute(safePolygonIdentifier);\n performedPointerEventsMutationRef.current = false;\n }\n }, [refs]);\n\n // Registering the mouse events on the reference directly to bypass React's\n // delegation system. If the cursor was on a disabled element and then entered\n // the reference (no gap), `mouseenter` doesn't fire in the delegation system.\n React.useEffect(() => {\n if (!enabled) {\n return;\n }\n function isClickLikeOpenEvent() {\n return dataRef.current.openEvent ? ['click', 'mousedown'].includes(dataRef.current.openEvent.type) : false;\n }\n function onMouseEnter(event) {\n clearTimeout(timeoutRef.current);\n blockMouseMoveRef.current = false;\n if (mouseOnly && !isMouseLikePointerType(pointerTypeRef.current) || restMs > 0 && getDelay(delayRef.current, 'open') === 0) {\n return;\n }\n const openDelay = getDelay(delayRef.current, 'open', pointerTypeRef.current);\n if (openDelay) {\n timeoutRef.current = setTimeout(() => {\n onOpenChange(true, event, 'hover');\n }, openDelay);\n } else {\n onOpenChange(true, event, 'hover');\n }\n }\n function onMouseLeave(event) {\n if (isClickLikeOpenEvent()) {\n return;\n }\n unbindMouseMoveRef.current();\n const doc = getDocument(floating);\n clearTimeout(restTimeoutRef.current);\n if (handleCloseRef.current) {\n // Prevent clearing `onScrollMouseLeave` timeout.\n if (!open) {\n clearTimeout(timeoutRef.current);\n }\n handlerRef.current = handleCloseRef.current({\n ...context,\n tree,\n x: event.clientX,\n y: event.clientY,\n onClose() {\n clearPointerEvents();\n cleanupMouseMoveHandler();\n closeWithDelay(event, true, 'safe-polygon');\n }\n });\n const handler = handlerRef.current;\n doc.addEventListener('mousemove', handler);\n unbindMouseMoveRef.current = () => {\n doc.removeEventListener('mousemove', handler);\n };\n return;\n }\n\n // Allow interactivity without `safePolygon` on touch devices. With a\n // pointer, a short close delay is an alternative, so it should work\n // consistently.\n const shouldClose = pointerTypeRef.current === 'touch' ? !contains(floating, event.relatedTarget) : true;\n if (shouldClose) {\n closeWithDelay(event);\n }\n }\n\n // Ensure the floating element closes after scrolling even if the pointer\n // did not move.\n // https://github.com/floating-ui/floating-ui/discussions/1692\n function onScrollMouseLeave(event) {\n if (isClickLikeOpenEvent()) {\n return;\n }\n handleCloseRef.current == null || handleCloseRef.current({\n ...context,\n tree,\n x: event.clientX,\n y: event.clientY,\n onClose() {\n clearPointerEvents();\n cleanupMouseMoveHandler();\n closeWithDelay(event);\n }\n })(event);\n }\n if (isElement(domReference)) {\n const ref = domReference;\n open && ref.addEventListener('mouseleave', onScrollMouseLeave);\n floating == null || floating.addEventListener('mouseleave', onScrollMouseLeave);\n move && ref.addEventListener('mousemove', onMouseEnter, {\n once: true\n });\n ref.addEventListener('mouseenter', onMouseEnter);\n ref.addEventListener('mouseleave', onMouseLeave);\n return () => {\n open && ref.removeEventListener('mouseleave', onScrollMouseLeave);\n floating == null || floating.removeEventListener('mouseleave', onScrollMouseLeave);\n move && ref.removeEventListener('mousemove', onMouseEnter);\n ref.removeEventListener('mouseenter', onMouseEnter);\n ref.removeEventListener('mouseleave', onMouseLeave);\n };\n }\n }, [domReference, floating, enabled, context, mouseOnly, restMs, move, closeWithDelay, cleanupMouseMoveHandler, clearPointerEvents, onOpenChange, open, tree, delayRef, handleCloseRef, dataRef]);\n\n // Block pointer-events of every element other than the reference and floating\n // while the floating element is open and has a `handleClose` handler. Also\n // handles nested floating elements.\n // https://github.com/floating-ui/floating-ui/issues/1722\n index(() => {\n var _handleCloseRef$curre;\n if (!enabled) {\n return;\n }\n if (open && (_handleCloseRef$curre = handleCloseRef.current) != null && _handleCloseRef$curre.__options.blockPointerEvents && isHoverOpen()) {\n const body = getDocument(floating).body;\n body.setAttribute(safePolygonIdentifier, '');\n body.style.pointerEvents = 'none';\n performedPointerEventsMutationRef.current = true;\n if (isElement(domReference) && floating) {\n var _tree$nodesRef$curren;\n const ref = domReference;\n const parentFloating = tree == null || (_tree$nodesRef$curren = tree.nodesRef.current.find(node => node.id === parentId)) == null || (_tree$nodesRef$curren = _tree$nodesRef$curren.context) == null ? void 0 : _tree$nodesRef$curren.elements.floating;\n if (parentFloating) {\n parentFloating.style.pointerEvents = '';\n }\n ref.style.pointerEvents = 'auto';\n floating.style.pointerEvents = 'auto';\n return () => {\n ref.style.pointerEvents = '';\n floating.style.pointerEvents = '';\n };\n }\n }\n }, [enabled, open, parentId, floating, domReference, tree, handleCloseRef, isHoverOpen]);\n index(() => {\n if (!open) {\n pointerTypeRef.current = undefined;\n cleanupMouseMoveHandler();\n clearPointerEvents();\n }\n }, [open, cleanupMouseMoveHandler, clearPointerEvents]);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: intentional\n React.useEffect(() => {\n return () => {\n cleanupMouseMoveHandler();\n clearTimeout(timeoutRef.current);\n clearTimeout(restTimeoutRef.current);\n clearPointerEvents();\n };\n }, [enabled, domReference, cleanupMouseMoveHandler, clearPointerEvents]);\n return React.useMemo(() => {\n if (!enabled) {\n return {};\n }\n function setPointerRef(event) {\n pointerTypeRef.current = event.pointerType;\n }\n return {\n reference: {\n onPointerDown: setPointerRef,\n onPointerEnter: setPointerRef,\n onMouseMove(event) {\n if (open || restMs === 0) {\n return;\n }\n clearTimeout(restTimeoutRef.current);\n restTimeoutRef.current = setTimeout(() => {\n if (!blockMouseMoveRef.current) {\n onOpenChange(true, event.nativeEvent, 'hover');\n }\n }, restMs);\n }\n },\n floating: {\n onMouseEnter() {\n clearTimeout(timeoutRef.current);\n },\n onMouseLeave(event) {\n closeWithDelay(event.nativeEvent, false);\n }\n }\n };\n }, [enabled, restMs, open, onOpenChange, closeWithDelay]);\n}\n\nconst FloatingDelayGroupContext = /*#__PURE__*/React.createContext({\n delay: 0,\n initialDelay: 0,\n timeoutMs: 0,\n currentId: null,\n setCurrentId: () => {},\n setState: () => {},\n isInstantPhase: false\n});\nconst useDelayGroupContext = () => React.useContext(FloatingDelayGroupContext);\n/**\n * Provides context for a group of floating elements that should share a\n * `delay`.\n * @see https://floating-ui.com/docs/FloatingDelayGroup\n */\nconst FloatingDelayGroup = _ref => {\n let {\n children,\n delay,\n timeoutMs = 0\n } = _ref;\n const [state, setState] = React.useReducer((prev, next) => ({\n ...prev,\n ...next\n }), {\n delay,\n timeoutMs,\n initialDelay: delay,\n currentId: null,\n isInstantPhase: false\n });\n const initialCurrentIdRef = React.useRef(null);\n const setCurrentId = React.useCallback(currentId => {\n setState({\n currentId\n });\n }, []);\n index(() => {\n if (state.currentId) {\n if (initialCurrentIdRef.current === null) {\n initialCurrentIdRef.current = state.currentId;\n } else {\n setState({\n isInstantPhase: true\n });\n }\n } else {\n setState({\n isInstantPhase: false\n });\n initialCurrentIdRef.current = null;\n }\n }, [state.currentId]);\n return /*#__PURE__*/React.createElement(FloatingDelayGroupContext.Provider, {\n value: React.useMemo(() => ({\n ...state,\n setState,\n setCurrentId\n }), [state, setCurrentId])\n }, children);\n};\nconst useDelayGroup = (_ref2, _ref3) => {\n let {\n open,\n onOpenChange\n } = _ref2;\n let {\n id\n } = _ref3;\n const {\n currentId,\n setCurrentId,\n initialDelay,\n setState,\n timeoutMs\n } = useDelayGroupContext();\n index(() => {\n if (currentId) {\n setState({\n delay: {\n open: 1,\n close: getDelay(initialDelay, 'close')\n }\n });\n if (currentId !== id) {\n onOpenChange(false);\n }\n }\n }, [id, onOpenChange, setState, currentId, initialDelay]);\n index(() => {\n function unset() {\n onOpenChange(false);\n setState({\n delay: initialDelay,\n currentId: null\n });\n }\n if (!open && currentId === id) {\n if (timeoutMs) {\n const timeout = window.setTimeout(unset, timeoutMs);\n return () => {\n clearTimeout(timeout);\n };\n }\n unset();\n }\n }, [open, setState, currentId, id, onOpenChange, initialDelay, timeoutMs]);\n index(() => {\n if (open) {\n setCurrentId(id);\n }\n }, [open, setCurrentId, id]);\n};\n\nfunction getAncestors(nodes, id) {\n var _nodes$find;\n let allAncestors = [];\n let currentParentId = (_nodes$find = nodes.find(node => node.id === id)) == null ? void 0 : _nodes$find.parentId;\n while (currentParentId) {\n const currentNode = nodes.find(node => node.id === currentParentId);\n currentParentId = currentNode == null ? void 0 : currentNode.parentId;\n if (currentNode) {\n allAncestors = allAncestors.concat(currentNode);\n }\n }\n return allAncestors;\n}\n\nfunction getChildren(nodes, id) {\n let allChildren = nodes.filter(node => {\n var _node$context;\n return node.parentId === id && ((_node$context = node.context) == null ? void 0 : _node$context.open);\n });\n let currentChildren = allChildren;\n while (currentChildren.length) {\n currentChildren = nodes.filter(node => {\n var _currentChildren;\n return (_currentChildren = currentChildren) == null ? void 0 : _currentChildren.some(n => {\n var _node$context2;\n return node.parentId === n.id && ((_node$context2 = node.context) == null ? void 0 : _node$context2.open);\n });\n });\n allChildren = allChildren.concat(currentChildren);\n }\n return allChildren;\n}\nfunction getDeepestNode(nodes, id) {\n let deepestNodeId;\n let maxDepth = -1;\n function findDeepest(nodeId, depth) {\n if (depth > maxDepth) {\n deepestNodeId = nodeId;\n maxDepth = depth;\n }\n const children = getChildren(nodes, nodeId);\n children.forEach(child => {\n findDeepest(child.id, depth + 1);\n });\n }\n findDeepest(id, 0);\n return nodes.find(node => node.id === deepestNodeId);\n}\n\n// Modified to add conditional `aria-hidden` support:\n// https://github.com/theKashey/aria-hidden/blob/9220c8f4a4fd35f63bee5510a9f41a37264382d4/src/index.ts\nlet counterMap = /*#__PURE__*/new WeakMap();\nlet uncontrolledElementsSet = /*#__PURE__*/new WeakSet();\nlet markerMap = {};\nlet lockCount = 0;\nconst supportsInert = () => typeof HTMLElement !== 'undefined' && 'inert' in HTMLElement.prototype;\nconst unwrapHost = node => node && (node.host || unwrapHost(node.parentNode));\nconst correctElements = (parent, targets) => targets.map(target => {\n if (parent.contains(target)) {\n return target;\n }\n const correctedTarget = unwrapHost(target);\n if (parent.contains(correctedTarget)) {\n return correctedTarget;\n }\n return null;\n}).filter(x => x != null);\nfunction applyAttributeToOthers(uncorrectedAvoidElements, body, ariaHidden, inert) {\n const markerName = 'data-floating-ui-inert';\n const controlAttribute = inert ? 'inert' : ariaHidden ? 'aria-hidden' : null;\n const avoidElements = correctElements(body, uncorrectedAvoidElements);\n const elementsToKeep = new Set();\n const elementsToStop = new Set(avoidElements);\n const hiddenElements = [];\n if (!markerMap[markerName]) {\n markerMap[markerName] = new WeakMap();\n }\n const markerCounter = markerMap[markerName];\n avoidElements.forEach(keep);\n deep(body);\n elementsToKeep.clear();\n function keep(el) {\n if (!el || elementsToKeep.has(el)) {\n return;\n }\n elementsToKeep.add(el);\n el.parentNode && keep(el.parentNode);\n }\n function deep(parent) {\n if (!parent || elementsToStop.has(parent)) {\n return;\n }\n Array.prototype.forEach.call(parent.children, node => {\n if (elementsToKeep.has(node)) {\n deep(node);\n } else {\n const attr = controlAttribute ? node.getAttribute(controlAttribute) : null;\n const alreadyHidden = attr !== null && attr !== 'false';\n const counterValue = (counterMap.get(node) || 0) + 1;\n const markerValue = (markerCounter.get(node) || 0) + 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n hiddenElements.push(node);\n if (counterValue === 1 && alreadyHidden) {\n uncontrolledElementsSet.add(node);\n }\n if (markerValue === 1) {\n node.setAttribute(markerName, '');\n }\n if (!alreadyHidden && controlAttribute) {\n node.setAttribute(controlAttribute, 'true');\n }\n }\n });\n }\n lockCount++;\n return () => {\n hiddenElements.forEach(element => {\n const counterValue = (counterMap.get(element) || 0) - 1;\n const markerValue = (markerCounter.get(element) || 0) - 1;\n counterMap.set(element, counterValue);\n markerCounter.set(element, markerValue);\n if (!counterValue) {\n if (!uncontrolledElementsSet.has(element) && controlAttribute) {\n element.removeAttribute(controlAttribute);\n }\n uncontrolledElementsSet.delete(element);\n }\n if (!markerValue) {\n element.removeAttribute(markerName);\n }\n });\n lockCount--;\n if (!lockCount) {\n counterMap = new WeakMap();\n counterMap = new WeakMap();\n uncontrolledElementsSet = new WeakSet();\n markerMap = {};\n }\n };\n}\nfunction markOthers(avoidElements, ariaHidden, inert) {\n if (ariaHidden === void 0) {\n ariaHidden = false;\n }\n if (inert === void 0) {\n inert = false;\n }\n const body = getDocument(avoidElements[0]).body;\n return applyAttributeToOthers(avoidElements.concat(Array.from(body.querySelectorAll('[aria-live]'))), body, ariaHidden, inert);\n}\n\nconst getTabbableOptions = () => ({\n getShadowRoot: true,\n displayCheck:\n // JSDOM does not support the `tabbable` library. To solve this we can\n // check if `ResizeObserver` is a real function (not polyfilled), which\n // determines if the current environment is JSDOM-like.\n typeof ResizeObserver === 'function' && ResizeObserver.toString().includes('[native code]') ? 'full' : 'none'\n});\nfunction getTabbableIn(container, direction) {\n const allTabbable = tabbable(container, getTabbableOptions());\n if (direction === 'prev') {\n allTabbable.reverse();\n }\n const activeIndex = allTabbable.indexOf(activeElement(getDocument(container)));\n const nextTabbableElements = allTabbable.slice(activeIndex + 1);\n return nextTabbableElements[0];\n}\nfunction getNextTabbable() {\n return getTabbableIn(document.body, 'next');\n}\nfunction getPreviousTabbable() {\n return getTabbableIn(document.body, 'prev');\n}\nfunction isOutsideEvent(event, container) {\n const containerElement = container || event.currentTarget;\n const relatedTarget = event.relatedTarget;\n return !relatedTarget || !contains(containerElement, relatedTarget);\n}\nfunction disableFocusInside(container) {\n const tabbableElements = tabbable(container, getTabbableOptions());\n tabbableElements.forEach(element => {\n element.dataset.tabindex = element.getAttribute('tabindex') || '';\n element.setAttribute('tabindex', '-1');\n });\n}\nfunction enableFocusInside(container) {\n const elements = container.querySelectorAll('[data-tabindex]');\n elements.forEach(element => {\n const tabindex = element.dataset.tabindex;\n // biome-ignore lint/performance/noDelete: purity\n delete element.dataset.tabindex;\n if (tabindex) {\n element.setAttribute('tabindex', tabindex);\n } else {\n element.removeAttribute('tabindex');\n }\n });\n}\n\n// See Diego Haz's Sandbox for making this logic work well on Safari/iOS:\n// https://codesandbox.io/s/tabbable-portal-f4tng?file=/src/FocusTrap.tsx\n\nconst HIDDEN_STYLES = {\n border: 0,\n clip: 'rect(0 0 0 0)',\n height: '1px',\n margin: '-1px',\n overflow: 'hidden',\n padding: 0,\n position: 'fixed',\n whiteSpace: 'nowrap',\n width: '1px',\n top: 0,\n left: 0\n};\nlet timeoutId;\nfunction setActiveElementOnTab(event) {\n if (event.key === 'Tab') {\n event.target;\n clearTimeout(timeoutId);\n }\n}\nconst FocusGuard = /*#__PURE__*/React.forwardRef(function FocusGuard(props, ref) {\n const [role, setRole] = React.useState();\n index(() => {\n if (isSafari()) {\n // Unlike other screen readers such as NVDA and JAWS, the virtual cursor\n // on VoiceOver does trigger the onFocus event, so we can use the focus\n // trap element. On Safari, only buttons trigger the onFocus event.\n // NB: \"group\" role in the Sandbox no longer appears to work, must be a\n // button role.\n setRole('button');\n }\n document.addEventListener('keydown', setActiveElementOnTab);\n return () => {\n document.removeEventListener('keydown', setActiveElementOnTab);\n };\n }, []);\n const restProps = {\n ref,\n tabIndex: 0,\n // Role is only for VoiceOver\n role,\n 'aria-hidden': role ? undefined : true,\n [createAttribute('focus-guard')]: '',\n style: HIDDEN_STYLES\n };\n return /*#__PURE__*/React.createElement(\"span\", _extends({}, props, restProps));\n});\n\nconst PortalContext = /*#__PURE__*/React.createContext(null);\nfunction useFloatingPortalNode(_temp) {\n let {\n id,\n root\n } = _temp === void 0 ? {} : _temp;\n const [portalNode, setPortalNode] = React.useState(null);\n const uniqueId = useId();\n const portalContext = usePortalContext();\n const data = React.useMemo(() => ({\n id,\n root,\n portalContext,\n uniqueId\n }), [id, root, portalContext, uniqueId]);\n const dataRef = React.useRef();\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: `data` is intentionally specified\n index(() => {\n return () => {\n portalNode == null || portalNode.remove();\n };\n }, [portalNode, data]);\n index(() => {\n if (dataRef.current === data) return;\n dataRef.current = data;\n const {\n id,\n root,\n portalContext,\n uniqueId\n } = data;\n const existingIdRoot = id ? document.getElementById(id) : null;\n const attr = createAttribute('portal');\n if (existingIdRoot) {\n const subRoot = document.createElement('div');\n subRoot.id = uniqueId;\n subRoot.setAttribute(attr, '');\n existingIdRoot.appendChild(subRoot);\n setPortalNode(subRoot);\n } else {\n let container = root || (portalContext == null ? void 0 : portalContext.portalNode);\n if (container && !isElement(container)) container = container.current;\n container = container || document.body;\n let idWrapper = null;\n if (id) {\n idWrapper = document.createElement('div');\n idWrapper.id = id;\n container.appendChild(idWrapper);\n }\n const subRoot = document.createElement('div');\n subRoot.id = uniqueId;\n subRoot.setAttribute(attr, '');\n container = idWrapper || container;\n container.appendChild(subRoot);\n setPortalNode(subRoot);\n }\n }, [data]);\n return portalNode;\n}\n/**\n * Portals the floating element into a given container element — by default,\n * outside of the app root and into the body.\n * @see https://floating-ui.com/docs/FloatingPortal\n */\nfunction FloatingPortal(_ref) {\n let {\n children,\n id,\n root = null,\n preserveTabOrder = true\n } = _ref;\n const portalNode = useFloatingPortalNode({\n id,\n root\n });\n const [focusManagerState, setFocusManagerState] = React.useState(null);\n const beforeOutsideRef = React.useRef(null);\n const afterOutsideRef = React.useRef(null);\n const beforeInsideRef = React.useRef(null);\n const afterInsideRef = React.useRef(null);\n const shouldRenderGuards =\n // The FocusManager and therefore floating element are currently open/\n // rendered.\n !!focusManagerState &&\n // Guards are only for non-modal focus management.\n !focusManagerState.modal &&\n // Don't render if unmount is transitioning.\n focusManagerState.open && preserveTabOrder && !!(root || portalNode);\n\n // https://codesandbox.io/s/tabbable-portal-f4tng?file=/src/TabbablePortal.tsx\n React.useEffect(() => {\n if (!portalNode || !preserveTabOrder || focusManagerState != null && focusManagerState.modal) {\n return;\n }\n\n // Make sure elements inside the portal element are tabbable only when the\n // portal has already been focused, either by tabbing into a focus trap\n // element outside or using the mouse.\n function onFocus(event) {\n if (portalNode && isOutsideEvent(event)) {\n const focusing = event.type === 'focusin';\n const manageFocus = focusing ? enableFocusInside : disableFocusInside;\n manageFocus(portalNode);\n }\n }\n // Listen to the event on the capture phase so they run before the focus\n // trap elements onFocus prop is called.\n portalNode.addEventListener('focusin', onFocus, true);\n portalNode.addEventListener('focusout', onFocus, true);\n return () => {\n portalNode.removeEventListener('focusin', onFocus, true);\n portalNode.removeEventListener('focusout', onFocus, true);\n };\n }, [portalNode, preserveTabOrder, focusManagerState == null ? void 0 : focusManagerState.modal]);\n return /*#__PURE__*/React.createElement(PortalContext.Provider, {\n value: React.useMemo(() => ({\n preserveTabOrder,\n beforeOutsideRef,\n afterOutsideRef,\n beforeInsideRef,\n afterInsideRef,\n portalNode,\n setFocusManagerState\n }), [preserveTabOrder, portalNode])\n }, shouldRenderGuards && portalNode && /*#__PURE__*/React.createElement(FocusGuard, {\n \"data-type\": \"outside\",\n ref: beforeOutsideRef,\n onFocus: event => {\n if (isOutsideEvent(event, portalNode)) {\n var _beforeInsideRef$curr;\n (_beforeInsideRef$curr = beforeInsideRef.current) == null || _beforeInsideRef$curr.focus();\n } else {\n const prevTabbable = getPreviousTabbable() || (focusManagerState == null ? void 0 : focusManagerState.refs.domReference.current);\n prevTabbable == null || prevTabbable.focus();\n }\n }\n }), shouldRenderGuards && portalNode && /*#__PURE__*/React.createElement(\"span\", {\n \"aria-owns\": portalNode.id,\n style: HIDDEN_STYLES\n }), portalNode && /*#__PURE__*/createPortal(children, portalNode), shouldRenderGuards && portalNode && /*#__PURE__*/React.createElement(FocusGuard, {\n \"data-type\": \"outside\",\n ref: afterOutsideRef,\n onFocus: event => {\n if (isOutsideEvent(event, portalNode)) {\n var _afterInsideRef$curre;\n (_afterInsideRef$curre = afterInsideRef.current) == null || _afterInsideRef$curre.focus();\n } else {\n const nextTabbable = getNextTabbable() || (focusManagerState == null ? void 0 : focusManagerState.refs.domReference.current);\n nextTabbable == null || nextTabbable.focus();\n (focusManagerState == null ? void 0 : focusManagerState.closeOnFocusOut) && (focusManagerState == null ? void 0 : focusManagerState.onOpenChange(false, event.nativeEvent));\n }\n }\n }));\n}\nconst usePortalContext = () => React.useContext(PortalContext);\n\nconst LIST_LIMIT = 20;\nlet previouslyFocusedElements = [];\nfunction addPreviouslyFocusedElement(element) {\n previouslyFocusedElements = previouslyFocusedElements.filter(el => el.isConnected);\n if (element && getNodeName(element) !== 'body') {\n previouslyFocusedElements.push(element);\n if (previouslyFocusedElements.length > LIST_LIMIT) {\n previouslyFocusedElements = previouslyFocusedElements.slice(-LIST_LIMIT);\n }\n }\n}\nfunction getPreviouslyFocusedElement() {\n return previouslyFocusedElements.slice().reverse().find(el => el.isConnected);\n}\nconst VisuallyHiddenDismiss = /*#__PURE__*/React.forwardRef(function VisuallyHiddenDismiss(props, ref) {\n return /*#__PURE__*/React.createElement(\"button\", _extends({}, props, {\n type: \"button\",\n ref: ref,\n tabIndex: -1,\n style: HIDDEN_STYLES\n }));\n});\n/**\n * Provides focus management for the floating element.\n * @see https://floating-ui.com/docs/FloatingFocusManager\n */\nfunction FloatingFocusManager(props) {\n const {\n context,\n children,\n disabled = false,\n order = ['content'],\n guards: _guards = true,\n initialFocus = 0,\n returnFocus = true,\n modal = true,\n visuallyHiddenDismiss = false,\n closeOnFocusOut = true\n } = props;\n const {\n open,\n refs,\n nodeId,\n onOpenChange,\n events,\n dataRef,\n elements: {\n domReference,\n floating\n }\n } = context;\n const ignoreInitialFocus = typeof initialFocus === 'number' && initialFocus < 0;\n // If the reference is a combobox and is typeable (e.g. input/textarea),\n // there are different focus semantics. The guards should not be rendered, but\n // aria-hidden should be applied to all nodes still. Further, the visually\n // hidden dismiss button should only appear at the end of the list, not the\n // start.\n const isUntrappedTypeableCombobox = isTypeableCombobox(domReference) && ignoreInitialFocus;\n\n // Force the guards to be rendered if the `inert` attribute is not supported.\n const guards = supportsInert() ? _guards : true;\n const orderRef = useLatestRef(order);\n const initialFocusRef = useLatestRef(initialFocus);\n const returnFocusRef = useLatestRef(returnFocus);\n const tree = useFloatingTree();\n const portalContext = usePortalContext();\n const startDismissButtonRef = React.useRef(null);\n const endDismissButtonRef = React.useRef(null);\n const preventReturnFocusRef = React.useRef(false);\n const isPointerDownRef = React.useRef(false);\n const isInsidePortal = portalContext != null;\n const getTabbableContent = React.useCallback(function (container) {\n if (container === void 0) {\n container = floating;\n }\n return container ? tabbable(container, getTabbableOptions()) : [];\n }, [floating]);\n const getTabbableElements = React.useCallback(container => {\n const content = getTabbableContent(container);\n return orderRef.current.map(type => {\n if (domReference && type === 'reference') {\n return domReference;\n }\n if (floating && type === 'floating') {\n return floating;\n }\n return content;\n }).filter(Boolean).flat();\n }, [domReference, floating, orderRef, getTabbableContent]);\n React.useEffect(() => {\n if (disabled || !modal) return;\n function onKeyDown(event) {\n if (event.key === 'Tab') {\n // The focus guards have nothing to focus, so we need to stop the event.\n if (contains(floating, activeElement(getDocument(floating))) && getTabbableContent().length === 0 && !isUntrappedTypeableCombobox) {\n stopEvent(event);\n }\n const els = getTabbableElements();\n const target = getTarget(event);\n if (orderRef.current[0] === 'reference' && target === domReference) {\n stopEvent(event);\n if (event.shiftKey) {\n enqueueFocus(els[els.length - 1]);\n } else {\n enqueueFocus(els[1]);\n }\n }\n if (orderRef.current[1] === 'floating' && target === floating && event.shiftKey) {\n stopEvent(event);\n enqueueFocus(els[0]);\n }\n }\n }\n const doc = getDocument(floating);\n doc.addEventListener('keydown', onKeyDown);\n return () => {\n doc.removeEventListener('keydown', onKeyDown);\n };\n }, [disabled, domReference, floating, modal, orderRef, isUntrappedTypeableCombobox, getTabbableContent, getTabbableElements]);\n React.useEffect(() => {\n if (disabled || !closeOnFocusOut) return;\n\n // In Safari, buttons lose focus when pressing them.\n function handlePointerDown() {\n isPointerDownRef.current = true;\n setTimeout(() => {\n isPointerDownRef.current = false;\n });\n }\n function handleFocusOutside(event) {\n const relatedTarget = event.relatedTarget;\n queueMicrotask(() => {\n const movedToUnrelatedNode = !(contains(domReference, relatedTarget) || contains(floating, relatedTarget) || contains(relatedTarget, floating) || contains(portalContext == null ? void 0 : portalContext.portalNode, relatedTarget) || relatedTarget != null && relatedTarget.hasAttribute(createAttribute('focus-guard')) || tree && (getChildren(tree.nodesRef.current, nodeId).find(node => {\n var _node$context, _node$context2;\n return contains((_node$context = node.context) == null ? void 0 : _node$context.elements.floating, relatedTarget) || contains((_node$context2 = node.context) == null ? void 0 : _node$context2.elements.domReference, relatedTarget);\n }) || getAncestors(tree.nodesRef.current, nodeId).find(node => {\n var _node$context3, _node$context4;\n return ((_node$context3 = node.context) == null ? void 0 : _node$context3.elements.floating) === relatedTarget || ((_node$context4 = node.context) == null ? void 0 : _node$context4.elements.domReference) === relatedTarget;\n })));\n\n // Focus did not move inside the floating tree, and there are no tabbable\n // portal guards to handle closing.\n if (relatedTarget && movedToUnrelatedNode && !isPointerDownRef.current &&\n // Fix React 18 Strict Mode returnFocus due to double rendering.\n relatedTarget !== getPreviouslyFocusedElement()) {\n preventReturnFocusRef.current = true;\n onOpenChange(false, event);\n }\n });\n }\n if (floating && isHTMLElement(domReference)) {\n domReference.addEventListener('focusout', handleFocusOutside);\n domReference.addEventListener('pointerdown', handlePointerDown);\n !modal && floating.addEventListener('focusout', handleFocusOutside);\n return () => {\n domReference.removeEventListener('focusout', handleFocusOutside);\n domReference.removeEventListener('pointerdown', handlePointerDown);\n !modal && floating.removeEventListener('focusout', handleFocusOutside);\n };\n }\n }, [disabled, domReference, floating, modal, nodeId, tree, portalContext, onOpenChange, closeOnFocusOut]);\n React.useEffect(() => {\n var _portalContext$portal;\n if (disabled) return;\n\n // Don't hide portals nested within the parent portal.\n const portalNodes = Array.from((portalContext == null || (_portalContext$portal = portalContext.portalNode) == null ? void 0 : _portalContext$portal.querySelectorAll(\"[\" + createAttribute('portal') + \"]\")) || []);\n if (floating) {\n const insideElements = [floating, ...portalNodes, startDismissButtonRef.current, endDismissButtonRef.current, orderRef.current.includes('reference') || isUntrappedTypeableCombobox ? domReference : null].filter(x => x != null);\n const cleanup = modal || isUntrappedTypeableCombobox ? markOthers(insideElements, guards, !guards) : markOthers(insideElements);\n return () => {\n cleanup();\n };\n }\n }, [disabled, domReference, floating, modal, orderRef, portalContext, isUntrappedTypeableCombobox, guards]);\n index(() => {\n if (disabled || !floating) return;\n const doc = getDocument(floating);\n const previouslyFocusedElement = activeElement(doc);\n\n // Wait for any layout effect state setters to execute to set `tabIndex`.\n queueMicrotask(() => {\n const focusableElements = getTabbableElements(floating);\n const initialFocusValue = initialFocusRef.current;\n const elToFocus = (typeof initialFocusValue === 'number' ? focusableElements[initialFocusValue] : initialFocusValue.current) || floating;\n const focusAlreadyInsideFloatingEl = contains(floating, previouslyFocusedElement);\n if (!ignoreInitialFocus && !focusAlreadyInsideFloatingEl && open) {\n enqueueFocus(elToFocus, {\n preventScroll: elToFocus === floating\n });\n }\n });\n }, [disabled, open, floating, ignoreInitialFocus, getTabbableElements, initialFocusRef]);\n index(() => {\n if (disabled || !floating) return;\n let preventReturnFocusScroll = false;\n const doc = getDocument(floating);\n const previouslyFocusedElement = activeElement(doc);\n const contextData = dataRef.current;\n addPreviouslyFocusedElement(previouslyFocusedElement);\n\n // Dismissing via outside press should always ignore `returnFocus` to\n // prevent unwanted scrolling.\n function onOpenChange(_ref) {\n let {\n reason,\n event,\n nested\n } = _ref;\n if (reason === 'escape-key' && refs.domReference.current) {\n addPreviouslyFocusedElement(refs.domReference.current);\n }\n if (reason === 'hover' && event.type === 'mouseleave') {\n preventReturnFocusRef.current = true;\n }\n if (reason !== 'outside-press') return;\n if (nested) {\n preventReturnFocusRef.current = false;\n preventReturnFocusScroll = true;\n } else {\n preventReturnFocusRef.current = !(isVirtualClick(event) || isVirtualPointerEvent(event));\n }\n }\n events.on('openchange', onOpenChange);\n return () => {\n events.off('openchange', onOpenChange);\n const activeEl = activeElement(doc);\n const isFocusInsideFloatingTree = contains(floating, activeEl) || tree && getChildren(tree.nodesRef.current, nodeId).some(node => {\n var _node$context5;\n return contains((_node$context5 = node.context) == null ? void 0 : _node$context5.elements.floating, activeEl);\n });\n const shouldFocusReference = isFocusInsideFloatingTree || contextData.openEvent && ['click', 'mousedown'].includes(contextData.openEvent.type);\n if (shouldFocusReference && refs.domReference.current) {\n addPreviouslyFocusedElement(refs.domReference.current);\n }\n const returnElement = getPreviouslyFocusedElement();\n if (returnFocusRef.current && !preventReturnFocusRef.current && isHTMLElement(returnElement) && (\n // If the focus moved somewhere else after mount, avoid returning focus\n // since it likely entered a different element which should be\n // respected: https://github.com/floating-ui/floating-ui/issues/2607\n returnElement !== activeEl && activeEl !== doc.body ? isFocusInsideFloatingTree : true)) {\n enqueueFocus(returnElement, {\n // When dismissing nested floating elements, by the time the rAF has\n // executed, the menus will all have been unmounted. When they try\n // to get focused, the calls get ignored — leaving the root\n // reference focused as desired.\n cancelPrevious: false,\n preventScroll: preventReturnFocusScroll\n });\n }\n };\n }, [disabled, floating, returnFocusRef, dataRef, refs, events, tree, nodeId]);\n\n // Synchronize the `context` & `modal` value to the FloatingPortal context.\n // It will decide whether or not it needs to render its own guards.\n index(() => {\n if (disabled || !portalContext) return;\n portalContext.setFocusManagerState({\n modal,\n closeOnFocusOut,\n open,\n onOpenChange,\n refs\n });\n return () => {\n portalContext.setFocusManagerState(null);\n };\n }, [disabled, portalContext, modal, open, onOpenChange, refs, closeOnFocusOut]);\n index(() => {\n if (disabled || !floating || typeof MutationObserver !== 'function' || ignoreInitialFocus) {\n return;\n }\n const handleMutation = () => {\n const tabIndex = floating.getAttribute('tabindex');\n if (orderRef.current.includes('floating') || activeElement(getDocument(floating)) !== refs.domReference.current && getTabbableContent().length === 0) {\n if (tabIndex !== '0') {\n floating.setAttribute('tabindex', '0');\n }\n } else if (tabIndex !== '-1') {\n floating.setAttribute('tabindex', '-1');\n }\n };\n handleMutation();\n const observer = new MutationObserver(handleMutation);\n observer.observe(floating, {\n childList: true,\n subtree: true,\n attributes: true\n });\n return () => {\n observer.disconnect();\n };\n }, [disabled, floating, refs, orderRef, getTabbableContent, ignoreInitialFocus]);\n function renderDismissButton(location) {\n if (disabled || !visuallyHiddenDismiss || !modal) {\n return null;\n }\n return /*#__PURE__*/React.createElement(VisuallyHiddenDismiss, {\n ref: location === 'start' ? startDismissButtonRef : endDismissButtonRef,\n onClick: event => onOpenChange(false, event.nativeEvent)\n }, typeof visuallyHiddenDismiss === 'string' ? visuallyHiddenDismiss : 'Dismiss');\n }\n const shouldRenderGuards = !disabled && guards && (isInsidePortal || modal);\n return /*#__PURE__*/React.createElement(React.Fragment, null, shouldRenderGuards && /*#__PURE__*/React.createElement(FocusGuard, {\n \"data-type\": \"inside\",\n ref: portalContext == null ? void 0 : portalContext.beforeInsideRef,\n onFocus: event => {\n if (modal) {\n const els = getTabbableElements();\n enqueueFocus(order[0] === 'reference' ? els[0] : els[els.length - 1]);\n } else if (portalContext != null && portalContext.preserveTabOrder && portalContext.portalNode) {\n preventReturnFocusRef.current = false;\n if (isOutsideEvent(event, portalContext.portalNode)) {\n const nextTabbable = getNextTabbable() || domReference;\n nextTabbable == null || nextTabbable.focus();\n } else {\n var _portalContext$before;\n (_portalContext$before = portalContext.beforeOutsideRef.current) == null || _portalContext$before.focus();\n }\n }\n }\n }), !isUntrappedTypeableCombobox && renderDismissButton('start'), children, renderDismissButton('end'), shouldRenderGuards && /*#__PURE__*/React.createElement(FocusGuard, {\n \"data-type\": \"inside\",\n ref: portalContext == null ? void 0 : portalContext.afterInsideRef,\n onFocus: event => {\n if (modal) {\n enqueueFocus(getTabbableElements()[0]);\n } else if (portalContext != null && portalContext.preserveTabOrder && portalContext.portalNode) {\n if (closeOnFocusOut) {\n preventReturnFocusRef.current = true;\n }\n if (isOutsideEvent(event, portalContext.portalNode)) {\n const prevTabbable = getPreviousTabbable() || domReference;\n prevTabbable == null || prevTabbable.focus();\n } else {\n var _portalContext$afterO;\n (_portalContext$afterO = portalContext.afterOutsideRef.current) == null || _portalContext$afterO.focus();\n }\n }\n }\n }));\n}\n\nconst activeLocks = /*#__PURE__*/new Set();\n\n/**\n * Provides base styling for a fixed overlay element to dim content or block\n * pointer events behind a floating element.\n * It's a regular `<div>`, so it can be styled via any CSS solution you prefer.\n * @see https://floating-ui.com/docs/FloatingOverlay\n */\nconst FloatingOverlay = /*#__PURE__*/React.forwardRef(function FloatingOverlay(_ref, ref) {\n let {\n lockScroll = false,\n ...rest\n } = _ref;\n const lockId = useId();\n index(() => {\n if (!lockScroll) return;\n activeLocks.add(lockId);\n const isIOS = /iP(hone|ad|od)|iOS/.test(getPlatform());\n const bodyStyle = document.body.style;\n // RTL <body> scrollbar\n const scrollbarX = Math.round(document.documentElement.getBoundingClientRect().left) + document.documentElement.scrollLeft;\n const paddingProp = scrollbarX ? 'paddingLeft' : 'paddingRight';\n const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;\n const scrollX = bodyStyle.left ? parseFloat(bodyStyle.left) : window.pageXOffset;\n const scrollY = bodyStyle.top ? parseFloat(bodyStyle.top) : window.pageYOffset;\n bodyStyle.overflow = 'hidden';\n if (scrollbarWidth) {\n bodyStyle[paddingProp] = scrollbarWidth + \"px\";\n }\n\n // Only iOS doesn't respect `overflow: hidden` on document.body, and this\n // technique has fewer side effects.\n if (isIOS) {\n var _window$visualViewpor, _window$visualViewpor2;\n // iOS 12 does not support `visualViewport`.\n const offsetLeft = ((_window$visualViewpor = window.visualViewport) == null ? void 0 : _window$visualViewpor.offsetLeft) || 0;\n const offsetTop = ((_window$visualViewpor2 = window.visualViewport) == null ? void 0 : _window$visualViewpor2.offsetTop) || 0;\n Object.assign(bodyStyle, {\n position: 'fixed',\n top: -(scrollY - Math.floor(offsetTop)) + \"px\",\n left: -(scrollX - Math.floor(offsetLeft)) + \"px\",\n right: '0'\n });\n }\n return () => {\n activeLocks.delete(lockId);\n if (activeLocks.size === 0) {\n Object.assign(bodyStyle, {\n overflow: '',\n [paddingProp]: ''\n });\n if (isIOS) {\n Object.assign(bodyStyle, {\n position: '',\n top: '',\n left: '',\n right: ''\n });\n window.scrollTo(scrollX, scrollY);\n }\n }\n };\n }, [lockId, lockScroll]);\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: ref\n }, rest, {\n style: {\n position: 'fixed',\n overflow: 'auto',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...rest.style\n }\n }));\n});\n\nfunction isButtonTarget(event) {\n return isHTMLElement(event.target) && event.target.tagName === 'BUTTON';\n}\nfunction isSpaceIgnored(element) {\n return isTypeableElement(element);\n}\n/**\n * Opens or closes the floating element when clicking the reference element.\n * @see https://floating-ui.com/docs/useClick\n */\nfunction useClick(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n onOpenChange,\n dataRef,\n elements: {\n domReference\n }\n } = context;\n const {\n enabled = true,\n event: eventOption = 'click',\n toggle = true,\n ignoreMouse = false,\n keyboardHandlers = true\n } = props;\n const pointerTypeRef = React.useRef();\n const didKeyDownRef = React.useRef(false);\n return React.useMemo(() => {\n if (!enabled) return {};\n return {\n reference: {\n onPointerDown(event) {\n pointerTypeRef.current = event.pointerType;\n },\n onMouseDown(event) {\n // Ignore all buttons except for the \"main\" button.\n // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button\n if (event.button !== 0) {\n return;\n }\n if (isMouseLikePointerType(pointerTypeRef.current, true) && ignoreMouse) {\n return;\n }\n if (eventOption === 'click') {\n return;\n }\n if (open && toggle && (dataRef.current.openEvent ? dataRef.current.openEvent.type === 'mousedown' : true)) {\n onOpenChange(false, event.nativeEvent, 'click');\n } else {\n // Prevent stealing focus from the floating element\n event.preventDefault();\n onOpenChange(true, event.nativeEvent, 'click');\n }\n },\n onClick(event) {\n if (eventOption === 'mousedown' && pointerTypeRef.current) {\n pointerTypeRef.current = undefined;\n return;\n }\n if (isMouseLikePointerType(pointerTypeRef.current, true) && ignoreMouse) {\n return;\n }\n if (open && toggle && (dataRef.current.openEvent ? dataRef.current.openEvent.type === 'click' : true)) {\n onOpenChange(false, event.nativeEvent, 'click');\n } else {\n onOpenChange(true, event.nativeEvent, 'click');\n }\n },\n onKeyDown(event) {\n pointerTypeRef.current = undefined;\n if (event.defaultPrevented || !keyboardHandlers || isButtonTarget(event)) {\n return;\n }\n if (event.key === ' ' && !isSpaceIgnored(domReference)) {\n // Prevent scrolling\n event.preventDefault();\n didKeyDownRef.current = true;\n }\n if (event.key === 'Enter') {\n if (open && toggle) {\n onOpenChange(false, event.nativeEvent, 'click');\n } else {\n onOpenChange(true, event.nativeEvent, 'click');\n }\n }\n },\n onKeyUp(event) {\n if (event.defaultPrevented || !keyboardHandlers || isButtonTarget(event) || isSpaceIgnored(domReference)) {\n return;\n }\n if (event.key === ' ' && didKeyDownRef.current) {\n didKeyDownRef.current = false;\n if (open && toggle) {\n onOpenChange(false, event.nativeEvent, 'click');\n } else {\n onOpenChange(true, event.nativeEvent, 'click');\n }\n }\n }\n }\n };\n }, [enabled, dataRef, eventOption, ignoreMouse, keyboardHandlers, domReference, toggle, open, onOpenChange]);\n}\n\nfunction createVirtualElement(domRef, data) {\n let offsetX = null;\n let offsetY = null;\n let isAutoUpdateEvent = false;\n return {\n contextElement: domRef.current || undefined,\n getBoundingClientRect() {\n var _domRef$current, _data$dataRef$current;\n const domRect = ((_domRef$current = domRef.current) == null ? void 0 : _domRef$current.getBoundingClientRect()) || {\n width: 0,\n height: 0,\n x: 0,\n y: 0\n };\n const isXAxis = data.axis === 'x' || data.axis === 'both';\n const isYAxis = data.axis === 'y' || data.axis === 'both';\n const canTrackCursorOnAutoUpdate = ['mouseenter', 'mousemove'].includes(((_data$dataRef$current = data.dataRef.current.openEvent) == null ? void 0 : _data$dataRef$current.type) || '') && data.pointerType !== 'touch';\n let width = domRect.width;\n let height = domRect.height;\n let x = domRect.x;\n let y = domRect.y;\n if (offsetX == null && data.x && isXAxis) {\n offsetX = domRect.x - data.x;\n }\n if (offsetY == null && data.y && isYAxis) {\n offsetY = domRect.y - data.y;\n }\n x -= offsetX || 0;\n y -= offsetY || 0;\n width = 0;\n height = 0;\n if (!isAutoUpdateEvent || canTrackCursorOnAutoUpdate) {\n width = data.axis === 'y' ? domRect.width : 0;\n height = data.axis === 'x' ? domRect.height : 0;\n x = isXAxis && data.x != null ? data.x : x;\n y = isYAxis && data.y != null ? data.y : y;\n } else if (isAutoUpdateEvent && !canTrackCursorOnAutoUpdate) {\n height = data.axis === 'x' ? domRect.height : height;\n width = data.axis === 'y' ? domRect.width : width;\n }\n isAutoUpdateEvent = true;\n return {\n width,\n height,\n x,\n y,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x\n };\n }\n };\n}\nfunction isMouseBasedEvent(event) {\n return event != null && event.clientX != null;\n}\n/**\n * Positions the floating element relative to a client point (in the viewport),\n * such as the mouse position. By default, it follows the mouse cursor.\n * @see https://floating-ui.com/docs/useClientPoint\n */\nfunction useClientPoint(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n refs,\n dataRef,\n elements: {\n floating\n }\n } = context;\n const {\n enabled = true,\n axis = 'both',\n x = null,\n y = null\n } = props;\n const initialRef = React.useRef(false);\n const cleanupListenerRef = React.useRef(null);\n const [pointerType, setPointerType] = React.useState();\n const [reactive, setReactive] = React.useState([]);\n const setReference = useEffectEvent((x, y) => {\n if (initialRef.current) return;\n\n // Prevent setting if the open event was not a mouse-like one\n // (e.g. focus to open, then hover over the reference element).\n // Only apply if the event exists.\n if (dataRef.current.openEvent && !isMouseBasedEvent(dataRef.current.openEvent)) {\n return;\n }\n refs.setPositionReference(createVirtualElement(refs.domReference, {\n x,\n y,\n axis,\n dataRef,\n pointerType\n }));\n });\n const handleReferenceEnterOrMove = useEffectEvent(event => {\n if (x != null || y != null) return;\n if (!open) {\n setReference(event.clientX, event.clientY);\n } else if (!cleanupListenerRef.current) {\n // If there's no cleanup, there's no listener, but we want to ensure\n // we add the listener if the cursor landed on the floating element and\n // then back on the reference (i.e. it's interactive).\n setReactive([]);\n }\n });\n\n // If the pointer is a mouse-like pointer, we want to continue following the\n // mouse even if the floating element is transitioning out. On touch\n // devices, this is undesirable because the floating element will move to\n // the dismissal touch point.\n const openCheck = isMouseLikePointerType(pointerType) ? floating : open;\n const addListener = React.useCallback(() => {\n // Explicitly specified `x`/`y` coordinates shouldn't add a listener.\n if (!openCheck || !enabled || x != null || y != null) return;\n const win = getWindow(refs.floating.current);\n function handleMouseMove(event) {\n const target = getTarget(event);\n if (!contains(refs.floating.current, target)) {\n setReference(event.clientX, event.clientY);\n } else {\n win.removeEventListener('mousemove', handleMouseMove);\n cleanupListenerRef.current = null;\n }\n }\n if (!dataRef.current.openEvent || isMouseBasedEvent(dataRef.current.openEvent)) {\n win.addEventListener('mousemove', handleMouseMove);\n const cleanup = () => {\n win.removeEventListener('mousemove', handleMouseMove);\n cleanupListenerRef.current = null;\n };\n cleanupListenerRef.current = cleanup;\n return cleanup;\n }\n refs.setPositionReference(refs.domReference.current);\n }, [dataRef, enabled, openCheck, refs, setReference, x, y]);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: intentionally specifying `reactive`\n React.useEffect(() => {\n return addListener();\n }, [addListener, reactive]);\n React.useEffect(() => {\n if (enabled && !floating) {\n initialRef.current = false;\n }\n }, [enabled, floating]);\n React.useEffect(() => {\n if (!enabled && open) {\n initialRef.current = true;\n }\n }, [enabled, open]);\n index(() => {\n if (enabled && (x != null || y != null)) {\n initialRef.current = false;\n setReference(x, y);\n }\n }, [enabled, x, y, setReference]);\n return React.useMemo(() => {\n if (!enabled) return {};\n function setPointerTypeRef(_ref) {\n let {\n pointerType\n } = _ref;\n setPointerType(pointerType);\n }\n return {\n reference: {\n onPointerDown: setPointerTypeRef,\n onPointerEnter: setPointerTypeRef,\n onMouseMove: handleReferenceEnterOrMove,\n onMouseEnter: handleReferenceEnterOrMove\n }\n };\n }, [enabled, handleReferenceEnterOrMove]);\n}\n\nconst bubbleHandlerKeys = {\n pointerdown: 'onPointerDown',\n mousedown: 'onMouseDown',\n click: 'onClick'\n};\nconst captureHandlerKeys = {\n pointerdown: 'onPointerDownCapture',\n mousedown: 'onMouseDownCapture',\n click: 'onClickCapture'\n};\nconst normalizeProp = normalizable => {\n var _normalizable$escapeK, _normalizable$outside;\n return {\n escapeKey: typeof normalizable === 'boolean' ? normalizable : (_normalizable$escapeK = normalizable == null ? void 0 : normalizable.escapeKey) != null ? _normalizable$escapeK : false,\n outsidePress: typeof normalizable === 'boolean' ? normalizable : (_normalizable$outside = normalizable == null ? void 0 : normalizable.outsidePress) != null ? _normalizable$outside : true\n };\n};\n/**\n * Closes the floating element when a dismissal is requested — by default, when\n * the user presses the `escape` key or outside of the floating element.\n * @see https://floating-ui.com/docs/useDismiss\n */\nfunction useDismiss(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n onOpenChange,\n nodeId,\n elements: {\n reference,\n domReference,\n floating\n },\n dataRef\n } = context;\n const {\n enabled = true,\n escapeKey = true,\n outsidePress: unstable_outsidePress = true,\n outsidePressEvent = 'pointerdown',\n referencePress = false,\n referencePressEvent = 'pointerdown',\n ancestorScroll = false,\n bubbles,\n capture\n } = props;\n const tree = useFloatingTree();\n const outsidePressFn = useEffectEvent(typeof unstable_outsidePress === 'function' ? unstable_outsidePress : () => false);\n const outsidePress = typeof unstable_outsidePress === 'function' ? outsidePressFn : unstable_outsidePress;\n const insideReactTreeRef = React.useRef(false);\n const endedOrStartedInsideRef = React.useRef(false);\n const {\n escapeKey: escapeKeyBubbles,\n outsidePress: outsidePressBubbles\n } = normalizeProp(bubbles);\n const {\n escapeKey: escapeKeyCapture,\n outsidePress: outsidePressCapture\n } = normalizeProp(capture);\n const closeOnEscapeKeyDown = useEffectEvent(event => {\n if (!open || !enabled || !escapeKey || event.key !== 'Escape') {\n return;\n }\n const children = tree ? getChildren(tree.nodesRef.current, nodeId) : [];\n if (!escapeKeyBubbles) {\n event.stopPropagation();\n if (children.length > 0) {\n let shouldDismiss = true;\n children.forEach(child => {\n var _child$context;\n if ((_child$context = child.context) != null && _child$context.open && !child.context.dataRef.current.__escapeKeyBubbles) {\n shouldDismiss = false;\n return;\n }\n });\n if (!shouldDismiss) {\n return;\n }\n }\n }\n onOpenChange(false, isReactEvent(event) ? event.nativeEvent : event, 'escape-key');\n });\n const closeOnEscapeKeyDownCapture = useEffectEvent(event => {\n var _getTarget2;\n const callback = () => {\n var _getTarget;\n closeOnEscapeKeyDown(event);\n (_getTarget = getTarget(event)) == null || _getTarget.removeEventListener('keydown', callback);\n };\n (_getTarget2 = getTarget(event)) == null || _getTarget2.addEventListener('keydown', callback);\n });\n const closeOnPressOutside = useEffectEvent(event => {\n // Given developers can stop the propagation of the synthetic event,\n // we can only be confident with a positive value.\n const insideReactTree = insideReactTreeRef.current;\n insideReactTreeRef.current = false;\n\n // When click outside is lazy (`click` event), handle dragging.\n // Don't close if:\n // - The click started inside the floating element.\n // - The click ended inside the floating element.\n const endedOrStartedInside = endedOrStartedInsideRef.current;\n endedOrStartedInsideRef.current = false;\n if (outsidePressEvent === 'click' && endedOrStartedInside) {\n return;\n }\n if (insideReactTree) {\n return;\n }\n if (typeof outsidePress === 'function' && !outsidePress(event)) {\n return;\n }\n const target = getTarget(event);\n const inertSelector = \"[\" + createAttribute('inert') + \"]\";\n const markers = getDocument(floating).querySelectorAll(inertSelector);\n let targetRootAncestor = isElement(target) ? target : null;\n while (targetRootAncestor && !isLastTraversableNode(targetRootAncestor)) {\n const nextParent = getParentNode(targetRootAncestor);\n if (isLastTraversableNode(nextParent) || !isElement(nextParent)) {\n break;\n }\n targetRootAncestor = nextParent;\n }\n\n // Check if the click occurred on a third-party element injected after the\n // floating element rendered.\n if (markers.length && isElement(target) && !isRootElement(target) &&\n // Clicked on a direct ancestor (e.g. FloatingOverlay).\n !contains(target, floating) &&\n // If the target root element contains none of the markers, then the\n // element was injected after the floating element rendered.\n Array.from(markers).every(marker => !contains(targetRootAncestor, marker))) {\n return;\n }\n\n // Check if the click occurred on the scrollbar\n if (isHTMLElement(target) && floating) {\n // In Firefox, `target.scrollWidth > target.clientWidth` for inline\n // elements.\n const canScrollX = target.clientWidth > 0 && target.scrollWidth > target.clientWidth;\n const canScrollY = target.clientHeight > 0 && target.scrollHeight > target.clientHeight;\n let xCond = canScrollY && event.offsetX > target.clientWidth;\n\n // In some browsers it is possible to change the <body> (or window)\n // scrollbar to the left side, but is very rare and is difficult to\n // check for. Plus, for modal dialogs with backdrops, it is more\n // important that the backdrop is checked but not so much the window.\n if (canScrollY) {\n const isRTL = getComputedStyle(target).direction === 'rtl';\n if (isRTL) {\n xCond = event.offsetX <= target.offsetWidth - target.clientWidth;\n }\n }\n if (xCond || canScrollX && event.offsetY > target.clientHeight) {\n return;\n }\n }\n const targetIsInsideChildren = tree && getChildren(tree.nodesRef.current, nodeId).some(node => {\n var _node$context;\n return isEventTargetWithin(event, (_node$context = node.context) == null ? void 0 : _node$context.elements.floating);\n });\n if (isEventTargetWithin(event, floating) || isEventTargetWithin(event, domReference) || targetIsInsideChildren) {\n return;\n }\n const children = tree ? getChildren(tree.nodesRef.current, nodeId) : [];\n if (children.length > 0) {\n let shouldDismiss = true;\n children.forEach(child => {\n var _child$context2;\n if ((_child$context2 = child.context) != null && _child$context2.open && !child.context.dataRef.current.__outsidePressBubbles) {\n shouldDismiss = false;\n return;\n }\n });\n if (!shouldDismiss) {\n return;\n }\n }\n onOpenChange(false, event, 'outside-press');\n });\n const closeOnPressOutsideCapture = useEffectEvent(event => {\n var _getTarget4;\n const callback = () => {\n var _getTarget3;\n closeOnPressOutside(event);\n (_getTarget3 = getTarget(event)) == null || _getTarget3.removeEventListener(outsidePressEvent, callback);\n };\n (_getTarget4 = getTarget(event)) == null || _getTarget4.addEventListener(outsidePressEvent, callback);\n });\n React.useEffect(() => {\n if (!open || !enabled) {\n return;\n }\n dataRef.current.__escapeKeyBubbles = escapeKeyBubbles;\n dataRef.current.__outsidePressBubbles = outsidePressBubbles;\n function onScroll(event) {\n onOpenChange(false, event, 'ancestor-scroll');\n }\n const doc = getDocument(floating);\n escapeKey && doc.addEventListener('keydown', escapeKeyCapture ? closeOnEscapeKeyDownCapture : closeOnEscapeKeyDown, escapeKeyCapture);\n outsidePress && doc.addEventListener(outsidePressEvent, outsidePressCapture ? closeOnPressOutsideCapture : closeOnPressOutside, outsidePressCapture);\n let ancestors = [];\n if (ancestorScroll) {\n if (isElement(domReference)) {\n ancestors = getOverflowAncestors(domReference);\n }\n if (isElement(floating)) {\n ancestors = ancestors.concat(getOverflowAncestors(floating));\n }\n if (!isElement(reference) && reference && reference.contextElement) {\n ancestors = ancestors.concat(getOverflowAncestors(reference.contextElement));\n }\n }\n\n // Ignore the visual viewport for scrolling dismissal (allow pinch-zoom)\n ancestors = ancestors.filter(ancestor => {\n var _doc$defaultView;\n return ancestor !== ((_doc$defaultView = doc.defaultView) == null ? void 0 : _doc$defaultView.visualViewport);\n });\n ancestors.forEach(ancestor => {\n ancestor.addEventListener('scroll', onScroll, {\n passive: true\n });\n });\n return () => {\n escapeKey && doc.removeEventListener('keydown', escapeKeyCapture ? closeOnEscapeKeyDownCapture : closeOnEscapeKeyDown, escapeKeyCapture);\n outsidePress && doc.removeEventListener(outsidePressEvent, outsidePressCapture ? closeOnPressOutsideCapture : closeOnPressOutside, outsidePressCapture);\n ancestors.forEach(ancestor => {\n ancestor.removeEventListener('scroll', onScroll);\n });\n };\n }, [dataRef, floating, domReference, reference, escapeKey, outsidePress, outsidePressEvent, open, onOpenChange, ancestorScroll, enabled, escapeKeyBubbles, outsidePressBubbles, closeOnEscapeKeyDown, escapeKeyCapture, closeOnEscapeKeyDownCapture, closeOnPressOutside, outsidePressCapture, closeOnPressOutsideCapture]);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: intentional\n React.useEffect(() => {\n insideReactTreeRef.current = false;\n }, [outsidePress, outsidePressEvent]);\n return React.useMemo(() => {\n if (!enabled) {\n return {};\n }\n return {\n reference: {\n onKeyDown: closeOnEscapeKeyDown,\n [bubbleHandlerKeys[referencePressEvent]]: event => {\n if (referencePress) {\n onOpenChange(false, event.nativeEvent, 'reference-press');\n }\n }\n },\n floating: {\n onKeyDown: closeOnEscapeKeyDown,\n onMouseDown() {\n endedOrStartedInsideRef.current = true;\n },\n onMouseUp() {\n endedOrStartedInsideRef.current = true;\n },\n [captureHandlerKeys[outsidePressEvent]]: () => {\n insideReactTreeRef.current = true;\n }\n }\n };\n }, [enabled, referencePress, outsidePressEvent, referencePressEvent, onOpenChange, closeOnEscapeKeyDown]);\n}\n\nlet devMessageSet;\nif (process.env.NODE_ENV !== \"production\") {\n devMessageSet = /*#__PURE__*/new Set();\n}\n\n/**\n * Provides data to position a floating element and context to add interactions.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n var _options$elements2;\n if (options === void 0) {\n options = {};\n }\n const {\n open = false,\n onOpenChange: unstable_onOpenChange,\n nodeId\n } = options;\n if (process.env.NODE_ENV !== \"production\") {\n var _options$elements;\n const err = 'Floating UI: Cannot pass a virtual element to the ' + '`elements.reference` option, as it must be a real DOM element. ' + 'Use `refs.setPositionReference` instead.';\n if ((_options$elements = options.elements) != null && _options$elements.reference && !isElement(options.elements.reference)) {\n var _devMessageSet;\n if (!((_devMessageSet = devMessageSet) != null && _devMessageSet.has(err))) {\n var _devMessageSet2;\n (_devMessageSet2 = devMessageSet) == null || _devMessageSet2.add(err);\n console.error(err);\n }\n }\n }\n const [_domReference, setDomReference] = React.useState(null);\n const domReference = ((_options$elements2 = options.elements) == null ? void 0 : _options$elements2.reference) || _domReference;\n const position = useFloating$1(options);\n const tree = useFloatingTree();\n const nested = useFloatingParentNodeId() != null;\n const onOpenChange = useEffectEvent((open, event, reason) => {\n if (open) {\n dataRef.current.openEvent = event;\n }\n events.emit('openchange', {\n open,\n event,\n reason,\n nested\n });\n unstable_onOpenChange == null || unstable_onOpenChange(open, event, reason);\n });\n const domReferenceRef = React.useRef(null);\n const dataRef = React.useRef({});\n const events = React.useState(() => createPubSub())[0];\n const floatingId = useId();\n const setPositionReference = React.useCallback(node => {\n const positionReference = isElement(node) ? {\n getBoundingClientRect: () => node.getBoundingClientRect(),\n contextElement: node\n } : node;\n position.refs.setReference(positionReference);\n }, [position.refs]);\n const setReference = React.useCallback(node => {\n if (isElement(node) || node === null) {\n domReferenceRef.current = node;\n setDomReference(node);\n }\n\n // Backwards-compatibility for passing a virtual element to `reference`\n // after it has set the DOM reference.\n if (isElement(position.refs.reference.current) || position.refs.reference.current === null ||\n // Don't allow setting virtual elements using the old technique back to\n // `null` to support `positionReference` + an unstable `reference`\n // callback ref.\n node !== null && !isElement(node)) {\n position.refs.setReference(node);\n }\n }, [position.refs]);\n const refs = React.useMemo(() => ({\n ...position.refs,\n setReference,\n setPositionReference,\n domReference: domReferenceRef\n }), [position.refs, setReference, setPositionReference]);\n const elements = React.useMemo(() => ({\n ...position.elements,\n domReference: domReference\n }), [position.elements, domReference]);\n const context = React.useMemo(() => ({\n ...position,\n refs,\n elements,\n dataRef,\n nodeId,\n floatingId,\n events,\n open,\n onOpenChange\n }), [position, nodeId, floatingId, events, open, onOpenChange, refs, elements]);\n index(() => {\n const node = tree == null ? void 0 : tree.nodesRef.current.find(node => node.id === nodeId);\n if (node) {\n node.context = context;\n }\n });\n return React.useMemo(() => ({\n ...position,\n context,\n refs,\n elements\n }), [position, refs, elements, context]);\n}\n\n/**\n * Opens the floating element while the reference element has focus, like CSS\n * `:focus`.\n * @see https://floating-ui.com/docs/useFocus\n */\nfunction useFocus(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n onOpenChange,\n events,\n refs,\n elements: {\n floating,\n domReference\n }\n } = context;\n const {\n enabled = true,\n visibleOnly = true\n } = props;\n const blockFocusRef = React.useRef(false);\n const timeoutRef = React.useRef();\n const keyboardModalityRef = React.useRef(true);\n React.useEffect(() => {\n if (!enabled) {\n return;\n }\n const win = getWindow(domReference);\n\n // If the reference was focused and the user left the tab/window, and the\n // floating element was not open, the focus should be blocked when they\n // return to the tab/window.\n function onBlur() {\n if (!open && isHTMLElement(domReference) && domReference === activeElement(getDocument(domReference))) {\n blockFocusRef.current = true;\n }\n }\n function onKeyDown() {\n keyboardModalityRef.current = true;\n }\n win.addEventListener('blur', onBlur);\n win.addEventListener('keydown', onKeyDown, true);\n return () => {\n win.removeEventListener('blur', onBlur);\n win.removeEventListener('keydown', onKeyDown, true);\n };\n }, [domReference, open, enabled]);\n React.useEffect(() => {\n if (!enabled) {\n return;\n }\n function onOpenChange(_ref) {\n let {\n reason\n } = _ref;\n if (reason === 'reference-press' || reason === 'escape-key') {\n blockFocusRef.current = true;\n }\n }\n events.on('openchange', onOpenChange);\n return () => {\n events.off('openchange', onOpenChange);\n };\n }, [events, enabled]);\n React.useEffect(() => {\n return () => {\n clearTimeout(timeoutRef.current);\n };\n }, []);\n return React.useMemo(() => {\n if (!enabled) {\n return {};\n }\n return {\n reference: {\n onPointerDown(event) {\n if (isVirtualPointerEvent(event.nativeEvent)) return;\n keyboardModalityRef.current = false;\n },\n onMouseLeave() {\n blockFocusRef.current = false;\n },\n onFocus(event) {\n if (blockFocusRef.current) return;\n const target = getTarget(event.nativeEvent);\n if (visibleOnly && isElement(target)) {\n try {\n // Mac Safari unreliably matches `:focus-visible` on the reference\n // if focus was outside the page initially - use the fallback\n // instead.\n if (isSafari() && isMac()) throw Error();\n if (!target.matches(':focus-visible')) return;\n } catch (e) {\n // Old browsers will throw an error when using `:focus-visible`.\n if (!keyboardModalityRef.current && !isTypeableElement(target)) {\n return;\n }\n }\n }\n onOpenChange(true, event.nativeEvent, 'focus');\n },\n onBlur(event) {\n blockFocusRef.current = false;\n const relatedTarget = event.relatedTarget;\n\n // Hit the non-modal focus management portal guard. Focus will be\n // moved into the floating element immediately after.\n const movedToFocusGuard = isElement(relatedTarget) && relatedTarget.hasAttribute(createAttribute('focus-guard')) && relatedTarget.getAttribute('data-type') === 'outside';\n\n // Wait for the window blur listener to fire.\n timeoutRef.current = window.setTimeout(() => {\n const activeEl = activeElement(domReference ? domReference.ownerDocument : document);\n\n // Focus left the page, keep it open.\n if (!relatedTarget && activeEl === domReference) return;\n\n // When focusing the reference element (e.g. regular click), then\n // clicking into the floating element, prevent it from hiding.\n // Note: it must be focusable, e.g. `tabindex=\"-1\"`.\n if (contains(refs.floating.current, relatedTarget) || contains(domReference, relatedTarget) || movedToFocusGuard) {\n return;\n }\n onOpenChange(false, event.nativeEvent, 'focus');\n });\n }\n }\n };\n }, [enabled, visibleOnly, domReference, refs, onOpenChange]);\n}\n\nconst ACTIVE_KEY = 'active';\nconst SELECTED_KEY = 'selected';\nfunction mergeProps(userProps, propsList, elementKey) {\n const map = new Map();\n const isItem = elementKey === 'item';\n let domUserProps = userProps;\n if (isItem && userProps) {\n const {\n [ACTIVE_KEY]: _,\n [SELECTED_KEY]: __,\n ...validProps\n } = userProps;\n domUserProps = validProps;\n }\n return {\n ...(elementKey === 'floating' && {\n tabIndex: -1\n }),\n ...domUserProps,\n ...propsList.map(value => {\n const propsOrGetProps = value ? value[elementKey] : null;\n if (typeof propsOrGetProps === 'function') {\n return userProps ? propsOrGetProps(userProps) : null;\n }\n return propsOrGetProps;\n }).concat(userProps).reduce((acc, props) => {\n if (!props) {\n return acc;\n }\n Object.entries(props).forEach(_ref => {\n let [key, value] = _ref;\n if (isItem && [ACTIVE_KEY, SELECTED_KEY].includes(key)) {\n return;\n }\n if (key.indexOf('on') === 0) {\n if (!map.has(key)) {\n map.set(key, []);\n }\n if (typeof value === 'function') {\n var _map$get;\n (_map$get = map.get(key)) == null || _map$get.push(value);\n acc[key] = function () {\n var _map$get2;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return (_map$get2 = map.get(key)) == null ? void 0 : _map$get2.map(fn => fn(...args)).find(val => val !== undefined);\n };\n }\n } else {\n acc[key] = value;\n }\n });\n return acc;\n }, {})\n };\n}\n\n/**\n * Merges an array of interaction hooks' props into prop getters, allowing\n * event handler functions to be composed together without overwriting one\n * another.\n * @see https://floating-ui.com/docs/useInteractions\n */\nfunction useInteractions(propsList) {\n if (propsList === void 0) {\n propsList = [];\n }\n // The dependencies are a dynamic array, so we can't use the linter's\n // suggestion to add it to the deps array.\n const deps = propsList;\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: intentional\n const getReferenceProps = React.useCallback(userProps => mergeProps(userProps, propsList, 'reference'), deps);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: intentional\n const getFloatingProps = React.useCallback(userProps => mergeProps(userProps, propsList, 'floating'), deps);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: intentional\n const getItemProps = React.useCallback(userProps => mergeProps(userProps, propsList, 'item'),\n // Granularly check for `item` changes, because the `getItemProps` getter\n // should be as referentially stable as possible since it may be passed as\n // a prop to many components. All `item` key values must therefore be\n // memoized.\n propsList.map(key => key == null ? void 0 : key.item));\n return React.useMemo(() => ({\n getReferenceProps,\n getFloatingProps,\n getItemProps\n }), [getReferenceProps, getFloatingProps, getItemProps]);\n}\n\nlet isPreventScrollSupported = false;\nfunction doSwitch(orientation, vertical, horizontal) {\n switch (orientation) {\n case 'vertical':\n return vertical;\n case 'horizontal':\n return horizontal;\n default:\n return vertical || horizontal;\n }\n}\nfunction isMainOrientationKey(key, orientation) {\n const vertical = key === ARROW_UP || key === ARROW_DOWN;\n const horizontal = key === ARROW_LEFT || key === ARROW_RIGHT;\n return doSwitch(orientation, vertical, horizontal);\n}\nfunction isMainOrientationToEndKey(key, orientation, rtl) {\n const vertical = key === ARROW_DOWN;\n const horizontal = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;\n return doSwitch(orientation, vertical, horizontal) || key === 'Enter' || key === ' ' || key === '';\n}\nfunction isCrossOrientationOpenKey(key, orientation, rtl) {\n const vertical = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;\n const horizontal = key === ARROW_DOWN;\n return doSwitch(orientation, vertical, horizontal);\n}\nfunction isCrossOrientationCloseKey(key, orientation, rtl) {\n const vertical = rtl ? key === ARROW_RIGHT : key === ARROW_LEFT;\n const horizontal = key === ARROW_UP;\n return doSwitch(orientation, vertical, horizontal);\n}\n/**\n * Adds arrow key-based navigation of a list of items, either using real DOM\n * focus or virtual focus.\n * @see https://floating-ui.com/docs/useListNavigation\n */\nfunction useListNavigation(context, props) {\n const {\n open,\n onOpenChange,\n refs,\n elements: {\n domReference,\n floating\n }\n } = context;\n const {\n listRef,\n activeIndex,\n onNavigate: unstable_onNavigate = () => {},\n enabled = true,\n selectedIndex = null,\n allowEscape = false,\n loop = false,\n nested = false,\n rtl = false,\n virtual = false,\n focusItemOnOpen = 'auto',\n focusItemOnHover = true,\n openOnArrowKeyDown = true,\n disabledIndices = undefined,\n orientation = 'vertical',\n cols = 1,\n scrollItemIntoView = true,\n virtualItemRef,\n itemSizes,\n dense = false\n } = props;\n if (process.env.NODE_ENV !== \"production\") {\n if (allowEscape) {\n if (!loop) {\n console.warn(['Floating UI: `useListNavigation` looping must be enabled to allow', 'escaping.'].join(' '));\n }\n if (!virtual) {\n console.warn(['Floating UI: `useListNavigation` must be virtual to allow', 'escaping.'].join(' '));\n }\n }\n if (orientation === 'vertical' && cols > 1) {\n console.warn(['Floating UI: In grid list navigation mode (`cols` > 1), the', '`orientation` should be either \"horizontal\" or \"both\".'].join(' '));\n }\n }\n const parentId = useFloatingParentNodeId();\n const tree = useFloatingTree();\n const onNavigate = useEffectEvent(unstable_onNavigate);\n const focusItemOnOpenRef = React.useRef(focusItemOnOpen);\n const indexRef = React.useRef(selectedIndex != null ? selectedIndex : -1);\n const keyRef = React.useRef(null);\n const isPointerModalityRef = React.useRef(true);\n const previousOnNavigateRef = React.useRef(onNavigate);\n const previousMountedRef = React.useRef(!!floating);\n const forceSyncFocus = React.useRef(false);\n const forceScrollIntoViewRef = React.useRef(false);\n const disabledIndicesRef = useLatestRef(disabledIndices);\n const latestOpenRef = useLatestRef(open);\n const scrollItemIntoViewRef = useLatestRef(scrollItemIntoView);\n const [activeId, setActiveId] = React.useState();\n const [virtualId, setVirtualId] = React.useState();\n const focusItem = useEffectEvent(function (listRef, indexRef, forceScrollIntoView) {\n if (forceScrollIntoView === void 0) {\n forceScrollIntoView = false;\n }\n const item = listRef.current[indexRef.current];\n if (!item) return;\n if (virtual) {\n setActiveId(item.id);\n tree == null || tree.events.emit('virtualfocus', item);\n if (virtualItemRef) {\n virtualItemRef.current = item;\n }\n } else {\n enqueueFocus(item, {\n preventScroll: true,\n // Mac Safari does not move the virtual cursor unless the focus call\n // is sync. However, for the very first focus call, we need to wait\n // for the position to be ready in order to prevent unwanted\n // scrolling. This means the virtual cursor will not move to the first\n // item when first opening the floating element, but will on\n // subsequent calls. `preventScroll` is supported in modern Safari,\n // so we can use that instead.\n // iOS Safari must be async or the first item will not be focused.\n sync: isMac() && isSafari() ? isPreventScrollSupported || forceSyncFocus.current : false\n });\n }\n requestAnimationFrame(() => {\n const scrollIntoViewOptions = scrollItemIntoViewRef.current;\n const shouldScrollIntoView = scrollIntoViewOptions && item && (forceScrollIntoView || !isPointerModalityRef.current);\n if (shouldScrollIntoView) {\n // JSDOM doesn't support `.scrollIntoView()` but it's widely supported\n // by all browsers.\n item.scrollIntoView == null || item.scrollIntoView(typeof scrollIntoViewOptions === 'boolean' ? {\n block: 'nearest',\n inline: 'nearest'\n } : scrollIntoViewOptions);\n }\n });\n });\n index(() => {\n document.createElement('div').focus({\n get preventScroll() {\n isPreventScrollSupported = true;\n return false;\n }\n });\n }, []);\n\n // Sync `selectedIndex` to be the `activeIndex` upon opening the floating\n // element. Also, reset `activeIndex` upon closing the floating element.\n index(() => {\n if (!enabled) {\n return;\n }\n if (open && floating) {\n if (focusItemOnOpenRef.current && selectedIndex != null) {\n // Regardless of the pointer modality, we want to ensure the selected\n // item comes into view when the floating element is opened.\n forceScrollIntoViewRef.current = true;\n indexRef.current = selectedIndex;\n onNavigate(selectedIndex);\n }\n } else if (previousMountedRef.current) {\n // Since the user can specify `onNavigate` conditionally\n // (onNavigate: open ? setActiveIndex : setSelectedIndex),\n // we store and call the previous function.\n indexRef.current = -1;\n previousOnNavigateRef.current(null);\n }\n }, [enabled, open, floating, selectedIndex, onNavigate]);\n\n // Sync `activeIndex` to be the focused item while the floating element is\n // open.\n index(() => {\n if (!enabled) {\n return;\n }\n if (open && floating) {\n if (activeIndex == null) {\n forceSyncFocus.current = false;\n if (selectedIndex != null) {\n return;\n }\n\n // Reset while the floating element was open (e.g. the list changed).\n if (previousMountedRef.current) {\n indexRef.current = -1;\n focusItem(listRef, indexRef);\n }\n\n // Initial sync.\n if (!previousMountedRef.current && focusItemOnOpenRef.current && (keyRef.current != null || focusItemOnOpenRef.current === true && keyRef.current == null)) {\n let runs = 0;\n const waitForListPopulated = () => {\n if (listRef.current[0] == null) {\n // Avoid letting the browser paint if possible on the first try,\n // otherwise use rAF. Don't try more than twice, since something\n // is wrong otherwise.\n if (runs < 2) {\n const scheduler = runs ? requestAnimationFrame : queueMicrotask;\n scheduler(waitForListPopulated);\n }\n runs++;\n } else {\n indexRef.current = keyRef.current == null || isMainOrientationToEndKey(keyRef.current, orientation, rtl) || nested ? getMinIndex(listRef, disabledIndicesRef.current) : getMaxIndex(listRef, disabledIndicesRef.current);\n keyRef.current = null;\n onNavigate(indexRef.current);\n }\n };\n waitForListPopulated();\n }\n } else if (!isIndexOutOfBounds(listRef, activeIndex)) {\n indexRef.current = activeIndex;\n focusItem(listRef, indexRef, forceScrollIntoViewRef.current);\n forceScrollIntoViewRef.current = false;\n }\n }\n }, [enabled, open, floating, activeIndex, selectedIndex, nested, listRef, orientation, rtl, onNavigate, focusItem, disabledIndicesRef]);\n\n // Ensure the parent floating element has focus when a nested child closes\n // to allow arrow key navigation to work after the pointer leaves the child.\n index(() => {\n var _nodes$find;\n if (!enabled || floating || !tree || virtual || !previousMountedRef.current) {\n return;\n }\n const nodes = tree.nodesRef.current;\n const parent = (_nodes$find = nodes.find(node => node.id === parentId)) == null || (_nodes$find = _nodes$find.context) == null ? void 0 : _nodes$find.elements.floating;\n const activeEl = activeElement(getDocument(floating));\n const treeContainsActiveEl = nodes.some(node => node.context && contains(node.context.elements.floating, activeEl));\n if (parent && !treeContainsActiveEl && isPointerModalityRef.current) {\n parent.focus({\n preventScroll: true\n });\n }\n }, [enabled, floating, tree, parentId, virtual]);\n index(() => {\n if (!enabled || !tree || !virtual || parentId) return;\n function handleVirtualFocus(item) {\n setVirtualId(item.id);\n if (virtualItemRef) {\n virtualItemRef.current = item;\n }\n }\n tree.events.on('virtualfocus', handleVirtualFocus);\n return () => {\n tree.events.off('virtualfocus', handleVirtualFocus);\n };\n }, [enabled, tree, virtual, parentId, virtualItemRef]);\n index(() => {\n previousOnNavigateRef.current = onNavigate;\n previousMountedRef.current = !!floating;\n });\n index(() => {\n if (!open) {\n keyRef.current = null;\n }\n }, [open]);\n const hasActiveIndex = activeIndex != null;\n const item = React.useMemo(() => {\n function syncCurrentTarget(currentTarget) {\n if (!open) return;\n const index = listRef.current.indexOf(currentTarget);\n if (index !== -1) {\n onNavigate(index);\n }\n }\n const props = {\n onFocus(_ref) {\n let {\n currentTarget\n } = _ref;\n syncCurrentTarget(currentTarget);\n },\n onClick: _ref2 => {\n let {\n currentTarget\n } = _ref2;\n return currentTarget.focus({\n preventScroll: true\n });\n },\n // Safari\n ...(focusItemOnHover && {\n onMouseMove(_ref3) {\n let {\n currentTarget\n } = _ref3;\n syncCurrentTarget(currentTarget);\n },\n onPointerLeave(_ref4) {\n let {\n pointerType\n } = _ref4;\n if (!isPointerModalityRef.current || pointerType === 'touch') {\n return;\n }\n indexRef.current = -1;\n focusItem(listRef, indexRef);\n onNavigate(null);\n if (!virtual) {\n enqueueFocus(refs.floating.current, {\n preventScroll: true\n });\n }\n }\n })\n };\n return props;\n }, [open, refs, focusItem, focusItemOnHover, listRef, onNavigate, virtual]);\n return React.useMemo(() => {\n if (!enabled) {\n return {};\n }\n const disabledIndices = disabledIndicesRef.current;\n function onKeyDown(event) {\n isPointerModalityRef.current = false;\n forceSyncFocus.current = true;\n\n // If the floating element is animating out, ignore navigation. Otherwise,\n // the `activeIndex` gets set to 0 despite not being open so the next time\n // the user ArrowDowns, the first item won't be focused.\n if (!latestOpenRef.current && event.currentTarget === refs.floating.current) {\n return;\n }\n if (nested && isCrossOrientationCloseKey(event.key, orientation, rtl)) {\n stopEvent(event);\n onOpenChange(false, event.nativeEvent, 'list-navigation');\n if (isHTMLElement(domReference) && !virtual) {\n domReference.focus();\n }\n return;\n }\n const currentIndex = indexRef.current;\n const minIndex = getMinIndex(listRef, disabledIndices);\n const maxIndex = getMaxIndex(listRef, disabledIndices);\n if (event.key === 'Home') {\n stopEvent(event);\n indexRef.current = minIndex;\n onNavigate(indexRef.current);\n }\n if (event.key === 'End') {\n stopEvent(event);\n indexRef.current = maxIndex;\n onNavigate(indexRef.current);\n }\n\n // Grid navigation.\n if (cols > 1) {\n const sizes = itemSizes || Array.from({\n length: listRef.current.length\n }, () => ({\n width: 1,\n height: 1\n }));\n // To calculate movements on the grid, we use hypothetical cell indices\n // as if every item was 1x1, then convert back to real indices.\n const cellMap = buildCellMap(sizes, cols, dense);\n const minGridIndex = cellMap.findIndex(index => index != null && !(disabledIndices != null && disabledIndices.includes(index)));\n // last enabled index\n const maxGridIndex = cellMap.reduce((foundIndex, index, cellIndex) => index != null && !(disabledIndices != null && disabledIndices.includes(index)) ? cellIndex : foundIndex, -1);\n indexRef.current = cellMap[getGridNavigatedIndex({\n current: cellMap.map(itemIndex => itemIndex != null ? listRef.current[itemIndex] : null)\n }, {\n event,\n orientation,\n loop,\n cols,\n // treat undefined (empty grid spaces) as disabled indices so we\n // don't end up in them\n disabledIndices: getCellIndices([...(disabledIndices || []), undefined], cellMap),\n minIndex: minGridIndex,\n maxIndex: maxGridIndex,\n prevIndex: getCellIndexOfCorner(indexRef.current, sizes, cellMap, cols,\n // use a corner matching the edge closest to the direction\n // we're moving in so we don't end up in the same item. Prefer\n // top/left over bottom/right.\n event.key === ARROW_DOWN ? 'bl' : event.key === ARROW_RIGHT ? 'tr' : 'tl'),\n stopEvent: true\n })]; // navigated cell will never be nullish\n\n onNavigate(indexRef.current);\n if (orientation === 'both') {\n return;\n }\n }\n if (isMainOrientationKey(event.key, orientation)) {\n stopEvent(event);\n\n // Reset the index if no item is focused.\n if (open && !virtual && activeElement(event.currentTarget.ownerDocument) === event.currentTarget) {\n indexRef.current = isMainOrientationToEndKey(event.key, orientation, rtl) ? minIndex : maxIndex;\n onNavigate(indexRef.current);\n return;\n }\n if (isMainOrientationToEndKey(event.key, orientation, rtl)) {\n if (loop) {\n indexRef.current = currentIndex >= maxIndex ? allowEscape && currentIndex !== listRef.current.length ? -1 : minIndex : findNonDisabledIndex(listRef, {\n startingIndex: currentIndex,\n disabledIndices\n });\n } else {\n indexRef.current = Math.min(maxIndex, findNonDisabledIndex(listRef, {\n startingIndex: currentIndex,\n disabledIndices\n }));\n }\n } else {\n if (loop) {\n indexRef.current = currentIndex <= minIndex ? allowEscape && currentIndex !== -1 ? listRef.current.length : maxIndex : findNonDisabledIndex(listRef, {\n startingIndex: currentIndex,\n decrement: true,\n disabledIndices\n });\n } else {\n indexRef.current = Math.max(minIndex, findNonDisabledIndex(listRef, {\n startingIndex: currentIndex,\n decrement: true,\n disabledIndices\n }));\n }\n }\n if (isIndexOutOfBounds(listRef, indexRef.current)) {\n onNavigate(null);\n } else {\n onNavigate(indexRef.current);\n }\n }\n }\n function checkVirtualMouse(event) {\n if (focusItemOnOpen === 'auto' && isVirtualClick(event.nativeEvent)) {\n focusItemOnOpenRef.current = true;\n }\n }\n function checkVirtualPointer(event) {\n // `pointerdown` fires first, reset the state then perform the checks.\n focusItemOnOpenRef.current = focusItemOnOpen;\n if (focusItemOnOpen === 'auto' && isVirtualPointerEvent(event.nativeEvent)) {\n focusItemOnOpenRef.current = true;\n }\n }\n const ariaActiveDescendantProp = virtual && open && hasActiveIndex && {\n 'aria-activedescendant': virtualId || activeId\n };\n const activeItem = listRef.current.find(item => (item == null ? void 0 : item.id) === activeId);\n return {\n reference: {\n ...ariaActiveDescendantProp,\n onKeyDown(event) {\n isPointerModalityRef.current = false;\n const isArrowKey = event.key.indexOf('Arrow') === 0;\n const isCrossOpenKey = isCrossOrientationOpenKey(event.key, orientation, rtl);\n const isCrossCloseKey = isCrossOrientationCloseKey(event.key, orientation, rtl);\n const isMainKey = isMainOrientationKey(event.key, orientation);\n const isNavigationKey = (nested ? isCrossOpenKey : isMainKey) || event.key === 'Enter' || event.key.trim() === '';\n if (virtual && open) {\n const rootNode = tree == null ? void 0 : tree.nodesRef.current.find(node => node.parentId == null);\n const deepestNode = tree && rootNode ? getDeepestNode(tree.nodesRef.current, rootNode.id) : null;\n if (isArrowKey && deepestNode && virtualItemRef) {\n const eventObject = new KeyboardEvent('keydown', {\n key: event.key,\n bubbles: true\n });\n if (isCrossOpenKey || isCrossCloseKey) {\n var _deepestNode$context, _deepestNode$context2;\n const isCurrentTarget = ((_deepestNode$context = deepestNode.context) == null ? void 0 : _deepestNode$context.elements.domReference) === event.currentTarget;\n const dispatchItem = isCrossCloseKey && !isCurrentTarget ? (_deepestNode$context2 = deepestNode.context) == null ? void 0 : _deepestNode$context2.elements.domReference : isCrossOpenKey ? activeItem : null;\n if (dispatchItem) {\n stopEvent(event);\n dispatchItem.dispatchEvent(eventObject);\n setVirtualId(undefined);\n }\n }\n if (isMainKey && deepestNode.context) {\n if (deepestNode.context.open && deepestNode.parentId && event.currentTarget !== deepestNode.context.elements.domReference) {\n var _deepestNode$context$;\n stopEvent(event);\n (_deepestNode$context$ = deepestNode.context.elements.domReference) == null || _deepestNode$context$.dispatchEvent(eventObject);\n return;\n }\n }\n }\n return onKeyDown(event);\n }\n\n // If a floating element should not open on arrow key down, avoid\n // setting `activeIndex` while it's closed.\n if (!open && !openOnArrowKeyDown && isArrowKey) {\n return;\n }\n if (isNavigationKey) {\n keyRef.current = nested && isMainKey ? null : event.key;\n }\n if (nested) {\n if (isCrossOpenKey) {\n stopEvent(event);\n if (open) {\n indexRef.current = getMinIndex(listRef, disabledIndices);\n onNavigate(indexRef.current);\n } else {\n onOpenChange(true, event.nativeEvent, 'list-navigation');\n }\n }\n return;\n }\n if (isMainKey) {\n if (selectedIndex != null) {\n indexRef.current = selectedIndex;\n }\n stopEvent(event);\n if (!open && openOnArrowKeyDown) {\n onOpenChange(true, event.nativeEvent, 'list-navigation');\n } else {\n onKeyDown(event);\n }\n if (open) {\n onNavigate(indexRef.current);\n }\n }\n },\n onFocus() {\n if (open) {\n onNavigate(null);\n }\n },\n onPointerDown: checkVirtualPointer,\n onMouseDown: checkVirtualMouse,\n onClick: checkVirtualMouse\n },\n floating: {\n 'aria-orientation': orientation === 'both' ? undefined : orientation,\n ...(!isTypeableCombobox(domReference) && ariaActiveDescendantProp),\n onKeyDown,\n onPointerMove() {\n isPointerModalityRef.current = true;\n }\n },\n item\n };\n }, [domReference, refs, activeId, virtualId, disabledIndicesRef, latestOpenRef, listRef, enabled, orientation, rtl, virtual, open, hasActiveIndex, nested, selectedIndex, openOnArrowKeyDown, allowEscape, cols, loop, focusItemOnOpen, onNavigate, onOpenChange, item, tree, virtualItemRef, itemSizes, dense]);\n}\n\nconst componentRoleToAriaRoleMap = /*#__PURE__*/new Map([['select', 'listbox'], ['combobox', 'listbox'], ['label', false]]);\n\n/**\n * Adds base screen reader props to the reference and floating elements for a\n * given floating element `role`.\n * @see https://floating-ui.com/docs/useRole\n */\nfunction useRole(context, props) {\n var _componentRoleToAriaR;\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n floatingId\n } = context;\n const {\n enabled = true,\n role = 'dialog'\n } = props;\n const ariaRole = (_componentRoleToAriaR = componentRoleToAriaRoleMap.get(role)) != null ? _componentRoleToAriaR : role;\n const referenceId = useId();\n const parentId = useFloatingParentNodeId();\n const isNested = parentId != null;\n return React.useMemo(() => {\n if (!enabled) return {};\n const floatingProps = {\n id: floatingId,\n ...(ariaRole && {\n role: ariaRole\n })\n };\n if (ariaRole === 'tooltip' || role === 'label') {\n return {\n reference: {\n [\"aria-\" + (role === 'label' ? 'labelledby' : 'describedby')]: open ? floatingId : undefined\n },\n floating: floatingProps\n };\n }\n return {\n reference: {\n 'aria-expanded': open ? 'true' : 'false',\n 'aria-haspopup': ariaRole === 'alertdialog' ? 'dialog' : ariaRole,\n 'aria-controls': open ? floatingId : undefined,\n ...(ariaRole === 'listbox' && {\n role: 'combobox'\n }),\n ...(ariaRole === 'menu' && {\n id: referenceId\n }),\n ...(ariaRole === 'menu' && isNested && {\n role: 'menuitem'\n }),\n ...(role === 'select' && {\n 'aria-autocomplete': 'none'\n }),\n ...(role === 'combobox' && {\n 'aria-autocomplete': 'list'\n })\n },\n floating: {\n ...floatingProps,\n ...(ariaRole === 'menu' && {\n 'aria-labelledby': referenceId\n })\n },\n item(_ref) {\n let {\n active,\n selected\n } = _ref;\n const commonProps = {\n role: 'option',\n ...(active && {\n id: floatingId + \"-option\"\n })\n };\n\n // For `menu`, we are unable to tell if the item is a `menuitemradio`\n // or `menuitemcheckbox`. For backwards-compatibility reasons, also\n // avoid defaulting to `menuitem` as it may overwrite custom role props.\n switch (role) {\n case 'select':\n return {\n ...commonProps,\n 'aria-selected': active && selected\n };\n case 'combobox':\n {\n return {\n ...commonProps,\n ...(active && {\n 'aria-selected': true\n })\n };\n }\n }\n return {};\n }\n };\n }, [enabled, role, ariaRole, open, floatingId, referenceId, isNested]);\n}\n\n// Converts a JS style key like `backgroundColor` to a CSS transition-property\n// like `background-color`.\nconst camelCaseToKebabCase = str => str.replace(/[A-Z]+(?![a-z])|[A-Z]/g, ($, ofs) => (ofs ? '-' : '') + $.toLowerCase());\nfunction execWithArgsOrReturn(valueOrFn, args) {\n return typeof valueOrFn === 'function' ? valueOrFn(args) : valueOrFn;\n}\nfunction useDelayUnmount(open, durationMs) {\n const [isMounted, setIsMounted] = React.useState(open);\n if (open && !isMounted) {\n setIsMounted(true);\n }\n React.useEffect(() => {\n if (!open) {\n const timeout = setTimeout(() => setIsMounted(false), durationMs);\n return () => clearTimeout(timeout);\n }\n }, [open, durationMs]);\n return isMounted;\n}\n/**\n * Provides a status string to apply CSS transitions to a floating element,\n * correctly handling placement-aware transitions.\n * @see https://floating-ui.com/docs/useTransition#usetransitionstatus\n */\nfunction useTransitionStatus(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n elements: {\n floating\n }\n } = context;\n const {\n duration = 250\n } = props;\n const isNumberDuration = typeof duration === 'number';\n const closeDuration = (isNumberDuration ? duration : duration.close) || 0;\n const [initiated, setInitiated] = React.useState(false);\n const [status, setStatus] = React.useState('unmounted');\n const isMounted = useDelayUnmount(open, closeDuration);\n\n // `initiated` check prevents this `setState` call from breaking\n // <FloatingPortal />. This call is necessary to ensure subsequent opens\n // after the initial one allows the correct side animation to play when the\n // placement has changed.\n index(() => {\n if (initiated && !isMounted) {\n setStatus('unmounted');\n }\n }, [initiated, isMounted]);\n index(() => {\n if (!floating) return;\n if (open) {\n setStatus('initial');\n const frame = requestAnimationFrame(() => {\n setStatus('open');\n });\n return () => {\n cancelAnimationFrame(frame);\n };\n }\n setInitiated(true);\n setStatus('close');\n }, [open, floating]);\n return {\n isMounted,\n status\n };\n}\n/**\n * Provides styles to apply CSS transitions to a floating element, correctly\n * handling placement-aware transitions. Wrapper around `useTransitionStatus`.\n * @see https://floating-ui.com/docs/useTransition#usetransitionstyles\n */\nfunction useTransitionStyles(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n initial: unstable_initial = {\n opacity: 0\n },\n open: unstable_open,\n close: unstable_close,\n common: unstable_common,\n duration = 250\n } = props;\n const placement = context.placement;\n const side = placement.split('-')[0];\n const fnArgs = React.useMemo(() => ({\n side,\n placement\n }), [side, placement]);\n const isNumberDuration = typeof duration === 'number';\n const openDuration = (isNumberDuration ? duration : duration.open) || 0;\n const closeDuration = (isNumberDuration ? duration : duration.close) || 0;\n const [styles, setStyles] = React.useState(() => ({\n ...execWithArgsOrReturn(unstable_common, fnArgs),\n ...execWithArgsOrReturn(unstable_initial, fnArgs)\n }));\n const {\n isMounted,\n status\n } = useTransitionStatus(context, {\n duration\n });\n const initialRef = useLatestRef(unstable_initial);\n const openRef = useLatestRef(unstable_open);\n const closeRef = useLatestRef(unstable_close);\n const commonRef = useLatestRef(unstable_common);\n index(() => {\n const initialStyles = execWithArgsOrReturn(initialRef.current, fnArgs);\n const closeStyles = execWithArgsOrReturn(closeRef.current, fnArgs);\n const commonStyles = execWithArgsOrReturn(commonRef.current, fnArgs);\n const openStyles = execWithArgsOrReturn(openRef.current, fnArgs) || Object.keys(initialStyles).reduce((acc, key) => {\n acc[key] = '';\n return acc;\n }, {});\n if (status === 'initial') {\n setStyles(styles => ({\n transitionProperty: styles.transitionProperty,\n ...commonStyles,\n ...initialStyles\n }));\n }\n if (status === 'open') {\n setStyles({\n transitionProperty: Object.keys(openStyles).map(camelCaseToKebabCase).join(','),\n transitionDuration: openDuration + \"ms\",\n ...commonStyles,\n ...openStyles\n });\n }\n if (status === 'close') {\n const styles = closeStyles || initialStyles;\n setStyles({\n transitionProperty: Object.keys(styles).map(camelCaseToKebabCase).join(','),\n transitionDuration: closeDuration + \"ms\",\n ...commonStyles,\n ...styles\n });\n }\n }, [closeDuration, closeRef, initialRef, openRef, commonRef, openDuration, status, fnArgs]);\n return {\n isMounted,\n styles\n };\n}\n\n/**\n * Provides a matching callback that can be used to focus an item as the user\n * types, often used in tandem with `useListNavigation()`.\n * @see https://floating-ui.com/docs/useTypeahead\n */\nfunction useTypeahead(context, props) {\n var _ref;\n const {\n open,\n dataRef\n } = context;\n const {\n listRef,\n activeIndex,\n onMatch: unstable_onMatch,\n onTypingChange: unstable_onTypingChange,\n enabled = true,\n findMatch = null,\n resetMs = 750,\n ignoreKeys = [],\n selectedIndex = null\n } = props;\n const timeoutIdRef = React.useRef();\n const stringRef = React.useRef('');\n const prevIndexRef = React.useRef((_ref = selectedIndex != null ? selectedIndex : activeIndex) != null ? _ref : -1);\n const matchIndexRef = React.useRef(null);\n const onMatch = useEffectEvent(unstable_onMatch);\n const onTypingChange = useEffectEvent(unstable_onTypingChange);\n const findMatchRef = useLatestRef(findMatch);\n const ignoreKeysRef = useLatestRef(ignoreKeys);\n index(() => {\n if (open) {\n clearTimeout(timeoutIdRef.current);\n matchIndexRef.current = null;\n stringRef.current = '';\n }\n }, [open]);\n index(() => {\n // Sync arrow key navigation but not typeahead navigation.\n if (open && stringRef.current === '') {\n var _ref2;\n prevIndexRef.current = (_ref2 = selectedIndex != null ? selectedIndex : activeIndex) != null ? _ref2 : -1;\n }\n }, [open, selectedIndex, activeIndex]);\n return React.useMemo(() => {\n if (!enabled) {\n return {};\n }\n function setTypingChange(value) {\n if (value) {\n if (!dataRef.current.typing) {\n dataRef.current.typing = value;\n onTypingChange(value);\n }\n } else {\n if (dataRef.current.typing) {\n dataRef.current.typing = value;\n onTypingChange(value);\n }\n }\n }\n function getMatchingIndex(list, orderedList, string) {\n const str = findMatchRef.current ? findMatchRef.current(orderedList, string) : orderedList.find(text => (text == null ? void 0 : text.toLocaleLowerCase().indexOf(string.toLocaleLowerCase())) === 0);\n return str ? list.indexOf(str) : -1;\n }\n function onKeyDown(event) {\n const listContent = listRef.current;\n if (stringRef.current.length > 0 && stringRef.current[0] !== ' ') {\n if (getMatchingIndex(listContent, listContent, stringRef.current) === -1) {\n setTypingChange(false);\n } else if (event.key === ' ') {\n stopEvent(event);\n }\n }\n if (listContent == null || ignoreKeysRef.current.includes(event.key) ||\n // Character key.\n event.key.length !== 1 ||\n // Modifier key.\n event.ctrlKey || event.metaKey || event.altKey) {\n return;\n }\n if (open && event.key !== ' ') {\n stopEvent(event);\n setTypingChange(true);\n }\n\n // Bail out if the list contains a word like \"llama\" or \"aaron\". TODO:\n // allow it in this case, too.\n const allowRapidSuccessionOfFirstLetter = listContent.every(text => {\n var _text$, _text$2;\n return text ? ((_text$ = text[0]) == null ? void 0 : _text$.toLocaleLowerCase()) !== ((_text$2 = text[1]) == null ? void 0 : _text$2.toLocaleLowerCase()) : true;\n });\n\n // Allows the user to cycle through items that start with the same letter\n // in rapid succession.\n if (allowRapidSuccessionOfFirstLetter && stringRef.current === event.key) {\n stringRef.current = '';\n prevIndexRef.current = matchIndexRef.current;\n }\n stringRef.current += event.key;\n clearTimeout(timeoutIdRef.current);\n timeoutIdRef.current = setTimeout(() => {\n stringRef.current = '';\n prevIndexRef.current = matchIndexRef.current;\n setTypingChange(false);\n }, resetMs);\n const prevIndex = prevIndexRef.current;\n const index = getMatchingIndex(listContent, [...listContent.slice((prevIndex || 0) + 1), ...listContent.slice(0, (prevIndex || 0) + 1)], stringRef.current);\n if (index !== -1) {\n onMatch(index);\n matchIndexRef.current = index;\n } else if (event.key !== ' ') {\n stringRef.current = '';\n setTypingChange(false);\n }\n }\n return {\n reference: {\n onKeyDown\n },\n floating: {\n onKeyDown,\n onKeyUp(event) {\n if (event.key === ' ') {\n setTypingChange(false);\n }\n }\n }\n };\n }, [enabled, open, dataRef, listRef, resetMs, ignoreKeysRef, findMatchRef, onMatch, onTypingChange]);\n}\n\nfunction getArgsWithCustomFloatingHeight(state, height) {\n return {\n ...state,\n rects: {\n ...state.rects,\n floating: {\n ...state.rects.floating,\n height\n }\n }\n };\n}\n/**\n * Positions the floating element such that an inner element inside\n * of it is anchored to the reference element.\n * @see https://floating-ui.com/docs/inner\n */\nconst inner = props => ({\n name: 'inner',\n options: props,\n async fn(state) {\n const {\n listRef,\n overflowRef,\n onFallbackChange,\n offset: innerOffset = 0,\n index = 0,\n minItemsVisible = 4,\n referenceOverflowThreshold = 0,\n scrollRef,\n ...detectOverflowOptions\n } = props;\n const {\n rects,\n elements: {\n floating\n }\n } = state;\n const item = listRef.current[index];\n if (process.env.NODE_ENV !== \"production\") {\n if (!state.placement.startsWith('bottom')) {\n console.warn(['Floating UI: `placement` side must be \"bottom\" when using the', '`inner` middleware.'].join(' '));\n }\n }\n if (!item) {\n return {};\n }\n const nextArgs = {\n ...state,\n ...(await offset(-item.offsetTop - floating.clientTop - rects.reference.height / 2 - item.offsetHeight / 2 - innerOffset).fn(state))\n };\n const el = (scrollRef == null ? void 0 : scrollRef.current) || floating;\n const overflow = await detectOverflow(getArgsWithCustomFloatingHeight(nextArgs, el.scrollHeight), detectOverflowOptions);\n const refOverflow = await detectOverflow(nextArgs, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const diffY = Math.max(0, overflow.top);\n const nextY = nextArgs.y + diffY;\n const maxHeight = Math.max(0, el.scrollHeight - diffY - Math.max(0, overflow.bottom));\n el.style.maxHeight = maxHeight + \"px\";\n el.scrollTop = diffY;\n\n // There is not enough space, fallback to standard anchored positioning\n if (onFallbackChange) {\n if (el.offsetHeight < item.offsetHeight * Math.min(minItemsVisible, listRef.current.length - 1) - 1 || refOverflow.top >= -referenceOverflowThreshold || refOverflow.bottom >= -referenceOverflowThreshold) {\n flushSync(() => onFallbackChange(true));\n } else {\n flushSync(() => onFallbackChange(false));\n }\n }\n if (overflowRef) {\n overflowRef.current = await detectOverflow(getArgsWithCustomFloatingHeight({\n ...nextArgs,\n y: nextY\n }, el.offsetHeight), detectOverflowOptions);\n }\n return {\n y: nextY\n };\n }\n});\n/**\n * Changes the `inner` middleware's `offset` upon a `wheel` event to\n * expand the floating element's height, revealing more list items.\n * @see https://floating-ui.com/docs/inner\n */\nfunction useInnerOffset(context, props) {\n const {\n open,\n elements\n } = context;\n const {\n enabled = true,\n overflowRef,\n scrollRef,\n onChange: unstable_onChange\n } = props;\n const onChange = useEffectEvent(unstable_onChange);\n const controlledScrollingRef = React.useRef(false);\n const prevScrollTopRef = React.useRef(null);\n const initialOverflowRef = React.useRef(null);\n React.useEffect(() => {\n if (!enabled) {\n return;\n }\n function onWheel(e) {\n if (e.ctrlKey || !el || overflowRef.current == null) {\n return;\n }\n const dY = e.deltaY;\n const isAtTop = overflowRef.current.top >= -0.5;\n const isAtBottom = overflowRef.current.bottom >= -0.5;\n const remainingScroll = el.scrollHeight - el.clientHeight;\n const sign = dY < 0 ? -1 : 1;\n const method = dY < 0 ? 'max' : 'min';\n if (el.scrollHeight <= el.clientHeight) {\n return;\n }\n if (!isAtTop && dY > 0 || !isAtBottom && dY < 0) {\n e.preventDefault();\n flushSync(() => {\n onChange(d => d + Math[method](dY, remainingScroll * sign));\n });\n } else if (/firefox/i.test(getUserAgent())) {\n // Needed to propagate scrolling during momentum scrolling phase once\n // it gets limited by the boundary. UX improvement, not critical.\n el.scrollTop += dY;\n }\n }\n const el = (scrollRef == null ? void 0 : scrollRef.current) || elements.floating;\n if (open && el) {\n el.addEventListener('wheel', onWheel);\n\n // Wait for the position to be ready.\n requestAnimationFrame(() => {\n prevScrollTopRef.current = el.scrollTop;\n if (overflowRef.current != null) {\n initialOverflowRef.current = {\n ...overflowRef.current\n };\n }\n });\n return () => {\n prevScrollTopRef.current = null;\n initialOverflowRef.current = null;\n el.removeEventListener('wheel', onWheel);\n };\n }\n }, [enabled, open, elements.floating, overflowRef, scrollRef, onChange]);\n return React.useMemo(() => {\n if (!enabled) {\n return {};\n }\n return {\n floating: {\n onKeyDown() {\n controlledScrollingRef.current = true;\n },\n onWheel() {\n controlledScrollingRef.current = false;\n },\n onPointerMove() {\n controlledScrollingRef.current = false;\n },\n onScroll() {\n const el = (scrollRef == null ? void 0 : scrollRef.current) || elements.floating;\n if (!overflowRef.current || !el || !controlledScrollingRef.current) {\n return;\n }\n if (prevScrollTopRef.current !== null) {\n const scrollDiff = el.scrollTop - prevScrollTopRef.current;\n if (overflowRef.current.bottom < -0.5 && scrollDiff < -1 || overflowRef.current.top < -0.5 && scrollDiff > 1) {\n flushSync(() => onChange(d => d + scrollDiff));\n }\n }\n\n // [Firefox] Wait for the height change to have been applied.\n requestAnimationFrame(() => {\n prevScrollTopRef.current = el.scrollTop;\n });\n }\n }\n };\n }, [enabled, overflowRef, elements.floating, scrollRef, onChange]);\n}\n\nfunction isPointInPolygon(point, polygon) {\n const [x, y] = point;\n let isInside = false;\n const length = polygon.length;\n for (let i = 0, j = length - 1; i < length; j = i++) {\n const [xi, yi] = polygon[i] || [0, 0];\n const [xj, yj] = polygon[j] || [0, 0];\n const intersect = yi >= y !== yj >= y && x <= (xj - xi) * (y - yi) / (yj - yi) + xi;\n if (intersect) {\n isInside = !isInside;\n }\n }\n return isInside;\n}\nfunction isInside(point, rect) {\n return point[0] >= rect.x && point[0] <= rect.x + rect.width && point[1] >= rect.y && point[1] <= rect.y + rect.height;\n}\n/**\n * Generates a safe polygon area that the user can traverse without closing the\n * floating element once leaving the reference element.\n * @see https://floating-ui.com/docs/useHover#safePolygon\n */\nfunction safePolygon(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n buffer = 0.5,\n blockPointerEvents = false,\n requireIntent = true\n } = options;\n let timeoutId;\n let hasLanded = false;\n let lastX = null;\n let lastY = null;\n let lastCursorTime = performance.now();\n function getCursorSpeed(x, y) {\n const currentTime = performance.now();\n const elapsedTime = currentTime - lastCursorTime;\n if (lastX === null || lastY === null || elapsedTime === 0) {\n lastX = x;\n lastY = y;\n lastCursorTime = currentTime;\n return null;\n }\n const deltaX = x - lastX;\n const deltaY = y - lastY;\n const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n const speed = distance / elapsedTime; // px / ms\n\n lastX = x;\n lastY = y;\n lastCursorTime = currentTime;\n return speed;\n }\n const fn = _ref => {\n let {\n x,\n y,\n placement,\n elements,\n onClose,\n nodeId,\n tree\n } = _ref;\n return function onMouseMove(event) {\n function close() {\n clearTimeout(timeoutId);\n onClose();\n }\n clearTimeout(timeoutId);\n if (!elements.domReference || !elements.floating || placement == null || x == null || y == null) {\n return;\n }\n const {\n clientX,\n clientY\n } = event;\n const clientPoint = [clientX, clientY];\n const target = getTarget(event);\n const isLeave = event.type === 'mouseleave';\n const isOverFloatingEl = contains(elements.floating, target);\n const isOverReferenceEl = contains(elements.domReference, target);\n const refRect = elements.domReference.getBoundingClientRect();\n const rect = elements.floating.getBoundingClientRect();\n const side = placement.split('-')[0];\n const cursorLeaveFromRight = x > rect.right - rect.width / 2;\n const cursorLeaveFromBottom = y > rect.bottom - rect.height / 2;\n const isOverReferenceRect = isInside(clientPoint, refRect);\n const isFloatingWider = rect.width > refRect.width;\n const isFloatingTaller = rect.height > refRect.height;\n const left = (isFloatingWider ? refRect : rect).left;\n const right = (isFloatingWider ? refRect : rect).right;\n const top = (isFloatingTaller ? refRect : rect).top;\n const bottom = (isFloatingTaller ? refRect : rect).bottom;\n if (isOverFloatingEl) {\n hasLanded = true;\n if (!isLeave) {\n return;\n }\n }\n if (isOverReferenceEl) {\n hasLanded = false;\n }\n if (isOverReferenceEl && !isLeave) {\n hasLanded = true;\n return;\n }\n\n // Prevent overlapping floating element from being stuck in an open-close\n // loop: https://github.com/floating-ui/floating-ui/issues/1910\n if (isLeave && isElement(event.relatedTarget) && contains(elements.floating, event.relatedTarget)) {\n return;\n }\n\n // If any nested child is open, abort.\n if (tree && getChildren(tree.nodesRef.current, nodeId).some(_ref2 => {\n let {\n context\n } = _ref2;\n return context == null ? void 0 : context.open;\n })) {\n return;\n }\n\n // If the pointer is leaving from the opposite side, the \"buffer\" logic\n // creates a point where the floating element remains open, but should be\n // ignored.\n // A constant of 1 handles floating point rounding errors.\n if (side === 'top' && y >= refRect.bottom - 1 || side === 'bottom' && y <= refRect.top + 1 || side === 'left' && x >= refRect.right - 1 || side === 'right' && x <= refRect.left + 1) {\n return close();\n }\n\n // Ignore when the cursor is within the rectangular trough between the\n // two elements. Since the triangle is created from the cursor point,\n // which can start beyond the ref element's edge, traversing back and\n // forth from the ref to the floating element can cause it to close. This\n // ensures it always remains open in that case.\n let rectPoly = [];\n switch (side) {\n case 'top':\n rectPoly = [[left, refRect.top + 1], [left, rect.bottom - 1], [right, rect.bottom - 1], [right, refRect.top + 1]];\n break;\n case 'bottom':\n rectPoly = [[left, rect.top + 1], [left, refRect.bottom - 1], [right, refRect.bottom - 1], [right, rect.top + 1]];\n break;\n case 'left':\n rectPoly = [[rect.right - 1, bottom], [rect.right - 1, top], [refRect.left + 1, top], [refRect.left + 1, bottom]];\n break;\n case 'right':\n rectPoly = [[refRect.right - 1, bottom], [refRect.right - 1, top], [rect.left + 1, top], [rect.left + 1, bottom]];\n break;\n }\n function getPolygon(_ref3) {\n let [x, y] = _ref3;\n switch (side) {\n case 'top':\n {\n const cursorPointOne = [isFloatingWider ? x + buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y + buffer + 1];\n const cursorPointTwo = [isFloatingWider ? x - buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y + buffer + 1];\n const commonPoints = [[rect.left, cursorLeaveFromRight ? rect.bottom - buffer : isFloatingWider ? rect.bottom - buffer : rect.top], [rect.right, cursorLeaveFromRight ? isFloatingWider ? rect.bottom - buffer : rect.top : rect.bottom - buffer]];\n return [cursorPointOne, cursorPointTwo, ...commonPoints];\n }\n case 'bottom':\n {\n const cursorPointOne = [isFloatingWider ? x + buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y - buffer];\n const cursorPointTwo = [isFloatingWider ? x - buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y - buffer];\n const commonPoints = [[rect.left, cursorLeaveFromRight ? rect.top + buffer : isFloatingWider ? rect.top + buffer : rect.bottom], [rect.right, cursorLeaveFromRight ? isFloatingWider ? rect.top + buffer : rect.bottom : rect.top + buffer]];\n return [cursorPointOne, cursorPointTwo, ...commonPoints];\n }\n case 'left':\n {\n const cursorPointOne = [x + buffer + 1, isFloatingTaller ? y + buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n const cursorPointTwo = [x + buffer + 1, isFloatingTaller ? y - buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n const commonPoints = [[cursorLeaveFromBottom ? rect.right - buffer : isFloatingTaller ? rect.right - buffer : rect.left, rect.top], [cursorLeaveFromBottom ? isFloatingTaller ? rect.right - buffer : rect.left : rect.right - buffer, rect.bottom]];\n return [...commonPoints, cursorPointOne, cursorPointTwo];\n }\n case 'right':\n {\n const cursorPointOne = [x - buffer, isFloatingTaller ? y + buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n const cursorPointTwo = [x - buffer, isFloatingTaller ? y - buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n const commonPoints = [[cursorLeaveFromBottom ? rect.left + buffer : isFloatingTaller ? rect.left + buffer : rect.right, rect.top], [cursorLeaveFromBottom ? isFloatingTaller ? rect.left + buffer : rect.right : rect.left + buffer, rect.bottom]];\n return [cursorPointOne, cursorPointTwo, ...commonPoints];\n }\n }\n }\n if (isPointInPolygon([clientX, clientY], rectPoly)) {\n return;\n }\n if (hasLanded && !isOverReferenceRect) {\n return close();\n }\n if (!isLeave && requireIntent) {\n const cursorSpeed = getCursorSpeed(event.clientX, event.clientY);\n const cursorSpeedThreshold = 0.1;\n if (cursorSpeed !== null && cursorSpeed < cursorSpeedThreshold) {\n return close();\n }\n }\n if (!isPointInPolygon([clientX, clientY], getPolygon([x, y]))) {\n close();\n } else if (!hasLanded && requireIntent) {\n timeoutId = window.setTimeout(close, 40);\n }\n };\n };\n fn.__options = {\n blockPointerEvents\n };\n return fn;\n}\n\nexport { Composite, CompositeItem, FloatingArrow, FloatingDelayGroup, FloatingFocusManager, FloatingList, FloatingNode, FloatingOverlay, FloatingPortal, FloatingTree, inner, safePolygon, useClick, useClientPoint, useDelayGroup, useDelayGroupContext, useDismiss, useFloating, useFloatingNodeId, useFloatingParentNodeId, useFloatingPortalNode, useFloatingTree, useFocus, useHover, useId, useInnerOffset, useInteractions, useListItem, useListNavigation, useMergeRefs, useRole, useTransitionStatus, useTransitionStyles, useTypeahead };\n","function _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\nexport { _assertThisInitialized as default };","function _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nexport { _classCallCheck as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n writable: !1\n }), e;\n}\nexport { _createClass as default };","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function _getPrototypeOf(t) {\n return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n return t.__proto__ || Object.getPrototypeOf(t);\n }, _getPrototypeOf(t);\n}\nexport { _getPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inherits(t, e) {\n if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n t.prototype = Object.create(e && e.prototype, {\n constructor: {\n value: t,\n writable: !0,\n configurable: !0\n }\n }), Object.defineProperty(t, \"prototype\", {\n writable: !1\n }), e && setPrototypeOf(t, e);\n}\nexport { _inherits as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","import defineProperty from \"./defineProperty.js\";\nfunction _objectSpread(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? Object(arguments[r]) : {},\n o = Object.keys(t);\n \"function\" == typeof Object.getOwnPropertySymbols && o.push.apply(o, Object.getOwnPropertySymbols(t).filter(function (e) {\n return Object.getOwnPropertyDescriptor(t, e).enumerable;\n })), o.forEach(function (r) {\n defineProperty(e, r, t[r]);\n });\n }\n return e;\n}\nexport { _objectSpread as default };","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var s = Object.getOwnPropertySymbols(e);\n for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nexport { _objectWithoutProperties as default };","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (e.includes(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nfunction _possibleConstructorReturn(t, e) {\n if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e;\n if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");\n return assertThisInitialized(t);\n}\nexport { _possibleConstructorReturn as default };","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","import { rectToClientRect, detectOverflow as detectOverflow$1, offset as offset$1, autoPlacement as autoPlacement$1, shift as shift$1, flip as flip$1, size as size$1, hide as hide$1, arrow as arrow$1, inline as inline$1, limitShift as limitShift$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getNodeScroll, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n ...clippingAncestor,\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n let htmlX = 0;\n let htmlY = 0;\n if (documentElement && !isOffsetParentAnElement && !isFixed) {\n const htmlRect = documentElement.getBoundingClientRect();\n htmlY = htmlRect.top + scroll.scrollTop;\n htmlX = htmlRect.left + scroll.scrollLeft -\n // RTL <body> scrollbar.\n getWindowScrollBarX(documentElement, htmlRect);\n }\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlX;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlY;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the <html> element as the offsetParent if it's non-static,\n // while Chrome and Safari return the <body> element. The <body> element must\n // be used to perform the correct calculations even if the <html> element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const {\n left,\n top,\n width,\n height\n } = element.getBoundingClientRect();\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle <iframe>s\n root: root.ownerDocument\n });\n } catch (e) {\n io = new IntersectionObserver(handleObserve, options);\n }\n io.observe(element);\n }\n refresh(true);\n return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll = true,\n ancestorResize = true,\n elementResize = typeof ResizeObserver === 'function',\n layoutShift = typeof IntersectionObserver === 'function',\n animationFrame = false\n } = options;\n const referenceEl = unwrapElement(reference);\n const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n let reobserveFrame = -1;\n let resizeObserver = null;\n if (elementResize) {\n resizeObserver = new ResizeObserver(_ref => {\n let [firstEntry] = _ref;\n if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n // Prevent update loops when using the `size` middleware.\n // https://github.com/floating-ui/floating-ui/issues/1740\n resizeObserver.unobserve(floating);\n cancelAnimationFrame(reobserveFrame);\n reobserveFrame = requestAnimationFrame(() => {\n var _resizeObserver;\n (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n });\n }\n update();\n });\n if (referenceEl && !animationFrame) {\n resizeObserver.observe(referenceEl);\n }\n resizeObserver.observe(floating);\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n var _resizeObserver2;\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n cleanupIo == null || cleanupIo();\n (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n resizeObserver = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = {\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","import { computePosition, arrow as arrow$2, offset as offset$1, shift as shift$1, limitShift as limitShift$1, flip as flip$1, size as size$1, autoPlacement as autoPlacement$1, hide as hide$1, inline as inline$1 } from '@floating-ui/dom';\nexport { autoUpdate, computePosition, detectOverflow, getOverflowAncestors, platform } from '@floating-ui/dom';\nimport * as React from 'react';\nimport { useLayoutEffect, useEffect } from 'react';\nimport * as ReactDOM from 'react-dom';\n\nvar index = typeof document !== 'undefined' ? useLayoutEffect : useEffect;\n\n// Fork of `fast-deep-equal` that only does the comparisons we need and compares\n// functions\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (typeof a === 'function' && a.toString() === b.toString()) {\n return true;\n }\n let length;\n let i;\n let keys;\n if (a && b && typeof a === 'object') {\n if (Array.isArray(a)) {\n length = a.length;\n if (length !== b.length) return false;\n for (i = length; i-- !== 0;) {\n if (!deepEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) {\n return false;\n }\n for (i = length; i-- !== 0;) {\n if (!{}.hasOwnProperty.call(b, keys[i])) {\n return false;\n }\n }\n for (i = length; i-- !== 0;) {\n const key = keys[i];\n if (key === '_owner' && a.$$typeof) {\n continue;\n }\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n return a !== a && b !== b;\n}\n\nfunction getDPR(element) {\n if (typeof window === 'undefined') {\n return 1;\n }\n const win = element.ownerDocument.defaultView || window;\n return win.devicePixelRatio || 1;\n}\n\nfunction roundByDPR(element, value) {\n const dpr = getDPR(element);\n return Math.round(value * dpr) / dpr;\n}\n\nfunction useLatestRef(value) {\n const ref = React.useRef(value);\n index(() => {\n ref.current = value;\n });\n return ref;\n}\n\n/**\n * Provides data to position a floating element.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform,\n elements: {\n reference: externalReference,\n floating: externalFloating\n } = {},\n transform = true,\n whileElementsMounted,\n open\n } = options;\n const [data, setData] = React.useState({\n x: 0,\n y: 0,\n strategy,\n placement,\n middlewareData: {},\n isPositioned: false\n });\n const [latestMiddleware, setLatestMiddleware] = React.useState(middleware);\n if (!deepEqual(latestMiddleware, middleware)) {\n setLatestMiddleware(middleware);\n }\n const [_reference, _setReference] = React.useState(null);\n const [_floating, _setFloating] = React.useState(null);\n const setReference = React.useCallback(node => {\n if (node !== referenceRef.current) {\n referenceRef.current = node;\n _setReference(node);\n }\n }, []);\n const setFloating = React.useCallback(node => {\n if (node !== floatingRef.current) {\n floatingRef.current = node;\n _setFloating(node);\n }\n }, []);\n const referenceEl = externalReference || _reference;\n const floatingEl = externalFloating || _floating;\n const referenceRef = React.useRef(null);\n const floatingRef = React.useRef(null);\n const dataRef = React.useRef(data);\n const hasWhileElementsMounted = whileElementsMounted != null;\n const whileElementsMountedRef = useLatestRef(whileElementsMounted);\n const platformRef = useLatestRef(platform);\n const openRef = useLatestRef(open);\n const update = React.useCallback(() => {\n if (!referenceRef.current || !floatingRef.current) {\n return;\n }\n const config = {\n placement,\n strategy,\n middleware: latestMiddleware\n };\n if (platformRef.current) {\n config.platform = platformRef.current;\n }\n computePosition(referenceRef.current, floatingRef.current, config).then(data => {\n const fullData = {\n ...data,\n // The floating element's position may be recomputed while it's closed\n // but still mounted (such as when transitioning out). To ensure\n // `isPositioned` will be `false` initially on the next open, avoid\n // setting it to `true` when `open === false` (must be specified).\n isPositioned: openRef.current !== false\n };\n if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {\n dataRef.current = fullData;\n ReactDOM.flushSync(() => {\n setData(fullData);\n });\n }\n });\n }, [latestMiddleware, placement, strategy, platformRef, openRef]);\n index(() => {\n if (open === false && dataRef.current.isPositioned) {\n dataRef.current.isPositioned = false;\n setData(data => ({\n ...data,\n isPositioned: false\n }));\n }\n }, [open]);\n const isMountedRef = React.useRef(false);\n index(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n index(() => {\n if (referenceEl) referenceRef.current = referenceEl;\n if (floatingEl) floatingRef.current = floatingEl;\n if (referenceEl && floatingEl) {\n if (whileElementsMountedRef.current) {\n return whileElementsMountedRef.current(referenceEl, floatingEl, update);\n }\n update();\n }\n }, [referenceEl, floatingEl, update, whileElementsMountedRef, hasWhileElementsMounted]);\n const refs = React.useMemo(() => ({\n reference: referenceRef,\n floating: floatingRef,\n setReference,\n setFloating\n }), [setReference, setFloating]);\n const elements = React.useMemo(() => ({\n reference: referenceEl,\n floating: floatingEl\n }), [referenceEl, floatingEl]);\n const floatingStyles = React.useMemo(() => {\n const initialStyles = {\n position: strategy,\n left: 0,\n top: 0\n };\n if (!elements.floating) {\n return initialStyles;\n }\n const x = roundByDPR(elements.floating, data.x);\n const y = roundByDPR(elements.floating, data.y);\n if (transform) {\n return {\n ...initialStyles,\n transform: \"translate(\" + x + \"px, \" + y + \"px)\",\n ...(getDPR(elements.floating) >= 1.5 && {\n willChange: 'transform'\n })\n };\n }\n return {\n position: strategy,\n left: x,\n top: y\n };\n }, [strategy, transform, elements.floating, data.x, data.y]);\n return React.useMemo(() => ({\n ...data,\n update,\n refs,\n elements,\n floatingStyles\n }), [data, update, refs, elements, floatingStyles]);\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow$1 = options => {\n function isRef(value) {\n return {}.hasOwnProperty.call(value, 'current');\n }\n return {\n name: 'arrow',\n options,\n fn(state) {\n const {\n element,\n padding\n } = typeof options === 'function' ? options(state) : options;\n if (element && isRef(element)) {\n if (element.current != null) {\n return arrow$2({\n element: element.current,\n padding\n }).fn(state);\n }\n return {};\n }\n if (element) {\n return arrow$2({\n element,\n padding\n }).fn(state);\n }\n return {};\n }\n };\n};\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = (options, deps) => ({\n ...offset$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = (options, deps) => ({\n ...shift$1(options),\n options: [options, deps]\n});\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = (options, deps) => ({\n ...limitShift$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = (options, deps) => ({\n ...flip$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = (options, deps) => ({\n ...size$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = (options, deps) => ({\n ...autoPlacement$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = (options, deps) => ({\n ...hide$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = (options, deps) => ({\n ...inline$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = (options, deps) => ({\n ...arrow$1(options),\n options: [options, deps]\n});\n\nexport { arrow, autoPlacement, flip, hide, inline, limitShift, offset, shift, size, useFloating };\n","function hasWindow() {\n return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isTopLayer(element) {\n return [':popover-open', ':modal'].some(selector => {\n try {\n return element.matches(selector);\n } catch (e) {\n return false;\n }\n });\n}\nfunction isContainingBlock(elementOrCss) {\n const webkit = isWebKit();\n const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n return css.transform !== 'none' || css.perspective !== 'none' || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else if (isTopLayer(currentNode)) {\n return null;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.scrollX,\n scrollTop: element.scrollY\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n const frameElement = getFrameElement(win);\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","// https://nodejs.org/api/packages.html#packages_writing_dual_packages_while_avoiding_or_minimizing_hazards\nimport HighlightJS from '../lib/core.js';\nexport { HighlightJS };\nexport default HighlightJS;\n","const t=t=>\"object\"==typeof t&&null!=t&&1===t.nodeType,e=(t,e)=>(!e||\"hidden\"!==t)&&(\"visible\"!==t&&\"clip\"!==t),n=(t,n)=>{if(t.clientHeight<t.scrollHeight||t.clientWidth<t.scrollWidth){const o=getComputedStyle(t,null);return e(o.overflowY,n)||e(o.overflowX,n)||(t=>{const e=(t=>{if(!t.ownerDocument||!t.ownerDocument.defaultView)return null;try{return t.ownerDocument.defaultView.frameElement}catch(t){return null}})(t);return!!e&&(e.clientHeight<t.scrollHeight||e.clientWidth<t.scrollWidth)})(t)}return!1},o=(t,e,n,o,l,r,i,s)=>r<t&&i>e||r>t&&i<e?0:r<=t&&s<=n||i>=e&&s>=n?r-t-o:i>e&&s<n||r<t&&s>n?i-e+l:0,l=t=>{const e=t.parentElement;return null==e?t.getRootNode().host||null:e},r=(e,r)=>{var i,s,d,h;if(\"undefined\"==typeof document)return[];const{scrollMode:c,block:f,inline:u,boundary:a,skipOverflowHiddenElements:g}=r,p=\"function\"==typeof a?a:t=>t!==a;if(!t(e))throw new TypeError(\"Invalid target\");const m=document.scrollingElement||document.documentElement,w=[];let W=e;for(;t(W)&&p(W);){if(W=l(W),W===m){w.push(W);break}null!=W&&W===document.body&&n(W)&&!n(document.documentElement)||null!=W&&n(W,g)&&w.push(W)}const b=null!=(s=null==(i=window.visualViewport)?void 0:i.width)?s:innerWidth,H=null!=(h=null==(d=window.visualViewport)?void 0:d.height)?h:innerHeight,{scrollX:y,scrollY:M}=window,{height:v,width:E,top:x,right:C,bottom:I,left:R}=e.getBoundingClientRect(),{top:T,right:B,bottom:F,left:V}=(t=>{const e=window.getComputedStyle(t);return{top:parseFloat(e.scrollMarginTop)||0,right:parseFloat(e.scrollMarginRight)||0,bottom:parseFloat(e.scrollMarginBottom)||0,left:parseFloat(e.scrollMarginLeft)||0}})(e);let k=\"start\"===f||\"nearest\"===f?x-T:\"end\"===f?I+F:x+v/2-T+F,D=\"center\"===u?R+E/2-V+B:\"end\"===u?C+B:R-V;const L=[];for(let t=0;t<w.length;t++){const e=w[t],{height:n,width:l,top:r,right:i,bottom:s,left:d}=e.getBoundingClientRect();if(\"if-needed\"===c&&x>=0&&R>=0&&I<=H&&C<=b&&x>=r&&I<=s&&R>=d&&C<=i)return L;const h=getComputedStyle(e),a=parseInt(h.borderLeftWidth,10),g=parseInt(h.borderTopWidth,10),p=parseInt(h.borderRightWidth,10),W=parseInt(h.borderBottomWidth,10);let T=0,B=0;const F=\"offsetWidth\"in e?e.offsetWidth-e.clientWidth-a-p:0,V=\"offsetHeight\"in e?e.offsetHeight-e.clientHeight-g-W:0,S=\"offsetWidth\"in e?0===e.offsetWidth?0:l/e.offsetWidth:0,X=\"offsetHeight\"in e?0===e.offsetHeight?0:n/e.offsetHeight:0;if(m===e)T=\"start\"===f?k:\"end\"===f?k-H:\"nearest\"===f?o(M,M+H,H,g,W,M+k,M+k+v,v):k-H/2,B=\"start\"===u?D:\"center\"===u?D-b/2:\"end\"===u?D-b:o(y,y+b,b,a,p,y+D,y+D+E,E),T=Math.max(0,T+M),B=Math.max(0,B+y);else{T=\"start\"===f?k-r-g:\"end\"===f?k-s+W+V:\"nearest\"===f?o(r,s,n,g,W+V,k,k+v,v):k-(r+n/2)+V/2,B=\"start\"===u?D-d-a:\"center\"===u?D-(d+l/2)+F/2:\"end\"===u?D-i+p+F:o(d,i,l,a,p+F,D,D+E,E);const{scrollLeft:t,scrollTop:h}=e;T=0===X?0:Math.max(0,Math.min(h+T/X,e.scrollHeight-n/X+V)),B=0===S?0:Math.max(0,Math.min(t+B/S,e.scrollWidth-l/S+F)),k+=h-T,D+=t-B}L.push({el:e,top:T,left:B})}return L};export{r as compute};//# sourceMappingURL=index.js.map\n","import{compute as t}from\"compute-scroll-into-view\";const o=t=>!1===t?{block:\"end\",inline:\"nearest\"}:(t=>t===Object(t)&&0!==Object.keys(t).length)(t)?t:{block:\"start\",inline:\"nearest\"};function e(e,r){if(!e.isConnected||!(t=>{let o=t;for(;o&&o.parentNode;){if(o.parentNode===document)return!0;o=o.parentNode instanceof ShadowRoot?o.parentNode.host:o.parentNode}return!1})(e))return;const n=(t=>{const o=window.getComputedStyle(t);return{top:parseFloat(o.scrollMarginTop)||0,right:parseFloat(o.scrollMarginRight)||0,bottom:parseFloat(o.scrollMarginBottom)||0,left:parseFloat(o.scrollMarginLeft)||0}})(e);if((t=>\"object\"==typeof t&&\"function\"==typeof t.behavior)(r))return r.behavior(t(e,r));const l=\"boolean\"==typeof r||null==r?void 0:r.behavior;for(const{el:a,top:i,left:s}of t(e,o(r))){const t=i-n.top+n.bottom,o=s-n.left+n.right;a.scroll({top:t,left:o,behavior:l})}}export{e as default};//# sourceMappingURL=index.js.map\n","import e from\"scroll-into-view-if-needed\";let o;const t=()=>(o||(o=\"performance\"in window?performance.now.bind(performance):Date.now),o());function l(e){const o=t(),n=Math.min((o-e.startTime)/e.duration,1),r=e.ease(n),s=e.startX+(e.x-e.startX)*r,i=e.startY+(e.y-e.startY)*r;e.method(s,i,n,r),s!==e.x||i!==e.y?requestAnimationFrame((()=>l(e))):e.cb()}function n(e,o,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:600,s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:e=>1+--e*e*e*e*e,i=arguments.length>5?arguments[5]:void 0,a=arguments.length>6?arguments[6]:void 0;const c=e,d=e.scrollLeft,m=e.scrollTop;l({scrollable:c,method:(o,t,l,n)=>{const r=Math.ceil(o),s=Math.ceil(t);e.scrollLeft=r,e.scrollTop=s,null==a||a({target:e,elapsed:l,value:n,left:r,top:s})},startTime:t(),startX:d,startY:m,x:o,y:n,duration:r,ease:s,cb:i})}const r=e=>e&&!e.behavior||\"smooth\"===e.behavior;const s=function(o,t){const l=t||{};return r(l)?e(o,{block:l.block,inline:l.inline,scrollMode:l.scrollMode,boundary:l.boundary,skipOverflowHiddenElements:l.skipOverflowHiddenElements,behavior:e=>Promise.all(e.reduce(((e,o)=>{let{el:t,left:r,top:s}=o;const i=t.scrollLeft,a=t.scrollTop;return i===r&&a===s?e:[...e,new Promise((e=>n(t,r,s,l.duration,l.ease,(()=>e({el:t,left:[i,r],top:[a,s]})),l.onScrollChange)))]}),[]))}):Promise.resolve(e(o,t))};export{s as default};//# sourceMappingURL=index.js.map\n","// This file is autogenerated. It's used to publish ESM to npm.\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\n// https://github.com/bgrins/TinyColor\n// Brian Grinstead, MIT License\n\nvar trimLeft = /^\\s+/;\nvar trimRight = /\\s+$/;\nfunction tinycolor(color, opts) {\n color = color ? color : \"\";\n opts = opts || {};\n\n // If input is already a tinycolor, return itself\n if (color instanceof tinycolor) {\n return color;\n }\n // If we are called as a function, call using new instead\n if (!(this instanceof tinycolor)) {\n return new tinycolor(color, opts);\n }\n var rgb = inputToRGB(color);\n this._originalInput = color, this._r = rgb.r, this._g = rgb.g, this._b = rgb.b, this._a = rgb.a, this._roundA = Math.round(100 * this._a) / 100, this._format = opts.format || rgb.format;\n this._gradientType = opts.gradientType;\n\n // Don't let the range of [0,255] come back in [0,1].\n // Potentially lose a little bit of precision here, but will fix issues where\n // .5 gets interpreted as half of the total, instead of half of 1\n // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n if (this._r < 1) this._r = Math.round(this._r);\n if (this._g < 1) this._g = Math.round(this._g);\n if (this._b < 1) this._b = Math.round(this._b);\n this._ok = rgb.ok;\n}\ntinycolor.prototype = {\n isDark: function isDark() {\n return this.getBrightness() < 128;\n },\n isLight: function isLight() {\n return !this.isDark();\n },\n isValid: function isValid() {\n return this._ok;\n },\n getOriginalInput: function getOriginalInput() {\n return this._originalInput;\n },\n getFormat: function getFormat() {\n return this._format;\n },\n getAlpha: function getAlpha() {\n return this._a;\n },\n getBrightness: function getBrightness() {\n //http://www.w3.org/TR/AERT#color-contrast\n var rgb = this.toRgb();\n return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n },\n getLuminance: function getLuminance() {\n //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n var rgb = this.toRgb();\n var RsRGB, GsRGB, BsRGB, R, G, B;\n RsRGB = rgb.r / 255;\n GsRGB = rgb.g / 255;\n BsRGB = rgb.b / 255;\n if (RsRGB <= 0.03928) R = RsRGB / 12.92;else R = Math.pow((RsRGB + 0.055) / 1.055, 2.4);\n if (GsRGB <= 0.03928) G = GsRGB / 12.92;else G = Math.pow((GsRGB + 0.055) / 1.055, 2.4);\n if (BsRGB <= 0.03928) B = BsRGB / 12.92;else B = Math.pow((BsRGB + 0.055) / 1.055, 2.4);\n return 0.2126 * R + 0.7152 * G + 0.0722 * B;\n },\n setAlpha: function setAlpha(value) {\n this._a = boundAlpha(value);\n this._roundA = Math.round(100 * this._a) / 100;\n return this;\n },\n toHsv: function toHsv() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n return {\n h: hsv.h * 360,\n s: hsv.s,\n v: hsv.v,\n a: this._a\n };\n },\n toHsvString: function toHsvString() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n var h = Math.round(hsv.h * 360),\n s = Math.round(hsv.s * 100),\n v = Math.round(hsv.v * 100);\n return this._a == 1 ? \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\" : \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \" + this._roundA + \")\";\n },\n toHsl: function toHsl() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n return {\n h: hsl.h * 360,\n s: hsl.s,\n l: hsl.l,\n a: this._a\n };\n },\n toHslString: function toHslString() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n var h = Math.round(hsl.h * 360),\n s = Math.round(hsl.s * 100),\n l = Math.round(hsl.l * 100);\n return this._a == 1 ? \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\" : \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \" + this._roundA + \")\";\n },\n toHex: function toHex(allow3Char) {\n return rgbToHex(this._r, this._g, this._b, allow3Char);\n },\n toHexString: function toHexString(allow3Char) {\n return \"#\" + this.toHex(allow3Char);\n },\n toHex8: function toHex8(allow4Char) {\n return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n },\n toHex8String: function toHex8String(allow4Char) {\n return \"#\" + this.toHex8(allow4Char);\n },\n toRgb: function toRgb() {\n return {\n r: Math.round(this._r),\n g: Math.round(this._g),\n b: Math.round(this._b),\n a: this._a\n };\n },\n toRgbString: function toRgbString() {\n return this._a == 1 ? \"rgb(\" + Math.round(this._r) + \", \" + Math.round(this._g) + \", \" + Math.round(this._b) + \")\" : \"rgba(\" + Math.round(this._r) + \", \" + Math.round(this._g) + \", \" + Math.round(this._b) + \", \" + this._roundA + \")\";\n },\n toPercentageRgb: function toPercentageRgb() {\n return {\n r: Math.round(bound01(this._r, 255) * 100) + \"%\",\n g: Math.round(bound01(this._g, 255) * 100) + \"%\",\n b: Math.round(bound01(this._b, 255) * 100) + \"%\",\n a: this._a\n };\n },\n toPercentageRgbString: function toPercentageRgbString() {\n return this._a == 1 ? \"rgb(\" + Math.round(bound01(this._r, 255) * 100) + \"%, \" + Math.round(bound01(this._g, 255) * 100) + \"%, \" + Math.round(bound01(this._b, 255) * 100) + \"%)\" : \"rgba(\" + Math.round(bound01(this._r, 255) * 100) + \"%, \" + Math.round(bound01(this._g, 255) * 100) + \"%, \" + Math.round(bound01(this._b, 255) * 100) + \"%, \" + this._roundA + \")\";\n },\n toName: function toName() {\n if (this._a === 0) {\n return \"transparent\";\n }\n if (this._a < 1) {\n return false;\n }\n return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n },\n toFilter: function toFilter(secondColor) {\n var hex8String = \"#\" + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n var secondHex8String = hex8String;\n var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n if (secondColor) {\n var s = tinycolor(secondColor);\n secondHex8String = \"#\" + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n }\n return \"progid:DXImageTransform.Microsoft.gradient(\" + gradientType + \"startColorstr=\" + hex8String + \",endColorstr=\" + secondHex8String + \")\";\n },\n toString: function toString(format) {\n var formatSet = !!format;\n format = format || this._format;\n var formattedString = false;\n var hasAlpha = this._a < 1 && this._a >= 0;\n var needsAlphaFormat = !formatSet && hasAlpha && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"hex4\" || format === \"hex8\" || format === \"name\");\n if (needsAlphaFormat) {\n // Special case for \"transparent\", all other non-alpha formats\n // will return rgba when there is transparency.\n if (format === \"name\" && this._a === 0) {\n return this.toName();\n }\n return this.toRgbString();\n }\n if (format === \"rgb\") {\n formattedString = this.toRgbString();\n }\n if (format === \"prgb\") {\n formattedString = this.toPercentageRgbString();\n }\n if (format === \"hex\" || format === \"hex6\") {\n formattedString = this.toHexString();\n }\n if (format === \"hex3\") {\n formattedString = this.toHexString(true);\n }\n if (format === \"hex4\") {\n formattedString = this.toHex8String(true);\n }\n if (format === \"hex8\") {\n formattedString = this.toHex8String();\n }\n if (format === \"name\") {\n formattedString = this.toName();\n }\n if (format === \"hsl\") {\n formattedString = this.toHslString();\n }\n if (format === \"hsv\") {\n formattedString = this.toHsvString();\n }\n return formattedString || this.toHexString();\n },\n clone: function clone() {\n return tinycolor(this.toString());\n },\n _applyModification: function _applyModification(fn, args) {\n var color = fn.apply(null, [this].concat([].slice.call(args)));\n this._r = color._r;\n this._g = color._g;\n this._b = color._b;\n this.setAlpha(color._a);\n return this;\n },\n lighten: function lighten() {\n return this._applyModification(_lighten, arguments);\n },\n brighten: function brighten() {\n return this._applyModification(_brighten, arguments);\n },\n darken: function darken() {\n return this._applyModification(_darken, arguments);\n },\n desaturate: function desaturate() {\n return this._applyModification(_desaturate, arguments);\n },\n saturate: function saturate() {\n return this._applyModification(_saturate, arguments);\n },\n greyscale: function greyscale() {\n return this._applyModification(_greyscale, arguments);\n },\n spin: function spin() {\n return this._applyModification(_spin, arguments);\n },\n _applyCombination: function _applyCombination(fn, args) {\n return fn.apply(null, [this].concat([].slice.call(args)));\n },\n analogous: function analogous() {\n return this._applyCombination(_analogous, arguments);\n },\n complement: function complement() {\n return this._applyCombination(_complement, arguments);\n },\n monochromatic: function monochromatic() {\n return this._applyCombination(_monochromatic, arguments);\n },\n splitcomplement: function splitcomplement() {\n return this._applyCombination(_splitcomplement, arguments);\n },\n // Disabled until https://github.com/bgrins/TinyColor/issues/254\n // polyad: function (number) {\n // return this._applyCombination(polyad, [number]);\n // },\n triad: function triad() {\n return this._applyCombination(polyad, [3]);\n },\n tetrad: function tetrad() {\n return this._applyCombination(polyad, [4]);\n }\n};\n\n// If input is an object, force 1 into \"1.0\" to handle ratios properly\n// String input requires \"1.0\" as input, so 1 will be treated as 1\ntinycolor.fromRatio = function (color, opts) {\n if (_typeof(color) == \"object\") {\n var newColor = {};\n for (var i in color) {\n if (color.hasOwnProperty(i)) {\n if (i === \"a\") {\n newColor[i] = color[i];\n } else {\n newColor[i] = convertToPercentage(color[i]);\n }\n }\n }\n color = newColor;\n }\n return tinycolor(color, opts);\n};\n\n// Given a string or object, convert that input to RGB\n// Possible string inputs:\n//\n// \"red\"\n// \"#f00\" or \"f00\"\n// \"#ff0000\" or \"ff0000\"\n// \"#ff000000\" or \"ff000000\"\n// \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n// \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n// \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n// \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n// \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n// \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n// \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n//\nfunction inputToRGB(color) {\n var rgb = {\n r: 0,\n g: 0,\n b: 0\n };\n var a = 1;\n var s = null;\n var v = null;\n var l = null;\n var ok = false;\n var format = false;\n if (typeof color == \"string\") {\n color = stringInputToObject(color);\n }\n if (_typeof(color) == \"object\") {\n if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n s = convertToPercentage(color.s);\n v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, s, v);\n ok = true;\n format = \"hsv\";\n } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n s = convertToPercentage(color.s);\n l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, s, l);\n ok = true;\n format = \"hsl\";\n }\n if (color.hasOwnProperty(\"a\")) {\n a = color.a;\n }\n }\n a = boundAlpha(a);\n return {\n ok: ok,\n format: color.format || format,\n r: Math.min(255, Math.max(rgb.r, 0)),\n g: Math.min(255, Math.max(rgb.g, 0)),\n b: Math.min(255, Math.max(rgb.b, 0)),\n a: a\n };\n}\n\n// Conversion Functions\n// --------------------\n\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>\n\n// `rgbToRgb`\n// Handle bounds / percentage checking to conform to CSS color spec\n// <http://www.w3.org/TR/css3-color/>\n// *Assumes:* r, g, b in [0, 255] or [0, 1]\n// *Returns:* { r, g, b } in [0, 255]\nfunction rgbToRgb(r, g, b) {\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255\n };\n}\n\n// `rgbToHsl`\n// Converts an RGB color value to HSL.\n// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n// *Returns:* { h, s, l } in [0,1]\nfunction rgbToHsl(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b),\n min = Math.min(r, g, b);\n var h,\n s,\n l = (max + min) / 2;\n if (max == min) {\n h = s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return {\n h: h,\n s: s,\n l: l\n };\n}\n\n// `hslToRgb`\n// Converts an HSL color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hslToRgb(h, s, l) {\n var r, g, b;\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n return {\n r: r * 255,\n g: g * 255,\n b: b * 255\n };\n}\n\n// `rgbToHsv`\n// Converts an RGB color value to HSV\n// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n// *Returns:* { h, s, v } in [0,1]\nfunction rgbToHsv(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b),\n min = Math.min(r, g, b);\n var h,\n s,\n v = max;\n var d = max - min;\n s = max === 0 ? 0 : d / max;\n if (max == min) {\n h = 0; // achromatic\n } else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return {\n h: h,\n s: s,\n v: v\n };\n}\n\n// `hsvToRgb`\n// Converts an HSV color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hsvToRgb(h, s, v) {\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n var i = Math.floor(h),\n f = h - i,\n p = v * (1 - s),\n q = v * (1 - f * s),\n t = v * (1 - (1 - f) * s),\n mod = i % 6,\n r = [v, q, p, p, t, v][mod],\n g = [t, v, v, q, p, p][mod],\n b = [p, p, t, v, v, q][mod];\n return {\n r: r * 255,\n g: g * 255,\n b: b * 255\n };\n}\n\n// `rgbToHex`\n// Converts an RGB color to hex\n// Assumes r, g, and b are contained in the set [0, 255]\n// Returns a 3 or 6 character hex\nfunction rgbToHex(r, g, b, allow3Char) {\n var hex = [pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16))];\n\n // Return a 3 character hex if possible\n if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n return hex.join(\"\");\n}\n\n// `rgbaToHex`\n// Converts an RGBA color plus alpha transparency to hex\n// Assumes r, g, b are contained in the set [0, 255] and\n// a in [0, 1]. Returns a 4 or 8 character rgba hex\nfunction rgbaToHex(r, g, b, a, allow4Char) {\n var hex = [pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16)), pad2(convertDecimalToHex(a))];\n\n // Return a 4 character hex if possible\n if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n }\n return hex.join(\"\");\n}\n\n// `rgbaToArgbHex`\n// Converts an RGBA color to an ARGB Hex8 string\n// Rarely used, but required for \"toFilter()\"\nfunction rgbaToArgbHex(r, g, b, a) {\n var hex = [pad2(convertDecimalToHex(a)), pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16))];\n return hex.join(\"\");\n}\n\n// `equals`\n// Can be called with any tinycolor input\ntinycolor.equals = function (color1, color2) {\n if (!color1 || !color2) return false;\n return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n};\ntinycolor.random = function () {\n return tinycolor.fromRatio({\n r: Math.random(),\n g: Math.random(),\n b: Math.random()\n });\n};\n\n// Modification Functions\n// ----------------------\n// Thanks to less.js for some of the basics here\n// <https://github.com/cloudhead/less.js/blob/master/lib/less/functions.js>\n\nfunction _desaturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s -= amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\nfunction _saturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s += amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\nfunction _greyscale(color) {\n return tinycolor(color).desaturate(100);\n}\nfunction _lighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l += amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\nfunction _brighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var rgb = tinycolor(color).toRgb();\n rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100))));\n rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100))));\n rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100))));\n return tinycolor(rgb);\n}\nfunction _darken(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l -= amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\n\n// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n// Values outside of this range will be wrapped into this range.\nfunction _spin(color, amount) {\n var hsl = tinycolor(color).toHsl();\n var hue = (hsl.h + amount) % 360;\n hsl.h = hue < 0 ? 360 + hue : hue;\n return tinycolor(hsl);\n}\n\n// Combination Functions\n// ---------------------\n// Thanks to jQuery xColor for some of the ideas behind these\n// <https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js>\n\nfunction _complement(color) {\n var hsl = tinycolor(color).toHsl();\n hsl.h = (hsl.h + 180) % 360;\n return tinycolor(hsl);\n}\nfunction polyad(color, number) {\n if (isNaN(number) || number <= 0) {\n throw new Error(\"Argument to polyad must be a positive number\");\n }\n var hsl = tinycolor(color).toHsl();\n var result = [tinycolor(color)];\n var step = 360 / number;\n for (var i = 1; i < number; i++) {\n result.push(tinycolor({\n h: (hsl.h + i * step) % 360,\n s: hsl.s,\n l: hsl.l\n }));\n }\n return result;\n}\nfunction _splitcomplement(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [tinycolor(color), tinycolor({\n h: (h + 72) % 360,\n s: hsl.s,\n l: hsl.l\n }), tinycolor({\n h: (h + 216) % 360,\n s: hsl.s,\n l: hsl.l\n })];\n}\nfunction _analogous(color, results, slices) {\n results = results || 6;\n slices = slices || 30;\n var hsl = tinycolor(color).toHsl();\n var part = 360 / slices;\n var ret = [tinycolor(color)];\n for (hsl.h = (hsl.h - (part * results >> 1) + 720) % 360; --results;) {\n hsl.h = (hsl.h + part) % 360;\n ret.push(tinycolor(hsl));\n }\n return ret;\n}\nfunction _monochromatic(color, results) {\n results = results || 6;\n var hsv = tinycolor(color).toHsv();\n var h = hsv.h,\n s = hsv.s,\n v = hsv.v;\n var ret = [];\n var modification = 1 / results;\n while (results--) {\n ret.push(tinycolor({\n h: h,\n s: s,\n v: v\n }));\n v = (v + modification) % 1;\n }\n return ret;\n}\n\n// Utility Functions\n// ---------------------\n\ntinycolor.mix = function (color1, color2, amount) {\n amount = amount === 0 ? 0 : amount || 50;\n var rgb1 = tinycolor(color1).toRgb();\n var rgb2 = tinycolor(color2).toRgb();\n var p = amount / 100;\n var rgba = {\n r: (rgb2.r - rgb1.r) * p + rgb1.r,\n g: (rgb2.g - rgb1.g) * p + rgb1.g,\n b: (rgb2.b - rgb1.b) * p + rgb1.b,\n a: (rgb2.a - rgb1.a) * p + rgb1.a\n };\n return tinycolor(rgba);\n};\n\n// Readability Functions\n// ---------------------\n// <http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef (WCAG Version 2)\n\n// `contrast`\n// Analyze the 2 colors and returns the color contrast defined by (WCAG Version 2)\ntinycolor.readability = function (color1, color2) {\n var c1 = tinycolor(color1);\n var c2 = tinycolor(color2);\n return (Math.max(c1.getLuminance(), c2.getLuminance()) + 0.05) / (Math.min(c1.getLuminance(), c2.getLuminance()) + 0.05);\n};\n\n// `isReadable`\n// Ensure that foreground and background color combinations meet WCAG2 guidelines.\n// The third argument is an optional Object.\n// the 'level' property states 'AA' or 'AAA' - if missing or invalid, it defaults to 'AA';\n// the 'size' property states 'large' or 'small' - if missing or invalid, it defaults to 'small'.\n// If the entire object is absent, isReadable defaults to {level:\"AA\",size:\"small\"}.\n\n// *Example*\n// tinycolor.isReadable(\"#000\", \"#111\") => false\n// tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\ntinycolor.isReadable = function (color1, color2, wcag2) {\n var readability = tinycolor.readability(color1, color2);\n var wcag2Parms, out;\n out = false;\n wcag2Parms = validateWCAG2Parms(wcag2);\n switch (wcag2Parms.level + wcag2Parms.size) {\n case \"AAsmall\":\n case \"AAAlarge\":\n out = readability >= 4.5;\n break;\n case \"AAlarge\":\n out = readability >= 3;\n break;\n case \"AAAsmall\":\n out = readability >= 7;\n break;\n }\n return out;\n};\n\n// `mostReadable`\n// Given a base color and a list of possible foreground or background\n// colors for that base, returns the most readable color.\n// Optionally returns Black or White if the most readable color is unreadable.\n// *Example*\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString(); // \"#ffffff\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\ntinycolor.mostReadable = function (baseColor, colorList, args) {\n var bestColor = null;\n var bestScore = 0;\n var readability;\n var includeFallbackColors, level, size;\n args = args || {};\n includeFallbackColors = args.includeFallbackColors;\n level = args.level;\n size = args.size;\n for (var i = 0; i < colorList.length; i++) {\n readability = tinycolor.readability(baseColor, colorList[i]);\n if (readability > bestScore) {\n bestScore = readability;\n bestColor = tinycolor(colorList[i]);\n }\n }\n if (tinycolor.isReadable(baseColor, bestColor, {\n level: level,\n size: size\n }) || !includeFallbackColors) {\n return bestColor;\n } else {\n args.includeFallbackColors = false;\n return tinycolor.mostReadable(baseColor, [\"#fff\", \"#000\"], args);\n }\n};\n\n// Big List of Colors\n// ------------------\n// <https://www.w3.org/TR/css-color-4/#named-colors>\nvar names = tinycolor.names = {\n aliceblue: \"f0f8ff\",\n antiquewhite: \"faebd7\",\n aqua: \"0ff\",\n aquamarine: \"7fffd4\",\n azure: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"000\",\n blanchedalmond: \"ffebcd\",\n blue: \"00f\",\n blueviolet: \"8a2be2\",\n brown: \"a52a2a\",\n burlywood: \"deb887\",\n burntsienna: \"ea7e5d\",\n cadetblue: \"5f9ea0\",\n chartreuse: \"7fff00\",\n chocolate: \"d2691e\",\n coral: \"ff7f50\",\n cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"0ff\",\n darkblue: \"00008b\",\n darkcyan: \"008b8b\",\n darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\",\n darkgreen: \"006400\",\n darkgrey: \"a9a9a9\",\n darkkhaki: \"bdb76b\",\n darkmagenta: \"8b008b\",\n darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\",\n darkorchid: \"9932cc\",\n darkred: \"8b0000\",\n darksalmon: \"e9967a\",\n darkseagreen: \"8fbc8f\",\n darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\",\n darkslategrey: \"2f4f4f\",\n darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\",\n deeppink: \"ff1493\",\n deepskyblue: \"00bfff\",\n dimgray: \"696969\",\n dimgrey: \"696969\",\n dodgerblue: \"1e90ff\",\n firebrick: \"b22222\",\n floralwhite: \"fffaf0\",\n forestgreen: \"228b22\",\n fuchsia: \"f0f\",\n gainsboro: \"dcdcdc\",\n ghostwhite: \"f8f8ff\",\n gold: \"ffd700\",\n goldenrod: \"daa520\",\n gray: \"808080\",\n green: \"008000\",\n greenyellow: \"adff2f\",\n grey: \"808080\",\n honeydew: \"f0fff0\",\n hotpink: \"ff69b4\",\n indianred: \"cd5c5c\",\n indigo: \"4b0082\",\n ivory: \"fffff0\",\n khaki: \"f0e68c\",\n lavender: \"e6e6fa\",\n lavenderblush: \"fff0f5\",\n lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\",\n lightblue: \"add8e6\",\n lightcoral: \"f08080\",\n lightcyan: \"e0ffff\",\n lightgoldenrodyellow: \"fafad2\",\n lightgray: \"d3d3d3\",\n lightgreen: \"90ee90\",\n lightgrey: \"d3d3d3\",\n lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\",\n lightseagreen: \"20b2aa\",\n lightskyblue: \"87cefa\",\n lightslategray: \"789\",\n lightslategrey: \"789\",\n lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\",\n lime: \"0f0\",\n limegreen: \"32cd32\",\n linen: \"faf0e6\",\n magenta: \"f0f\",\n maroon: \"800000\",\n mediumaquamarine: \"66cdaa\",\n mediumblue: \"0000cd\",\n mediumorchid: \"ba55d3\",\n mediumpurple: \"9370db\",\n mediumseagreen: \"3cb371\",\n mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\",\n mediumturquoise: \"48d1cc\",\n mediumvioletred: \"c71585\",\n midnightblue: \"191970\",\n mintcream: \"f5fffa\",\n mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\",\n navajowhite: \"ffdead\",\n navy: \"000080\",\n oldlace: \"fdf5e6\",\n olive: \"808000\",\n olivedrab: \"6b8e23\",\n orange: \"ffa500\",\n orangered: \"ff4500\",\n orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\",\n palegreen: \"98fb98\",\n paleturquoise: \"afeeee\",\n palevioletred: \"db7093\",\n papayawhip: \"ffefd5\",\n peachpuff: \"ffdab9\",\n peru: \"cd853f\",\n pink: \"ffc0cb\",\n plum: \"dda0dd\",\n powderblue: \"b0e0e6\",\n purple: \"800080\",\n rebeccapurple: \"663399\",\n red: \"f00\",\n rosybrown: \"bc8f8f\",\n royalblue: \"4169e1\",\n saddlebrown: \"8b4513\",\n salmon: \"fa8072\",\n sandybrown: \"f4a460\",\n seagreen: \"2e8b57\",\n seashell: \"fff5ee\",\n sienna: \"a0522d\",\n silver: \"c0c0c0\",\n skyblue: \"87ceeb\",\n slateblue: \"6a5acd\",\n slategray: \"708090\",\n slategrey: \"708090\",\n snow: \"fffafa\",\n springgreen: \"00ff7f\",\n steelblue: \"4682b4\",\n tan: \"d2b48c\",\n teal: \"008080\",\n thistle: \"d8bfd8\",\n tomato: \"ff6347\",\n turquoise: \"40e0d0\",\n violet: \"ee82ee\",\n wheat: \"f5deb3\",\n white: \"fff\",\n whitesmoke: \"f5f5f5\",\n yellow: \"ff0\",\n yellowgreen: \"9acd32\"\n};\n\n// Make it easy to access colors via `hexNames[hex]`\nvar hexNames = tinycolor.hexNames = flip(names);\n\n// Utilities\n// ---------\n\n// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\nfunction flip(o) {\n var flipped = {};\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n flipped[o[i]] = i;\n }\n }\n return flipped;\n}\n\n// Return a valid alpha value [0,1] with all invalid values being set to 1\nfunction boundAlpha(a) {\n a = parseFloat(a);\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n return a;\n}\n\n// Take input from [0, n] and return it as [0, 1]\nfunction bound01(n, max) {\n if (isOnePointZero(n)) n = \"100%\";\n var processPercent = isPercentage(n);\n n = Math.min(max, Math.max(0, parseFloat(n)));\n\n // Automatically convert percentage into number\n if (processPercent) {\n n = parseInt(n * max, 10) / 100;\n }\n\n // Handle floating point rounding errors\n if (Math.abs(n - max) < 0.000001) {\n return 1;\n }\n\n // Convert into [0, 1] range if it isn't already\n return n % max / parseFloat(max);\n}\n\n// Force a number between 0 and 1\nfunction clamp01(val) {\n return Math.min(1, Math.max(0, val));\n}\n\n// Parse a base-16 hex value into a base-10 integer\nfunction parseIntFromHex(val) {\n return parseInt(val, 16);\n}\n\n// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n// <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>\nfunction isOnePointZero(n) {\n return typeof n == \"string\" && n.indexOf(\".\") != -1 && parseFloat(n) === 1;\n}\n\n// Check to see if string passed in is a percentage\nfunction isPercentage(n) {\n return typeof n === \"string\" && n.indexOf(\"%\") != -1;\n}\n\n// Force a hex value to have 2 characters\nfunction pad2(c) {\n return c.length == 1 ? \"0\" + c : \"\" + c;\n}\n\n// Replace a decimal with it's percentage value\nfunction convertToPercentage(n) {\n if (n <= 1) {\n n = n * 100 + \"%\";\n }\n return n;\n}\n\n// Converts a decimal to a hex value\nfunction convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n}\n// Converts a hex value to a decimal\nfunction convertHexToDecimal(h) {\n return parseIntFromHex(h) / 255;\n}\nvar matchers = function () {\n // <http://www.w3.org/TR/css3-values/#integers>\n var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n // <http://www.w3.org/TR/css3-values/#number-value>\n var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\n var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n // Actual matching.\n // Parentheses and commas are optional, but not required.\n // Whitespace can take the place of commas or opening paren\n var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n return {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n };\n}();\n\n// `isValidCSSUnit`\n// Take in a single string / number and check to see if it looks like a CSS unit\n// (see `matchers` above for definition).\nfunction isValidCSSUnit(color) {\n return !!matchers.CSS_UNIT.exec(color);\n}\n\n// `stringInputToObject`\n// Permissive string parsing. Take in a number of formats, and output an object\n// based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\nfunction stringInputToObject(color) {\n color = color.replace(trimLeft, \"\").replace(trimRight, \"\").toLowerCase();\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n } else if (color == \"transparent\") {\n return {\n r: 0,\n g: 0,\n b: 0,\n a: 0,\n format: \"name\"\n };\n }\n\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match;\n if (match = matchers.rgb.exec(color)) {\n return {\n r: match[1],\n g: match[2],\n b: match[3]\n };\n }\n if (match = matchers.rgba.exec(color)) {\n return {\n r: match[1],\n g: match[2],\n b: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hsl.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n l: match[3]\n };\n }\n if (match = matchers.hsla.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n l: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hsv.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n v: match[3]\n };\n }\n if (match = matchers.hsva.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n v: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hex8.exec(color)) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if (match = matchers.hex6.exec(color)) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n if (match = matchers.hex4.exec(color)) {\n return {\n r: parseIntFromHex(match[1] + \"\" + match[1]),\n g: parseIntFromHex(match[2] + \"\" + match[2]),\n b: parseIntFromHex(match[3] + \"\" + match[3]),\n a: convertHexToDecimal(match[4] + \"\" + match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if (match = matchers.hex3.exec(color)) {\n return {\n r: parseIntFromHex(match[1] + \"\" + match[1]),\n g: parseIntFromHex(match[2] + \"\" + match[2]),\n b: parseIntFromHex(match[3] + \"\" + match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n return false;\n}\nfunction validateWCAG2Parms(parms) {\n // return valid WCAG2 parms for isReadable.\n // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\n var level, size;\n parms = parms || {\n level: \"AA\",\n size: \"small\"\n };\n level = (parms.level || \"AA\").toUpperCase();\n size = (parms.size || \"small\").toLowerCase();\n if (level !== \"AA\" && level !== \"AAA\") {\n level = \"AA\";\n }\n if (size !== \"small\" && size !== \"large\") {\n size = \"small\";\n }\n return {\n level: level,\n size: size\n };\n}\n\nexport { tinycolor as default };\n","var t,e,n=function(){var t=self.performance&&performance.getEntriesByType&&performance.getEntriesByType(\"navigation\")[0];if(t&&t.responseStart>0&&t.responseStart<performance.now())return t},r=function(t){if(\"loading\"===document.readyState)return\"loading\";var e=n();if(e){if(t<e.domInteractive)return\"loading\";if(0===e.domContentLoadedEventStart||t<e.domContentLoadedEventStart)return\"dom-interactive\";if(0===e.domComplete||t<e.domComplete)return\"dom-content-loaded\"}return\"complete\"},i=function(t){var e=t.nodeName;return 1===t.nodeType?e.toLowerCase():e.toUpperCase().replace(/^#/,\"\")},a=function(t,e){var n=\"\";try{for(;t&&9!==t.nodeType;){var r=t,a=r.id?\"#\"+r.id:i(r)+(r.classList&&r.classList.value&&r.classList.value.trim()&&r.classList.value.trim().length?\".\"+r.classList.value.trim().replace(/\\s+/g,\".\"):\"\");if(n.length+a.length>(e||100)-1)return n||a;if(n=n?a+\">\"+n:a,r.id)break;t=r.parentNode}}catch(t){}return n},o=-1,c=function(){return o},u=function(t){addEventListener(\"pageshow\",(function(e){e.persisted&&(o=e.timeStamp,t(e))}),!0)},s=function(){var t=n();return t&&t.activationStart||0},f=function(t,e){var r=n(),i=\"navigate\";c()>=0?i=\"back-forward-cache\":r&&(document.prerendering||s()>0?i=\"prerender\":document.wasDiscarded?i=\"restore\":r.type&&(i=r.type.replace(/_/g,\"-\")));return{name:t,value:void 0===e?-1:e,rating:\"good\",delta:0,entries:[],id:\"v4-\".concat(Date.now(),\"-\").concat(Math.floor(8999999999999*Math.random())+1e12),navigationType:i}},d=function(t,e,n){try{if(PerformanceObserver.supportedEntryTypes.includes(t)){var r=new PerformanceObserver((function(t){Promise.resolve().then((function(){e(t.getEntries())}))}));return r.observe(Object.assign({type:t,buffered:!0},n||{})),r}}catch(t){}},l=function(t,e,n,r){var i,a;return function(o){e.value>=0&&(o||r)&&((a=e.value-(i||0))||void 0===i)&&(i=e.value,e.delta=a,e.rating=function(t,e){return t>e[1]?\"poor\":t>e[0]?\"needs-improvement\":\"good\"}(e.value,n),t(e))}},m=function(t){requestAnimationFrame((function(){return requestAnimationFrame((function(){return t()}))}))},p=function(t){document.addEventListener(\"visibilitychange\",(function(){\"hidden\"===document.visibilityState&&t()}))},v=function(t){var e=!1;return function(){e||(t(),e=!0)}},g=-1,h=function(){return\"hidden\"!==document.visibilityState||document.prerendering?1/0:0},T=function(t){\"hidden\"===document.visibilityState&&g>-1&&(g=\"visibilitychange\"===t.type?t.timeStamp:0,E())},y=function(){addEventListener(\"visibilitychange\",T,!0),addEventListener(\"prerenderingchange\",T,!0)},E=function(){removeEventListener(\"visibilitychange\",T,!0),removeEventListener(\"prerenderingchange\",T,!0)},S=function(){return g<0&&(g=h(),y(),u((function(){setTimeout((function(){g=h(),y()}),0)}))),{get firstHiddenTime(){return g}}},b=function(t){document.prerendering?addEventListener(\"prerenderingchange\",(function(){return t()}),!0):t()},L=[1800,3e3],C=function(t,e){e=e||{},b((function(){var n,r=S(),i=f(\"FCP\"),a=d(\"paint\",(function(t){t.forEach((function(t){\"first-contentful-paint\"===t.name&&(a.disconnect(),t.startTime<r.firstHiddenTime&&(i.value=Math.max(t.startTime-s(),0),i.entries.push(t),n(!0)))}))}));a&&(n=l(t,i,L,e.reportAllChanges),u((function(r){i=f(\"FCP\"),n=l(t,i,L,e.reportAllChanges),m((function(){i.value=performance.now()-r.timeStamp,n(!0)}))})))}))},M=[.1,.25],D=function(t,e){!function(t,e){e=e||{},C(v((function(){var n,r=f(\"CLS\",0),i=0,a=[],o=function(t){t.forEach((function(t){if(!t.hadRecentInput){var e=a[0],n=a[a.length-1];i&&t.startTime-n.startTime<1e3&&t.startTime-e.startTime<5e3?(i+=t.value,a.push(t)):(i=t.value,a=[t])}})),i>r.value&&(r.value=i,r.entries=a,n())},c=d(\"layout-shift\",o);c&&(n=l(t,r,M,e.reportAllChanges),p((function(){o(c.takeRecords()),n(!0)})),u((function(){i=0,r=f(\"CLS\",0),n=l(t,r,M,e.reportAllChanges),m((function(){return n()}))})),setTimeout(n,0))})))}((function(e){var n=function(t){var e,n={};if(t.entries.length){var i=t.entries.reduce((function(t,e){return t&&t.value>e.value?t:e}));if(i&&i.sources&&i.sources.length){var o=(e=i.sources).find((function(t){return t.node&&1===t.node.nodeType}))||e[0];o&&(n={largestShiftTarget:a(o.node),largestShiftTime:i.startTime,largestShiftValue:i.value,largestShiftSource:o,largestShiftEntry:i,loadState:r(i.startTime)})}}return Object.assign(t,{attribution:n})}(e);t(n)}),e)},w=function(t,e){C((function(e){var i=function(t){var e={timeToFirstByte:0,firstByteToFCP:t.value,loadState:r(c())};if(t.entries.length){var i=n(),a=t.entries[t.entries.length-1];if(i){var o=i.activationStart||0,u=Math.max(0,i.responseStart-o);e={timeToFirstByte:u,firstByteToFCP:t.value-u,loadState:r(t.entries[0].startTime),navigationEntry:i,fcpEntry:a}}}return Object.assign(t,{attribution:e})}(e);t(i)}),e)},x=0,I=1/0,k=0,A=function(t){t.forEach((function(t){t.interactionId&&(I=Math.min(I,t.interactionId),k=Math.max(k,t.interactionId),x=k?(k-I)/7+1:0)}))},F=function(){return t?x:performance.interactionCount||0},P=function(){\"interactionCount\"in performance||t||(t=d(\"event\",A,{type:\"event\",buffered:!0,durationThreshold:0}))},B=[],O=new Map,R=0,j=function(){var t=Math.min(B.length-1,Math.floor((F()-R)/50));return B[t]},q=[],H=function(t){if(q.forEach((function(e){return e(t)})),t.interactionId||\"first-input\"===t.entryType){var e=B[B.length-1],n=O.get(t.interactionId);if(n||B.length<10||t.duration>e.latency){if(n)t.duration>n.latency?(n.entries=[t],n.latency=t.duration):t.duration===n.latency&&t.startTime===n.entries[0].startTime&&n.entries.push(t);else{var r={id:t.interactionId,latency:t.duration,entries:[t]};O.set(r.id,r),B.push(r)}B.sort((function(t,e){return e.latency-t.latency})),B.length>10&&B.splice(10).forEach((function(t){return O.delete(t.id)}))}}},N=function(t){var e=self.requestIdleCallback||self.setTimeout,n=-1;return t=v(t),\"hidden\"===document.visibilityState?t():(n=e(t),p(t)),n},W=[200,500],z=function(t,e){\"PerformanceEventTiming\"in self&&\"interactionId\"in PerformanceEventTiming.prototype&&(e=e||{},b((function(){var n;P();var r,i=f(\"INP\"),a=function(t){N((function(){t.forEach(H);var e=j();e&&e.latency!==i.value&&(i.value=e.latency,i.entries=e.entries,r())}))},o=d(\"event\",a,{durationThreshold:null!==(n=e.durationThreshold)&&void 0!==n?n:40});r=l(t,i,W,e.reportAllChanges),o&&(o.observe({type:\"first-input\",buffered:!0}),p((function(){a(o.takeRecords()),r(!0)})),u((function(){R=F(),B.length=0,O.clear(),i=f(\"INP\"),r=l(t,i,W,e.reportAllChanges)})))})))},U=[],V=[],_=0,G=new WeakMap,J=new Map,K=-1,Q=function(t){U=U.concat(t),X()},X=function(){K<0&&(K=N(Y))},Y=function(){J.size>10&&J.forEach((function(t,e){O.has(e)||J.delete(e)}));var t=B.map((function(t){return G.get(t.entries[0])})),e=V.length-50;V=V.filter((function(n,r){return r>=e||t.includes(n)}));for(var n=new Set,r=0;r<V.length;r++){var i=V[r];nt(i.startTime,i.processingEnd).forEach((function(t){n.add(t)}))}var a=U.length-1-50;U=U.filter((function(t,e){return t.startTime>_&&e>a||n.has(t)})),K=-1};q.push((function(t){t.interactionId&&t.target&&!J.has(t.interactionId)&&J.set(t.interactionId,t.target)}),(function(t){var e,n=t.startTime+t.duration;_=Math.max(_,t.processingEnd);for(var r=V.length-1;r>=0;r--){var i=V[r];if(Math.abs(n-i.renderTime)<=8){(e=i).startTime=Math.min(t.startTime,e.startTime),e.processingStart=Math.min(t.processingStart,e.processingStart),e.processingEnd=Math.max(t.processingEnd,e.processingEnd),e.entries.push(t);break}}e||(e={startTime:t.startTime,processingStart:t.processingStart,processingEnd:t.processingEnd,renderTime:n,entries:[t]},V.push(e)),(t.interactionId||\"first-input\"===t.entryType)&&G.set(t,e),X()}));var Z,$,tt,et,nt=function(t,e){for(var n,r=[],i=0;n=U[i];i++)if(!(n.startTime+n.duration<t)){if(n.startTime>e)break;r.push(n)}return r},rt=function(t,n){e||(e=d(\"long-animation-frame\",Q)),z((function(e){var n=function(t){var e=t.entries[0],n=G.get(e),i=e.processingStart,o=n.processingEnd,c=n.entries.sort((function(t,e){return t.processingStart-e.processingStart})),u=nt(e.startTime,o),s=t.entries.find((function(t){return t.target})),f=s&&s.target||J.get(e.interactionId),d=[e.startTime+e.duration,o].concat(u.map((function(t){return t.startTime+t.duration}))),l=Math.max.apply(Math,d),m={interactionTarget:a(f),interactionTargetElement:f,interactionType:e.name.startsWith(\"key\")?\"keyboard\":\"pointer\",interactionTime:e.startTime,nextPaintTime:l,processedEventEntries:c,longAnimationFrameEntries:u,inputDelay:i-e.startTime,processingDuration:o-i,presentationDelay:Math.max(l-o,0),loadState:r(e.startTime)};return Object.assign(t,{attribution:m})}(e);t(n)}),n)},it=[2500,4e3],at={},ot=function(t,e){!function(t,e){e=e||{},b((function(){var n,r=S(),i=f(\"LCP\"),a=function(t){e.reportAllChanges||(t=t.slice(-1)),t.forEach((function(t){t.startTime<r.firstHiddenTime&&(i.value=Math.max(t.startTime-s(),0),i.entries=[t],n())}))},o=d(\"largest-contentful-paint\",a);if(o){n=l(t,i,it,e.reportAllChanges);var c=v((function(){at[i.id]||(a(o.takeRecords()),o.disconnect(),at[i.id]=!0,n(!0))}));[\"keydown\",\"click\"].forEach((function(t){addEventListener(t,(function(){return N(c)}),{once:!0,capture:!0})})),p(c),u((function(r){i=f(\"LCP\"),n=l(t,i,it,e.reportAllChanges),m((function(){i.value=performance.now()-r.timeStamp,at[i.id]=!0,n(!0)}))}))}}))}((function(e){var r=function(t){var e={timeToFirstByte:0,resourceLoadDelay:0,resourceLoadDuration:0,elementRenderDelay:t.value};if(t.entries.length){var r=n();if(r){var i=r.activationStart||0,o=t.entries[t.entries.length-1],c=o.url&&performance.getEntriesByType(\"resource\").filter((function(t){return t.name===o.url}))[0],u=Math.max(0,r.responseStart-i),s=Math.max(u,c?(c.requestStart||c.startTime)-i:0),f=Math.max(s,c?c.responseEnd-i:0),d=Math.max(f,o.startTime-i);e={element:a(o.element),timeToFirstByte:u,resourceLoadDelay:s-u,resourceLoadDuration:f-s,elementRenderDelay:d-f,navigationEntry:r,lcpEntry:o},o.url&&(e.url=o.url),c&&(e.lcpResourceEntry=c)}}return Object.assign(t,{attribution:e})}(e);t(r)}),e)},ct=[800,1800],ut=function t(e){document.prerendering?b((function(){return t(e)})):\"complete\"!==document.readyState?addEventListener(\"load\",(function(){return t(e)}),!0):setTimeout(e,0)},st=function(t,e){e=e||{};var r=f(\"TTFB\"),i=l(t,r,ct,e.reportAllChanges);ut((function(){var a=n();a&&(r.value=Math.max(a.responseStart-s(),0),r.entries=[a],i(!0),u((function(){r=f(\"TTFB\",0),(i=l(t,r,ct,e.reportAllChanges))(!0)})))}))},ft=function(t,e){st((function(e){var n=function(t){var e={waitingDuration:0,cacheDuration:0,dnsDuration:0,connectionDuration:0,requestDuration:0};if(t.entries.length){var n=t.entries[0],r=n.activationStart||0,i=Math.max((n.workerStart||n.fetchStart)-r,0),a=Math.max(n.domainLookupStart-r,0),o=Math.max(n.connectStart-r,0),c=Math.max(n.connectEnd-r,0);e={waitingDuration:i,cacheDuration:a-i,dnsDuration:o-a,connectionDuration:c-o,requestDuration:t.value-c,navigationEntry:n}}return Object.assign(t,{attribution:e})}(e);t(n)}),e)},dt={passive:!0,capture:!0},lt=new Date,mt=function(t,e){Z||(Z=e,$=t,tt=new Date,gt(removeEventListener),pt())},pt=function(){if($>=0&&$<tt-lt){var t={entryType:\"first-input\",name:Z.type,target:Z.target,cancelable:Z.cancelable,startTime:Z.timeStamp,processingStart:Z.timeStamp+$};et.forEach((function(e){e(t)})),et=[]}},vt=function(t){if(t.cancelable){var e=(t.timeStamp>1e12?new Date:performance.now())-t.timeStamp;\"pointerdown\"==t.type?function(t,e){var n=function(){mt(t,e),i()},r=function(){i()},i=function(){removeEventListener(\"pointerup\",n,dt),removeEventListener(\"pointercancel\",r,dt)};addEventListener(\"pointerup\",n,dt),addEventListener(\"pointercancel\",r,dt)}(e,t):mt(e,t)}},gt=function(t){[\"mousedown\",\"keydown\",\"touchstart\",\"pointerdown\"].forEach((function(e){return t(e,vt,dt)}))},ht=[100,300],Tt=function(t,e){e=e||{},b((function(){var n,r=S(),i=f(\"FID\"),a=function(t){t.startTime<r.firstHiddenTime&&(i.value=t.processingStart-t.startTime,i.entries.push(t),n(!0))},o=function(t){t.forEach(a)},c=d(\"first-input\",o);n=l(t,i,ht,e.reportAllChanges),c&&(p(v((function(){o(c.takeRecords()),c.disconnect()}))),u((function(){var r;i=f(\"FID\"),n=l(t,i,ht,e.reportAllChanges),et=[],$=-1,Z=null,gt(addEventListener),r=a,et.push(r),pt()})))}))},yt=function(t,e){Tt((function(e){var n=function(t){var e=t.entries[0],n={eventTarget:a(e.target),eventType:e.name,eventTime:e.startTime,eventEntry:e,loadState:r(e.startTime)};return Object.assign(t,{attribution:n})}(e);t(n)}),e)};export{M as CLSThresholds,L as FCPThresholds,ht as FIDThresholds,W as INPThresholds,it as LCPThresholds,ct as TTFBThresholds,D as onCLS,w as onFCP,yt as onFID,rt as onINP,ot as onLCP,ft as onTTFB};\n"],"names":["DEFAULT_HEADING_SIZE","HEADING_ELEMENTS","DEFAULT_HEADING_ELEMENT_SIZES","h1","h2","h3","h4","h5","h6","HEADING_SIZES","HEADING_DEFINITIONS","size","lineHeight","forEach","sizeToken","marginTop","getFontMargin","marginBottom","DEFAULT_HEADING_ELEMENT","DEFAULT_HEADING_WEIGHT","DEFAULT_HEADING_MARGIN","DEFAULT_HEADING_COLOR","withConfig","shouldForwardProp","property","validator","blockProperty","theme","inheritLineHeight","color","margin","weight","css","heading","isNumber","applyHeadingStyles","isColor","text","applyHeadingColor","marginValue","applyHeadingMargin","animation","fastest","_a","element","rest","s","e","t","p","Object","prototype","hasOwnProperty","call","indexOf","getOwnPropertySymbols","i","length","propertyIsEnumerable","__rest","assert","includes","join","rootProperties","assign","as","DEFAULT_ICON_BUTTON_SIZE","DEFAULT_ICON_BUTTON_ELEMENT","ICON_BUTTON_DEFINITIONS","xs","compactSpacing","spacing","iconSize","fontSize","sm","md","lg","ELEVATION_DEFINITIONS","offsetY","blurRadius","SHAPE_BORDER_RADII","width","height","radius","variant","isString","RADII","rectangle","circle","pill","getPxValue","elevation","elevationOnHover","padding","backgroundColor","background","shape","darkTheme","opacity","hoverOffsetY","hoverBlurRadius","type","compact","inverted","toggled","active","destructive","disabled","palette","action","noStyleReset","isDefault","main","contrast","alert","primary","colors","opacities","default","hover","activeStyles","actionStyles","all","only","fast","reference","icon","label","onClick","isFunction","ref","glyph","DEFAULT_STATUSICON_SIZE","STATUSICON_SIZE_MAP","xl","forceForwardProperty","status","badges","TEXT_SIZES","DEFAULT_TEXT_SIZE","TEXT_ELEMENTS","DEFAULT_TEXT_ELEMENT","TEXT_WEIGHTS","DEFAULT_TEXT_WEIGHT","TEXT_MARGINS","DEFAULT_TEXT_MARGIN","DEFAULT_TEXT_COLOR","TEXT_DEFINITIONS","applyTextStyles","body","applyTextColor","applyTextMargin","DEFAULT_ICON_SIZE","ICON_FONT_SIZES","ICON_GLYPHS","IconGlyphs","map","DEFAULT_ICON_GLYPH","DEFAULT_ICON_COLOR","getIconSizes","className","FONT_TYPE_FAMILIES","FONT_WEIGHTS","FONT_WEIGHT_MAP","light","regular","bold","FONT_MARGINS","FONT_COLORS","DEFAULT_PROPERTY_WHITELIST","x","CompassError","Error","constructor","message","super","this","name","warn","console","assertion","warnOnly","clamp","value","min","max","Math","colorString","Option","style","isFunctionalComponent","component","isReactComponent","blackList","toString","startsWith","whitelist","getBase64","url","responseType","then","response","dataString","Buffer","from","data","headers","getStoryDocumentationUrl","storyParameters","storyPath","title","split","part","includeStories","hideComponentProperties","blacklist","reduce","o","key","table","disable","forwardedAs","multiplier","round","noop","supportedColorTypes","decomposeColor","charAt","colorValues","slice","re","RegExp","splitColors","match","n","index","Number","parseInt","hexToRgb","marker","values","parseFloat","setAlpha","decomposedColor","clampedValue","newValues","recomposeColor","FLEX_ELEMENTS","DEFAULT_FLEX_COMPONENT","DEFAULT_FLEX_ROW","DEFAULT_FLEX_WRAP","DEFAULT_FLEX_FLEX","FLEX_ALIGNMENTS","DEFAULT_FLEX_ALIGNMENT","FLEX_JUSTIFIES","DEFAULT_FLEX_JUSTIFY","flex","wrap","row","justify","alignment","SIZES","parseSpacing","spacingToken","trbl","top","right","bottom","left","side","symmetric","vertical","horizontal","applyPadding","applyMargin","resetButton","VDefaultStyles","headingElement","GlobalStyle","createGlobalStyle","noFontFaces","noDefaultStyle","skeleton","shimmer","elevationOpacity","lighter","dark","darker","secondary","warning","success","info","online","away","dnd","offline","accent","border","badge","instant","normal","slow","slowest","highlight","mention","children","simpleIsEqual","a","b","resultFn","isEqual","arguments","undefined","lastThis","lastArgs","lastResult","calledOnce","isNewArgEqualToLast","newArg","_len","newArgs","Array","_key","every","apply","isBrowserSafari","userAgent","window","navigator","isSafari","scrollableContainerStyles","display","zIndex","overflow","scrollableWrapperStyle","position","visibility","expandShrinkContainerStyles","expandShrinkStyles","shrinkChildStyle","ItemMeasurer","_Component","_this","args","concat","_node","_resizeSensorExpand","_resizeSensorShrink","_positionScrollbarsRef","_measureItemAnimFrame","positionScrollBars","props","cancelAnimationFrame","requestAnimationFrame","current","scrollTop","shrinkScrollDelta","scrollingDiv","event","target","offsetHeight","_measureItem","offsetWidth","renderItems","item","expandChildStyle","role","dir","onScroll","forceScrollCorrection","_this$props","handleNewMeasurements","oldSize","itemId","node","ownerDocument","defaultView","HTMLElement","newSize","ceil","_proto","componentDidMount","_this2","findDOMNode","componentDidUpdate","prevProps","componentWillUnmount","_this$props2","onUnmount","render","Component","getItemMetadata","listMetaData","itemOffsetMap","itemSizeMap","itemData","offset","getItemOffset","getItemSize","DynamicSizeList","_PureComponent","_props","_listMetaData","totalMeasuredSize","atBottom","_itemStyleCache","_outerRef","_scrollCorrectionInProgress","_scrollByCorrection","_keepScrollPosition","_keepScrollToBottom","_mountingCorrections","_correctedInstances","state","scrollDirection","scrollOffset","initialScrollOffset","scrollUpdateWasRequested","scrollDelta","scrollHeight","localOlderPostsToRender","scrollBy","_callOnItemsRendered","overscanStartIndex","overscanStopIndex","visibleStartIndex","visibleStopIndex","onItemsRendered","_callOnScroll","clientHeight","_commitHook","scrolledToInitIndex","keys","_this$props$initScrol","initScrollToIndex","scrollToItem","setState","_dataChange","canLoadMorePosts","_heightChange","prevHeight","prevOffset","wasAtBottom","logDSLEvents","log","_widthChange","_getItemStyle","itemStyleCache","_correctScroll","_generateOffsetMeasurements","_this$_listMetaData","prevSize","_handleNewMeasurements","findIndex","correctScrollToBottom","forceUpdate","delta","_visibleStartIndex","_getRangeToRender","prevState","deltaValue","_onItemRowUnmount","_renderItems","direction","loaderId","innerRefWidth","_this$_getRangeToRend2","startIndex","stopIndex","itemCount","items","_this$state$localOlde","localOlderPostsToRenderStartIndex","localOlderPostsToRenderStopIndex","isItemInLocalPosts","isLoader","createElement","push","_onScrollVertical","_event$currentTarget","currentTarget","_outerRefSetter","outerRef","innerRef","clientWidth","getDerivedStateFromProps","validateProps","scrollTo","scrollByValue","useAnimationFrame","align","offsetOfItem","itemMetadata","estimatedTotalSize","maxOffset","minOffset","getOffsetForIndexAndAlignment","scrollToFailed","initRangeToRender","getSnapshotBeforeUpdate","previousScrollTop","previousScrollHeight","snapshot","_this$state","_scrollDirection","_scrollOffset","_scrollUpdateWasRequested","_scrollHeight","prevScrollDirection","prevScrollOffset","prevScrollUpdateWasRequested","_callPropsCallbacks","postlistScrollHeight","scrollValue","innerTagName","outerTagName","innerListStyle","WebkitOverflowScrolling","overflowY","overflowAnchor","willChange","_this$props3","_this$state2","_this$_getRangeToRend3","_overscanStartIndex","_overscanStopIndex","_visibleStartIndex2","_visibleStopIndex","_this$props4","overscanCountForward","overscanCountBackward","_this$state3","scrollOffsetValue","high","low","findNearestItem","getStartIndexForOffset","_itemMetadata","getStopIndexForStartIndex","overscanBackward","overscanForward","minValue","maxValue","PureComponent","defaultProps","_ref","itemSize","defineProperty","exports","_extends","source","renderViewDefault","_react2","renderTrackHorizontalDefault","_objectWithoutProperties","finalStyle","borderRadius","renderTrackVerticalDefault","_ref2","renderThumbHorizontalDefault","_ref3","cursor","renderThumbVerticalDefault","_ref4","obj","__esModule","_createClass","defineProperties","descriptor","enumerable","configurable","writable","Constructor","protoProps","staticProps","_raf2","_raf3","_interopRequireDefault","_domCss2","_react","_propTypes2","_isString2","_getScrollbarWidth2","_returnFalse2","_getInnerWidth2","_getInnerHeight2","_styles","_defaultRenderElements","Scrollbars","instance","TypeError","_classCallCheck","self","ReferenceError","_possibleConstructorReturn","__proto__","getPrototypeOf","getScrollLeft","bind","getScrollTop","getScrollWidth","getScrollHeight","getClientWidth","getClientHeight","getValues","getThumbHorizontalWidth","getThumbVerticalHeight","getScrollLeftForOffset","getScrollTopForOffset","scrollLeft","scrollToLeft","scrollToTop","scrollToRight","scrollToBottom","handleTrackMouseEnter","handleTrackMouseLeave","handleHorizontalTrackMouseDown","handleVerticalTrackMouseDown","handleHorizontalThumbMouseDown","handleVerticalThumbMouseDown","handleWindowResize","handleScroll","handleDrag","handleDragEnd","didMountUniversal","subClass","superClass","create","setPrototypeOf","_inherits","addListeners","update","componentDidMountUniversal","universal","removeListeners","cancel","requestFrame","clearTimeout","hideTracksTimeout","clearInterval","detectScrollingInterval","view","scrollWidth","_ref2$scrollLeft","_ref2$scrollTop","_ref2$scrollWidth","_ref2$scrollHeight","_ref2$clientWidth","_ref2$clientHeight","thumbSize","thumbMinSize","_view","trackWidth","trackHorizontal","_props2","_view2","trackHeight","trackVertical","_view3","_view4","document","thumbHorizontal","thumbVertical","addEventListener","removeEventListener","teardownDragging","_props3","onScrollFrame","viewScrollLeft","viewScrollTop","detectScrolling","onScrollStart","handleScrollStartAutoHide","autoHide","showTracks","onScrollStop","handleScrollStopAutoHide","hideTracks","preventDefault","clientX","targetLeft","getBoundingClientRect","thumbWidth","abs","clientY","targetTop","thumbHeight","handleDragStart","prevPageX","prevPageY","disableSelectStyle","onselectstart","disableSelectStyleReset","dragging","stopImmediatePropagation","setupDragging","_offset","handleDragEndAutoHide","trackMouseOver","handleTrackMouseEnterAutoHide","handleTrackMouseLeaveAutoHide","_this3","scrolling","autoHideTimeout","setTimeout","_this4","handleScrollStart","setInterval","lastViewScrollLeft","lastViewScrollTop","handleScrollStop","callback","_this5","_this6","raf","_update","_props4","onUpdate","hideTracksWhenNotNeeded","trackHorizontalWidth","thumbHorizontalWidth","thumbHorizontalStyle","transform","trackVerticalHeight","thumbVerticalHeight","thumbVerticalStyle","trackHorizontalStyle","trackVerticalStyle","_this7","scrollbarWidth","_props5","renderView","renderTrackHorizontal","renderTrackVertical","renderThumbHorizontal","renderThumbVertical","tagName","autoHideDuration","autoHeight","autoHeightMin","autoHeightMax","containerStyle","containerStyleDefault","containerStyleAutoHeight","minHeight","maxHeight","viewStyle","viewStyleDefault","marginRight","viewStyleAutoHeight","viewStyleUniversalInitial","trackAutoHeightStyle","transition","trackHorizontalStyleDefault","trackVerticalStyleDefault","container","cloneElement","_ref5","thumbHorizontalStyleDefault","_ref6","_ref7","thumbVerticalStyleDefault","_ref8","propTypes","func","string","number","bool","oneOfType","object","userSelect","_Scrollbars2","el","_getComputedStyle","getComputedStyle","paddingTop","paddingBottom","paddingLeft","paddingRight","div","MsOverflowStyle","appendChild","removeChild","maybe","cacheOptions","defaultOptions","filterOption","makeAsyncSelect","SelectComponent","_class","_temp","Async","newValue","actionMeta","onInputChange","inputValue","lastRequest","loadedInputValue","loadedOptions","isLoading","passEmptyOptions","optionsCache","request","loadOptions","options","mounted","isArray","nextProps","select","focus","blur","loader","handleInputChange","SelectState","compareOption","option","candidate","String","toLowerCase","optionValue","optionLabel","builtins","formatCreateLabel","isValidNewOption","selectValue","selectOptions","some","getNewOptionData","__isNew__","allowCreateWhileLoading","createOptionPosition","makeCreatableSelect","Creatable","isMulti","onChange","onCreateOption","newOption","valueArray","newOptionData","SelectCreatable","applyPrefixToName","prefix","classNames","arr","filter","trim","cleanValue","Boolean","isDocumentElement","documentElement","pageYOffset","animatedScrollTo","to","duration","start","change","currentTime","animateScroll","val","scrollIntoView","menuEl","focusedEl","menuRect","focusedRect","overScroll","offsetTop","isTouchCapable","createEvent","isMobileDevice","test","coercePlacement","menuCSS","placement","_ref2$theme","alignToControl","neutral0","menuGutter","MenuPlacer","_getPrototypeOf2","maxMenuHeight","minMenuHeight","menuPlacement","menuPosition","menuShouldScrollIntoView","getPortalPlacement","context","isFixedPosition","shouldScroll","scrollParent","excludeStaticParent","overflowRx","docEl","parent","parentElement","overflowX","getScrollParent","defaultState","offsetParent","_menuEl$getBoundingCl","menuBottom","menuHeight","menuTop","containerTop","viewHeight","innerHeight","viewSpaceAbove","viewSpaceBelow","scrollSpaceAbove","scrollSpaceBelow","scrollDown","scrollUp","scrollDuration","_constrainedHeight","spaceAbove","controlHeight","_constrainedHeight2","getMenuPlacement","getPlacement","placerProps","getUpdatedProps","menuListCSS","baseUnit","noticeCSS","_ref5$theme","neutral40","textAlign","noOptionsMessageCSS","loadingMessageCSS","NoOptionsMessage","cx","getStyles","innerProps","LoadingMessage","menuPortalCSS","rect","MenuPortal","_Component2","_getPrototypeOf3","_len2","_key2","appendTo","controlElement","isFixed","getBoundingClientObj","scrollDistance","menuWrapper","createPortal","keyList","hasProp","equal","arrA","arrB","dateA","Date","dateB","getTime","regexpA","regexpB","$$typeof","exportedEqual","error","containerCSS","isDisabled","isRtl","pointerEvents","valueContainerCSS","alignItems","flexWrap","ValueContainer","hasValue","indicatorsContainerCSS","alignSelf","flexShrink","_templateObject","freeze","raw","styles","Svg","viewBox","focusable","CrossIcon","d","DownChevron","baseCSS","isFocused","_ref3$theme","neutral60","neutral20","neutral80","dropdownIndicatorCSS","clearIndicatorCSS","indicatorSeparatorCSS","_ref4$theme","neutral10","loadingDotAnimations","loadingIndicatorCSS","verticalAlign","LoadingDot","delay","marginLeft","LoadingIndicator","indicator","_ref$theme","neutral5","borderColor","borderStyle","borderWidth","boxShadow","justifyContent","outline","neutral30","groupCSS","groupHeadingCSS","fontWeight","textTransform","inputCSS","inputStyle","isHidden","multiValueCSS","minWidth","multiValueLabelCSS","cropWithEllipsis","textOverflow","whiteSpace","multiValueRemoveCSS","dangerLight","danger","MultiValueGeneric","MultiValueContainer","MultiValueLabel","MultiValueRemove","MultiValue","components","removeProps","selectProps","Container","Label","Remove","emotionCx","optionCSS","isSelected","primary25","WebkitTapHighlightColor","primary50","placeholderCSS","neutral50","css$1","maxWidth","ClearIndicator","Control","menuIsOpen","control","DropdownIndicator","Group","Heading","headingProps","group","GroupHeading","cleanProps","IndicatorsContainer","indicators","IndicatorSeparator","Input","AutosizeInput","A","input","inputRef","Menu","menu","MenuList","Placeholder","placeholder","SelectContainer","SingleValue","defaultComponents","safeIsNaN","isNaN","areInputsEqual","newInputs","lastInputs","first","second","diacritics","base","letters","stripDiacritics","str","replace","trimString","defaultStringify","A11yText","DummyInput","in","out","onExited","appear","enter","exit","emotion","NodeResolver","STYLE_KEYS","LOCK_STYLES","boxSizing","preventTouchMove","allowTouchMove","stopPropagation","preventInertiaScroll","totalScroll","currentScroll","isTouchDevice","maxTouchPoints","canUseDOM","activeScrollLocks","ScrollLock","capture","passive","accountForScrollbars","touchScrollTarget","targetStyle","originalStyles","currentPadding","adjustedPadding","innerWidth","listenerOptions","_ref$1","ScrollBlock","activeElement","isEnabled","blurSelectInput","getScrollTarget","ScrollCaptor","onBottomArrive","onBottomLeave","onTopArrive","onTopLeave","_this$scrollTarget","scrollTarget","isDeltaPositive","availableScroll","shouldCancelScroll","isBottom","isTop","cancelScroll","handleEventDelta","deltaY","touchStart","changedTouches","startListening","stopListening","onWheel","onTouchStart","onTouchMove","ScrollCaptorSwitch","instructionsAriaMessage","isSearchable","valueEventAriaMessage","isOptionDisabled","defaultStyles","clearIndicator","c","dropdownIndicator","groupHeading","indicatorsContainer","indicatorSeparator","loadingIndicator","loadingMessage","menuList","m","menuPortal","multiValue","multiValueLabel","multiValueRemove","noOptionsMessage","singleValue","valueContainer","v","defaultTheme","primary75","neutral70","neutral90","backspaceRemovesValue","blurInputOnSelect","captureMenuScroll","closeMenuOnSelect","closeMenuOnScroll","controlShouldRenderValue","escapeClearsValue","rawInput","_ignoreCase$ignoreAcc","ignoreCase","ignoreAccents","stringify","matchFrom","config","substr","formatGroupLabel","getOptionLabel","getOptionValue","menuShouldBlockScroll","openMenuOnFocus","openMenuOnClick","pageSize","screenReaderStatus","count","tabIndex","tabSelectsValue","instanceId","Select","ariaLiveSelection","ariaLiveContext","focusedOption","focusedValue","inputIsHidden","menuOptions","controlRef","focusedOptionRef","menuListRef","focusInput","blurInput","inputIsHiddenAfterUpdate","onMenuClose","clearFocusValueOnUpdate","isOptionSelected","setValue","announceAriaLiveSelection","removedValue","lastSelectedValue","custom","instancePrefix","button","blockOptionHover","openMenu","openAfterFocus","clearValue","isComposing","touch","touches","initialTouchX","initialTouchY","userIsDragging","deltaX","contains","onControlMouseDown","onClearIndicatorMouseDown","onDropdownIndicatorMouseDown","onMenuOpen","_this$props5","onFocus","announceAriaLiveContext","onBlur","_this$props6","hideSelectedOptions","_this$props7","isClearable","onKeyDown","defaultPrevented","focusValue","removeValue","popValue","shiftKey","selectOption","keyCode","focusOption","cacheComponents","_i","_selectValue","_menuOptions","buildMenuOptions","startListeningComposition","startListeningToTouch","autoFocus","_this$props8","getNextFocusedValue","getNextFocusedOption","_this$props9","scrollToFocusedOptionOnUpdate","stopListeningComposition","stopListeningToTouch","_this$props10","openAtIndex","selectedIndex","_this$props11","_this$state4","focusedIndex","lastIndex","nextFocus","_this$state5","classNamePrefix","getValue","getTheme","nextSelectValue","_this$state6","lastFocusedIndex","lastFocusedOption","_this$props12","formatOptionLabel","onCompositionStart","onCompositionEnd","onTouchEnd","_props$inputValue","toOption","id","shouldHideSelectedOptions","onHover","onOptionHover","onSelect","optionId","getElementId","onMouseMove","onMouseOver","acc","itemIndex","hasGroups","child","groupId","_this$state7","_this$props13","focusedValueMsg","valueFocusAriaMessage","focusedOptionMsg","optionFocusAriaMessage","resultsMsg","screenReaderMessage","resultsAriaMessage","countOptions","_this$props14","inputId","getInputRef","onInputBlur","onInputFocus","readOnly","ariaAttributes","_this$commonProps","commonProps","autoCapitalize","autoComplete","autoCorrect","spellCheck","_this$components","_this$props15","_this$state8","opt","isOptionFocused","onMouseDown","_this$props16","onClearIndicatorTouchEnd","_this$props17","_this$components2","onDropdownIndicatorTouchEnd","_this$components3","_this$state9","_this$props18","menuPortalTarget","onMenuScrollToTop","onMenuScrollToBottom","menuUI","getFocusedOptionRef","hasOptions","headingId","_message","menuPlacementProps","menuElement","_ref6$placerProps","onMenuMouseDown","onMenuMouseMove","getMenuListRef","_this$props19","delimiter","_value","constructAriaLiveMessage","_this$components4","_this$props20","getCommonProps","renderLiveRegion","getControlRef","onControlTouchEnd","renderPlaceholderOrValue","renderInput","renderClearIndicator","renderLoadingIndicator","renderIndicatorSeparator","renderDropdownIndicator","renderMenu","renderFormField","defaultProps$1","defaultInputValue","defaultMenuIsOpen","defaultValue","manageState","StateManager","callProp","getProp","StyleSheet","isSpeedy","speedy","tags","ctr","nonce","before","insert","rule","_tag","tag","setAttribute","createTextNode","createStyleElement","nextSibling","insertBefore","sheet","styleSheets","ownerNode","sheetForTag","isImportRule","charCodeAt","insertRule","cssRules","flush","parentNode","needle","toSheet","block","Sheet","ruleSheet","content","selectors","parents","line","column","ns","depth","at","stylisOptions","stylis","inserted","head","_insert","nodes","querySelectorAll","getAttribute","use","stylisPlugins","selector","serialized","shouldCache","cache","registered","getRegisteredStyles","registeredStyles","rawClassName","isStringTag","next","EmotionCacheContext","createContext","Provider","Consumer","forwardRef","typePropName","Noop","cssProp","newProps","ele","possiblyStyleElement","Fragment","Emotion","jsx","argsLength","createElementArgArray","createEmotionProps","keyframes","insertable","anim","classnames","len","cls","arg","toAdd","k","ClassNames","merge","h","hyphenateRegex","animationRegex","isCustomProperty","isProcessableValue","processStyleName","styleName","processStyleValue","p1","p2","handleInterpolation","mergedProps","interpolation","couldBeSelectorInterpolation","__emotion_styles","interpolated","createStringFromObject","previousCursor","result","cached","labelPattern","serializeStyles","stringMode","strings","identifierName","exec","rules","cell","childNodes","spannedCells","spannedCellContent","colspan","repeat","isNestedTable","tableNode","currentNode","nodeName","tables","turndownService","keep","addRule","tableCell","replacement","tableRow","tr","borderCells","alignMap","center","rows","tableSection","captionSection","_excluded","DividerRoot","slot","overridesResolver","ownerState","root","absolute","orientation","flexItem","withChildren","withChildrenVertical","textAlignRight","textAlignLeft","vars","divider","borderBottomWidth","dividerChannel","borderRightWidth","borderTop","flexDirection","borderLeft","DividerWrapper","wrapper","wrapperVertical","inProps","other","classes","slots","useUtilityClasses","getDividerUtilityClass","alphaValue","toFixed","getPaperUtilityClass","generateUtilityClass","generateUtilityClasses","PaperRoot","styled","square","rounded","_theme$vars$overlays","paper","transitions","shadows","mode","backgroundImage","overlays","useThemeProps","composeClasses","ownerWindow","reflow","getTransitionProps","_style$transitionDura","_style$transitionTimi","timeout","easing","transitionDuration","transitionTimingFunction","transitionDelay","getScale","entering","entered","isWebKit154","Grow","addEndListener","inProp","onEnter","onEntered","onEntering","onExit","onExiting","TransitionComponent","Transition","timer","autoTimeout","useTheme","nodeRef","handleRef","useForkRef","normalizedTransitionCallback","maybeIsAppearing","handleEntering","handleEnter","isAppearing","getAutoHeightDuration","handleEntered","handleExiting","handleExit","handleExited","childProps","muiSupportAuto","createChainedFunction","funcs","disablePortal","mountNode","setMountNode","useEnhancedEffect","getContainer","setRef","ariaHidden","show","removeAttribute","getPaddingRight","ariaHiddenSiblings","mountElement","currentElement","elementsToExclude","isNotExcludedElement","isNotForbiddenElement","isForbiddenTagName","isInputHidden","isAriaHiddenForbiddenOnElement","findIndexOf","idx","candidatesSelector","defaultGetTabbable","regularTabNodes","orderedTabNodes","nodeTabIndex","tabindexAttr","contentEditable","getTabIndex","getRadio","querySelector","roving","isNonTabbableRadio","isNodeMatchingSelectorFocusable","documentOrder","sort","defaultIsEnabled","disableAutoFocus","disableEnforceFocus","disableRestoreFocus","getTabbable","open","ignoreNextEnforceFocus","sentinelStart","sentinelEnd","nodeToRestore","reactFocusEventTarget","activated","rootRef","lastKeydown","doc","hasAttribute","contain","nativeEvent","rootElement","hasFocus","tabbable","_lastKeydown$current","_lastKeydown$current2","isShiftTab","focusNext","focusPrevious","loopFocus","interval","handleFocusSentinel","relatedTarget","childrenPropsHandler","getModalUtilityClass","isHostComponent","omitEventHandlers","prop","resolveComponentProps","componentProps","useSlotProps","parameters","_parameters$additiona","elementType","externalSlotProps","resolvedComponentsProps","internalRef","getSlotProps","additionalProps","externalForwardedProps","joinedClasses","mergedStyle","eventHandlers","excludeKeys","extractEventHandlers","componentsPropsWithoutEventHandlers","otherPropsWithoutEventHandlers","internalSlotProps","mergeSlotProps","otherProps","appendOwnerState","defaultContextValue","disableDefaultClasses","ClassNameConfiguratorContext","defaultManager","containers","modals","add","modal","modalIndex","modalRef","hiddenSiblings","getHiddenSiblings","mount","containerIndex","restore","containerInfo","restoreStyle","disableScrollLock","isOverflowing","scrollbarSize","getScrollbarSize","fixedElements","scrollContainer","DocumentFragment","containerWindow","setProperty","removeProperty","handleContainer","remove","ariaHiddenState","splice","nextTop","isTopModal","forwardedRef","_props$ariaHidden","closeAfterTransition","disableEscapeKeyDown","hideBackdrop","keepMounted","manager","onBackdropClick","onClose","onTransitionEnter","onTransitionExited","slotProps","exited","setExited","mountNodeRef","hasTransition","getHasTransition","ariaHiddenProp","getModal","handleMounted","handleOpen","useEventCallback","resolvedContainer","handlePortalRef","handleClose","backdrop","useClassNamesOverride","Root","rootProps","BackdropComponent","backdropProps","defaultTimeout","enteringScreen","leavingScreen","transitionProps","webkitTransition","getBackdropUtilityClass","BackdropRoot","invisible","_slotProps$root","_slots$root","componentsProps","rootSlotProps","ModalRoot","hidden","ModalBackdrop","_slots$backdrop","_slotProps$backdrop","BackdropProps","RootSlot","BackdropSlot","Backdrop","backdropSlotProps","getPopoverUtilityClass","_excluded2","getOffsetTop","getOffsetLeft","getTransformOriginValue","transformOrigin","resolveAnchorEl","anchorEl","PopoverRoot","PopoverPaper","anchorOrigin","anchorPosition","anchorReference","containerProp","marginThreshold","PaperProps","transitionDurationProp","TransitionProps","paperRef","handlePaperRef","getAnchorOffset","resolvedAnchorEl","anchorRect","nodeType","getTransformOrigin","elemRect","getPositioningStyle","elemTransformOrigin","anchorOffset","heightThreshold","widthThreshold","diff","isPositioned","setIsPositioned","setPositioningStyles","positioning","updatePosition","handleResize","wait","debounced","clear","getMenuUtilityClass","RTL_ORIGIN","LTR_ORIGIN","MenuRoot","MenuPaper","MenuMenuList","list","disableAutoFocusItem","MenuListProps","PopoverClasses","autoFocusItem","menuListActionsRef","activeItemIndex","selected","adjustStyleForScrollbar","actions","Timeout","currentId","disposeEffect","fn","hadKeyboardEvent","hadFocusVisibleRecently","hadFocusVisibleRecentlyTimeout","inputTypesWhitelist","search","tel","email","password","date","month","week","time","datetime","handleKeyDown","metaKey","altKey","ctrlKey","handlePointerDown","handleVisibilityChange","visibilityState","isFocusVisibleRef","matches","isContentEditable","focusTriggersKeyboardModality","isFocusVisible","getChildMapping","mapFn","Children","isValidElement","mapper","getNextChildMapping","prevChildMapping","nextChildMapping","prev","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","nextKey","pendingNextKey","mergeChildMappings","hasPrev","hasNext","prevChild","isLeaving","TransitionGroup","_React$Component","contextValue","isMounting","firstRender","currentChildMapping","childFactory","TransitionGroupContext","_t","_t2","_t3","_t4","_","enterKeyframe","exitKeyframe","pulsateKeyframe","TouchRippleRoot","TouchRippleRipple","pulsate","rippleX","rippleY","rippleSize","leaving","setLeaving","rippleClassName","ripple","rippleVisible","ripplePulsate","rippleStyles","childClassName","childLeaving","childPulsate","timeoutId","easeInOut","shorter","centerProp","ripples","setRipples","rippleCallback","ignoringMouseDown","startTimer","startTimerCommit","startCommit","params","cb","oldRipples","fakeElement","sqrt","sizeX","sizeY","stop","getButtonBaseUtilityClass","ButtonBaseRoot","MozAppearance","WebkitAppearance","textDecoration","colorAdjust","ButtonBase","centerRipple","disableRipple","disableTouchRipple","focusRipple","LinkComponent","onContextMenu","onDragLeave","onFocusVisible","onKeyUp","onMouseLeave","onMouseUp","TouchRippleProps","touchRippleRef","buttonRef","rippleRef","handleRippleRef","handleFocusVisible","handleBlurVisible","focusVisibleRef","focusVisible","setFocusVisible","mountedState","setMountedState","enableTouchRipple","useRippleHandler","rippleAction","eventCallback","skipRippleAction","handleMouseDown","handleContextMenu","handleDragLeave","handleMouseUp","handleMouseLeave","handleTouchStart","handleTouchEnd","handleTouchMove","handleBlur","handleFocus","isNonNativeButton","href","keydownRef","handleKeyUp","ComponentProp","buttonProps","focusVisibleClassName","composedClasses","getMenuItemUtilityClass","MenuItemRoot","dense","disableGutters","gutters","typography","body1","borderBottom","backgroundClip","mainChannel","selectedOpacity","focusOpacity","hoverOpacity","disabledOpacity","dividerClasses","inset","breakpoints","up","body2","tabIndexProp","ListContext","childContext","menuItemRef","getListUtilityClass","ListRoot","disablePadding","subheader","listStyle","nextItem","disableListWrap","firstChild","nextElementSibling","previousItem","lastChild","previousElementSibling","textCriteriaMatches","textCriteria","innerText","textContent","repeating","moveFocus","currentFocus","disabledItemsFocusable","traversalFunction","wrappedOnce","nextFocusDisabled","listRef","textCriteriaRef","previousKeyMatched","lastTime","containerElement","noExplicitWidth","muiSkipListHighlight","newChildProps","criteria","lowerKey","currTime","performance","now","keepFocusOnCurrent","Symbol","for","black","white","A100","A200","A400","A700","disabledBackground","activatedOpacity","addLightOrDark","intent","shade","tonalOffset","tonalOffsetLight","tonalOffsetDark","caseAllCaps","defaultFontFamily","createTypography","fontFamily","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","htmlFontSize","allVariants","pxToRem","pxToRem2","coef","buildVariant","letterSpacing","casing","variants","subtitle1","subtitle2","caption","overline","inherit","deepmerge","clone","createShadow","px","easeOut","easeIn","sharp","shortest","short","standard","complex","formatMs","milliseconds","constant","createTransitions","inputTransitions","mergedEasing","mergedDuration","durationOption","easingOption","animatedProp","mobileStepper","fab","speedDial","appBar","drawer","snackbar","tooltip","mixins","mixinsInput","paletteInput","transitionsInput","typographyInput","contrastThreshold","getDefaultPrimary","getDefaultSecondary","getDefaultError","getDefaultInfo","getDefaultSuccess","getDefaultWarning","getContrastText","augmentColor","mainShade","lightShade","darkShade","JSON","contrastText","modes","common","grey","createPalette","systemTheme","muiTheme","toolbar","argument","unstable_sxConfig","defaultSxConfig","unstable_sx","styleFunctionSx","sx","_excluded3","systemDefaultTheme","createTheme","lowercaseFirstLetter","resolveTheme","themeId","defaultOverridesResolver","processStyleArg","callableStyle","resolvedStylesArg","flatMap","resolvedStyle","isMatch","rootShouldForwardProp","slotShouldForwardProp","systemSx","__mui_systemSx","inputOptions","componentStyle","componentName","componentSlot","skipVariantsResolver","inputSkipVariantsResolver","skipSx","inputSkipSx","shouldForwardPropOption","defaultStyledResolver","stylesFactory","displayName","transformStyleArg","stylesArg","__emotion_real","muiStyledResolver","styleArg","expressions","transformedStyleArg","expressionsWithDefaultTheme","styleOverrides","resolvedStyleOverrides","entries","slotKey","slotStyle","_theme$components","numOfCustomFnsApplied","placeholders","fill","muiName","createStyled","resolveProps","output","propName","defaultSlotProps","slotPropName","getThemeProps","localTheme","outerTheme","mergeOuterLocalTheme","nested","RtlContext","PropsContext","EMPTY_THEME","useThemeScoping","upperTheme","isPrivate","resolvedTheme","mergedTheme","useThemeWithoutDefault","upperPrivateTheme","engineTheme","privateTheme","rtlValue","defaultBreakpoints","handleBreakpoints","propValue","styleFromPropValue","themeBreakpoints","breakpoint","cssKey","createEmptyBreakpointObject","breakpointsInput","_breakpointsInput$key","removeUnusedBreakpoints","breakpointKeys","breakpointOutput","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","clampWrapper","substring","colorSpace","shift","getLuminance","rgb","l","f","hslToRgb","getContrastRatio","foreground","lumA","lumB","alpha","darken","coefficient","lighten","applyStyles","getColorSchemeSelector","spacingInput","shapeInput","unit","step","sortedValues","breakpointsAsArray","breakpoint1","breakpoint2","sortBreakpointsValues","down","between","end","endIndex","not","keyIndex","createBreakpoints","mui","argsInput","createSpacing","properties","directions","r","y","aliases","marginX","marginY","paddingX","paddingY","getCssProperties","memoize","marginKeys","paddingKeys","spacingKeys","createUnaryUnit","themeKey","_getPath","themeSpacing","createUnarySpacing","transformer","transformed","cssProperties","cssProperty","getStyleFromPropValue","resolveCssProperty","filterProps","getPath","path","checkVars","getStyleValue","themeMapping","propValueFinal","userValue","handlers","borderTransform","createBorderStyle","borderRight","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","outlineColor","gap","columnGap","rowGap","paletteTransform","sizingTransform","_props$theme","_props$theme2","bgcolor","pt","pr","pb","pl","py","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd","mt","mr","mb","ml","mx","my","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd","displayPrint","flexBasis","alignContent","order","flexGrow","justifyItems","justifySelf","gridColumn","gridRow","gridAutoFlow","gridAutoColumns","gridAutoRows","gridTemplateColumns","gridTemplateRows","gridTemplateAreas","gridArea","fontStyle","getThemeValue","_theme$unstable_sxCon","traverse","sxInput","sxObject","emptyBreakpoints","breakpointsKeys","styleKey","maybeFn","breakpointsValues","objects","allKeys","union","Set","objectsHaveSameKeys","unstable_createStyleFunctionSx","contextTheme","ThemeContext","capitalize","toUpperCase","getUtilityClass","utilityClass","isPlainObject","toStringTag","iterator","deepClone","formatMuiErrorMessage","code","encodeURIComponent","defaultGenerator","generate","configure","generator","reset","createClassNameGenerator","globalStateClasses","checked","completed","expanded","focused","required","globalStatePrefix","globalStateClass","documentWidth","refs","IS_UNITLESS","animationIterationCount","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","flexPositive","flexNegative","flexOrder","lineClamp","orphans","tabSize","widows","zoom","fillOpacity","stopOpacity","strokeDashoffset","strokeOpacity","strokeWidth","module","utils","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","Promise","resolve","reject","requestData","requestHeaders","isFormData","XMLHttpRequest","auth","username","unescape","Authorization","btoa","fullPath","baseURL","onloadend","responseHeaders","getAllResponseHeaders","responseText","statusText","method","paramsSerializer","onreadystatechange","readyState","responseURL","onabort","onerror","ontimeout","timeoutErrorMessage","transitional","clarifyTimeoutError","isStandardBrowserEnv","xsrfValue","withCredentials","xsrfCookieName","read","xsrfHeaderName","setRequestHeader","isUndefined","onDownloadProgress","onUploadProgress","upload","cancelToken","promise","abort","send","Axios","mergeConfig","createInstance","defaultConfig","extend","axios","instanceConfig","defaults","Cancel","CancelToken","isCancel","promises","spread","isAxiosError","__CANCEL__","executor","resolvePromise","token","reason","throwIfRequested","InterceptorManager","dispatchRequest","validators","interceptors","assertOptions","silentJSONParsing","boolean","forcedJSONParsing","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","unshift","fulfilled","rejected","responseInterceptorChain","chain","newConfig","onFulfilled","onRejected","getUri","eject","isAbsoluteURL","combineURLs","requestedURL","enhanceError","transformData","throwIfCancellationRequested","transformRequest","adapter","transformResponse","toJSON","description","fileName","lineNumber","columnNumber","stack","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","directMergeKeys","getMergedValue","mergeDeepProperties","axiosKeys","otherKeys","validateStatus","fns","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","process","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isURLSearchParams","isObject","rawValue","parse","stringifySafely","strictJSONParsing","maxContentLength","maxBodyLength","thisArg","encode","serializedParams","parts","isDate","toISOString","hashmarkIndex","relativeURL","write","expires","domain","secure","cookie","toGMTString","decodeURIComponent","payload","originURL","msie","urlParsingNode","resolveURL","protocol","host","hash","hostname","port","pathname","location","requestURL","parsed","normalizedName","ignoreDuplicateOf","pkg","thing","deprecatedWarnings","currentVerArr","version","isOlderVersion","thanVersion","pkgVersionArr","destVer","isDeprecated","formatMessage","desc","opts","schema","allowUnknown","FormData","ArrayBuffer","isView","pipe","URLSearchParams","product","assignValue","stripBOM","ColorContrastChecker","rgbClass","g","isValidSixDigitColorCode","hex","isValidThreeDigitColorCode","isValidColorCode","isValidRatio","ratio","convertColorToSixDigit","hexToLuminance","getRGBFromHex","LRGB","calculateLRGB","calculateLuminance","check","colorA","colorB","customRatio","l1","l2","contrastRatio","verifyCustomContrastRatio","verifyContrastRatio","checkPairs","pairs","results","pair","lRGB","isLevelAA","WCAG_AA","isLevelAAA","WCAG_AAA","isLevelCustom","rVal","gVal","bVal","calculateSRGB","sRGB","pow","inputRatio","checkRatio","extendStatics","_block","_blocks","_bytes","_finalized","_first","_h0","_h1","_h2","_h3","_h4","_h5","_h6","_h7","_hashed","_hBytes","_is224","_lastByteIndex","_start","_inner","_is224_1","_oKeyPad","_sharedMemory","__extends","__","__classPrivateFieldSet","receiver","privateMap","has","set","__classPrivateFieldGet","get","BKDRHash","floor","HEX_CHARS","EXTRA","SHIFT","K","blocks","Sha256","is2241","sharedMemory1","init","is224","sharedMemory","msg","Uint8Array","blocks1","finalize","s0","s1","maj","t1","ab","da","cd","bc","j","j1","h0","h7","digest","array","arrayBuffer","dataView","DataView","setUint32","Sha256ToInt","sha256","WeakMap","_super","HmacSha256","secretKey","is2242","sharedMemory2","bytes","length_1","oKeyPad","iKeyPad","innerHash","HSL2RGB","H","S","L","q","ColorHash","lightness","saturation","param","hue","hueRanges","range","hsl","S1","global","uncurryThis","DESCRIPTORS","NATIVE_ARRAY_BUFFER","FunctionName","createNonEnumerableProperty","defineBuiltIns","fails","anInstance","toIntegerOrInfinity","toLength","toIndex","IEEE754","getOwnPropertyNames","arrayFill","arraySlice","setToStringTag","InternalStateModule","PROPER_FUNCTION_NAME","PROPER","CONFIGURABLE_FUNCTION_NAME","CONFIGURABLE","getInternalState","setInternalState","ARRAY_BUFFER","DATA_VIEW","PROTOTYPE","WRONG_INDEX","NativeArrayBuffer","$ArrayBuffer","ArrayBufferPrototype","$DataView","DataViewPrototype","ObjectPrototype","RangeError","reverse","packIEEE754","pack","unpackIEEE754","unpack","packInt8","packInt16","packInt32","unpackInt32","packFloat32","packFloat64","addGetter","isLittleEndian","intIndex","store","byteLength","byteOffset","conversion","INCORRECT_ARRAY_BUFFER_NAME","NaN","testView","$setInt8","setInt8","getInt8","setUint8","unsafe","bufferLength","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setFloat32","setFloat64","toObject","toAbsoluteIndex","lengthOfArrayLike","O","argumentsLength","endPos","$Array","LN2","mantissaLength","exponent","mantissa","exponentLength","eMax","eBias","rt","sign","Infinity","nBits","$trimEnd","forcedStringTrimMethod","trimEnd","$RangeError","it","$","ArrayBufferModule","anObject","speciesConstructor","nativeArrayBufferSlice","proto","forced","fin","viewSource","viewTarget","trimRight","toCamelCase","addPxToStyle","camel","detect","cssText","each","attributeNames","elementNames","Map","__assign","__createBinding","k2","getOwnPropertyDescriptor","__setModuleDefault","__importStar","mod","ElementType","entities_1","foreignNames_js_1","unencodedElements","replaceQuotes","singleTag","renderNode","Doctype","Directive","Comment","CDATA","elem","renderCdata","Script","Style","Tag","xmlMode","foreignModeIntegrationPoints","foreignElements","attribs","attributes","encodeEntities","decodeEntities","encodeXML","escapeAttribute","_b","emptyAttrs","formatAttributes","selfClosingTags","renderTag","Text","escapeText","renderText","isTag","__exportStar","DomHandler","domelementtype_1","node_js_1","defaultOpts","withStartIndices","withEndIndices","elementCB","dom","Document","done","tagStack","lastNode","parser","onparserinit","onreset","onend","handleCallback","onclosetag","pop","onopentag","Element","addNode","ontext","oncomment","oncommentend","oncdatastart","oncdataend","onprocessinginstruction","ProcessingInstruction","previousSibling","cloneNode","hasChildren","isDocument","isDirective","isComment","isText","isCDATA","NodeWithChildren","DataNode","Node","recursive","namespace","cloneChildren","clone_1","clone_2","clone_3","instruction","sourceCodeLocation","childs","getFeed","stringify_js_1","legacy_js_1","feedRoot","getOneElement","isValidFeed","feed","getElementsByTagName","entry","media","getMediaElements","addConditionally","link","fetch","pubDate","updated","getAtomFeed","getRssFeed","MEDIA_KEYS_STRING","MEDIA_KEYS_INT","where","medium","MEDIA_KEYS_STRING_1","attrib","MEDIA_KEYS_INT_1","expression","recurse","uniqueSort","compareDocumentPosition","DocumentPosition","removeSubsets","domhandler_1","nodeA","nodeB","aParents","bParents","maxIdx","DISCONNECTED","sharedParent","siblings","aSibling","bSibling","FOLLOWING","CONTAINED_BY","PRECEDING","CONTAINS","lastIndexOf","ancestor","relative","getElementsByTagType","getElementById","getElements","testElement","querying_js_1","Checks","tag_name","tag_type","tag_contains","getAttribCheck","combineFuncs","compileTest","limit","findOne","removeElement","childsIndex","prepend","prependChild","append","replaceElement","sibling","currNext","findAll","existsOne","findOneChild","find","nodeStack","indexStack","__importDefault","getText","getInnerHTML","getOuterHTML","dom_serializer_1","prevElementSibling","getName","hasAttrib","getAttributeValue","getSiblings","getParent","getChildren","decodeXML","decodeHTMLStrict","decodeHTMLAttribute","decodeHTML","determineBranch","EntityDecoder","DecodingMode","BinTrieFlags","fromCodePoint","replaceCodePoint","decodeCodePoint","xmlDecodeTree","htmlDecodeTree","decode_data_html_js_1","decode_data_xml_js_1","decode_codepoint_js_1","CharCodes","EntityDecoderState","decode_codepoint_js_2","ZERO","NINE","decodeTree","emitCodePoint","errors","EntityStart","consumed","treeIndex","excess","decodeMode","Strict","startEntity","NUM","NumericStart","stateNumericStart","NamedEntity","stateNamedEntity","NumericDecimal","stateNumericDecimal","NumericHex","stateNumericHex","LOWER_X","addToNumericResult","digitCount","startIdx","char","UPPER_A","UPPER_F","LOWER_A","LOWER_F","emitNumericEntity","lastCp","expectedLength","absenceOfDigitsInNumericCharacterReference","SEMI","missingSemicolonAfterCharacterReference","validateNumericCharacterReference","valueLength","VALUE_LENGTH","Attribute","EQUALS","UPPER_Z","LOWER_Z","isAsciiAlphaNumeric","emitNotTerminatedNamedEntity","emitNamedEntityData","getDecoder","ret","decoder","nodeIdx","branchCount","BRANCH_LENGTH","jumpOffset","JUMP_TABLE","lo","hi","mid","midVal","htmlDecoder","xmlDecoder","Legacy","decodeMap","codePoint","fromCharCode","encodeNonAsciiHTML","encodeHTML","encode_html_js_1","escape_js_1","htmlReplacer","encodeHTMLTrieRe","regExp","lastIdx","nextChar","cp","getCodePoint","xmlReplacer","escapeUTF8","escape","xmlCodeMap","getEscaper","regex","codePointAt","Uint16Array","restoreDiff","decodeXMLStrict","decodeHTML5Strict","decodeHTML4Strict","decodeHTML5","decodeHTML4","encodeHTML5","encodeHTML4","decodeStrict","decode","EncodingMode","EntityLevel","decode_js_1","encode_js_1","XML","level","HTML","UTF8","ASCII","escape_js_2","encode_js_2","decode_js_2","propMap","transformsMap","transformOriginMap","transforms","ep","expandTransform","allTransforms","expandTransforms","allTransformStrings","expandTransformStrings","flags","valueOf","processingInstructions","isValidNodeDefinitions","processNodeDefinitions","Parser","ProcessingInstructions","IsValidNodeDefinitions","ProcessNodeDefinitions","camelCaseMap","soFar","attr","lower","alwaysValid","HtmlParser","traverseDom","isValidNode","preprocessingInstructions","shouldPreprocessNode","preprocessNode","processingInstruction","shouldProcessNode","replaceChildren","processNode","parseWithInstructions","html","domTree","handler","parseComplete","parseHtmlToTree","domTreeItem","defaultProcessingInstructions","voidElementTags","processDefaultNode","ShouldProcessNodeDefinitions","shouldProcessEveryNode","camelCase","React","camelCaseAttrMap","booleanAttrs","elementProps","styleString","singleStyle","jsonStyles","createStyleJsonFromString","Function","allChildren","Tokenizer_js_1","formTags","pTag","tableSectionTags","ddtTags","rtpTags","openImpliesClose","voidElements","foreignContextElements","htmlIntegrationElements","reNameEnd","cbs","_c","_d","_e","openTagStart","tagname","attribname","attribvalue","foreignContext","buffers","bufferOffset","writeIndex","ended","lowerCaseTagNames","lowerCaseTags","lowerCaseAttributeNames","tokenizer","Tokenizer","getSlice","ontextentity","getSectionStart","isVoidElement","onopentagname","emitOpenTag","impliesClose","endOpenTag","isImplied","onopentagend","_f","pos","closeCurrentTag","onselfclosingtag","recognizeSelfClosing","isOpenImplied","onattribname","onattribdata","onattribentity","onattribend","quote","onattribute","QuoteType","Double","Single","NoValue","getInstructionName","ondeclaration","oncdata","_g","_h","_j","_k","recognizeCDATA","shiftBuffer","chunk","running","pause","resume","parseChunk","State","isWhitespace","Space","NewLine","Tab","FormFeed","CarriageReturn","isEndOfTagSection","Slash","Gt","Zero","Nine","Sequences","Cdata","CdataEnd","CommentEnd","ScriptEnd","StyleEnd","TitleEnd","sectionStart","baseState","isSpecial","currentSequence","sequenceIndex","trieIndex","trieCurrent","entityResult","entityExcess","entityTrie","finish","getIndex","stateText","Lt","fastForwardTo","BeforeTagName","Amp","BeforeEntity","stateSpecialStartSequence","isEnd","InTagName","stateInTagName","stateInSpecialTag","endOfText","actualIndex","stateInClosingTagName","stateCDATASequence","InCommentLike","InDeclaration","stateInDeclaration","stateInCommentLike","isTagStartChar","LowerA","LowerZ","UpperA","UpperZ","isASCIIAlpha","startSpecial","sequence","SpecialStartSequence","stateBeforeTagName","ExclamationMark","BeforeDeclaration","Questionmark","InProcessingInstruction","BeforeSpecialS","BeforeClosingTagName","BeforeAttributeName","stateBeforeAttributeName","stateBeforeClosingTagName","InClosingTagName","InSpecialComment","AfterClosingTagName","stateAfterClosingTagName","InSpecialTag","InSelfClosingTag","InAttributeName","stateInSelfClosingTag","stateInAttributeName","Eq","AfterAttributeName","stateAfterAttributeName","BeforeAttributeValue","stateBeforeAttributeValue","DoubleQuote","InAttributeValueDq","SingleQuote","InAttributeValueSq","InAttributeValueNq","stateInAttributeValueNoQuotes","handleInAttributeValue","stateInAttributeValueDoubleQuotes","stateInAttributeValueSingleQuotes","Unquoted","stateBeforeDeclaration","OpeningSquareBracket","CDATASequence","Dash","BeforeComment","stateInProcessingInstruction","stateBeforeComment","stateInSpecialComment","stateBeforeSpecialS","stateBeforeEntity","BeforeNumericEntity","InNamedEntity","stateInNamedEntity","emitNamedEntity","masked","allowLegacyEntity","Semi","entityStart","emitPartial","stateBeforeNumericEntity","LowerX","InHexEntity","InNumericEntity","stateInNumericEntity","strict","stateInHexEntity","UpperF","LowerF","isHexDigit","cleanup","shouldContinue","handleTrailingData","DomUtils","parseFeed","createDomStream","parseDOM","parseDocument","DefaultHandler","Parser_js_1","Parser_js_2","domhandler_2","elementCallback","domutils_1","domutils_2","parseFeedDefaultOptions","reAsciiWord","reLatin","rsAstralRange","rsComboMarksRange","rsComboSymbolsRange","rsDingbatRange","rsLowerRange","rsUpperRange","rsVarRange","rsBreakRange","rsMathOpRange","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsZWJ","rsLowerMisc","rsUpperMisc","rsOptLowerContr","rsOptUpperContr","reOptMod","rsModifier","rsOptVar","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","freeGlobal","freeSelf","deburrLetter","hasUnicode","objectToString","symbolProto","symbolToString","isObjectLike","isSymbol","baseToString","word","upperFirst","iteratee","accumulator","arrayReduce","pattern","hasUnicodeWord","unicodeWords","asciiWords","words","deburr","strSymbols","unicodeToArray","asciiToArray","stringToArray","chr","trailing","baseSlice","kebabCase","asciiSize","baseProperty","baseAssignValue","eq","objValue","copyObject","keysIn","Stack","arrayEach","baseAssign","baseAssignIn","cloneBuffer","copyArray","copySymbols","copySymbolsIn","getAllKeys","getAllKeysIn","getTag","initCloneArray","initCloneByTag","initCloneObject","isMap","isSet","argsTag","funcTag","objectTag","cloneableTags","baseClone","bitmask","customizer","isDeep","isFlat","isFull","isArr","isFunc","stacked","subValue","objectCreate","baseCreate","SetCache","arrayIncludes","arrayIncludesWith","arrayMap","baseUnary","cacheHas","nativeMin","arrays","comparator","othLength","othIndex","caches","maxLength","seen","outer","computed","baseGetTag","isPrototype","nativeKeysIn","isProto","identity","overRest","setToString","baseSetToString","assignFunc","valsLength","isArrayLikeObject","freeExports","freeModule","allocUnsafe","copy","cloneArrayBuffer","reFlags","regexp","symbolValueOf","symbol","typedArray","isNew","getSymbols","getSymbolsIn","castSlice","methodName","getNative","baseGetAllKeys","getPrototype","overArg","arrayPush","stubArray","cloneDataView","cloneRegExp","cloneSymbol","cloneTypedArray","Ctor","nativeMax","otherArgs","shortOut","nativeNow","lastCalled","stamp","remaining","unicodeSize","CLONE_DEEP_FLAG","baseIntersection","baseRest","castArrayLikeObject","intersection","mapped","isArrayLike","baseKeys","isArguments","isTypedArray","baseIsMap","nodeUtil","nodeIsMap","funcProto","objectProto","funcToString","objectCtorString","baseIsRegExp","nodeIsRegExp","isRegExp","baseIsSet","nodeIsSet","arrayLikeKeys","baseKeysIn","toNumber","INFINITY","toFinite","remainder","stringSize","toInteger","omission","separator","strLength","newEnd","createCaseFirst","baseZipObject","propIsEnumerable","test1","test2","test3","letter","err","shouldUseNative","symbols","getNanoSeconds","hrtime","loadTime","moduleLoadTime","nodeLoadTime","upTime","hr","uptime","prefixes","titleCase","vendors","suffix","caf","last","queue","frameDuration","_now","cancelled","handle","polyfill","formatDistanceLocale","lessThanXSeconds","one","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","buildFormatLongFn","defaultWidth","formats","formatLong","full","long","dateTime","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","buildLocalizeFn","dirtyIndex","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","_width","argumentCallback","buildMatchFn","matchPattern","matchPatterns","defaultMatchWidth","matchResult","matchedString","parsePatterns","defaultParseWidth","findKey","valueCallback","formatDistance","tokenValue","addSuffix","comparison","formatRelative","_date","_baseDate","_options","localize","ordinalNumber","dirtyNumber","rem100","era","narrow","abbreviated","wide","quarter","day","dayPeriod","am","pm","midnight","noon","morning","afternoon","evening","night","parsePattern","parseResult","any","weekStartsOn","firstWeekContainsDate","requiredArgs","_typeof","toDate","argStr","startOfUTCISOWeek","dirtyDate","getUTCDay","setUTCDate","getUTCDate","setUTCHours","getUTCISOWeekYear","year","getUTCFullYear","fourthOfJanuaryOfNextYear","setUTCFullYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","getDefaultOptions","startOfUTCWeek","_options$weekStartsOn","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","locale","getUTCWeekYear","_options$firstWeekCon","firstWeekOfNextYear","firstWeekOfThisYear","addLeadingZeros","targetLength","signedYear","getUTCMonth","getUTCHours","getUTCMinutes","getUTCSeconds","numberOfDigits","getUTCMilliseconds","G","lightFormatters","Y","signedWeekYear","weekYear","R","u","Q","M","w","firstWeek","startOfUTCWeekYear","getUTCWeek","I","isoWeek","fourthOfJanuary","startOfUTCISOWeekYear","getUTCISOWeek","D","dayOfYear","timestamp","setUTCMonth","difference","getUTCDayOfYear","E","dayOfWeek","localDayOfWeek","isoDayOfWeek","dayPeriodEnumValue","hours","B","X","_localize","timezoneOffset","_originalDate","getTimezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","z","originalDate","T","dirtyDelimiter","absOffset","minutes","dateLongFormatter","timeLongFormatter","longFormatters","P","dateTimeFormat","datePattern","timePattern","getTimezoneOffsetInMilliseconds","utcDate","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","protectedDayOfYearTokens","protectedWeekYearTokens","throwProtectedError","format","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","_options$locale2","_options$locale2$opti","_options$locale3","_options$locale3$opti","_defaultOptions$local3","_defaultOptions$local4","formatStr","defaultLocale","isValid","dirtyAmount","amount","addMilliseconds","subMilliseconds","formatterOptions","firstCharacter","longFormatter","matched","formatter","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","isProtectedDayOfYearToken","endOfMonth","setFullYear","setHours","startOfDay","startOfMonth","setDate","isSameYear","dirtyDateLeft","dirtyDateRight","dateLeft","dateRight","setMonth","dirtyMonth","dateWithDesiredMonth","daysInMonth","monthIndex","lastDayOfMonth","getDaysInMonth","setYear","dirtyYear","startOfYear","cleanDate","addMonths","dayOfMonth","endOfDesiredMonth","isBefore","dirtyDateToCompare","dateToCompare","isSameMonth","differenceInCalendarMonths","addDays","startOfWeek","getDay","startOfISOWeek","getUnixTime","isSameDay","dateLeftStartOfDay","dateRightStartOfDay","isAfter","startOfDayLeft","startOfDayRight","timestampLeft","timestampRight","subDays","addWeeks","addYears","endOfWeek","endOfISOWeek","dirtyDatesArray","datesArray","currentDate","getWeeksInMonth","startOfWeekLeft","startOfWeekRight","differenceInCalendarWeeks","getISOWeek","getISOWeekYear","startOfISOWeekYear","getWeek","getWeekYear","startOfWeekYear","isDayPickerMultiple","isDayPickerRange","isDayPickerSingle","defaultClassNames","multiple_months","with_weeknumber","vhidden","button_reset","caption_start","caption_end","caption_between","caption_label","caption_dropdowns","dropdown","dropdown_month","dropdown_year","dropdown_icon","months","tbody","tfoot","head_row","head_cell","nav","nav_button","nav_button_previous","nav_button_next","nav_icon","weeknumber","day_today","day_outside","day_selected","day_disabled","day_hidden","day_range_start","day_range_end","day_range_middle","formatCaption","formatDay","formatMonthCaption","formatWeekNumber","weekNumber","formatWeekdayName","weekday","formatYearCaption","labels","labelDay","activeModifiers","labelMonthDropdown","labelNext","labelPrevious","labelWeekday","labelWeekNumber","labelYearDropdown","DayPickerContext","DayPickerProvider","initialProps","defaultContextValues","captionLayout","formatters","modifiersClassNames","modifiers","numberOfMonths","fromYear","toYear","fromMonth","toMonth","fromDate","parseFromToProps","useDayPicker","useContext","CaptionLabel","displayMonth","IconDropdown","fillRule","Dropdown","dayPicker","IconDropdownComponent","MonthsDropdown","dropdownMonths","DropdownComponent","selectedMonth","newMonth","YearsDropdown","years","NavigationContext","NavigationProvider","initialMonth","defaultMonth","getInitialMonth","controlledValue","useState","uncontrolledValue","useControlledValue","disableNavigation","onMonthChange","useNavigationState","currentMonth","goToMonth","displayMonths","reverseMonths","monthsDiff","nextMonth","getDisplayMonths","startingMonth","pagedNavigation","getNextMonth","previousMonth","getPreviousMonth","isDateDisplayed","goToDate","refDate","useNavigation","CaptionDropdowns","handleMonthChange","CaptionLabelComponent","captionLabel","IconLeft","IconRight","Button","classNamesArr","Navigation","previousLabel","previousClassName","nextLabel","nextClassName","IconRightComponent","IconLeftComponent","hidePrevious","onPreviousClick","hideNext","onNextClick","CaptionNavigation","displayIndex","isFirst","isLast","Caption","Footer","footer","colSpan","HeadRow","showWeekNumber","ISOWeek","weekdays","days","getWeekdays","scope","Head","HeadRowComponent","DayContent","SelectMultipleContext","SelectMultipleProvider","SelectMultipleProviderInternal","isMaxSelected","selectedDay","onDayClick","selectedDays","ar","__spreadArray","useSelectMultiple","InternalModifier","SelectRangeContext","SelectRangeProvider","range_start","range_end","range_middle","SelectRangeProviderInternal","selectedFrom","selectedTo","after","newRange","addToRange","useSelectRange","matcherToArray","matcher","Selected","Disabled","Hidden","Today","RangeEnd","RangeMiddle","RangeStart","Outside","ModifiersContext","ModifiersProvider","internalModifiers","selectMultiple","selectRange","getInternalModifiers","customModifiers","dayModifiers","modifier","getCustomModifiers","useModifiers","getActiveModifiers","matchedModifiers","matchers","isDateRange","isDayOfWeekType","isDateInterval","isDayBefore","isDayAfter","isDateAfterType","isDateBeforeType","outside","MAX_RETRY","getNextFocus","focusedDay","moveBy","retry","lastFocused","newFocusedDay","isFocusable","FocusContext","FocusProvider","navigation","setFocusedDay","setLastFocused","initialFocusTarget","firstFocusableDay","firstDayInMonth","lastDayInMonth","getInitialFocusTarget","focusTarget","nextFocused","focusDayAfter","focusDayBefore","focusWeekAfter","focusWeekBefore","focusMonthBefore","focusMonthAfter","focusYearBefore","focusYearAfter","focusStartOfWeek","focusEndOfWeek","useFocusContext","SelectSingleContext","SelectSingleProvider","SelectSingleProviderInternal","useSelectSingle","useDayRender","focusContext","useActiveModifiers","single","multiple","onDayFocus","onDayBlur","onDayKeyDown","onDayKeyUp","onMouseEnter","onDayMouseEnter","onDayMouseLeave","onTouchCancel","onDayTouchCancel","onDayTouchEnd","onDayTouchMove","onDayTouchStart","useDayEventHandlers","useSelectedDays","isButton","useEffect","customClassName","isInternalModifier","internalClassName","getDayClassNames","modifiersStyles","getDayStyle","ariaLabel","showOutsideDays","DayContentComponent","divProps","isFocusTarget","Day","useRef","dayRender","WeekNumber","dates","onWeekNumberClick","Row","weekNumberCell","DayComponent","WeeknumberComponent","daysToMonthWeeks","toWeek","fromWeek","nOfDays","existingWeek","Table","hideHead","fixedWeeks","weeks","weeksInMonth","useFixedWeeks","nrOfMonthWeeks","lastDate","extraWeeks","getMonthWeeks","HeadComponent","RowComponent","FooterComponent","useIsomorphicLayoutEffect","serverHandoffComplete","genId","Month","captionId","providedId","initialId","setId","useId","isStart","isCenter","CaptionComponent","hasInitialFocus","setHasInitialFocus","initialFocus","RootProvider","DayPicker","sizerStyle","INPUT_PROPS_BLACKLIST","copyStyles","isIE","generateId","random","placeHolderSizerRef","placeHolderSizer","sizerRef","sizer","inputWidth","copyInputStyles","updateInputWidth","onAutosize","inputStyles","newInputWidth","placeholderIsMinWidth","extraWidth","injectStyles","dangerouslySetInnerHTML","__html","sizerValue","previousValue","currentValue","wrapperStyle","inputProps","field","cleanInputProps","inputClassName","renderStyles","replaceClassName","origClass","classToRemove","removeClass","classList","baseVal","CSSTransition","appliedClasses","maybeNode","maybeAppearing","_this$resolveArgument","resolveArguments","appearing","removeClasses","addClass","_this$resolveArgument2","_this$resolveArgument3","getClassNames","isStringClassNames","baseClassName","activeClassName","doneClassName","phase","hasClass","_addClass","_this$appliedClasses$","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","initialStatus","appearStatus","unmountOnExit","mountOnEnter","nextCallback","updateStatus","nextStatus","cancelNextCallback","getTimeouts","mounting","performEnter","performExit","timeouts","enterTimeout","safeSetState","onTransitionEnd","nextState","setNextCallback","doesNotHaveTimeoutOrListener","maybeNextCallback","contextType","forceReflow","createClass","possibleConstructorReturn","windowObject","cancelFrame","clearTimeoutFn","setTimeoutFn","cancelAnimationFrameFn","mozCancelAnimationFrame","webkitCancelAnimationFrame","requestAnimationFrameFn","mozRequestAnimationFrame","webkitRequestAnimationFrame","_arr","_n","_s","sliceIterator","slicedToArray","animationFrameID","timeoutID","AutoSizer","_React$PureComponent","classCallCheck","defaultHeight","_onResize","disableHeight","disableWidth","onResize","_parentNode","_height","_style","newHeight","newWidth","_setRef","autoSizer","_autoSizer","inherits","_detectElementResize","animationKeyframes","animationName","animationStartEvent","animationStyle","checkTriggers","resetTriggers","scrollListener","attachEvent","triggers","__resizeTriggers__","expand","firstElementChild","contract","lastElementChild","expandChild","__resizeLast__","__resizeRAF__","__resizeListeners__","keyframeprefix","domPrefixes","startEvents","elm","addResizeListener","elementStyle","styleSheet","createStyles","expandTrigger","contractTrigger","__animationListener__","removeResizeListener","detachEvent","createDetectElementResize","_state","outerStyle","childParams","bailoutOnChildren","InfiniteLoader","_lastRenderedStartIndex","_lastRenderedStopIndex","_memoizedUnloadedRanges","_onItemsRendered","_ensureRowsLoaded","_listRef","autoReload","isItemLoaded","_props$minimumBatchSi","minimumBatchSize","_props$threshold","threshold","unloadedRanges","rangeStartIndex","rangeStopIndex","_index","potentialStopIndex","_index2","_index3","scanForUnloadedRanges","startOrStop","_loadUnloadedRanges","loadMoreItems","loadMoreRows","_loop","lastRenderedStartIndex","lastRenderedStopIndex","resetAfterIndex","_getItemStyleCache","cancelTimeout","recalculate","cachedRTLResult","getRTLOffsetType","outerDiv","innerDiv","innerStyle","defaultItemKey$1","createListComponent","getEstimatedTotalSize","initInstanceProps","shouldResetStyleCacheOnItemSizeChange","List","_instanceProps","_resetIsScrollingTimeoutId","isScrolling","layout","isHorizontal","offsetHorizontal","___","_onScrollHorizontal","_resetIsScrollingDebounced","_event$currentTarget2","_resetIsScrolling","tick","validateSharedProps$1","innerElementType","_this$props5$itemKey","itemKey","outerElementType","useIsScrolling","_this$_getRangeToRend","overscanCount","getItemMetadata$1","instanceProps","itemMetadataMap","lastMeasuredIndex","findNearestItemBinarySearch$1","middle","currentOffset","estimatedItemSize","totalSizeOfMeasuredItems","VariableSizeList","findNearestItemExponentialSearch$1","findNearestItem$1","shouldForceUpdate","FixedSizeList","lastItemOffset","middleOffset","numVisibleItems","shallowDiffers","attribute","_attribute","areEqual","prevStyle","prevRest","nextStyle","nextRest","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentOwner","__self","__source","_owner","jsxs","runtime","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","define","innerFn","outerFn","tryLocsList","protoGenerator","Generator","Context","makeInvokeMethod","tryCatch","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","invoke","record","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","isGeneratorFunction","genFun","ctor","mark","awrap","async","iter","skipTempReset","rootRecord","rval","exception","loc","caught","hasCatch","hasFinally","finallyEntry","complete","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","globalThis","_defineProperties","_defineProperty","ownKeys","enumerableOnly","sym","_objectSpread2","getOwnPropertyDescriptors","_toConsumableArray","_arrayLikeToArray","_arrayWithoutHoles","_iterableToArray","minLen","_unsupportedIterableToArray","_nonIterableSpread","arr2","commonjsGlobal","createCommonjsModule","componentEmitter","Emitter","mixin","on","_callbacks","once","off","removeListener","removeAllListeners","callbacks","emit","listeners","hasListeners","after_1","err_cb","bail","proxy","trim_1","trimLeft","whitespace_pattern","componentQuerystring","lodash_merge","HASH_UNDEFINED","reIsHostCtor","reIsUint","typedArrayTags","moduleExports","freeProcess","require","types","binding","nodeIsTypedArray","uid","arrayProto","coreJsData","maskSrcKey","IE_PROTO","nativeObjectToString","reIsNative","_Symbol","symToStringTag","nativeIsBuffer","nativeCreate","Hash","ListCache","MapCache","__data__","inherited","isArg","isBuff","isType","skipIndexes","baseTimes","isIndex","assignMergeValue","assocIndexOf","getMapData","LARGE_ARRAY_SIZE","fromRight","baseFor","keysFunc","isOwn","unmasked","getRawTag","baseIsArguments","baseIsNative","isMasked","toSource","baseMerge","srcIndex","srcValue","mergeFunc","safeGet","isCommon","isTyped","toPlainObject","baseMergeDeep","isKeyable","isLength","assigner","sources","guard","isIterateeCall","hop","strCharAt","toStr","indexKeys","pred","keys_1","objectKeys","objToString","isArrayLike$1","baseEach","ks","each_1","collection","parse$1","has$1","utm","query","allowedKeys","term","lib","strict_1","foldl_1","componentUrl","isAbsolute","isRelative","isCrossDomain","componentUrl_1","isobject","isValidObject","splitChar","joinChar","segs","isObjectObject","prot","createKey","memo","_char","res","split$1","isValidKey","orig","LOG_LEVEL","logger","logLevel","_console2","_console4","commonNames","All","GoogleAnalytics","GA","GoogleAds","GOOGLEADS","Braze","BRAZE","Chartbeat","CHARTBEAT","Comscore","COMSCORE","Customerio","FB_PIXEL","GTM","Hotjar","hotjar","HOTJAR","Hubspot","HUBSPOT","Intercom","INTERCOM","Keen","KEEN","Kissmetrics","KISSMETRICS","Lotame","LOTAME","VWO","OPTIMIZELY","Optimizely","FULLSTORY","Fullstory","BUGSNAG","TVSQUARED","GoogleAnalytics4","GA4","MOENGAGE","AM","AMPLITUDE","Amplitude","Pendo","PENDO","Lytics","LYTICS","Appcues","APPCUES","POSTHOG","PostHog","Posthog","KLAVIYO","Klaviyo","CLEVERTAP","Clevertap","clientToServerNames","CUSTOMERIO","FACEBOOK_PIXEL","HS","TVSQUUARED","ReservedPropertyKeywords","MessageType","TRACK","PAGE","IDENTIFY","ECommerceEvents","PRODUCTS_SEARCHED","PRODUCT_LIST_VIEWED","PRODUCT_LIST_FILTERED","PROMOTION_VIEWED","PROMOTION_CLICKED","PRODUCT_CLICKED","PRODUCT_VIEWED","PRODUCT_ADDED","PRODUCT_REMOVED","CART_VIEWED","CHECKOUT_STARTED","CHECKOUT_STEP_VIEWED","CHECKOUT_STEP_COMPLETED","PAYMENT_INFO_ENTERED","ORDER_UPDATED","ORDER_COMPLETED","ORDER_REFUNDED","ORDER_CANCELLED","COUPON_ENTERED","COUPON_APPLIED","COUPON_DENIED","COUPON_REMOVED","PRODUCT_ADDED_TO_WISHLIST","PRODUCT_REMOVED_FROM_WISHLIST","WISH_LIST_PRODUCT_ADDED_TO_CART","PRODUCT_SHARED","CART_SHARED","PRODUCT_REVIEWED","CONFIG_URL","MAX_WAIT_FOR_INTEGRATION_LOAD","INTEGRATION_LOAD_CHECK_INTERVAL","replacer","generateUUID","getCurrentTimeFormatted","handleError","analyticsInstance","sampleAdBlockTest","errorMessage","Event","localName","src","page","sendAdblockPageOptions","getDefaultPageProperties","canonicalUrl","getCanonicalUrl","hashIndex","getUrl","referrer","getReferrer","referring_domain","getReferringDomain","getRevenue","eventName","revenue","total","getCurrency","tranformToRudderNames","integrationObject","findAllEnabledDestinations","sdkSuppliedIntegrations","configPlaneEnabledIntegrations","enabledList","allValue","intg","intgValue","rejectArr","rejectarray","rejectobject","cur","isEmpty","flattenJsonPayload","extractCustomFields","destination","exclusionFields","messageContext","objKeys","getDefinedTraits","traitsValue","userId","phone","firstName","lastName","city","country","bigIntValueOf","isObject$1","isArray$1","ScriptLoader","js","HubSpot","hubId","hubID","hubspotJs","rudderElement","traits","hubspotkey","userProperties","user_properties","_hsq","eventValue","objProto","owns","toStr$1","BigInt","isActualNaN","NON_HOST_TYPES","base64Regex","hexRegex","is","defined","empty","hosted","nil","undef","isStandardArguments","isOldArguments","arraylike","callee","isFinite","valid","infinite","decimal","divisibleBy","isDividendInfinite","isDivisorInfinite","isNonZeroNumber","integer","maximum","others","minimum","nan","even","odd","ge","gt","le","lt","within","primitive","base64","bigint","expr","is_1","toString$1","componentType$1","globals","unique","prefixed","toFunction_1","toFunction","defaultToFunction","objectToFunction","stripNested","$0","$1","type$1","has$2","componentEach","ctx","analytics","trackingID","sendUserId","dimensions","metrics","contentGroupings","nonInteraction","anonymizeIp","useGoogleAmpClientId","doubleClick","enhancedEcommerce","enhancedLinkAttribution","includeSearch","setAllMappedProps","siteSpeedSampleRate","sampleRate","trackCategorizedPages","trackNamedPages","optimizeContainerId","optimize","resetCustomDimensionsOnPage","enhancedEcommerceLoaded","namedTracker","eventWithCategoryFieldProductScoped","GoogleAnalyticsObject","ga","elementTo","pageCalled","dimensionsArray","metricsArray","contentGroupingsArray","loadIntegration","initializeGlobalObject","loadScript","cookieDomain","allowLinker","useAmpClientId","trackerName","ecommerce","metricsFunction","filters","sorts","_rudderElement$messag","extractCheckoutOptions","products","eventCategory","category","orderId","order_id","eventAction","eventLabel","campaign","loadEnhancedEcommerce","productTrack","createProductTrack","enhancedEcommerceTrackProduct","pushEnhancedEcommerce","affiliation","tax","shipping","coupon","track","product_id","sku","quantity","enhancedEcommerceTrackProductAction","promotion_id","creative","impressionObj","list_id","brand","band","price","getProductPosition","sorters","formatValue","campaignName","campaignSource","campaignMedium","campaignContent","campaignKeyword","setCustomDimenionsAndMetrics","currency","eventProperties","pageTitle","pageview","pagePath","pageReferrer","resetCustomDimensions","gaplugins","_window$ga","paymentMethod","shippingMethod","index$1","siteId","siteID","_ready","hotjarSiteId","hj","_hjSettings","hjid","hjsv","anonymousId","index$2","conversionId","conversionID","pageLoadConversions","clickEventConversions","defaultPageConversion","dataLayer","gtag","conversionData","getConversionData","conversionLabel","sendToValue","transaction_id","send_to","eventTypeConversions","eventTypeConversion","index$3","accountId","settingsTolerance","isSPA","libraryTolerance","useExistingJquery","sendExperimentTrack","sendExperimentIdentify","account_id","settings_tolerance","_library_tolerance","_use_existing_jquery","_vwo_code","use_existing_jquery","library_tolerance","finished","load","settings_timer","URL","_vwo_settings_timer","experimentViewedIdentify","experimentViewed","expId","variationId","_vwo_exp","comb_n","experimentId","variationName","identify","GoogleTagManager","containerID","rudderMessage","sendToGTMDatalayer","pageName","pageCategory","appKey","endPoint","dataCenter","dataCenterArr","gender","appboy","User","Genders","FEMALE","MALE","OTHER","appboyQueue","getUser","getCachedFeed","Feed","getCachedContentCards","ContentCards","initialize","enableLogging","baseUrl","automaticallyShowNewInAppMessages","changeUser","openSession","address","avatar","birthday","firstname","lastname","setAvatarImageUrl","setEmail","setFirstName","setGender","formatGender","setLastName","setPhoneNumber","setCountry","setHomeCity","setDateOfBirth","setCustomUserAttribute","currencyCode","del","productId","logPurchase","handlePurchase","handleReservedProperties","logCustomEvent","crypt","base64map","rotl","rotr","endian","randomBytes","bytesToWords","wordsToBytes","bytesToHex","hexToBytes","bytesToBase64","triplet","base64ToBytes","imod4","charenc","utf8","stringToBytes","bin","bytesToString","charenc_1","isBuffer_1","readFloatLE","isSlowBuffer","_isBuffer","md5","crypt$1","encoding","FF","_ff","GG","_gg","HH","_hh","II","_ii","aa","bb","cc","dd","_blocksize","_digestsize","digestbytes","asBytes","asString","NAME","API_KEY","apiKey","APP_ID","appId","MOBILE_APP_ID","mobileAppId","intercomSettings","app_id","ic","intercom_code","rawPayload","userHash","user_hash","hideDefaultLauncher","hide_default_launcher","companies","company","company_id","companyFields","created_at","user_id","event_name","originalTimestamp","projectID","writeKey","ipAddon","uaAddon","urlAddon","referrerAddon","client","KeenTracking","projectId","initKeen","user","getAddOn","extendEvents","recordEvent","addOns","ip_address","ip","user_agent","ua_string","page_url","referrer_url","keen","addons","has$3","extend_1","dest","objCase","normalize","normalizer","defaultNormalize","loop","normalizedKey","temp","prefixProperties","_kmq","_kmk","_kms","isEnvMobile","toUnixTimestamp","nestedObj","flattenedObj","flatten","safe","maxDepth","currentDepth","isarray","newKey","clean","KM","previousId","groupTraits","CustomerIO","_cio","_sf_async_config","useCanonical","isVideo","video","sendNameAndCategoryAsTitle","subscriberEngagementKeys","replayEvents","failed","isFirstPageCallMade","loadConfig","isLoaded","pSUPERFLY","virtualPage","initAfterPage","author","sections","authors","_cbq","script","_isReady","c2ID","comScoreBeaconParam","comScoreParams","beacon","mapComscoreParams","_comscore","comScoreBeaconParamsMap","c1","c2","FacebookPixel","blacklistPiiProperties","categoryToContent","pixelId","eventsToEvents","eventCustomProperties","valueFieldIdentifier","advancedMapping","traitKeyToExternalId","legacyConversionPixelId","userIdAsPixelId","whitelistPiiProperties","_fbq","fbq","callMethod","loaded","disablePushState","allowDuplicatePageViews","formatRevenue","buildPayLoad","standardTo","legacyTo","legacy","filtered","eventID","messageId","contents","customProperties","contentIds","contentType","content_ids","content_type","getContentType","useValue","content_name","product_name","content_category","item_price","pId","num_items","search_string","contentCategory","mappedTo","obj1","obj2","propObj1","propObj2","isStandardEvent","dateFields","defaultPiiProperties","customPiiProperties","configuration","blacklistPiiHash","toISOTring","isPropertyPii","isProperyWhiteListed","core","CryptoJS","undefined$1","F","subtype","C","C_lib","Base","overrides","mixIn","$super","propertyName","WordArray","sigBytes","encoder","Hex","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","thatByte","nBytes","rcache","m_w","m_z","mask","_r","C_enc","enc","hexChars","bite","hexStr","hexStrLength","Latin1","latin1Chars","latin1Str","latin1StrLength","Utf8","utf8Str","BufferedBlockAlgorithm","_data","_nDataBytes","_append","_process","doFlush","dataWords","dataSigBytes","blockSize","nBlocksReady","nWordsReady","_minBufferSize","nBytesReady","_doProcessBlock","processedWords","C_algo","Hasher","cfg","_doReset","messageUpdate","_doFinalize","_createHelper","hasher","_createHmacHelper","HMAC","algo","aes","parseLoop","base64Str","base64StrLength","reverseMap","bits1","bits2","Base64","_map","base64Chars","paddingChar","_reverseMap","paddingIndex","sin","MD5","_hash","offset_i","M_offset_i","M_offset_0","M_offset_1","M_offset_2","M_offset_3","M_offset_4","M_offset_5","M_offset_6","M_offset_7","M_offset_8","M_offset_9","M_offset_10","M_offset_11","M_offset_12","M_offset_13","M_offset_14","M_offset_15","nBitsTotal","nBitsLeft","nBitsTotalH","nBitsTotalL","H_i","HmacMD5","W","SHA1","HmacSHA1","_hasher","hasherBlockSize","hasherBlockSizeBytes","oKey","_oKey","iKey","_iKey","oKeyWords","iKeyWords","EvpKDF","keySize","iterations","compute","salt","derivedKey","derivedKeyWords","Cipher","C_mode","BlockCipherMode","CBC","Pkcs7","CipherParams","OpenSSLFormatter","SerializableCipher","OpenSSLKdf","PasswordBasedCipher","createEncryptor","_ENC_XFORM_MODE","createDecryptor","_DEC_XFORM_MODE","xformMode","_xformMode","dataUpdate","ivSize","selectCipherStrategy","cipher","encrypt","decrypt","ciphertext","StreamCipher","iv","Encryptor","Decryptor","_cipher","_iv","xorBlock","_prevBlock","processBlock","encryptBlock","thisBlock","decryptBlock","pad","blockSizeBytes","nPaddingBytes","paddingWord","paddingWords","unpad","BlockCipher","modeCreator","_mode","__creator","finalProcessedBlocks","cipherParams","OpenSSL","openSSLStr","ciphertextWords","encryptor","cipherCfg","algorithm","_parse","kdf","execute","derivedParams","SBOX","INV_SBOX","SUB_MIX_0","SUB_MIX_1","SUB_MIX_2","SUB_MIX_3","INV_SUB_MIX_0","INV_SUB_MIX_1","INV_SUB_MIX_2","INV_SUB_MIX_3","xi","x2","x4","x8","RCON","AES","_nRounds","_keyPriorReset","keyWords","ksRows","keySchedule","_keySchedule","ksRow","invKeySchedule","_invKeySchedule","invKsRow","_doCryptBlock","nRounds","s2","s3","t0","t2","t3","encUtf8","toString$2","componentType$2","multiline","ms","parse$2","plural","_long","_short","debug_1","enabled","curr","prevTime","useColors","prevColor","coerce","formatArgs","enable","namespaces","save","skips","names","humanize","browser","storage","debug","lastC","removeItem","firebug","chrome","local","localStorage","localstorage","rudderComponentCookie","encode$1","maxage","toUTCString","samesite","set$1","get$1","decode$1","parse$3","max$1","rest_1","has$4","objToString$1","isPlainObject$1","shallowCombiner","deepCombiner","defaultsDeep","defaultsWith","combiner","toDrop","resultsLength","drop_1","defaults_1","deep","json3","objectTypes","runInContext","SyntaxError","nativeJSON","getClass","isProperty","attempt","errorFunc","isExtended","isSupported","stringifySupported","parseSupported","functionClass","numberClass","stringClass","arrayClass","charIndexBuggy","_forOwn","Properties","dontEnums","isConstructor","hasProperty","Escapes","toPaddedString","_serializeDate","getData","seconds","Months","dateToJSON","nativeStringify","nativeToJSON","escapeChar","character","charCode","reEscape","serialize","whitespace","indentation","Index","Source","Unescapes","lex","begin","isSigned","hasMembers","walk","previousJSON","JSON3","isRestored","debug_1$1","browser$1","debug$1","componentCookie","encode$2","set$2","all$1","get$2","decode$2","parse$4","lib$1","levels","cname","CookieLocal","Cookie","win","localStorageName","scriptTag","defaultVal","transact","transactionFn","getAll","deserialize","isLocalStorageNameSupported","setItem","getItem","addBehavior","storageOwner","storageContainer","ActiveXObject","close","frames","withIEStorage","storeFunction","forbiddenCharsRegex","ieKeyFix","XMLDocument","testKey","StoreLocal","Store","defaults$1","Storage","encryptValue","decryptValue","Storage$1","defaults$2","lotameStorage","LotameStorage","bcpUrlSettingsPixel","bcpUrlSettingsIframe","dspUrlSettingsPixel","dspUrlSettingsIframe","mappings","mapping","LOTAME_SYNCH_CALLBACK","image","iframe","urlSettings","dspUrl","compileUrl","dspUrlTemplate","addPixel","_currentTime","addIFrame","setLotameSynchTime","methodToCallbackMapping","syncPixel","replaceKey","bcpUrl","bcpUrlTemplate","_currentTime2","isPixelToBeSynched","lastSynchedTime","getLotameSynchTime","referrerOverride","optimizelyEffectiveReferrer","sendDataToRudder","campaignState","experiment","variation","integrations","audiences","audiencesMap","audience","audienceIds","audienceNames","campaignId","experimentName","audienceId","audienceName","isInCampaignHoldback","sendExperimentTrackAsNonInteractive","customCampaignProperties","rudderProp","optimizelyProp","revenueOnlyOnOrderCompleted","customExperimentProperties","initOptimizelyIntegration","sendCampaignData","newActiveCampaign","optimizely","getCampaignStates","isActive","checkReferrer","getRedirectInfo","activeCampaigns","registerCurrentlyActiveCampaigns","Bugsnag","releaseStage","setIntervalHandler","initBugsnagClient","bugsnag","bugsnagClient","traitsFinal","notify","pascalCase","preserveConsecutiveUppercase","toLocaleUpperCase","toLocaleLowerCase","isLastCharLower","isLastCharUpper","isLastLastCharUpper","preserveCamelCase","m1","postProcess","camelcase","default_1","fs_org","fs_debug_mode","_fs_debug","_fs_host","_fs_script","_fs_org","_fs_namespace","_api","crossOrigin","setUserVars","shutdown","restart","consent","identifyAccount","acctId","clearUserCookie","_w","FS","getFSProperties","FS_properties","camelCaseField","fieldName","typeSuffix","TVSquared","_tvq","isReady","rev","brandId","clientId","eventWhiteList","customMetrics","_rudderElement$messag2","productType","wl","session","prod","promo","cm","setCustomVariable","requiredEventParameters","includeParams","CartShare","share_via","cart_id","ProductShare","Search","Promotion","eventParametersConfigArray","ListId","inItems","Category","Price","Currency","Coupon","Affiliation","Shipping","Tax","Total","CheckoutId","ShippingMethod","PaymentMethod","itemParametersConfigArray","eventNamesConfigArray","requiredParams","onlyIncludeParams","hasItem","includeList","pageEventParametersConfigArray","getDestinationEventProperties","destParameterConfig","destinationProperties","createItemProperty","getPageViewProperty","BUFFER","measurementId","blockPageView","blockPageViewEvent","extendPageViewParams","send_page_view","getDestinationItemProperties","checkRequiredParameters","eventMappingObj","hasRequiredParameters","getIncludedParameters","getdestinationProperties","sendGAEvent","eventMappingArray","getDestinationEventName","events","handleEventMapper","userTraits","pageProps","traitsMap","userName","MoEngage","analyticsinstance","moeBannerText","apiId","region","moengage_object","moengage_q","onsite","moe","onload","moeClient","debug_logs","cluster","initialUserId","track_event","destroy_session","add_unique_user_id","add_user_name","add_user_attribute","trackAllPages","trackUtmProperties","trackReferrer","batchEvents","eventUploadThreshold","eventUploadPeriodMillis","forceHttps","trackGclid","saveParamsReferrerOncePerSession","deviceIdFromUrlParam","trackRevenuePerProduct","preferAnonymousIdForDeviceId","traitsToSetOnce","traitsToIncrement","appendFieldsToEventProps","unsetParamsReferrerOnNewSession","trackProductsOnce","versionName","amplitude","_q","_iq","integrity","runQueuedFunctions","Identify","Revenue","getInstance","initOptions","includeUtm","includeGclid","includeReferrer","deviceId","getAnonymousId","setVersionName","setDeviceId","setUserId","amplitudeIdentify","trait","shouldIncrement","shouldSetOnce","setOnce","clonedTrackEvent","allProducts","productKeys","getProductAttributes","logEventAndCorrespondingRevenue","trackEventMessage","trackingEventAndRevenuePerProduct","_trackEventMessage","shouldTrackEventPerProduct","_trackEventMessage$pr","revenueType","revenue_type","trackRevenue","dontTrackRevenue","logEvent","_event","_event2","groupTypeTrait","groupValueTrait","groupType","groupValue","setGroup","amplitudeRevenue","setPrice","setQuantity","setEventProperties","setRevenueType","setProductId","logRevenueV2","initializeMe","constructPendoAnonymousId","accountObj","visitorObj","pendo","account","visitor","stream","blockload","loadid","jstag","blocked","sessecs","protocal","loadLyticsScript","pageView","teamApiKey","yourInstance","autocapture","capturePageView","disableSessionRecording","disableCookie","propertyBlackList","xhrHeaders","header","posthog","__SV","api_host","people","configObject","capture_pageview","disable_session_recording","property_blacklist","disable_cookie","xhr_headers","_integrations$POSTHOG","superProperties","setOnceProperties","unsetProperties","register","register_once","unregister","processSuperProperties","__loaded","publicApiKey","sendPageAsTrack","additionalPageInfo","enforceEmailAsPrimary","keysToExtract","exclusionKeys","_learnq","_getDefinedTraits","$id","$email","$phone_number","$first_name","$last_name","$city","$country","$organization","$title","$region","$zip","_id","propsPayload","$value","passcode","sourceUrl","clevertap","profile","onUserLogin","notifications","enablePersonalization","logout","Name","Identity","Email","Phone","Gender","DOB","Photo","Employed","Education","Married","Site","ecomProperties","checkout_id","Amount","Items","RudderApp","build","RudderLibraryInfo","RudderOSInfo","RudderScreenInfo","density","RudderContext","app","library","os","screen","devicePixelRatio","language","browserLanguage","device","network","RudderMessage","channel","messageType","checkForKey","SCREEN","RudderElement","rudderProperty","rudderUserProperty","RudderElementBuilder","inputRudderProperty","rudderPropertyBuilder","inputRudderUserProperty","rudderUserPropertyBuilder","eventType","setType","setEventName","setUserProperty","IDX","HEX","dist","v4","num","rngBrowser","getRandomValues","crypto","msCrypto","rnds8","rnds","byteToHex","_nodeId","_clockseq","bytesToUuid_1","buf","bth","_lastMSecs","_lastNSecs","v1_1","clockseq","seedBytes","msecs","nsecs","dt","tl","tmh","v4_1","rng","ii","uuid","v1","uuid$1","inMemoryStore","engine","defaultEngine","isSupportedNatively","inMemoryEngine","defaultEngine$1","inMemoryEngine$1","json","Store$1","optionalEngine","originalEngine","compoundKey","_createValidKey","quotaExceeded","isQuotaExceeded","_swapEngine","getOriginalEngine","store$1","defaultClock","clock","Schedule","tasks","nextId","run","task","_handle","cancelAll","setClock","newClock","resetClock","schedule","debug_1$2","debug$2","fmt","hour","uuid$2","debug$3","Queue","maxItems","maxAttempts","backoff","MIN_RETRY_DELAY","minRetryDelay","MAX_RETRY_DELAY","maxRetryDelay","FACTOR","backoffFactor","JITTER","backoffJitter","ACK_TIMER","RECLAIM_TIMER","RECLAIM_TIMEOUT","RECLAIM_WAIT","IN_PROGRESS","QUEUE","RECLAIM_START","RECLAIM_END","ACK","_schedule","_processId","_store","_ack","_checkReclaim","_processHead","_running","shouldRetry","attemptNumber","getDelay","rand","deviation","toPrecision","addItem","_enqueue","requeue","inProgress","toRun","enqueue","inProgressSize","_reclaim","tryReclaim","findOtherQueues","our","their","lib$2","RudderPayload","batch","queueOptions","eventRepository","EventRepository","eventsBuffer","batchSize","payloadQueue","sentAt","processQueueElement","repo","eventsPayload","xhr","queueFn","getElementContent","AnonymousId","addDomEventHandlers","rudderanalytics","srcElement","isTextNode","shouldTrackDomEvent","formValues","elements","formElement","shouldTrackElement","isValueToBeTrackedFromTrackingList","trackValues","getElementsByName","targetElementList","curEl","getClassName","elementsJson","isValueToBeTracked","attrLength","field_value","nthChild","nthOfType","currentElem","nth_child","nth_of_type","getPropertiesFromElement","elementText","TEXT_NODE","textValue","nodeValue","event_type","el_attr_href","el_text","form_values","trackWindowEvent","register_event","useCapture","isElementNode","elAttributesLength","USER_INTERFACE","decode$3","endsWith","atob","KEY_VALIDATOR","DELIMITER","parseLinker","linkerObj","isEven","checksum","serializedIds","parseLinkerParamValue","getCheckSum","isCheckSumValid","keyValuePairs","opt_offsetMin","fingerprint","getFingerprint","crcTable","makeCRCTable","crc","crc32","queryDefaults","Analytics","autoTrackHandlersRegistered","autoTrackFeatureEnabled","initialized","areEventsReplayed","clientIntegrations","loadOnlyIntegrations","clientIntegrationObjects","successfullyLoadedIntegration","failedToBeLoadedIntegration","toBeProcessedArray","toBeProcessedByIntegrationArray","sendAdblockPage","clientSuppliedCallbacks","readyCallback","executeReadyCallback","getUserId","getUserTraits","getGroupId","getGroupTraits","setAnonymousId","setGroupId","setUserTraits","setGroupTraits","initialReferrer","getInitialReferrer","initialReferringDomain","getInitialReferringDomain","setInitialReferrer","setInitialReferringDomain","useAutoTracking","destinations","destinationDefinition","intgArray","intgInstance","intgClass","destConfig","isInitialized","succesfulLoadedIntersectClientSuppliedIntegrations","_succesfulLoadedInter","isFailed","sendSampleRequest","processPage","processTrack","processIdentify","processAndSendDataToDestinations","getPageProperties","trackPage","trackEvent","identifyUser","processOptionsParam","contextualTraits","contextTrait","addCampaignInfo","getContextPageProperties","toplevelElements","defaultPageProperties","optionPageProperties","initial_referrer","initial_referring_domain","contextPageProperties","rudderAmpLinkerParm","parsedAnonymousIdObj","parsedAnonymousId","rs_amp_id","serverUrl","configUrl","isValidWriteKey","isValidServerUrl","setCookieDomain","getUserProvidedConfigUrl","tranformedCallbackMapping","registerCallbacks","startQueue","initializeUser","setInitialPageProperties","valTrackingList","getSourceConfig","processResponse","errorHandler","processDataInAnalyticsArray","cb_","getJSONTrimmed","calledFromLoad","qObj","returnObj","queryObject","eventProps","getEventPropertiesFromQueryObject","ajs_uid","ajs_aid","ajs_event","initializeCallbacks","eventsPushedAlready","argumentsArray","parseQueryString","i$1","ready","alias","factory","space","hasSpace","hasSeparator","separatorSplitter","unseparate","hasCamel","camelSplitter","previous","uppers","uncamelize","blockElements","isBlock","isVoid","meaningfulWhenBlankElements","tagNames","cleanAttribute","Rules","_keep","_remove","blankRule","blankReplacement","keepReplacement","defaultRule","defaultReplacement","findRule","filterValue","isPre","paragraph","lineBreak","br","hLevel","headingStyle","blockquote","listItem","bulletListMarker","indentedCodeBlock","codeBlockStyle","fencedCodeBlock","fenceChar","fence","fenceSize","fenceInCodeRegex","horizontalRule","inlineLink","linkStyle","referenceLink","linkReferenceStyle","references","emphasis","emDelimiter","strong","strongDelimiter","hasSiblings","isCodeBlock","extraSpace","alt","forNode","isBlank","_htmlParser","HTMLParser","DOMParser","canParse","parseFromString","canParseHTMLNatively","useActiveX","implementation","createHTMLDocument","shouldUseActiveX","designMode","RootNode","prevText","keepLeadingWs","nextNode","collapseWhitespace","preformattedCode","isPreOrCode","isCode","isMeaningfulWhenBlank","hasVoid","hasMeaningfulWhenBlank","flankingWhitespace","leading","edges","leadingAscii","leadingNonAscii","trailingNonAscii","trailingAscii","isFlankedByWhitespace","isFlanked","escapes","TurndownService","outerHTML","replacementForNode","indexEnd","trimTrailingNewlines","nls","turndown","canConvert","plugin","deepFreezeEs6","deepFreeze","delete","isFrozen","Response","isMatchIgnored","ignoreMatch","escapeHTML","inherit$1","original","emitsWrappingTags","sublanguage","HTMLRenderer","parseTree","classPrefix","addText","openNode","pieces","scopeToCSSClass","span","closeNode","newNode","TokenTree","rootNode","closeAllNodes","builder","_walk","_collapse","TokenTreeEmitter","addKeyword","addSublanguage","emitter","toHTML","lookahead","anyNumberOfTimes","optional","either","stripOptionsFromArgs","countMatchGroups","BACKREF_RE","_rewriteBackreferences","regexps","joinWith","numCaptures","IDENT_RE","UNDERSCORE_IDENT_RE","NUMBER_RE","C_NUMBER_RE","BINARY_NUMBER_RE","BACKSLASH_ESCAPE","relevance","APOS_STRING_MODE","illegal","QUOTE_STRING_MODE","COMMENT","modeOptions","excludeBegin","ENGLISH_WORD","C_LINE_COMMENT_MODE","C_BLOCK_COMMENT_MODE","HASH_COMMENT_MODE","NUMBER_MODE","C_NUMBER_MODE","BINARY_NUMBER_MODE","REGEXP_MODE","TITLE_MODE","UNDERSCORE_TITLE_MODE","METHOD_GUARD","MODES","MATCH_NOTHING_RE","RE_STARTERS_RE","SHEBANG","beginShebang","binary","resp","PHRASAL_WORDS_MODE","END_SAME_AS_BEGIN","_beginMatch","skipIfHasPrecedingDot","scopeClassName","_parent","beginKeywords","__beforeBegin","keywords","compileIllegal","compileMatch","compileRelevance","beforeMatchExt","beforeMatch","starts","originalMode","endsParent","COMMON_KEYWORDS","compileKeywords","rawKeywords","caseInsensitive","scopeName","compiledKeywords","compileList","keywordList","keyword","scoreForKeyword","providedScore","commonKeyword","seenDeprecations","deprecated","MultiClassError","remapScopeNames","regexes","scopeNames","positions","_emit","_multi","MultiClass","beginScope","scopeSugar","_wrap","endScope","skip","returnBegin","beginMultiClass","excludeEnd","returnEnd","endMultiClass","compileLanguage","langRe","case_insensitive","unicodeRegex","MultiRegex","matchIndexes","matchAt","compile","terminators","matcherRe","matchData","ResumableMultiRegex","multiRegexes","regexIndex","getMatcher","resumingScanAtSamePosition","considerAll","m2","compilerExtensions","classNameAliases","compileMode","cmode","isCompiled","ext","keywordPattern","$pattern","keywordPatternRe","beginRe","endsWithParent","endRe","terminatorEnd","illegalRe","cachedVariants","dependencyOnParent","expandOrCloneMode","mm","buildModeRegex","HTMLInjectionError","NO_MATCH","hljs","languages","plugins","SAFE_MODE","LANGUAGE_NOT_FOUND","PLAINTEXT_LANGUAGE","disableAutodetect","ignoreUnescapedHTML","throwUnescapedHTML","noHighlightRe","languageDetectRe","cssSelector","__emitter","shouldNotHighlight","languageName","codeOrLanguageName","optionsOrCode","ignoreIllegals","fire","_highlight","codeToHighlight","continuation","keywordHits","processKeywords","modeBuffer","matchText","kind","keywordRelevance","cssClass","processBuffer","subLanguage","continuations","highlightAuto","_emitter","processSubLanguage","emitMultiClass","klass","startNewMode","endOfMode","matchPlusRemainder","lexeme","doIgnore","resumeScanAtSamePosition","doEndMatch","endMode","origin","lastMatch","processLexeme","textBeforeMatch","badRule","newMode","beforeCallbacks","doBeginMatch","processed","getLanguage","processContinuations","processedCount","_top","_illegalBy","resultSoFar","errorRaised","languageSubset","plaintext","justTextHighlightResult","autoDetection","sorted","supersetOf","best","secondBest","highlightElement","blockLanguage","innerHTML","currentLang","resultLang","updateClassName","wantsHighlight","highlightAll","registerAliases","aliasList","lang","highlightBlock","userOptions","initHighlighting","initHighlightingOnLoad","registerLanguage","languageDefinition","error$1","rawDefinition","unregisterLanguage","listLanguages","addPlugin","upgradePluginAPI","debugMode","safeMode","versionString","HLJS","HighlightJS","_activeElement","shadowRoot","getRootNode","getPlatform","uaData","userAgentData","platform","brands","isAndroid","pressure","detail","pointerType","vendor","isEventTargetWithin","composedPath","TYPEABLE_SELECTOR","isTypeableElement","candidateSelector","NoElement","msMatchesSelector","webkitMatchesSelector","_element$getRootNode","isInert","lookUp","_node$getAttribute","inertAtt","getCandidatesIteratively","includeContainer","candidates","elementsToCheck","assigned","assignedElements","nestedCandidates","scopeParent","getShadowRoot","validShadowRoot","shadowRootFilter","_nestedCandidates","hasTabIndex","_node$getAttribute2","attValue","sortOrderedTabbables","isInput","isZeroArea","_node$getBoundingClie","isHiddenInput","displayCheck","nodeUnderDetails","originalNode","assignedSlot","_nodeRoot","_nodeRootHost","_nodeRootHost$ownerDo","_node$ownerDocument","nodeRoot","nodeRootHost","attached","_nodeRoot2","_nodeRootHost2","_nodeRootHost2$ownerD","isNodeAttached","getClientRects","isDetailsWithSummary","isDisabledFromFieldset","isNodeMatchingSelectorTabbable","isRadio","radioSet","radioScope","form","queryRadios","CSS","getCheckedRadio","isTabbableRadio","isValidShadowRootTabbable","shadowHostNode","sortByOrder","regularTabbables","orderedTabbables","isScope","candidateTabindex","getSortOrderTabIndex","sortable","getCandidates","useMergeRefs","useSafeInsertionEffect","useEffectEvent","rafId","enqueueFocus","preventScroll","cancelPrevious","sync","useLayoutEffect","FloatingArrow","floating","middlewareData","arrow","tipRadius","staticOffset","stroke","restStyle","clipPathId","halfStrokeWidth","svgX","svgY","isRTL","isCustomShape","isVerticalSide","yOffsetProp","xOffsetProp","arrowX","arrowY","dValue","rotation","clipPath","FloatingNodeContext","FloatingTreeContext","useFloatingParentNodeId","_React$useContext","useFloatingTree","createAttribute","useLatestRef","safePolygonIdentifier","useHover","onOpenChange","dataRef","domReference","mouseOnly","restMs","move","tree","parentId","handleCloseRef","delayRef","pointerTypeRef","timeoutRef","handlerRef","restTimeoutRef","blockMouseMoveRef","performedPointerEventsMutationRef","unbindMouseMoveRef","isHoverOpen","_dataRef$current$open","openEvent","onLeave","closeWithDelay","runElseBranch","closeDelay","cleanupMouseMoveHandler","clearPointerEvents","onScrollMouseLeave","isClickLikeOpenEvent","openDelay","_handleCloseRef$curre","__options","blockPointerEvents","_tree$nodesRef$curren","parentFloating","nodesRef","setPointerRef","onPointerDown","onPointerEnter","_node$context","currentChildren","_currentChildren","_node$context2","counterMap","uncontrolledElementsSet","WeakSet","markerMap","lockCount","supportsInert","unwrapHost","correctElements","targets","correctedTarget","markOthers","avoidElements","inert","uncorrectedAvoidElements","markerName","controlAttribute","elementsToKeep","elementsToStop","hiddenElements","markerCounter","alreadyHidden","counterValue","markerValue","applyAttributeToOthers","getTabbableOptions","ResizeObserver","getTabbableIn","allTabbable","activeIndex","getNextTabbable","getPreviousTabbable","isOutsideEvent","disableFocusInside","dataset","tabindex","enableFocusInside","HIDDEN_STYLES","clip","setActiveElementOnTab","FocusGuard","setRole","restProps","PortalContext","FloatingPortal","preserveTabOrder","portalNode","setPortalNode","uniqueId","portalContext","usePortalContext","existingIdRoot","subRoot","idWrapper","useFloatingPortalNode","focusManagerState","setFocusManagerState","beforeOutsideRef","afterOutsideRef","beforeInsideRef","afterInsideRef","shouldRenderGuards","_beforeInsideRef$curr","prevTabbable","_afterInsideRef$curre","nextTabbable","closeOnFocusOut","LIST_LIMIT","previouslyFocusedElements","addPreviouslyFocusedElement","isConnected","getPreviouslyFocusedElement","VisuallyHiddenDismiss","FloatingFocusManager","guards","_guards","returnFocus","visuallyHiddenDismiss","nodeId","ignoreInitialFocus","isUntrappedTypeableCombobox","orderRef","initialFocusRef","returnFocusRef","startDismissButtonRef","endDismissButtonRef","preventReturnFocusRef","isPointerDownRef","isInsidePortal","getTabbableContent","getTabbableElements","flat","renderDismissButton","els","handleFocusOutside","queueMicrotask","movedToUnrelatedNode","_nodes$find","allAncestors","currentParentId","getAncestors","_node$context3","_node$context4","_portalContext$portal","portalNodes","insideElements","previouslyFocusedElement","focusableElements","initialFocusValue","elToFocus","focusAlreadyInsideFloatingEl","preventReturnFocusScroll","contextData","mozInputSource","isTrusted","buttons","activeEl","isFocusInsideFloatingTree","_node$context5","returnElement","MutationObserver","handleMutation","observer","observe","childList","subtree","disconnect","_portalContext$before","_portalContext$afterO","activeLocks","FloatingOverlay","lockScroll","lockId","isIOS","bodyStyle","paddingProp","scrollX","pageXOffset","scrollY","_window$visualViewpor","_window$visualViewpor2","offsetLeft","visualViewport","isButtonTarget","isSpaceIgnored","useClick","eventOption","toggle","ignoreMouse","keyboardHandlers","didKeyDownRef","bubbleHandlerKeys","pointerdown","mousedown","click","captureHandlerKeys","normalizeProp","normalizable","_normalizable$escapeK","_normalizable$outside","escapeKey","outsidePress","useDismiss","unstable_outsidePress","outsidePressEvent","referencePress","referencePressEvent","ancestorScroll","bubbles","outsidePressFn","insideReactTreeRef","endedOrStartedInsideRef","escapeKeyBubbles","outsidePressBubbles","escapeKeyCapture","outsidePressCapture","closeOnEscapeKeyDown","shouldDismiss","_child$context","__escapeKeyBubbles","isReactEvent","closeOnEscapeKeyDownCapture","_getTarget2","_getTarget","closeOnPressOutside","insideReactTree","endedOrStartedInside","inertSelector","markers","targetRootAncestor","nextParent","canScrollX","canScrollY","xCond","offsetX","targetIsInsideChildren","_child$context2","__outsidePressBubbles","closeOnPressOutsideCapture","_getTarget4","_getTarget3","ancestors","contextElement","_doc$defaultView","useFloating","_options$elements2","unstable_onOpenChange","_domReference","setDomReference","domReferenceRef","_map$get","listener","_map$get2","createPubSub","floatingId","setPositionReference","positionReference","setReference","useFocus","visibleOnly","blockFocusRef","keyboardModalityRef","movedToFocusGuard","ACTIVE_KEY","SELECTED_KEY","mergeProps","userProps","propsList","elementKey","isItem","domUserProps","validProps","propsOrGetProps","useInteractions","deps","getReferenceProps","getFloatingProps","getItemProps","componentRoleToAriaRoleMap","useRole","_componentRoleToAriaR","ariaRole","referenceId","isNested","floatingProps","camelCaseToKebabCase","ofs","execWithArgsOrReturn","valueOrFn","useTransitionStyles","initial","unstable_initial","unstable_open","unstable_close","unstable_common","fnArgs","isNumberDuration","openDuration","closeDuration","setStyles","isMounted","initiated","setInitiated","setStatus","durationMs","setIsMounted","useDelayUnmount","frame","useTransitionStatus","initialRef","openRef","closeRef","commonRef","initialStyles","closeStyles","commonStyles","openStyles","transitionProperty","isPointInPolygon","point","polygon","isInside","yi","xj","yj","safePolygon","requireIntent","hasLanded","lastX","lastY","lastCursorTime","clientPoint","isLeave","isOverFloatingEl","isOverReferenceEl","refRect","cursorLeaveFromRight","cursorLeaveFromBottom","isOverReferenceRect","isFloatingWider","isFloatingTaller","rectPoly","cursorSpeed","elapsedTime","distance","getCursorSpeed","cursorPointOne","cursorPointTwo","getPolygon","_assertThisInitialized","_getPrototypeOf","_inheritsLoose","_objectSpread","_objectWithoutPropertiesLoose","_setPrototypeOf","alignments","placements","createCoords","oppositeSideMap","oppositeAlignmentMap","axis","getAxisLength","getAlignmentAxis","getAlignmentSides","rects","rtl","alignmentAxis","mainAlignmentSide","getOppositePlacement","getOppositeAlignmentPlacement","getPaddingObject","expandPaddingObject","rectToClientRect","computeCoordsFromPlacement","sideAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","detectOverflow","_await$platform$isEle","strategy","boundary","rootBoundary","elementContext","altBoundary","paddingObject","clippingClientRect","getClippingRect","isElement","getDocumentElement","getOffsetParent","offsetScale","elementClientRect","convertOffsetParentRelativeRectToViewportRelativeRect","getBoundingRect","minX","minY","getCssDimensions","hasOffset","shouldFallback","unwrapElement","domElement","noOffsets","getVisualOffsets","includeScale","isFixedStrategy","clientRect","scale","visualOffsets","floatingOffsetParent","shouldAddVisualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","clientLeft","clientTop","getWindowScrollBarX","leftScroll","getClientRectFromClippingAncestor","clippingAncestor","visualViewportBased","getViewportRect","scroll","getDocumentRect","getInnerBoundingClientRect","hasFixedPositionAncestor","stopNode","getRectRelativeToOffsetParent","isOffsetParentAnElement","offsets","offsetRect","htmlX","htmlY","htmlRect","isStaticPositioned","getTrueOffsetParent","rawOffsetParent","svgOffsetParent","topLayer","clippingAncestors","cachedResult","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","getClippingElementAncestors","firstClippingAncestor","clippingRect","accRect","getElementRects","getOffsetParentFn","getDimensionsFn","getDimensions","floatingDimensions","autoUpdate","ancestorResize","elementResize","layoutShift","IntersectionObserver","animationFrame","referenceEl","cleanupIo","onMove","io","_io","refresh","rootMargin","isFirstUpdate","handleObserve","intersectionRatio","observeMove","frameId","reobserveFrame","resizeObserver","firstEntry","unobserve","_resizeObserver","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","_middlewareData$offse","_middlewareData$arrow","diffCoords","mainAxisMulti","crossAxisMulti","mainAxis","crossAxis","convertValueToCoords","alignmentOffset","_middlewareData$autoP","_middlewareData$autoP2","_placementsThatFitOnE","allowedPlacements","autoAlignment","detectOverflowOptions","placements$1","getPlacementList","currentIndex","autoPlacement","currentPlacement","alignmentSides","currentOverflows","allOverflows","overflows","nextPlacement","placementsSortedByMostSpace","resetPlacement","checkMainAxis","checkCrossAxis","limiter","mainAxisCoord","crossAxisCoord","maxSide","limitedCoords","_middlewareData$flip","initialPlacement","fallbackPlacements","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","flipAlignment","initialSideAxis","isBasePlacement","oppositePlacement","getExpandedPlacements","hasFallbackAxisSideDirection","lr","rl","tb","bt","getSideList","getOppositeAxisPlacements","overflowsData","flip","sides","_middlewareData$flip2","_overflowsData$filter","nextIndex","_overflowsData$filter2","currentSideAxis","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","shouldAddOffset","centerOffset","nativeClientRects","clientRects","sortedRects","groups","prevRect","getRectsByLine","fallback","resetRects","firstRect","lastRect","isLeftSide","maxRight","minLeft","measureRects","mergedOptions","platformWithCache","middleware","validMiddleware","statefulPlacement","resetCount","nextX","nextY","computePosition","deepEqual","getDPR","roundByDPR","dpr","externalReference","externalFloating","whileElementsMounted","setData","latestMiddleware","setLatestMiddleware","_reference","_setReference","_floating","_setFloating","referenceRef","setFloating","floatingRef","floatingEl","hasWhileElementsMounted","whileElementsMountedRef","platformRef","fullData","isMountedRef","floatingStyles","arrow$1","inline","hasWindow","getNodeName","isNode","getWindow","isHTMLElement","isShadowRoot","ShadowRoot","isOverflowElement","isTableElement","isTopLayer","isContainingBlock","elementOrCss","webkit","isWebKit","perspective","containerType","backdropFilter","getContainingBlock","getParentNode","isLastTraversableNode","supports","getNodeScroll","getNearestOverflowAncestor","getOverflowAncestors","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","frameElement","getFrameElement","scrollMode","skipOverflowHiddenElements","scrollingElement","V","scrollMarginTop","scrollMarginRight","scrollMarginBottom","scrollMarginLeft","borderLeftWidth","borderTopWidth","behavior","startTime","ease","startX","startY","scrollable","elapsed","onScrollChange","tinycolor","ok","named","rgba","hsla","hsv","hsva","hex8","parseIntFromHex","convertHexToDecimal","hex6","hex4","hex3","stringInputToObject","isValidCSSUnit","bound01","convertToPercentage","hsvToRgb","hue2rgb","boundAlpha","inputToRGB","_originalInput","_roundA","_format","_gradientType","gradientType","_ok","rgbToHsl","rgbToHsv","rgbToHex","allow3Char","pad2","rgbaToArgbHex","convertDecimalToHex","_desaturate","toHsl","clamp01","_saturate","_greyscale","desaturate","_lighten","_brighten","toRgb","_darken","_spin","_complement","polyad","_splitcomplement","_analogous","slices","_monochromatic","toHsv","modification","isDark","getBrightness","isLight","getOriginalInput","getFormat","getAlpha","RsRGB","GsRGB","BsRGB","toHsvString","toHslString","toHex","toHexString","toHex8","allow4Char","rgbaToHex","toHex8String","toRgbString","toPercentageRgb","toPercentageRgbString","toName","hexNames","toFilter","secondColor","hex8String","secondHex8String","formatSet","formattedString","hasAlpha","_applyModification","brighten","saturate","greyscale","spin","_applyCombination","analogous","complement","monochromatic","splitcomplement","triad","tetrad","fromRatio","newColor","equals","color1","color2","mix","rgb1","rgb2","readability","isReadable","wcag2","wcag2Parms","parms","mostReadable","baseColor","colorList","includeFallbackColors","bestColor","bestScore","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","blanchedalmond","blue","blueviolet","brown","burlywood","burntsienna","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","whitesmoke","yellow","yellowgreen","flipped","isOnePointZero","processPercent","isPercentage","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","getEntriesByType","responseStart","domInteractive","domContentLoadedEventStart","domComplete","persisted","timeStamp","activationStart","prerendering","wasDiscarded","rating","navigationType","PerformanceObserver","supportedEntryTypes","getEntries","buffered","firstHiddenTime","reportAllChanges","hadRecentInput","takeRecords","largestShiftTarget","largestShiftTime","largestShiftValue","largestShiftSource","largestShiftEntry","loadState","attribution","timeToFirstByte","firstByteToFCP","navigationEntry","fcpEntry","interactionId","interactionCount","durationThreshold","entryType","latency","N","requestIdleCallback","U","J","nt","processingEnd","renderTime","processingStart","PerformanceEventTiming","interactionTarget","interactionTargetElement","interactionType","interactionTime","nextPaintTime","processedEventEntries","longAnimationFrameEntries","inputDelay","processingDuration","presentationDelay","ot","resourceLoadDelay","resourceLoadDuration","elementRenderDelay","requestStart","responseEnd","lcpEntry","lcpResourceEntry"],"sourceRoot":""}