{"version":3,"file":"js/frontend-bbf64a2d0bf9e1118be0.js","mappings":"6PAkBA,MAdaA,KAETC,EAAAA,EAAAA,IAAA,OAAKC,UAAU,gBACbD,EAAAA,EAAAA,IAAA,OACEC,UAAU,eACVC,IAAKC,EACLC,IAAI,aACJC,MAAM,WAERL,EAAAA,EAAAA,IAAA,MAAIC,UAAU,kCAAiC,sBCTrD,MAFaK,EAAAA,EAAGC,IAAG,yW,oOCWnB,MAXA,SAAoBC,GAClB,OACER,EAAAA,EAAAA,IAAA,MAAAS,EAAA,CAAKC,QAAQ,YAAYC,MAAM,8BAAiCH,IAC9DR,EAAAA,EAAAA,IAAA,QACEY,EAAE,6QACFC,KAAK,iBAIb,ECFA,MAAMC,EAAeC,EAAAA,EAAOC,MAAkB,CAC1C,isBACF,EAAGC,YAAW,KAAYA,GAAc,sFAkB1C,MAdET,IAGER,EAAAA,EAAAA,IAAA,OAAAkB,IAAA,wBACElB,EAAAA,EAAAA,IAACc,EAAiBN,GACjBA,EAAMS,WACLjB,EAAAA,EAAAA,IAAA,OAAAkB,IAAA,yRACElB,EAAAA,EAAAA,IAACmB,EAAW,CAACC,MAAO,cCf9B,MAAMC,EAAW,CACfC,QAAW,mPACXC,YAAe,uNACfC,eAAkB,+MAClBC,KAAQ,oPACRC,QAAW,sPAUb,MAPeX,EAAAA,EAAOY,OAAoB,CACtC,8vBACF,EAAGC,UAAU,aAAgBP,EAASO,GACtC,EAAGC,YAAW,KACZA,GAAc,oM,oBCnBlB,MAAMC,EAAY,uBAMLC,EAAeA,IAC1BC,eAAeC,QAAQH,GAEZI,EAAQA,KACnBF,eAAeG,WAAWL,EAAU,E,8uCCR/B,MAAMM,UAAqBC,MAIhCC,WAAAA,CAAYC,EAAiBC,EAAeC,GAC1CC,MAAMH,GAAS,KAJjBC,UAAI,OACJC,cAAQ,EAINE,KAAKF,SAAWA,EAChBE,KAAKH,KAAOA,EACZG,KAAKC,KAAO,cACd,EAyBF,SAASC,EACPC,EACAC,EACAC,EAAmC,CAAC,GACf,IADhBC,EAAOxC,EAAA,I,oEAAAyC,CAAAF,GAAAA,IAEZ,MAAMG,EAAOF,EAAQE,MAAQC,KAAKC,UAAUJ,EAAQE,MAE9CG,EApBR,SAAqBC,GACnB,MAAMD,EAAkBE,EAAA,CACtBC,OAAQ,mBACR,eAAgB,oBACbF,GAIL,OADIxB,MAAgBuB,EAAuB,cAAK,UAASvB,OAClDuB,CACT,CAWkBI,CAAYT,EAAQK,SAEpC,OAAOK,MAAMZ,EAAGS,EAAAA,EAAA,GACXP,GAAO,IACVH,SACAK,OACAG,aAECM,MAAMnB,GACkB,KAAnBA,EAASoB,QAAqC,MAApBpB,EAASoB,OAC9BC,QAAQC,IAAI,CAACtB,EAAU,CAAC,IAC1BqB,QAAQC,IAAI,CAACtB,EAAUuB,EAAkBvB,OAEjDmB,MAAK,EAAEnB,EAAUD,MAChB,GAAIC,EAASoB,OAAS,KAAOpB,EAASoB,QAAU,IAAK,CAEnD,MAAMI,EACJzB,EAAK0B,OAAS1B,EAAK2B,QAAQC,KAAK,OAAS3B,EAAS4B,WAC9CH,EAAQ,IAAI9B,EAAa6B,EAAczB,EAAMC,GACnD,OAAOqB,QAAQQ,OAAOJ,EACxB,CACA,OAAO1B,CAAI,GAEjB,CAEA,MAAMwB,EAAoBO,UACxB,MAAMC,QAAa/B,EAAS+B,OAC5B,IAEE,OADapB,KAAKqB,MAAMD,EAE1B,CAAE,MAAON,GACP,MAAO,CAAC,CACV,GAGWQ,EAGaA,CAAI3B,EAAa4B,EAAwB,CAAC,IAClE9B,EAAW,MAAOE,EAAK4B,G,oOCvEzB,MAAMC,EAAYtE,EAAAA,EAAGC,IAAG,6XAMlBsE,GAAWC,EAAAA,EAAAA,IAAe,CAC9BC,oBAAqB,CACnBC,GAAG,6BACHC,eAAe,CAAD,iCAGhBC,oBAAqB,CACnBF,GAAG,6BACHC,eAAe,CAAD,4BAGhBE,aAAc,CACZH,GAAG,oBACHC,eAAe,CAAD,wDAUH,SAASG,IACtB,MAAMC,GAAOC,EAAAA,EAAAA,KACPC,GAAUC,EAAAA,EAAAA,MAuBhB,OACExF,EAAAA,EAAAA,IAAC4E,EAAS,MACR5E,EAAAA,EAAAA,IAACyF,EAAI,CAAAvE,IAAA,oCACHlB,EAAAA,EAAAA,IAACD,EAAI,OACLC,EAAAA,EAAAA,IAAC0F,EAAAA,GAAI,CACHC,SA1BSpB,SCrCEA,WACnB,MAIMpB,EAAO,CACXyC,UAH6BC,EAAvBC,SAINC,SAJ6BF,EAAbE,UAOZtD,QAAiBkB,MATN,wBASsB,CACrCb,OAAQ,OACRQ,QAAS,CACP,eAAgB,oBAElBH,KAAMC,KAAKC,UAAUF,KAGvB,GAAIV,EAASuD,GAEX,aADmBvD,EAASD,OAG5B,MAAM,IAAIH,MAAM,eAClB,EDoBS4D,CALa,CAClBH,SAAUI,EAAOC,SACjBJ,SAAUG,EAAOH,WAIhBnC,MAAMpB,IACL,GAA2B,kBAAhBA,EAAU,IAAgB,CACnC,MAAM4D,EAAM5D,EAAU,IFnDF6D,EEoDND,EFnDfpE,eAAesE,QAAQxE,EAAWuE,GEsDjCd,EAAQgB,KAAK,iBACf,CFxDsBF,KEwDtB,IAEDG,OAAM,KACE,CAAE,CAACC,EAAAA,IAAapB,EAAKqB,cAAc7B,EAASM,kBAUjDwB,OAAQA,EAAGC,eAAcC,aAAYC,kBACnC9G,EAAAA,EAAAA,IAAA,QAAMC,UAAU,kBAAkB0F,SAAUiB,IAC1C5G,EAAAA,EAAAA,IAAA,MAAIC,UAAU,mCACZD,EAAAA,EAAAA,IAAC+G,EAAAA,EAAgB,CACf/B,GAAE,gBACFC,eAAc,6CAIlBjF,EAAAA,EAAAA,IAAA,OAAKC,UAAU,mCACbD,EAAAA,EAAAA,IAACgH,EAAAA,GAAK,CAACpE,KAAK,aACT,EAAG5B,YACFhB,EAAAA,EAAAA,IAAA,YACEA,EAAAA,EAAAA,IAAA,SAAOC,UAAU,YACfD,EAAAA,EAAAA,IAAC+G,EAAAA,EAAgB,CACf/B,GAAE,uBACFC,eAAc,qCAIlBjF,EAAAA,EAAAA,IAACiH,EAAKxG,EAAA,GACAO,EAAK,CACTC,SAAU6F,EACVI,KAAK,OACLC,UAAQ,EACRC,YAAa/B,EAAKqB,cAChB7B,EAASE,4BAMnB/E,EAAAA,EAAAA,IAACgH,EAAAA,GAAK,CAACpE,KAAK,aACT,EAAG5B,YACFhB,EAAAA,EAAAA,IAAA,YACEA,EAAAA,EAAAA,IAAA,SAAOC,UAAU,YACfD,EAAAA,EAAAA,IAAC+G,EAAAA,EAAgB,CACf/B,GAAE,uBACFC,eAAc,gCAIlBjF,EAAAA,EAAAA,IAACiH,EAAKxG,EAAA,GACAO,EAAK,CACTC,SAAU6F,EACVI,KAAK,WACLC,UAAQ,EACRC,YAAa/B,EAAKqB,cAChB7B,EAASK,4BAOpB4B,IACC9G,EAAAA,EAAAA,IAAA,OAAKC,UAAU,uBAAuB6G,IAExC9G,EAAAA,EAAAA,IAAA,YACEA,EAAAA,EAAAA,IAACqH,EAAM,CACLxF,SAAUgF,EAAW3F,IAAA,kCAErBgG,KAAK,WAELlH,EAAAA,EAAAA,IAAC+G,EAAAA,EAAgB,CACf/B,GAAE,sBACFC,eAAc,4HAEdiB,OAAQ,CAAErC,OAAQgD,WAUtC,CErJA,MAqDaS,EAAuB/C,MAClCgD,EACAnB,IHgCwBoB,EAAIzE,EAAa4B,EAAwB,CAAC,IAClE9B,EAAW,OAAQE,EAAK4B,GG1BjB6C,CALgB,wBAAuBD,EAAMvC,gBAKzB,CAAE7B,KAJhB,CACXsE,WAAY,CAAErB,UAGqBxC,MAAM8D,GAClCA,IAIEC,EAAwBpD,SHsCXqD,EAAI7E,EAAa4B,EAAwB,CAAC,IAClE9B,EAAW,SAAUE,EAAK4B,GGtC1BiD,CAAK,wBAAuBL,EAAMvC,iBAEvB6C,EAAYtD,SACvBG,EAAI,wBCtEAoD,EAAkB,wJAExB,I,UCCA,MAAMC,GAAOC,EAAAA,EAAAA,IAAU,CACrB,KAAM,CAAEC,UAAW,yBACnB,MAAO,CAAEA,UAAW,6BACpB,OAAQ,CAAEA,UAAW,6BAyBvB,MAtBgBlH,EAAAA,EAAOR,IAAI,CACvB,mCACFW,EAAAA,EAAI;;iBAEW6G;;;;;6CAK4B;;IAG3C,EAAGG,cAAc,SACfhH,EAAAA,EAAI;wBACgBgH;MAEtB,EAAGC,OAAO,SAAYjH,EAAAA,EAAI;cACdiH;aACDA;MCvBb,MAAMC,EAAQ9H,EAAAA,EAAGC,IAAG,sBACd8H,EAAQtH,EAAAA,EAAOR,IAAI,CACrB,oFACF,EAAG+H,YAAY,UACbpH,EAAAA,EAAI;oBACYoH;QAWpB,MAPeC,EAAGC,cAAc,QAASC,YACvCzI,EAAAA,EAAAA,IAACqI,EAAK,MACJrI,EAAAA,EAAAA,IAAC0I,EAAO,CAACP,KAAMK,EAAaN,YAAY,WACvCO,IAASzI,EAAAA,EAAAA,IAACoI,EAAK,KAAEK,I,owCCAtB,MAAM7D,EAAYtE,EAAAA,EAAGC,IAAG,6XAOlBsE,GAAWC,EAAAA,EAAAA,IAAe,CAC9B6D,iBAAkB,CAAA3D,GAAA,SAChBC,eAAe,CAAD,sDAGhB2D,qBAAsB,CAAA5D,GAAA,SACpBC,eAAe,CAAD,gDAGhB4D,sBAAuB,CAAA7D,GAAA,SACrBC,eAAe,CAAD,mDAKZ6D,GAAYxI,EAAAA,EAAAA,GAAGmF,EAAHnF,CAAQ,oBAYpByI,GAAoBvI,IACxB,MAA+CwI,EAAAC,GAAfC,EAAAA,EAAAA,WAAS,GAAM,GAAxCC,EAAQH,EAAA,GAAEI,EAAWJ,EAAA,GAC5B,OACEhJ,EAAAA,EAAAA,IAACqH,EAAM,CACLH,KAAK,SACLtF,QAAQ,iBAAgBV,IAAA,gSAExBmI,aAAcA,IAAMD,GAAY,GAChCE,WAAYA,IAAMF,GAAY,GAC9BG,QAAS/I,EAAM+I,UAEfvJ,EAAAA,EAAAA,IAAC+G,EAAAA,EAAgB,CACf/B,GAAE,wCACFC,eAAc,8HAEdiB,OAAQ,CAAEiD,SAAUA,KAEf,EAIPK,GAAmBhJ,IACvB,MAAM6E,GAAOC,EAAAA,EAAAA,KACLiC,EAAiC/G,EAAjC+G,MAAOkC,EAA0BjJ,EAA1BiJ,sBACPC,EAA2CnC,EAA3CmC,aAAcC,EAA6BpC,EAA7BoC,WAAYC,EAAiBrC,EAAjBqC,aAEqBC,EAAAZ,GAA7BC,EAAAA,EAAAA,UAAwB,MAAK,GAAhDhF,EAAK2F,EAAA,GAAEC,EAAQD,EAAA,GAyBhBE,EAAiBC,IACrBA,EAAEC,iBACFtC,EAAsBJ,GACnB3D,MAAK,IAAM6F,MACX7F,MAAK,IAAMkG,EAAS,QACpBtD,OAAM,KACLsD,EAASzE,EAAKqB,cAAc7B,EAASgE,uBAAuB,GAC5D,EAGN,OACE7I,EAAAA,EAAAA,IAAA,YACEA,EAAAA,EAAAA,IAAA,OAAAkB,IAAA,0FAAoCwI,IACpC1J,EAAAA,EAAAA,IAAC0F,EAAAA,GAAI,CACHC,SArCWpB,UACf,MAAM2F,GH7EKC,EG6EkBjE,EAAOC,SH7EhB2B,EAAgBsC,KAAKD,EAAME,gBAAnD,IAAeF,EG8EX,MAAMtE,EAAc,CAClBC,UAAWoE,GAAWhE,EAAOC,SAC7BgE,MAAOD,GAAWhE,EAAOC,SACzBJ,SAAUG,EAAOH,UAInB,MJ/DiBxB,OACnB+F,EACAzE,KAEA,MAAM0E,EAAY,GAAED,mBAIdnH,EAAO,CACXqH,KAAM,CAAE1E,SAH4BD,EAA9BC,SAGYqE,MAHkBtE,EAApBsE,MAGSpE,SAHWF,EAAbE,WAMnBtD,QAAiBkB,MAAM4G,EAAU,CACrCzH,OAAQ,OACRQ,QAAS,CACP,eAAgB,oBAElBH,KAAMC,KAAKC,UAAUF,KAGvB,GAAIV,EAASuD,GAEX,aADmBvD,EAASD,OAG5B,MAAM,IAAIH,MAAM,eAClB,EIsCS4D,CAAM2D,EAAc/D,GACxBjC,MAAMpB,IACL8E,EAAqBC,EAAO/E,EAAKiI,KAAKC,WAAWtE,KAC9CxC,MAAK,IAAM6F,MACX7F,MAAK,IAAMkG,EAAS,QACpBtD,OAAM,KACLsD,EAASzE,EAAKqB,cAAc7B,EAAS+D,sBAAsB,GAC3D,IAELpC,OAAM,KACLsD,EAASzE,EAAKqB,cAAc7B,EAAS+D,sBAAsB,GAC3D,EAkBA+B,gBAAgB,EAChBhE,OAAQA,EAAGC,eAAcgE,WAAU/D,aAAYC,kBAC7C9G,EAAAA,EAAAA,IAAA,QAAM2F,SAAUiB,IACd5G,EAAAA,EAAAA,IAAA,OAAAkB,IAAA,glBACElB,EAAAA,EAAAA,IAACgH,EAAAA,GAAK,CAACpE,KAAK,aACT,EAAG5B,YACFhB,EAAAA,EAAAA,IAAA,OAAKC,UAAU,cACbD,EAAAA,EAAAA,IAAA,SAAOC,UAAU,WAAU,kBAC3BD,EAAAA,EAAAA,IAACiH,EAAKxG,EAAA,GACAO,EAAK,CACTa,SAAU8H,EACV1I,SAAU6F,EACVI,KAAK,OACLC,UAAQ,EACRC,YAAY,mBAKpBpH,EAAAA,EAAAA,IAACgH,EAAAA,GAAK,CAACpE,KAAK,aACT,EAAG5B,YACFhB,EAAAA,EAAAA,IAAA,OAAKC,UAAU,cACbD,EAAAA,EAAAA,IAAA,SAAOC,UAAU,WAAU,aAC3BD,EAAAA,EAAAA,IAACiH,EAAKxG,EAAA,GACAO,EAAK,CACTa,SAAU8H,EACV1I,SAAU6F,EACVI,KAAK,WACLC,UAAQ,EACRC,YAAY,iBAKnBuC,IAAc3J,EAAAA,EAAAA,IAAC+I,GAAgB,CAACQ,QAASQ,KACxCJ,IACA3J,EAAAA,EAAAA,IAACqH,EAAM,CACLxF,SAAUgF,GAAc+D,EACxB1D,KAAK,SACLtF,QAAQ,iBAAgBV,IAAA,2EAGxBlB,EAAAA,EAAAA,IAAC+G,EAAAA,EAAgB,CACf/B,GAAE,sCACFC,eAAc,oIAEdiB,OAAQ,CAAErC,OAAQgD,OAKzBC,IACC9G,EAAAA,EAAAA,IAAA,OAAKC,UAAU,uBAAuB6G,GAEvC5C,IAASlE,EAAAA,EAAAA,IAAA,OAAKC,UAAU,uBAAuBiE,MAIlD,EAiFV,OA7E0B2G,KACxB,MAAMtF,GAAUC,EAAAA,EAAAA,MAMhBsF,GAAmDC,EAAAA,EAAAA,IACjD,iBACAlD,GAFYmD,EAAMF,EAAZL,KAAcQ,EAASH,EAATG,UAAW/G,EAAK4G,EAAL5G,MAAOgH,EAAMJ,EAANI,OAKxC,OACElL,EAAAA,EAAAA,IAAC4E,EAAS,MACR5E,EAAAA,EAAAA,IAAC8I,EAAS,MACR9I,EAAAA,EAAAA,IAACD,EAAI,OACLC,EAAAA,EAAAA,IAAA,OAAAkB,IAAA,2CACElB,EAAAA,EAAAA,IAAA,MAAAkB,IAAA,oHACElB,EAAAA,EAAAA,IAAC+G,EAAAA,EAAgB,CACf/B,GAAE,6BACFC,eAAc,8DAIlBjF,EAAAA,EAAAA,IAAA,KAAAkB,IAAA,yEACElB,EAAAA,EAAAA,IAAC+G,EAAAA,EAAgB,CACf/B,GAAE,iCACFC,eAAc,8LAOlBgG,IAAcD,KACdhL,EAAAA,EAAAA,IAACuI,EAAM,CACLE,OACEzI,EAAAA,EAAAA,IAAC+G,EAAAA,EAAgB,CAAA/B,GAAA,SACfC,eAAc,uCAMrBf,IACClE,EAAAA,EAAAA,IAAA,OAAAkB,IAAA,2CACElB,EAAAA,EAAAA,IAAC+G,EAAAA,EAAgB,CAAA/B,GAAA,SACfC,eAAc,mHAKlBgG,IAAc/G,IACdlE,EAAAA,EAAAA,IAAA,OAAAkB,IAAA,2QACG8J,EAAOG,KAAK5D,IACXvH,EAAAA,EAAAA,IAACwJ,GAAe,CACdjC,MAAOA,EACPkC,sBAAuByB,EACvBE,IAAK7D,EAAMvC,SAKnBhF,EAAAA,EAAAA,IAAA,OAAAkB,IAAA,2TACElB,EAAAA,EAAAA,IAACqH,EAAM,CAAAnG,IAAA,6CAAcqI,QA7DD8B,KAC1B9F,EAAQgB,KAAK,WAAW,IA6DhBvG,EAAAA,EAAAA,IAAC+G,EAAAA,EAAgB,CACf/B,GAAE,qCACFC,eAAc,iCAMZ,E,uOC/OhB,OAXA,SAAiBzE,GACf,OACER,EAAAA,EAAAA,IAAA,MAAAS,GAAA,CAAKC,QAAQ,YAAYC,MAAM,8BAAiCH,IAC9DR,EAAAA,EAAAA,IAAA,QACEY,EAAE,ybACFC,KAAK,iBAIb,ECJA,MAAMwH,GAAQ/H,EAAAA,EAAGC,IAAG,4HAqBpB,OAnBmB+K,EAAG/I,UAAqBgJ,cACzCvL,EAAAA,EAAAA,IAACqI,GAAK,MACJrI,EAAAA,EAAAA,IAAA,OAAAkB,IAAA,uBACGqB,IACCvC,EAAAA,EAAAA,IAAC+G,EAAAA,EAAgB,CACf/B,GAAE,8BACFC,eAAc,2GAIpBjF,EAAAA,EAAAA,IAACqH,EAAM,CAACkC,QAASgC,EAASC,MAAMxL,EAAAA,EAAAA,IAACyL,GAAQ,QACvCzL,EAAAA,EAAAA,IAAC+G,EAAAA,EAAgB,CACf/B,GAAE,2BACFC,eAAc,iC,WCRtB,OAZyBlE,EAAAA,EAAOY,OAAO,CACnC,shBACFT,EAAAA,EAAI;;QAEI;;;QAGA;;6OCIV,OAXA,SAAkBV,GAChB,OACER,EAAAA,EAAAA,IAAA,MAAAS,GAAA,CAAKC,QAAQ,YAAYC,MAAM,8BAAiCH,IAC9DR,EAAAA,EAAAA,IAAA,QACEY,EAAE,8JACFC,KAAK,iBAIb,E,uOCEA,OAXA,SAAkBL,GAChB,OACER,EAAAA,EAAAA,IAAA,MAAAS,GAAA,CAAKC,QAAQ,YAAYC,MAAM,8BAAiCH,IAC9DR,EAAAA,EAAAA,IAAA,QACEY,EAAE,2DACFC,KAAK,iBAIb,E,2pBCHA,MAAM6K,GAAoBpL,EAAAA,EAAGmI,MAAK,oEAE5BkD,GAAoBzK,EAAAA,EAAI;;;;;;;;;EAYxB0K,GAAiBC,EAAAA,YAAiB,SACtCrL,EACAsL,GAEA,OAAO9L,EAAAA,EAAAA,IAAA,QAAAS,GAAA,CAAOS,IAAKyK,GAAmBzE,KAAK,YAAe1G,EAAK,CAAEsL,IAAKA,IACxE,IAEMC,GAAiBhL,EAAAA,EAAOR,IAAI,CAC9B,8SACF,EAAGyL,aACDA,EACM,gKACA,sKACR9K,EAAAA,EAAI;;QAEI;;MAKJ+K,GAAclL,EAAAA,EAAOR,IAAI,CAC3B,gWACF,EAAGyL,aAAeA,EAAY,uBAAc,iBAC5C,EAAGE,mBAAoBA,GAAkB,+NAGrCC,GAAeA,EAAGD,eAAcF,cACpChM,EAAAA,EAAAA,IAACiM,GAAW,CAACC,aAAcA,EAAcF,QAASA,GAC/CE,GAAelM,EAAAA,EAAAA,IAACoM,GAAS,OAAMpM,EAAAA,EAAAA,IAACqM,GAAS,OAIxCC,GAAkB,CACtBC,MAAS,iEACTC,MAAS,wBAGLpE,GAAQrH,EAAAA,EAAO0L,KAAK,CACtB,6GACF,EAAGtE,UAAWmE,GAAgBnE,KAiBhC,OAfiB0D,EAAAA,YAAiB,SAAwB7I,EAExD8I,GACC,IAFCE,EAAOhJ,EAAPgJ,QAASvD,EAAKzF,EAALyF,MAAKiE,EAAA1J,EAAEmF,KAAAA,OAAI,IAAAuE,EAAG,QAAOA,EAAEzM,EAAS+C,EAAT/C,UAAS0M,EAAA3J,EAAEkJ,aAAAA,OAAY,IAAAS,GAAQA,EAAKnM,EAAKoM,GAAA5J,EAAA6J,IAG3E,OACE7M,EAAAA,EAAAA,IAAC0L,GAAiB,CAAC,UAAQ,WAAWzL,UAAWA,IAC/CD,EAAAA,EAAAA,IAAC4L,GAAcnL,GAAA,CAACuL,QAASA,GAAaxL,EAAK,CAAEsL,IAAKA,MAClD9L,EAAAA,EAAAA,IAAC+L,GAAc,CAACC,QAASA,IACvBhM,EAAAA,EAAAA,IAACmM,GAAY,CAACH,QAASA,EAASE,aAAcA,MAEhDlM,EAAAA,EAAAA,IAACoI,GAAK,CAACD,KAAMA,GAAOM,GAG1B,I,uOC/DA,OAXA,SAAwBjI,GACtB,OACER,EAAAA,EAAAA,IAAA,MAAAS,GAAA,CAAKC,QAAQ,YAAYC,MAAM,8BAAiCH,IAC9DR,EAAAA,EAAAA,IAAA,QACEY,EAAE,8NACFC,KAAK,iBAIb,E,uOCEA,OAXA,SAAsBL,GACpB,OACER,EAAAA,EAAAA,IAAA,MAAAS,GAAA,CAAKC,QAAQ,YAAYC,MAAM,8BAAiCH,IAC9DR,EAAAA,EAAAA,IAAA,QACEY,EAAE,yNACFC,KAAK,iBAIb,ECRA,MAAMiM,GAAY5L,EAAAA,EAAI;;;;;;;;;EAiBtB,OANuB6L,EAAGC,eACxBhN,EAAAA,EAAAA,IAAA,QAAMkB,IAAK4L,GAAW,eAAa,GAChCE,G,uOCHL,OAXA,SAAwBxM,GACtB,OACER,EAAAA,EAAAA,IAAA,MAAAS,GAAA,CAAKC,QAAQ,YAAYC,MAAM,8BAAiCH,IAC9DR,EAAAA,EAAAA,IAAA,QACEY,EAAE,gOACFC,KAAK,iBAIb,E,uOCEA,OAXA,SAAyBL,GACvB,OACER,EAAAA,EAAAA,IAAA,MAAAS,GAAA,CAAKC,QAAQ,YAAYC,MAAM,8BAAiCH,IAC9DR,EAAAA,EAAAA,IAAA,QACEY,EAAE,2NACFC,KAAK,iBAIb,E,WCPA,MAAMoM,IAAiBlM,EAAAA,EAAAA,GAAOmM,GAAAA,GAAPnM,CAAgB,CACrCG,EAAAA,EAAI;;QAEI;;MAiDV,OA1CyBV,IACvB,MAAA2M,EAAoE3M,EAA5D4M,OAAAA,OAAM,IAAAD,EAAG,GAAEA,EAAElN,EAA+CO,EAA/CP,UAAWoN,EAAoC7M,EAApC6M,SAAUL,EAA0BxM,EAA1BwM,SAAUM,EAAgB9M,EAAhB8M,YAEpD,IAAIC,EACJ,GAAIF,EAAU,CAEZE,EADmBF,EAASG,wBACFC,OARR,EASpB,CAEA,MAIMC,EAAe,CACnBC,SAJAnN,EAAMkN,cAAcC,UAAYJ,GAAgB,SAKhDK,WAJ6BpN,EAAMkN,cAAcE,YAAc,SAO3DC,EAAkBrN,EAAMqN,iBAAmB,CAC/CF,SAAU,MACVC,WAAY,SAGRE,EAAWC,QAAQV,GAEzB,OACErN,EAAAA,EAAAA,IAACiN,GAAc,CACbhN,UAAWA,EACX+N,KAAMF,EACNT,SAAUA,EACVY,QAASX,EACTI,aAAcA,EACdG,gBAAiBA,EACjBK,WAAY,CACV,YAAad,IAGdJ,EACc,E,oiCC5CrB,MAAMmB,GAAoB7N,EAAAA,EAAGC,IAAG,qGAC1B6N,GAAyB9N,EAAAA,EAAGC,IAAG,gFAC/B8N,GAAuB/N,EAAAA,EAAGC,IAAG,8CAE7B+N,GAAehO,EAAAA,EAAGqB,OAAM,yMAExB4M,GAAWjO,EAAAA,EAAGC,IAAG,qBACjBiO,GAAezN,EAAAA,EAAOY,OAAO,CAC/B,qOACFT,EAAAA,EAAI;;QAEI;;MAKJuN,IAAwB1N,EAAAA,EAAAA,GAAO2N,GAAP3N,CAAwB,CAAG,mCAMnD4N,GAAkB5N,EAAAA,EAAOY,OAA2B,CACtD,qeACF,EAAGiN,YAAaA,GAAY,qBAOxBC,GAAyBrO,IAC7B,MAAQ+I,EAAsB/I,EAAtB+I,QAASyD,EAAaxM,EAAbwM,SACjB,OACEhN,EAAAA,EAAAA,IAACsO,GAAY,CAAC/E,QAASA,EAAS,YAAU,2BACvCyD,EACY,EAUb8B,GAAmBA,EACvB9B,WACA+B,WACAxF,cAGEvJ,EAAAA,EAAAA,IAAC2O,GAAe,CAACC,OAAQG,EAAUxF,QAASA,GACzCyD,GAKDgC,GAAiBxO,IAIrB,MAAQiI,EAA0BjI,EAA1BiI,MAAOwG,EAAmBzO,EAAnByO,eACyDC,EAAAjG,GAAxC4C,EAAAA,SAAmC,MAAK,GAAjEwB,EAAQ6B,EAAA,GAAEC,EAAWD,EAAA,GAWtB5B,EAAcA,KAClB6B,EAAY,KAAK,EAGblM,EAAUgM,EAAe9D,KAAI,EAAG1C,QAAOsG,WAAUxF,WAAW6F,KAE9DpP,EAAAA,EAAAA,IAAA,MAAIoL,IAAKgE,IACPpP,EAAAA,EAAAA,IAAC8O,GAAgB,CACfC,SAAUA,EACVxF,QAASA,KACPA,IACA+D,GAAa,GAGd7E,MAMT,OACEzI,EAAAA,EAAAA,IAACqO,GAAoB,MACnBrO,EAAAA,EAAAA,IAAC6O,GAAqB,CAACtF,QA/BsC8F,IAC/D,GAAIhC,EACF8B,EAAY,UACP,CACL,MAAMxN,EAAS0N,EAAMC,cACrBH,EAAYxN,EACd,IA0BK8G,IAEHzI,EAAAA,EAAAA,IAACyO,GAAqB,CACpBrB,OAAO,0BACPC,SAAUA,EACVC,YAAaA,IAEbtN,EAAAA,EAAAA,IAAA,UAAKiD,IAEc,EAWrBsM,GAAkBA,EACtBC,cACAC,eACAC,aACAT,qBAEA,MAAMU,GAA8BH,EAAc,GAAKC,EACjDG,EAAkBC,KAAKC,IAAIH,EAA6B,EAAGD,GAC3DK,EAAiBF,KAAKC,IAAIN,EAAcC,EAAcC,GACtDM,GACJhQ,EAAAA,EAAAA,IAAA,YACG4P,EAAgB,MAAIG,GAIzB,OACE/P,EAAAA,EAAAA,IAACoO,GAAsB,CAAC,UAAQ,qBAC9BpO,EAAAA,EAAAA,IAACgP,GAAa,CAACvG,MAAOuH,EAASf,eAAgBA,KAC/CjP,EAAAA,EAAAA,IAAC+G,EAAAA,EAAgB,CACf/B,GAAE,mBACFC,eAAc,8CACdiB,OAAQ,CAAE+J,MAAOP,KAEI,EAmFvBQ,GAAWrE,EAAAA,MAAW,UAAwB,SAClDmB,EAAQ,OACRmD,EAAM,SACNtO,EAAQ,QACR0H,IAEA,OACEvJ,EAAAA,EAAAA,IAACwO,GAAY,CACXjF,QAASA,EACT1H,SAAUA,EACV,YAAY,cAAasO,KAExBnD,EAGP,IAEA,OA/EmBoD,EACjBV,aAAa,EACbT,iBACAO,cACAC,eACAY,cACAC,cACAC,aACAC,iBAGExQ,EAAAA,EAAAA,IAACmO,GAAiB,MAChBnO,EAAAA,EAAAA,IAACuP,GAAe,CACdC,YAAaA,EACbC,aAAcA,EACdC,WAAYA,EACZT,eAAgBA,KAElBjP,EAAAA,EAAAA,IAACuO,GAAQ,MACPvO,EAAAA,EAAAA,IAACkQ,GAAQ,CACP3G,QAASiH,EACT3O,UAAWwO,EACXjF,IAAI,OACJ+E,OAAO,SAEPnQ,EAAAA,EAAAA,IAAA,OAAAkB,IAAA,iBACElB,EAAAA,EAAAA,IAACyQ,GAAe,QAElBzQ,EAAAA,EAAAA,IAAC+M,GAAc,MACb/M,EAAAA,EAAAA,IAAC+G,EAAAA,EAAgB,CACf/B,GAAE,sBACFC,eAAc,kCAMtBjF,EAAAA,EAAAA,IAACuO,GAAQ,MACPvO,EAAAA,EAAAA,IAACkQ,GAAQ,CACP3G,QAASgH,EACT1O,UAAWyO,EACXlF,IAAI,OACJ+E,OAAO,SAEPnQ,EAAAA,EAAAA,IAAC+M,GAAc,MACb/M,EAAAA,EAAAA,IAAC+G,EAAAA,EAAgB,CAAC/B,GAAE,kBAAmBC,eAAc,4BAEvDjF,EAAAA,EAAAA,IAAA,OAAAkB,IAAA,iBACElB,EAAAA,EAAAA,IAAC0Q,GAAgB,U,gEClN7B,OALqB3P,EAAAA,EAAOY,OAA4B,CACpD,qUACF,EAAGiN,YAAcA,EAAW,sFAAyB,wF,uOCSvD,OAXA,SAAkBpO,GAChB,OACER,EAAAA,EAAAA,IAAA,MAAAS,GAAA,CAAKC,QAAQ,YAAYC,MAAM,8BAAiCH,IAC9DR,EAAAA,EAAAA,IAAA,QACEY,EAAE,0fACFC,KAAK,iBAIb,E,oiCCDA,MAAM8P,GAAU5P,EAAAA,EAAOR,GAAI;;EAIrBqQ,GAAqB1P,EAAAA,EAAI;IACzB;;;;;MAKE;;;;MAIA;;EAIF2P,GAAiB9P,EAAAA,EAAOY,OAAO,CAACiP,KAEhCE,IAAe/P,EAAAA,EAAAA,GAAOgQ,EAAAA,GAAPhQ,CAAa,CAChCG,EAAAA,EAAI;MACA0P;;;;;QAKI;;MAKJI,GAAe1Q,EAAAA,EAAGmM,KAAI,wBAItBwE,IAAe3Q,EAAAA,EAAAA,GAAGoO,GAAHpO,CAAmB,CAAC,GAEnC2L,GAAc3L,EAAAA,EAAGC,IAAG,kCAEpB2Q,GAAiBA,EAAGC,eACxBnR,EAAAA,EAAAA,IAAC6Q,GAAc,CAACtH,QAAS4H,IACvBnR,EAAAA,EAAAA,IAACiM,GAAW,MACVjM,EAAAA,EAAAA,IAACoR,GAAS,QAEZpR,EAAAA,EAAAA,IAACgR,GAAY,MACXhR,EAAAA,EAAAA,IAAC+G,EAAAA,EAAgB,CACf/B,GAAE,kCACFC,eAAc,+BAgDtB,OA1CwBoM,EAAGF,eACzB,MAAoDjC,EAAAjG,GAApB4C,EAAAA,SAAe,MAAK,GAA7CwB,EAAQ6B,EAAA,GAAEC,EAAWD,EAAA,GAWtB5B,EAAcA,KAClB6B,EAAY,KAAK,EAGnB,OACEnP,EAAAA,EAAAA,IAAC2Q,GAAO,MACN3Q,EAAAA,EAAAA,IAACsO,GAAY,CAACM,SAAUvB,EAAU9D,QAfjB8F,IACnB,GAAIhC,EACF8B,EAAY,UACP,CACL,MAAMxN,EAAS0N,EAAMC,cACrBH,EAAYxN,EACd,KAUI3B,EAAAA,EAAAA,IAAC+G,EAAAA,EAAgB,CACf/B,GAAE,kCACFC,eAAc,8BAEhBjF,EAAAA,EAAAA,IAAA,OAAAkB,IAAA,oCACGmM,GAAWrN,EAAAA,EAAAA,IAACsR,GAAa,OAAMtR,EAAAA,EAAAA,IAACuR,GAAe,SAGpDvR,EAAAA,EAAAA,IAACiR,GAAY,CAAC5D,SAAUA,EAAUC,YAAaA,IAC7CtN,EAAAA,EAAAA,IAAC8Q,GAAY,CAACU,GAAG,iBAAiBjI,QAAS+D,IACzCtN,EAAAA,EAAAA,IAACgR,GAAY,MACXhR,EAAAA,EAAAA,IAAC+G,EAAAA,EAAgB,CACf/B,GAAE,kCACFC,eAAc,sCAIpBjF,EAAAA,EAAAA,IAACkR,GAAc,CAACC,SAAUA,KAEpB,ECnGP,MCMDM,GAAanR,EAAAA,EAAGC,IAAG,8HAEnBmR,GAAY,CAChB,CACEC,KAAM,WACNlJ,MAAO,YAILmJ,GAAiBtR,EAAAA,EAAGuR,GAAE,sCACtBC,GAAiBxR,EAAAA,EAAGyR,GAAE,0CAEtBC,IAAiBjR,EAAAA,EAAAA,GAAOkR,EAAAA,GAAPlR,CAAgB,CACrCG,EAAAA,EAAI;;QAEI;;IAGN,2aAGEgR,GAAoBA,KAEtBlS,EAAAA,EAAAA,IAAA,YACEA,EAAAA,EAAAA,IAAC4R,GAAc,KACZF,GAAUvG,KAAKgH,IACdnS,EAAAA,EAAAA,IAAC8R,GAAc,CAAC1G,IAAK+G,EAAKR,OACxB3R,EAAAA,EAAAA,IAACgS,GAAc,CAACR,GAAIW,EAAKR,MAAOQ,EAAK1J,YA6BjD,OArBe2J,KACb,MAAMC,ED1CiBC,MACvB,MAAM/M,GAAUC,EAAAA,EAAAA,MAEhB,MAAO,KACLtD,IACAqD,EAAQgN,QAAQ,SAAS,CAC1B,ECoCcD,GACf,OACEtS,EAAAA,EAAAA,IAAA,OAAAkB,IAAA,iTACElB,EAAAA,EAAAA,IAACyR,GAAU,CAAAvQ,IAAA,yCACTlB,EAAAA,EAAAA,IAAA,OAAKK,MAAM,OAAOH,IAAKsS,GAAavS,UAAU,uBAC9CD,EAAAA,EAAAA,IAAA,MAAAkB,IAAA,0HACElB,EAAAA,EAAAA,IAAC+G,EAAAA,EAAgB,CACf/B,GAAE,mBACFC,eAAc,0CAKpBjF,EAAAA,EAAAA,IAACkS,GAAiB,OAClBlS,EAAAA,EAAAA,IAAA,OAAAkB,IAAA,yCACElB,EAAAA,EAAAA,IAACqR,GAAe,CAACF,SAAUkB,KAEzB,E,uOCjDV,OAXA,SAAmB7R,GACjB,OACER,EAAAA,EAAAA,IAAA,MAAAS,GAAA,CAAKC,QAAQ,YAAYC,MAAM,8BAAiCH,IAC9DR,EAAAA,EAAAA,IAAA,QACEY,EAAE,6SACFC,KAAK,iBAIb,E,woBCNA,MAAM4R,GAAuBnS,EAAAA,EAAGmI,MAAK,mDAE/BiK,GAAiBxR,EAAAA,EAAI;;;;;;;;;EAYrByR,GAAqBnS,IACzBR,EAAAA,EAAAA,IAAA,QAAAS,GAAA,CAAOS,IAAKwR,GAAgBxL,KAAK,SAAY1G,IAGzCoS,GAAoB7R,EAAAA,EAAOR,IAAI,CACjC,4SACF,EAAGyL,aACDA,EACM,gKACA,sKACR9K,EAAAA,EAAI;;QAEI;;MAKJ+K,GAAclL,EAAAA,EAAOR,IAAI,CAC3B,0XACF,EAAGyL,aAAeA,EAAY,uBAAc,mBAGxC6G,GAAkBA,EAAG7G,cACzBhM,EAAAA,EAAAA,IAACiM,GAAW,CAACD,QAASA,IACpBhM,EAAAA,EAAAA,IAACqM,GAAS,OAIDjE,GAAQrH,EAAAA,EAAO0L,KAAK,CAC7B,6IAGSqG,GAAc9P,IAAA,IAAGgJ,EAAOhJ,EAAPgJ,QAAYxL,EAAKoM,GAAA5J,EAAA6J,IAAA,OAC7C7M,EAAAA,EAAAA,IAAA6L,EAAAA,SAAA,MACE7L,EAAAA,EAAAA,IAAC2S,GAAsBnS,IACvBR,EAAAA,EAAAA,IAAC4S,GAAiB,CAAC5G,QAASA,IAC1BhM,EAAAA,EAAAA,IAAC6S,GAAe,CAAC7G,QAASA,EAAS+G,WAAS,EAAC5K,KAAK,UAEnD,EAUL,OAPmC6K,IAAA,IAAGhH,EAAOgH,EAAPhH,QAASvD,EAAKuK,EAALvK,MAAUjI,EAAKoM,GAAAoG,EAAAC,IAAA,OAC5DjT,EAAAA,EAAAA,IAACyS,GAAoB,CAAC,YAAU,eAAe,eAAczG,IAC3DhM,EAAAA,EAAAA,IAAC8S,GAAWrS,GAAA,CAACuL,QAASA,GAAaxL,KACnCR,EAAAA,EAAAA,IAACoI,GAAK,KAAEK,GACa,E,oiCCnDzB,MAAMyK,GAAuBrH,EAAAA,mBAE3BsH,GAEF,SAASC,KACP,MAAMC,EAAUxH,EAAAA,WAAiBqH,IACjC,IAAKG,EACH,MAAM,IAAIhR,MACP,gEAGL,OAAOgR,CACT,CAEA,SAASC,IAAsB,SAC7BtG,IAIA,MAA4CkC,EAAAjG,GAApB4C,EAAAA,UAAe,GAAK,GAArCmC,EAAIkB,EAAA,GAAEqE,EAAOrE,EAAA,GAIqCsE,EAAAvK,GAArD4C,EAAAA,SAAoC,CAAE4H,MAAO,QAAQ,GAFvDC,EAAmBF,EAAA,GACnBG,EAAsBH,EAAA,GAElBC,EAAQ5H,EAAAA,SACZ,MACEmC,OACAuF,UACAG,sBACAC,4BAEF,CAAC3F,EAAM0F,IAET,OACE1T,EAAAA,EAAAA,IAACkT,GAAqBU,SAAQ,CAACH,MAAOA,GACnCzG,EAGP,C,oiCC1CA,MAAMnI,IAAWC,EAAAA,EAAAA,IAAe,CAC9B+O,WAAY,CACV7O,GAAG,8CACHC,eAAe,CAAD,gCAIZ6O,GAAoBxT,EAAAA,EAAGC,IAAG,gBAC1BwT,GAAeA,EAAGxK,cACtBvJ,EAAAA,EAAAA,IAAA,UAAQuJ,QAASA,EAAQrI,IAAA,oJACvBlB,EAAAA,EAAAA,IAAC8T,GAAiB,MAChB9T,EAAAA,EAAAA,IAACgU,GAAU,CAAC5S,MAAO,cAKnBgR,GAASA,KACb,MAAA6B,EAA0Bb,KAAlBpF,EAAIiG,EAAJjG,KAAMuF,EAAOU,EAAPV,QACd,OACEvT,EAAAA,EAAAA,IAAA,OAAAkB,IAAA,mBACElB,EAAAA,EAAAA,IAAC+T,GAAY,CACXxK,QAASA,KACPgK,GAASvF,EAAK,IAGjBA,IACChO,EAAAA,EAAAA,IAAA,QAAAkB,IAAA,mFACElB,EAAAA,EAAAA,IAAC+G,EAAAA,EAAgB,CACf/B,GAAE,iCACFC,eAAc,8BAIhB,EAIJiP,GAAeA,EACnBzL,QACAuD,WAAU,EACVzC,UACA4K,YAQEnU,EAAAA,EAAAA,IAAA,OAAAkB,IAAA,uCACElB,EAAAA,EAAAA,IAACoU,GAAiB,CAChBpI,QAASA,EACTzC,QAASA,EACTd,OACEzI,EAAAA,EAAAA,IAAA6L,EAAAA,SAAA,MACE7L,EAAAA,EAAAA,IAAA,QAAAkB,IAAA,uCAAsBuH,IACtBzI,EAAAA,EAAAA,IAAA,QAAAkB,IAAA,gIAA8CiT,OAQpDE,GAAgBA,CAACC,EAAUC,KAC/B,MAAkBC,EAAlBvL,GAAkCqL,EAAQ,GAAd,GAAjB7L,MACOgM,EAAlBxL,GAAmCsL,EAAS,GAAf,GAAlB9L,MAEX,OAAO+L,EAAWE,cAAcD,EAAY,EASxCE,GAAgBA,EACpBC,aACAC,mBAKA,MAAAC,EAAwD1B,KAAhDM,EAAmBoB,EAAnBpB,oBAAqBC,EAAsBmB,EAAtBnB,uBACdoB,EAA6BrB,EAApCD,MACFuB,EAAqBH,EAAaI,KAAKZ,IAE7C,OACErU,EAAAA,EAAAA,IAAA,YACEA,EAAAA,EAAAA,IAAA,OAAAkB,IAAA,wFACElB,EAAAA,EAAAA,IAACkU,GAAY,CACXC,MAAOS,EACPnM,MAAO,WACPc,QAASA,IAAMoK,EAAuB,CAAEF,MAAO,QAC/CzH,QAAsC,QAA7B+I,MAGb/U,EAAAA,EAAAA,IAAA,OAAAkB,IAAA,0RACG8T,EAAmB7J,KAAI,EAAE+J,GAAcf,QAAO1L,aAE3CzI,EAAAA,EAAAA,IAACkU,GAAY,CACX9I,IAAK8J,EACLf,MAAOA,EACP1L,MAAOA,EACPc,QAASA,KAELoK,EADiB,eAAfuB,EACqB,CAAEzB,MAAOyB,GAET,CACrBzB,MAAOyB,EACPzM,MAAOA,GAEX,EAEFuD,QAAS+I,IAA6BG,OAK1C,EA+CV,OA3CsBC,EACpBC,cAIA,MAAQpH,EAASoF,KAATpF,KACF3I,GAAOC,EAAAA,EAAAA,KAEPuP,EAAeO,EAAQC,QAAO,CAACC,EAASC,KAC5C,MAAML,EAAaK,EAAOhO,MAAQgO,EAAOhO,MAAMvC,GAAK,aAC9CwQ,EAAaD,EAAOhO,MACtBgO,EAAOhO,MAAMmC,aACbrE,EAAKqB,cAAc7B,GAASgP,YAE1BM,GAASmB,EAAQJ,IAAaf,OAAS,GAAK,EAOlD,OALAmB,EAAQJ,GAAc,CACpBzM,MAAO+M,EACPrB,SAGKmB,CAAO,GACb,CAAC,GAEJ,OACEtV,EAAAA,EAAAA,IAAA,OACE,YAAU,iBACVkB,IAAK,CACD,kYACF8M,EAAS,gBAAW,kBAGtBhO,EAAAA,EAAAA,IAACoS,GAAM,MACNpE,IACChO,EAAAA,EAAAA,IAAC2U,GAAa,CACZC,WAAYQ,EAAQK,OACpBZ,aAAca,OAAOC,QAAQd,KAG7B,E,uOC/JV,OAXA,SAAkBrU,GAChB,OACER,EAAAA,EAAAA,IAAA,MAAAS,GAAA,CAAKC,QAAQ,YAAYC,MAAM,8BAAiCH,IAC9DR,EAAAA,EAAAA,IAAA,QACEY,EAAE,yPACFC,KAAK,iBAIb,ECEA,MAAM+U,GAAqBtV,EAAAA,EAAGqB,OAAM,2IAEvBkU,GAAcA,EACzBtM,cAIAvJ,EAAAA,EAAAA,IAAC4V,GAAkB,CAACrM,QAASA,IAC3BvJ,EAAAA,EAAAA,IAAC8V,GAAS,OAyEd,OArEqBtV,IACnB,MAAQuV,EAA8BvV,EAA9BuV,gBAAiBC,EAAaxV,EAAbwV,SAMzB,OACEhW,EAAAA,EAAAA,IAAA,OAAAkB,IAAA,wmBACElB,EAAAA,EAAAA,IAAC6V,GAAW,CAACtM,QAASyM,KACtBhW,EAAAA,EAAAA,IAAA,MAAAkB,IAAA,yDACElB,EAAAA,EAAAA,IAAC+G,EAAAA,EAAgB,CACf/B,GAAE,iCACFC,eAAc,4DACdiB,OAAQ,CAAEiO,MAAO4B,EAAgBN,YAGrCzV,EAAAA,EAAAA,IAAA,UACEA,EAAAA,EAAAA,IAAC+G,EAAAA,EAAgB,CACf/B,GAAE,0CACFC,eAAc,gEAIlBjF,EAAAA,EAAAA,IAAC0F,EAAAA,GAAI,CACHC,SAtBWpB,UACf0R,QAAQC,IAAI,aAAa,EAsBrBvP,OAAQA,EAAGC,eAAcgE,WAAU/D,iBACjC7G,EAAAA,EAAAA,IAAA,QAAM2F,SAAUiB,IACd5G,EAAAA,EAAAA,IAAA,OAAAkB,IAAA,qBACElB,EAAAA,EAAAA,IAAA,SAAOmW,QAAQ,cAAajV,IAAA,qCAC1BlB,EAAAA,EAAAA,IAAC+G,EAAAA,EAAgB,CACf/B,GAAE,yCACFC,eAAc,mCAIlBjF,EAAAA,EAAAA,IAAA,UACEgF,GAAG,cACHpC,KAAK,cACLwT,aAAa,cAAalV,IAAA,01BAG1BlB,EAAAA,EAAAA,IAAA,UAAQ6B,UAAQ,GAAC,uBACjB7B,EAAAA,EAAAA,IAAA,cAAQ,iBACRA,EAAAA,EAAAA,IAAA,cAAQ,kBACRA,EAAAA,EAAAA,IAAA,cAAQ,WAGZA,EAAAA,EAAAA,IAAA,OAAAkB,IAAA,4QACElB,EAAAA,EAAAA,IAACqH,EAAM,CAACkC,QAASyM,EAAUpU,QAAQ,mBACjC5B,EAAAA,EAAAA,IAAC+G,EAAAA,EAAgB,CACf/B,GAAE,8BACFC,eAAc,8BAGlBjF,EAAAA,EAAAA,IAACqH,EAAM,CAACxF,SAAU+I,GAAY/D,IAC5B7G,EAAAA,EAAAA,IAAC+G,EAAAA,EAAgB,CACf/B,GAAE,4BACFC,eAAc,+BAOtB,ECtFV,OAFmB3E,EAAAA,EAAGmI,MAAK,mI,uOCW3B,OAXA,SAAmBjI,GACjB,OACER,EAAAA,EAAAA,IAAA,MAAAS,GAAA,CAAKC,QAAQ,YAAYC,MAAM,8BAAiCH,IAC9DR,EAAAA,EAAAA,IAAA,QACEY,EAAE,2LACFC,KAAK,iBAIb,ECFA,MAAMgE,IAAWC,EAAAA,EAAAA,IAAe,CAC9B,2BAA4B,CAC1BE,GAAG,2CACHC,eAAe,CAAD,oCAIZoR,GAAgB/V,EAAAA,EAAGC,IAAG,qCAEtB+V,GAAoBhW,EAAAA,EAAGC,IAAG,8WAE1BgW,IAAcxV,EAAAA,EAAAA,GAAOkG,EAAPlG,CAAc,CAC9B,sJAgCJ,OA7BoByV,EAAG/C,QAAOgD,WAAUzR,SACtC,MAAMK,GAAOC,EAAAA,EAAAA,KACb,OACEtF,EAAAA,EAAAA,IAAA6L,EAAAA,SAAA,MACE7L,EAAAA,EAAAA,IAAC+M,GAAc,MACb/M,EAAAA,EAAAA,IAAC0W,GAAU,CAAC1R,GAAIA,IACdhF,EAAAA,EAAAA,IAAC+G,EAAAA,EAAgB,CACf/B,GAAE,qCACFC,eAAc,uCAIpBjF,EAAAA,EAAAA,IAACqW,GAAa,MACZrW,EAAAA,EAAAA,IAACsW,GAAiB,MAChBtW,EAAAA,EAAAA,IAAC2W,GAAU,QAEb3W,EAAAA,EAAAA,IAACuW,GAAW,CACVrP,KAAK,SACLlC,GAAIA,EACJoC,YAAa/B,EAAKqB,cAAc7B,GAAS,6BACzC4O,MAAOA,GAAS,GAChBgD,SAAWzM,GAAMyM,EAASzM,EAAE4M,OAAOnD,OACnC,YAAWzO,KAGd,E,uOCpCP,OAXA,SAAkBxE,GAChB,OACER,EAAAA,EAAAA,IAAA,MAAAS,GAAA,CAAKC,QAAQ,YAAYC,MAAM,8BAAiCH,IAC9DR,EAAAA,EAAAA,IAAA,QACEY,EAAE,8RACFC,KAAK,iBAIb,E,uOCEA,OAXA,SAAwBL,GACtB,OACER,EAAAA,EAAAA,IAAA,MAAAS,GAAA,CAAKC,QAAQ,YAAYC,MAAM,8BAAiCH,IAC9DR,EAAAA,EAAAA,IAAA,QACEY,EAAE,4QACFC,KAAK,iBAIb,ECRO,M,qpDC8FP,MAAMgW,IAAwB/R,EAAAA,EAAAA,IAAe,CAC3CgS,QAAS,CACP9R,GAAG,uCACHC,eAAe,CAAD,2BAEhB8R,OAAQ,CACN/R,GAAG,sCACHC,eAAe,CAAD,0BAEhB+R,YAAa,CACXhS,GAAG,2CACHC,eAAe,CAAD,iCAIZgS,GAAe/V,EAAAA,EAAI;;MAEjB;;;;MAIA;;;IAGF;EAGAgW,GAAgBnW,EAAAA,EAAOoW,GAAG,CAACF,GAAgB,qBAC3CG,GAAgBrW,EAAAA,EAAOsW,GAAG,CAACJ,KAC3BK,GAAWvW,EAAAA,EAAOwW,GAAG,CACzBrW,EAAAA,EAAI;MACE;;QAEE;;MAKJsW,GAA8BA,EAClCC,iBACAC,SACA3B,sBAMA,MAAM4B,EAAqB5B,EAAkB,EAEvCtN,GACJzI,EAAAA,EAAAA,IAAA,QAAAkB,IAAA,6HACElB,EAAAA,EAAAA,IAAC+G,EAAAA,EAAgB,CACf/B,GAAE,qCACFC,eAAc,+KAEdiB,OAAQ,CAAEyR,qBAAoB5B,sBAKpC,OACE/V,EAAAA,EAAAA,IAAA,OAAAkB,IAAA,uCACElB,EAAAA,EAAAA,IAAC4X,GAAgB,CAACrO,QAASkO,IACzBzX,EAAAA,EAAAA,IAAC6X,GAAQ,CACP3L,cAAY,EACZ4L,UAAQ,EACRrP,MAAOA,EACPuD,QAAS2L,KAGZA,IACC3X,EAAAA,EAAAA,IAAC4X,GAAgB,CAACrO,QAASmO,IACzB1X,EAAAA,EAAAA,IAAC+G,EAAAA,EAAgB,CACf/B,GAAE,qCACFC,eAAc,2BAKhB,EAIJ8S,GAA+BA,KACnC/X,EAAAA,EAAAA,IAAC+G,EAAAA,EAAgB,CACf/B,GAAE,uCACFC,eAAc,gCAGZ+S,GAAyBA,KAC7BhY,EAAAA,EAAAA,IAAC+G,EAAAA,EAAgB,CACf/B,GAAE,gCACFC,eAAc,iCAIZgT,GAAsBA,KAC1B,MAAQvE,EAAwBN,KAAxBM,oBAER,IAAInR,EASJ,OAPEA,EADgC,QAA9BmR,EAAoBD,OACZzT,EAAAA,EAAAA,IAACgY,GAAsB,MACM,eAA9BtE,EAAoBD,OACnBzT,EAAAA,EAAAA,IAAC+X,GAA4B,MAE7B,UAAWrE,GAAuBA,EAAoBjL,OAIhEzI,EAAAA,EAAAA,IAAA,OACE,YAAU,8BAA6BkB,IAAA,yLAGtCqB,EACG,EAIJ2V,GAAoBA,EAAGrU,YACZ,WAAXA,GACK7D,EAAAA,EAAAA,IAACmY,GAAW,CAAC/W,MAAO,YACd,gBAAXyC,GAAiC7D,EAAAA,EAAAA,IAAC0I,EAAO,MAC9B,YAAX7E,GAA6B7D,EAAAA,EAAAA,IAACoY,GAAK,MAEhC,KAGHC,GAA6BA,EAAGxU,aACpC,MAAMwB,GAAOC,EAAAA,EAAAA,KAEb,IAAI/C,EAWJ,MAVe,YAAXsB,IACFtB,EAAU8C,EAAKqB,cAAcmQ,GAAsBC,UAEtC,WAAXjT,IACFtB,EAAU8C,EAAKqB,cAAcmQ,GAAsBE,SAEtC,gBAAXlT,IACFtB,EAAU8C,EAAKqB,cAAcmQ,GAAsBG,eAG9ChX,EAAAA,EAAAA,IAAA6L,EAAAA,SAAA,KAAGtJ,EAAW,EAGjB+V,GAAgBA,EAAGlD,cACvB,MAAAN,EAAyD1B,KAA3CmF,EAAiBzD,EAAvB9G,KAAyB0F,EAAmBoB,EAAnBpB,oBACwB1K,EAAAC,IAAfC,EAAAA,EAAAA,WAAS,GAAM,GAAlDsP,EAAaxP,EAAA,GAAEyP,EAAgBzP,EAAA,GAEhC0P,EAAiC7M,EAAAA,SACrC,IAAM,CACJ,CAAEuG,OAAQ,OAAQuG,SAAU,QAE5B,CACEvG,OAAQ,cACRuG,SAAU,SAAUC,GAClB,OAAIA,EAAIrR,MACCqR,EAAIrR,MAAMmC,aAEV,IAEX,EACAmP,KAAM,UAAyB,MAAEpF,IAC/B,OAAKA,IACIzT,EAAAA,EAAAA,IAAC+X,GAA4B,KAIxC,GAEF,CACE3F,OAAQ,iBACRuG,SAAU,SACVE,KAAM,UAA2B,MAAEpF,IAEjC,OACEzT,EAAAA,EAAAA,IAAA6L,EAAAA,SAAA,MACE7L,EAAAA,EAAAA,IAAA,OAAAkB,IAAA,6DACElB,EAAAA,EAAAA,IAACkY,GAAiB,CAACrU,OAAQ4P,MAE7BzT,EAAAA,EAAAA,IAACqY,GAA0B,CAACxU,OAAQ4P,IAG1C,GAEF,CAAErB,OAAQ,iBAAkBuG,SAAU,oBAExC,IAGIlO,EAAOoB,EAAAA,SACX,ID5RkBiN,EACpB1D,EACA1B,KAEA,MAAeqB,EAA6BrB,EAApCD,MACR,MAAiC,QAA7BsB,EACKK,EAEwB,eAA7BL,EACKK,EAAQ0D,QAAO,EAAGvR,YAAaA,IAGjC6N,EAAQ0D,QAAO,EAAGvR,WAChBA,GAASA,EAAMvC,IAAM+P,GAC5B,EC8QMgE,CAAc3D,EAAS1B,IAC7B,CAAC0B,EAAQK,OAAQ/B,IAGnBsF,GAiBIC,EAAAA,GAAAA,UACF,CACEP,UACAjO,QAEFyO,GAAAA,gBACAC,GAAAA,UACAC,GAAAA,cACAC,GAAAA,cACCC,IACCA,EAAMC,eAAehT,MAAMmS,GAAY,CAErC,CACE1T,GAAI,YAGJ6T,KAAM,UAAsB,IAAED,IAC5B,MAAMY,EAAwB3N,EAAAA,YAG5B,SAAqC7I,EAErC8I,GACC,IAFC2N,EAAazW,EAAbyW,cAAkBC,EAAI9M,GAAA5J,EAAA6J,IAGxB,MAAM8M,EAAa9N,EAAAA,SAEb+N,EAAc9N,GAAO6N,EAQ3B,OANA9N,EAAAA,WAAgB,KACV+N,EAAY5J,UACd4J,EAAY5J,QAAQyJ,cAAgBA,EACtC,GACC,CAACG,EAAaH,KAEVzZ,EAAAA,EAAAA,IAAC6X,GAAQpX,GAAA,GAAKiZ,EAAI,CAAE5N,IAAK8N,IAClC,IAGA,OACE5Z,EAAAA,EAAAA,IAACwZ,EAA0BZ,EAAIiB,4BAEnC,MAECnB,IACH,IA5DJoB,EAAad,EAAbc,cACAC,EAAiBf,EAAjBe,kBACAC,EAAYhB,EAAZgB,aACAC,EAAIjB,EAAJiB,KACAC,EAAUlB,EAAVkB,WACAC,EAAgBnB,EAAhBmB,iBAAgBC,EAAApB,EAChBqB,MAASC,EAASF,EAATE,UAAWC,EAAQH,EAARG,SAAUC,EAAYJ,EAAZI,aAC9BC,EAAiBzB,EAAjByB,kBACAC,EAAQ1B,EAAR0B,SACAC,EAAY3B,EAAZ2B,aACAC,EAAQ5B,EAAR4B,SACAC,EAAe7B,EAAf6B,gBACAvK,EAAW0I,EAAX1I,YACAwK,EAAW9B,EAAX8B,YACAC,EAAqB/B,EAArB+B,sBACAC,EAAehC,EAAfgC,gBAiDIC,EAAkB,CAAC,GAAI,GAAI,GAAI,IAAK,OAAO9P,KAAK+P,IAAG,CACvDzS,MACU,QAARyS,GACElb,EAAAA,EAAAA,IAAC+G,EAAAA,EAAgB,CAAC/B,GAAE,iBAAkBC,eAAc,gCAEpDjF,EAAAA,EAAAA,IAAC+G,EAAAA,EAAgB,CACf/B,GAAE,sBACFC,eAAc,oDACdiB,OAAQ,CAAEiO,MAAO+G,KAIvBnM,SAAkB,QAARmM,EAAgBzQ,EAAKgL,SAAW8E,EAAWW,IAAQX,EAC7DhR,QAASA,KACPmR,EAAS,GAET,MAAMH,EAA0B,kBAARW,EAAmBA,EAAMzQ,EAAKgL,OACtDqF,EAAYP,EAAS,MAInBY,EAAsB3C,GAAiB2B,EAAiB1E,OAAS,EAEvE,OACEzV,EAAAA,EAAAA,IAAA,OACEkB,IAAK,CACD,0EACFqX,EAAsB,qBAAY,uBAGpCvY,EAAAA,EAAAA,IAAA,OAAKkB,IAAK,CAAG,2CAAQia,GAAyB,0BAC5Cnb,EAAAA,EAAAA,IAAA,YACEA,EAAAA,EAAAA,IAAA,OAAAkB,IAAA,mFACElB,EAAAA,EAAAA,IAAA,OAAAkB,IAAA,uCACElB,EAAAA,EAAAA,IAAA,MAAAkB,IAAA,6DACElB,EAAAA,EAAAA,IAAC+G,EAAAA,EAAgB,CACf/B,GAAE,kBACFC,eAAc,+BAIlBjF,EAAAA,EAAAA,IAACob,GAAS,CAAAla,IAAA,oBAAW,YAAU,sBAC5BuJ,EAAKgL,UAGVzV,EAAAA,EAAAA,IAACiY,GAAmB,QAEtBjY,EAAAA,EAAAA,IAAA,OAAAkB,IAAA,8UACElB,EAAAA,EAAAA,IAAA,OAAAkB,IAAA,gPACElB,EAAAA,EAAAA,IAACwX,GAA2B,CAC1BC,eAAiBzN,IACfA,EAAEC,iBACF8Q,GAAuBN,EAAkB,EAE3C/C,OAAQA,IAAMe,GAAkBD,GAChCzC,gBAAiBoE,EAAiB1E,UAEpCzV,EAAAA,EAAAA,IAACwW,GAAW,CACV/C,MAAO+G,EACPxV,GAAG,SACHyR,SAAUuE,MAGdhb,EAAAA,EAAAA,IAAA,QAAAS,GAAA,CAAAS,IAAA,oCAAqC4Y,MACnC9Z,EAAAA,EAAAA,IAAA,aACGga,EAAa7O,KAAKkQ,IACjBrb,EAAAA,EAAAA,IAACsX,GAAa+D,EAAYC,sBACvBD,EAAY/X,QAAQ6H,KAAKoQ,IAEtBvb,EAAAA,EAAAA,IAACkX,GAAazW,GAAA,CACZ,sBACgB,cAAd8a,EAAOvW,GAAqB,SAAWuW,EAAOnJ,QAE5CmJ,EAAOC,eACTD,EAAOE,0BAGTzb,EAAAA,EAAAA,IAAA,OAAAkB,IAAA,sCACGqa,EAAO5U,OAAO,UACd4U,EAAOG,UACN1b,EAAAA,EAAAA,IAAA,OAAAkB,IAAA,qCACElB,EAAAA,EAAAA,IAAC2b,GAAS,CACRva,OAC0B,IAAxBma,EAAOK,aACH,UACA,aAGR5b,EAAAA,EAAAA,IAAC6b,GAAW,CACVza,OAC0B,IAAxBma,EAAOK,aACH,UACA,sBAY1B5b,EAAAA,EAAAA,IAAA,QAAW+Z,IACRE,EAAK9O,KAAKyN,IACTsB,EAAWtB,IAET5Y,EAAAA,EAAAA,IAACsX,GAAasB,EAAIkD,cACflD,EAAImD,MAAM5Q,KAAK6Q,IAEZhc,EAAAA,EAAAA,IAACoX,GAAa3W,GAAA,CACZ,iBACqB,cAAnBub,EAAKT,OAAOvW,GACR,SACAgX,EAAKT,OAAOnJ,QAEd4J,EAAKC,gBAERD,EAAKrV,OAAO,kBAS7B3G,EAAAA,EAAAA,IAACoQ,GAAU,CACTV,WAAYjF,EAAKgL,OACjBxG,eAAgBgM,EAChBzL,YAAa8K,EAAY,EACzB7K,aAAc8K,EACdlK,YAAawK,EACbvK,YAAaA,EACbC,WAAYA,IAAMqK,IAClBpK,WAAYA,IAAMmK,SAKzBQ,IACCnb,EAAAA,EAAAA,IAACkc,GAAa,CACZnG,gBAAiBoE,EAAiBhP,KAAKgR,GAAYA,EAAQC,WAC3DpG,SAAUA,IAAMyC,GAAkBD,KAGlC,EAIJ4C,GAAY9a,EAAAA,EAAGC,IAAG,oUAsExB,OApEgB8b,KACd,MAAoDxS,EAAAZ,IAAtBC,EAAAA,EAAAA,UAAmB,IAAG,GAA7CkM,EAAOvL,EAAA,GAAEyS,EAAUzS,EAAA,GACwB0S,EAAAtT,IAAdC,EAAAA,EAAAA,WAAS,GAAK,GAA3CsT,EAAUD,EAAA,GAAEE,EAAaF,EAAA,GACkBG,EAAAzT,IAAdC,EAAAA,EAAAA,UAAS,MAAK,GAA3CyT,EAAUD,EAAA,GAAEE,EAAaF,EAAA,GAyBhC,OAvBAG,EAAAA,EAAAA,YAAU,KACR,IAAIC,GAAe,EAEnB,IAAmB,IAAfN,EAiBF,MCphBsBjY,UAEnBG,EADY,yBDogBjBqY,GACGnZ,MAAMoZ,IACAF,IAELR,EAAWU,GACXP,GAAc,GACdG,EAAc,MAAK,IAEpBpW,OAAOtC,IACD4Y,IAELL,GAAc,GACdG,EAAc1Y,GAAM,IAGf,KAAQ4Y,GAAe,CAAK,CAAE,GACtC,CAACN,KAGFxc,EAAAA,EAAAA,IAACsT,GAAqB,MACpBtT,EAAAA,EAAAA,IAAA,OAAAkB,IAAA,mGACElB,EAAAA,EAAAA,IAACoS,GAAM,OACLoK,GAAcG,IACd3c,EAAAA,EAAAA,IAACsL,GAAU,CACT/I,SACEvC,EAAAA,EAAAA,IAAC+G,EAAAA,EAAgB,CACf/B,GAAE,0BACFC,eAAc,+FAIlBsG,QAASA,KACPkR,GAAc,EAAK,IAIxBD,IACCxc,EAAAA,EAAAA,IAACuI,EAAM,CACLE,OACEzI,EAAAA,EAAAA,IAAC+G,EAAAA,EAAgB,CACf/B,GAAE,yBACFC,eAAc,yCAMpBuX,IAAeG,IACf3c,EAAAA,EAAAA,IAAA6L,EAAAA,SAAA,MACE7L,EAAAA,EAAAA,IAACmV,GAAa,CAACC,QAASA,KACxBpV,EAAAA,EAAAA,IAACsY,GAAa,CAAClD,QAASA,MAIR,E,WE5jBrB,MAAM6H,IAAQC,E,OAAAA,IAAe,CAClCC,QAAS,CAAC,I,mjCCiBZ,MAAMvY,GAAYtE,EAAAA,EAAGC,IAAG,kGAElB6c,GAAkBA,KACtB,MAAmEpU,EAAAC,IAAfC,EAAAA,EAAAA,WAAS,GAAM,GAA5DmU,EAAkBrU,EAAA,GAAEsU,EAAqBtU,EAAA,GAC1CzD,GAAUC,EAAAA,EAAAA,MAGV+X,EAAgBA,KACpBD,GAAsB,GvCMM/Y,WAG9B,IAEE,aADMG,EAHU,0BAIT,CACT,CAAE,MAAOR,GAGP,OAAO,CACT,GuCfEsZ,GAAmB5Z,MAAM6Z,IACvBH,GAAsB,GACjBG,IACHC,IACAnY,EAAQgN,QAAQ,UAClB,GACA,EAWJ,OARAsK,EAAAA,EAAAA,YAAU,KACJ9a,IACFwb,IAEAhY,EAAQgN,QAAQ,SAClB,GACC,IAEC8K,GAEArd,EAAAA,EAAAA,IAACuI,EAAM,CACLE,OACEzI,EAAAA,EAAAA,IAAC+G,EAAAA,EAAgB,CACf/B,GAAE,uBACFC,eAAc,0CAQpBjF,EAAAA,EAAAA,IAAC2d,EAAAA,GAAM,MACL3d,EAAAA,EAAAA,IAAC4d,EAAAA,GAAK,CAACjM,KAAK,mBACV3R,EAAAA,EAAAA,IAAC6K,GAAiB,QAEpB7K,EAAAA,EAAAA,IAAC4d,EAAAA,GAAK,CAACjM,KAAK,aACV3R,EAAAA,EAAAA,IAACqc,GAAO,OAIhB,EAGF,MAAMwB,WAAYhS,EAAAA,UAChBlF,MAAAA,GACE,OACE3G,EAAAA,EAAAA,IAAC4T,GAAAA,GAAQ,CAACqJ,MAAOA,KACfjd,EAAAA,EAAAA,IAAC8d,GAAAA,EAAY,CAACC,OAAO,KAAKC,cAAc,OACtChe,EAAAA,EAAAA,IAAC4E,GAAS,MACR5E,EAAAA,EAAAA,IAACie,EAAAA,GAAM,MACLje,EAAAA,EAAAA,IAAC2d,EAAAA,GAAM,MACL3d,EAAAA,EAAAA,IAAC4d,EAAAA,GAAK,CAACjM,KAAK,WACV3R,EAAAA,EAAAA,IAACoF,EAAK,QAERpF,EAAAA,EAAAA,IAAC4d,EAAAA,GAAK,CACJjX,OAAQA,KACC3G,EAAAA,EAAAA,IAACod,GAAe,YASzC,EAGF,UCzFAc,EAAQ,MAIRC,SAASC,iBAAiB,oBAAoB,KAC5CC,EAAAA,QAAgBre,EAAAA,EAAAA,IAAC6d,GAAG,MAAKM,SAAShb,KAAKmb,cAAc,UAAU,G","sources":["webpack://maestro/./app/javascript/src/components/Logo.tsx","webpack://maestro/./app/javascript/src/components/Card.tsx","webpack://maestro/./app/javascript/src/components/icons/Warning.js","webpack://maestro/./app/javascript/src/components/Input.tsx","webpack://maestro/./app/javascript/src/components/Button.tsx","webpack://maestro/./app/javascript/src/utils/persistance.ts","webpack://maestro/./app/javascript/src/utils/request.ts","webpack://maestro/./app/javascript/src/features/login/Login.tsx","webpack://maestro/./app/javascript/src/features/login/api.ts","webpack://maestro/./app/javascript/src/features/mapi_authorization/api.ts","webpack://maestro/./app/javascript/src/features/mapi_authorization/validateEmail.js","webpack://maestro/./app/javascript/src/components/Spinner.js","webpack://maestro/./app/javascript/src/components/Loader.js","webpack://maestro/./app/javascript/src/features/mapi_authorization/MapiAuthorization.tsx","webpack://maestro/./app/javascript/src/components/icons/Redo.js","webpack://maestro/./app/javascript/src/components/FetchError.js","webpack://maestro/./app/javascript/src/components/GroupStyleButton.tsx","webpack://maestro/./app/javascript/src/components/icons/Check.js","webpack://maestro/./app/javascript/src/components/icons/Minus.js","webpack://maestro/./app/javascript/src/components/Checkbox.js","webpack://maestro/./app/javascript/src/components/icons/ChevronDown.js","webpack://maestro/./app/javascript/src/components/icons/ChevronUp.js","webpack://maestro/./app/javascript/src/components/VisuallyHidden.js","webpack://maestro/./app/javascript/src/components/icons/ChevronLeft.js","webpack://maestro/./app/javascript/src/components/icons/ChevronRight.js","webpack://maestro/./app/javascript/src/components/DropdownWrapper.js","webpack://maestro/./app/javascript/src/components/Pagination.tsx","webpack://maestro/./app/javascript/src/components/DropdownToggleButton.tsx","webpack://maestro/./app/javascript/src/components/icons/Leave.js","webpack://maestro/./app/javascript/src/components/AccountDropdown.js","webpack://maestro/./app/javascript/src/features/login/hooks.ts","webpack://maestro/./app/javascript/src/features/devices/Header.tsx","webpack://maestro/./app/javascript/src/components/icons/Filter.js","webpack://maestro/./app/javascript/src/components/CustomRadioButton.js","webpack://maestro/./app/javascript/src/features/devices/FilterSidebar/context.tsx","webpack://maestro/./app/javascript/src/features/devices/FilterSidebar/index.tsx","webpack://maestro/./app/javascript/src/components/icons/Close.js","webpack://maestro/./app/javascript/src/features/devices/SettingsPanel/index.tsx","webpack://maestro/./app/javascript/src/components/InputLabel.js","webpack://maestro/./app/javascript/src/components/icons/Search.js","webpack://maestro/./app/javascript/src/features/devices/SearchField.js","webpack://maestro/./app/javascript/src/components/icons/Clock.js","webpack://maestro/./app/javascript/src/components/icons/CheckCircle.js","webpack://maestro/./app/javascript/src/features/devices/FilterSidebar/filter.ts","webpack://maestro/./app/javascript/src/features/devices/Devices.tsx","webpack://maestro/./app/javascript/src/features/devices/api.ts","webpack://maestro/./app/javascript/src/store.ts","webpack://maestro/./app/javascript/src/app.tsx","webpack://maestro/./app/javascript/packs/frontend.jsx"],"sourcesContent":["import React, { ReactElement } from \"react\";\n// @ts-expect-error png file\nimport LogoSrc from \"../../assets/mevia-logo@2x.png\";\n\nconst Logo = (): ReactElement => {\n return (\n
\n \n

Device management

\n
\n );\n};\n\nexport default Logo;\n","import tw from \"twin.macro\";\n\nconst Card = tw.div`max-w-xl w-full bg-white p-16 rounded-lg shadow-mevia`;\n\nexport default Card;\n","import * as React from \"react\";\n\nfunction SvgWarning(props) {\n return (\n \n \n \n );\n}\n\nexport default SvgWarning;\n","import React from \"react\";\nimport tw, { styled } from \"twin.macro\";\nimport WarningIcon from \"./icons/Warning\";\nimport { theme } from \"twin.macro\";\n\ntype InputProps = {\n hasError?: boolean;\n};\n\nconst InputElement = styled.input([\n tw`relative block w-full px-3 py-2 text-gray-900 placeholder-gray-500 border border-gray-300 rounded-md appearance-none focus:outline-none focus:ring-black-gamma focus:border-black-gamma focus:z-10`,\n ({ hasError = false }) => hasError && tw`border-red-alpha`,\n]);\n\nconst Input = (\n props: React.ComponentProps\n): React.ReactElement => {\n return (\n
\n \n {props.hasError && (\n
\n \n
\n )}\n
\n );\n};\n\nexport default Input;\n","import tw, { styled } from \"twin.macro\";\n\ntype ButtonProps = {\n variant?: string;\n};\n\n// Add themes\nconst variants = {\n default: tw`bg-orange-alpha hover:bg-orange-beta text-black-alpha`,\n lowEmphasis: tw`bg-transparent hover:bg-transparent text-black-alpha hover:text-black-beta`,\n mediumEmphasis: tw`bg-transparent hover:bg-grey-gamma border-black-gamma`,\n save: tw`text-white bg-green-alpha hover:bg-green-beta`,\n warning: tw`text-white bg-red-alpha hover:bg-red-beta`,\n};\n\nconst Button = styled.button([\n tw`px-4 py-2 font-medium border border-transparent rounded-full font-button text-black-alpha focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500`,\n ({ variant = \"default\" }) => variants[variant],\n ({ disabled = false }) =>\n disabled && tw`cursor-not-allowed hover:bg-grey-beta bg-grey-beta`,\n]);\n\nexport default Button;\n","const TOKEN_KEY = \"AUTHENTICATION_TOKEN\";\n\nexport const saveAuthToken = (token: string): void => {\n return sessionStorage.setItem(TOKEN_KEY, token);\n};\n\nexport const getAuthToken = (): string | null =>\n sessionStorage.getItem(TOKEN_KEY);\n\nexport const clear = (): void => {\n sessionStorage.removeItem(TOKEN_KEY);\n};\n\nexport const isEmpty = (): boolean => !sessionStorage.getItem(TOKEN_KEY);\n","import { getAuthToken } from \"./persistance\";\n\nexport class MaestroError extends Error {\n json: unknown;\n response: Response;\n\n constructor(message: string, json: unknown, response: Response) {\n super(message);\n this.response = response;\n this.json = json;\n this.name = \"MaestroError\";\n }\n}\n\ninterface stringMap {\n [key: string]: string;\n}\ninterface requestInterface {\n query?: stringMap;\n headers?: { [key: string]: string };\n body?: { [key: string]: unknown };\n}\n\nfunction buildHeader(optionHeaders?: stringMap) {\n const headers: stringMap = {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n ...optionHeaders,\n };\n\n if (getAuthToken()) headers[\"Authorization\"] = `Bearer ${getAuthToken()}`;\n return headers;\n}\n\ntype RequestResponse = Promise;\n\nfunction request(\n method: string,\n url: string,\n { ...options }: requestInterface = {}\n): RequestResponse {\n const body = options.body && JSON.stringify(options.body);\n\n const headers = buildHeader(options.headers);\n\n return fetch(url, {\n ...options,\n method,\n body,\n headers,\n })\n .then((response) => {\n if (response.status == 204 || response.status === 202)\n return Promise.all([response, {}]);\n return Promise.all([response, failSafeJSONParse(response)]);\n })\n .then(([response, json]) => {\n if (response.status < 200 || response.status >= 300) {\n // Probably not the most beautiful way of defining an error\n const errorMessage =\n json.error || json.errors?.join(\", \") || response.statusText;\n const error = new MaestroError(errorMessage, json, response);\n return Promise.reject(error);\n }\n return json;\n });\n}\n\nconst failSafeJSONParse = async (response: Response) => {\n const text = await response.text();\n try {\n const json = JSON.parse(text);\n return json;\n } catch (error) {\n return {};\n }\n};\n\nexport const get: (\n url: string,\n obj?: requestInterface\n) => RequestResponse = (url: string, obj: requestInterface = {}) =>\n request(\"GET\", url, obj);\n\nexport const post: (\n url: string,\n obj?: requestInterface\n) => RequestResponse = (url: string, obj: requestInterface = {}) =>\n request(\"POST\", url, obj);\n\nexport const patch: (\n url: string,\n obj?: requestInterface\n) => RequestResponse = (url: string, obj: requestInterface = {}) =>\n request(\"PATCH\", url, obj);\n\nexport const put: (\n url: string,\n obj?: requestInterface\n) => RequestResponse = (url: string, obj: requestInterface = {}) =>\n request(\"PUT\", url, obj);\n\nexport const del: (\n url: string,\n obj?: requestInterface\n) => RequestResponse = (url: string, obj: requestInterface = {}) =>\n request(\"DELETE\", url, obj);\n","import React, { ReactElement } from \"react\";\nimport { useIntl, FormattedMessage, defineMessages } from \"react-intl\";\nimport tw from \"twin.macro\";\nimport Logo from \"../../components/Logo\";\nimport Card from \"../../components/Card\";\nimport Input from \"../../components/Input\";\nimport Button from \"../../components/Button\";\nimport { Form, Field } from \"react-final-form\";\nimport { FORM_ERROR } from \"final-form\";\nimport { useHistory } from \"react-router-dom\";\n\nconst Container = tw.div`\nmin-h-screen flex items-center justify-center bg-gray-50 py-12 px-4 sm:px-6 lg:px-8`;\n\nimport { logIn } from \"./api\";\nimport { saveAuthToken } from \"../../utils/persistance\";\n\nconst messages = defineMessages({\n usernamePlaceholder: {\n id: \"login.username-placeholder\",\n defaultMessage: \"Email address\",\n description: \"Login form username placeholder\",\n },\n passwordPlaceholder: {\n id: \"login.password-placeholder\",\n defaultMessage: \"Password\",\n description: \"Login form password placeholder\",\n },\n unauthorized: {\n id: \"login.unathorized\",\n defaultMessage: \"Username or password is incorrect.\",\n description: \"Error message in form when login authorization fails\",\n },\n});\n\ninterface FormValues {\n username?: string;\n password?: string;\n}\n\nexport default function Login(): ReactElement {\n const intl = useIntl();\n const history = useHistory();\n\n const onSubmit = async (values: FormValues) => {\n const credentials = {\n userName: values.username,\n password: values.password,\n };\n\n return logIn(credentials)\n .then((json: unknown) => {\n if (typeof json[\"jwt\"] === \"string\") {\n const jwt = json[\"jwt\"];\n saveAuthToken(jwt);\n\n // redirect to devices view\n history.push(\"/authorization\");\n }\n })\n .catch(() => {\n return { [FORM_ERROR]: intl.formatMessage(messages.unauthorized) };\n });\n };\n\n return (\n \n \n \n (\n
\n

\n \n

\n
\n \n {({ input }) => (\n
\n \n \n
\n )}\n
\n \n {({ input }) => (\n
\n \n \n
\n )}\n
\n
\n {submitError && (\n
{submitError}
\n )}\n
\n \n \n \n
\n
\n )}\n />\n
\n
\n );\n}\n","import { get } from \"../../utils/request\";\n\ninterface Credentials {\n userName: string;\n password: string;\n}\n\nexport const logIn = async (credentials: Credentials): Promise => {\n const loginUrl = \"/api/internal/session\";\n\n const { userName, password } = credentials;\n\n const body = {\n user_name: userName,\n password,\n };\n\n const response = await fetch(loginUrl, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n\n if (response.ok) {\n const json = await response.json();\n return json;\n } else {\n throw new Error(\"Login failed\");\n }\n};\n\nexport const verifyAuthStatus = async (): Promise => {\n const verifyUrl = \"/api/internal/session\";\n\n try {\n await get(verifyUrl);\n return true;\n } catch (error) {\n // we mostly care about unauthorized, 401, but it seems like a good bet to\n // be overzealous\n return false;\n }\n};\n","const MAPI_USERS_ROOT = \"v2/users\";\nimport { get, post, del } from \"../../utils/request\";\n\ninterface Credentials {\n userName?: string;\n email?: string;\n password: string;\n}\n\nexport interface Stage {\n id: string | number;\n endpoint_api: string;\n display_name: string;\n authorized: boolean;\n}\n\nexport interface MapiUser {\n data: {\n id: string | number;\n attributes: {\n jwt: string;\n };\n };\n}\n\nexport const logIn = async (\n serverRoot: string,\n credentials: Credentials\n): Promise => {\n const loginUrl = `${serverRoot}/${MAPI_USERS_ROOT}/login`;\n\n const { userName, email, password } = credentials;\n\n const body = {\n user: { userName, email, password },\n };\n\n const response = await fetch(loginUrl, {\n method: \"POST\", //\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n\n if (response.ok) {\n const json = await response.json();\n return json;\n } else {\n throw new Error(\"Login failed\");\n }\n};\n\nexport const storeStageCredential = async (\n stage: Stage,\n jwt: string\n): Promise => {\n const credentialUrl = `/api/internal/stages/${stage.id}/credential`;\n const body = {\n credential: { jwt },\n };\n\n return post(credentialUrl, { body }).then((mapiUser: MapiUser) => {\n return mapiUser;\n });\n};\n\nexport const deleteStageCredential = async (stage: Stage): Promise =>\n del(`/api/internal/stages/${stage.id}/credential`);\n\nexport const getStages = async (): Promise =>\n get(\"/api/internal/stages\");\n","// Stolen from https://stackoverflow.com/questions/46155/how-to-validate-an-email-address-in-javascript\nconst validEmailRegex = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n\nexport default email => validEmailRegex.test(email.toLowerCase())\n","import React from \"react\";\nimport tw, { css, styled, theme } from \"twin.macro\";\nimport { keyframes } from \"@emotion/react\";\n\nconst spin = keyframes({\n \"0%\": { transform: \"rotate(0deg) scale(1)\" },\n \"50%\": { transform: \"rotate(180deg) scale(1.1)\" },\n \"100%\": { transform: \"rotate(360deg) scale(1)\" },\n});\n\nconst Spinner = styled.div([\n tw`w-3 h-3`,\n css`\n --spinner-background: rgba(255, 255, 255, 0.25);\n animation: ${spin} 1s infinite linear;\n border-radius: 100%;\n border-top: var(--border-width) solid var(--spinner-background);\n border-right: var(--border-width) solid var(--spinner-background);\n border-bottom: var(--border-width) solid var(--spinner-background);\n border-left: var(--border-width) solid ${theme`colors.black-alpha`};\n transform: translateZ(0);\n `,\n ({ borderWidth = \"2px\" }) =>\n css`\n --border-width: ${borderWidth};\n `,\n ({ size = \"2em\" }) => css`\n height: ${size};\n width: ${size};\n `,\n]);\n\nexport default Spinner;\n","/* eslint-disable react/prop-types */\nimport React from \"react\";\nimport Spinner from \"./Spinner\";\nimport tw, { css, styled } from \"twin.macro\";\n\nconst Label = tw.div`mt-6`;\nconst Block = styled.div([\n tw`flex flex-col items-center justify-center`,\n ({ minHeight = \"80vh\" }) =>\n css`\n min-height: ${minHeight};\n `,\n]);\n\nconst Loader = ({ spinnerSize = \"10rem\", label }) => (\n \n \n {label && }\n \n);\n\nexport default Loader;\n","import React, { useState, ReactElement } from \"react\";\nimport tw from \"twin.macro\";\nimport { useIntl, FormattedMessage, defineMessages } from \"react-intl\";\nimport {\n logIn,\n getStages,\n Stage,\n MapiUser,\n storeStageCredential,\n deleteStageCredential,\n} from \"./api\";\nimport { Form, Field } from \"react-final-form\";\nimport isValidEmail from \"./validateEmail\";\nimport { useHistory } from \"react-router-dom\";\nimport useSWR from \"swr\";\nimport Loader from \"../../components/Loader\";\n\nconst Container = tw.div`\nmin-h-screen flex items-center justify-center bg-gray-50 py-12 px-4 sm:px-6 lg:px-8`;\nimport Card from \"../../components/Card\";\nimport Logo from \"../../components/Logo\";\nimport Input from \"../../components/Input\";\nimport Button from \"../../components/Button\";\n\nconst messages = defineMessages({\n mapiUnauthorized: {\n defaultMessage: \"Username or password is incorrect.\",\n description: \"Error message in form when MAPI authorization fails\",\n },\n storeCredentialError: {\n defaultMessage: \"Unable to store credentials.\",\n description: \"Error message in form when MAPI authorization fails\",\n },\n deleteCredentialError: {\n defaultMessage: \"Unable to delete credentials.\",\n description: \"Error message in form when MAPI authorization fails\",\n },\n});\n\nconst LargeCard = tw(Card)`max-w-2xl`;\n\ninterface IEnvironmentAuth {\n stage: Stage;\n onAuthorizationChange: () => void;\n}\n\ninterface EnvironmentFormValues {\n username?: string;\n password?: string;\n}\n\nconst AuthorizedButton = (props: { onClick: (MouseEvent) => void }) => {\n const [hovering, setHovering] = useState(false);\n return (\n setHovering(true)}\n onMouseOut={() => setHovering(false)}\n onClick={props.onClick}\n >\n \n \n );\n};\n\nconst EnvironmentAuth = (props: IEnvironmentAuth) => {\n const intl = useIntl();\n const { stage, onAuthorizationChange } = props;\n const { display_name, authorized, endpoint_api } = stage;\n\n const [error, setError] = useState(null);\n\n const onSubmit = async (values: EnvironmentFormValues) => {\n const isEmail = isValidEmail(values.username);\n const credentials = {\n userName: !isEmail && values.username,\n email: isEmail && values.username,\n password: values.password,\n };\n\n // TODO: show error message about not being validates\n return logIn(endpoint_api, credentials)\n .then((json: MapiUser) => {\n storeStageCredential(stage, json.data.attributes.jwt)\n .then(() => onAuthorizationChange())\n .then(() => setError(null))\n .catch(() => {\n setError(intl.formatMessage(messages.storeCredentialError));\n });\n })\n .catch(() => {\n setError(intl.formatMessage(messages.storeCredentialError));\n });\n };\n\n const onUnauthorize = (e: React.MouseEvent) => {\n e.preventDefault();\n deleteStageCredential(stage)\n .then(() => onAuthorizationChange())\n .then(() => setError(null))\n .catch(() => {\n setError(intl.formatMessage(messages.deleteCredentialError));\n });\n };\n\n return (\n
\n
{display_name}
\n (\n
\n
\n \n {({ input }) => (\n
\n \n \n
\n )}\n
\n \n {({ input }) => (\n
\n \n \n
\n )}\n
\n {authorized && }\n {!authorized && (\n \n \n \n )}\n
\n {submitError && (\n
{submitError}
\n )}\n {error &&
{error}
}\n
\n )}\n />\n
\n );\n};\n\nconst MapiAuthorization = (): ReactElement => {\n const history = useHistory();\n\n const navigateToDashboard = () => {\n history.push(\"/devices\");\n };\n\n const { data: stages, isLoading, error, mutate } = useSWR(\n \"/api/v1/stages\",\n getStages\n );\n\n return (\n \n \n \n
\n

\n \n

\n

\n \n

\n
\n {(isLoading || !stages) && (\n \n }\n />\n )}\n {error && (\n
\n \n
\n )}\n {!isLoading && !error && (\n
\n {stages.map((stage) => (\n \n ))}\n
\n )}\n
\n \n
\n
\n
\n );\n};\n\nexport default MapiAuthorization;\n","import * as React from \"react\";\n\nfunction SvgRedo(props) {\n return (\n \n \n \n );\n}\n\nexport default SvgRedo;\n","/* eslint-disable react/prop-types */\nimport React from \"react\";\nimport { FormattedMessage } from \"react-intl\";\nimport tw from \"twin.macro\";\nimport RedoIcon from \"./icons/Redo\";\nimport Button from \"./Button\";\n\nconst Block = tw.div`flex flex-col items-center justify-center py-32`;\n\nconst FetchError = ({ message = undefined, onRetry }) => (\n \n
\n {message || (\n \n )}\n
\n \n
\n);\n\nexport default FetchError;\n","import tw, { css, styled } from \"twin.macro\";\n\nconst GroupStyleButton = styled.button([\n tw`box-border flex items-center h-10 px-3 py-3 bg-white border text-black-beta border-black-delta hover:border-black-gamma whitespace-nowrap`,\n css`\n &:first-of-type {\n ${tw`rounded-l-lg`}\n }\n &:last-child {\n ${tw`rounded-r-lg`}\n }\n `,\n]);\n\nexport default GroupStyleButton;\n","import * as React from \"react\";\n\nfunction SvgCheck(props) {\n return (\n \n \n \n );\n}\n\nexport default SvgCheck;\n","import * as React from \"react\";\n\nfunction SvgMinus(props) {\n return (\n \n \n \n );\n}\n\nexport default SvgMinus;\n","/* eslint-disable react/prop-types */\nimport React from \"react\";\nimport tw, { css, styled } from \"twin.macro\";\n// @ts-expect-error Not typed yet\nimport CheckIcon from \"./icons/Check\";\n// @ts-expect-error Not typed yet\nimport MinusIcon from \"./icons/Minus\";\n\nconst CheckboxContainer = tw.label`flex flex-grow items-center cursor-pointer`;\n\nconst hiddenCheckboxCss = css`\n position: absolute;\n overflow: hidden;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n border: 0;\n clip: rect(0 0 0 0);\n`;\n\n// Hidden but accessible\nconst HiddenCheckbox = React.forwardRef(function HiddenCheckboxWithRef(\n props,\n ref\n) {\n return ;\n});\n\nconst StyledCheckbox = styled.div([\n tw`relative flex-shrink-0 w-4 h-4 transition-colors ease-in-out border rounded-sm cursor-pointer`,\n ({ checked }) =>\n checked\n ? tw`border-blue-alpha bg-blue-alpha`\n : tw`bg-white border-black-delta`,\n css`\n input[type=\"checkbox\"]:focus + & {\n ${tw`border-blue-alpha`}\n }\n `,\n]);\n\nconst IconWrapper = styled.div([\n tw`absolute w-3 text-white transform -translate-x-1/2 left-1/2 top-1/2`,\n ({ checked }) => (checked ? tw`visible` : tw`hidden`),\n ({ useMinusIcon }) => !useMinusIcon && tw`-translate-y-1/2`,\n]);\n\nconst CheckboxIcon = ({ useMinusIcon, checked }) => (\n \n {useMinusIcon ? : }\n \n);\n\nconst labelSizeStyles = {\n small: tw`ml-1.5 text-sm`,\n large: tw`ml-3`,\n};\n\nconst Label = styled.span([\n tw`flex ml-3 text-black-alpha`,\n ({ size }) => labelSizeStyles[size],\n]);\nconst Checkbox = React.forwardRef(function CheckboxWithRef(\n { checked, label, size = \"large\", className, useMinusIcon = false, ...props },\n ref\n) {\n return (\n \n \n \n \n \n \n \n );\n});\n\nexport default Checkbox;\n","import * as React from \"react\";\n\nfunction SvgChevronDown(props) {\n return (\n \n \n \n );\n}\n\nexport default SvgChevronDown;\n","import * as React from \"react\";\n\nfunction SvgChevronUp(props) {\n return (\n \n \n \n );\n}\n\nexport default SvgChevronUp;\n","import React from \"react\";\nimport tw, { css, styled, theme } from \"twin.macro\";\n\nconst hiddenCss = css`\n position: absolute;\n overflow: hidden;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n border: 0;\n clip: rect(0 0 0 0);\n`;\n\nconst VisuallyHidden = ({ children }) => (\n \n {children}\n \n);\n\nexport default VisuallyHidden;\n","import * as React from \"react\";\n\nfunction SvgChevronLeft(props) {\n return (\n \n \n \n );\n}\n\nexport default SvgChevronLeft;\n","import * as React from \"react\";\n\nfunction SvgChevronRight(props) {\n return (\n \n \n \n );\n}\n\nexport default SvgChevronRight;\n","import React from \"react\";\nimport Popover from \"@material-ui/core/Popover\";\nimport tw, { css, styled } from \"twin.macro\";\n\nconst PopoverWrapper = styled(Popover)([\n css`\n & .MuiPaper-root {\n ${tw`shadow rounded-xl whitespace-nowrap`}\n }\n `,\n]);\n\nconst TOP_OFFSET_PX = 16;\n\nconst DropdownWrapper = (props) => {\n const { testId = \"\", className, anchorEl, children, handleClose } = props;\n\n let heightOffset;\n if (anchorEl) {\n const anchorRect = anchorEl.getBoundingClientRect();\n heightOffset = anchorRect.height + TOP_OFFSET_PX;\n }\n\n const anchorOriginVertical =\n props.anchorOrigin?.vertical || heightOffset || \"bottom\";\n const anchorOriginHorizontal = props.anchorOrigin?.horizontal || \"right\";\n\n const anchorOrigin = {\n vertical: anchorOriginVertical,\n horizontal: anchorOriginHorizontal,\n };\n\n const transformOrigin = props.transformOrigin || {\n vertical: \"top\",\n horizontal: \"right\",\n };\n\n const expanded = Boolean(anchorEl);\n\n return (\n \n {children}\n \n );\n};\n\nexport default DropdownWrapper;\n","import React, { ReactNode, ReactElement } from \"react\";\nimport tw, { css, styled } from \"twin.macro\";\nimport { FormattedMessage } from \"react-intl\";\nimport VisuallyHidden from \"./VisuallyHidden\";\nimport ChevronLeftIcon from \"./icons/ChevronLeft\";\nimport ChevronRightIcon from \"./icons/ChevronRight\";\nimport DropdownWrapper from \"./DropdownWrapper\";\n\nconst PaginationWrapper = tw.div`flex flex-row justify-end items-center p-6`;\nconst PaginationRangeWrapper = tw.div`flex flex-row items-center mr-3`;\nconst RangeDropdownWrapper = tw.div`relative mr-0.5`;\n\nconst ToggleButton = tw.button`bg-grey-gamma text-black-beta py-1.5`;\n\nconst PageItem = tw.div`m-1.5`;\nconst PageLinkItem = styled.button([\n tw`inline-block align-middle cursor-pointer hover:text-black-beta focus:text-black-beta`,\n css`\n &[disabled] {\n ${tw`text-black-delta`}\n }\n `,\n]);\n\nconst PaginationOptionsMenu = styled(DropdownWrapper)([tw`p-1.5 -left-1/2`]);\n\ntype PerPageOptionProps = {\n active?: boolean;\n};\n\nconst PerViewLinkItem = styled.button([\n tw`py-1.5 px-3 text-sm no-underline hover:(bg-grey-gamma text-blue-alpha) focus:(bg-grey-gamma text-blue-alpha) `,\n ({ active }) => active && tw`font-bold`,\n]);\n\ninterface PaginationRangeButtonProps {\n onClick: React.MouseEventHandler;\n children: ReactNode;\n}\nconst PaginationRangeButton = (props: PaginationRangeButtonProps) => {\n const { onClick, children } = props;\n return (\n \n {children}\n \n );\n};\n\ninterface ItemsPerViewLinkProps {\n children: ReactElement;\n isActive: boolean;\n onClick: () => void;\n}\n\nconst ItemsPerViewLink = ({\n children,\n isActive,\n onClick,\n}: ItemsPerViewLinkProps) => {\n return (\n \n {children}\n \n );\n};\n\nconst RangeDropdown = (props: {\n label: ReactElement;\n perPageOptions: PerPageOption[];\n}) => {\n const { label, perPageOptions } = props;\n const [anchorEl, setAnchorEl] = React.useState(null);\n\n const handleClick: React.MouseEventHandler = (event) => {\n if (anchorEl) {\n setAnchorEl(null);\n } else {\n const button = event.currentTarget as HTMLButtonElement;\n setAnchorEl(button);\n }\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const options = perPageOptions.map(({ label, isActive, onClick }, index) => {\n return (\n
  • \n {\n onClick();\n handleClose();\n }}\n >\n {label}\n \n
  • \n );\n });\n\n return (\n \n \n {label}\n \n \n
      {options}
    \n \n
    \n );\n};\n\ninterface PaginationRangeProps {\n currentPage: number;\n itemsPerPage: number;\n totalItems: number;\n perPageOptions: PerPageOption[];\n}\n\nconst PaginationRange = ({\n currentPage,\n itemsPerPage,\n totalItems,\n perPageOptions,\n}: PaginationRangeProps) => {\n const itemOffsetForPreviousPages = (currentPage - 1) * itemsPerPage;\n const firstItemOnPage = Math.min(itemOffsetForPreviousPages + 1, totalItems);\n const lastItemOnPage = Math.min(currentPage * itemsPerPage, totalItems);\n const current = (\n \n {firstItemOnPage} - {lastItemOnPage}\n \n );\n\n return (\n \n \n \n \n );\n};\n\nexport interface PerPageOption {\n label: ReactElement;\n isActive: boolean;\n onClick: () => void;\n}\n\ninterface PaginationProps {\n totalItems: number;\n perPageOptions: PerPageOption[];\n currentPage: number;\n itemsPerPage: number;\n canPrevPage: boolean;\n canNextPage: boolean;\n onNextPage: () => void;\n onPrevPage: () => void;\n}\n\nconst Pagination = ({\n totalItems = 1,\n perPageOptions,\n currentPage,\n itemsPerPage,\n canPrevPage,\n canNextPage,\n onNextPage,\n onPrevPage,\n}: PaginationProps): ReactElement => {\n return (\n \n \n \n \n
    \n \n
    \n \n \n \n \n
    \n\n \n \n \n \n \n
    \n \n
    \n \n
    \n
    \n );\n};\n\ninterface PageLinkProps {\n children: ReactElement[];\n testID: string;\n disabled: boolean;\n onClick: () => void;\n}\nconst PageLink = React.memo(function NoMemoPageLink({\n children,\n testID,\n disabled,\n onClick,\n}: PageLinkProps) {\n return (\n \n {children}\n \n );\n});\n\nexport default Pagination;\n","import tw, { styled } from \"twin.macro\";\n\nconst ToggleButton = styled.button<{ active: boolean }>([\n tw`flex items-center px-4 py-2 border rounded-lg text-black-alpha hover:border-black-gamma`,\n ({ active }) => (active ? tw`border-black-gamma` : tw`border-black-delta`),\n]);\n\nexport default ToggleButton;\n","import * as React from \"react\";\n\nfunction SvgLeave(props) {\n return (\n \n \n \n );\n}\n\nexport default SvgLeave;\n","import React from \"react\";\nimport { FormattedMessage } from \"react-intl\";\nimport tw, { css, styled } from \"twin.macro\";\nimport { Link } from \"react-router-dom\";\nimport DropdownWrapper from \"./DropdownWrapper\";\nimport ToggleButton from \"./DropdownToggleButton\";\nimport ChevronDownIcon from \"../components/icons/ChevronDown\";\nimport ChevronUpIcon from \"../components/icons/ChevronUp\";\nimport LeaveIcon from \"../components/icons/Leave\";\n\nconst Wrapper = styled.div`\n position: relative;\n`;\n\nconst dropdownItemStyles = css`\n ${tw`flex items-center text-left p-2 text-black-alpha transition`}\n min-width: 200px;\n\n &:hover,\n &:focus {\n ${tw`bg-grey-delta`}\n }\n\n &:last-child {\n ${tw`border-t border-black-epsilon`}\n }\n`;\n\nconst DropdownButton = styled.button([dropdownItemStyles]);\n\nconst DropdownLink = styled(Link)([\n css`\n ${dropdownItemStyles}\n text-decoration: none;\n\n &:active,\n &:visited {\n ${tw`text-black-alpha`}\n }\n `,\n]);\n\nconst DropdownText = tw.span`\n ml-1\n`;\n\nconst DropdownMenu = tw(DropdownWrapper)``;\n\nconst IconWrapper = tw.div`w-4 ml-4`;\n\nconst LogOutMenuItem = ({ onLogOut }) => (\n \n \n \n \n \n \n \n \n);\n\nconst AccountDropdown = ({ onLogOut }) => {\n const [anchorEl, setAnchorEl] = React.useState(null);\n\n const handleClick = (event) => {\n if (anchorEl) {\n setAnchorEl(null);\n } else {\n const button = event.currentTarget;\n setAnchorEl(button);\n }\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n return (\n \n \n \n
    \n {anchorEl ? : }\n
    \n
    \n \n \n \n \n \n \n \n \n
    \n );\n};\n\nexport default AccountDropdown;\n","import { useHistory } from \"react-router-dom\";\nimport { clear } from \"../../utils/persistance\";\n\nexport const useLogOut = (): (() => void) => {\n const history = useHistory();\n\n return () => {\n clear();\n history.replace(\"/login\");\n };\n};\n","import React from \"react\";\nimport tw, { css, styled } from \"twin.macro\";\nimport { NavLink } from \"react-router-dom\";\n// @ts-expect-error Not a TS file\nimport MeviaSymbol from \"../../../assets/mevia-symbol@2x.png\";\nimport AccountDropdown from \"../../components/AccountDropdown\";\nimport { FormattedMessage } from \"react-intl\";\nimport { useLogOut } from \"../login/hooks\";\n\nconst LogoHeader = tw.div`py-7 px-6 flex flex-row `;\n\nconst menuItems = [\n {\n path: \"/devices\",\n label: \"Devices\",\n },\n];\n\nconst NavigationList = tw.ul`flex flex-row`;\nconst NavigationItem = tw.li`px-8 `;\n\nconst NavigationLink = styled(NavLink)([\n css`\n &.active {\n ${tw`border-b border-black-alpha hover:border-black-beta`}\n }\n `,\n tw`block text-blue-alpha hover:text-black-beta transition-colors font-body pb-0.5`,\n]);\n\nconst PrimaryNavigation = () => {\n return (\n \n );\n};\n\nconst Header = (): React.ReactElement => {\n const logOut = useLogOut();\n return (\n
    \n \n \n

    \n \n

    \n
    \n \n
    \n \n
    \n
    \n );\n};\nexport default Header;\n","import * as React from \"react\";\n\nfunction SvgFilter(props) {\n return (\n \n \n \n );\n}\n\nexport default SvgFilter;\n","/* eslint-disable react/prop-types */\nimport React from \"react\";\nimport tw, { css, styled } from \"twin.macro\";\nimport CheckIcon from \"./icons/Check\";\n\nconst RadioButtonContainer = tw.label`flex flex-grow items-center`;\n\nconst hiddenRadioCSS = css`\n position: absolute;\n overflow: hidden;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n border: 0;\n clip: rect(0 0 0 0);\n`;\n\n// Hidden but accessible\nconst HiddenRadioButton = (props) => (\n \n);\n\nconst StyledRadioButton = styled.div([\n tw`relative flex-shrink-0 w-4 h-4 transition-colors ease-in-out border rounded-full cursor-pointer`,\n ({ checked }) =>\n checked\n ? tw`border-blue-alpha bg-blue-alpha`\n : tw`bg-white border-black-delta`,\n css`\n input[type=\"radio\"]:focus + & {\n ${tw`border-blue-alpha`}\n }\n `,\n]);\n\nconst IconWrapper = styled.div([\n tw`absolute w-3 text-white transform -translate-x-1/2 -translate-y-1/2 left-1/2 top-1/2`,\n ({ checked }) => (checked ? tw`visible` : tw`hidden`),\n]);\n\nconst RadioButtonIcon = ({ checked }) => (\n \n \n \n);\n\nexport const Label = styled.span([\n tw`flex flex-grow ml-3 cursor-pointer text-black-alpha`,\n]);\n\nexport const RadioButton = ({ checked, ...props }) => (\n <>\n \n \n \n \n \n);\n\nconst CustomRadioButtonWithLabel = ({ checked, label, ...props }) => (\n \n \n \n \n);\n\nexport default CustomRadioButtonWithLabel;\n","import * as React from \"react\";\n\nexport type SelectedEnvironment =\n | { value: \"all\" }\n | { value: \"unassigned\" }\n | { value: number | string; label: string };\ninterface FilterSidebarContextType {\n open: boolean;\n setOpen: (value: boolean) => void;\n selectedEnvironment: SelectedEnvironment;\n setSelectedEnvironment: (value: SelectedEnvironment) => void;\n}\n\nconst FilterSidebarContext = React.createContext<\n FilterSidebarContextType | undefined\n>(undefined);\n\nfunction useFilterSidebar(): FilterSidebarContextType {\n const context = React.useContext(FilterSidebarContext);\n if (!context) {\n throw new Error(\n `useFilterSidebar must be used within a FilterSidebarProvider`\n );\n }\n return context;\n}\n\nfunction FilterSidebarProvider({\n children,\n}: {\n children?: React.ReactNode;\n}): React.ReactElement {\n const [open, setOpen] = React.useState(true);\n const [\n selectedEnvironment,\n setSelectedEnvironment,\n ] = React.useState({ value: \"all\" });\n const value = React.useMemo(\n () => ({\n open,\n setOpen,\n selectedEnvironment,\n setSelectedEnvironment,\n }),\n [open, selectedEnvironment]\n );\n return (\n \n {children}\n \n );\n}\n\nexport { FilterSidebarProvider, useFilterSidebar };\n","import React from \"react\";\nimport tw, { theme } from \"twin.macro\";\nimport FilterIcon from \"../../../components/icons/Filter\";\nimport { FormattedMessage } from \"react-intl\";\nimport CustomRadioButton from \"../../../components/CustomRadioButton\";\nimport { useFilterSidebar } from \"./context\";\nimport { Device } from \"../type\";\nimport { defineMessages, useIntl } from \"react-intl\";\n\nconst messages = defineMessages({\n unassigned: {\n id: \"devices.environment-filter.unassigned-label\",\n defaultMessage: \"Unassigned\",\n },\n});\n\nconst FilterIconWrapper = tw.div`w-4`;\nconst FilterButton = ({ onClick }: { onClick: () => void }) => (\n \n);\n\nconst Header = () => {\n const { open, setOpen } = useFilterSidebar();\n return (\n
    \n {\n setOpen(!open);\n }}\n />\n {open && (\n \n \n \n )}\n
    \n );\n};\n\nconst FilterOption = ({\n label,\n checked = false,\n onClick,\n count,\n}: {\n label: string;\n checked: boolean;\n onClick: () => void;\n count: number;\n}) => {\n return (\n
    \n \n {label}\n {count}\n \n }\n />\n
    \n );\n};\n\nconst sortEnvLabels = (firstEnv, secondEnv) => {\n const [, { label: firstLabel }] = firstEnv;\n const [, { label: secondLabel }] = secondEnv;\n\n return firstLabel.localeCompare(secondLabel);\n};\n\ntype StageValue = string;\ntype StageData = {\n count: number;\n label: string;\n};\n\nconst FilterOptions = ({\n totalCount,\n environments,\n}: {\n totalCount: number;\n environments: [StageValue, StageData][];\n}) => {\n const { selectedEnvironment, setSelectedEnvironment } = useFilterSidebar();\n const { value: selectedEnvironmentValue } = selectedEnvironment;\n const sortedEnvironments = environments.sort(sortEnvLabels);\n\n return (\n
    \n
    \n setSelectedEnvironment({ value: \"all\" })}\n checked={selectedEnvironmentValue === \"all\"}\n />\n
    \n
    \n {sortedEnvironments.map(([stageValue, { count, label }]) => {\n return (\n {\n if (stageValue === \"unassigned\") {\n setSelectedEnvironment({ value: stageValue });\n } else {\n setSelectedEnvironment({\n value: stageValue,\n label: label,\n });\n }\n }}\n checked={selectedEnvironmentValue === stageValue}\n />\n );\n })}\n
    \n
    \n );\n};\n\nconst FilterSidebar = ({\n devices,\n}: {\n devices: Device[];\n}): React.ReactElement => {\n const { open } = useFilterSidebar();\n const intl = useIntl();\n\n const environments = devices.reduce((accEnvs, device) => {\n const stageValue = device.stage ? device.stage.id : \"unassigned\";\n const stageLabel = device.stage\n ? device.stage.display_name\n : intl.formatMessage(messages.unassigned);\n\n const count = (accEnvs[stageValue]?.count || 0) + 1;\n\n accEnvs[stageValue] = {\n label: stageLabel,\n count,\n };\n\n return accEnvs;\n }, {});\n\n return (\n \n
    \n {open && (\n \n )}\n \n );\n};\n\nexport default FilterSidebar;\n","import * as React from \"react\";\n\nfunction SvgClose(props) {\n return (\n \n \n \n );\n}\n\nexport default SvgClose;\n","import React from \"react\";\nimport { Form } from \"react-final-form\";\nimport Button from \"../../../components/Button\";\nimport { Device } from \"../type\";\nimport { FormattedMessage } from \"react-intl\";\nimport CloseIcon from \"../../../components/icons/Close\";\nimport tw from \"twin.macro\";\n\ninterface DevicePanelProps {\n selectedDevices: Device[];\n onCancel: () => void;\n}\n\nconst CloseButtonWrapper = tw.button`w-2 absolute top-3 right-3 text-black-alpha`;\n\nexport const CloseButton = ({\n onClick,\n}: {\n onClick: () => void;\n}): React.ReactElement => (\n \n \n \n);\n\nconst DevicePanel = (props: DevicePanelProps): React.ReactElement => {\n const { selectedDevices, onCancel } = props;\n\n const onSubmit = async () => {\n console.log(\"Submitting\");\n };\n\n return (\n
    \n \n

    \n \n

    \n

    \n \n

    \n (\n
    \n
    \n \n \n \n \n \n \n \n
    \n
    \n \n \n
    \n
    \n )}\n />\n
    \n );\n};\n\nexport default DevicePanel;\n","import tw from \"twin.macro\";\n\nconst InputLabel = tw.label`block mb-1.5 font-medium text-black-alpha`;\n\nexport default InputLabel;\n","import * as React from \"react\";\n\nfunction SvgSearch(props) {\n return (\n \n \n \n );\n}\n\nexport default SvgSearch;\n","import React from \"react\";\nimport tw, { styled } from \"twin.macro\";\nimport { FormattedMessage } from \"react-intl\";\nimport Input from \"../../components/Input\";\nimport InputLabel from \"../../components/InputLabel\";\nimport SearchIcon from \"../../components/icons/Search\";\nimport VisuallyHidden from \"../../components/VisuallyHidden\";\nimport { defineMessages, useIntl } from \"react-intl\";\n\nconst messages = defineMessages({\n \"search-input-placeholder\": {\n id: \"devices.search-devices-input-placeholder\",\n defaultMessage: \"Search devices\",\n },\n});\n\nconst SearchWrapper = tw.div`relative w-72 `;\n\nconst SearchIconWrapper = tw.div`w-3 absolute top-1/2 left-3 transform -translate-y-1/2 text-black-beta z-10`;\n\nconst SearchInput = styled(Input)([\n tw`box-border h-10 pl-10 text-base font-body`,\n]);\n\nconst SearchField = ({ value, onChange, id }) => {\n const intl = useIntl();\n return (\n <>\n \n \n \n \n \n \n \n \n \n onChange(e.target.value)}\n data-test={id}\n />\n \n \n );\n};\n\nexport default SearchField;\n","import * as React from \"react\";\n\nfunction SvgClock(props) {\n return (\n \n \n \n );\n}\n\nexport default SvgClock;\n","import * as React from \"react\";\n\nfunction SvgCheckCircle(props) {\n return (\n \n \n \n );\n}\n\nexport default SvgCheckCircle;\n","import { SelectedEnvironment } from \"./context\";\nimport { Device } from \"../type\";\n\nexport const filter = (\n devices: Device[],\n selectedEnvironment: SelectedEnvironment\n): Device[] => {\n const { value: selectedEnvironmentValue } = selectedEnvironment;\n if (selectedEnvironmentValue === \"all\") {\n return devices;\n }\n if (selectedEnvironmentValue === \"unassigned\") {\n return devices.filter(({ stage }) => !stage);\n }\n\n return devices.filter(({ stage }) => {\n return stage && stage.id == selectedEnvironmentValue;\n });\n};\n","/* eslint-disable react/jsx-key */\n/* eslint-disable react/prop-types */\n/* eslint-disable @typescript-eslint/ban-types */\nimport React, { useState, useEffect } from \"react\";\nimport tw, { css, styled, theme } from \"twin.macro\";\nimport { FormattedMessage, defineMessages, useIntl } from \"react-intl\";\nimport Loader from \"../../components/Loader\";\nimport FetchError from \"../../components/FetchError\";\nimport {\n useTable,\n useRowSelect,\n usePagination,\n useSortBy,\n useGlobalFilter,\n CellProps,\n Column,\n} from \"react-table\";\nimport GroupStyleButton from \"../../components/GroupStyleButton\";\nimport Checkbox from \"../../components/Checkbox\";\nimport ChevronDown from \"../../components/icons/ChevronDown\";\nimport ChevronUp from \"../../components/icons/ChevronUp\";\nimport Pagination from \"../../components/Pagination\";\nimport Header from \"./Header\";\nimport FilterSidebar from \"./FilterSidebar\";\nimport SettingsPanel from \"./SettingsPanel\";\nimport SearchField from \"./SearchField\";\nimport Spinner from \"../../components/Spinner\";\nimport Clock from \"../../components/icons/Clock\";\nimport CheckCircle from \"../../components/icons/CheckCircle\";\nimport {\n FilterSidebarProvider,\n useFilterSidebar,\n} from \"./FilterSidebar/context\";\nimport { filter as filterDevices } from \"./FilterSidebar/filter\";\nimport { Device } from \"./type\";\nimport { fetchDevices } from \"./api\";\ndeclare module \"react-table\" {\n interface TableOptions\n extends UseExpandedOptions,\n UseFiltersOptions,\n UseGlobalFiltersOptions,\n UseGroupByOptions,\n UsePaginationOptions,\n UseResizeColumnsOptions,\n UseRowSelectOptions,\n UseRowStateOptions,\n UseSortByOptions {}\n\n interface TableInstance\n extends UseColumnOrderInstanceProps,\n UseExpandedInstanceProps,\n UseFiltersInstanceProps,\n UseGlobalFiltersInstanceProps,\n UseGroupByInstanceProps,\n UsePaginationInstanceProps,\n UseRowSelectInstanceProps,\n UseRowStateInstanceProps,\n UseSortByInstanceProps {\n editable: boolean;\n }\n\n interface TableState\n extends UseColumnOrderState,\n UseExpandedState,\n UseFiltersState,\n UseGlobalFiltersState,\n UseGroupByState,\n UsePaginationState,\n UseResizeColumnsState,\n UseRowSelectState,\n UseRowStateState,\n UseSortByState {}\n\n interface ColumnInterface\n extends UseFiltersColumnOptions,\n UseGlobalFiltersColumnOptions,\n UseGroupByColumnOptions,\n UseResizeColumnsColumnOptions,\n UseSortByColumnOptions {}\n\n interface ColumnInstance\n extends UseFiltersColumnProps,\n UseGroupByColumnProps,\n UseResizeColumnsColumnProps,\n UseSortByColumnProps {}\n\n interface Cell\n extends UseGroupByCellProps,\n UseRowStateCellProps {}\n\n interface Row\n extends UseExpandedRowProps,\n UseGroupByRowProps,\n UseRowSelectRowProps,\n UseRowStateRowProps {}\n}\n\nconst settingStatusMessages = defineMessages({\n pending: {\n id: \"devices.table.setting-status.pending\",\n defaultMessage: \"Pending\",\n },\n synced: {\n id: \"devices.table.setting-status.synced\",\n defaultMessage: \"Synced\",\n },\n in_progress: {\n id: \"devices.table.setting-status.in-progress\",\n defaultMessage: \"In progress\",\n },\n});\n\nconst tableCellCSS = css`\n &:last-child {\n ${tw`w-full`}\n }\n\n &:first-of-type {\n ${tw`pl-9`}\n }\n\n ${tw`relative p-4 text-sm whitespace-nowrap font-body`}\n`;\n\nconst TableHeadCell = styled.th([tableCellCSS, tw`font-medium`]);\nconst TableDataCell = styled.td([tableCellCSS]);\nconst TableRow = styled.tr([\n css`\n ${tw`border-t border-black-epsilon`}\n &:not(:first-of-type):last-child {\n ${tw`border-b border-black-epsilon`}\n }\n `,\n]);\n\nconst ToggleSelectedDevicesButton = ({\n onSelectToggle,\n onEdit,\n selectedDevices,\n}: {\n onSelectToggle: (e: React.MouseEvent) => void;\n onEdit: () => void;\n selectedDevices: number;\n}) => {\n const hasSelectedDevices = selectedDevices > 0;\n\n const label = (\n \n \n \n );\n\n return (\n
    \n \n \n \n {hasSelectedDevices && (\n \n \n \n )}\n
    \n );\n};\n\nconst UnassignedEnvironmentMessage = () => (\n \n);\nconst AllEnvironmentsMessage = () => (\n \n);\n\nconst SelectedEnvironment = () => {\n const { selectedEnvironment } = useFilterSidebar();\n\n let message;\n if (selectedEnvironment.value === \"all\") {\n message = ;\n } else if (selectedEnvironment.value === \"unassigned\") {\n message = ;\n } else {\n message = \"label\" in selectedEnvironment && selectedEnvironment.label;\n }\n\n return (\n \n {message}\n \n );\n};\n\nconst SettingStatusIcon = ({ status }: { status: string }) => {\n if (status === \"synced\")\n return ;\n if (status === \"in_progress\") return ;\n if (status === \"pending\") return ;\n\n return null;\n};\n\nconst SettingStatusHumanReadable = ({ status }: { status: string }) => {\n const intl = useIntl();\n\n let message;\n if (status === \"pending\") {\n message = intl.formatMessage(settingStatusMessages.pending);\n }\n if (status === \"synced\") {\n message = intl.formatMessage(settingStatusMessages.synced);\n }\n if (status === \"in_progress\") {\n message = intl.formatMessage(settingStatusMessages.in_progress);\n }\n\n return <>{message};\n};\n\nconst DeviceListing = ({ devices }: { devices: Device[] }) => {\n const { open: filterSidebarOpen, selectedEnvironment } = useFilterSidebar();\n const [openSidePanel, setOpenSidePanel] = useState(false);\n\n const columns: Array> = React.useMemo(\n () => [\n { Header: \"Name\", accessor: \"name\" },\n // { Header: \"Environment\", accessor: \"stage.display_name\" },\n {\n Header: \"Environment\",\n accessor: function (row) {\n if (row.stage) {\n return row.stage.display_name;\n } else {\n return null;\n }\n },\n Cell: function EnvironmentCell({ value }) {\n if (!value) {\n return ;\n } else {\n return value;\n }\n },\n },\n {\n Header: \"Setting status\",\n accessor: \"status\",\n Cell: function SettingStatusCell({ value }) {\n // add an icon\n return (\n <>\n
    \n \n
    \n \n \n );\n },\n },\n { Header: \"Patient status\", accessor: \"patient_status\" },\n ],\n []\n );\n\n const data = React.useMemo(\n () => filterDevices(devices, selectedEnvironment),\n [devices.length, selectedEnvironment]\n );\n\n const {\n getTableProps,\n getTableBodyProps,\n headerGroups,\n page,\n prepareRow,\n selectedFlatRows,\n state: { pageIndex, pageSize, globalFilter },\n isAllRowsSelected,\n gotoPage,\n previousPage,\n nextPage,\n canPreviousPage,\n canNextPage,\n setPageSize,\n toggleAllRowsSelected,\n setGlobalFilter,\n } = useTable(\n {\n columns,\n data,\n },\n useGlobalFilter,\n useSortBy,\n usePagination,\n useRowSelect,\n (hooks) => {\n hooks.visibleColumns.push((columns) => [\n // Let's make a column for selection\n {\n id: \"selection\",\n // The cell can use the individual row's getToggleRowSelectedProps method\n // to the render a checkbox\n Cell: function CheckboxCell({ row }: CellProps) {\n const IndeterminateCheckbox = React.forwardRef<\n HTMLInputElement,\n { indeterminate?: boolean }\n >(function IndeterminateCheckboxWithRef(\n { indeterminate, ...rest },\n ref: React.MutableRefObject\n ) {\n const defaultRef = React.useRef();\n // Don't know how to type this\n const resolvedRef = ref || defaultRef;\n\n React.useEffect(() => {\n if (resolvedRef.current) {\n resolvedRef.current.indeterminate = indeterminate;\n }\n }, [resolvedRef, indeterminate]);\n\n return ;\n });\n\n // eslint-disable-next-line react/prop-types\n return (\n \n );\n },\n },\n ...columns,\n ]);\n }\n );\n\n const pageSizeOptions = [10, 25, 50, 100, \"all\"].map((num) => ({\n label:\n num === \"all\" ? (\n \n ) : (\n \n ),\n\n isActive: num === \"all\" ? data.length === pageSize : num === pageSize,\n onClick: () => {\n gotoPage(0);\n // Only time when num shouldn't be a number is when num === 'all'\n const pageSize = typeof num === \"number\" ? num : data.length;\n setPageSize(pageSize);\n },\n }));\n\n const shouldOpenSidePanel = openSidePanel && selectedFlatRows.length > 0;\n\n return (\n \n
    \n
    \n
    \n
    \n

    \n \n

    \n \n {data.length}\n \n
    \n \n
    \n
    \n
    \n {\n e.preventDefault();\n toggleAllRowsSelected(!isAllRowsSelected);\n }}\n onEdit={() => setOpenSidePanel(!openSidePanel)}\n selectedDevices={selectedFlatRows.length}\n />\n \n
    \n \n \n {headerGroups.map((headerGroup) => (\n \n {headerGroup.headers.map((column) => {\n return (\n \n
    \n {column.render(\"Header\")}\n {column.canSort && (\n
    \n \n \n
    \n )}\n
    \n \n );\n })}\n
    \n ))}\n \n \n {page.map((row) => {\n prepareRow(row);\n return (\n \n {row.cells.map((cell) => {\n return (\n \n {cell.render(\"Cell\")}\n \n );\n })}\n \n );\n })}\n \n
    \n nextPage()}\n onPrevPage={() => previousPage()}\n />\n
    \n
    \n
    \n {shouldOpenSidePanel && (\n flatrow.original)}\n onCancel={() => setOpenSidePanel(!openSidePanel)}\n />\n )}\n \n );\n};\n\nconst ItemCount = tw.div`px-3 py-1.5 text-center box-content rounded-2xl leading-none bg-light-blue-delta text-black-alpha`;\n\nconst Devices = (): React.ReactElement => {\n const [devices, setDevices] = useState([]);\n const [isFetching, setIsFetching] = useState(true);\n const [fetchError, setFetchError] = useState(null);\n\n useEffect(() => {\n let isSubscribed = true;\n\n if (isFetching === false) { return; }\n\n fetchDevices()\n .then((fetchedDevices: Device[]) => {\n if (!isSubscribed) { return; }\n\n setDevices(fetchedDevices);\n setIsFetching(false);\n setFetchError(null);\n })\n .catch((error) => {\n if (!isSubscribed) { return; }\n\n setIsFetching(false);\n setFetchError(error);\n });\n\n return () => { isSubscribed = false };\n }, [isFetching]);\n\n return (\n \n
    \n
    \n {!isFetching && fetchError && (\n \n }\n onRetry={() => {\n setIsFetching(true);\n }}\n />\n )}\n {isFetching && (\n \n }\n />\n )}\n {!isFetching && !fetchError && (\n <>\n \n \n \n )}\n
    \n
    \n );\n};\n\nexport default Devices;\n","import { get } from \"../../utils/request\";\n\nexport const fetchDevices = async (): Promise => {\n const devicePath = \"/api/internal/devices\";\n return get(devicePath);\n};\n","import { configureStore } from \"@reduxjs/toolkit\";\nexport const store = configureStore({\n reducer: {},\n});\n\n// Infer the `RootState` and `AppDispatch` types from the store itself\nexport type RootState = ReturnType;\n// Inferred type: {posts: PostsState, comments: CommentsState, users: UsersState}\nexport type AppDispatch = typeof store.dispatch;\n","import React, { useEffect, useState } from \"react\";\nimport {\n BrowserRouter as Router,\n Switch,\n Route,\n useHistory,\n} from \"react-router-dom\";\nimport Login from \"./features/login/Login\";\nimport MapiAuthorization from \"./features/mapi_authorization/MapiAuthorization\";\nimport Devices from \"./features/devices/Devices\";\nimport tw from \"twin.macro\";\nimport { IntlProvider } from \"react-intl\";\nimport { getAuthToken, clear as clearAuthToken } from \"./utils/persistance\";\nimport { verifyAuthStatus } from \"./features/login/api\";\nimport { FormattedMessage } from \"react-intl\";\nimport Loader from \"./components/Loader\";\nimport { store } from \"./store\";\nimport { Provider } from \"react-redux\";\n\nconst Container = tw.div`bg-grey-delta h-screen`;\n\nconst ProtectedRoutes = () => {\n const [fetchingAuthStatus, setFetchingAuthStatus] = useState(false);\n const history = useHistory();\n\n // TODO: handle Errors?\n const verifySession = () => {\n setFetchingAuthStatus(true);\n verifyAuthStatus().then((validSession) => {\n setFetchingAuthStatus(false);\n if (!validSession) {\n clearAuthToken();\n history.replace(\"/login\");\n }\n });\n };\n\n useEffect(() => {\n if (getAuthToken()) {\n verifySession();\n } else {\n history.replace(\"/login\");\n }\n }, []);\n\n if (fetchingAuthStatus) {\n return (\n \n }\n />\n );\n } else {\n return (\n \n \n \n \n \n \n \n \n );\n }\n};\n\nclass App extends React.Component {\n render(): React.ReactElement {\n return (\n \n \n \n \n \n \n \n \n {\n return ;\n }}\n />\n \n \n \n \n \n );\n }\n}\n\nexport default App;\n","// Run this example by adding <%= javascript_pack_tag 'hello_react' %> to the head of your layout file,\n// like app/views/layouts/application.html.erb. All it does is render
    Hello React
    at the bottom\n// of the page.\n\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\n\nrequire(\"../stylesheets/frontend.css\");\n\nimport App from \"src/app\";\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n ReactDOM.render(, document.body.querySelector(\".react\"));\n});\n"],"names":["Logo","__cssprop","className","src","LogoSrc","alt","width","tw","div","props","_extends","viewBox","xmlns","d","fill","InputElement","styled","input","hasError","css","WarningIcon","color","variants","default","lowEmphasis","mediumEmphasis","save","warning","button","variant","disabled","TOKEN_KEY","getAuthToken","sessionStorage","getItem","clear","removeItem","MaestroError","Error","constructor","message","json","response","super","this","name","request","method","url","_ref","options","_objectDestructuringEmpty","body","JSON","stringify","headers","optionHeaders","_objectSpread","Accept","buildHeader","fetch","then","status","Promise","all","failSafeJSONParse","errorMessage","error","errors","join","statusText","reject","async","text","parse","get","obj","Container","messages","defineMessages","usernamePlaceholder","id","defaultMessage","passwordPlaceholder","unauthorized","Login","intl","useIntl","history","useHistory","Card","Form","onSubmit","user_name","credentials","userName","password","ok","logIn","values","username","jwt","token","setItem","push","catch","FORM_ERROR","formatMessage","render","handleSubmit","submitting","submitError","FormattedMessage","Field","Input","type","required","placeholder","Button","storeStageCredential","stage","post","credential","mapiUser","deleteStageCredential","del","getStages","validEmailRegex","spin","keyframes","transform","borderWidth","size","Label","Block","minHeight","Loader","spinnerSize","label","Spinner","mapiUnauthorized","storeCredentialError","deleteCredentialError","LargeCard","AuthorizedButton","_useState2","_slicedToArray","useState","hovering","setHovering","onMouseEnter","onMouseOut","onClick","EnvironmentAuth","onAuthorizationChange","display_name","authorized","endpoint_api","_useState4","setError","onUnauthorize","e","preventDefault","isEmail","email","test","toLowerCase","serverRoot","loginUrl","user","data","attributes","validateOnBlur","pristine","MapiAuthorization","_useSWR","useSWR","stages","isLoading","mutate","map","key","navigateToDashboard","FetchError","onRetry","icon","RedoIcon","CheckboxContainer","hiddenCheckboxCss","HiddenCheckbox","React","ref","StyledCheckbox","checked","IconWrapper","useMinusIcon","CheckboxIcon","MinusIcon","CheckIcon","labelSizeStyles","small","large","span","_ref$size","_ref$useMinusIcon","_objectWithoutProperties","_excluded","hiddenCss","VisuallyHidden","children","PopoverWrapper","Popover","_props$testId","testId","anchorEl","handleClose","heightOffset","getBoundingClientRect","height","anchorOrigin","vertical","horizontal","transformOrigin","expanded","Boolean","open","onClose","PaperProps","PaginationWrapper","PaginationRangeWrapper","RangeDropdownWrapper","ToggleButton","PageItem","PageLinkItem","PaginationOptionsMenu","DropdownWrapper","PerViewLinkItem","active","PaginationRangeButton","ItemsPerViewLink","isActive","RangeDropdown","perPageOptions","_React$useState2","setAnchorEl","index","event","currentTarget","PaginationRange","currentPage","itemsPerPage","totalItems","itemOffsetForPreviousPages","firstItemOnPage","Math","min","lastItemOnPage","current","total","PageLink","testID","Pagination","canPrevPage","canNextPage","onNextPage","onPrevPage","ChevronLeftIcon","ChevronRightIcon","Wrapper","dropdownItemStyles","DropdownButton","DropdownLink","Link","DropdownText","DropdownMenu","LogOutMenuItem","onLogOut","LeaveIcon","AccountDropdown","ChevronUpIcon","ChevronDownIcon","to","LogoHeader","menuItems","path","NavigationList","ul","NavigationItem","li","NavigationLink","NavLink","PrimaryNavigation","item","Header","logOut","useLogOut","replace","MeviaSymbol","RadioButtonContainer","hiddenRadioCSS","HiddenRadioButton","StyledRadioButton","RadioButtonIcon","RadioButton","noSpacing","_ref2","_excluded2","FilterSidebarContext","undefined","useFilterSidebar","context","FilterSidebarProvider","setOpen","_React$useState4","value","selectedEnvironment","setSelectedEnvironment","Provider","unassigned","FilterIconWrapper","FilterButton","FilterIcon","_useFilterSidebar","FilterOption","count","CustomRadioButton","sortEnvLabels","firstEnv","secondEnv","firstLabel","secondLabel","localeCompare","FilterOptions","totalCount","environments","_useFilterSidebar2","selectedEnvironmentValue","sortedEnvironments","sort","stageValue","FilterSidebar","devices","reduce","accEnvs","device","stageLabel","length","Object","entries","CloseButtonWrapper","CloseButton","CloseIcon","selectedDevices","onCancel","console","log","htmlFor","autoComplete","SearchWrapper","SearchIconWrapper","SearchInput","SearchField","onChange","InputLabel","SearchIcon","target","settingStatusMessages","pending","synced","in_progress","tableCellCSS","TableHeadCell","th","TableDataCell","td","TableRow","tr","ToggleSelectedDevicesButton","onSelectToggle","onEdit","hasSelectedDevices","GroupStyleButton","Checkbox","readOnly","UnassignedEnvironmentMessage","AllEnvironmentsMessage","SelectedEnvironment","SettingStatusIcon","CheckCircle","Clock","SettingStatusHumanReadable","DeviceListing","filterSidebarOpen","openSidePanel","setOpenSidePanel","columns","accessor","row","Cell","filter","filterDevices","_useTable","useTable","useGlobalFilter","useSortBy","usePagination","useRowSelect","hooks","visibleColumns","IndeterminateCheckbox","indeterminate","rest","defaultRef","resolvedRef","getToggleRowSelectedProps","getTableProps","getTableBodyProps","headerGroups","page","prepareRow","selectedFlatRows","_useTable$state","state","pageIndex","pageSize","globalFilter","isAllRowsSelected","gotoPage","previousPage","nextPage","canPreviousPage","setPageSize","toggleAllRowsSelected","setGlobalFilter","pageSizeOptions","num","shouldOpenSidePanel","ItemCount","headerGroup","getHeaderGroupProps","column","getHeaderProps","getSortByToggleProps","canSort","ChevronUp","isSortedDesc","ChevronDown","getRowProps","cells","cell","getCellProps","SettingsPanel","flatrow","original","Devices","setDevices","_useState6","isFetching","setIsFetching","_useState8","fetchError","setFetchError","useEffect","isSubscribed","fetchDevices","fetchedDevices","store","configureStore","reducer","ProtectedRoutes","fetchingAuthStatus","setFetchingAuthStatus","verifySession","verifyAuthStatus","validSession","clearAuthToken","Switch","Route","App","IntlProvider","locale","defaultLocale","Router","require","document","addEventListener","ReactDOM","querySelector"],"sourceRoot":""}