@zextras/carbonio-shell-ui 0.4.1-rc.7 → 0.4.1-rc.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{251.a8d98585.chunk.js → 251.b4ac6d2a.chunk.js} +2 -2
- package/dist/{251.a8d98585.chunk.js.map → 251.b4ac6d2a.chunk.js.map} +1 -1
- package/dist/644.b70440f3.chunk.js +3 -0
- package/dist/{644.b56334df.chunk.js.LICENSE.txt → 644.b70440f3.chunk.js.LICENSE.txt} +0 -0
- package/dist/{644.b56334df.chunk.js.map → 644.b70440f3.chunk.js.map} +1 -1
- package/dist/admin.html +1 -1
- package/dist/commit +1 -1
- package/dist/component.json +1 -1
- package/dist/{index.c45fba2d.js → index.6dc9308e.js} +3 -3
- package/dist/{index.c45fba2d.js.LICENSE.txt → index.6dc9308e.js.LICENSE.txt} +0 -0
- package/dist/{index.c45fba2d.js.map → index.6dc9308e.js.map} +1 -1
- package/dist/index.html +1 -1
- package/dist/standalone.html +1 -1
- package/dist/{style.c45fba2d.css → style.6dc9308e.css} +1 -1
- package/dist/{style.c45fba2d.css.map → style.6dc9308e.css.map} +1 -1
- package/package.json +3 -3
- package/dist/644.b56334df.chunk.js +0 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"251.a8d98585.chunk.js","mappings":"uiBAWaA,G,uEAAyB,CACrC,CAAEC,OAAQ,EAAGC,IAAK,UAAWC,OAAQ,SACrC,CAAEF,OAAQ,EAAGC,IAAK,UAAWC,OAAQ,QACrC,CAAEF,OAAQ,EAAGC,IAAK,UAAWC,OAAQ,QACrC,CAAEF,OAAQ,EAAGC,IAAK,UAAWC,OAAQ,SACrC,CAAEF,OAAQ,EAAGC,IAAK,UAAWC,OAAQ,UACrC,CAAEF,OAAQ,EAAGC,IAAK,UAAWC,OAAQ,OACrC,CAAEF,OAAQ,EAAGC,IAAK,UAAWC,OAAQ,UACrC,CAAEF,OAAQ,EAAGC,IAAK,UAAWC,OAAQ,QACrC,CAAEF,OAAQ,EAAGC,IAAK,UAAWC,OAAQ,QACrC,CAAEF,OAAQ,EAAGC,IAAK,UAAWC,OAAQ,YAGzBC,EAAU,CACtBC,UAAW,IACXC,MAAO,IACPC,MAAO,IACPC,KAAM,IACNC,KAAM,IACNC,OAAQ,IACRC,SAAU,IACVC,KAAM,IACNC,cAAe,IACfC,SAAU,KACVC,KAAM,KACNC,SAAU,KACVC,cAAe,KACfC,QAAS,KACTC,MAAO,KACPC,UAAW,MAGCC,EAAe,oBACfC,EAAkB,WAClBC,EAAkB,WAClBC,EAAgB,SAChBC,EAAe,CAC3BC,aAAc,eACdC,kBAAmB,oBACnBC,QAAS,UACTC,aAAc,eACdC,QAAS,UACTC,aAAc,eACdC,OAAQ,SACRC,YAAa,cACbC,YAAa,cACbC,iBAAkB,mBAClBC,OAAQ,SACRC,YAAa,cACbvB,SAAU,WACVwB,cAAe,gBACfC,IAAK,OAGOC,EAA+C,CAC3DC,oBAAqB,CAAC,mBACtBC,OAAQ,GACRC,IAAK,0KAMLC,kBAAmB,CAAC,eACpBC,yBAAyB,GAGbC,EAA0C,CACtDC,SAAU,WACVC,WAAY,qBACZC,MAAO,iBAGKC,EAAW,IAAH,OAAOC,cAAP,KACRC,EAEZ,6a,iHCpDKC,G,SAAmB,kBAAM,gDAElBC,EAAqB,SAACC,GAAD,kBAA2C,CAC5EC,KAAI,UAAED,EAAMC,YAAR,SACJC,MAAK,UAAEF,EAAME,aAAR,QAAiB,EACtBC,UAAS,UAAEH,EAAMG,iBAAR,SACTC,MAAK,UAAEJ,EAAMI,aAAR,QAAiB,Y,qkBCdvB,IAAMC,EAAa,SAA2BC,EAAiBC,GAA5C,OAClBC,EAAAA,EAAAA,QAAOF,GAAO,SAACG,GAAD,OAAUA,EAAKF,KAAOA,MAExBG,GAAcC,EAAAA,EAAAA,IAAiB,SAACC,GAAD,MAAU,CACrDC,KAAM,GACNC,YAAa,GACbC,MAAO,CACNC,OAAQ,GACRC,YAAa,GACbC,cAAe,GACfC,KAAM,oBACNC,UAAW,EACXC,QAAS,GACTC,KAAM,QACNC,QAAS,GACTC,KAAM,GACNC,QAAS,SAEVC,YAAa,GACbC,OAAQ,GACRC,MAAO,CACNC,WAAY,GACZC,aAAc,GACdC,QAAS,GACTC,MAAO,GACPC,WAAY,GACZC,SAAU,GACVC,OAAQ,GACRC,sBAAuB,GACvBC,wBAAyB,IAE1BC,QAAS,CACRC,QAAS,SAAC1B,GACTD,GAAI,SAAC4B,GAAD,YAAY,CACf3B,MAAM4B,EAAAA,EAAAA,QACL5B,GACA,SAAC6B,EAAKC,GAAN,OACCA,EAAIxB,MAAQwB,EAAIxB,OAASrD,EAAzB,OAEM4E,GAFN,cAGIC,EAAIxB,KD/Cc,SAACwB,GAAD,4BAAmD,CAC9E3B,OAAM,UAAE2B,EAAI3B,cAAN,QAAgB,GACtBC,YAAW,UAAE0B,EAAI1B,mBAAN,QAAqB,oBAEhCC,cAAa,UAAEyB,EAAIzB,qBAAN,QAAuB,GACpCC,KAAI,UAAEwB,EAAIxB,YAAN,QAAc,SAClBC,SAAQ,UAAEuB,EAAIvB,gBAAN,QAAkB,GAC1BC,QAAO,UAAEsB,EAAItB,eAAN,QAAiB,GACxBC,KAAI,UAAEqB,EAAIrB,YAAN,QAAc,WAClBC,QAASoB,EAAIpB,QACbC,KAAI,UAAEmB,EAAInB,YAAN,QAAc,OAClBC,QAAO,UAAEkB,EAAIlB,eAAN,QAAiB,SACxBmB,UAAWD,EAAIC,WCmCKC,CAAaF,KAEzBD,IACJ,IAED3B,MAAO,EAAF,KACDyB,EAAMzB,OADL,WAEA+B,EAAAA,EAAAA,MAAKjC,GAAM,SAAC8B,GAAD,OAASA,EAAIxB,OAASrD,YAFjC,QAEkD,IAEvDgD,aAAa2B,EAAAA,EAAAA,QAAO5B,GAAM,SAAC6B,EAAKK,GAAN,OAAeA,EAAI5B,KAAJ,OAAgBuB,GAAhB,cAAsBK,EAAI5B,KAAO,KAAOuB,IAAM,SAGzFM,cACC,SAACL,GAAD,OACA,SAACM,GACArC,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,GACRA,EAAM1B,YAAY6B,IAAOQ,EAAAA,EAAAA,OAAMX,EAAM1B,YAAY6B,GAAMM,SAK3DG,SAAU,SAACC,GAuDV,OAtDAzC,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,GACRA,EAAMb,OAAO0B,EAAU9C,IAAM8C,EACzBA,EAAUxB,aACbW,EAAMZ,MAAMC,YAAayB,EAAAA,EAAAA,SACxBC,EAAAA,EAAAA,WACC,CACC,CACCZ,IAAKU,EAAUV,IACfpC,GAAI8C,EAAU9C,GACdiD,MAAOH,EAAUG,MACjBC,UAAWJ,EAAUxB,WACrB7B,MAAOqD,EAAUrD,MACjB0D,SAAUL,EAAUK,SACpBC,QAASN,EAAUM,QACnBC,MAAOP,EAAUO,QAGnBpB,EAAMZ,MAAMC,YACZ,SAACgC,EAAGC,GAAJ,OAAmBD,EAAEtD,KAAOuD,EAAEvD,MAE/B,aAGE8C,EAAUvB,eACbU,EAAMZ,MAAME,cAAeyB,EAAAA,EAAAA,WAC1B,CACC,CACCZ,IAAKU,EAAUV,IACfpC,GAAI8C,EAAU9C,GACdiD,MAAOH,EAAUG,MACjBC,UAAWJ,EAAUvB,eAGvBU,EAAMZ,MAAME,cACZ,SAAC+B,EAAGC,GAAJ,OAAmBD,EAAEtD,KAAOuD,EAAEvD,OAG5B8C,EAAUtB,UACbS,EAAMZ,MAAMG,SAAUwB,EAAAA,EAAAA,WACrB,CACC,CACCZ,IAAKU,EAAUV,IACfpC,GAAI8C,EAAU9C,GACdiD,MAAOH,EAAUG,MACjBC,UAAWJ,EAAUtB,UAGvBS,EAAMZ,MAAMG,SACZ,SAAC8B,EAAGC,GAAJ,OAAmBD,EAAEtD,KAAOuD,EAAEvD,WAK3B8C,EAAU9C,IAElBwD,mBAAoB,SAACxD,EAAYoD,GAChC/C,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,GACR,IAAMwB,GAAMC,EAAAA,EAAAA,WAAUzB,EAAMZ,MAAMC,YAAY,SAACqC,GAAD,OAAUA,EAAK3D,KAAOA,KAChEyD,GAAO,IACVxB,EAAMZ,MAAMC,WAAWmC,GAAKL,QAAUA,QAO1CQ,YAAa,SAAC5D,GACbK,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,GACRA,EAAMb,QAASyC,EAAAA,EAAAA,MAAK5B,EAAMb,OAAQ,CAACpB,IACnCiC,EAAMZ,MAAMC,WAAaxB,EAAWmC,EAAMZ,MAAMC,WAAYtB,GAC5DiC,EAAMZ,MAAME,aAAezB,EAAWmC,EAAMZ,MAAME,aAAcvB,GAChEiC,EAAMZ,MAAMG,QAAU1B,EAAWmC,EAAMZ,MAAMG,QAASxB,QAKzD8D,aAAc,SAACC,GAMd,OALA1D,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,GACRA,EAAMZ,MAAMI,OAAQuC,EAAAA,EAAAA,SAAQ,CAACD,GAAO9B,EAAMZ,MAAMI,MAAO,UAGlDsC,EAAK/D,IAIbiE,gBAAiB,SAACjE,GACjBK,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,GACRA,EAAMZ,MAAMI,MAAQ3B,EAAWmC,EAAMZ,MAAMI,MAAOzB,QAMrDkE,gBAAiB,SAACH,GAMjB,OALA1D,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,GACRA,EAAMZ,MAAMM,UAAWoB,EAAAA,EAAAA,SAAOiB,EAAAA,EAAAA,SAAQ,CAACD,GAAO9B,EAAMZ,MAAMM,SAAU,MAAO,gBAGtEoC,EAAK/D,IAIbmE,mBAAoB,SAACnE,GACpBK,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,GACRA,EAAMZ,MAAMM,SAAW7B,EAAWmC,EAAMZ,MAAMM,SAAU3B,QAM3DoE,cAAe,SAACL,GAMf,OALA1D,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,GACRA,EAAMZ,MAAMO,QAASmB,EAAAA,EAAAA,SAAOiB,EAAAA,EAAAA,SAAQ,CAACD,GAAO9B,EAAMZ,MAAMO,OAAQ,MAAO,gBAGlEmC,EAAK/D,IAGbqE,iBAAkB,SAACrE,GAClBK,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,GACRA,EAAMZ,MAAMO,OAAS9B,EAAWmC,EAAMZ,MAAMO,OAAQ5B,QAMvDsE,eAAgB,SAACP,GAShB,OARA1D,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,GACRA,EAAMZ,MAAMK,YAAaqB,EAAAA,EAAAA,SACxBiB,EAAAA,EAAAA,SAAQ,CAACD,GAAO9B,EAAMZ,MAAMK,WAAY,MACxC,gBAIIqC,EAAK/D,IAGbuE,kBAAmB,SAACvE,GACnBK,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,GACRA,EAAMZ,MAAMK,WAAa5B,EAAWmC,EAAMZ,MAAMK,WAAY1B,QAM/DwE,wBAAyB,SAACT,GAUzB,OATA1D,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,GACRA,EAAMZ,MAAMQ,uBAAwBmC,EAAAA,EAAAA,SACnC,CAACD,GACD9B,EAAMZ,MAAMQ,sBACZ,UAIIkC,EAAK/D,IAGbyE,2BAA4B,SAACzE,GAC5BK,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,GACRA,EAAMZ,MAAMQ,sBAAwB/B,EAAWmC,EAAMZ,MAAMQ,sBAAuB7B,QAMrF0E,0BAA2B,SAACX,GAU3B,OATA1D,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,GACRA,EAAMZ,MAAMS,yBAA0BkC,EAAAA,EAAAA,SACrC,CAACD,GACD9B,EAAMZ,MAAMS,wBACZ,UAIIiC,EAAK/D,IAGb2E,6BAA8B,SAAC3E,GAC9BK,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,GACRA,EAAMZ,MAAMS,wBAA0BhC,EAAWmC,EAAMZ,MAAMS,wBAAyB9B,QAIzF4E,mBAAoB,SAACnF,EAA2BO,GAC/CK,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,GACR,IAAMwB,GAAMC,EAAAA,EAAAA,WAAUzB,EAAMZ,MAAMC,YAAY,SAACuD,GAAD,OAASA,EAAI7E,KAAOA,KAC9DyD,GAAO,IACVxB,EAAMZ,MAAMC,WAAWmC,GAAKhE,MAA5B,OACIwC,EAAMZ,MAAMC,WAAWmC,GAAKhE,OAC5BA,SAMRqF,mBAAoB,SAACrF,EAA2BO,GAC/CK,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,GACR,IAAMwB,GAAMC,EAAAA,EAAAA,WAAUzB,EAAMZ,MAAMK,YAAY,SAACmD,GAAD,OAASA,EAAI7E,KAAOA,KAC9DyD,GAAO,IACVxB,EAAMZ,MAAMK,WAAW+B,GAAKhE,MAA5B,OACIwC,EAAMZ,MAAMK,WAAW+B,GAAKhE,OAC5BA,cCtSGsF,EAAS,SAACC,GAAD,OAAmB,kBAAsB7E,GAAY,SAAC8E,GAAD,OAAOA,EAAE3E,KAAK0E,QAC5EE,EAAU,kBAAsC/E,GAAY,SAAC8E,GAAD,OAAOA,EAAE3E,SACrE6E,EAAa,WACzB,IAAM7E,EAAO4E,IACb,OAAOE,EAAAA,EAAAA,UAAQ,kBAAMrC,EAAAA,EAAAA,QAAOzC,GAAM,SAACgD,GAAD,OAAOA,EAAEzC,cAAW,CAACP,KAK3C+E,EAAS,SAACL,GAAD,OAAmB,kBAAsB7E,EAAAA,WAAuBG,KAAK0E,KAK9EM,EAAgB,SAACN,GAAD,OAAmB,kBAC/C7E,EAAAA,WAAuBI,YAAYyE,KACvBO,EAAW,kBAAsBpF,EAAAA,WAAuBK,OACxDgF,EAAY,kBAAgCrF,EAAAA,WAAuBiB,QACnEqE,EAAY,kBAAgCtF,GAAY,SAAC8E,GAAD,OAAOA,EAAE7D,WC1BjEsE,EAAwB,WAAM,cACpC,QAAN,EAAAC,cAAA,mBAAQC,gBAAR,mBAAkBC,cAAlB,oCAA8BF,cAA9B,iBAA8B,EAAQC,gBAAtC,aAA8B,EAAkBE,OAAhD,mBCCYC,EAAoE,SAAC,GAI5E,IAHLC,EAGK,EAHLA,QACAC,EAEK,EAFLA,QACAC,EACK,EADLA,SAYA,OAVad,EAAAA,EAAAA,UAAQ,WACpB,OAAIY,EACIA,EAAQG,SAAS9G,iBAErB4G,IACKA,EAAQE,SAAS9G,iBAGxB,CAAC4G,EAASD,IAEC,gCAAGE,GAAe,MCdpBE,EAAU,kBAAe/G,gBAAkBL,EAAYG,OCM9DkH,EAAuB,SAAC1E,GAAsC,QAC7D2E,EAAW,QAAI,EAAJ,UAAI3E,EAAS4E,aAAb,aAAI,EAAgBC,qCAApB,QAAqD,GACtE,GAAoB,QAAhBF,EACH,OAAO,IAER,IAAMG,EAAeC,SAASJ,EAAa,IAC3C,OAAIK,OAAOC,MAAMH,GACT,IAEJH,EAAYH,SAAS,KACF,GAAfM,EAAoB,IAEN,IAAfA,G,+BCnBR,E,MAAwBI,EAAAA,GAAhBC,EAAR,EAAQA,GAAIC,EAAZ,EAAYA,QACCC,EAAY,uBAAH,OAA0BD,EAAQnG,KAAlC,YAA0CmG,EAAQjG,QAAlD,aAA8DgG,EAAGlG,KAAjE,K,qBC8CTrD,EAAe,oBCvCf0J,GAAc7G,EAAAA,EAAAA,IAAsB,SAACC,GAAD,YAAU,CAC1D6G,SAAO,eACL3J,EAAe,IAAI4J,EAAAA,GACnB,IAAIC,EAAAA,EAAc,CACjBC,IAAK,oEACLC,QAAS,IACTC,eAAgB,SALZ,qBAQK,IAAIJ,EAAAA,GACd,IAAIC,EAAAA,EAAc,CACjBC,IAAK,oEACLC,QAAS,IACTC,eAAgB,QAZZ,GAgBPC,WAAY,SAAClH,GACZD,GAAI,SAAC4E,GAAD,MAAQ,CACXiC,SAAShF,EAAAA,EAAAA,QACR5B,GACA,SAAC6B,EAAKC,GAWL,OAVIA,EAAIC,YAEP4C,EAAEiC,QAAQ9E,EAAIxB,MAAQ,IAAIuG,EAAAA,GACzB,IAAIC,EAAAA,EAAc,CACjBC,IAAKjF,EAAIC,UACTiF,QAASlF,EAAItB,QACbyG,eAAgB,QAIZpF,IAER8C,EAAEiC,kB,glBC1CC,IAAMO,EACZ,SAACzC,GAAD,OACA,SAAC0C,EAAcC,GAA6B,MAErCC,EAAO,UADIX,EAAYY,WACJX,QAAQlC,UAApB,aAAG,EAAyB8C,iBAAiBJ,EAA1C,KAAsDC,IAItE,OAHIC,GACHG,QAAQC,KAAK,kBAAmBJ,GAE1BA,I,ykBCKT,IAAMK,GAAa,SAClB9F,EACA+F,GAEA,GAAIA,EACH,MAAO,CACNC,GAAI,OACJC,SAAUF,GAGZ,GAAI/F,EAAK,CACR,GAAIA,EAAIvB,KACP,MAAO,CACNuH,GAAI,OACJC,SAAUjG,EAAIvB,MAGhB,GAAIuB,EAAInC,GACP,MAAO,CACNmI,GAAI,KACJC,SAAUjG,EAAInC,MAOZqI,GAAgB,SAAClG,EAAe+F,GACrC,GAAIA,EACH,mCAA6BA,EAA7B,cAED,GAAI/F,EAAK,CACR,GAAIA,EAAIvB,KACP,mCAA6BuB,EAAIvB,KAAjC,cAED,GAAIuB,EAAInC,GACP,iCAA2BmC,EAAInC,GAA/B,cAGF,MAAO,IAUFsI,GAAiB,SACtBC,EACAC,EACAnI,EACAoI,GACO,QAIe,MAAtB,GADAC,aAAaD,IAAME,aACfH,MAAAA,GAAJ,UAAIA,EAAKI,YAAT,OAAI,EAAWC,MASd,MAPCtG,EAAAA,EAAAA,MACC,CAAC,wBAAyB,yBAC1B,SAACuG,GAAD,eAAUA,KAAI,UAAyBN,EAAKI,KAAKC,MAAME,cAAzC,iBAAK,EAA4CC,aAAjD,aAAK,EAAmDC,UAGvEvD,IAEK,IAAIsD,MAAJ,UACkBR,MAAAA,GADlB,UACkBA,EAAMI,KAAKC,MAAME,cADnC,iBACF,EAA6CC,aAD3C,aACF,EAAoDD,OADlD,uBAEgBP,EAAKI,KAAKC,MAAMK,cAFhC,aAEJ,EAA4CC,OAI/C,GAAIX,MAAAA,GAAJ,UAAIA,EAAKY,cAAT,OAAI,EAAa1G,QAAS,iCACnB2G,EAAS,oBACdb,EAAIY,OAAO1G,eADG,iBACd,EAAoB4G,eADN,iBACd,EAA6BC,WADf,iBACd,EAAmC,UADrB,aACd,EAAuCtE,SADzB,kBAC8BuD,EAAIY,OAAO1G,eADzC,iBAC8B,EAAoB8G,cADlD,iBAC8B,EAA6B,UAD3D,iBAC8B,EAAiCD,WAD/D,iBAC8B,EAAuC,UADrE,aAC8B,EAA2CtE,EAClFwE,EAAI,UAAGjB,EAAIY,OAAO1G,eAAd,iBAAG,EAAoB4G,eAAvB,iBAAG,EAA6BG,YAAhC,aAAG,EAAmCC,IAChDrJ,EAAI,CACHsI,YAAagB,YAAW,kBCzFP,SAAClB,GACpBA,IAAMmB,UAAUrM,EAAhBkL,CACC,OAC0B,MAA1BA,IAAMoB,gBACH,CAAEC,MAAO,iBAAkBC,kBAAmB,EAAGC,KAAM,GACvD,CAAEF,MAAO,mBDoFmBG,CAAKxB,KAAMA,IAAMoB,iBAC/CJ,KAAMA,MAAAA,EAAAA,EAAQhB,IAAMgB,KACpBJ,UAAWA,MAAAA,EAAAA,EAAaZ,IAAMY,UAC9B3G,QAAS,SACL+F,IAAM/F,SACN8F,MAAAA,GAFG,UAEHA,EAAKY,cAFF,aAEH,EAAa1G,WAInB,OAAgC8F,EAAKI,KAA9B,UAAsCL,EAAtC,cE/FK2B,IAAkB9J,EAAAA,EAAAA,IAAqB,SAACC,EAAKoI,GAAN,MAAe,CAClE0B,aAASC,EACTtJ,QAAS,GACTa,SAAU,CACT4E,MAAO,GACP8D,MAAO,GACPC,MAAO,IAER5H,QAAS,GACT6H,WAAY,SAAC7H,GAAD,OAAmCrC,EAAI,CAAEqC,QAAAA,KACrD8H,KAAM,kBPMgB,SAACnK,EAA6BoI,GAA9B,OACtBA,IACEmB,UAAUrM,EADZkL,CAC8E,UAAW,CACvFqB,MAAO,oBACPW,OAAQ,6EAERC,MAAK,SAAClC,GACN,GAAIA,EAAK,CACR,MQrB4B,SAAC,GAc5B,IAbJxI,EAaI,EAbJA,GACAY,EAYI,EAZJA,KACAyJ,EAWI,EAXJA,MACA9D,EAUI,EAVJA,MACAoE,EASI,EATJA,WACAC,EAQI,EARJA,WACAN,EAOI,EAPJA,MACAxJ,EAMI,EANJA,QACA2J,EAKI,EALJA,OAMM9I,EAvBmB,SACzBA,GADyB,YAEH,CACtB0I,MAAO1I,EAAS0I,MAAMQ,OACtBtE,MAAO5E,EAAS4E,MAAMsE,OACtBP,MAAK,UAAE3I,EAAS2I,MAAMQ,YAAjB,QAAyB,IAkBbC,CAAkB,CAAEV,MAAAA,EAAO9D,MAAAA,EAAO+D,MAAAA,IACnD,MAAO,CACNH,QAAS,CACRnK,GAAAA,EACAY,KAAAA,EACAoK,YAAaX,EAAMQ,OAAOG,YAC1BL,WAAAA,EACAC,WAAAA,EACAH,OAAAA,GAED9I,SAAAA,EACAb,QAAAA,GRLyCmK,CAAiBzC,GAAhD2B,EAAR,EAAQA,QAASxI,EAAjB,EAAiBA,SAAUb,EAA3B,EAA2BA,QAC3BT,EAAI,CACH8J,QAAAA,EACAxI,SAAAA,EACAkI,gBAAiBxD,EAAqB1E,GACtCuJ,cAAepK,QAIjB4J,MAAK,kBAAMS,MAAM,mCACjBT,MAAK,SAACU,GAAD,OAAYA,EAAEC,UACnBX,MAAK,YAA2D,IAAxDY,EAAwD,EAAxDA,WACRnL,EAAAA,WAAuB4B,QAAQC,SAC9B/B,EAAAA,EAAAA,QAAOqL,GAAY,YAAoB,IAAjBvK,EAAiB,EAAjBA,KAAMH,EAAW,EAAXA,KAC3B,MAAa,UAATG,IACAqF,IAAkBrF,IAAS/B,EAAYG,MDzCLE,gBAAkBL,EAAYC,SC0CzC8B,IAAS/B,EAAYC,SD3CVI,gBAAkBL,EAAYE,YC4CzC0B,IAAS+E,OAAOC,SAAS2F,SAASC,MAAM,KAAK,WAxB5E,OA6BQ,SAACC,GACP1D,QAAQ2D,IAAI,yCACZ3D,QAAQL,MAAM+D,GACd/F,OOvCyBiG,CAAQtL,EAAKoI,IACxCmB,UAAW,SAACxH,GAAD,OFuFX,SAACA,EAAa/B,EAA6BoI,GAA3C,OACA,SAAoBF,EAAaqD,EAAe1D,GAAhD,2BACCiD,MAAM,iBAAD,OAAkB5C,EAAlB,WAAgC,CACpCsD,OAAQ,OACRC,QAAS,CACR,eAAgB,oBAEjBF,KAAMG,KAAKC,UAAU,CACpBpD,MAAM,oBACDL,EADD,WACgBqD,GAEpBxC,OAAQ,CACP1G,QAAS,CACRoH,MAAO,aACPN,OAAQ,UAAAf,IAAM/F,eAAN,mBAAe8G,cAAf,mBAAwB,UAAxB,SAA4ByC,IACjC,CACAA,IAAG,UAAExD,IAAM/F,eAAR,iBAAE,EAAe8G,cAAjB,iBAAE,EAAwB,UAA1B,aAAE,EAA4ByC,UAEjC7B,EACH8B,QAAO,oBAAEzD,IAAM/F,eAAR,aAAE,EAAewJ,eAAjB,QAA4B,GACnC/B,QAASlC,GAAWQ,IAAM0B,QAAoBjC,GAC9ClB,UAAW,CACVpG,KAAMoG,EACNlG,QAAS2H,IAAMyC,qBAMlBR,MAAK,SAAClC,GAAD,OAASA,MAAAA,OAAT,EAASA,EAAK6C,UACnBX,MAAK,SAAClC,GAAD,OAAiCF,GAAeC,EAAKC,EAAKnI,EAAKoI,MA5BtE,OA6BQ,SAAC0D,GAEP,MADA1E,EAAOrF,EAAPqF,CAAY0E,GACNA,MExH8BC,CAAahK,EAAK/B,EAAKoI,IAC9D4D,aAAc,SAACjK,GAAD,OF2Hd,SAACA,EAAa/B,EAA6BoI,GAA3C,OACA,SAAoBF,EAAaqD,EAAe1D,GAAhD,OACCiD,MAAM,iBAAD,OAAkB5C,EAAlB,WAAgC,CACpCsD,OAAQ,OACRC,QAAS,CACR,eAAgB,wBAEjBF,KAAM,qLAAF,OAEwD5E,EAFxD,sBAGHyB,IAAMyC,cAHH,eA5FgBxI,EAgGA+F,IAAM/F,QA/FxBA,MAAAA,GAAJ,UAAIA,EAASwJ,eAAb,OAAI,EAAkBlM,GACrB,uBAAuB0C,MAAAA,GAAvB,UAAuBA,EAASwJ,eAAhC,aAAuB,EAAkBlM,GAAzC,OAEM,KAwFD,OAIiCqI,GACpCI,IAAM0B,QACNjC,GANG,yEAQS0D,EART,wCAWHlB,MAAK,SAAClC,GAAD,OAASA,MAAAA,OAAT,EAASA,EAAK6C,UACnBX,MAAK,SAAClC,GAAD,OAAiCF,GAAeC,EAAKC,EAAKnI,EAAKoI,MAjBtE,OAkBQ,SAAC0D,GAEP,MADA1E,EAAOrF,EAAPqF,CAAY0E,GACNA,KA3GY,IAACzJ,EAA0B,EACtB,GEvCgB4J,CAAgBlK,EAAK/B,EAAKoI,IACpEY,UAAW,EACXkD,qBAAsBC,KAAKC,MAC3B5C,gBAAiB,QETL6C,GAAiB,kBAAexC,IAAgB,SAACjF,GAAD,OAAOA,EAAEkF,YACzDwC,GAAkB,WAC9B,IAAMC,EAAO1C,IAAgB,SAACjF,GAAD,OAAOA,EAAEkF,WACtC,OAAO/E,EAAAA,EAAAA,UAAQ,kBAAOwH,EAAO,CAACA,GAAmB,KAAK,CAACA,KAG3CC,GAAgB,kBAC5B3C,IAAgB,SAACjF,GAAD,mCAAOA,EAAEkF,eAAT,aAAO,EAAWM,cAAlB,QAA4B,CAAEqC,QAAS,QAE3CC,GAAe,SAACC,GAC5B,IAAQF,EAAYD,KAAZC,QACR,OAAO1H,EAAAA,EAAAA,UACN,+CAAM7C,EAAAA,EAAAA,MAAKuK,EAAS,CAAC,QAASE,WAA9B,aAAM,EAAiCC,cAAvC,QAAkD,KAClD,CAACD,EAAOF,KAGGI,GAAkB,kBAAuBhD,IAAgB,SAACjF,GAAD,OAAOA,EAAEtD,aAGlEwL,GAAU,kBAAkBjD,IAAgB,SAACjF,GAAD,OAAOA,EAAEwE,SAErD2D,GAAY,WAExB,OADelD,IAAgB,SAACjF,GAAD,uBAAOA,EAAEvC,QAAQ8G,cAAjB,QAA2B,OAG9C6D,GAAa,kBAAoBnD,IAAgB,SAACjF,GAAD,uBAAOA,EAAEvC,QAAQ4G,eAAjB,QAA4B,OAE7EgE,GAAiB,kBAAepD,GAAAA,WAA2BC,SAC3DoD,GAAkB,iBAAsB,CACpDrD,GAAAA,WAA2BC,UAEfqD,GAAkB,kBAAuBtD,GAAAA,WAA2BvI,UAGpE8L,GAAU,kBAAkBvD,GAAAA,WAA2BT,MAEvDiE,GAAgB,8CAC5BxD,GAAAA,WAA2BC,eADC,aAC5B,EAAoCM,cADR,QACkB,CAAEqC,QAAS,KAE7Ca,GAAe,SAACX,GAAD,oCAC3BzK,EAAAA,EAAAA,MAAKmL,KAAgBZ,QAAS,CAAC,QAASE,WADb,aAC3B,EAAiDC,cADtB,QACiC,IC/ChDW,I,qCAAmBxN,EAAAA,EAAAA,IAA2B,SAACC,GAAD,MAAU,CACpEwN,0BAA2B,GAC3BC,UAAW,GACXC,IAAK,YAAoD,IAAjDF,EAAiD,EAAjDA,0BAA2BC,EAAsB,EAAtBA,UAClCzN,GAAI,SAAC4E,GAAD,MAAQ,CACX4I,2BAA2B3L,EAAAA,EAAAA,QAC1B2L,MAAAA,EAAAA,EAA6B,IAC7B,SAAC1L,EAAK6L,EAAGC,GAGR,OADA9L,EAAI8L,GAAOD,EACJ7L,IAER8C,EAAE4I,2BAEHC,WAAW5L,EAAAA,EAAAA,QACV4L,MAAAA,EAAAA,EAAa,IACb,SAAC3L,EAAK6L,EAAGC,GAGR,OADA9L,EAAI8L,GAAOD,EACJ7L,IAER8C,EAAE6I,qBAMOI,GAAY,SAACC,GACzB,IAAMC,EAAeR,IAAiB,qBAAGG,QACzCM,EAAAA,EAAAA,YAAU,WACTD,EAAaD,KACX,CAACA,EAASC,K,sVChCdE,KAkIA,SAlFoC,SAAC,GAO/B,IANLC,EAMK,EANLA,eAMK,IALLC,OAAAA,OAKK,SAJLC,EAIK,EAJLA,MACAC,EAGK,EAHLA,cACAC,EAEK,EAFLA,aACGC,GACE,cACL,GAA8BC,EAAAA,EAAAA,UAASF,GAAvC,eAAOR,EAAP,KAAgBW,EAAhB,KAEMC,GAAkBC,EAAAA,EAAAA,cACvB,SAACC,EAAYC,GACZJ,EAAWG,GACXV,MAAAA,GAAAA,EAAiB,CAChBW,EAAOC,WAAW,CAAEC,OAAQ,SAC5BF,EAAOC,WAAW,CAAEC,OAAQ,aAG9B,CAACN,EAAYP,IAKd,OAFAF,EAAAA,EAAAA,YAAU,kBAAMS,EAAWL,KAAQ,CAACA,IAGnC,gBAAC,EAAAY,UAAD,CACCC,OAAO,OACPC,eAAe,WACfC,cAAc,cACdC,MAAO,CAAEC,UAAW,WAEpB,gBAAC,MAAD,SACCjB,MAAON,EACP3D,KAAM,CACLmF,SAAU,GAAF,OAAKjB,EAAL,2BACRkB,YAAa,GAAF,OAAKlB,EAAL,8CACXmB,WAAY,IACZC,SAAS,EACTC,WAAW,EACXC,UAAU,EACVC,QAAQ,EACRzB,OAAAA,EACA0B,QAAS,CACR,UACA,WACA,QACA,OACA,QACA,UACA,QACA,UACA,SACA,gBACA,OACA,aACA,iBACA,QACA,QACA,QACA,OACA,OACA,YACA,iBACA,cAEDC,SAAS3B,GAGN,oNACH4B,yBAA0B5B,EAAS,kBAAoB,GACvD6B,4BAA6B7B,EAC1B,yEACA,YACH8B,YAAsB,GACtBC,aAAc,QAEfhC,eAAgBQ,GACZH,M,ykBC1HD,IAAM4B,IAAuBpQ,EAAAA,EAAAA,IAA0B,SAACC,GAAD,MAAU,CACvEoQ,QAAS,GACTnF,WAAY,CACXoF,SAAU,CACTxQ,KAAMyQ,GACNvO,IAAK7E,IAGPqT,MAAO,GACP9C,UAAW,GACX+C,gBAAiB,sCACb9Q,EADa,yBACbA,EADa,uBAGhBM,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,IACR6O,EAAAA,EAAAA,SAAQ/Q,GAAO,YAA0B,IAAvBC,EAAuB,EAAvBA,GAAI+Q,EAAmB,EAAnBA,OAAQhQ,EAAW,EAAXA,KACxBkB,EAAMwO,QAAQ1P,KAAOkB,EAAMwO,QAAQ1P,GAAQ,IAChDkB,EAAMwO,QAAQ1P,GAAMf,GAAM+Q,UAI9BC,mBACC,SAAC5O,GAAD,OACA,sCAAIrC,EAAJ,yBAAIA,EAAJ,uBACCM,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,IACR6O,EAAAA,EAAAA,SAAQ/Q,GAAO,YAAuB,IAApBC,EAAoB,EAApBA,GAAIkD,EAAgB,EAAhBA,UACrBjB,EAAMqJ,WAAWtL,GAAM,CAAEoC,IAAAA,EAAKlC,KAAMgD,YAIzC+N,cAAe,sCAAIlR,EAAJ,yBAAIA,EAAJ,uBACdM,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,IACR6O,EAAAA,EAAAA,SAAQ/Q,GAAO,YAAkB,IAAfC,EAAe,EAAfA,GAAIkR,EAAW,EAAXA,KACrBjP,EAAM2O,MAAM5Q,GAAMkR,UAItBC,kBAAmB,sCAAIpR,EAAJ,yBAAIA,EAAJ,uBAClBM,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,IACR6O,EAAAA,EAAAA,SAAQ/Q,GAAO,YAAgB,IAAbC,EAAa,EAAbA,GAAIoR,EAAS,EAATA,GACrBnP,EAAM6L,UAAU9N,GAAMoR,UAI1BC,cAAe,sCAAIC,EAAJ,yBAAIA,EAAJ,uBACdjR,GAAI,SAAC4E,GAAD,UAAC,MACDA,GADA,IAEHwL,SAASvO,EAAAA,EAAAA,QACR+C,EAAEwL,SACF,SAACtO,EAAKsO,EAAS1P,GAAf,UAAC,MAA6BoB,GAA9B,cAAoCpB,GAAO8C,EAAAA,EAAAA,MAAK4M,EAASa,OACzD,UAGHC,iBAAkB,sCAAID,EAAJ,yBAAIA,EAAJ,uBACjBjR,GAAI,SAAC4E,GAAD,UAAC,MACDA,GADA,IAEHwL,SAAS5M,EAAAA,EAAAA,MAAKoB,EAAEqG,WAAYgG,SAE9BE,YAAa,sCAAIF,EAAJ,yBAAIA,EAAJ,uBACZjR,GAAI,SAAC4E,GAAD,UAAC,MACDA,GADA,IAEHwL,SAAS5M,EAAAA,EAAAA,MAAKoB,EAAE2L,MAAOU,SAEzBG,gBAAiB,sCAAIH,EAAJ,yBAAIA,EAAJ,uBAChBjR,GAAI,SAAC4E,GAAD,UAAC,MACDA,GADA,IAEHwL,SAAS5M,EAAAA,EAAAA,MAAKoB,EAAE6I,UAAWwD,a,uBC1EjBI,IAAsBC,EAAAA,EAAAA,eAAmB,ICQtD,SAP4B,SAAC,GAAiB,IAAfzL,EAAe,EAAfA,SACxB0L,GAAU5C,EAAAA,EAAAA,cAAY,SAACtH,GAC5BK,QAAQL,MAAMA,KAEZ,IACH,OAAO,gBAAC,EAAAmK,QAAD,CAASD,QAASA,GAAU1L,ICmBpC,GAnBgD,SAAC,GAAsB,IAApB4L,EAAoB,EAApBA,IAAK5L,EAAe,EAAfA,SACjD6L,GFJkBC,EAAAA,EAAAA,YAAWN,IAA3BK,YEKFE,GFAmBD,EAAAA,EAAAA,YAAWN,IAA5BO,aECF7P,GAAMgD,EAAAA,EAAAA,UAAQ,kCAAMC,EAAOyM,EAAPzM,UAAN,QAAuBE,MAAY,CAACuM,IAClDI,GAAQ9M,EAAAA,EAAAA,UAAQ,kBAAM6M,EAAaE,eAAe/P,KAAM,CAACA,EAAK6P,IAC9DG,GAAOhN,EAAAA,EAAAA,UAAQ,kBAAM2M,EAAYM,WAAWjQ,KAAM,CAAC2P,EAAa3P,IACtE,OACC,gBAAC,GAAAkQ,SAAD,CAAUJ,MAAOA,GAChB,gBAACK,GAAA,EAAD,CAAiBH,KAAMA,GACtB,gBAAC,EAAAI,aAAD,KACC,gBAAC,EAAAC,gBAAD,KACC,gBAAC,GAAD,KAAkBvM,QCRjB,IAAMwM,GAAoB,SAAC1S,GAAoC,MAC/D2S,EAAW,UAAGnC,GAAqB3I,WAAW+I,aAAnC,aAAG,EAAwC5Q,GAE5D,OAAO2S,EAAc,CAACA,GAAa,GAAQ,CAAC,cAAgB,IAGhDC,GAAwB,SAAC5S,GAAoC,MACnE2S,EAAW,UAAGnC,GAAqB3I,WAAWiG,iBAAnC,aAAG,EAA4C9N,GAEhE,OAAO2S,EAAc,CAACA,GAAa,GAAQ,CAAC,cAAgB,IAGhDE,GAAyB,SAAC7S,GAAsD,MACtF8S,EAAW,UAAGtC,GAAqB3I,WAAWyD,kBAAnC,aAAG,EAA6CtL,GACjE,OAAI8S,EAQI,CAPO,SAACxI,GAAD,OACb,gBAAC,GAAD,CAAoBwH,IAAKgB,EAAY1Q,KAGpC,gBAAC0Q,EAAY5S,KAASoK,MAGb,GAEL,CAAC,kBAAY,OAAM,IAGdyI,GAAa,SAAK9F,EAAWlM,GACzC,IAAMiS,EAAYxC,GAAqB3I,WAAW4I,QAAQ1P,GAC1D,OAAOkS,EAAAA,EAAAA,UACNC,EAAAA,EAAAA,KAAIF,GAAW,SAAChF,GACf,IAEC,OADeA,EAAEf,GAEhB,MAAOd,GAGR,YADApE,QAAQL,MAAMyE,SAOLgH,GAAoB,SAACpS,GACjC,IAAMiS,EAAYxC,GAAqB3I,WAAW4I,QAAQ1P,GAC1D,OAAO,SAAKkM,GAAL,OACNgG,EAAAA,EAAAA,UACCC,EAAAA,EAAAA,KAAIF,GAAW,SAAChF,GACf,IAEC,OADeA,EAAEf,GAEhB,MAAOd,GAGR,YADApE,QAAQL,MAAMyE,UAONiH,GAAY,SACxBrS,EACAf,EACAiN,GACmC,MAC7BoG,EAAO,UAAG7C,GAAqB3I,WAAW4I,QAAQ1P,UAA3C,aAAG,EAAgDf,GAC1D+Q,EAASsC,MAAAA,OAAH,EAAGA,EAAUpG,GACzB,MAAO,CAAC8D,IAAUA,IAGNuC,GAAmB,SAC/BvS,EACAf,GAC6C,MACvCqT,EAAO,UAAG7C,GAAqB3I,WAAW4I,QAAQ1P,UAA3C,aAAG,EAAgDf,GAChE,MAAO,CAACqT,IAAWA,IClFpB,UAFqB1B,EAAAA,EAAAA,eAAc,CAAE4B,UAAU,ICMxC,SAASC,KAEf,OADqBxB,EAAAA,EAAAA,YAAWyB,IAAxBF,SCEF,IAAMG,GAAoB,SAAC1T,GACjC,IAAM2S,EAAcnC,IAAqB,SAACvL,GAAD,uBAAOA,EAAE2L,aAAT,aAAO,EAAU5Q,MAE1D,OAAO2S,EAAc,CAACA,GAAa,GAAQ,CAAC,cAAgB,IAGhDgB,GAAwB,SAAC3T,GACrC,IAAM2S,EAAcnC,IAAqB,SAACvL,GAAD,uBAAOA,EAAE6I,iBAAT,aAAO,EAAc9N,MAE9D,OAAO2S,EAAc,CAACA,GAAa,GAAQ,CAAC,cAAgB,IAGhDiB,GAAyB,SAAC5T,GACtC,IAAM8S,EAActC,IAAqB,SAACvL,GAAD,uBAAOA,EAAEqG,kBAAT,aAAO,EAAetL,MAC/D,OAAOoF,EAAAA,EAAAA,UAAQ,WACd,OAAI0N,EAQI,CAPO,SAACxI,GAAD,OACb,gBAAC,GAAD,CAAoBwH,IAAKgB,EAAY1Q,KAGpC,gBAAC0Q,EAAY5S,KAASoK,MAGb,GAEL,CAAC,kBAAY,OAAM,KACxB,CAACwI,KAGQe,GAAa,SAAK5G,EAAWlM,GACzC,IAAMiS,EAAYxC,IAAqB,SAACvL,GAAD,OAAOA,EAAEwL,QAAQ1P,MAiBxD,OAhBgBqE,EAAAA,EAAAA,UACf,mCACC6N,EAAAA,EAAAA,UACCC,EAAAA,EAAAA,KAAIF,GAAW,SAAChF,GACf,IAEC,OADeA,EAAEf,GAEhB,MAAOd,GAGR,YADApE,QAAQL,MAAMyE,eARlB,QAYM,KACN,CAAC6G,EAAW/F,KAKD6G,GAAoB,SAAK/S,GACrC,IAAMiS,EAAYxC,IAAqB,SAACvL,GAAD,OAAOA,EAAEwL,QAAQ1P,MAiBxD,OAhBwBiO,EAAAA,EAAAA,cACvB,SAAC/B,GAAD,OACCgG,EAAAA,EAAAA,UACCC,EAAAA,EAAAA,KAAIF,GAAW,SAAChF,GACf,IAEC,OADeA,EAAEf,GAEhB,MAAOd,GAGR,YADApE,QAAQL,MAAMyE,UAKlB,CAAC6G,KAKUe,GAAY,SACxBhT,EACAf,EACAiN,GAEA,IAAMoG,EAAU7C,IAAqB,SAACvL,GAAD,OAAOA,EAAEwL,QAAQ1P,GAAMf,MACtD+Q,GAAS3L,EAAAA,EAAAA,UAAQ,WACtB,IACC,OAAOiO,MAAAA,OAAP,EAAOA,EAAUpG,GAChB,MAAOd,GACR,UAEC,CAACkH,EAASpG,IACb,MAAO,CAAC8D,IAAUA,IAGNiD,GAAmB,SAC/BjT,EACAf,GAEA,IAAMqT,EAAU7C,IAAqB,SAACvL,GAAD,OAAOA,EAAEwL,QAAQ1P,GAAMf,MAC5D,MAAO,CAACqT,IAAWA,I,uBC/FPY,GAAkB,WAC9B,IAAMrO,GAAWsO,EAAAA,GAAAA,MACX9S,EAASqE,IACf,OAAOL,EAAAA,EAAAA,UACN,kBAAM7C,EAAAA,EAAAA,MAAKnB,GAAQ,SAACgK,GAAD,OAAO+I,EAAAA,EAAAA,aAAWC,EAAAA,EAAAA,MAAKxO,EAAS2F,SAAU,KAAMH,EAAEnI,YACrE,CAAC2C,EAAS2F,SAAUnK,KAGTiT,GAAkB,WAA4B,QACpDC,EAAO,WAAG,EAAA1G,GAAiB/F,WAAWiG,WAAUyG,kBAAzC,aAAG,UACVnT,EAASoE,IACf,OAAOjD,EAAAA,EAAAA,MAAKnB,GAAQ,SAACgK,GAAD,OAAO+I,EAAAA,EAAAA,aAAWC,EAAAA,EAAAA,MAAKE,EAAQ1O,SAAS2F,SAAU,KAAMH,EAAEnI,WAGlEuR,GAAc,SAACC,GACK,MAAhC,GAAsB,iBAAXA,EACV,OAAOC,EAAAA,EAAAA,SAAQ,IAAD,iBAAKL,YAAL,aAAK,EAAmBpR,MAAxB,YAAiCwR,GAAU,KAAM,KAEhE,IAAME,EAAeF,EAAOxR,OACzBV,EAAAA,EAAAA,MAAKiD,KAAa,SAAC4F,GAAD,OAAOA,EAAEpL,KAAOyU,EAAOxR,OAASmI,EAAEnI,QAAUwR,EAAOxR,SACrEoR,KACH,MAA8B,iBAAhBI,EAAOG,MAClBF,EAAAA,EAAAA,SAAQ,IAAD,OAAKC,MAAAA,OAAL,EAAKA,EAAc1R,MAAnB,YAA4BwR,EAAOG,MAAQ,KAAM,KACxD,CACAhT,OAAQ6S,EAAOG,KAAKhT,OACpBiT,KAAMJ,EAAOG,KAAKC,KAClBtJ,UAAUmJ,EAAAA,EAAAA,SAAQ,IAAD,OAAKC,MAAAA,OAAL,EAAKA,EAAc1R,MAAnB,YAA4BwR,EAAOG,KAAKrJ,UAAY,KAAM,OAIlEuJ,GAAyB,WACrC,IAAMR,GAAUS,EAAAA,GAAAA,MAKhB,OAJW/F,EAAAA,EAAAA,cACV,SAACyF,GAAD,OAAiCH,EAAQU,KAAKR,GAAYC,MAC1D,CAACH,KAKUW,GAA4B,WACxC,IAAMX,GAAUS,EAAAA,GAAAA,MAKhB,OAJW/F,EAAAA,EAAAA,cACV,SAACyF,GAAD,OAAiCH,EAAQI,QAAQF,GAAYC,MAC7D,CAACH,KAKI,SAASY,KAEf,OADgBH,EAAAA,GAAAA,MACDI,OAGT,IAAMC,GAAc,SAACX,GAAgC,SAC9C,WAAG,EAAA7G,GAAiB/F,WAAWiG,WAAUyG,kBAAzC,aAAG,WACRS,KAAKR,GAAYC,KAGbY,GAAiB,SAACZ,GAAgC,SACjD,WAAG,EAAA7G,GAAiB/F,WAAWiG,WAAUyG,kBAAzC,aAAG,WACRG,QAAQF,GAAYC,KAGhBa,GAAgB,qCAC5B,EAAA1H,GAAiB/F,WAAWiG,WAAUyG,kBADV,aAC5B,UAAqDY,UCtEhDI,IAAoB5D,EAAAA,EAAAA,eAAc,CACvC6D,OAAQ,GACRC,aAAc,EACdC,WAAW,EACXC,WAAW,IAENC,IAAqBjE,EAAAA,EAAAA,eAAc,CACxCkE,SAAU,SAACC,EAAKC,EAAOrT,KACvBsT,YAAa,SAAC/H,KACdgI,mBAAoB,aACpBC,gBAAiB,aACjBC,YAAa,SAAClI,EAAK6H,EAAKC,KACxBK,gBAAiB,SAACnI,KAClBoI,mBAAoB,SAACP,EAAKC,KAC1BO,gBAAiB,aACjBC,gBAAiB,eCbLC,GACZ,SAACxR,GAAD,OAAmB,WAClB,IAAQ6Q,GAAa7D,EAAAA,EAAAA,YAAW4D,IAAxBC,SAOR,OANiB7G,EAAAA,EAAAA,cAChB,SAAC4F,EAAclS,GAAyC,MACvDmT,EAASjB,EAAMlS,EAAP,UAAiBA,MAAAA,OAAjB,EAAiBA,EAA8BN,WAA/C,QAAsD4C,KAE/D,CAAC6Q,MAKG,SAASY,KAEf,OAD+BzE,EAAAA,EAAAA,YAAW4D,IAAlCS,mBAIF,SAASK,KAEf,OAD+B1E,EAAAA,EAAAA,YAAW4D,IAAlCK,mBAIF,SAASU,KACf,IACa,IADPjU,GAAesP,EAAAA,EAAAA,YAAWuD,IAChC,GAAI7S,EACH,iBAAOA,EAAQ8S,cAAf,iBAAO,EAAiB9S,EAAQ+S,qBAAhC,aAAO,EAAwC/S,Q,ykBCgC1C,IC1DMkU,GAAc,kBAC1B,gBAAC,EAAAvH,UAAD,CAAWwH,MAAM,OAAOvH,OAAO,OAAOE,cAAc,SAASD,eAAe,UAC3E,gBAAC,EAAAuH,OAAD,CAAQ/V,KAAK,QAAQsC,MAAM,SAASxD,MAAM,UAAUkX,SAAO,M,6BCEhDC,GAA4B,SAAC,GAA2B,IAAzBC,EAAyB,EAAzBA,GAAIhU,EAAqB,EAArBA,MAAU2L,GAAW,cAC9DsI,GAAM9R,EAAAA,EAAAA,UAAQ,kBAAMoP,GAAY,CAAEI,KAAMqC,EAAIhU,MAAAA,MAAU,CAACA,EAAOgU,IACpE,OAAO,gBAAC,SAAD,SAAQxH,MAAO,CAAE0H,eAAgB,QAAUF,GAAIC,GAAStI,K,8lBCJzD,IAAMwI,GAAe,SAACC,GAAD,UAkGA,EAlGarS,EAAb,uDAA6BzH,EAA7B,OAC3B2M,GAAAA,WAEEmC,aAAa9O,EAFf2M,CAGE,QAHF,0DAKGmN,EAAK/M,MAAL,8DACyD4I,EAAAA,EAAAA,KACtDmE,EAAK/M,OACL,SAACQ,EAAMmD,GAAP,kCACgBA,EADhB,+BACgCnD,EAAK1I,WADrC,QAC4C4C,EAD5C,aACsD8F,EAAK2D,MAD3D,cAHH,8BAMG,IAXN,OAaG4I,EAAK9Q,MAAL,yDACoD2M,EAAAA,EAAAA,KACjDmE,EAAK9Q,OACL,SAAC+Q,EAAMrJ,GAAP,4BAA8BA,EAA9B,aAAsCqJ,EAAtC,cACEC,KAAK,IAJV,yBAKG,IAlBN,OAoBG,UAAAF,EAAKG,gBAAL,SAAeC,YACZvE,EAAAA,EAAAA,KACAmE,EAAKG,SAASC,YACd,SAACvX,GAAD,6FAEEA,EAAKF,GAFP,cAGMkT,EAAAA,EAAAA,KAAIhT,EAAKqG,OAAO,SAACkI,EAAOR,GAAR,yBAA4BA,EAA5B,aAAoCQ,EAApC,WAAiD8I,KACrE,IAJF,wFAMEA,KAAK,IACP,IA9BN,OAgCG,UAAAF,EAAKG,gBAAL,SAAeE,YACZxE,EAAAA,EAAAA,KACAmE,EAAKG,SAASE,YACd,SAACxX,GAAD,6FACiFA,EADjF,kCAEEqX,KAAK,IACP,IAtCN,OAwCG,UAAAF,EAAKG,gBAAL,SAAeG,YACZzE,EAAAA,EAAAA,KACAmE,EAAKG,SAASG,YACd,SAACzX,GAAD,4EACgEA,EAAKqG,MAAMqR,UAD3E,6BACyG1X,EAAKqG,MAAMsR,uBADpH,8CACgL3X,EAAKqG,MAAMsR,uBAD3L,+CACwP3X,EAAKqG,MAAMuR,sBADnQ,+CAC+T5X,EAAKqG,MAAMwR,sBAD1U,gGACub7X,EAAKqG,MAAMyR,yBADlc,kDACogB9X,EAAKqG,MAAM0R,yBAD/gB,kDACilB/X,EAAKqG,MAAM2R,yBAD5lB,sDACkqBhY,EAAKqG,MAAM4R,6BAD7qB,2DAC4vBjY,EAAKqG,MAAM6R,kCADvwB,qDACq1BlY,EAAKqG,MAAM8R,4BADh2B,wDAC26BnY,EAAKqG,MAAM+R,+BADt7B,8CAEEf,KAAK,IACP,IA9CN,OAgDGF,EAAKkB,YAAL,uEAEGlB,EAAKkB,YAAYC,UACdtF,EAAAA,EAAAA,KAAImE,EAAKkB,YAAYC,SAASC,SAAS,SAACzL,GACxC,MAAiB,QAAbA,EAAM0L,GACF,iCAAP,OAAwC1L,EAAM0L,GAA9C,kBAA0D1L,EAAM2L,IAAhE,uBACgB,QAAb3L,EAAM0L,IAAgB1L,EAAM4L,KACxB,iCAAP,OAAwC5L,EAAM0L,GAA9C,kBAA0D1L,EAAM2L,IAAhE,gBACgB,QAAb3L,EAAM0L,GACF,iCAAP,OAAwC1L,EAAM0L,GAA9C,kBAA0D1L,EAAM2L,IAAhE,gBAA2E3L,EAAM6L,EAAjF,OACD,wCAAwC7L,EAAM0L,GAA9C,kBAA0D1L,EAAM2L,IAAhE,WACGpB,KAAK,IACR,IAZN,OAcGF,EAAKkB,YAAYO,aACd5F,EAAAA,EAAAA,KAAImE,EAAKkB,YAAYO,YAAYL,SAAS,SAACzL,GAC3C,MAAiB,QAAbA,EAAM0L,IAAgB1L,EAAM4L,KACxB,2BAAP,OAAkC5L,EAAM0L,GAAxC,kBAAoD1L,EAAM2L,IAA1D,gBACgB,QAAb3L,EAAM0L,GACF,2BAAP,OAAkC1L,EAAM0L,GAAxC,kBAAoD1L,EAAM2L,IAA1D,gBAAqE3L,EAAM6L,EAA3E,OACD,kCAAkC7L,EAAM0L,GAAxC,kBAAoD1L,EAAM2L,IAA1D,WACGpB,KAAK,IACR,GAtBN,6FAwBGF,EAAKkB,YAAYC,SAAjB,UAE4C,QAArCnB,EAAKkB,YAAYC,SAAjB,IAA8BE,GACjC,wCAAwCrB,EAAKkB,YAAYC,SAAjB,IAA8BE,GAAtE,uBAGqC,QAArCrB,EAAKkB,YAAYC,SAAjB,IAA8BE,IAC9BrB,EAAKkB,YAAYC,SAAjB,IAA8BI,KAE9B,wCAAwCvB,EAAKkB,YAAYC,SAAjB,IAA8BE,GAAtE,gBAEwC,QAArCrB,EAAKkB,YAAYC,SAAjB,IAA8BE,IAG1BxF,EAAAA,EAAAA,KACNmE,EAAKkB,YAAYC,SAAjB,IAA8BK,GAC9B,SAACE,GAAD,8DACkC1B,EAAKkB,mBADvC,aACkC,EAAkBC,SAAlB,IAA+BE,GADjE,gBAC2EK,EAAEC,MAD7E,UAECzB,KAAK,IAER,wCAAwCF,EAAKkB,YAAYC,SAAjB,IAA8BE,GAAtE,SAEA,IA9CN,OAgDGrB,EAAKkB,YAAYO,YAAjB,UAG4C,QAAxCzB,EAAKkB,YAAYO,YAAjB,IAAiCJ,IACjCrB,EAAKkB,YAAYO,YAAjB,IAAiCF,KAEjC,kCAAkCvB,EAAKkB,YAAYO,YAAjB,IAAiCJ,GAAnE,gBAE2C,QAAxCrB,EAAKkB,YAAYO,YAAjB,IAAiCJ,IAG7BxF,EAAAA,EAAAA,KACNmE,EAAKkB,YAAYO,YAAjB,IAAiCD,GACjC,SAACE,GAAD,wDAC4B1B,EAAKkB,mBADjC,aAC4B,EAAkBO,YAAlB,IAAkCJ,GAD9D,gBACwEK,EAAEC,MAD1E,UAECzB,KAAK,IAER,4CAAkCF,EAAKkB,mBAAvC,aAAkC,EAAkBO,YAAlB,IAAkCJ,GAApE,SAEA,GAnEN,6BAsEG,GAtHN,oBAyHEhO,MAAK,SAACU,GAsFN,OArFAlB,GAAAA,UAAyB,SAACjF,GAAD,wBAAsB,CAC9CtD,SAAU,SACNsD,EAAEtD,UADE,IAEP4E,OAAOrE,EAAAA,EAAAA,QACNmV,EAAK9Q,OACL,SAACpE,EAAKmV,EAAMrJ,GAAZ,UAAC,MACG9L,GADJ,cAEE8L,EAAMqJ,MAERrS,EAAEtD,SAAS4E,OAEZ+D,OAAOpI,EAAAA,EAAAA,QACNmV,EAAK/M,OACL,SAACnI,EAAD,EAAsB8L,GAAQ,IAAtB7L,EAAsB,EAAtBA,IAAKqM,EAAiB,EAAjBA,MACNwK,GAAYvV,EAAAA,EAAAA,WAAUvB,GAAK,SAAC+W,GAAD,OAAOA,EAAEtY,OAASqN,GAAOiL,EAAEC,SAAW/W,KAevE,OAdI6W,GAAa,EAEhB9W,EAAI8W,GAAa,CAChBrY,KAAMqN,EACNkL,OAAQ/W,EACRgG,SAAUqG,GAGXtM,EAAI6S,KAAK,CACRpU,KAAMqN,EACNkL,OAAQ/W,EACRgG,SAAUqG,IAGLtM,IAER8C,EAAEtD,SAAS2I,SAGbH,QAAS,SACLlF,EAAEkF,SADC,IAENa,aACC,WAAAzI,EAAAA,EAAAA,MAAK8U,MAAAA,GAAD,UAACA,EAAMG,gBAAP,aAAC,EAAgBC,YAAY,SAACvX,GAAD,aAAUA,EAAKF,MAAOiF,MAAAA,GAAZ,UAAYA,EAAGkF,eAAf,aAAY,EAAYnK,cAAnE,eAAwEuG,MACtEsR,0BADF,UAC4B5S,EAAEkF,eAD9B,aAC4B,EAAWa,aACxCpK,MACC,WAAA2B,EAAAA,EAAAA,MAAK8U,MAAAA,GAAD,UAACA,EAAMG,gBAAP,aAAC,EAAgBC,YAAY,SAACvX,GAAD,aAAUA,EAAKF,MAAOiF,MAAAA,GAAZ,UAAYA,EAAGkF,eAAf,aAAY,EAAYnK,cAAnE,eAAwEuG,MACtEwR,yBADF,UAC2B9S,EAAEkF,eAD7B,aAC2B,EAAWvJ,MACvC+J,WAAY,CACX6M,cACsB,IAAdvS,EAAEkF,SACNjI,EAAAA,EAAAA,QACAmV,MAAAA,GADM,UACNA,EAAMG,gBADA,aACN,EAAgBC,YAChB,SAACtV,EAAD,GAAwB,IAAhBnC,EAAgB,EAAhBA,GAAIuG,EAAY,EAAZA,MAEL0S,GAAYvV,EAAAA,EAAAA,WACjBvB,GACA,SAACiX,EAAUC,GAAX,OAA4BlX,EAAIkX,GAAcrZ,KAAOA,KAgBtD,OAdIiZ,GAAa,KAChBnI,EAAAA,EAAAA,SAAQwI,OAAOC,KAAKhT,IAAQ,SAACrG,EAAMsZ,GAElCrX,EAAI8W,GAAWpO,OAAO3K,GAAQoZ,OAAOG,OAAOlT,GAAOiT,GAEzC,2BAATtZ,GACwB,YAAxBiC,EAAI8W,GAAWrY,OAGfuB,EAAI8W,GAAWrY,KAAO0Y,OAAOG,OAAOlT,GAAOiT,OAd3B,GAiBPxE,KAAKzO,IAEVpE,IAtBF,oBAyBFlC,EAAAA,EAAAA,QACFgF,EAAEkF,QAAQQ,WAAW6M,UACrB,SAACtX,GAAD,gBAAWmX,MAAAA,GAAD,UAACA,EAAMG,gBAAP,iBAAC,EAAgBE,kBAAjB,OAAC,EAA4BvR,SAASjG,EAAKF,QACpDC,QAAO,SAACyZ,GAAD,MAAkB,YAAXA,EAAE9Y,UA5Bb,SA6BFsS,EAAAA,EAAAA,KAAI9H,MAAAA,OAAD,EAACA,EAAGuO,wBAAwB,SAACzZ,GAAD,OAAUA,EAAKsX,SAAS,QA7BrD,SA8BFvX,EAAAA,EAAAA,QACFgF,EAAEkF,QAAQQ,WAAW6M,UACrB,SAACtX,GAAD,gBAAWmX,MAAAA,GAAD,UAACA,EAAMG,gBAAP,iBAAC,EAAgBE,kBAAjB,OAAC,EAA4BvR,SAASjG,EAAKF,QACpDC,QAAO,SAACyZ,GAAD,MAAkB,YAAXA,EAAE9Y,gBAGnBwJ,SAIAgB,MC/MGwO,GAGR,SAAC,GAA+B,IAA7B1T,EAA6B,EAA7BA,SAAU2T,EAAmB,EAAnBA,KAAMC,EAAa,EAAbA,OACjBxF,GAAUS,EAAAA,GAAAA,MACVgF,GAAsB3U,EAAAA,EAAAA,UAAQ,kBAAMkP,EAAQ1O,SAAS2F,WAAU,CAAC+I,IACtE,GAAwCzF,EAAAA,EAAAA,WAAS,GAAjD,eAAOmL,EAAP,KAAqBC,EAArB,KACA,GAAwCpL,EAAAA,EAAAA,UAAmBkL,GAA3D,eAAOG,EAAP,KAAqBC,EAArB,KACA,GAAsDtL,EAAAA,EAAAA,WAAS,GAA/D,eAAOuL,EAAP,KAA4BC,EAA5B,KACA,GAAYC,EAAAA,EAAAA,KAALC,GAAP,eA2BA,OANAlM,EAAAA,EAAAA,YAAU,WACL+L,GAAuBF,GAE1B5F,EAAQU,KAAKkF,EAAa3O,YAEzB,CAAC6O,EAAqB9F,EAAS4F,IAEjC,gCACC,gBAAC,MAAD,CAAQL,KAAMA,EAAMW,QAxBU,SAACC,GAChC,SACEL,GACDK,EAAalP,aAAc2O,MAAAA,OAAA,EAAAA,EAAc3O,WAAYwO,KAErDE,GAAgB,GAChBE,EAAgBM,GACT,OAmBP,gBAAC,EAAAC,MAAD,CACCC,KAAMX,EACNY,QAhCa,WACfX,GAAgB,GAChBI,GAAuB,IA+BrBQ,UAlBe,WACjBZ,GAAgB,GAChBH,IACAO,GAAuB,IAgBrBtE,MAAOwE,EAAE,wBAAyB,4BAClCO,aAAcP,EAAE,qBAAsB,gBACtCQ,aAAcR,EAAE,uBAAwB,mBAEvCrU,KCkDL,SAlFgD,SAAC,GAAyC,MAAvC4T,EAAuC,EAAvCA,OAAQkB,EAA+B,EAA/BA,SAAUC,EAAqB,EAArBA,QAASlF,EAAY,EAAZA,MAC7E,GAAYuE,EAAAA,EAAAA,KAALC,GAAP,eACMjG,GAAUS,EAAAA,GAAAA,MACVmG,GAAWC,EAAAA,GAAAA,MACXC,EAAS,CACd,CACCpb,GAAI,WACJqD,MAAOkX,EAAE,eAAgB,YACzBc,MAAO,kBAAY/G,EAAQU,KAAR,WAAiBxX,EAAjB,QAEpB,CACCwC,GAAI,UACJqD,MAAO0S,EACPsF,MAAO,kBAAY/G,EAAQU,KAAR,WAAiBxX,EAAjB,SAGfoE,EAAM,UAAG0S,EAAQ1O,gBAAX,aAAG,EAAkBhE,OAYjC,OAXAyM,EAAAA,EAAAA,YAAU,WACLzM,GACH+H,YACC,kCACC2R,SACEC,cAAc,WAAIjH,EAAQ1O,SAAShE,QAAS8S,QAAQ,YAAa,YAFpE,aACC,EAEG8G,mBACJ,KAGA,CAAClH,EAASA,EAAQ1O,SAAU0O,EAAQ1O,SAAShE,OAAQA,EAAQsZ,IAE/D,gCACC,gBAACtB,GAAD,CAAmBC,KAAMoB,EAASnB,OAAQA,GACzC,gBAAC,EAAA3Q,KAAD,KACEoR,EACA,8BACA,6DAGF,gBAAC,EAAApR,KAAD,KAAOoR,EAAE,8BAA+B,2CAEzC,gBAAC,EAAAlL,UAAD,CACCoM,YAAY,WACZjM,cAAc,eACdkM,WAAW,QACXpM,OAAO,OAEP,gBAAC,EAAAqM,IAAD,CAAKF,YAAY,aAAa5E,MAAM,QACnC,gBAAC,EAAA8E,IAAD,CACCC,QAAS,CAAEC,IAAK,SAChBrM,cAAc,aACdqH,MAAM,MACNtH,eAAe,cAEf,gBAAC,EAAAuM,YAAD,CAAaV,OAAQA,KAEtB,gBAAC,EAAAO,IAAD,CACCC,QAAS,CAAEC,IAAK,SAChBhF,MAAM,MACNrH,cAAc,WACdD,eAAe,YAEf,gBAAC,EAAAwM,QAAD,CAAS/O,MAAM,SACd,gBAAC,EAAA8J,OAAD,CACCzT,MAAOkX,EAAE,wBAAyB,mBAClCyB,QAAShB,EACTnb,MAAM,YACNoc,UAAWhB,KAGb,gBAAC,EAAAnE,OAAD,CACCzT,MAAOkX,EAAE,aAAc,QACvB1a,MAAM,UACNmc,QAASlC,EACTmC,UAAWhB,OAKf,gBAAC,EAAAiB,QAAD,Q,ykBClFI,IAAMC,GAAqD,GAC9DC,GAAY,EAahB,SAASC,GAAcC,EAAwBpK,GAC9C,OAAO,IAAIqK,SAAQ,SAACC,EAAUC,GAC7B,IN4B8B3K,E3BzCF9M,EiCaxB0X,GAAW,EAaf,IACE/W,OAAmCgX,0BAA0B,8BAC7DL,EAAO1b,MADR,GAAC,OAGAsR,MAAO,CACNA,MAAAA,EACA0K,WAAY,SAACC,GAAD,OAA4B3K,EAAM4K,eAAeD,KAE9DpV,OAAQA,EAAO6U,EAAO1b,MACtBoW,QAAAA,GACAJ,QAAAA,GACAmG,eAAAA,IC/ByB,SAACjL,GAC7B,IJ8LC1P,EI9LK4a,EAAa7c,EAAAA,WAAuB4B,QACpCkb,EAAezM,GAAqB3I,WAC1C,MAAO,CACNjD,mBAAoBoY,EAAWpY,mBAC/BE,mBAAoBkY,EAAWlY,mBAC/BrC,cAAeua,EAAWva,cAAcqP,EAAIlR,MAC5CiC,SAAU,SAACI,GAAD,OACT+Z,EAAWna,SpCIgB,SAC7BkB,EACA3B,GACwB,sBAClBa,GAAQmR,EAAAA,EAAAA,MAAI,UAACrQ,EAAKd,aAAN,QAAeb,EAAIxB,KAAM,KAC3C,MAAO,CACNwB,IAAKA,EAAIxB,KACTqC,MAAAA,EACAjD,GAAE,UAAE+D,EAAK/D,UAAP,QAAaiD,EACfxD,MAAOD,EAAkB,UAACuE,MAAAA,OAAD,EAACA,EAAMtE,aAAP,QAAgB,IACzC0D,SAAQ,UAAEY,MAAAA,OAAF,EAAEA,EAAMZ,gBAAR,QAAoBf,EAAIvB,SAChCuC,QAAO,UAAEW,MAAAA,OAAF,EAAEA,EAAMX,eAAR,SACPC,MAAK,UAAEU,MAAAA,OAAF,EAAEA,EAAMV,aAAR,QAAiB,GACtB/B,WAAU,oBAAEyC,EAAKzC,kBAAP,QAAqBc,EAAInB,YAAzB,QAAiC,cAC3CM,aAAcwC,EAAKxC,aACnBC,QAAO,UAAEuC,EAAKvC,eAAP,QAAkBjC,GoCnBJ2d,CAAeja,EAAO6O,KAC3CtO,mBAAoB,SAAC2Z,EAAiB/Z,GAAlB,OACnB4Z,EAAWxZ,mBAAmB2Z,EAAS/Z,IACxCQ,YAAa,SAACuZ,GAAD,OAAqBH,EAAWpZ,YAAYuZ,IAEzDrZ,aAAc,SAACC,GAAD,OACbiZ,EAAWlZ,apCoFoB,SAACC,EAA0B3B,GAAmC,UACzFa,GAAQmR,EAAAA,EAAAA,MAAI,UAACrQ,EAAKd,aAAN,QAAeb,EAAIxB,KAAM,KAC3C,MAAO,CACNwB,IAAKA,EAAIxB,KACTqC,MAAAA,EACAjD,GAAE,UAAE+D,MAAAA,OAAF,EAAEA,EAAM/D,UAAR,QAAciD,EAChBC,UAAS,UAAEa,MAAAA,OAAF,EAAEA,EAAMb,iBAAR,QAAqB3D,GoC1FL6d,CAAmBrZ,EAAM+N,KAElD7N,gBAAiB+Y,EAAW/Y,gBAG5BC,gBAAiB,SAACH,GAAD,OAChBiZ,EAAW9Y,gBpCWuB,SACpCH,EACA3B,GACkB,oBACZa,GAAQmR,EAAAA,EAAAA,MAAI,UAACrQ,EAAKd,aAAN,QAAeb,EAAIxB,KAAM,KAC3C,MAAO,CACNwB,IAAKA,EAAIxB,KACTqC,MAAAA,EACAjD,GAAE,UAAE+D,MAAAA,OAAF,EAAEA,EAAM/D,UAAR,QAAciD,EAChBC,UAAS,UAAEa,MAAAA,OAAF,EAAEA,EAAMb,iBAAR,QAAqB3D,EAC9B8D,MAAK,UAAEU,EAAKV,aAAP,QAAgBjB,EAAIlB,QACzBD,KAAI,UAAE8C,EAAK9C,YAAP,QAAemB,EAAInB,KACvBkC,SAAQ,oBAAEY,EAAKZ,gBAAP,QAAmBf,EAAIvB,gBAAvB,QAAmC,GAC3Cwc,YAAW,UAAEtZ,EAAKsZ,mBAAP,QAAsB,IoCxBLC,CAAsBvZ,EAAM+N,KAExD3N,mBAAoB6Y,EAAW7Y,mBAG/BC,cAAe,SAACL,GAAD,OACdiZ,EAAW5Y,cpCqBqB,SAACL,EAA2B3B,GAAoC,kBAC5Fa,GAAQmR,EAAAA,EAAAA,MAAI,UAACrQ,EAAKd,aAAN,QAAeb,EAAIxB,KAAM,KAC3C,MAAO,CACNwB,IAAKA,EAAIxB,KACTqC,MAAAA,EACAjD,GAAE,UAAE+D,MAAAA,OAAF,EAAEA,EAAM/D,UAAR,QAAciD,EAChBC,UAAS,UAAEa,MAAAA,OAAF,EAAEA,EAAMb,iBAAR,QAAqB3D,EAC9B8D,MAAK,UAAEU,EAAKV,aAAP,QAAgBjB,EAAIlB,QACzBD,KAAI,UAAE8C,EAAK9C,YAAP,QAAemB,EAAInB,KACvBkC,SAAQ,oBAAEY,EAAKZ,gBAAP,QAAmBf,EAAIvB,gBAAvB,QAAmC,IoC9BjB0c,CAAoBxZ,EAAM+N,KAEpDzN,iBAAkB2Y,EAAW3Y,iBAG7BC,eAAgB,SAACP,GAAD,OACfiZ,EAAW1Y,epC2BsB,SACnCP,EACA3B,GAFmC,sBAGjB,CAClBA,IAAKA,EAAIxB,KACTZ,GAAE,UAAE+D,MAAAA,OAAF,EAAEA,EAAM/D,UAAR,QAAcoC,EAAIxB,KACpB4c,gBAAiBzZ,MAAAA,OAAF,EAAEA,EAAMyZ,gBACvBC,gBAAiB1Z,MAAAA,OAAF,EAAEA,EAAM0Z,gBACvBva,UAAS,UAAEa,MAAAA,OAAF,EAAEA,EAAMb,iBAAR,QAAqB3D,EAC9Bme,OAAM,UAAE3Z,MAAAA,OAAF,EAAEA,EAAM2Z,cAAR,QAAkB,OACxBje,MAAOD,EAAkB,UAACuE,MAAAA,OAAD,EAACA,EAAMtE,aAAP,QAAgB,IACzC0D,SAAQ,UAAEY,MAAAA,OAAF,EAAEA,EAAMZ,gBAAR,QAAoBf,EAAIvB,SAChCwC,MAAK,UAAEU,MAAAA,OAAF,EAAEA,EAAMV,aAAR,QAAiBjB,EAAIlB,SoCvCEyc,CAAqB5Z,EAAM+N,KAEtDvN,kBAAmByY,EAAWzY,kBAG9BC,wBAAyB,SAACT,GAAD,OACxBiZ,EAAWxY,wBpCmC+B,SAC5CT,EACA3B,GAF4C,kBAGjB,CAC3BA,IAAKA,EAAIxB,KACTob,QAASjY,MAAAA,OAAF,EAAEA,EAAMiY,QACf3Y,MAAK,UAAEU,MAAAA,OAAF,EAAEA,EAAMV,aAAR,QAAiBjB,EAAIlB,QAC1BiC,SAAQ,UAAEY,MAAAA,OAAF,EAAEA,EAAMZ,gBAAR,QAAoBf,EAAIvB,SAChC2c,gBAAiBzZ,MAAAA,OAAF,EAAEA,EAAMyZ,gBACvBC,gBAAiB1Z,MAAAA,OAAF,EAAEA,EAAM0Z,gBACvBzd,GAAE,UAAE+D,MAAAA,OAAF,EAAEA,EAAM/D,UAAR,QAAcoC,EAAIxB,KACpBsC,UAAS,UAAEa,MAAAA,OAAF,EAAEA,EAAMb,iBAAR,QAAqB3D,GoC9COqe,CAA8B7Z,EAAM+N,KAExErN,2BAA4BuY,EAAWvY,2BAGvCC,0BAA2B,SAACX,GAAD,OAC1BiZ,EAAWtY,0BpC0CiC,SAC9CX,EACA3B,GAF8C,gBAGjB,CAC7BA,IAAKA,EAAIxB,KACTuC,SAAQ,UAAEY,MAAAA,OAAF,EAAEA,EAAMZ,gBAAR,QAAoBf,EAAIvB,SAChC2c,gBAAiBzZ,MAAAA,OAAF,EAAEA,EAAMyZ,gBACvBC,gBAAiB1Z,MAAAA,OAAF,EAAEA,EAAM0Z,gBACvBzd,GAAE,UAAE+D,MAAAA,OAAF,EAAEA,EAAM/D,UAAR,QAAcoC,EAAIxB,KACpBsC,UAAS,UAAEa,MAAAA,OAAF,EAAEA,EAAMb,iBAAR,QAAqB3D,GoCnDSse,CAAgC9Z,EAAM+N,KAE5EnN,6BAA8BqY,EAAWrY,6BACzCsM,cAAegM,EAAahM,cAC5BO,YAAayL,EAAazL,YAC1BL,kBAAmB8L,EAAa9L,kBAChCM,gBAAiBwL,EAAaxL,gBAC9BZ,gBAAiBoM,EAAapM,gBAC9BQ,cAAe4L,EAAa5L,cAC5BL,mBAAoBiM,EAAajM,mBAAmBc,EAAIlR,MACxD2Q,iBAAkB0L,EAAa1L,iBAC/B6F,cJwIAhV,EIxIoC0P,EAAIlR,KJyIzC,SAACyW,GAAD,OACCD,GAAaC,EAAMjV,GAAKsI,MAAK,SAACU,GAE7B,OADAA,EAAErK,KAAO,YACFqK,QGnKH0S,CAAcxB,KNGWxK,EMFTwK,ENE4D,CAClF1S,UAAWM,GAAAA,WAA2BN,UAAUkI,EAAIlR,MACpDyL,aAAcnC,GAAAA,WAA2BmC,aAAayF,EAAIlR,MAG1Dmd,e3B9C6B/Y,E2B8CA8M,EAAIlR,K3B9Cc,kBAC/CT,GAAY,SAAC8E,GAAD,OAAOA,EAAE1E,YAAYyE,Q2B8CjCM,cAAeA,EAAcwM,EAAIlR,MACjCmE,OAAQA,EAAO+M,EAAIlR,MACnByE,OAAQA,EAAOyM,EAAIlR,MAGnB8S,kBAAAA,GACAhB,kBAAAA,GACAiB,sBAAAA,GACAf,sBAAAA,GACAgB,uBAAAA,GACAf,uBAAAA,GACAkB,UAAAA,GACAX,UAAAA,GACAS,WAAAA,GACAd,WAAAA,GACAe,kBAAAA,GACAX,kBAAAA,GACAa,iBAAAA,GACAV,iBAAAA,GAEA5G,eAAAA,GACAY,eAAAA,GACAX,gBAAAA,GACAY,gBAAAA,GACAL,gBAAAA,GACAM,gBAAAA,GACAT,aAAAA,GACAF,cAAAA,GACAc,aAAAA,GACAD,cAAAA,GACAP,QAAAA,GACAM,QAAAA,GACAL,UAAAA,GACAC,WAAAA,GAEA2Q,oBAAqBxH,GAAuB1E,EAAIlR,MAChD6V,sBAAAA,GACAC,sBAAAA,GACAC,eAAAA,GAEA7B,uBAAAA,GACAI,yBAAAA,GACAD,0BAAAA,GACAhB,gBAAAA,GACAI,gBAAAA,GACAe,YAAAA,GACAE,cAAAA,GACAD,eAAAA,GAEA7B,YAAAA,GACAyK,oBAAqB,WACpB,MAAiDrQ,GAAiB/F,WAA1DgG,EAAR,EAAQA,0BACR,gBADA,EAAmCC,YAG/B5L,EAAAA,EAAAA,QAAO2L,GAA2B,SAAC1L,EAAK6L,EAAGpN,GAAT,UAAC,MAAuBuB,GAAxB,cAA8BvB,EAAOoN,EAAE8D,EAAIlR,UAAU,SM7DtFsd,GAGHvY,OAAmCwY,oBAAoB7B,EAAO1b,MAAQ,SACtEwd,GAEAje,EAAAA,UAAqB,SAAC8B,GAAD,MAAY,CAChCd,YAAa,SACTc,EAAMd,aADC,cAETmb,EAAO1b,KAAOwd,QAGjBrW,QAAQC,KAAR,oBACcsU,EAAO1b,MACpB,yHAvCG8b,IACJA,GAAW,EACXF,EAASF,KAiDV,IAAM+B,EAA4B/C,SAASgD,cAAc,UACzDD,EAAOE,aAAa,OAAQ,mBAC5BF,EAAOE,aAAa,gBAAiBjC,EAAO1b,MAC5Cyd,EAAOE,aAAa,mBAAoBjC,EAAOxb,SAC/Cud,EAAOE,aAAa,cAAe,QACnCF,EAAOE,aAAa,MAApB,UAA8BjC,EAAO3b,gBACrC2a,SAAS1P,KAAK4S,YAAYH,GAC1BlC,GAAS,GAAD,OAAIG,EAAO1b,KAAX,mBAA2Bwb,IAAa,IAAQiC,EACvD,MAAO5S,GACR1D,QAAQL,MAAM+D,GAtDTiR,IACJA,GAAW,EACXD,EAuDMhR,Q,4qBE3FH,I,slBCCPgT,EAAAA,GAAAA,gBAAe9Y,OAAOwF,OAEf,IAAMuT,IAAwB/M,EAAAA,EAAAA,eAGlC,CAEFgN,aAAc,SAACC,EAA8B5e,KAE7C6e,mBAAoB,SAACC,OAGhBC,GAAa,SAClBC,GAEA,OAAQA,GACP,IAAK,QACJ,OAAO,SAACzE,GAQP,OANAA,EAAE0E,MAAMC,KAAO,CACdC,WAAY,OACZC,MAAO,OACPC,OAAQ,OACRC,MAAO,QAED/E,GAGT,IAAK,QACJ,OAAO,SAACA,GAQP,OANAA,EAAE0E,MAAMC,KAAO,CACdC,WAAY,OACZC,MAAO,OACPC,OAAQ,OACRC,MAAO,QAED/E,GAGT,IAAK,SACJ,OAAO,SAACA,GAQP,OANAA,EAAE0E,MAAMC,KAAO,CACdC,WAAY,OACZC,MAAO,OACPC,OAAQ,OACRC,MAAO,QAED/E,GAKT,QACC,OAAO,SAACA,GAQP,OANAA,EAAE0E,MAAMC,KAAO,CACdC,WAAY,OACZC,MAAO,OACPC,OAAQ,OACRC,MAAO,QAED/E,KAMEgF,GAAoB,SAAC,GAAiB,IAAfrZ,EAAe,EAAfA,SAC7BsZ,EAAqBtV,IAAgB,SAACjF,GAAD,uBAAOA,EAAEtD,SAAS4E,aAAlB,aAAO,EAAkBiZ,sBAEpE,GAAoC3Q,EAAAA,EAAAA,UAA4B,CAC/D4Q,MAAO,SAACC,GAQP,OANAA,EAAMT,MAAMC,KAAO,CAClBC,WAAY,OACZC,MAAO,OACPC,OAAQ,OACRC,MAAO,QAEDI,KATT,eAAOC,EAAP,KAAmBC,EAAnB,MAYAvR,EAAAA,EAAAA,YAAU,WACTuR,GAAc,SAACzT,GAAD,UAAC,MACXA,GADU,IAEbsT,MAAOV,GAAWS,UAEjB,CAACA,IACJ,OAA8C3Q,EAAAA,EAAAA,UAA0C,QAAxF,eAAOgR,EAAP,KAAwBhB,EAAxB,MACAxQ,EAAAA,EAAAA,YAAU,WACT,OAAQwR,GACP,IAAK,YACJC,EAAAA,GAAAA,WACA,MACD,IAAK,WACJC,EAAAA,GAAAA,QACC,CACCC,OAAQ,IAETthB,GAED,MAED,SACCuhB,EAAAA,GAAAA,MACC,CACCD,OAAQ,IAETthB,MAID,CAACmhB,IACJ,IAAMK,GAAuBlR,EAAAA,EAAAA,cAC5B,SAAC0Q,GAAD,OAAgBxd,EAAAA,EAAAA,QAAOyd,GAAY,SAACxd,EAAKK,GAAN,OAAcA,EAAIL,KAAMud,KAC3D,CAACC,IAEIhB,GAAe3P,EAAAA,EAAAA,cAAY,SAAC4P,EAA8B5e,GAC/D4f,GAAc,SAACO,GAAD,UAAC,MAAcA,GAAf,cAAqBngB,EAAK4e,SACtC,IACH,OACC,gBAAC,gBAAD,CAAiBwB,UAAWF,GAC3B,gBAACxB,GAAsBpM,SAAvB,CAAgC7D,MAAO,CAAEkQ,aAAAA,EAAcE,mBAAAA,IACrD3Y,KChICma,GAAiC,SAAC,GAAD,IAAGna,EAAH,EAAGA,SAAUlB,EAAb,EAAaA,MAAb,OACtC,uBAAKiJ,IAAKjJ,EAAOhF,GAAIgF,GACpB,gBAAC,GAAD,CAAoBiJ,IAAKjJ,EAAO8M,IAAK9M,GACpC,gBAAC,EAAAsb,SAAD,CAAUC,SAAU,IAAKra,MAkC5B,SA7B6B,WAC5B,IAAM/E,EAAchB,GAAY,SAAC8E,GAAD,OAAOA,EAAE9D,eACnCqf,GAAUpb,EAAAA,EAAAA,UACf,kBACCqb,EAAAA,EAAAA,SAAQtf,GACL,MACA+R,EAAAA,EAAAA,KAAI/R,GAAa,SAACuf,EAAM1b,GACxB,IAAM2b,GAAWC,EAAAA,EAAAA,MAAKF,GACtB,OACC,gBAACL,GAAD,CAASpS,IAAKjJ,EAAOA,MAAOA,GAC3B,gBAAC2b,EAAD,YAIN,CAACxf,IAGF,OACC,uBACC,cAAY,cACZ8M,IAAI,cACJ4S,QAAM,EACNpR,MAAO,CAAEH,OAAQ,EAAGwR,SAAU,WAE7BN,IC7BJ,IAAMO,IAAyBC,EAAAA,GAAAA,SAAO3R,EAAAA,WAAV,gGAAG2R,CAAH,2FAQtBC,GAAmB,WACxB,IAAM3gB,EAAO6E,IACP/D,EAASqE,IACTG,GAAWsO,EAAAA,GAAAA,MACXgN,GAAY9b,EAAAA,EAAAA,UACjB,mCAAM7C,EAAAA,EAAAA,MAAKnB,GAAQ,SAACgK,GAAD,aAAO,UAAA9K,EAAK,UAAL,eAASM,QAASwK,EAAEhJ,cAA9C,aAAM,EAA8Ca,QACpD,CAAC3C,EAAMc,IAER,OAAO8f,GAAoC,OAAvBtb,MAAAA,OAAA,EAAAA,EAAU2F,UAC7B,gBAAC,MAAD,CAAU4V,OAAK,EAACC,QAAM,EAACC,KAAK,IAAIpK,GAAE,WAAMiK,KACrC,MAGU,SAASI,KACvB,IAAMC,EAAWphB,GAAY,SAAC8E,GAAD,OAAOA,EAAE5D,MAAMG,WACtCJ,GAASgE,EAAAA,EAAAA,UACd,2BACI8N,EAAAA,EAAAA,KAAIqO,GAAU,SAAC5d,GAAD,OAChB,gBAAC,MAAD,CAAOsK,IAAKtK,EAAK3D,GAAI4U,KAAI,WAAMjR,EAAKV,QACnC,gBAAC,GAAD,CAAoBgL,IAAKtK,EAAKvB,IAAK0P,IAAKnO,EAAKvB,KAC5C,gBAACuB,EAAKT,UAAN,cAKJ,CAACqe,IAGF,OACC,gBAACR,GAAD,KACC,gBAAC,EAAA1R,UAAD,CAAWG,cAAc,cACxB,gBAAC,MAAD,KAASpO,GACT,gBAAC6f,GAAD,QC5CW,SAASO,GAAT,GAA4C,IAAZtb,EAAY,EAAZA,SACxCub,GAAaC,EAAAA,EAAAA,iBAEbjT,GAAQrJ,EAAAA,EAAAA,UACb,iBAAO,CACNmO,SAAyB,WAAfkO,KAEX,CAACA,IAGF,OAAO,gBAAC,YAAD,CAAuBhT,MAAOA,GAAQvI,G,4BCVjCyb,I,8CAAiBvhB,EAAAA,EAAAA,IAAoB,SAACC,EAAKoI,GAAN,MAAe,CAChEmZ,MAAO,GACPC,gBAAgB,EAChBC,kBAAmB,SAACD,GAAD,OAAmCxhB,EAAI,CAAEwhB,eAAAA,KAC5DE,YAAa,SAACH,GAAD,OACZvhB,EAAI,CAAEuhB,OAAOI,EAAAA,EAAAA,YAAWJ,GAASA,EAAMnZ,IAAMmZ,OAASA,KACvDK,aAAc,SAACC,GAAD,OAA0B7hB,EAAI,CAAE6hB,OAAAA,U,ykBCgB/C,IAAMC,IAAqBnB,EAAAA,GAAAA,SAAOoB,EAAAA,YAAV,qFAAGpB,CAAH,8DAEpB,gBAAGtB,EAAH,EAAGA,MAAH,SAAUzD,SACAyD,EAAM2C,QAAQC,QAAQrG,SAAWyD,EAAM2C,QAAQC,QAAQC,WAO/DC,IAAkBxB,EAAAA,GAAAA,SAAOyB,EAAAA,WAAV,kFAAGzB,CAAH,2CAGL,gBAAGtB,EAAH,EAAGA,MAAH,SAAUzD,SACZ,QAAUyD,EAAM2C,QAAQK,MAAMC,SAItCC,IAAkB5B,EAAAA,GAAAA,SAAO3R,EAAAA,WAAV,kFAAG2R,CAAH,8EAQf6B,GAAkD,SAAC,GAAwC,MAAtCC,EAAsC,EAAtCA,SAAUnI,EAA4B,EAA5BA,KAAMoI,EAAsB,EAAtBA,MAAO9G,EAAe,EAAfA,SAE3EyD,GAAa1N,EAAAA,EAAAA,YAAWgR,EAAAA,cACxBnjB,GAAQuF,EAAAA,EAAAA,UAEb,kBAAO6W,EAAW,UAAYtB,GAAQoI,EAAQ,UAAY,SAC1D,CAAC9G,EAAUtB,EAAMoI,IAElB,OACC,gBAAC,EAAA1T,UAAD,CACCoM,YAAY,aACZC,WAAYO,EAAW,QAAU,QACjC3M,OAAQ,GACRuH,MAAM,MACNoM,SAAS,QACT1T,eAAe,SACfC,cAAc,gBACd0T,aAAa,OACbzT,MAAO,CACN0T,YAAa,aAAF,OAAezD,EAAM2C,QAAQe,MAAMb,SAC9Cc,OAAQpH,EAAW,UAAY,YAGhC,gBAAC,EAAAN,IAAD,CAAK2H,oBAAkB,EAAC9T,cAAc,QAAQoM,QAAS,CAAE2H,KAAM,UAC9D,gBAAC,EAAApa,KAAD,CAAM6V,KAAK,QAAQnf,MAAOA,GAA1B,UACEijB,EAAS,UADX,aACE,EAAazf,QAGhB,gBAAC,EAAAmgB,KAAD,CACCxE,KAAK,QACL/d,KAAM0Z,EAAO,mBAAqB,qBAClC9a,MAAOA,EACP4P,MAAO,CAAEgU,UAAW,cAMXC,GAAgC,SAAC,GAIxC,IAHLC,EAGK,EAHLA,YAIMC,EAAczjB,GAAY,SAAC8E,GAAD,OAAOA,EAAE5D,MAAMO,UAE/C,GAA8CiN,EAAAA,EAAAA,WAAS,GAAvD,eAAOgV,EAAP,KAAwBC,EAAxB,KACMC,GAAWC,EAAAA,EAAAA,UACjB,GAAY1J,EAAAA,EAAAA,KAALC,GAAP,eACA,EnBvFM,SAA4BtM,EAAaU,GAC/C,OAAsCE,EAAAA,EAAAA,WAAY,WACjD,IACC,IAAM3O,EAAOyF,OAAOse,aAAaC,QAAQjW,GACzC,OAAO/N,EAAO6L,KAAKoY,MAAMjkB,GAAQyO,EAChC,MAAOjH,GAER,OADAK,QAAQL,MAAMA,GACPiH,MANT,eAAOyV,EAAP,KAAoBC,EAApB,KAkBA,MAAO,CAACD,EATS,SAAC3V,GACjB,IACC,IAAM6V,EAAe7V,aAAiB8V,SAAW9V,EAAM2V,GAAe3V,EACtE4V,EAAeC,GACfL,aAAaO,QAAQvW,EAAKlC,KAAKC,UAAUsY,IACxC,MAAO5c,GACRK,QAAQL,MAAMA,MmBuEsB+c,CAAgB,qBAAsB,IAA5E,eAAOL,EAAP,KAAoBC,EAApB,KACA,GAAoCxV,EAAAA,EAAAA,UAAS,IAA7C,eAAO6V,EAAP,KAAmBC,EAAnB,KACMrQ,GAAUS,EAAAA,GAAAA,MAChB,EACC4M,KADOI,EAAR,EAAQA,YAAaG,EAArB,EAAqBA,OAAQD,EAA7B,EAA6BA,aAAcL,EAA3C,EAA2CA,MAAOC,EAAlD,EAAkDA,eAAgBC,EAAlE,EAAkEA,kBAElE,GAA8CjT,EAAAA,EAAAA,YAA9C,eAAO+V,EAAP,KAAwBC,EAAxB,KAIA,GAAgChW,EAAAA,EAAAA,WAAS,GAAzC,eAAOiW,EAAP,KAAiBC,EAAjB,KAGMC,GAAsB5f,EAAAA,EAAAA,UAG3B,kBACC8N,EAAAA,EAAAA,KAAI0Q,GAAa,SAACjgB,GAAD,MAAW,CAC3BshB,gBACC,gBAAC,EAAA5V,UAAD,CAAWG,cAAc,aAAaiM,YAAY,cACjD,gBAAC,EAAAM,QAAD,CAASmJ,WAAW,cACnB,gBAAC,EAAA1B,KAAD,CAAMviB,KAAM0C,EAAK1C,QAElB,gBAAC,EAAAkI,KAAD,KAAOxF,EAAKN,QAGdA,MAAOM,EAAKN,MACZoL,MAAO9K,EAAKV,YAEd,CAAC2gB,IAGF,GAA8B/U,EAAAA,EAAAA,UAAqD,IAAnF,eAAOsW,EAAP,KAAgBC,EAAhB,MAGA/W,EAAAA,EAAAA,YAAU,WAERwW,EADGlB,EACgB,SAAC0B,GAAD,aAClB1B,EAAY1gB,SAAUoiB,MAAAA,OAAtB,EAAsBA,EAAW5W,QAAjC,WACGlM,EAAAA,EAAAA,MAAKyiB,GAAqB,SAACtL,GAAD,OAAOA,EAAEjL,QAAUkV,EAAY1gB,gBAD5D,QAGG+hB,MAAAA,OAHH,EAGGA,EAAsB,IAGPA,MAAAA,OAAD,EAACA,EAAsB,MAExC,CAACrB,EAAaqB,KAEjB3W,EAAAA,EAAAA,YAAU,WACLuW,GAAmB1C,IAAW0C,EAAgBnW,OAAOwT,EAAa2C,EAAgBnW,SACpF,CAACyT,EAAQ0C,EAAiB3C,IAC7B,OAA0CpT,EAAAA,EAAAA,WAAS,GAAnD,eAAOyW,EAAP,KAAsBC,EAAtB,KAEA,GAAoC1W,EAAAA,EAAAA,UAAS+S,GAA7C,eAAO4D,EAAP,KAAmBC,EAAnB,KACMC,IAAYtgB,EAAAA,EAAAA,UACjB,4BACCogB,EAAWG,OAAS,IACnB,UAAA5B,EAAStL,eAAT,eAAkBmN,eAAe,UAAA7B,EAAStL,eAAT,mBAAkBmN,mBAAlB,eAA+BD,QAAS,IAC3E,CAACH,EAAWG,SAEPE,IAAc7W,EAAAA,EAAAA,cAAY,WACT,MAAlB+U,EAAStL,UACZsL,EAAStL,QAAQqN,UAAY,GAC7B,UAAA/B,EAAStL,eAAT,SAAkBsK,SAEnBgC,GAAY,GACZU,EAAc,IACd3D,GAAkB,GAClBC,EAAY,IACZ4C,EAAc,MACZ,CAAC7C,EAAmBC,IAEjBgE,IAAW/W,EAAAA,EAAAA,cAAY,WAC5B+S,GAAY,SAACiE,GACZ,IAAMC,EAAMlC,MAAAA,OAAH,EAAGA,EAAUtL,QAGtB,GADIwN,IAAKA,EAAIH,UAAY,IACrBpB,EAAWiB,OAAS,EAAG,CAC1B,IAAMO,EAAgB,GAAH,gBACfV,IADe,SAEftS,EAAAA,EAAAA,KAAIwR,MAAAA,OAAD,EAACA,EAAYlZ,MAAM,MAAM,SAACtL,GAAD,MAAW,CAAEmD,MAAOnD,EAAMimB,WAAW,QAIrE,OAFAV,EAAcS,GACdvB,EAAc,KACPziB,EAAAA,EAAAA,QACNgkB,GACA,SAAC/jB,EAAKikB,GAIL,OAHK7jB,EAAAA,EAAAA,MAAKyjB,GAAc,SAACK,GAAD,OAA2BA,EAAEhjB,QAAU+iB,EAAK/iB,UACnElB,EAAI6S,KAAKoR,GAEHjkB,KAERlC,EAAAA,EAAAA,QACC+lB,GACA,SAACM,GAAD,OACCA,EAAMC,kBACJhkB,EAAAA,EAAAA,MAAKijB,GAAY,SAACa,GAAD,OAA2BA,EAAEhjB,QAAUijB,EAAMjjB,aAKpE,OADAshB,EAAc,KACPziB,EAAAA,EAAAA,QACNsjB,GACA,SAACrjB,EAAKikB,GAIL,OAHK7jB,EAAAA,EAAAA,MAAKyjB,GAAc,SAACK,GAAD,OAA2BA,EAAEhjB,QAAU+iB,EAAK/iB,UACnElB,EAAI6S,KAAKoR,GAEHjkB,KAERlC,EAAAA,EAAAA,QACC+lB,GACA,SAACM,GAAD,OACCA,EAAMC,kBACJhkB,EAAAA,EAAAA,MAAKijB,GAAY,SAACa,GAAD,OAA2BA,EAAEhjB,QAAUijB,EAAMjjB,iBAIhEsgB,MAAAA,OAAA,EAAAA,EAAavhB,OAAQ1E,GACxB4W,EAAQU,KAAR,WAAiBtX,EAAjB,YAAkCknB,MAAAA,OAAlC,EAAkCA,EAAiBnW,QAEpDqV,GAAmB,KAEjB,CAAC/B,EAAa4B,MAAAA,OAAd,EAAcA,EAAavhB,IAAKsiB,EAAYc,EAAYlR,EAASsQ,MAAAA,OAAjE,EAAiEA,EAAiBnW,QAE/E+X,IAAiBphB,EAAAA,EAAAA,UACtB,kBACCnF,EAAAA,EAAAA,QAAOmkB,GAAa,SAACqC,GAAD,OAAOA,EAAErkB,OAAQwiB,MAAAA,OAAV,EAAUA,EAAiBnW,UACpDiY,UACAxT,KAAI,SAAChT,GAAD,UAAC,MACFA,GADC,IAEJimB,WAAW,EACXlK,SAAU4F,EACVxG,MAAO,WACNoK,GAAc,SAACkB,GAAD,yBAA6BA,GAA7B,IAAC,MAAoCzmB,GAArC,IAA2CimB,WAAW,iBAGxE,CAACvB,MAAAA,OAAD,EAACA,EAAiBnW,MAAO2V,EAAaqB,EAAe5D,IAGhD+E,IAAgB5X,EAAAA,EAAAA,cACrB,SAAC/B,EAA0B0Z,GACtB1Z,EAAO2Y,aAAe3Y,EAAO2Y,YAAYD,OAAS,EACrDP,EACCoB,GACEvmB,QACA,SAACwmB,GAAD,aACqD,KAApD,UAAAA,EAAEpjB,aAAF,eAASwjB,QAAQ5Z,EAAO2Y,iBACvBrjB,EAAAA,EAAAA,MAAKokB,GAAG,SAACjN,GAAD,OAAOA,EAAEjL,QAAUgY,EAAEpjB,YAE/ByjB,MAAM,EAAG,IAGZ1B,EAAWoB,GAAeM,MAAM,EAAG,MAGrC,CAACN,KAGIO,IAAgB/X,EAAAA,EAAAA,cACrB,SAACgY,GAAa,MAEZ,UAAAA,EAASA,EAASrB,OAAS,UAA3B,SAA+BtiB,OAA/B,MACAuhB,GAAAA,EAAiBnW,SAChBlM,EAAAA,EAAAA,MAAKikB,IAAgB,SAACC,GAAD,aAAOA,EAAEpjB,SAAF,UAAY2jB,EAASA,EAASrB,OAAS,UAAvC,aAAY,EAA+BtiB,WAExEghB,GACC,SACC5V,GADD,yBAGIA,GAHJ,CAIC,CACCA,MAAOuY,EAASA,EAASrB,OAAS,GAAGtiB,MACrCA,MAAO2jB,EAASA,EAASrB,OAAS,GAAGtiB,MACrCpC,KAAM,eACNmB,IAAKwiB,EAAgBnW,MACrBzO,GAAI,GAAF,OAAKyO,EAAMkX,QACbQ,WAAW,QASfV,EAAcuB,GACdlD,GAAmB,KAEpB,CAAC0C,GAAgB5B,MAAAA,OAAjB,EAAiBA,EAAiBnW,MAAO4V,IAGpC4C,IAAcjY,EAAAA,EAAAA,cACnB,SAACkY,GAC8B,KAA1BA,EAAGja,OAAO2Y,YACbb,GAAY,GACDD,GACXC,GAAY,GAEbJ,EAAcuC,EAAGja,OAAO2Y,aACxBgB,GAAcM,EAAGja,OAAQ2U,KAE1B,CAACA,EAAOgF,GAAe9B,KAGxBzW,EAAAA,EAAAA,YAAU,WACT,GAAIuW,MAAAA,GAAAA,EAAiBnW,MAAO,CAC3B,IAAM0Y,GAAclnB,EAAAA,EAAAA,QACnBumB,IACA,SAACY,GAAD,OAAgBA,MAAAA,OAAA,EAAAA,EAAYhlB,OAAQwiB,EAAgBnW,SACnDqY,MAAM,EAAG,GAEX1B,EAAW+B,MAEV,CAACX,GAAgB5B,MAAAA,OAAjB,EAAiBA,EAAiBnW,QAErC,IAAM4Y,IAAoBrY,EAAAA,EAAAA,cACzB,SAACsY,GACAzC,GAAmBtiB,EAAAA,EAAAA,MAAKyiB,GAAqB,SAAC9kB,GAAD,OAAUA,EAAKuO,QAAU6Y,OAGlE3D,MAAAA,OAAA,EAAAA,EAAavhB,OAAQ1E,GACxB4W,EAAQU,KAAR,WAAiBtX,EAAjB,YAAkC4pB,MAGpC,CAAC3D,MAAAA,OAAD,EAACA,EAAavhB,IAAKkS,EAAS0Q,IAE7B,IAA0CnW,EAAAA,EAAAA,WAAS,GAAnD,iBAAO0Y,GAAP,MAAsBC,GAAtB,MACMC,IAAezD,EAAAA,EAAAA,WAiBrB3V,EAAAA,EAAAA,YAAU,WACT,IAAM4X,EAAMlC,EAAStL,QACfiP,EAAW,SAACR,GACF,UAAXA,EAAGjZ,KACNtE,YAAW,kBAAM6d,IAAiB,KAAO,IAM3C,OAHIvB,GACHA,EAAI0B,iBAAiB,QAASD,GAExB,WACFzB,GACHA,EAAI2B,oBAAoB,QAASF,MAGjC,CAAC3B,MAEJ1X,EAAAA,EAAAA,YAAU,WACLkZ,KACHxB,KACAyB,IAAiB,MAEhB,CAACzB,GAAUwB,KAWd,IAAMM,IAAiBziB,EAAAA,EAAAA,UAAQ,mBAAQ+f,EAAQQ,OAAS,IAAMb,IAAU,CAACK,EAASL,IAE5EgD,IAAc1iB,EAAAA,EAAAA,UACnB,kBACCkgB,GAAiBV,EACdrK,EAAE,4BAA6B,qDAC/BA,EAAE,0BAA2B,uBAAwB,CACrD2H,OAAQ0C,MAAAA,OAAF,EAAEA,EAAiBvhB,UAE7B,CAACkX,EAAGqK,EAAiBU,IAGhByC,IAAyB3iB,EAAAA,EAAAA,UAC9B,kBACCsgB,IAAaZ,EACVvK,EAAE,eAAgB,sBAClBA,EAAE,uBAAwB,mCAC9B,CAACmL,GAAWnL,EAAGuK,IAEVkD,IAAwB5iB,EAAAA,EAAAA,UAAQ,WACrC,OAAIye,GAAmB2B,EAAWG,OAAS,EACnCpL,EAAE,eAAgB,gBAEtB+K,EACI/K,EACN,mCACA,kDAGEqH,EAAM+D,OAAS,EACXpL,EAAE,6BAA8B,uCAEjCA,EAAE,8BAA+B,0CACtC,CAACA,EAAGsJ,EAAiB2B,EAAWG,OAAQL,EAAe1D,EAAM+D,SAE1DsC,IAAYjZ,EAAAA,EAAAA,cACjB,SAACkZ,GAGA,GAFAnD,GAAY,GACZJ,EAAc,IACVC,MAAAA,GAAAA,EAAiBnW,MAAO,CAC3B,IAAM0Y,GAAclnB,EAAAA,EAAAA,QACnBumB,IACA,SAACY,GAAD,OAAgBA,MAAAA,OAAA,EAAAA,EAAYhlB,QAAQwiB,MAAAA,OAApB,EAAoBA,EAAiBnW,UACpDqY,MAAM,EAAG,GAEX1B,EAAW+B,GAEZ,MAAO,CACN9jB,MAAO6kB,EAAQ9T,OACf+R,WAAW,EACXgC,YAAa,MAGf,CAAC3B,GAAgB5B,MAAAA,OAAjB,EAAiBA,EAAiBnW,SAGnCJ,EAAAA,EAAAA,YAAU,WACToX,GAAcvS,EAAAA,EAAAA,KAAI0O,GAAO,SAAC+E,GAAD,UAAC,MAAYA,GAAb,IAAgB1K,SAAU4F,UACjD,CAACA,EAAgBD,IAEpB,IAAMwG,IAAWpZ,EAAAA,EAAAA,cAAY,kBAAMuW,GAAiB,KAAO,IACrD8C,IAAcrZ,EAAAA,EAAAA,cAAY,kBAAMuW,GAAiB,KAAQ,IACzD+C,IAAqBljB,EAAAA,EAAAA,UAAQ,kBAAO0f,IAAoBY,KAAY,CAACA,GAAWZ,IAEtF,OACC,gBAAC,EAAAzV,UAAD,CAAWoM,YAAY,aAAawH,SAAS,IAAIgD,IAAKwB,IACrD,gBAAC,EAAAc,QAAD,CACCtM,UAAW4F,EACX2G,SAAS,OACTnlB,MAAOkX,EACN,+BACA,sDAGD,gBAAC,EAAAlL,UAAD,CAAWoM,YAAY,aAAa5E,MAAM,QACzC,gBAAC,EAAAxH,UAAD,CAAW4T,SAAS,QAAQpM,MAAM,QACjC,gBAAC,EAAAxH,UAAD,CAAWoM,YAAY,aAAa5E,MAAM,QACzC,gBAAC,EAAAxH,UAAD,CAAWwH,MAAM,OAChB,gBAAC,EAAA4R,OAAD,CACCxM,SAAU4F,EACV9hB,MAAOilB,EACPtJ,WAAW,QACXgN,wBAAwB,YACxBrlB,MAAOkX,EAAE,gBAAiB,UAC1B8K,UAAWT,EACX+D,SAAUtB,GACVuB,aAAc/F,GACdpT,MAAO,CAAEoZ,SAAU,QACnBhpB,MAAM,OACNgpB,SAAS,WAGX,gBAACjG,GAAD,CAAiBnH,YAAY,cAC5B,gBAAC+G,GAAD,CACCvG,SAAU4F,EACVkC,SAAUA,EACVtV,MAAO+W,EACPsD,MAAOb,GACP9C,QAASA,EACT2C,YAAaA,GACbiB,mBAAmB,EACnBC,oBAAoB,EACpBC,WAAY,CAAC,SACbvN,WAAYmG,EAAiB,QAAU,QACvCpS,MAAO,CACN4T,OAAQ,UACR6F,UAAW,UAEZP,SAAU5B,GACVE,YAAaA,GACbkC,oBAAqB,EACrBC,OAAQf,GACRgB,QAASjB,GACTP,eAAgBA,GAChByB,oBAAoB,QAMtBhB,IACD,gBAAC,EAAAvM,QAAD,CAASwH,KAAK,SACb,gBAAC,EAAAgF,QAAD,CAASllB,MAAO0kB,GAAwBwB,UAAU,UACjD,gBAACpH,GAAD,CACClG,SAAUqM,GACVrnB,KAAK,mBACLuoB,UAAU,UACVxN,QAAS6J,OAMb,gBAAC,EAAA9J,QAAD,CAASwH,KAAK,SACb,gBAAC,EAAAgF,QAAD,CACCC,SAAS,OACTvM,SAAU4F,EACVxe,MAAO2kB,GACPuB,UAAU,UAEV,gBAAC,EAAAnH,WAAD,CACCnhB,KAAK,SACLgb,WAAY4H,GAAmB2B,EAAWG,OAAS,GACnD8D,gBAAgB,UAChBD,UAAU,QACVxN,QAAS+J,WCteJ2D,I,SAAiD,SAAC,GAAoB,MAAlB/F,EAAkB,EAAlBA,YAChE,GAAYrJ,EAAAA,EAAAA,KAALC,GAAP,eACM3U,GAAWsO,EAAAA,GAAAA,MACXzD,EAAUoD,GAAW,CAAE8P,YAAAA,EAAa/d,SAAAA,GAAYjI,EAAac,KACnE,GAAwBoQ,EAAAA,EAAAA,WAAS,GAAjC,eAAO8L,EAAP,KAAagP,EAAb,KACMC,GAAgBxkB,EAAAA,EAAAA,UACrB,wBACCqL,MAAAA,GADD,UACCA,EAASlO,YADV,aACC,OAAAkO,GACC,SAACnN,GAAD,OAAQA,EAAEumB,SAAUlG,MAAAA,OAAZ,EAAYA,EAAa3jB,KAAMsD,EAAEumB,SAAUlG,MAAAA,OAAZ,EAAYA,EAAavhB,OAAQkB,EAAEgf,aAE5E,CAAC7R,EAASkT,MAAAA,OAAV,EAAUA,EAAavhB,IAAKuhB,MAAAA,OAA5B,EAA4BA,EAAa3jB,KAEpC8pB,EArCqB,SAC3BrZ,EACAkT,GAEA,IAAMrjB,EAAO6E,IAEP4kB,GAAQ3kB,EAAAA,EAAAA,UAAQ,kBAAM4kB,EAAAA,EAAAA,SAAQvZ,EAAS,WAAU,CAACA,IACxD,OAAOrL,EAAAA,EAAAA,UACN,sDACK2kB,EAAK,UAACpG,MAAAA,OAAD,EAACA,EAAavhB,WAAd,QAAqB,WAD/B,QACsC,KADtC,SAEIF,EAAAA,EAAAA,QACF5B,GACA,SAAC6B,EAAKC,EAAKsX,GAAM,MAIhB,OAHItX,EAAIxB,QAAS+iB,MAAAA,OAAb,EAAaA,EAAavhB,OAAO,UAAA2nB,EAAM3nB,EAAIxB,aAAV,eAAiB+kB,QAAS,GAC9DxjB,EAAI6S,KAAJ,MAAA7S,EAAG,CAAM,CAAEpB,KAAM,UAAWsC,MAAO,GAAIrD,GAAI,WAAF,OAAa0Z,KAAnD,gBAA6DqQ,EAAM3nB,EAAIxB,SAEpEuB,IAER,QAGF,CAACwhB,MAAAA,OAAD,EAACA,EAAavhB,IAAK9B,EAAMypB,IAgBDE,CAAoBxZ,EAASkT,GAEhD/I,GAAU5L,EAAAA,EAAAA,cAAY,WAC3B2a,GAAQ,KACN,IACGO,GAASlb,EAAAA,EAAAA,cAAY,WAC1B2a,GAAQ,KACN,IACH,OAAOC,EACN,gBAAC,EAAAO,YAAD,CACC1a,MAAO,CAAEH,OAAQ,QACjBoM,WAAW,UACXrY,MAAK,UAAEumB,MAAAA,OAAF,EAAEA,EAAevmB,aAAjB,QAA0BkX,EAAE,MAAO,OACxCyB,QAAS4N,MAAAA,OAAF,EAAEA,EAAevO,MACxBtb,MAAO+pB,EACP7N,UAAW2N,IAAiBA,MAAAA,OAAlB,EAAkBA,EAAe3N,YAG5C,gBAAC,EAAAmO,SAAD,CAAUrqB,MAAO+pB,EAAkBlP,QAASA,EAASsP,OAAQA,GAC5D,gBAAC,EAAApT,OAAD,CACCrH,MAAO,CAAEH,OAAQ,QACjBoM,WAAW,UACX3b,MAAO+pB,EACPzmB,MAAOkX,EAAE,MAAO,OAChBtZ,KAAM0Z,EAAO,YAAc,mBCa/B,SA/DK,SAAC,GAAkE,IAAhEgJ,EAAgE,EAAhEA,YAAa0G,EAAmD,EAAnDA,gBAAiBC,EAAkC,EAAlCA,kBAAmBpkB,EAAe,EAAfA,SAClDub,GAAaC,EAAAA,EAAAA,iBACb6I,EAAgBpqB,GAAY,SAAC8E,GAAD,OAAOA,EAAE5D,MAAMO,OAAO+jB,OAAS,KACjE,OACC,gBAAC,EAAAtW,UAAD,CACCoM,YAAY,aACZC,WAAW,QACX7E,MAAM,OACNvH,OAAO,OACPkb,UAAU,OACVC,UAAU,OACVjb,cAAc,gBACdoM,QAAS,CACRsJ,WAA2B,YAAfzD,EAA2B,QAAU,aACjDiJ,SAAU,UAGX,gBAAC,EAAArb,UAAD,CAAWoM,YAAY,aAAa5E,MAAM,MAAM2R,SAAS,MAAMhZ,cAAc,iBAC5E,gBAAC,EAAAmb,WAAD,CAAYC,KAAK,UAChB,gBAAC,EAAA7O,QAAD,CAAS/O,MAAM,SACd,gBAAC,EAAAoV,WAAD,CAAYnhB,KAAMopB,EAAkB,QAAU,OAAQrO,QAASsO,MAGjE,gBAAC,EAAAjb,UAAD,CAAWwH,MAAO,IAAKvH,OAAQ,GAAIC,eAAe,cACjD,gBAACxJ,EAAD,CAAWE,QAAS,CAACjH,EAAYG,QAChC,gBAAC,KAAD,CAAMmQ,OAAO,UAEd,gBAACvJ,EAAD,CAAWC,QAAS,CAAChH,EAAYG,QAChC,gBAAC,KAAD,CAAWmQ,OAAO,WAGpB,gBAACvJ,EAAD,CAAWE,QAAS,CAACjH,EAAYG,QAChC,gBAAC,EAAA4c,QAAD,CAASmJ,WAAW,SACnB,gBAACwE,GAAD,CAAgB/F,YAAaA,MAG/B,gBAAC,EAAAgH,WAAD,CAAYC,KAAK,WACfL,GACA,gBAAC7G,GAAD,CACCC,YAAaA,MAOjB,gBAAC,EAAAtU,UAAD,CAAWoM,YAAY,aAAa5E,MAAM,MAAMrH,cAAc,YAC7D,gBAAC,EAAAmb,WAAD,CAAYC,KAAK,WAAW1kB,GAC5B,gBAAC,EAAAykB,WAAD,CAAYC,KAAK,UAChB,gBAAC,EAAAvb,UAAD,CACCoM,YAAY,aACZjM,cAAc,WACdoM,QAAS,CAAE5O,MAAO,oB,aCrElB6d,IAAY7J,EAAAA,GAAAA,SAAO3R,EAAAA,WAAV,2EAAG2R,CAAH,+MAKA,kBAAGvhB,EAAH,EAAGA,MAAH,SAAUigB,MAA0B2C,QAAN,UAAc5iB,MAAAA,OAAd,EAAcA,EAAOI,aAArB,QAA8B,WAAW0iB,WA0BtF,UAf4CuI,EAAAA,EAAAA,aAAW,WAAsB7E,GAAtB,MAAGxmB,EAAH,EAAGA,MAAOyG,EAAV,EAAUA,SAAV,OACtD,gBAAC,EAAAmJ,UAAD,CAAWwH,MAAO,GAAIvH,OAAQ,GAAIG,MAAO,CAAEtM,SAAU,YAAc8iB,IAAKA,GACtExmB,EAAMC,MACN,gBAACmrB,GAAD,CAAWprB,MAAOA,EAAO6P,OAAO,MAAMuH,MAAM,OAC1CpX,EAAMG,UACN,gBAAC,EAAAuJ,KAAD,CAAM6V,KAAK,aAAavP,MAAO,CAAEmM,QAAS,UAAWiN,SAAU,QAAUhpB,MAAM,SAA/E,UACEJ,EAAME,aADR,QACiB,GAEd,MAGLuG,MCzBI,IAAM6kB,GAAY,SAACC,EAAmBC,GAApB,OACxBC,EAAAA,EAAAA,cAAaF,EAAIC,GAAItF,OAAS,GAElBwF,GAAa,SACzBxnB,EACAggB,GAEA,IAAMyH,EAAoB9R,OAAOG,OAAOkK,MAAAA,EAAAA,EAAe,IACvD,OAAIhgB,EAAK8Z,iBAAyBsN,GAAUK,EAAmBznB,EAAK8Z,kBAChE9Z,EAAK6Z,iBAAwBuN,GAAUK,EAAmBznB,EAAK6Z,kBAGvD6N,GAAkB,WAC9B,IAAMC,EAAenrB,GAAY,SAAC8E,GAAD,OAAOA,EAAE5D,MAAMK,cAE1CiiB,EAAc1P,KACpB,OAAO7O,EAAAA,EAAAA,UACN,kBAAMnF,EAAAA,EAAAA,QAAOqrB,GAAc,SAAC7E,GAAD,OAAO0E,GAAW1E,EAAG9C,QAChD,CAACA,EAAa2H,K,ykBCChB,IAAMC,IAAmBvK,EAAAA,GAAAA,SAAO3R,EAAAA,WAAV,yFAAG2R,CAAH,wHACP,gBAAGtB,EAAH,EAAGA,MAAO8L,EAAV,EAAUA,OAAV,OAA+B9L,EAAM2C,QAAQmJ,EAAS,QAAU,SAASjJ,WAIxE,gBAAG7C,EAAH,EAAGA,MAAO8L,EAAV,EAAUA,OAAV,OAA+B9L,EAAM2C,QAAQmJ,EAAS,QAAU,SAAS7I,SAGzE,gBAAGjD,EAAH,EAAGA,MAAO8L,EAAV,EAAUA,OAAV,OAA+B9L,EAAM2C,QAAQmJ,EAAS,QAAU,SAASzI,SAInF0I,IAAuBzK,EAAAA,GAAAA,SAAO3R,EAAAA,WAAV,6FAAG2R,CAAH,iCACC,qBAAGtB,MAA0B2C,QAAQqJ,MAAMnJ,WAGhEoJ,GAAsB,WAC3B,OAA8B3Z,EAAAA,EAAAA,YAAWuD,IAAjCC,EAAR,EAAQA,OAAQG,EAAhB,EAAgBA,UACRY,GAAoBvE,EAAAA,EAAAA,YAAW4D,IAA/BW,gBAER,OAAIkK,EAAAA,EAAAA,SAAQjL,GAAgB,KAE3B,gBAAC,EAAA4M,WAAD,CACCoH,UAAU,UACVvoB,KAAM0U,EAAY,YAAc,gBAChCqG,QAASzF,EACTyI,KAAK,WAeF4M,GAAkD,SAAC,GAAD,IAAGjoB,EAAH,EAAGA,KAAM6nB,EAAT,EAASA,OAAQxP,EAAjB,EAAiBA,QAAjB,OACvD,gBAACuP,GAAD,CACC9P,YAAY,aACZjM,cAAc,aACdF,OAAO,OACP0M,QAASA,GAET,gBAAC,GAAD,CAAWvc,MAAOkE,EAAKlE,OACK,iBAAnBkE,EAAKT,UACZ,gBAAC,EAAAsgB,KAAD,CAAMviB,KAAM0C,EAAKT,UAAWrD,MAAO2rB,EAAS,UAAY,OAAQxM,KAAK,UAErE,gBAACrb,EAAKT,UAAN,CAAgBsoB,OAAQA,KAG1B,gBAAC,EAAAzP,QAAD,CAAS/O,MAAM,SACd,gBAAC,EAAA7D,KAAD,CAAMtJ,MAAO2rB,EAAS,UAAY,QAAS7nB,EAAKN,UAK7CwoB,GAA6C,SAAC,GAAD,IAAGloB,EAAH,EAAGA,KAAM6nB,EAAT,EAASA,OAAQxP,EAAjB,EAAiBA,QAAjB,OAClD,gBAAC,EAAAuM,QAAD,CAASllB,MAAOM,EAAKN,MAAOkmB,UAAU,QAAQtb,IAAKtK,EAAK3D,IACvD,gBAAC,GAAD,CAAWP,MAAOkE,EAAKlE,OACK,iBAAnBkE,EAAKT,UACZ,gBAAC,EAAAkf,WAAD,CACCnhB,KAAM0C,EAAKT,UACXumB,gBAAiB+B,EAAS,QAAU,QACpChC,UAAWgC,EAAS,UAAY,OAChCxP,QAASA,EACTgD,KAAK,UAGN,gBAACrb,EAAKT,UAAN,CAAgBsoB,OAAQA,OAMtBM,GAA+D,SAAC,GAAD,IAAGnoB,EAAH,EAAGA,KAAH,OACpEyC,IACC,gBAAC,GAAD,CAAoB6H,IAAKtK,EAAK3D,GAAI8R,IAAKnO,EAAKvB,KAC3C,gBAACmpB,GAAD,CACC9P,YAAY,aACZjM,cAAc,aACdF,OAAO,OACP0M,QAASrY,EAAKqY,SAEd,gBAAC,EAAA3M,UAAD,CAAWwH,MAAO,GAAIvH,OAAQ,GAAIG,MAAO,CAAEtM,SAAU,aACzB,iBAAnBQ,EAAKT,UACZ,gBAAC,EAAAsgB,KAAD,CAAMviB,KAAM0C,EAAKT,UAAW8b,KAAK,UAEjC,gBAACrb,EAAKT,UAAN,OAGF,gBAAC,EAAA6Y,QAAD,CAAS/O,MAAM,SACd,gBAAC,EAAA7D,KAAD,KAAOxF,EAAKN,UAKf,gBAAC,EAAAklB,QAAD,CAASllB,MAAOM,EAAKN,MAAOkmB,UAAU,QAAQtb,IAAKtK,EAAK3D,IACvD,gBAAC,GAAD,CAAoBiO,IAAKtK,EAAK3D,GAAI8R,IAAKnO,EAAKvB,KAChB,iBAAnBuB,EAAKT,UACZ,gBAAC,EAAAkf,WAAD,CACCnhB,KAAM0C,EAAKT,UACXumB,gBAAgB,QAChBD,UAAU,OACVxN,QAASrY,EAAKqY,QACdgD,KAAK,UAGN,gBAACrb,EAAKT,UAAN,SA8FL,SAxFuD,SAAC,GAAoB,IAAlBygB,EAAkB,EAAlBA,YACnDoI,EAAkB5rB,GAAY,SAAC8E,GAAD,OAAOA,EAAE5D,MAAMC,cAEnD,GAA4BuN,EAAAA,EAAAA,UAAiC,IAA7D,eAAOzN,EAAP,KAAe4qB,EAAf,KACM1X,GAAUS,EAAAA,GAAAA,OAEhB1G,EAAAA,EAAAA,YAAU,WACT2d,GAAU,SAAC5gB,GAAD,OACT2gB,EAAgB7pB,QAAO,SAACC,EAAKskB,GAG5B,OADKtkB,EAAIskB,EAAEzmB,MAAKmC,EAAIskB,EAAEzmB,IAAMymB,EAAExjB,OACvBd,IACLiJ,QAEF,CAAC2gB,KACJ1d,EAAAA,EAAAA,YAAU,WACLsV,GACHqI,GAAU,SAAC5gB,GAAD,UAAC,MAAYA,GAAb,cAAiBuY,EAAY3jB,IAAKoU,EAAAA,EAAAA,MAAKE,EAAQ1O,SAAS2F,SAAU,YAE3E,CAACoY,EAAarP,EAAQ1O,SAAS2F,SAAUwgB,IAC5C,IAAME,EAA2B9rB,GAAY,SAAC8E,GAAD,OAAOA,EAAE5D,MAAMQ,yBACtDqqB,GAAc9mB,EAAAA,EAAAA,UACnB,kBACCrC,EAAAA,EAAAA,SACC9C,EAAAA,EAAAA,QAAOgsB,GAA0B,SAACxF,GAAD,OAAO0E,GAAW1E,EAAG9C,MACtD,cAEF,CAACA,EAAasI,IAEf,OACC,gBAACR,GAAD,CACC5U,MAAOzQ,IAAY,MAAQ,GAC3BkJ,OAAO,OACPoM,WAAW,QACXD,YAAY,WACZjM,cAAc,aACdD,eAAe,cAEf,gBAAC,EAAAoM,IAAD,CACCnM,cAAc,aACdD,eAAe,aACfkM,YAAY,WACZ6H,oBAAkB,EAClB6I,KAAK,SACL1c,MAAO,CAAE+a,UAAW,MAAO9a,UAAW,YAEtC,gBAAC3J,EAAD,CAAWC,QAAS,CAAChH,EAAYG,SAC/B+T,EAAAA,EAAAA,KAAI6Y,GAAiB,SAACpoB,GAAD,OAErBA,EAAKP,QACJ,gBAACwoB,GAAD,CACC3d,IAAKtK,EAAK3D,GACVgc,QAAS,kBAAY1H,EAAQU,KAAR,WAAiB5T,EAAOuC,EAAK3D,OAClD2D,KAAMA,EACN6nB,QAAQ7H,MAAAA,OAAA,EAAAA,EAAa3jB,MAAO2D,EAAK3D,KAE/B,SAGN,gBAAC+F,EAAD,CAAWE,QAAS,CAACjH,EAAYG,SAC/B+T,EAAAA,EAAAA,KAAI6Y,GAAiB,SAACpoB,GAAD,OAErBA,EAAKP,QACJ,gBAACyoB,GAAD,CACC5d,IAAKtK,EAAK3D,GACVgc,QAAS,kBAAY1H,EAAQU,KAAR,WAAiB5T,EAAOuC,EAAK3D,OAClD2D,KAAMA,EACN6nB,QAAQ7H,MAAAA,OAAA,EAAAA,EAAa3jB,MAAO2D,EAAK3D,KAE/B,UAIP,gBAAC,EAAA2b,IAAD,CACCnM,cAAc,WACdiM,YAAY,WACZ0Q,KAAK,SACL1c,MAAO,CAAE+a,UAAW,MAAO9a,UAAW,YAErCwc,EAAYhZ,KAAI,SAACuT,GAAD,OAChB,gBAACqF,GAAD,CAA4BnoB,KAAM8iB,EAAGxY,IAAKwY,EAAEzmB,QAE7C,gBAAC2rB,GAAD,SC7NJ,IAAMS,GAAkBpL,GAAAA,QAAAA,IAAAA,WAAH,sEAAGA,CAAH,yKAOA,qBAAGtB,MAA0B2C,QAAQgK,MAAM9J,WAG1C,qBAAG7C,MAA0B2C,QAAQgK,MAAM1J,SAI3D2J,GAAStL,GAAAA,QAAAA,IAAAA,WAAH,6DAAGA,CAAH,4TAYS,qBAAGtB,MAA0B2C,QAAQgK,MAAM9J,WAE3C,qBAAG5H,KAA2B,GAAK,KAElC,qBAAG+E,MAA0B2C,QAAQgK,MAAM1J,SAG3C,qBAAGjD,MAA0B2C,QAAQgK,MAAMb,UAIpDe,GAAuE,SAAC,GAAD,IACnF5R,EADmF,EACnFA,KACAqB,EAFmF,EAEnFA,QAFmF,OAInF,gBAACoQ,GAAD,KACC,gBAACE,GAAD,CAAQtQ,QAASA,EAASrB,KAAMA,GAC/B,gBAAC,EAAA6I,KAAD,CAAMxE,KAAK,SAAS/d,KAAK,mBC7CfurB,IAAqBpsB,EAAAA,EAAAA,IAAwB,SAACC,GAAD,MAAU,CACnEuqB,KAAM,SACNnS,aAASrO,EACTqiB,mBAAmB,EACnBC,QAAS,SAAC9B,GAAD,OACRvqB,GAAI,SAAC4E,GAAD,MAAQ,CAAE2lB,KAAAA,EAAM6B,kBAA4B,SAAT7B,GAA0B3lB,EAAEwnB,uBACpEE,WAAY,SAAClU,GAAD,OAAmBpY,EAAI,CAAEoY,QAAAA,KACrCmU,qBAAsB,SAACH,GAAD,OAAsCpsB,EAAI,CAAEosB,kBAAAA,SCLtDI,GAAS,kBACrB3iB,GAAAA,WAEEN,UAAUrM,EAFZ2M,CAE0B,aAAc,CACtCJ,MAAO,sBAEPY,MAAK,WACLS,MAAM,oBACJT,MAAK,SAAClC,GAAD,OAASA,KACdkC,KAAKhF,OCHJonB,GAA4C,SAAC,GAAa,IAAXnpB,EAAW,EAAXA,KACpD,EAA+C6oB,KAAvC5B,EAAR,EAAQA,KAAM8B,EAAd,EAAcA,QAASjU,EAAvB,EAAuBA,QAASkU,EAAhC,EAAgCA,WAC1B3Q,GAAUhN,EAAAA,EAAAA,cAAY,WAE3B0d,EAAQjU,IAAY9U,EAAK3D,IAAuB,SAAT4qB,EAAT,OAAoC,UAClE+B,EAAWhpB,EAAK3D,MACd,CAACyY,EAASmS,EAAM+B,EAAYD,EAAS/oB,EAAK3D,KAC7C,MAA2B,iBAAhB2D,EAAK+Z,OAEd,gBAAC,EAAA6K,QAAD,CAASllB,MAAOM,EAAKN,MAAOkmB,UAAU,cACrC,gBAAC,EAAAnH,WAAD,CACCnhB,KAAM0C,EAAK+Z,OACX8L,UAAW/Q,IAAY9U,EAAK3D,GAAK,UAAY,OAC7Cgc,QAASA,EACTgD,KAAK,WAKF,gBAACrb,EAAK+Z,OAAN,CAAakN,KAAMA,EAAM8B,QAASA,KAG7BK,GAAsB,WAClC,IAAM1rB,EAAQgqB,KACd,GAAY/Q,EAAAA,EAAAA,KAALC,GAAP,eACMyS,GAAe5nB,EAAAA,EAAAA,UACpB,iBAAM,CACL,CACCpF,GAAI,WACJqD,MAAOkX,EAAE,iBAAkB,YAC3Bc,MAAO,kCACNzN,GAAiB/F,WAAWgG,iCADtB,aACN,EAAuDgI,SAAStY,EAAhE,CACC,aACA,CAAEwY,MAAOwE,EAAE,iBAAkB,eAE/BtZ,KAAM,wBAEP,CACCjB,GAAI,SACJqD,MAAOkX,EAAE,oBAAqB,eAC9Bc,MAAO,WACNnR,GAAAA,WAA2BN,UAAUrM,EAArC2M,CAA2E,OAAQ,CAClFJ,MAAO,oBAGT7I,KAAM,WAEP,CACCjB,GAAI,OACJqD,MAAOkX,EAAE,sBAAuB,iBAGhCc,MAAO,aACPY,UAAU,EACVhb,KAAM,eAEP,CACCjB,GAAI,SACJqD,MAAOkX,EAAE,eAAgB,UACzBc,MAAOwR,GACP5rB,KAAM,aAGR,CAACsZ,IAEF,OACC,gBAAC,EAAAlL,UAAD,CAAWoM,YAAY,aAAa5E,MAAM,QACxC3D,EAAAA,EAAAA,KAAI7R,GAAO,SAACsC,GAAD,OACX,gBAACmpB,GAAD,CAAgBnpB,KAAMA,EAAMsK,IAAKtK,EAAK3D,QAEvC,gBAAC,EAAAuoB,QAAD,CAASllB,MAAOkX,EAAE,qBAAsB,gBAAiBgP,UAAU,YAClE,gBAAC,EAAAa,SAAD,CAAUrqB,MAAOitB,GAChB,gBAAC,EAAA5K,WAAD,CAAYnhB,KAAK,gBAAgB+d,KAAK,cC3ErCiO,IAAQjM,EAAAA,GAAAA,SAAO3R,EAAAA,WAAV,mEAAG2R,CAAH,uIACD,kBAAgC,WAAhC,EAAG4J,KAAwC,IAAM,MAQjC,qBAAGlL,MAA0B2C,QAAQgK,MAAM9J,WAE/D2K,GAASlM,GAAAA,QAAAA,IAAAA,WAAH,yDAAGA,CAAH,sEAEF,kBAAgC,SAAhC,EAAG4J,KAAsC,IAAM,MAK5CuC,GAAwB,WACpC,MAA+CX,KAAvC5B,EAAR,EAAQA,KAAM8B,EAAd,EAAcA,QAASjU,EAAvB,EAAuBA,QAASkU,EAAhC,EAAgCA,WAC1BtrB,EAAQgqB,KACR+B,GAAehoB,EAAAA,EAAAA,UAAQ,kBAAM7C,EAAAA,EAAAA,MAAKlB,GAAO,SAACsC,GAAD,OAAUA,EAAK3D,KAAOyY,OAAU,CAACA,EAASpX,IAMzF,OALAgN,EAAAA,EAAAA,YAAU,WACuB,MAA1BoK,GAAW2U,GAChBT,EAAU,UAACtrB,EAAM,UAAP,aAAC,EAAUrB,MAEpB,CAACyY,EAAS2U,EAAcT,EAAYtrB,IAChC+rB,EACN,gBAAC,EAAAzC,WAAD,CAAYC,KAAK,WAChB,gBAACsC,GAAD,CAAQtC,KAAMA,GACb,gBAACqC,GAAD,CAAOrC,KAAMA,EAAMpb,cAAc,cAC/B4d,GACA,gBAAC,GAAD,CAAoBtb,IAAKsb,MAAAA,OAAF,EAAEA,EAAcptB,IACtC,gBAACotB,EAAalqB,UAAd,CAAwB0nB,KAAMA,EAAM8B,QAASA,QAM/C,MClCCW,IAAmBrM,EAAAA,GAAAA,SAAO3R,EAAAA,WAAV,0FAAG2R,CAAH,0FAGZ,qBAAGsM,cAA6C,IAAM,MAiEhE,SAxDiD,SAAC,GAAoB,IAAlB3J,EAAkB,EAAlBA,YAC7C4J,EAASf,IAAmB,SAACvnB,GAAD,OAAOA,EAAEwnB,qBACrCe,EAAYhB,IAAmB,SAACvnB,GAAD,OAAOA,EAAE2nB,wBACxCa,GAAmBze,EAAAA,EAAAA,cAAY,kBAAMwe,GAAWD,KAAS,CAACA,EAAQC,IAClEE,EAAoBvtB,GAAY,SAAC8E,GAAD,OAAOA,EAAE5D,MAAME,gBAC/CosB,EAA6BxtB,GAAY,SAAC8E,GAAD,OAAOA,EAAE5D,MAAMS,2BACxDoqB,GAAc9mB,EAAAA,EAAAA,UACnB,kBACCrC,EAAAA,EAAAA,SACC9C,EAAAA,EAAAA,QAAO0tB,GAA4B,SAAClH,GAAD,OAAO0E,GAAW1E,EAAG9C,MACxD,cAEF,CAACA,EAAagK,IAMf,OAJiBvoB,EAAAA,EAAAA,UAChB,kBAAM1B,EAAAA,EAAAA,WAAUgqB,GAAmB,SAAC/pB,GAAD,OAAUA,EAAK3D,MAAO2jB,MAAAA,OAAZ,EAAYA,EAAa3jB,OAAM,IAC5E,CAAC2jB,MAAAA,OAAD,EAACA,EAAa3jB,GAAI0tB,IAED,KACjB,gCACC,gBAACL,GAAD,CACCC,cAAeC,EACfK,KAAK,OACLte,OAAO,OACPmM,YAAY,WACZjM,cAAc,gBACdwM,QAASuR,OAASnjB,EAAYqjB,EAC9Bhe,MAAO,CACNgb,UAAW,qBACX/a,UAAW,SAGZ,gBAAC,EAAAL,UAAD,CAAWG,cAAc,cACxB,gBAAC,MAAD,MACE0D,EAAAA,EAAAA,KAAIwa,GAAmB,SAAC/pB,GAAD,OACvB,gBAAC,MAAD,CAAOsK,IAAKtK,EAAK3D,GAAI4U,KAAI,WAAMjR,EAAKV,QACnC,gBAAC,GAAD,CAAoB6O,IAAKnO,EAAKvB,KAC7B,gBAACuB,EAAKT,UAAN,CAAgB2qB,SAAUN,WAM/B,gBAAC,EAAAle,UAAD,CAAWG,cAAc,WAAWF,OAAO,OACzC4c,EAAYhZ,KAAI,SAACvP,GAAD,OAChB,gBAAC,GAAD,CAAoBsK,IAAKtK,EAAK3D,GAAI8R,IAAKnO,EAAKvB,KAC3C,gBAACuB,EAAKT,UAAN,CAAgB2qB,SAAUN,UAK9B,gBAAChB,GAAD,CAAWvQ,QAASyR,EAAkB9S,KAAM4S,MCpE/C,IAAMO,GAAmB,SAAC,GAAD,IAAG5tB,EAAH,EAAGA,KAAH,OACxBA,EAAK6tB,UACJ,gBAAC,GAAD,CAAoBjc,IAAK5R,EAAKF,IAC7B,gBAACE,EAAK6tB,UAAN,OAEE,MAEU,SAASC,GAAT,GAAuD,IAA7B3D,EAA6B,EAA7BA,gBAAiB4D,EAAY,EAAZA,SACnD3Z,GAAUS,EAAAA,GAAAA,MACV1T,EAAQlB,GAAY,SAAC8E,GAAD,OACzB/C,EAAAA,EAAAA,QACC+C,EAAE7D,QACF,SAACe,EAAKK,GACL,IAAM8f,GAAU/f,EAAAA,EAAAA,MAAK0C,EAAE5D,MAAMC,YAAY,SAACpB,GAAD,OAAUA,EAAKF,KAAOwC,EAAIxC,MAC7D+tB,GAAYxrB,EAAAA,EAAAA,MAAK0C,EAAE5D,MAAME,cAAc,SAACrB,GAAD,OAAUA,EAAKF,KAAOwC,EAAIxC,MAoBvE,OAnBIsiB,GAAWA,EAAQlf,SACtBjB,EAAI6S,KAAK,CACRhV,GAAI,GAAF,OAAKwC,EAAIJ,IAAT,SACFiB,MAAOif,EAAQjf,MACfpC,KAAmC,iBAAtBqhB,EAAQpf,UAAyBof,EAAQpf,UAAY,OAClE8Y,QAAS,kBAAM1H,EAAQU,KAAR,WAAiBxS,EAAIS,SACpClD,MAAOguB,EACJ,CACA,CACC/tB,GAAI+tB,EAAU/tB,GACdqD,MAAO0qB,EAAU/tB,GACjBiB,KAAM,OACN8sB,UAAWA,EAAU7qB,UACrBgrB,gBAAiBJ,KAGlB,KAGE3rB,IAER,OAIF,OACC,gBAAC,EAAAkN,UAAD,CACCC,OAAO,OACPuH,MAAM,MACN6E,WAAW,QACXjM,MAAO,CACNtM,SAAU,WACVogB,KAAM,EACN4K,IAAK,EACLC,OAAQ,IAGT,gBAAC,EAAAC,SAAD,CAAU5S,YAAY,aAAad,KAAM0P,EAAiBiE,UAAU,QACnE,gBAAC,EAAAjf,UAAD,CACCwH,MAAO,IACPvH,OAAO,OACPmM,YAAY,WACZjM,cAAc,gBACdC,MAAO,CACNgb,UAAW,qBACX/a,UAAW,SAGZ,gBAAC,EAAAL,UAAD,CAAWwH,MAAM,OAAOvH,OAAO,MAAMmM,YAAY,WAAWjM,cAAc,iBACzE,gBAAC,EAAA+e,UAAD,CAAWxuB,MAAOsB,KAEnB,gBAAC,EAAAgO,UAAD,CAAWwH,MAAM,OAAOvH,OAAO,MAAMmM,YAAY,WAAWjM,cAAc,YACzE,gBAAC,EAAA+e,UAAD,CAAWxuB,MAAOkuB,IAClB,gBAAC,EAAAlS,QAAD,CAAS2O,SAAS,eCrET,SAAS8D,GAAT,GAA8D,IAAhCnE,EAAgC,EAAhCA,gBAAiB1G,EAAe,EAAfA,YAC7D,OACC,gBAAC,EAAAtU,UAAD,CACCoM,YAAY,aACZC,WAAW,QACX7E,MAAM,MACNvH,OAAO,OACPE,cAAc,aACdD,eAAe,cAEf,gBAAC,EAAAob,WAAD,CAAYC,KAAK,WAChB,gBAAC,GAAD,CAAiBjH,YAAaA,IAC9B,gBAAC,GAAD,CAAmBA,YAAaA,KAEjC,gBAAC,EAAAgH,WAAD,CAAYC,KAAK,UAChB,gBAACoD,GAAD,CAAgB3D,gBAAiBA,EAAiB1G,YAAaA,MCPnE,IAAM8K,IAAezN,EAAAA,GAAAA,SAAOrF,EAAAA,KAAV,kFAAGqF,CAAH,2HAKG,gBAAGtB,EAAH,EAAGA,MAAH,SAAU8L,OACpB9L,EAAM2C,QAAQqJ,MAAMnJ,QAAU7C,EAAM2C,QAAQK,MAAMH,WAKvD6J,IAAkBpL,EAAAA,GAAAA,SAAO3R,EAAAA,WAAV,qFAAG2R,CAAH,sDAGN,qBAAGtB,MAAkB2C,QAAQqJ,MAAMnJ,WACvC,qBAAG7C,MAAkBT,MAAMrD,QAAQuD,cAG/B,SAASuP,GAAT,GAA8C,IAAvBjrB,EAAuB,EAAvBA,IAAKxC,EAAkB,EAAlBA,KAAM0tB,EAAY,EAAZA,SAChD,GAAiC3c,EAAAA,EAAAA,YAAWuD,IAApCC,EAAR,EAAQA,OAAQC,EAAhB,EAAgBA,aAChB,GAAyCzD,EAAAA,EAAAA,YAAW4D,IAA5CI,EAAR,EAAQA,YAAaI,EAArB,EAAqBA,gBACrB,GAAYkE,EAAAA,EAAAA,KAALC,GAAP,eACMyB,GAAUhN,EAAAA,EAAAA,cAAY,kBAAMoH,EAAgB3S,KAAM,CAACA,EAAK2S,IACxDwY,GAAW5f,EAAAA,EAAAA,cAChB,SAACkY,GACAA,EAAG2H,kBACH7Y,EAAYvS,KAEb,CAACA,EAAKuS,IAGP,OACC,gBAAC,EAAA3G,UAAD,CAAWoM,YAAY,MAAM5E,MAAM,MAAM2R,SAAS,QAChD/S,IAAiBhS,EAAM,gBAAC,GAAD,MAAsB,KAC9C,gBAACgrB,GAAD,CAAcjD,OAAQ/V,IAAiBhS,EAAKmY,QAAS,CAAEC,IAAK,eAC3D,gBAAC,EAAAF,IAAD,CACCrM,OAAO,OACP0M,QAASA,EACTsH,oBAAkB,EAClB9T,cAAc,aACd2c,KAAK,UAEL,gBAAC,EAAA3I,KAAD,CAAMviB,KAAMA,EAAM+d,KAAM2P,IACxB,gBAAC,EAAA5S,QAAD,CAAS/O,MAAM,UACf,gBAAC,EAAAub,QAAD,CAASllB,MAAOmS,EAAO/R,GAAKsS,MAAOwT,UAAU,MAAMf,SAAS,SAC3D,gBAAC,EAAArf,KAAD,CACC6V,KAAK,SACL8P,OAAO,UACPjvB,MAAO4V,IAAiBhS,EAAM,OAAS,YACvCmY,QAAS,CAAE5O,MAAO,SAClB8T,SAAS,YAERtL,EAAO/R,GAAKsS,SAIhB,gBAAC,EAAAgG,QAAD,CAAS/O,MAAM,UACf,gBAAC,EAAAub,QAAD,CAASllB,MAAOkX,EAAE,kBAAmB,aAAcgP,UAAU,OAC5D,gBAAC,EAAAnH,WAAD,CACCoH,UAAU,YACVvoB,KAAK,QACL+a,QAAS4S,EACTnf,MAAO,CAAEmM,QAAS,MAAO/E,MAAO,OAAQvH,OAAQ,a,gBCnEhDyf,GAAiB/N,GAAAA,QAAAA,IAAAA,WAAH,oEAAGA,CAAH,yDACR,SAAC1W,GAAD,OAAYA,EAAM5K,KAAO,QAAU,UAMhC,SAASsvB,GAAT,GAA2B,IAAPvrB,EAAO,EAAPA,IAClC,GAAiCuO,EAAAA,EAAAA,YAAWuD,IAApCC,EAAR,EAAQA,OAAQC,EAAhB,EAAgBA,aAChB,GAAkB5G,EAAAA,EAAAA,WAAS,kBAAMogB,EAAAA,GAAAA,IAAoB,CAAEC,eAAgB,CAAC1Z,EAAO/R,GAAKqS,UAA7ExB,GAAP,eACQ6B,GAAgBnE,EAAAA,EAAAA,YAAW4D,IAA3BO,YACFgZ,EAAahvB,GAAY,SAAC8E,GAAD,OAAOA,EAAE5D,MAAMI,SACxC2tB,GAAgBra,EAAAA,GAAAA,MAChB3T,GAASgE,EAAAA,EAAAA,UACd,kBACC8N,EAAAA,EAAAA,KAAIic,GAAY,SAACxrB,GAAD,OACf,gBAAC,MAAD,CAAOsK,IAAKtK,EAAK3D,GAAI4U,KAAI,WAAMjR,EAAKV,QACnC,gBAAC,GAAD,CAAoBgL,IAAKtK,EAAK3D,GAAI8R,IAAKnO,EAAKvB,KAC3C,gBAACuB,EAAKT,UAAN,CAAgBksB,cAAeA,WAInC,CAACD,EAAYC,IAqBd,OAlBA/gB,EAAAA,EAAAA,YAAU,WACT,IAAMghB,EAAW/a,EAAQgb,QAAO,YAAkB,IAAf1pB,EAAe,EAAfA,SAC9B,UAAGA,EAAS2F,UAAZ,OAAuB3F,EAAShE,QAAhC,OAAyCgE,EAASiP,QAAWW,EAAO/R,GAAKqS,KAC5EK,EAAY1S,EAAD,UAASmC,EAAS2F,UAAlB,OAA6B3F,EAAShE,QAAtC,OAA+CgE,EAASiP,UAGrE,OAAO,WACNwa,OAEC,CAAC7Z,EAAQlB,EAAS7Q,EAAK0S,KAE1B9H,EAAAA,EAAAA,YAAU,WACT,IAAMkhB,EAAIjb,EAAQ1O,SACd,UAAG2pB,EAAEhkB,UAAL,OAAgBgkB,EAAE3tB,QAAlB,OAA2B2tB,EAAE1a,QAAWW,EAAO/R,GAAKqS,KACvDxB,EAAQU,KAAKQ,EAAO/R,GAAKqS,OAExB,CAACrS,EAAK+R,EAAQlB,IAGhB,gBAACya,GAAD,CAAgBrvB,KAAM+V,IAAiBhS,GACtC,gBAAC,MAAD,CAAQ6Q,QAASA,GAAUlT,I,+NClC9B,SAASouB,GAAT,GAAyE,IAArDC,EAAqD,EAArDA,KAAMha,EAA+C,EAA/CA,aAAcW,EAAiC,EAAjCA,gBAAiBV,EAAgB,EAAhBA,UAAW6E,EAAK,EAALA,EAC7Dja,EAAO4E,IACPwqB,GAAkB1L,EAAAA,EAAAA,UACxB,GAAiD2L,EAAAA,EAAAA,gBAAeD,EAAiBha,GAAjF,eAAOka,EAAP,KAAwBC,EAAxB,KAOA,OALAC,EAAAA,EAAAA,kBAAgB,WACfD,MAEE,CAACJ,EAAM/Z,EAAWga,EAAgBjX,UAGpC,gBAAC,EAAAkD,IAAD,CAAKwQ,KAAK,SAAS7c,OAAO,OAAOE,cAAc,aAAa8T,oBAAkB,GAC7E,gBAAC,EAAA3H,IAAD,CACCsK,IAAKyJ,EACLpgB,OAAO,OACPE,cAAc,aACdC,MAAO,CAAEqR,SAAU,UACnBjK,MAAM,oBAEL4Y,IACAvc,EAAAA,EAAAA,KAAIuc,GAAM,SAACM,GAAD,eACT,gBAACrB,GAAD,CACCzgB,IAAK8hB,EAAI9hB,IACTxK,IAAKssB,EAAI9hB,IACThN,KAAI,UAAEX,MAAAA,GAAF,UAAEA,EAAOyvB,EAAI3tB,YAAb,aAAE,EAAiBnB,YAAnB,QAA2B,eAC/B0tB,SAAS,cAIZiB,EAAkB,GAClB,gCACC,gBAAC,EAAAvgB,UAAD,CAAWwH,MAAM,MAAM+E,QAAS,CAAEsJ,WAAY,aAAcwF,SAAU,eACrE,gBAAC,EAAArb,UAAD,CAAWwH,MAAM,MAAMmZ,OAAO,OAAOtU,WAAW,WAEjD,gBAAC,EAAA6M,QAAD,CAASllB,MAAOkX,EAAE,kBAAmB,mBAAoBgP,UAAU,OAClE,gBAAC,EAAAa,SAAD,CACCvT,MAAM,MACNpH,MAAO,CAAEwgB,SAAU,KACnBlwB,OAAOmT,EAAAA,EAAAA,MAAI4T,EAAAA,EAAAA,OAAM2I,GAAOG,IAAkB,SAACG,GAAD,MAAU,CACnD/vB,GAAI+vB,EAAI9hB,IACR5K,MAAO0sB,EAAIha,MACX9U,KAAM8uB,EAAI9uB,KACVoa,MAAO,kBAAMjF,EAAgB2Z,EAAI9hB,MACjC6U,SAAUiN,EAAI9hB,MAAQwH,OAGvB,gBAAC,EAAAqB,OAAD,CACC/V,KAAK,QACLlB,MAAM,YACNwD,MAAK,WAAMusB,GACXhU,QAAS,CAAEC,IAAK,oBAUxB,IAAMkT,GAAiB/N,GAAAA,QAAAA,IAAAA,WAAH,4EAAGA,CAAH,8HASjB,qBAAGtL,YAEJ7W,EAAAA,GAAAA,KADS,8DAKR,qBAAG8W,YAEJ9W,EAAAA,GAAAA,KADS,sBAKLqxB,IAAQlP,EAAAA,GAAAA,SAAO3R,EAAAA,WAAV,8EAAG2R,CAAH,kKAUR,qBAAGtL,YAEJ7W,EAAAA,GAAAA,KADS,8EAOLsxB,IAAcnP,EAAAA,GAAAA,SAAOrF,EAAAA,KAAV,oFAAGqF,CAAH,MACXoP,IAAuBpP,EAAAA,GAAAA,SAAOrF,EAAAA,KAAV,6FAAGqF,CAAH,mBAGpBqP,IAAarP,EAAAA,GAAAA,SAAOoB,EAAAA,YAAV,mFAAGpB,CAAH,MACVsP,IAAUtP,EAAAA,GAAAA,SAAOrF,EAAAA,KAAV,gFAAGqF,CAAH,MAEE,SAASuP,KAAiB,YACxC,GAAYjW,EAAAA,EAAAA,KAALC,GAAP,eACA,GAAoEvI,EAAAA,EAAAA,YAAWuD,IAA/Dib,EAAhB,EAAQhb,OAAqBC,EAA7B,EAA6BA,aAAcC,EAA3C,EAA2CA,UAAWC,EAAtD,EAAsDA,UACtD,GACC3D,EAAAA,EAAAA,YAAW4D,IADJU,EAAR,EAAQA,gBAAiBC,EAAzB,EAAyBA,gBAAiBL,EAA1C,EAA0CA,gBAAiBE,EAA3D,EAA2DA,gBAG3D,GAAuBhR,EAAAA,EAAAA,UACtB,kBACClD,EAAAA,EAAAA,QACCsuB,GACA,SAACruB,EAAKV,EAAOgvB,GACZ,cAAyBtuB,EAAzB,GAAOuuB,EAAP,KAAcC,EAAd,KAGA,OAFAD,EAAM1b,K,uWAAN,EAAa/G,IAAKwiB,GAAYhvB,IAC9BkvB,EAAQ3b,KAAK,gBAACga,GAAD,CAAU/gB,IAAKwiB,EAAShtB,IAAKgtB,KACnCtuB,IAER,CAAC,GAAI,OAEP,CAACquB,IAZF,eAAOf,EAAP,KAAaja,EAAb,KAcA,OAAKia,EAAK9J,OAET,gBAAC,GAAD,CAAgBjQ,UAAWA,EAAWC,UAAWA,GAChD,gBAACua,GAAD,CAAOxU,WAAW,QAAQnM,eAAe,QAAQmG,UAAWA,GAC3D,gBAACya,GAAD,CAAazU,WAAW,SACvB,gBAAC,EAAAK,QAAD,CAASF,IAAI,cACZ,gBAAC,EAAA0M,QAAD,CAASllB,MAAOkX,EAAE,aAAc,cAAegP,UAAU,OACxD,gBAAC8G,GAAD,CAAYpvB,KAAK,uBAAuB+a,QAASzF,MAGnD,gBAACiZ,GAAD,CACCC,KAAMA,EACN/Z,UAAWA,EACXD,aAAcA,EACdW,gBAAiBA,EACjBmE,EAAGA,IAEJ,gBAAC+V,GAAD,CAAS1U,QAAS,CAAEC,IAAK,gBACvB,UAAArG,EAAOC,UAAP,mBAAsB/S,eAAtB,eAA+BkuB,gBAC/B,gBAAC,EAAA7U,QAAD,CAAS/O,MAAM,cACd,gBAAC,EAAAoV,WAAD,CACCnhB,KAAM,uBACN+a,QAAO,UAAExG,EAAOC,UAAT,iBAAE,EAAsB/S,eAAxB,aAAE,EAA+BkuB,iBAS3C,gBAAC,EAAA7U,QAAD,CAAS/O,MAAM,cACd,gBAAC,EAAAub,QAAD,CACCllB,MACCqS,EACG6E,EAAE,eAAgB,gBAClBA,EAAE,gBAAiB,iBAEvBgP,UAAU,OAEV,gBAAC,EAAAnH,WAAD,CACCnhB,KAAMyU,EAAY,kBAAoB,gBACtCsG,QAAS1F,MAIZ,gBAAC,EAAAiS,QAAD,CAASllB,MAAOkX,EAAE,mBAAoB,uBAAwBgP,UAAU,OACvE,gBAAC,EAAAnH,WAAD,CAAYnhB,KAAK,eAAe+a,QAAS9F,OAI5C,gBAAC,EAAAgG,QAAD,CAASzM,MAAO,CAAEH,OAAQ,SAC1B,gBAAC8gB,GAAD,CAAsB9M,oBAAkB,GAAE9N,KApDpB,KCpI1B,IAAMqb,GAAa7P,GAAAA,QAAAA,IAAAA,WAAH,kEAAGA,CAAH,6IACD,qBAAGtB,MAAkB2C,QAAQyO,MAAMvO,WAWlD,SAASwO,KACR,IAAQlS,GAAuB7M,EAAAA,EAAAA,YAAW0M,IAAlCG,mBACFld,EAAWuL,KAMjB,OALAmB,EAAAA,EAAAA,YAAU,WAAM,UACT2iB,EAAe,qBACpBzuB,EAAAA,EAAAA,MAAI,UAACZ,MAAAA,OAAD,EAACA,EAAU2I,aAAX,QAAoB,GAAI,CAAC,OAAQ,8BADjB,aACpB,EAA6DlC,gBADzC,QACqD,OAC1EyW,EAAmBmS,KACjB,CAACnS,EAAoBld,IACjB,KAGD,SAASsvB,KACf,OAA0CpiB,EAAAA,EAAAA,WAAS,GAAnD,eAAOqiB,EAAP,KAAsBC,EAAtB,KACMxN,EAAc1P,KAEpB,OACC,gBAAC4c,GAAD,KACC,gBAACE,GAAD,MAEA,gBAAC,GAAD,CACCpN,YAAaA,EACb0G,gBAAiB6G,EACjB5G,kBAAmB,kBAAM6G,GAAkBD,KAE3C,gBAACnE,GAAD,OAED,gBAAC,EAAApR,IAAD,CAAKpM,eAAe,QAAQE,MAAO,CAAEtM,SAAU,WAAY8sB,SAAU,MACpE,gBAACzB,GAAD,CAAoB7K,YAAaA,EAAa0G,gBAAiB6G,IAC/D,gBAAC5P,GAAD,CAAkBqC,YAAaA,IAC/B,gBAACwJ,GAAD,OAED,gBAAC,EAAAxC,WAAD,CAAYC,KAAK,WAChB,gBAAC2F,GAAD,QAMW,SAASa,KACvB,OACC,gBAAC5P,GAAD,KACC,gBAAC,EAAAhP,aAAD,KACC,gBAAC,EAAAC,gBAAD,KACC,gBAACwe,GAAD,SC3DL,IAAMI,GAAoB,WACzB,IAAM/c,GAAUS,EAAAA,GAAAA,MAEVuc,GAAiBtf,EAAAA,EAAAA,YAAWuf,EAAAA,wBAE5BC,GAAcxf,EAAAA,EAAAA,YAAWyf,EAAAA,qBAQ/B,OAPAvjB,GAAU,CACTJ,UAAW,CACVyG,WAAY,kBAAMD,GAClBgd,eAAAA,EACAE,YAAAA,KAGK,MAWR,SAR+B,kBAC9B,gBAAC,GAAAE,cAAD,CAAeC,SAAUvyB,GACxB,gBAACiyB,GAAD,MACA,gBAAC,GAAD,MACA,gBAACD,GAAD,Q,ykBCrBF,IAAMvU,GAAU,SAAC5a,EAAO8O,GACvB,OAAQA,EAAOhQ,MACd,IAAK,YAeJ,OAdoB,SAChBkB,GADa,IAEhBuT,OAAQ,IAAF,UACJzE,EAAO6gB,QAAQC,SAAW,CAC1B/b,IAAK/E,EAAO6gB,QAAQ9b,IACpBC,MAAOhF,EAAO6gB,QAAQ7b,MACtBrT,QAASqO,EAAO6gB,QAAQlvB,QACxBN,IAAK2O,EAAO6gB,QAAQxvB,MAElBH,EAAMuT,QAEVC,aAAc1E,EAAO6gB,QAAQC,SAC7Blc,WAAW,IAIb,IAAK,eACJ,IAAImc,EAAkB7vB,EAAMwT,aACtBsc,EAAYzY,OAAOC,KAAKtX,EAAMuT,QAC9Bwc,EAAiBjhB,EAAO6gB,SAAW7gB,EAAO6gB,QAAQ3jB,KAAQhM,EAAMwT,aACtE,GAAIxT,EAAMwT,eAAiBuc,EAAe,CACzC,IAAMC,EAAoBF,EAAUlL,QAAQmL,GAC5CF,EAAkBC,EAAUE,EAAoB,EAAIA,EAAoB,EAAI,GAE7E,gBACIhwB,GADJ,IAECuT,QAAQ0c,EAAAA,EAAAA,QAAOjwB,EAAMuT,QAAQ,SAAC/T,EAAOwM,GAAR,OAAgBA,IAAQ+jB,KACrDtc,UAAgC,IAArBqc,EAAUpM,QAAuB1jB,EAAMyT,UAClDD,aAAcqc,IAGhB,IAAK,oBACJ,gBACI7vB,GADJ,IAECuT,OAAQ,GACRE,WAAW,IAGb,IAAK,eACJ,IAAKzT,EAAMuT,OAAOzE,EAAO6gB,QAAQ3jB,KAAM,OAAOhM,EAC9C,IAAMkwB,EAAgB,MAAKlwB,EAAMuT,QAGjC,OAFIzE,EAAO6gB,QAAQ9b,MAAKqc,EAAcphB,EAAO6gB,QAAQ3jB,KAAK6H,IAAM/E,EAAO6gB,QAAQ9b,KAC3E/E,EAAO6gB,QAAQ7b,QAAOoc,EAAcphB,EAAO6gB,QAAQ3jB,KAAK8H,MAAQhF,EAAO6gB,QAAQ7b,OACnF,SACI9T,GADJ,IAECuT,OAAQ2c,IAGV,IAAK,uBACJ,IAAMA,EAAgB,MAAKlwB,EAAMuT,QAGjC,OAFIzE,EAAO6gB,QAAQ9b,MAAKqc,EAAclwB,EAAMwT,cAAcK,IAAM/E,EAAO6gB,QAAQ9b,KAC3E/E,EAAO6gB,QAAQ7b,QAAOoc,EAAclwB,EAAMwT,cAAcM,MAAQhF,EAAO6gB,QAAQ7b,OACnF,SACI9T,GADJ,IAECuT,OAAQ2c,IAGV,IAAK,oBACJ,gBACIlwB,GADJ,IAECwT,aAAc1E,EAAO6gB,QAAQ3jB,MAG/B,IAAK,oBACJ,gBACIhM,GADJ,IAECyT,WAAYzT,EAAMyT,YAGpB,IAAK,mBACJ,gBACIzT,GADJ,IAEC0T,WAAY1T,EAAM0T,YAGpB,QAEC,OADA5N,QAAQqqB,KAAK,4CACNnwB,IAIK,SAASowB,GAAT,GAA4C,IAAZnsB,EAAY,EAAZA,SAC9C,GAAYoU,EAAAA,EAAAA,KAALC,GAAP,eACA,GAA+B+X,EAAAA,EAAAA,YAAWzV,GAAS,CAClDrH,OAAQ,GACRC,aAAc,EACdC,WAAW,EACXC,WAAW,IAJZ,eAAO4c,EAAP,KAAmBC,EAAnB,KAOM3c,GAAW7G,EAAAA,EAAAA,cAChB,SAAC8G,EAAKpT,EAASN,GAAQ,MAChByvB,EAjGDY,OAAOjmB,KAAKC,OAASimB,KAAKC,MAAsB,IAAhBD,KAAKE,UAAmB,IA4G7D,OAVAJ,EAAS,CACRzxB,KAAM,YACN6wB,QAAS,CACR9b,IAAK,IAAF,QAAM1B,EAAAA,EAAAA,MAAK0B,EAAK,MACnBC,MAAK,UAAErT,MAAAA,OAAF,EAAEA,EAASqT,aAAX,QAAoBwE,EAAE,UAAW,WACtC7X,QAAAA,EACAmvB,SAAAA,EACAzvB,IAAAA,KAGKyvB,IAER,CAACtX,IAEIvE,GAAchH,EAAAA,EAAAA,cAAY,SAACf,GAChCukB,EAAS,CAAEzxB,KAAM,eAAgB6wB,QAAS,CAAE3jB,IAAAA,OAC1C,IACGgI,GAAqBjH,EAAAA,EAAAA,cAAY,WACtCwjB,EAAS,CAAEzxB,KAAM,mBACf,IACGmV,GAAkBlH,EAAAA,EAAAA,cAAY,WACnCwjB,EAAS,CAAEzxB,KAAM,wBACf,IACGoV,GAAcnH,EAAAA,EAAAA,cAAY,SAACf,EAAK6H,EAAKC,GAC1Cyc,EAAS,CAAEzxB,KAAM,eAAgB6wB,QAAS,CAAE3jB,IAAAA,EAAK6H,IAAAA,EAAKC,MAAAA,OACpD,IACGM,GAAqBrH,EAAAA,EAAAA,cAAY,SAAC8G,EAAKC,GAC5Cyc,EAAS,CAAEzxB,KAAM,uBAAwB6wB,QAAS,CAAE9b,IAAAA,EAAKC,MAAAA,OACvD,IACGK,GAAkBpH,EAAAA,EAAAA,cAAY,SAACf,GACpCukB,EAAS,CAAEzxB,KAAM,oBAAqB6wB,QAAS,CAAE3jB,IAAAA,OAC/C,IACGqI,GAAkBtH,EAAAA,EAAAA,cAAY,WACnCwjB,EAAS,CAAEzxB,KAAM,wBACf,IACGwV,GAAkBvH,EAAAA,EAAAA,cAAY,WACnCwjB,EAAS,CAAEzxB,KAAM,uBACf,IAEG8xB,GAAeztB,EAAAA,EAAAA,UACpB,iBAAO,CACNyQ,SAAAA,EACAG,YAAAA,EACAC,mBAAAA,EACAC,gBAAAA,EACAC,YAAAA,EACAC,gBAAAA,EACAE,gBAAAA,EACAC,gBAAAA,EACAF,mBAAAA,KAED,CACCR,EACAK,EACAF,EACAC,EACAG,EACAE,EACAC,EACAJ,EACAE,IAIIyc,GAAc1tB,EAAAA,EAAAA,UACnB,iBAAO,CACNyI,0BAA2B,CAC1BgI,SAAU,SAAC/D,GAAD,OAAS,SAAC8C,EAAMlS,GAAY,MACrCmT,EAASjB,EAAMlS,EAAP,UAAgBA,MAAAA,OAAhB,EAAgBA,EAASN,WAAzB,QAAgC0P,MAG1ChE,UAAW,CACVkI,YAAAA,EACAC,mBAAAA,EACAE,YAAAA,EACAC,gBAAAA,EACAC,mBAAAA,EACA0c,qBAAsBxc,MAGxB,CACCV,EACAG,EACAC,EACAG,EACAG,EACAJ,EACAE,IAKF,OAFAnI,GAAU4kB,GAGT,gBAACvd,GAAkBjD,SAAnB,CAA4B7D,MAAO8jB,GAClC,gBAAC3c,GAAmBtD,SAApB,CAA6B7D,MAAOokB,GAAe3sB,IC9KtD,SAhBkG,SAAC,GAAD,IACjGA,EADiG,EACjGA,SACA6L,EAFiG,EAEjGA,YACAE,EAHiG,EAGjGA,aAHiG,OAKjG,gBAACP,GAAoBY,SAArB,CACC7D,MAAO,CACNwD,aAAAA,EACAF,YAAAA,IAGD,gBAACQ,GAAA,EAAD,CAAiBH,KAAML,EAAYihB,gBAClC,gBAACX,GAAD,KAAuBnsB,M,oDCbL+sB,GAAAA,W,oDACc,K,qBAEzB,M,4CAET,WAA4B,MAC3B,OAAOC,KAAK7gB,WAAL,UAAgB9M,WAAhB,QAA8B,CAAE3E,KAAMrD,M,uBAG9C,SAAiB41B,GACZD,KAAKC,SAAWA,IACnBD,KAAKC,OAASA,GACdriB,EAAAA,EAAAA,SAAQoiB,KAAKE,QAAQ,SAACC,GACrBA,EAAQC,eAAeH,S,wBAM1B,SAAkBI,GACjB,GAAIL,KAAKE,OAAOG,EAAkB3yB,MACjC,OAAOsyB,KAAKE,OAAOG,EAAkB3yB,MAEtC,IAAM4yB,EAAUC,GAAAA,GAAAA,iBACVC,EACLH,EAAkB3yB,OAASrD,EACxBo2B,4EACAC,EAAAA,EAAAA,WAAWL,EAAqC5yB,cAAc6K,MAAM,MAAM+L,KAAK,KAyBnF,OAxBAic,EAGEK,IAAIC,GAAAA,GAMJtpB,KAAK,CACLupB,IAAKb,KAAKC,OACVa,YAAa,KACbC,OAAO,EACPC,cAAe,CACdC,aAAa,GAEdC,kBAAmB,SAACL,EAAKM,EAAIpmB,EAAKqmB,GACjCvsB,QAAQqqB,KAAR,wCAA8CnkB,EAA9C,OAEDsmB,QAAS,CACRC,SAAU,GAAF,OAAKd,EAAL,yBAGXR,KAAKE,OAAOG,EAAkB3yB,MAAQ4yB,EAC/BA,M,EApDYP,G,uBCJfwB,IAAgBC,EAAAA,GAAAA,aAAY,CACjC9zB,KAAM,WACN+zB,aAAc,GACdC,SAAU,KAGUC,GAAAA,W,oDACgC,I,8CAEpD,SAAe/iB,GACd,GAAIohB,KAAKE,OAAOthB,EAAIlR,MAAO,OAAOsyB,KAAKE,OAAOthB,MAAAA,OAAZ,EAAYA,EAAKlR,MACnD,IAAMsR,GAAQ4iB,EAAAA,GAAAA,gBAAe,CAC5BC,WAAUC,kBACP,CACAp0B,KAAMkR,EAAIlR,MAGbq0B,WAAYD,iBAET,SAACE,GAAD,OAA0BA,IAAuBC,OAAOC,OAExD,SAACF,GAAD,OAA0BA,KAC7BrY,QAAS,CACRwY,SAAUZ,GAAc5X,WAI1B,OADAqW,KAAKE,OAAOthB,MAAAA,OAAZ,EAAYA,EAAKlR,MAAQsR,EAClBA,M,EArBY2iB,GCKfS,GAAW,kBAChB3T,IAAe,SAAC1c,GAAD,MAAO,CAACA,EAAE2c,MAAO3c,EAAE8c,iBAE7BwT,GAAmB,kBAExB5T,IAAe,SAAC1c,GAAD,MAAO,CAACA,EAAE4c,eAAgB5c,EAAE6c,uBACtC0T,GAAuC,SAAC,GAAc,IAAZnyB,EAAY,EAAZA,MAC/C,GAAYiX,EAAAA,EAAAA,KAALC,GAAP,eACA,EAA6B+a,KAA7B,eAAO1T,EAAP,KAAcG,EAAd,KACA,EAAgCwT,KAAhC,eAAiBE,GAAjB,WAEMC,GAAa1mB,EAAAA,EAAAA,cAAY,WAC9B+S,EAAY,IACZ0T,GAAY,KACV,CAAC1T,EAAa0T,IACjB,OACC,gCACC,gBAAC,EAAApmB,UAAD,CACCoM,YAAY,aACZjM,cAAc,aACdqH,MAAM,OACN6E,WAAW,QACXpM,OAAO,MACPkb,UAAU,OACVC,UAAU,QACVhb,MAAO,CAAEqR,SAAU,UACnBlF,QAAS,CAAEsJ,WAAY,QAASwF,SAAU,WAE1C,gBAAC,EAAArb,UAAD,CAAWwH,MAAM,MAAM4E,YAAY,aAAa0Q,KAAK,OAAO3c,cAAc,cACzE,gBAAC,EAAArG,KAAD,CAAMtJ,MAAM,aAAawD,IAExB6P,EAAAA,EAAAA,KAAI0O,GAAO,SAAC+E,EAAGjN,GAAJ,OACX,gBAAC,EAAAqC,QAAD,CAAS9N,IAAG,UAAKyL,GAAL,OAASiN,EAAEtjB,OAASwY,IAAI,cACnC,gBAAC,EAAA8Z,MAAD,WAAUhP,EAAV,CAAajL,WAAW,iBAI1BkG,MAAAA,OAAA,EAAAA,EAAO+D,QAAS,GAChB,gBAAC,EAAAtW,UAAD,CAAWwH,MAAM,MAAMrH,cAAc,aAAaD,eAAe,cAChE,gBAAC,EAAAuH,OAAD,CACCzT,MAAOkX,EAAE,2BAA4B,gBACrCtZ,KAAK,eACLpB,MAAM,UACNmf,KAAK,QACLje,KAAK,QACLib,QAAS0Z,MAKb,gBAAC,EAAAxZ,QAAD,CAASrc,MAAM,Y,ykBC1DX,ICLM+1B,GAAkB,SAACrb,GAAD,MAAuC,CACrElX,MAAOkX,EAAE,iCAAkC,iBAC3Cva,GAAI,kBAEQ61B,GAAgC,SAACtb,GAAD,MAAuC,CACnFlX,MAAOkX,EAAE,iCAAkC,0BAC3Cva,GAAI,0BAEQ81B,GAAwB,SAACvb,GAAD,MAAuC,CAC3ElX,MAAOkX,EAAE,iDAAkD,0BAC3Dva,GAAI,kBAEQ+1B,GAAwB,SAACxb,GAAD,MAAuC,CAC3ElX,MAAOkX,EAAE,aAAc,UACvBva,GAAI,iBAEQg2B,GAAqB,SAACzb,GAAD,MAAuC,CACxElX,MAAOkX,EAAE,qBAAsB,wBAC/Bva,GAAI,gBAEQi2B,GAAkB,SAAC1b,GAAD,MAAuC,CACrElX,MAAOkX,EAAE,mBAAoB,gBAC7Bva,GAAI,eAEQk2B,GAAoB,SAAC3b,GAAD,MAAuC,CACvElX,MAAOkX,EAAE,2BAA4B,WACrCva,GAAI,YAGQm2B,GAAsB,SAAC5b,GAAD,MAA6C,CAC/Eqb,GAAgBrb,GAChBsb,GAA8Btb,GAC9Bub,GAAsBvb,GACtBwb,GAAsBxb,GACtByb,GAAmBzb,GACnB0b,GAAgB1b,GAChB2b,GAAkB3b,KCdnB,SAlBmB,WAClB,OAAYD,EAAAA,EAAAA,KAALC,GAAP,eACMyB,GAAUhN,EAAAA,EAAAA,cAAY,WAC3B6d,OACE,IACGuJ,GAAehxB,EAAAA,EAAAA,UAAQ,kBAAM8wB,GAAkB3b,KAAI,CAACA,IAC1D,OACC,gBAAC,EAAA8b,eAAD,CACChzB,MAAO+yB,EAAa/yB,MACpB4f,SAAS,yBACTpM,MAAM,MACN7W,GAAIo2B,EAAap2B,IAEjB,gBAAC,EAAA8W,OAAD,CAAQzT,MAAOkX,EAAE,kCAAmC,UAAWyB,QAASA,MCyD3E,GAhEK,SAAC,GAAyB,QAAvBra,EAAuB,EAAvBA,SAAU20B,EAAa,EAAbA,OAEjB,IAD+BtkB,EAAAA,EAAAA,YAAW0M,IAAlCG,oBACoBhQ,EAAAA,EAAAA,UAAQ,qBAClCtM,EAAAA,EAAAA,MAAKZ,EAAS2I,MAAO,CAAC,OAAQ,8BADI,aAClC,EAAsDlC,gBADpB,QAElC,SAFF,eAAOmuB,EAAP,KAAeC,EAAf,KAIA,GAAYlc,EAAAA,EAAAA,KAALC,GAAP,eACMxa,GAAQqF,EAAAA,EAAAA,UACb,iBAAM,CACL,CACC/B,MAAOkX,EAAE,8BAA+B,QACxC9L,MAAO,QAER,CACCpL,MAAOkX,EAAE,iCAAkC,WAC3C9L,MAAO,WAER,CACCpL,MAAOkX,EAAE,kCAAmC,YAC5C9L,MAAO,eAGT,CAAC8L,IAEIkc,GAAmBrxB,EAAAA,EAAAA,UACxB,mCAAM7C,EAAAA,EAAAA,MAAKxC,EAAO,CAAC,QAASw2B,WAA5B,QAAwCx2B,EAAM,KAC9C,CAACw2B,EAAQx2B,IAEJsnB,GAAoBrY,EAAAA,EAAAA,cACzB,SAACyX,GACIA,IAAM8P,IACTC,GAAU,SAACE,GAAD,OAAUjQ,IAAMiQ,EAAMjQ,EAAIiQ,KAEpCJ,EAAO,QAAS,qBAAsB,CAAEl0B,IAAK7E,EAAckR,MAAOgY,OAGpE,CAAC6P,EAAQC,IAUJI,GAAavxB,EAAAA,EAAAA,UAAQ,kBAAMwwB,GAAgBrb,KAAI,CAACA,IACtD,OACC,gBAAC,EAAA8b,eAAD,CACChzB,MAAOszB,EAAWtzB,MAClB4f,SAAS,yBACTpM,MAAM,MACN7W,GAAI22B,EAAW32B,IAEf,gBAAC,EAAAyoB,OAAD,CACC1oB,MAAOA,EACPslB,UAAWoR,EACXpzB,MAAOkX,EAAE,6BAA8B,aACvCoO,SAAUtB,MCSd,GA3DkC,WACjC,IAAM/mB,EAAO6E,IACb,GAAYmV,EAAAA,EAAAA,KAALC,GAAP,eACMmF,GAAQ1N,EAAAA,EAAAA,YAAWgR,EAAAA,cAOnB4T,GAAexxB,EAAAA,EAAAA,UACpB,kBAAM9E,EAAKL,QAAO,SAACmC,GAAD,OAASA,EAAIxB,OAASlD,GAAiB0E,EAAIxB,OAASpD,OACtE,CAAC8C,IAEI81B,GAAehxB,EAAAA,EAAAA,UAAQ,kBAAM4wB,GAAmBzb,KAAI,CAACA,IAC3D,OACC,gCACC,gBAAC,EAAA8b,eAAD,CACChzB,MAAO+yB,EAAa/yB,MACpB4f,SAAS,yBACTpM,MAAM,MACN7W,GAAIo2B,EAAap2B,KAEhBkT,EAAAA,EAAAA,KAAI0jB,GAAc,SAACx0B,GAAD,OAClB,gBAAC,EAAAiN,UAAD,CAAWpB,IAAK7L,EAAIxB,KAAMgb,QAAS,CAAEsJ,WAAY,QAASwF,SAAU,UACnE,gBAAC,EAAArb,UAAD,CAAWoM,YAAY,aAAajM,cAAc,iBACjD,gBAAC,EAAArG,KAAD,KACE/G,EAAIlB,QADN,KACiBkB,EAAIxB,KADrB,KAGA,gBAAC,EAAA2nB,QAAD,CAASgB,UAAU,MAAMlmB,MAAM,iBAC9B,gBAAC,EAAA8F,KAAD,CAAMsG,MAAO,CAAE4T,OAAQ,WAAarH,QAAS,SAAC7P,GAAD,OAzBvB,SAACA,GAC7BA,EAAE0qB,iBACFC,UAAUC,UAAUC,UAAU7qB,EAAEc,OAAO6Y,WAuB6BmR,CAAgB9qB,KAA9E,YACW/J,EAAItB,WAIjB,gBAAC,EAAAuO,UAAD,CACCoM,YAAY,aACZjM,cAAc,gBACdoM,QAAS,CAAEuS,IAAK,aAAc+I,OAAQ,WAEtC,gBAAC,EAAA/tB,KAAD,CAAMtJ,MAAM,aAAauC,EAAI1B,aAC7B,gBAAC,EAAAy2B,MAAD,CACC1oB,MAAM,SACNgB,MAAO,CAENga,gBAAiB/J,EAAM2C,QAAQ+U,QAAQ7U,QAEvC1iB,MAAO6f,EAAM2C,QAAQyO,MAAMvO,YAI9B,gBAAC,EAAArG,QAAD,CAASrc,MAAM,iB,2BCzDrB,SAXuC,SAAC,GAAD,IAAGkW,EAAH,EAAGA,MAAH,OACtC,gCACC,gBAAC,EAAA4F,IAAD,CAAKC,QAAS,CAAEC,IAAK,SAAWrM,cAAc,WAAWD,eAAe,WAAWsH,MAAM,QACxF,gBAAC,EAAA1N,KAAD,CAAM6V,KAAK,QAAQ8P,OAAO,QACxB/Y,IAGH,gBAAC,EAAAgG,QAAD,CAASsb,SAAS,Y,yBCk0BpB,UAz0BerW,EAAAA,GAAAA,SAAO3R,EAAAA,WAAV,+EAAG2R,CAAH,2keA0DkE,GAK5C,IAsGZ,qBAAGtB,MAAkB2C,QAAQK,MAAMH,WACtC,qBAAG7C,MAAkB2C,QAAQgK,MAAM9J,WAMhC,qBAAG7C,MAAkB2C,QAAQK,MAAMK,SACtC,qBAAGrD,MAAkB2C,QAAQC,QAAQC,WAsC7C,qBAAG+U,OAAuB,OAAS,SAmGoB,GAwI/D,yBAqMqB,GAW6C,GAiB9C,IAoKb,qBAAG5X,MAAkB2C,QAAQkV,KAAKhV,WAC5B,qBAAG7C,MAAkBD,MAAN,WACjB,qBAAGC,MAAkBT,MAAMC,KAAKG,UAC9B,qBAAGK,MAAkBD,MAAMqP,OAAOvM,W,ykBCn0B3C,IAWMiV,GAAuB,SAACjd,GAAD,MAAuB,CAC1D,CACClX,MAAOkX,EACN,mEACA,oCAED9L,MAAO,mBAER,CACCpL,MAAOkX,EACN,sEACA,+DAED9L,MAAO,uBAER,CACCpL,MAAOkX,EACN,0EACA,+EAED9L,MAAO,mBAER,CACCpL,MAAOkX,EACN,kEACA,uDAED9L,MAAO,uBAIIgpB,GAAyB,SAACld,GAAD,MAAuB,CAC5D,CACClX,MAAOkX,EAAE,sBAAuB,iBAChC9L,MAAO,eAER,CACCpL,MAAOkX,EAAE,qCAAsC,QAC/C9L,MAAO,UAIIipB,GAA8B,SAC1C/1B,EACAg2B,EACApd,GAEA,IAAIra,EACE03B,EAAuBJ,GAAqBjd,GAmBlD,OAdCra,EAH8D,UAA9DyB,EAAS4E,MAAMsxB,4CAC8C,UAA7Dl2B,EAAS4E,MAAMuxB,0CAER,MAAKF,EAAqB,IAEgB,QAAjDj2B,EAAS4E,MAAMwxB,+BAC8C,SAA7Dp2B,EAAS4E,MAAMuxB,0CAER,MAAKF,EAAqB,IAEgB,eAAjDj2B,EAAS4E,MAAMwxB,+BAC8C,SAA7Dp2B,EAAS4E,MAAMuxB,0CAER,MAAKF,EAAqB,IAE1B,MAAKA,EAAqB,IAE3BnF,OAAOvyB,EAAKy3B,KAGPK,GAAgC,SAC5Cr2B,EACAg2B,EACApd,GAEA,IAAIra,EACE+3B,EAAyBR,GAAuBld,GAOtD,OALCra,EAD0D,SAAvDyB,EAAS4E,MAAM2xB,oCACX,MAAKD,EAAuB,IAE5B,MAAKA,EAAuB,IAG7BxF,OAAOvyB,EAAKy3B,KAGPQ,GAAkB,SAACC,GAAD,OAC9BC,IAAAA,CAAOA,IAAAA,CAAOD,EAAM,qBAAqBE,OAAOlpB,OAAO,sBAE3CmpB,GAAe,SAACH,GAAD,OAC3B,IAAI5rB,KAAK6rB,KAAAA,IAAWD,EAAM,qBAAqBI,QAAQC,YAE3CC,GAAc,SAACN,GAAD,OAC1BC,KAAAA,IAAWD,EAAM,qBAAqBI,QAAQG,QAAQ,OAAOL,MAAMlpB,OAAO,sBAE9DwpB,GAAY,SAACR,GAAD,OACxBC,KAAAA,IAAWD,EAAM,qBAAqBI,QAAQK,MAAM,OAAOP,MAAMlpB,OAAO,sBChGzE0pB,IAAAA,GAqRA,SA/QK,SAAC,GAAwC,IAAtCn3B,EAAsC,EAAtCA,SAAU20B,EAA4B,EAA5BA,OAAQyC,EAAoB,EAApBA,cACjBxe,GAAMD,EAAAA,EAAAA,KAANC,EACR,GAAwC1L,EAAAA,EAAAA,WAAkB,GAA1D,eAAOmqB,EAAP,KAAqBC,EAArB,KACA,GAA8DpqB,EAAAA,EAAAA,aAE5DlN,EAAS4E,MAAM2yB,gCAAiCv3B,EAAS4E,MAAM4yB,iCAFjE,eAAOC,EAAP,KAAgCC,EAAhC,KAMA,GAA8ExqB,EAAAA,EAAAA,UAC7ElN,EAAS4E,MAAM2yB,+BADhB,eAAOI,EAAP,KAA0CC,EAA1C,KAIA,GAAgF1qB,EAAAA,EAAAA,UAC/ElN,EAAS4E,MAAM4yB,gCADhB,eAAOK,EAAP,KAA2CC,EAA3C,KAGA,GAA4B5qB,EAAAA,EAAAA,WAAkB,GAA9C,eAAOyoB,EAAP,KAAeoC,EAAf,KACA,GAA4C7qB,EAAAA,EAAAA,WAAkB,GAA9D,eAAO8qB,EAAP,KAAuBC,EAAvB,KACA,GAAwC/qB,EAAAA,EAAAA,WAAkB,GAA1D,eAAOgrB,EAAP,KAAqBC,EAArB,KACMC,GAAc/qB,EAAAA,EAAAA,cACnB,SAACyX,EAAGvN,GACHod,EAAO,QAASpd,EAAGuN,KAEpB,CAAC6P,IA+CF,OA5CAjoB,EAAAA,EAAAA,YAAU,WACL0qB,GACCK,GACHU,GAAgB,GAChBF,GAAkB,GAClBX,GAAgB,KAEhBW,GAAkB,GAClBE,GAAgB,GAChBb,GAAgB,IAEb3B,IACHiC,EAAiCb,GAAYY,IAC7CS,EACCrB,GAAYY,GACZ,iCAEDG,EAAkCb,GAAUY,IAC5CO,EACCnB,GAAUY,GACV,kCAGDM,GAAgB,MAGjBb,GAAgB,GAChBa,GAAgB,GAChBJ,GAAU,GACVE,GAAkB,MAEjB,CACFj4B,EAAS4E,MAAM2yB,8BACfa,EACAT,EACAE,EACAlC,EACAyB,EACAK,IAOA,gCACC,gBAAC,GAAD,CAASrjB,MAAOwE,EAAE,8CAA+C,iBACjE,gBAAC,EAAAyf,SAAD,CACC32B,MAAOkX,EACN,uDACA,kDAED9L,MAAO2qB,EACPpd,QAbmC,WACrCqd,GAA4BD,IAa1Bnd,UAAW8c,IAEZ,gBAAC,GAAD,CAAQtd,YAAY,aAAa6b,QAAM,EAAChoB,OAAO,MAAME,cAAc,iBAClE,gBAAC,EAAAH,UAAD,CACCE,eAAe,aACfE,MAAO,CAAE+Y,SAAU,OACnB5M,QAAS,CAAEC,IAAK,UAEhB,gBAAC,EAAAE,QAAD,CAASmb,OAAO,cACf,gBAAC,EAAA/tB,KAAD,CAAM6V,KAAK,SAASzE,EAAE,2CAA4C,gBAEnE,gBAAC,KAAD,CACC0B,SAAU+c,EACVvqB,MACC6qB,EACGf,GAAae,GACb,IAAI9sB,KAERytB,MAAM,EACNtR,SAAU,SAACla,GACV8qB,EAAiCpB,GAAgB1pB,IACjDsrB,EAAY5B,GAAgB1pB,GAAQ,iCAEnC4pB,IAAAA,CAAO5pB,GAAOyrB,KAAK3B,GAAaiB,GAAqC,YAAc,IAEnFC,EACCtB,GAAgB,IAAI3rB,KAAK6rB,IAAAA,CAAO5pB,GAAOV,IAAI,EAAG,KAAK0qB,aAEpDsB,EACC5B,GAAgB,IAAI3rB,KAAK6rB,IAAAA,CAAO5pB,GAAOV,IAAI,EAAG,KAAK0qB,YACnD,oCAIH0B,SACC,gBAAC,EAAApe,QAAD,CAASF,IAAI,SACZ,gBAAC,EAAA2H,KAAD,CAAMviB,KAAK,qBAGbm5B,SACC,gBAAC,EAAAre,QAAD,CAASF,IAAI,SACZ,gBAAC,EAAA2H,KAAD,CAAMviB,KAAK,qBAKf,gBAAC,EAAAoO,UAAD,CACCE,eAAe,aACfE,MAAO,CAAE+Y,SAAU,OACnB5M,QAAS,CAAEC,IAAK,UAEhB,gBAAC,EAAAE,QAAD,CAASmb,OAAO,cACf,gBAAC,EAAA/tB,KAAD,CAAM6V,KAAK,SAASzE,EAAE,yCAA0C,cAEjE,gBAAC,KAAD,CACC0B,SAAU+c,EACVqB,WAAY,CAAEC,UAAU,GACxB7rB,MACC+qB,EACGjB,GAAaiB,GACb,IAAIhtB,KAERytB,MAAM,EACNtR,SAAU,SAACla,GACVgrB,EAAkCtB,GAAgB1pB,IAClDsrB,EAAY5B,GAAgB1pB,GAAQ,kCAEnC4pB,IAAAA,CAAO5pB,GAAOyrB,KAAK3B,GAAae,GAAoC,YAAc,IAElFC,EACCpB,GAAgB,IAAI3rB,KAAK6rB,IAAAA,CAAO5pB,GAAO8rB,SAAS,EAAG,KAAK9B,aAEzDsB,EACC5B,GAAgB,IAAI3rB,KAAK6rB,IAAAA,CAAO5pB,GAAO8rB,SAAS,EAAG,KAAK9B,YACxD,mCAIH0B,SACC,gBAAC,EAAApe,QAAD,CAASF,IAAI,SACZ,gBAAC,EAAA2H,KAAD,CAAMviB,KAAK,qBAGbm5B,SACC,gBAAC,EAAAre,QAAD,CAASF,IAAI,SACZ,gBAAC,EAAA2H,KAAD,CAAMviB,KAAK,sBAOhB,gBAAC,EAAAoO,UAAD,CAAWE,eAAe,cACzB,gBAAC,EAAAyqB,SAAD,CACC/d,SAAU0d,EACVt2B,MAAOkX,EAAE,wCAAyC,YAClD9L,MAAO6oB,EACPtb,QAAS,WACR0d,GAAWpC,OAId,gBAAC,GAAD,CAAQ7b,YAAY,aAAa6b,QAAM,EAAChoB,OAAO,MAAME,cAAc,iBAClE,gBAAC,EAAAH,UAAD,CACCE,eAAe,aACfE,MAAO,CAAE+Y,SAAU,OACnB5M,QAAS,CAAEC,IAAK,UAEhB,gBAAC,EAAAE,QAAD,CAASmb,OAAO,cACf,gBAAC,EAAA/tB,KAAD,CAAM6V,KAAK,SAASzE,EAAE,2CAA4C,iBAEnE,gBAAC,KAAD,CACC0B,SAAU4d,EACVzB,MAAM,EACN3pB,MACC6qB,EACGf,GAAae,GACb,IAAI9sB,KAERytB,MAAI,EACJtR,SAAU,SAACla,GACV8qB,EAAiCpB,GAAgB1pB,IACjDsrB,EAAY5B,GAAgB1pB,GAAQ,iCAEnC4pB,IAAAA,CAAO5pB,GAAOyrB,KAAK3B,GAAaiB,GAAqC,YAAc,IAEnFC,EACCtB,GAAgB,IAAI3rB,KAAK6rB,IAAAA,CAAO5pB,GAAOV,IAAI,EAAG,KAAK0qB,aAEpDsB,EACC5B,GAAgB,IAAI3rB,KAAK6rB,IAAAA,CAAO5pB,GAAOV,IAAI,EAAG,KAAK0qB,YACnD,oCAIH0B,SACC,gBAAC,EAAApe,QAAD,CAASF,IAAI,SACZ,gBAAC,EAAA2H,KAAD,CAAMviB,KAAK,qBAGbm5B,SACC,gBAAC,EAAAre,QAAD,CAASF,IAAI,SACZ,gBAAC,EAAA2H,KAAD,CAAMviB,KAAK,qBAKf,gBAAC,EAAAoO,UAAD,CACCE,eAAe,aACfE,MAAO,CAAE+Y,SAAU,OACnB5M,QAAS,CAAEC,IAAK,UAEhB,gBAAC,EAAAE,QAAD,CAASmb,OAAO,cACf,gBAAC,EAAA/tB,KAAD,CAAM6V,KAAK,SAASzE,EAAE,yCAA0C,eAEjE,gBAAC,KAAD,CACC0B,SAAU4d,EACVzB,MAAM,EACN3pB,MACC+qB,EACGjB,GAAaiB,GACb,IAAIhtB,KAERytB,MAAI,EACJtR,SAAU,SAACla,GACVgrB,EAAkCtB,GAAgB1pB,IAClDsrB,EAAY5B,GAAgB1pB,GAAQ,kCAEnC4pB,IAAAA,CAAO5pB,GAAOyrB,KAAK3B,GAAae,GAAoC,YAAc,IAElFC,EACCpB,GAAgB,IAAI3rB,KAAK6rB,IAAAA,CAAO5pB,GAAO8rB,SAAS,EAAG,KAAK9B,aAEzDsB,EACC5B,GAAgB,IAAI3rB,KAAK6rB,IAAAA,CAAO5pB,GAAO8rB,SAAS,EAAG,KAAK9B,YACxD,mCAIH2B,SACC,gBAAC,EAAAre,QAAD,CAASF,IAAI,SACZ,gBAAC,EAAA2H,KAAD,CAAMviB,KAAK,wBC/PnB63B,IAAAA,GAkMA,SA7LK,SAAC,GAAyB,IAAvBn3B,EAAuB,EAAvBA,SAAU20B,EAAa,EAAbA,OACT/b,GAAMD,EAAAA,EAAAA,KAANC,EACR,GAA0C1L,EAAAA,EAAAA,UACY,SAArDlN,EAAS4E,MAAMi0B,mCADhB,eAAOzB,EAAP,KAAsB0B,EAAtB,KAGA,GAA8E5rB,EAAAA,EAAAA,UAC7ElN,EAAS4E,MAAMm0B,4BADhB,eAAOC,EAAP,KAAwCC,EAAxC,KAIA,GACC/rB,EAAAA,EAAAA,UAAiBlN,EAAS4E,MAAMs0B,oCADjC,eAAOC,EAAP,KAAgDC,EAAhD,KAGA,GAAkElsB,EAAAA,EAAAA,WAAkB,GAApF,eAAOmsB,EAAP,KAAkCC,EAAlC,KACA,GAAoDpsB,EAAAA,EAAAA,UACU,SAA7DlN,EAAS4E,MAAMuxB,2CADhB,eAAOoD,EAAP,KAA2BC,EAA3B,KAIA,GAAkDtsB,EAAAA,EAAAA,WAAkB,GAApE,eAAOusB,EAAP,KAA0BC,EAA1B,KAEMtB,GAAc/qB,EAAAA,EAAAA,cACnB,SAACyX,EAAGvN,GACHod,EAAO,QAASpd,EAAGuN,KAEpB,CAAC6P,KAGFjoB,EAAAA,EAAAA,YAAU,WAER4sB,GADGlC,KAKF,CACFA,EACAp3B,EAAS4E,MAAM2yB,8BACfa,EACAsB,EACAJ,IAGD,IA4BMK,GAAuBl2B,EAAAA,EAAAA,UAAQ,kBFhGF,SAACmV,GAAD,MAAuB,CAC1D,CACClX,MAAOkX,EAAE,2CAA4C,qBACrD9L,MAAO,QAER,CACCpL,MAAOkX,EAAE,kDAAmD,4BAC5D9L,MAAO,UEyFmC8sB,CAAqBhhB,KAAI,CAACA,IAC/Dqd,GAAuBxyB,EAAAA,EAAAA,UAAQ,kBAAMoyB,GAAqBjd,KAAI,CAACA,IAC/D0d,GAAyB7yB,EAAAA,EAAAA,UAAQ,kBAAMqyB,GAAuBld,KAAI,CAACA,IACnE6b,GAAehxB,EAAAA,EAAAA,UAAQ,kBAAM0wB,GAAsBvb,KAAI,CAACA,IAC9D,OACC,gBAAC,EAAA8b,eAAD,CACChzB,MAAO+yB,EAAa/yB,MACpB4f,SAAS,yBACTpM,MAAM,MACN7W,GAAIo2B,EAAap2B,IAEjB,gBAAC,EAAAqP,UAAD,CAAWE,eAAe,WAAWqM,QAAS,CAAEC,IAAK,UACpD,gBAAC,EAAA4M,OAAD,CACC1oB,MAAOu7B,EACP5f,WAAW,QACXrY,MAAOkX,EAAE,sBAAuB,iBAChCoO,SAAU,SAACla,GACVsrB,EAAYtrB,EAAO,qCACnBgsB,GAAkB1B,IAEnBtC,iBACsD,SAArD90B,EAAS4E,MAAMi0B,kCACZc,EAAqB,GACrBA,EAAqB,KAG1B,gBAAC,EAAAvf,QAAD,CAASoS,IAAI,QAAQtX,MAAM,QAC1B,gBAAC,EAAA2kB,MAAD,CACC7S,SAAU,SAACxc,GACVyuB,EAAmCzuB,EAAEc,OAAOwB,OAC5CsrB,EAAY5tB,EAAEc,OAAOwB,MAAO,+BAE7BgtB,aAAa,KACbp4B,MAAOkX,EAAE,mDAAoD,uBAC7DkP,gBAAgB,QAChBhb,MAAOksB,GAAmC,GAC1C1e,UAAW8c,KAGb,gBAAC,EAAAhd,QAAD,CAASoS,IAAI,QAAQtX,MAAM,QAC1B,gBAAC,EAAA4R,OAAD,CACCxM,UAAW8c,EACXh5B,MAAO63B,EACPlc,WAAW,QACXrY,MAAOkX,EAAE,iDAAkD,oBAC3DoO,SAAU,SAACla,GAzEe,IAACgY,EAAAA,EA0EHhY,EAzE5B0sB,GAAsB,GAEZ,oBAAN1U,GACHsT,EAAY,QAAS,8CACrBA,EAAY,QAAS,6CACrBA,EAAY,OAAQ,kCACJ,oBAANtT,GACVsT,EAAY,aAAc,iCAC1BA,EAAY,OAAQ,6CACpBA,EAAY,QAAS,8CACrBoB,GAAsB,IACN,wBAAN1U,GACVsT,EAAY,MAAO,iCACnBA,EAAY,QAAS,6CACrBA,EAAY,OAAQ,8CACpBoB,GAAsB,KAEtBpB,EAAY,OAAQ,8CACpBA,EAAY,OAAQ,iCACpBA,EAAY,QAAS,+CAwDlBtD,iBAAkB,CAGjBpzB,MAAOq0B,GAA4B/1B,EAAU,QAAS4Y,GAGtD9L,MAAOipB,GAA4B/1B,EAAU,QAAS4Y,OAIxD2gB,GACA,gBAAC,EAAAnf,QAAD,CAASoS,IAAI,QAAQtX,MAAM,QAC1B,gBAAC,EAAA2kB,MAAD,CACC7S,SAAU,SAACxc,GACV4uB,EAA2C5uB,EAAEc,OAAOwB,OACpDsrB,EAAY5tB,EAAEc,OAAOwB,MAAO,uCAE7BgtB,aAAa,KACbp4B,MAAOkX,EACN,4DACA,4CAEDkP,gBAAgB,QAChBhb,MAAOqsB,GAA2C,GAClD7e,UAAW8c,MAKf,gBAAC,EAAA1pB,UAAD,CAAWE,eAAe,WAAWqM,QAAS,CAAEC,IAAK,UACpD,gBAAC,GAAD,CAAgBla,SAAUA,EAAU20B,OAAQA,EAAQyC,cAAeA,IACnE,gBAAC,EAAA1pB,UAAD,CAAWE,eAAe,cACzB,gBAAC,GAAD,CACCwG,MAAOwE,EAAE,qDAAsD,0BAEhE,gBAAC,EAAAyf,SAAD,CACC/d,SAAU+e,EACV33B,MAAOkX,EAAE,mDAAoD,uBAC7D9L,MAAO2sB,EACPpf,QAAS,SAACvN,GACT4sB,GAAsBD,OAIzB,gBAAC,EAAA/rB,UAAD,CAAWE,eAAe,WAAWqM,QAAS,CAAEC,IAAK,UACpD,gBAAC,EAAAE,QAAD,CAASoS,IAAI,QAAQtX,MAAM,OAC1B,gBAAC,EAAA4R,OAAD,CACCxM,SAAU+e,EACVj7B,MAAOk4B,EACPvc,WAAW,QACXrY,MAAOkX,EACN,qDACA,yBAEDoO,SAAU,SAACla,GAzGhBsrB,EA0GiCtrB,EA1GlB,wCA4GVgoB,iBAAkB,CAGjBpzB,MAAO20B,GAA8Br2B,EAAU,QAAS4Y,GAGxD9L,MAAOupB,GAA8Br2B,EAAU,QAAS4Y,WCtIhE,GApEsC,SAAC,GAAmB,MAAjBmhB,EAAiB,EAAjBA,WACxC,GAAYphB,EAAAA,EAAAA,KAALC,GAAP,eAEM5Y,EAAWuL,KACXyuB,EAAOzxB,IAAgB,SAACjF,GAAD,OAAOA,EAAEoE,aAChCuyB,GAAQx2B,EAAAA,EAAAA,UAAQ,WAAM,MACrBy2B,EAAYl1B,OAAOhF,MAAAA,GAAD,UAACA,EAAU0I,aAAX,aAAC,EAAiByxB,iBAC1C,OAAIH,GAAQE,GAAaA,EAAY,EAC7BnJ,KAAKqJ,MAAOJ,EAAOE,EAAa,MAEhC,IACN,CAACl6B,MAAAA,GAAD,UAACA,EAAU0I,aAAX,aAAC,EAAiByxB,gBAAiBH,IAEhCj7B,GAAc0E,EAAAA,EAAAA,UAAQ,WAC3B,QAAQ,GACP,KAAMw2B,GAASA,EAAQ,EACtB,OAAOrhB,EAAE,uBAAwB,sCAClC,KAAe,MAAVqhB,EACJ,OAAOrhB,EAAE,wBAAyB,6CACnC,QACC,OAAOA,EAAE,qBAAsB,CAC9ByhB,aAAc,oDACdJ,MAAAA,OAGD,CAACA,EAAOrhB,IAEL0hB,GAAiB72B,EAAAA,EAAAA,UAAQ,WAC9B,QAAQ,GACP,KAAKw2B,GAAS,GACb,MAAO,QACR,KAAKA,GAAS,GACb,MAAO,UACR,KAAgB,IAAXA,EACJ,MAAO,QACR,QACC,MAAO,aAEP,CAACA,IACExF,GAAehxB,EAAAA,EAAAA,UAAQ,kBAAM6wB,GAAgB1b,KAAI,CAACA,IACxD,OAAOmhB,EACN,gBAAC,EAAArsB,UAAD,CAAWwH,MAAM,MAAM+E,QAAS,CAAE5O,MAAO,WACxC,gBAAC,EAAAub,QAAD,CAASllB,MAAO3C,EAAa6oB,UAAU,UACtC,gBAAC,EAAA2S,MAAD,CAAOC,KAAMP,EAAQ,EAAIA,EAAQ,EAAGK,eAAgBA,MAItD,gBAAC,EAAA5F,eAAD,CACChzB,MAAO+yB,EAAa/yB,MACpB4f,SAAS,yBACTpM,MAAM,MACN7W,GAAIo2B,EAAap2B,IAEjB,gBAAC,EAAAqP,UAAD,CAAWwH,MAAM,OAAO+E,QAAS,CAAE8O,SAAU,WAC5C,gBAAC,EAAArb,UAAD,CACCoM,YAAY,aACZjM,cAAc,aACd8T,oBAAkB,EAClB1H,QAAS,CAAEsb,OAAQ,WAEnB,gBAAC,EAAA/tB,KAAD,CAAMsS,YAAY,QAAQ/a,IAE3B,gBAAC,EAAAw7B,MAAD,CAAOC,MAAiB,IAAXP,EAAe,IAAMA,EAAOK,eAAgBA,OCvD7DnD,IAAAA,GA8FA,SAvFK,SAAC,GAAwC,IAAtCn3B,EAAsC,EAAtCA,SAAU20B,EAA4B,EAA5BA,OAAQ3b,EAAoB,EAApBA,KAAMgP,EAAc,EAAdA,QACvBpP,GAAMD,EAAAA,EAAAA,KAANC,EACF6hB,GAAUh3B,EAAAA,EAAAA,UAAQ,kBJwFC,SACzBmV,GADyB,MAEiE,CAC1F,CACCva,GAAI,QACJY,KAAM,UACNy7B,UAAW9hB,EAAE,uBAAwB,mBACrClX,MAAOkX,EAAE,uBAAwB,CAChC9L,MAAO,UACPutB,aAAc,gCAEfvtB,MAAO,SAER,CACCzO,GAAI,KACJY,KAAM,aACNy7B,UAAW9hB,EAAE,eAAgB,SAC7BlX,MAAOkX,EAAE,qBAAsB,CAAE9L,MAAO,aAAcutB,aAAc,sBACpEvtB,MAAO,MAER,CACCzO,GAAI,KACJY,KAAM,UACNy7B,UAAW9hB,EAAE,iBAAkB,WAC/BlX,MAAOkX,EAAE,uBAAwB,CAAE9L,MAAO,UAAWutB,aAAc,wBACnEvtB,MAAO,MAER,CACCzO,GAAI,KACJY,KAAM,UACNy7B,UAAW9hB,EAAE,gBAAiB,UAC9BlX,MAAOkX,EAAE,sBAAuB,CAAE9L,MAAO,UAAWutB,aAAc,uBAClEvtB,MAAO,MAER,CACCzO,GAAI,KACJY,KAAM,QACNy7B,UAAW9hB,EAAE,eAAgB,SAC7BlX,MAAOkX,EAAE,qBAAsB,CAAE9L,MAAO,QAASutB,aAAc,sBAC/DvtB,MAAO,MAER,CACCzO,GAAI,KACJY,KAAM,WACNy7B,UAAW9hB,EAAE,iBAAkB,WAC/BlX,MAAOkX,EAAE,uBAAwB,CAAE9L,MAAO,WAAYutB,aAAc,wBACpEvtB,MAAO,MAER,CACCzO,GAAI,KACJY,KAAM,MACNy7B,UAAW9hB,EAAE,kBAAmB,YAChClX,MAAOkX,EAAE,wBAAyB,CAAE9L,MAAO,MAAOutB,aAAc,yBAChEvtB,MAAO,MAGR,CACCzO,GAAI,KACJY,KAAM,YACNy7B,UAAW9hB,EAAE,oBAAqB,cAClClX,MAAOkX,EAAE,0BAA2B,CACnC9L,MAAO,YACPutB,aAAc,2BAEfvtB,MAAO,MAER,CACCzO,GAAI,QACJY,KAAM,qBACNy7B,UAAW9hB,EAAE,2BAA4B,uBACzClX,MAAOkX,EAAE,iCAAkC,CAC1C9L,MAAO,qBACPutB,aAAc,2BAEfvtB,MAAO,SAGR,CACCzO,GAAI,KACJY,KAAM,SACNy7B,UAAW9hB,EAAE,kBAAmB,YAChClX,MAAOkX,EAAE,wBAAyB,CAAE9L,MAAO,SAAUutB,aAAc,yBACnEvtB,MAAO,MAER,CACCzO,GAAI,KACJY,KAAM,UACNy7B,UAAW9hB,EAAE,iBAAkB,WAC/BlX,MAAOkX,EAAE,uBAAwB,CAAE9L,MAAO,UAAWutB,aAAc,wBACnEvtB,MAAO,MAGR,CACCzO,GAAI,KACJY,KAAM,UACNy7B,UAAW9hB,EAAE,iBAAkB,WAC/BlX,MAAOkX,EAAE,uBAAwB,CAAE9L,MAAO,UAAWutB,aAAc,wBACnEvtB,MAAO,MAGR,CACCzO,GAAI,KACJY,KAAM,MACNy7B,UAAW9hB,EAAE,cAAe,QAC5BlX,MAAOkX,EAAE,oBAAqB,CAAE9L,MAAO,MAAOutB,aAAc,qBAC5DvtB,MAAO,MAER,CACCzO,GAAI,KACJY,KAAM,SACNy7B,UAAW9hB,EAAE,iBAAkB,WAC/BlX,MAAOkX,EAAE,uBAAwB,CAAE9L,MAAO,SAAUutB,aAAc,wBAClEvtB,MAAO,MAER,CACCzO,GAAI,KACJY,KAAM,WACNy7B,UAAW9hB,EAAE,gBAAiB,UAC9BlX,MAAOkX,EAAE,sBAAuB,CAAE9L,MAAO,WAAYutB,aAAc,uBACnEvtB,MAAO,OI/MsB6tB,CAAW/hB,KAAI,CAACA,IACxCgiB,GAAYn3B,EAAAA,EAAAA,UAAQ,kBJobC,SAC3BmV,GAD2B,MAEoC,CAC/D,CACC9L,MAAO,aACPpL,MAAOkX,EAAE,oBAAqB,CAAE9L,MAAO,cAAeutB,aAAc,wBAErE,CACCvtB,MAAO,iBACPpL,MAAOkX,EAAE,iBAAkB,CAAE9L,MAAO,aAAcutB,aAAc,qBAEjE,CACCvtB,MAAO,aACPpL,MAAOkX,EAAE,kBAAmB,CAAE9L,MAAO,aAAcutB,aAAc,sBAElE,CACCvtB,MAAO,mBACPpL,MAAOkX,EAAE,kBAAmB,CAAE9L,MAAO,aAAcutB,aAAc,sBAElE,CACCvtB,MAAO,oBACPpL,MAAOkX,EAAE,kBAAmB,CAAE9L,MAAO,aAAcutB,aAAc,sBAElE,CACCvtB,MAAO,sBACPpL,MAAOkX,EAAE,6BAA8B,CACtC9L,MAAO,aACPutB,aAAc,iCAGhB,CACCvtB,MAAO,kBACPpL,MAAOkX,EAAE,2BAA4B,CACpC9L,MAAO,aACPutB,aAAc,+BAGhB,CACCvtB,MAAO,iBACPpL,MAAOkX,EAAE,8BAA+B,CACvC9L,MAAO,aACPutB,aAAc,kCAGhB,CACCvtB,MAAO,oBACPpL,MAAOkX,EAAE,qCAAsC,CAC9C9L,MAAO,aACPutB,aAAc,2CAGhB,CACCvtB,MAAO,kBACPpL,MAAOkX,EAAE,mBAAoB,CAAE9L,MAAO,aAAcutB,aAAc,uBAEnE,CACCvtB,MAAO,kBACPpL,MAAOkX,EAAE,6BAA8B,CACtC9L,MAAO,aACPutB,aAAc,iCAGhB,CACCvtB,MAAO,iBACPpL,MAAOkX,EAAE,wBAAyB,CACjC9L,MAAO,aACPutB,aAAc,4BAGhB,CACCvtB,MAAO,sBACPpL,MAAOkX,EAAE,8CAA+C,CACvD9L,MAAO,cACPutB,aAAc,oDAGhB,CACCvtB,MAAO,oBACPpL,MAAOkX,EAAE,2BAA4B,CACpC9L,MAAO,aACPutB,aAAc,+BAGhB,CACCvtB,MAAO,mBACPpL,MAAOkX,EAAE,6BAA8B,CACtC9L,MAAO,aACPutB,aAAc,iCAGhB,CACCvtB,MAAO,+BACPpL,MAAOkX,EAAE,wBAAyB,CACjC9L,MAAO,aACPutB,aAAc,8BAGhB,CACCvtB,MAAO,iBACPpL,MAAOkX,EAAE,oBAAqB,CAAE9L,MAAO,aAAcutB,aAAc,wBAEpE,CACCvtB,MAAO,kBACPpL,MAAOkX,EAAE,mBAAoB,CAAE9L,MAAO,aAAcutB,aAAc,uBAEnE,CACCvtB,MAAO,mBACPpL,MAAOkX,EAAE,iCAAkC,CAC1C9L,MAAO,aACPutB,aAAc,qCAGhB,CACCvtB,MAAO,iBACPpL,MAAOkX,EAAE,kBAAmB,CAAE9L,MAAO,aAAcutB,aAAc,sBAElE,CACCvtB,MAAO,iBACPpL,MAAOkX,EAAE,kBAAmB,CAAE9L,MAAO,aAAcutB,aAAc,sBAElE,CACCvtB,MAAO,iBACPpL,MAAOkX,EAAE,6CAA8C,CACtD9L,MAAO,aACPutB,aAAc,oDAGhB,CACCvtB,MAAO,iBACPpL,MAAOkX,EAAE,kBAAmB,CAAE9L,MAAO,aAAcutB,aAAc,sBAElE,CACCvtB,MAAO,kBACPpL,MAAOkX,EAAE,gCAAiC,CACzC9L,MAAO,aACPutB,aAAc,sCAGhB,CACCvtB,MAAO,mBACPpL,MAAOkX,EAAE,oBAAqB,CAAE9L,MAAO,cAAeutB,aAAc,wBAErE,CACCvtB,MAAO,mBACPpL,MAAOkX,EAAE,wBAAyB,CACjC9L,MAAO,aACPutB,aAAc,4BAGhB,CACCvtB,MAAO,qBACPpL,MAAOkX,EAAE,sBAAuB,CAAE9L,MAAO,aAAcutB,aAAc,0BAEtE,CACCvtB,MAAO,kBACPpL,MAAOkX,EAAE,qBAAsB,CAAE9L,MAAO,aAAcutB,aAAc,yBAErE,CACCvtB,MAAO,kBACPpL,MAAOkX,EAAE,6BAA8B,CACtC9L,MAAO,aACPutB,aAAc,kCAGhB,CACCvtB,MAAO,oBACPpL,MAAOkX,EAAE,oBAAqB,CAAE9L,MAAO,aAAcutB,aAAc,wBAEpE,CACCvtB,MAAO,iCACPpL,MAAOkX,EAAE,qBAAsB,CAAE9L,MAAO,aAAcutB,aAAc,yBAErE,CACCvtB,MAAO,yBACPpL,MAAOkX,EAAE,wBAAyB,CACjC9L,MAAO,aACPutB,aAAc,4BAGhB,CACCvtB,MAAO,YACPpL,MAAOkX,EAAE,kBAAmB,CAAE9L,MAAO,aAAcutB,aAAc,sBAElE,CACCvtB,MAAO,sBACPpL,MAAOkX,EAAE,yBAA0B,CAClC9L,MAAO,aACPutB,aAAc,8BAGhB,CACCvtB,MAAO,kBACPpL,MAAOkX,EAAE,kBAAmB,CAAE9L,MAAO,aAAcutB,aAAc,sBAElE,CACCvtB,MAAO,MACPpL,MAAOkX,EAAE,sCAAuC,CAC/C9L,MAAO,UACPutB,aAAc,0CAGhB,CACCvtB,MAAO,gBACPpL,MAAOkX,EAAE,oCAAqC,CAC7C9L,MAAO,aACPutB,aAAc,0CAGhB,CACCvtB,MAAO,oBACPpL,MAAOkX,EAAE,sBAAuB,CAAE9L,MAAO,aAAcutB,aAAc,0BAEtE,CACCvtB,MAAO,kBACPpL,MAAOkX,EAAE,oBAAqB,CAAE9L,MAAO,aAAcutB,aAAc,wBAEpE,CACCvtB,MAAO,gBACPpL,MAAOkX,EAAE,uDAAwD,CAChE9L,MAAO,aACPutB,aAAc,gEAGhB,CACCvtB,MAAO,kBACPpL,MAAOkX,EAAE,yDAA0D,CAClE9L,MAAO,aACPutB,aAAc,iEAGhB,CACCvtB,MAAO,kBACPpL,MAAOkX,EAAE,6CAA8C,CACtD9L,MAAO,cACPutB,aAAc,oDAGhB,CACCvtB,MAAO,kBACPpL,MAAOkX,EAAE,mBAAoB,CAAE9L,MAAO,aAAcutB,aAAc,uBAEnE,CACCvtB,MAAO,gBACPpL,MAAOkX,EAAE,yCAA0C,CAClD9L,MAAO,aACPutB,aAAc,gDAGhB,CACCvtB,MAAO,iBACPpL,MAAOkX,EAAE,+BAAgC,CACxC9L,MAAO,aACPutB,aAAc,mCAGhB,CACCvtB,MAAO,gBACPpL,MAAOkX,EAAE,4CAA6C,CACrD9L,MAAO,aACPutB,aAAc,mDAGhB,CACCvtB,MAAO,cACPpL,MAAOkX,EAAE,kBAAmB,CAAE9L,MAAO,aAAcutB,aAAc,sBAElE,CACCvtB,MAAO,gBACPpL,MAAOkX,EAAE,oBAAqB,CAAE9L,MAAO,aAAcutB,aAAc,wBAEpE,CACCvtB,MAAO,eACPpL,MAAOkX,EAAE,iBAAkB,CAAE9L,MAAO,aAAcutB,aAAc,qBAEjE,CACCvtB,MAAO,gBACPpL,MAAOkX,EAAE,2BAA4B,CACpC9L,MAAO,aACPutB,aAAc,gCAGhB,CACCvtB,MAAO,kBACPpL,MAAOkX,EAAE,oDAAqD,CAC7D9L,MAAO,aACPutB,aAAc,6DAGhB,CACCvtB,MAAO,kBACPpL,MAAOkX,EAAE,oBAAqB,CAAE9L,MAAO,aAAcutB,aAAc,wBAEpE,CACCvtB,MAAO,iBACPpL,MAAOkX,EAAE,qBAAsB,CAAE9L,MAAO,aAAcutB,aAAc,yBAErE,CACCvtB,MAAO,aACPpL,MAAOkX,EAAE,kBAAmB,CAAE9L,MAAO,aAAcutB,aAAc,sBAElE,CACCvtB,MAAO,qBACPpL,MAAOkX,EAAE,6BAA8B,CACtC9L,MAAO,aACPutB,aAAc,mCAGhB,CACCvtB,MAAO,eACPpL,MAAOkX,EAAE,gBAAiB,CAAE9L,MAAO,aAAcutB,aAAc,oBAEhE,CACCvtB,MAAO,cACPpL,MAAOkX,EAAE,yBAA0B,CAClC9L,MAAO,aACPutB,aAAc,8BAGhB,CACCvtB,MAAO,eACPpL,MAAOkX,EAAE,iBAAkB,CAAE9L,MAAO,aAAcutB,aAAc,qBAEjE,CACCvtB,MAAO,gBACPpL,MAAOkX,EAAE,gDAAiD,CACzD9L,MAAO,aACPutB,aAAc,yDAGhB,CACCvtB,MAAO,iBACPpL,MAAOkX,EAAE,mBAAoB,CAAE9L,MAAO,aAAcutB,aAAc,uBAEnE,CACCvtB,MAAO,cACPpL,MAAOkX,EAAE,kBAAmB,CAAE9L,MAAO,aAAcutB,aAAc,sBAElE,CACCvtB,MAAO,cACPpL,MAAOkX,EAAE,4BAA6B,CACrC9L,MAAO,aACPutB,aAAc,iCAGhB,CACCvtB,MAAO,YACPpL,MAAOkX,EAAE,gBAAiB,CAAE9L,MAAO,aAAcutB,aAAc,oBAEhE,CACCvtB,MAAO,mBACPpL,MAAOkX,EAAE,sBAAuB,CAAE9L,MAAO,aAAcutB,aAAc,0BAEtE,CACCvtB,MAAO,eACPpL,MAAOkX,EAAE,mBAAoB,CAAE9L,MAAO,aAAcutB,aAAc,uBAEnE,CACCvtB,MAAO,eACPpL,MAAOkX,EAAE,mBAAoB,CAAE9L,MAAO,aAAcutB,aAAc,uBAEnE,CACCvtB,MAAO,aACPpL,MAAOkX,EAAE,iBAAkB,CAAE9L,MAAO,aAAcutB,aAAc,qBAEjE,CACCvtB,MAAO,qBACPpL,MAAOkX,EAAE,8BAA+B,CACvC9L,MAAO,aACPutB,aAAc,oCAGhB,CACCvtB,MAAO,eACPpL,MAAOkX,EAAE,qCAAsC,CAC9C9L,MAAO,aACPutB,aAAc,yCAGhB,CACCvtB,MAAO,eACPpL,MAAOkX,EAAE,4CAA6C,CACrD9L,MAAO,aACPutB,aAAc,mDAGhB,CACCvtB,MAAO,iBACPpL,MAAOkX,EAAE,qBAAsB,CAAE9L,MAAO,aAAcutB,aAAc,yBAErE,CACCvtB,MAAO,aACPpL,MAAOkX,EAAE,iBAAkB,CAAE9L,MAAO,aAAcutB,aAAc,qBAEjE,CACCvtB,MAAO,cACPpL,MAAOkX,EAAE,kBAAmB,CAAE9L,MAAO,cAAeutB,aAAc,sBAEnE,CACCvtB,MAAO,eACPpL,MAAOkX,EAAE,iCAAkC,CAC1C9L,MAAO,aACPutB,aAAc,uCAGhB,CACCvtB,MAAO,mBACPpL,MAAOkX,EAAE,6BAA8B,CACtC9L,MAAO,aACPutB,aAAc,mCAGhB,CACCvtB,MAAO,iBACPpL,MAAOkX,EAAE,8CAA+C,CACvD9L,MAAO,aACPutB,aAAc,qDAGhB,CACCvtB,MAAO,eACPpL,MAAOkX,EAAE,yBAA0B,CAClC9L,MAAO,aACPutB,aAAc,+BAGhB,CACCvtB,MAAO,kBACPpL,MAAOkX,EAAE,iBAAkB,CAAE9L,MAAO,aAAcutB,aAAc,qBAEjE,CACCvtB,MAAO,aACPpL,MAAOkX,EAAE,iBAAkB,CAAE9L,MAAO,aAAcutB,aAAc,qBAEjE,CACCvtB,MAAO,iBACPpL,MAAOkX,EAAE,qBAAsB,CAAE9L,MAAO,cAAeutB,aAAc,yBAEtE,CACCvtB,MAAO,aACPpL,MAAOkX,EAAE,iBAAkB,CAAE9L,MAAO,cAAeutB,aAAc,qBAElE,CACCvtB,MAAO,mBACPpL,MAAOkX,EAAE,kBAAmB,CAAE9L,MAAO,aAAcutB,aAAc,sBAElE,CACCvtB,MAAO,mBACPpL,MAAOkX,EAAE,+BAAgC,CACxC9L,MAAO,aACPutB,aAAc,yCAGhB,CACCvtB,MAAO,eACPpL,MAAOkX,EAAE,mBAAoB,CAAE9L,MAAO,aAAcutB,aAAc,uBAEnE,CACCvtB,MAAO,iBACPpL,MAAOkX,EAAE,iDAAkD,CAC1D9L,MAAO,aACPutB,aAAc,yDAGhB,CACCvtB,MAAO,oBACPpL,MAAOkX,EAAE,sBAAuB,CAAE9L,MAAO,aAAcutB,aAAc,0BAEtE,CACCvtB,MAAO,qBACPpL,MAAOkX,EAAE,4BAA6B,CACrC9L,MAAO,aACPutB,aAAc,iCI34BgBQ,CAAajiB,KAAI,CAACA,IAC5Cwf,GAAc/qB,EAAAA,EAAAA,cACnB,SAACyX,EAAGvN,GACHod,EAAO,QAASpd,EAAGuN,KAEpB,CAAC6P,IAGIG,GAAmBrxB,EAAAA,EAAAA,UACxB,kBACCzD,EAAS4E,MAAMk2B,mBAAoBl6B,EAAAA,EAAAA,MAAK65B,EAAS,CAAEp8B,GAAI2B,EAAS4E,MAAMk2B,oBACnEl6B,EAAAA,EAAAA,MAAK65B,EAAS,CAAEp8B,GAAI2B,EAAS4E,MAAMk2B,mBACnCL,EAAQ,KACZ,CAACA,EAASz6B,EAAS4E,MAAMk2B,mBAGpBC,GAAkBt3B,EAAAA,EAAAA,UACvB,kBACCzD,EAAS4E,MAAMo2B,uBACfp6B,EAAAA,EAAAA,MAAKg6B,EAAW,CAAE9tB,MAAO9M,EAAS4E,MAAMo2B,wBACrCp6B,EAAAA,EAAAA,MAAKg6B,EAAW,CAAE9tB,MAAO9M,EAAS4E,MAAMo2B,uBACxCJ,EAAU,MACd,CAACA,EAAW56B,EAAS4E,MAAMo2B,uBAEtBvG,GAAehxB,EAAAA,EAAAA,UAAQ,kBAAMywB,GAA8Btb,KAAI,CAACA,IACtE,OACC,gBAAC,EAAA8b,eAAD,CACChzB,MAAO+yB,EAAa/yB,MACpB4f,SAAS,yBACTpM,MAAM,MACN7W,GAAIo2B,EAAap2B,IAEjB,gBAAC,EAAAqP,UAAD,CAAWE,eAAe,WAAWqM,QAAS,CAAEC,IAAK,UACnDvC,OAAOC,KAAK5X,EAAS4E,OAAOof,OAAS,GACrC,gBAAC,EAAA8C,OAAD,CACC1oB,MAAOq8B,EACP1gB,WAAW,QACXrY,MAAOkX,EAAE,iBAAkB,YAC3BoO,SAAU,SAACla,GACVsrB,EAAYtrB,EAAO,qBAEpBgoB,iBAAkBA,EAClBmG,cAAc,EACdC,kBAAkB,QAClBnU,wBAAwB,cAG1B,gBAAC,EAAA3M,QAAD,CAASoS,IAAI,QAAQtX,MAAM,QACzByC,OAAOC,KAAK5X,EAAS4E,OAAOof,OAAS,GACrC,gBAAC,EAAA8C,OAAD,CACC1oB,MAAOw8B,EACP7gB,WAAW,QACXrY,MAAOkX,EAAE,kBAAmB,aAC5BoO,SAAU,SAACla,GACVsrB,EAAYtrB,EAAO,yBAEpBgoB,iBAAkBiG,EAClBE,cAAc,EACdC,kBAAkB,QAClBnU,wBAAwB,eAI3B,gBAAC,EAAAhO,MAAD,CACC3E,MAAOwE,EAAE,eAAgB,UACzBI,KAAMA,EACNG,aAAcP,EAAE,WAAY,MAC5BM,UAAW,kBAAYlV,OAAOC,SAASk3B,UACvC/hB,aAAcR,EAAE,eAAgB,UAChCK,QAAS,kBAAY+O,GAAQ,KAE7B,gBAAC,EAAAxgB,KAAD,CAAM2X,SAAS,cACbvG,EACA,iBADC,qKCZR,GA/EK,SAAC,GAAyB,IAAvB5Y,EAAuB,EAAvBA,SAAU20B,EAAa,EAAbA,OACT/b,GAAMD,EAAAA,EAAAA,KAANC,EACR,GAAoD1L,EAAAA,EAAAA,UACF,SAAjDlN,EAAS4E,MAAMw2B,+BADhB,eAAOC,EAAP,KAA2BC,EAA3B,KAGA,GAAsDpuB,EAAAA,EAAAA,UACH,SAAlDlN,EAAS4E,MAAM22B,gCADhB,eAAOC,EAAP,KAA4BC,EAA5B,KAGA,GAAwDvuB,EAAAA,EAAAA,UACC,SAAxDlN,EAAS4E,MAAM82B,sCADhB,eAAOC,EAAP,KAA6BC,EAA7B,KAGM7Q,GAAU1d,EAAAA,EAAAA,cACf,SAACyX,EAAGvN,GAEHod,EAAO,QAASpd,EADGuN,EAAI,OAAS,WAGjC,CAAC6P,KAGFjoB,EAAAA,EAAAA,YAAU,WACT4uB,EAAuE,SAAjDt7B,EAAS4E,MAAMw2B,iCACnC,CAACp7B,EAAS4E,MAAMw2B,iCACnB1uB,EAAAA,EAAAA,YAAU,WACT+uB,EAAyE,SAAlDz7B,EAAS4E,MAAM22B,kCACpC,CAACv7B,EAAS4E,MAAM22B,kCACnB7uB,EAAAA,EAAAA,YAAU,WACTkvB,EAAgF,SAAxD57B,EAAS4E,MAAM82B,wCACrC,CAAC17B,EAAS4E,MAAM82B,uCAEnB,IAAMG,GAAcxuB,EAAAA,EAAAA,cAAY,WAC/BiuB,GAAuBD,GACvBtQ,GAASsQ,EAAoB,mCAC3B,CAACA,EAAoBtQ,IAClB+Q,GAAezuB,EAAAA,EAAAA,cAAY,WAChCouB,GAAwBD,GACxBzQ,GAASyQ,EAAqB,oCAC5B,CAACA,EAAqBzQ,IACnBgR,GAAgB1uB,EAAAA,EAAAA,cAAY,WACjCuuB,GAAyBD,GACzB5Q,GAAS4Q,EAAsB,0CAC7B,CAACA,EAAsB5Q,IACpB0J,GAAehxB,EAAAA,EAAAA,UAAQ,kBAAM2wB,GAAsBxb,KAAI,CAACA,IAC9D,OACC,gBAAC,EAAA8b,eAAD,CACChzB,MAAO+yB,EAAa/yB,MACpB4f,SAAS,yBACTpM,MAAM,MACN7W,GAAIo2B,EAAap2B,IAEjB,gBAAC,EAAAqP,UAAD,CAAWE,eAAe,WAAWqM,QAAS,CAAEC,IAAK,UACpD,gBAAC,EAAAme,SAAD,CACC32B,MAAOkX,EACN,gEACA,mCAED9L,MAAOuuB,EACPhhB,QAASwhB,IAEV,gBAAC,EAAAxD,SAAD,CACC32B,MAAOkX,EACN,iEACA,oCAED9L,MAAO0uB,EACPnhB,QAASyhB,IAEV,gBAAC,EAAAzD,SAAD,CACC32B,MAAOkX,EACN,kEACA,qCAED9L,MAAO6uB,EACPthB,QAAS0hB,O,ykBCWd,SA5E4B,WAC3B,OAAwB7uB,EAAAA,EAAAA,UAAe,IAAvC,eAAOwI,EAAP,KAAasmB,EAAb,KACA,GAAYrjB,EAAAA,EAAAA,KAALC,GAAP,eACM5Y,EAAWuL,KACjB,GAAwB2B,EAAAA,EAAAA,WAAS,GAAjC,eAAO8L,EAAP,KAAagP,EAAb,KACM2M,GAAStnB,EAAAA,EAAAA,cAAY,SAACjO,EAAyBkN,EAAKQ,GACzDkvB,GAAQ,SAACC,GAAD,UAAC,MACLA,GADI,cAEN78B,EAFM,GAAC,MAGJ68B,MAAAA,OAHG,EAGHA,EAAI78B,IAHD,cAILkN,EAAMQ,WAGP,IACG6iB,GAAiBuM,EAAAA,EAAAA,eAEjB/jB,GAAS9K,EAAAA,EAAAA,cAAY,WAC1BoI,GAAaC,GACX3M,MAAK,WACD2M,EAAK9Q,QAASJ,EAAAA,EAAAA,UAASmT,OAAOC,KAAKlC,EAAK9Q,OAAQ,qBACnDojB,GAAQ,GAET2H,EAAe,CACdrjB,IAAK,MACLyG,SAAS,EACT3T,KAAM,OACNsC,MAAOkX,EAAE,kCAAmC,yBAC5CujB,gBAAiB,IACjBC,YAAY,OAXf,OAcQ,WACNzM,EAAe,CACdrjB,IAAK,MACLyG,SAAS,EACT3T,KAAM,QACNsC,MAAOkX,EAAE,iBAAkB,0CAC3BujB,gBAAiB,IACjBC,YAAY,OAGfJ,EAAQ,MACN,CAACrM,EAAgBja,EAAMkD,IACpBS,GAAWhM,EAAAA,EAAAA,cAAY,WAC5B2uB,EAAQ,MACN,IACG1iB,GAAU7V,EAAAA,EAAAA,UAAQ,mBAAOqb,EAAAA,EAAAA,SAAQpJ,KAAO,CAACA,IACzCtB,GAAQ3Q,EAAAA,EAAAA,UAAQ,kBAAMmV,EAAE,2BAA4B,sBAAqB,CAACA,IAEhF,OACC,gCACC,gBAAC,GAAD,CAAgBxE,MAAOA,EAAOiF,SAAUA,EAAUlB,OAAQA,EAAQmB,QAASA,IAC3E,gBAAC,EAAA5L,UAAD,CACCqM,WAAW,QACXlM,cAAc,aACdoM,QAAS,CAAEC,IAAK,UAChBpM,MAAO,CAAEqR,SAAU,SAEnB,gBAAC,GAAD,CAAoBnf,SAAUA,EAAU20B,OAAQA,IAChD,gBAAC,GAAD,CACC30B,SAAUA,EACV20B,OAAQA,EACR3b,KAAMA,EACNgP,QAASA,IAGV,gBAAC,GAAD,CAAqBhoB,SAAUA,EAAU20B,OAAQA,IACjD,gBAAC,GAAD,CAAoB30B,SAAUA,EAAU20B,OAAQA,IAChD,gBAAC,GAAD,MACA,gBAAC,GAAD,CAAWoF,YAAY,IACvB,gBAAC,GAAD,S,ykBC3DJ,IAAMsC,GAAWhd,GAAAA,QAAAA,SAAAA,WAAH,6DAAGA,CAAH,qNAMC,qBAAGtB,MAA0B2C,QAAQK,MAAMH,WAGhD,qBAAG7C,MAA0B2C,QAAQkV,KAAKhV,WACpC,qBAAG7C,MAA0BD,MAAN,WACzB,gBAAGC,EAAH,EAAGA,MAAOV,EAAV,EAAUA,KAAV,OAA6BU,EAAMT,MAAMC,KAAKF,MAAAA,EAAAA,EAAQ,aAEpD,qBAAGU,MAA0B2C,QAAQe,MAAMb,WAKrD0b,IAAgBjd,EAAAA,GAAAA,SAAO3R,EAAAA,WAAV,6EAAG2R,CAAH,oDAMbkd,IAAkBld,EAAAA,GAAAA,SAAO3R,EAAAA,WAAV,+EAAG2R,CAAH,kCAKfmd,IAAcnd,EAAAA,GAAAA,SAAO3R,EAAAA,WAAV,2EAAG2R,CAAH,0LACF,qBAAGtB,MAA0B2C,QAAQK,MAAMH,WAO1C,qBAAG7C,MAA0B2C,QAAQe,MAAMb,WAE9B,qBAAG7C,MAA0B2C,QAAQC,QAAQC,WAIpE6b,IAAiBpd,EAAAA,GAAAA,SAAO7X,EAAAA,MAAV,8EAAG6X,CAAH,gHAMJ,SAAC1W,GAAD,OAAmBA,EAAM+zB,cAGnCC,IAAiBtd,EAAAA,GAAAA,SAAO3R,EAAAA,WAAV,8EAAG2R,CAAH,kCACQ,SAAC1W,GAAD,OAAoBA,EAAM2R,SAAW,MAAQ,aAGnEsiB,GAAoB,CACzB/jB,QAAS,GACTgkB,MAAOC,EAAAA,EAAAA,KACPn3B,QAAS,UACTo3B,MAAO,CACNt8B,IAAK,IACLu8B,MAAO,KAERC,KAAM,IAGP,SAAS/hB,GAAQ5a,EAAjB,GAAyF,IAAxDlB,EAAwD,EAAxDA,KAAM6wB,EAAkD,EAAlDA,QACtC,OAAQ7wB,GACP,IAAK,WACJ,gBAAYkB,GAAZ,IAAmB28B,KAAMhN,IAC1B,IAAK,QACJ,OAAO2M,GACR,IAAK,cACJ,gBAAYt8B,GAAZ,IAAmBuY,QAASoX,IAC7B,IAAK,aACJ,gBACI3vB,GADJ,IAECqF,QAASsqB,EAAQ9wB,QACjB49B,MAAO,SAAKz8B,EAAMy8B,OAAb,IAAoBt8B,IAAKwvB,EAAQxvB,QAExC,IAAK,eACJ,gBAAYH,GAAZ,IAAmBy8B,MAAO,SAAKz8B,EAAMy8B,OAAb,IAAoBC,MAAO/M,MACpD,QACC,OAAO3vB,GAIV,IAOM48B,GAKD,SAAC,GAAD,IAAG/b,EAAH,EAAGA,SAAUzf,EAAb,EAAaA,MAAOsX,EAApB,EAAoBA,KAAMoI,EAA1B,EAA0BA,MAA1B,OACJ,gBAACub,GAAD,CACC7iB,YAAY,aACZ5E,MAAM,OACNtH,eAAe,SACfC,cAAc,gBACd0T,aAAa,OACbxH,WAAW,QACXE,QAAS,CACRC,IAAK,UAGN,gBAAC,EAAAF,IAAD,CAAK2H,oBAAkB,EAAC9T,cAAc,SACrC,gBAAC,EAAArG,KAAD,CAAM6V,KAAK,SAASnf,MAAO8a,GAAQoI,EAAQ,UAAY,aACrDD,EAAS6C,OAAS,EAAI7C,EAAS,GAAGzf,MAAQA,IAG7C,gBAAC,EAAAmgB,KAAD,CACCxE,KAAK,QACL/d,KAAM0Z,EAAO,mBAAqB,qBAClC9a,MAAO8a,GAAQoI,EAAQ,UAAY,YACnCtT,MAAO,CAAEgU,UAAW,cAKjBqb,GAMD,SAAC,GAAD,IAAGhc,EAAH,EAAGA,SAAUzf,EAAb,EAAaA,MAAOsX,EAApB,EAAoBA,KAAMoI,EAA1B,EAA0BA,MAAOgc,EAAjC,EAAiCA,QAAjC,OACJ,gBAACT,GAAD,CACCriB,SAAU8iB,EACVtjB,YAAY,aACZ5E,MAAM,OACNtH,eAAe,SACfC,cAAc,gBACd0T,aAAa,OACbxH,WAAW,QACXE,QAAS,CACRC,IAAK,UAGN,gBAAC,EAAAF,IAAD,CAAK2H,oBAAkB,EAAC9T,cAAc,SACpCuvB,EACA,gBAAC,EAAA51B,KAAD,CAAM6V,KAAK,SAASnf,MAAQ8a,GAAQokB,GAAYhc,EAAQ,UAAY,SAClE,IACAD,EAAS6C,OAAS,EAAI7C,EAAS,GAAGzf,MAAQA,GAG5C,gBAAC,EAAA8F,KAAD,CAAM6V,KAAK,SAASnf,MAAO8a,GAAQoI,EAAQ,UAAY,aACrDD,EAAS6C,OAAS,EAAI7C,EAAS,GAAGzf,MAAQA,IAK7C07B,EACA,gBAAC,EAAAvb,KAAD,CACCxE,KAAK,QACL/d,KAAM0Z,EAAO,mBAAqB,qBAClC9a,MAAQ8a,GAAQokB,GAAYhc,EAAQ,UAAY,QAChDtT,MAAO,CAAEgU,UAAW,YAGrB,gBAAC,EAAAD,KAAD,CACCxE,KAAK,QACL/d,KAAM0Z,EAAO,mBAAqB,qBAClC9a,MAAO8a,GAAQoI,EAAQ,UAAY,YACnCtT,MAAO,CAAEgU,UAAW,c,omBCmExB,SApOqB,SAAC,GAQiB,QAPtClJ,EAOsC,EAPtCA,EACAykB,EAMsC,EANtCA,mBACAr0B,EAKsC,EALtCA,WACAs0B,EAIsC,EAJtCA,cACAC,EAGsC,EAHtCA,sBACAC,EAEsC,EAFtCA,iBACAC,EACsC,EADtCA,iBA2CM5N,GAAcxf,EAAAA,EAAAA,YAAWyf,EAAAA,qBAE/B,GAAsD5iB,EAAAA,EAAAA,UAAS,GAA/D,eAAOwwB,EAAP,KAA4BC,EAA5B,KACA,GAAoCzwB,EAAAA,EAAAA,UAA2C,IAA/E,eAAO8I,EAAP,KAAmB4nB,EAAnB,KACMC,GAAgBxwB,EAAAA,EAAAA,cAAY,WAAM,QACjCywB,EACL94B,QACC+4B,EAAAA,EAAAA,MAAI,SACAz/B,EAAAA,EAAAA,SACFiT,EAAAA,EAAAA,MACCA,EAAAA,EAAAA,MACCjT,EAAAA,EAAAA,QAAO0K,GAAY,SAACzK,GAAD,uBAAUA,EAAKy/B,oBAAf,aAAU,EAAmBx5B,SAAS,mBACzD,SAACjG,GAAD,OAAyBA,EAAKy/B,iBAE/B,SAACz/B,GAAD,OAAkB0/B,WAAW1/B,EAAKwU,QAAQ,eAAgB,SAE3D,SAACxU,GAAD,OAAUyG,OAAOzG,SAGhB,EACC2/B,EAAiB,eAAH,OAAkBJ,GAAwB,GAC9D90B,EAAWqK,KAAK,CACfhV,GAAI,GAAF,OAAK2K,EAAWgb,QAClB5kB,KAAMwZ,EAAE,gBAAiB,WACzBulB,WAAYT,EACZU,YAAW,UAAEp1B,EAAW,UAAb,aAAE,EAAeo1B,YAC5BJ,aAAcE,EACdG,YAAW,UAAEr1B,EAAW,UAAb,aAAE,EAAeq1B,YAC5BC,eAAgB,GAChBC,eAAgB,GAChBC,eAAgB,QAChBC,WAAY,GACZC,eAAgB,GAChBC,qBAAsB,GACtBC,kBAAmB,KAEpBtB,EAAct0B,GACd20B,EAAuBD,EAAsB,GAC7CE,GAAc,SAACt9B,GAAU,QAiBxB,OAhBAA,EAAM+S,KAAK,CACVzO,MAAO,CACNqR,UAAWynB,EACXxnB,uBAAwBgoB,EACxB/nB,sBAAqB,UAAEnN,EAAW,UAAb,aAAE,EAAeq1B,YACtCjoB,sBAAqB,UAAEpN,EAAW,UAAb,aAAE,EAAeo1B,YACtCS,0BAA2B,SAC3BxoB,yBAA0B,QAC1BC,yBAA0B,GAC1BC,yBAA0B,GAC1BC,6BAA8B,GAC9BC,kCAAmC,GACnCC,4BAA6B,QAC7BC,+BAAgC,WAG3BrW,KAERm9B,EAAiBznB,GACjBunB,EAAsBv0B,EAAWgb,OAAS,KACxC,CACFhb,EACAs0B,EACA1kB,EACA6kB,EACAC,EACA1nB,EACAunB,IAGD,GAAoCrwB,EAAAA,EAAAA,UAAmB,IAAvD,eAAO6I,EAAP,KAAmB+oB,EAAnB,KACMC,GAAkB1xB,EAAAA,EAAAA,cAAY,WACnC,IAAM2xB,GAAgBztB,EAAAA,EAAAA,MACrBjT,EAAAA,EAAAA,QACC0K,GACA,SAAC6M,GAAD,aAAcA,MAAAA,OAAA,EAAAA,EAAUsoB,eAAV,UAAyBn1B,EAAWq0B,UAApC,aAAyB,EAAgCc,gBAExE,SAAC5/B,EAAqB0gC,GAAtB,UAAC,MAA6C1gC,GAA9C,IAAoDF,GAAI4gC,EAAMC,gBAE/DJ,GAAc,SAACx+B,GAAU,MAExB,OADAA,EAAM+S,KAAN,UAAWrK,EAAWq0B,UAAtB,aAAW,EAAgCc,WAAWe,YAC/C5+B,KAERg9B,EAAc0B,GACdxB,EAAiBznB,GACjBwnB,EAAsBF,EAAqB,KACzC,CACFr0B,EACAs0B,EACAE,EACAznB,EACAwnB,EACAF,IAEK8B,GAAW9xB,EAAAA,EAAAA,cAAY,WAI5B,IAAM+xB,EAAavP,EAAY,CAC9Bzb,MAAOwE,EAAE,+BAAgC,oDACzCM,UAAW,WACV6lB,IACAK,KAEDhmB,aAAcR,EAAE,2BAA4B,sBAC5CymB,aAAc,QACdC,eAAe,EACfrmB,QAAS,kBAAMmmB,KACf76B,SACC,gBAAC,EAAA6V,QAAD,CAASF,IAAI,SACZ,gBAAC,EAAA1S,KAAD,CAAM2X,SAAS,cACbvG,EACA,iCACA,8FAMH,CAACiX,EAAajX,EAAGmmB,IAEpB,OACC,gCACC,gBAAC,EAAArxB,UAAD,CACC4T,SAAS,yBACTpM,MAAM,OACN+E,QAAS,CAAEC,IAAK,SAChBvM,OAAO,MACPoM,WAAW,QACXlM,cAAc,cAEd,gBAAC,EAAAuM,QAAD,CAASmJ,WAAW,SAASgS,OAAO,QAAQrgB,MAAM,QACjD,gBAAC,EAAA1N,KAAD,CAAM2lB,OAAO,QAAQvU,EAAE,sBAAuB,mBAE/C,gBAAC,EAAA2mB,KAAD,CACCnhC,MAAO4K,EACPw2B,cA9Ka,SAAC,GAAD,IAAGjhC,EAAH,EAAGA,KAAH,OAChB,gCACC,gBAAC,EAAAmP,UAAD,CACC2M,QAAS,WALO,IAACvN,EAAAA,EAML9H,OAAOzG,EAAKF,IANiBk/B,EAAsBzwB,IAQ/DgN,YAAY,aACZjM,cAAc,aACdoM,QAAS,CAAEC,IAAK,UAEhB,gBAAC,EAAAF,IAAD,CAAK9E,MAAM,OAAOrH,cAAc,iBAC/B,gBAAC,EAAAH,UAAD,CAAWoM,YAAY,aAAajM,cAAc,aAAaqH,MAAM,OACpE,gBAAC,EAAAkF,QAAD,CAAS/O,MAAM,SACd,gBAAC,EAAAwW,KAAD,CAAMviB,KAAK,0BAA0B+d,KAAK,QAAQnf,MAAM,aAEzD,gBAAC,EAAAkc,QAAD,CAAS/O,MAAM,SACd,gBAAC,EAAA7D,KAAD,CAAM2lB,OAAO,UAAU9P,KAAK,SAC1B9e,EAAKy/B,eAGR,gBAAC,EAAA5jB,QAAD,CAAS/O,MAAM,SACd,gBAAC,EAAA7D,KAAD,CAAM2lB,OAAO,UAAU9P,KAAK,QAAQnf,MAAM,aAA1C,IACGK,EAAK6/B,YADR,OAKF,gBAAC,EAAA1wB,UAAD,CAAWwH,MAAM,MAAMrH,cAAc,YACpC,gBAAC,EAAArG,KAAD,CAAM2lB,OAAO,UAAU9P,KAAK,SAC1B9e,EAAKa,QAKT,gBAAC,EAAA4a,IAAD,CAAK9E,MAAM,SAEZ,gBAAC,EAAAqF,QAAD,QA4IEsP,OAAM,UAAE7gB,EAAWq0B,UAAb,aAAE,EAAgCh/B,GACxCsP,OAAO,MACP0vB,mBAAoBA,EACpBE,sBAAuBA,KAGzB,gBAAC,EAAAvjB,IAAD,CACCC,QAAS,CAAEsJ,WAAY,QAASgS,OAAQ,SACxCrgB,MAAM,OACNrH,cAAc,aACdkM,WAAW,SAEX,gBAAC,EAAAK,QAAD,CAAS/O,MAAM,SACd,gBAAC,EAAA8J,OAAD,CACCzT,MAAOkX,EAAE,6BAA8B,wBAEvC1a,MAAM,UACNkB,KAAK,WACLkb,UAAQ,KAGV,gBAAC,EAAAF,QAAD,CAAS/O,MAAM,SACd,gBAAC,EAAA8J,OAAD,CACCzT,MAAOkX,EAAE,oBAAqB,eAC9ByB,QAAS,kBAAYwjB,KACrB3/B,MAAM,UACNkB,KAAK,cAGP,gBAAC,EAAA+V,OAAD,CACCzT,MAAOkX,EAAE,eAAgB,UACzByB,QAAS,kBAAY8kB,KACrBjhC,MAAM,QACNkB,KAAK,WACLkb,UAAU,UAAAtR,EAAWq0B,UAAX,eAAgCj+B,QAASwZ,EAAE,gBAAiB,cAGxE,gBAAC,EAAAwB,QAAD,CAASmb,OAAO,YC/JnB,GArF+B,SAAC,GAIiB,IAHhD3c,EAGgD,EAHhDA,EACAxa,EAEgD,EAFhDA,MACAqhC,EACgD,EADhDA,iBAEMC,GAAaj8B,EAAAA,EAAAA,UAAQ,kBAAMrF,MAAAA,OAAN,EAAMA,EAAOggC,cAAa,CAAChgC,IAChDuhC,GAAal8B,EAAAA,EAAAA,UAClB,kBAAOi8B,EAAa,GAAK9mB,EAAE,sBAAuB,oBAClD,CAAC8mB,EAAY9mB,IAEd,GAAgD1L,EAAAA,EAAAA,UAAS9O,MAAAA,OAAD,EAACA,EAAO4/B,cAAhE,eAAO4B,EAAP,KAAyBC,EAAzB,MAEAnzB,EAAAA,EAAAA,YAAU,kBAAMmzB,EAAoBzhC,EAAM4/B,gBAAe,CAAC5/B,EAAM4/B,eAChE,IAAM8B,GAAer8B,EAAAA,EAAAA,UACpB,kBAAOm8B,EAAmB,GAAKhnB,EAAE,qBAAsB,kBACvD,CAACgnB,EAAkBhnB,IAGdmnB,GAAmB1yB,EAAAA,EAAAA,cAAY,kBAAM,OAAM,IAC3C2Z,GAAW3Z,EAAAA,EAAAA,cAChB,SACCkY,GAIAsa,EAAoBta,EAAGja,OAAOwB,OAE9B,IAAMkzB,EAAa,CAClB3hC,GAAID,EAAM+/B,WACV7xB,IAAK,yBACLQ,MAAOyY,EAAGja,OAAOwB,OAGlB2yB,EAAiBO,KAElB,CAACP,EAAkBrhC,EAAM+/B,aAG1B,OACC,gCACC,gBAAC,EAAAzwB,UAAD,CACC4T,SAAS,yBACTpM,MAAM,OACN+E,QAAS,CAAEC,IAAK,SAChBvM,OAAO,MACPoM,WAAW,QACXlM,cAAc,cAEd,gBAAC,EAAAuM,QAAD,CAASmJ,WAAW,SAASrO,MAAM,QAClC,gBAAC,EAAA1N,KAAD,CAAM2lB,OAAO,QAAQvU,EAAE,wBAAyB,+BAGlD,gBAAC,EAAAoB,IAAD,CACC9E,MAAM,OACN+E,QAAS,CAAEsJ,WAAY,QAASgS,OAAQ,SACxC5nB,OAAO,MACPoM,WAAW,QACXlM,cAAc,cAEd,gBAAC,EAAAmM,IAAD,CAAK9E,MAAM,MAAM+E,QAAS,CAAE5O,MAAO,UAClC,gBAAC,EAAAwuB,MAAD,CACCn4B,MAAOi+B,EACP7yB,MAAO4yB,GAAc,IACrB3lB,WAAW,QACXiN,SAAU+Y,KAGZ,gBAAC,EAAA/lB,IAAD,CAAK9E,MAAM,OACV,gBAAC,EAAA2kB,MAAD,CACCn4B,MAAOo+B,EACPhzB,MAAO8yB,GAAoB,IAC3B7lB,WAAW,QACXiN,SAAU,SACTzB,GADS,OAICyB,EAASzB,QAIvB,gBAAC,EAAAnL,QAAD,CAASmb,OAAO,YCqMnB,GAxQ6B,SAAC,GAKiB,IAJ9C3c,EAI8C,EAJ9CA,EACAxa,EAG8C,EAH9CA,MACA6hC,EAE8C,EAF9CA,kBACAR,EAC8C,EAD9CA,iBAEMrrB,GAAQ3Q,EAAAA,EAAAA,UAAQ,kBAAMmV,EAAE,+BAAgC,gCAA+B,CAACA,IAC9F,GAAsD1L,EAAAA,EAAAA,UAAkC,SAAzB9O,EAAMogC,gBAArE,eAAO0B,EAAP,KAA4BC,EAA5B,KACA,GAA4CjzB,EAAAA,EAAAA,UAAS9O,EAAMmgC,gBAA3D,eAAOA,EAAP,KAAuB6B,EAAvB,KACA,GAAwClzB,EAAAA,EAAAA,WAAS,GAAjD,eAAOmzB,EAAP,KAAqBC,EAArB,KACA,GAAgDpzB,EAAAA,EAAAA,UAAS9O,EAAMigC,aAA/D,eAAOkC,EAAP,KAAyBC,EAAzB,KACA,GAA4CtzB,EAAAA,EAAAA,UAAS9O,MAAAA,OAAD,EAACA,EAAOkgC,gBAA5D,eAAOA,EAAP,KAAuBmC,EAAvB,KACMC,GAAmBj9B,EAAAA,EAAAA,UACxB,iBAAM,CAAC,CAAEqJ,MAAO1O,EAAMggC,YAAa18B,MAAOtD,EAAMggC,gBAChD,CAAChgC,MAAAA,OAAD,EAACA,EAAOggC,cAET,GAAsClxB,EAAAA,EAAAA,WAAS,kBAC9CtM,EAAAA,EAAAA,MAAK8/B,GAAkB,SAACniC,GAAD,OAAUA,EAAKuO,QAAU1O,EAAMggC,kBADvD,eAAOA,EAAP,KAAoBuC,EAApB,MAIAj0B,EAAAA,EAAAA,YAAU,WACTyzB,EAAgD,SAAzB/hC,EAAMogC,kBAC3B,CAACpgC,EAAMogC,kBACV9xB,EAAAA,EAAAA,YAAU,WACT8zB,EAAoBpiC,EAAMigC,eACxB,CAACjgC,EAAMigC,eACV3xB,EAAAA,EAAAA,YAAU,WACT,IAAMk0B,GAAIhgC,EAAAA,EAAAA,MAAK8/B,GAAkB,SAACniC,GAAD,OAAUA,EAAKuO,QAAU1O,EAAMggC,eAChEuC,EAAeC,KACb,CAACF,EAAkBtiC,EAAMggC,eAC5B1xB,EAAAA,EAAAA,YAAU,WACT+zB,OAA4Ch4B,KAA1BrK,MAAAA,OAAA,EAAAA,EAAOkgC,gBAA+B,GAAKlgC,MAAAA,OAA3C,EAA2CA,EAAOkgC,kBAClE,CAAClgC,MAAAA,OAAD,EAACA,EAAOkgC,kBACX5xB,EAAAA,EAAAA,YAAU,WACT0zB,EAAkBhiC,EAAMmgC,kBACtB,CAACngC,EAAMmgC,iBAEV,IAAMsC,GAAwBxzB,EAAAA,EAAAA,cAAY,WACzC8yB,GAAwBD,GACxB,IAAMF,EAAa,CAClB3hC,GAAID,EAAM+/B,WACV7xB,IAAK,2BACLQ,MAAOozB,EAAsB,QAAU,QAExCT,EAAiBO,KACf,CAAC5hC,EAAM+/B,WAAY+B,EAAqBT,IAErCqB,GAAmBr9B,EAAAA,EAAAA,UACxB,kBAAO88B,EAAmB,GAAK3nB,EAAE,kBAAmB,kBACpD,CAACA,EAAG2nB,IAgBCQ,GAAmBt9B,EAAAA,EAAAA,UACxB,kBAAO26B,EAAc,GAAKxlB,EAAE,gBAAiB,aAC7C,CAACwlB,EAAaxlB,IAGTooB,GAAsB3zB,EAAAA,EAAAA,cAC3B,SAACsY,GACAgb,GAAeriC,EAAAA,EAAAA,QAAOoiC,GAAkB,SAACniC,GAAD,OAAUA,EAAKuO,QAAU6Y,KAAQ,IACzE,IAAMqa,EAAa,CAClB3hC,GAAID,EAAM+/B,WACV7xB,IAAK,wBACLQ,MAAO6Y,GAER8Z,EAAiBO,KAElB,CAAC5hC,EAAM+/B,WAAYsB,EAAkBiB,IAGhCO,GAAsBx9B,EAAAA,EAAAA,UAC3B,kBAAMmV,EAAE,2BAA4B,oDACpC,CAACA,IAGIsoB,GAAsBz9B,EAAAA,EAAAA,UAC3B,kBAAO66B,EAAiB,GAAK1lB,EAAE,+BAAgC,oBAC/D,CAACA,EAAG0lB,IAEC6C,GAA6B9zB,EAAAA,EAAAA,cAClC,SACCkY,GAIAkb,EAAkBlb,EAAGja,OAAOwB,OAC5B,IAAMkzB,EAAa,CAClB3hC,GAAID,EAAM+/B,WACV7xB,IAAK,2BACLQ,MAAOyY,EAAGja,OAAOwB,OAElB2yB,EAAiBO,KAElB,CAACP,EAAkBrhC,EAAM+/B,aAGpBiD,GAAsB39B,EAAAA,EAAAA,UAC3B,kBAAO86B,EAAiB,GAAK3lB,EAAE,uBAAwB,uBACvD,CAACA,EAAG2lB,IAGC8C,GAAsB59B,EAAAA,EAAAA,UAC3B,iBAAM,CACL,CACCpF,GAAI,IACJqD,MAAOtD,EAAMggC,YACb1kB,MAAO,SAAC6L,GACP6a,EAAkB7a,EAAGja,OAAO2Y,aAC5B,IAAM+b,EAAa,CAClB3hC,GAAID,EAAM+/B,WACV7xB,IAAK,2BACLQ,MAAOyY,EAAGja,OAAO2Y,aAElBwb,EAAiBO,QAIpB,CAAC5hC,EAAMggC,YAAahgC,EAAM+/B,WAAYsB,IAGjC6B,GAAyBj0B,EAAAA,EAAAA,cAC9B,SAACkY,GACA6a,EAAkB7a,EAAGja,OAAOwB,OAC5B,IAAMkzB,EAAa,CAClB3hC,GAAID,EAAM+/B,WACV7xB,IAAK,2BACLQ,MAAOyY,EAAGja,OAAOwB,OAElB2yB,EAAiBO,KAElB,CAACP,EAAkBrhC,EAAM+/B,aAGpBoD,GAAe99B,EAAAA,EAAAA,UACpB,kBAAMy8B,IAAwBviC,EAAuB6jC,KAAKjD,GAAkB,MAC5E,CAAC2B,EAAqB3B,IAGvB,OACC,gCACC,gBAAC,EAAA7wB,UAAD,CACC4T,SAAS,yBACTpM,MAAM,OACN+E,QAAS,CAAEC,IAAK,SAChBvM,OAAO,MACPoM,WAAW,QACXlM,cAAc,cAEd,gBAAC,EAAAuM,QAAD,CAASmJ,WAAW,SAASrO,MAAM,QAClC,gBAAC,EAAA1N,KAAD,CAAM2lB,OAAO,QAAQ/Y,KAGvB,gBAAC,EAAA4F,IAAD,CACC9E,MAAM,OACN+E,QAAS,CAAEsJ,WAAY,QAASgS,OAAQ,SACxC5nB,OAAO,MACPoM,WAAW,QACXlM,cAAc,cAEd,gBAAC,EAAAmM,IAAD,CACC9E,MAAO+qB,EAAoB,OAAS,MACpChmB,QAAS,CAAE5O,MAAO40B,EAAoB,GAAK,UAE3C,gBAAC,EAAApG,MAAD,CACCn4B,MAAOo/B,EACPh0B,MAAOyzB,EACPvZ,SAAU,SACTzB,GADS,OAhIkB,SAChCA,GAIAib,EAAoBjb,EAAGja,OAAOwB,OAC9B,IAAMkzB,EAAa,CAClB3hC,GAAID,EAAM+/B,WACV7xB,IAAK,wBACLQ,MAAOyY,EAAGja,OAAOwB,OAElB2yB,EAAiBO,GAyHFyB,CAAyBlc,IACpCxL,WAAW,YAGXkmB,GACD,gBAAC,EAAAjmB,IAAD,CAAK9E,MAAM,OACV,gBAAC,EAAA4R,OAAD,CACCplB,MAAOq/B,EACPrd,UAAW0a,EACXhgC,MAAOsiC,EACPzF,cAAc,EACdlhB,WAAW,QACXiN,SAAU,kBAAega,OAK7B,gBAAC,EAAAhnB,IAAD,CACC9E,MAAM,OACN6E,WAAW,QACXlM,cAAc,aACdoM,QAAS,CAAEsJ,WAAY,QAASgS,OAAQ,UAExC,gBAAC,EAAA8C,SAAD,CACC32B,MAAOu/B,EACPn0B,MAAOozB,EACP7lB,QAAS,kBAAYwmB,QAGvB,gBAAC,EAAA7mB,IAAD,CACC9E,MAAM,OACN+E,QAAS,CAAEsJ,WAAY,QAASgS,OAAQ,SACxC5nB,OAAO,MACPoM,WAAW,QACXlM,cAAc,cAEd,gBAAC,EAAAmM,IAAD,CAAK9E,MAAM,MAAM+E,QAAS,CAAE5O,MAAO,UAClC,gBAAC,EAAAwuB,MAAD,CACCn4B,MAAOw/B,EACPp0B,MAAOwxB,EACPvkB,WAAW,QACXO,UAAW4lB,EACXlZ,SAAU,SACTzB,GADS,OAIC4b,EAA2B5b,OAGxC,gBAAC,EAAAvL,IAAD,CAAK9E,MAAM,OACV,gBAAC,EAAAuT,SAAD,CACCrqB,MAAOijC,EACPzZ,UAAU,eACV9Z,MAAO,CAAEwgB,SAAU,KACnBrV,QAAS,kBAAYqnB,GAAgB,IACrC/X,OAAQ,kBAAY+X,GAAgB,IACpChmB,UAAW4lB,GAEX,gBAAC,EAAArG,MAAD,CACCn4B,MAAO0/B,EACPt0B,MAAOyxB,EACPvX,SAAU,SACTzB,GADS,OAIC+b,EAAuB/b,IAClCxL,WAAW,QACX2nB,SAAUH,EACVI,WAAY,kBACX,gBAAC,EAAA9f,KAAD,CAAMviB,KAAM+gC,EAAe,UAAY,eAExC/lB,UAAW4lB,OAKf,gBAAC,EAAA9lB,QAAD,CAASmb,OAAO,YCpJnB,GAhHiC,SAAC,GAIiB,IAHlD3c,EAGkD,EAHlDA,EACAxa,EAEkD,EAFlDA,MACAuxB,EACkD,EADlDA,eAEMvb,GAAQ3Q,EAAAA,EAAAA,UACb,kBAAMmV,EAAE,oCAAqC,wCAC7C,CAACA,IAGIgpB,GAAgBn+B,EAAAA,EAAAA,UACrB,kBAAMrF,EAAMyjC,iBAAmBjpB,EAAE,mBAAoB,sBACrD,CAACA,EAAGxa,EAAMyjC,kBAEX,GAAoC30B,EAAAA,EAAAA,UAAS,IAA7C,eAAOwyB,EAAP,KAAmBoC,EAAnB,KACA,GAAwC50B,EAAAA,EAAAA,WAAS,GAAjD,eAAOq0B,EAAP,KAAqBQ,EAArB,KACMC,GAAav+B,EAAAA,EAAAA,UAClB,kBAAOi8B,EAAa,GAAK9mB,EAAE,sBAAuB,4BAClD,CAAC8mB,EAAY9mB,IAGRoO,GAAW3Z,EAAAA,EAAAA,cAChB,SACCkY,GAIAuc,EAAcvc,EAAGja,OAAOwB,OACxBi1B,EAAgBpkC,EAAuB6jC,KAAKjc,EAAGja,OAAOwB,UAEvD,CAACg1B,EAAeC,IAGXE,GAAW50B,EAAAA,EAAAA,cAAY,WAC5B9E,GAAAA,WAEEmC,aAAa9O,EAFf2M,CAGE,qBAHF,2FAIsFm3B,EAJtF,eAMQ,WACN/P,EAAe,CACdrjB,IAAK,MACLyG,SAAS,EACT3T,KAAM,QACNsC,MAAOkX,EAAE,iBAAkB,0CAC3BujB,gBAAiB,IACjBC,YAAY,SAGb,CAACzM,EAAgB+P,EAAY9mB,IAEhC,OACC,gCACC,gBAAC,EAAAlL,UAAD,CACC4T,SAAS,yBACTpM,MAAM,OACN+E,QAAS,CAAEC,IAAK,SAChBvM,OAAO,MACPoM,WAAW,QACXlM,cAAc,cAEd,gBAAC,EAAAuM,QAAD,CAASmJ,WAAW,SAASrO,MAAM,QAClC,gBAAC,EAAA1N,KAAD,CAAM2lB,OAAO,QAAQ/Y,EAArB,OAGF,gBAAC,EAAA4F,IAAD,CACC9E,MAAM,OACN+E,QAAS,CAAEsJ,WAAY,QAASgS,OAAQ,SACxC5nB,OAAO,MACPoM,WAAW,QACXlM,cAAc,cAEd,gBAAC,EAAAmM,IAAD,CAAK9E,MAAM,OAAO+E,QAAS,CAAEsb,OAAQ,WACpC,gBAAC,EAAA/tB,KAAD,CAAMuS,WAAW,QAAQ7b,MAAM,aAC7B0jC,IAGH,gBAAC,EAAArnB,QAAD,OAED,gBAAC,EAAAP,IAAD,CACC9E,MAAM,OACN+E,QAAS,CAAEsJ,WAAY,QAASgS,OAAQ,SACxC5nB,OAAO,MACPoM,WAAW,QACXlM,cAAc,cAEd,gBAAC,EAAAmM,IAAD,CAAK2H,oBAAkB,EAAC1H,QAAS,CAAE5O,MAAO,UACzC,gBAAC,EAAAwuB,MAAD,CACCn4B,MAAOsgC,EACPl1B,MAAO4yB,EACP3lB,WAAW,QACXiN,SAAUA,EACV0a,SAAyB,KAAfhC,IAAsB6B,KAGlC,gBAAC,EAAAvnB,IAAD,CAAK9E,MAAM,OACV,gBAAC,EAAAC,OAAD,CACCzT,MAAOkX,EAAE,2BAA4B,uBACrC1a,MAAM,UACNkB,KAAK,WACLkb,UAAWinB,EACXlnB,QAAS4nB,MAKZ,gBAAC,EAAA7nB,QAAD,CAASmb,OAAO,YC+BnB,GAtIkB,SAAC,GAKiB,IAJnC3c,EAImC,EAJnCA,EACAxa,EAGmC,EAHnCA,MACA8jC,EAEmC,EAFnCA,mBACAC,EACmC,EADnCA,sBAEA,GAAsCj1B,EAAAA,EAAAA,UAAS,KAA/C,eAAOk1B,EAAP,KAAoBC,EAApB,KAsCA,OACC,gCACC,gBAAC,EAAA30B,UAAD,CACC4T,SAAS,yBACTpM,MAAM,OACN+E,QAAS,CAAEC,IAAK,SAChBvM,OAAO,MACPoM,WAAW,QACXlM,cAAc,cAEd,gBAAC,EAAAuM,QAAD,CAASmJ,WAAW,SAASgS,OAAO,QAAQrgB,MAAM,QACjD,gBAAC,EAAA1N,KAAD,CAAM2lB,OAAO,QAAQvU,EAAE,kBAAmB,eAE3C,gBAAC,EAAA2mB,KAAD,CACCnhC,MAAOA,EACPohC,cAjDa,SAAC,GAAD,IAAGjhC,EAAH,EAAGA,KAAH,OAChB,gCACC,gBAAC,EAAAmP,UAAD,CACC2M,QAAS,kBALQvN,EAKevO,EAAKF,GALI8jC,EAAsBr1B,GAA/C,IAACA,GAMjBgN,YAAY,aACZjM,cAAc,aACdoM,QAAS,CAAEC,IAAK,UAEhB,gBAAC,EAAAF,IAAD,CAAK9E,MAAM,OAAOrH,cAAc,iBAC/B,gBAAC,EAAAH,UAAD,CAAWoM,YAAY,aAAajM,cAAc,aAAaqH,MAAM,OACpE,gBAAC,EAAAkF,QAAD,CAAS/O,MAAM,SACd,gBAAC,EAAA7D,KAAD,CAAM2lB,OAAO,UAAU9P,KAAK,SAC1B9e,EAAKmD,QAGR,gBAAC,EAAA0Y,QAAD,CAAS/O,MAAM,SACd,gBAAC,EAAA7D,KAAD,CAAM2lB,OAAO,UAAU9P,KAAK,QAAQnf,MAAM,aACxCK,EAAK8Y,SAIT,gBAAC,EAAA3J,UAAD,CAAWwH,MAAM,MAAMrH,cAAc,YACpC,gBAAC,EAAArG,KAAD,CAAM2lB,OAAO,UAAU9P,KAAK,SAC1B9e,EAAK8M,SAKT,gBAAC,EAAA2O,IAAD,CAAK9E,MAAM,SAEZ,gBAAC,EAAAqF,QAAD,QAoBEsP,OAAQqY,EACRv0B,OAAO,MACP20B,WAAYJ,EACZK,cAAeJ,KAGjB,gBAAC,EAAAnoB,IAAD,CACCC,QAAS,CAAEsJ,WAAY,SACvBrO,MAAM,OACNrH,cAAc,aACdkM,WAAW,SAEX,gBAAC,EAAAK,QAAD,CAAS/O,MAAM,SACd,gBAAC,EAAA8J,OAAD,CACCzT,MAAOkX,EAAE,qBAAsB,gBAC/B1a,MAAM,UACNkB,KAAK,WACLkb,UAAQ,KAGV,gBAAC,EAAAF,QAAD,CAAS/O,MAAM,SACd,gBAAC,EAAA8J,OAAD,CACCzT,MAAOkX,EAAE,yBAA0B,oBACnC1a,MAAM,UACNkB,KAAK,WACLkb,UAAQ,KAGV,gBAAC,EAAAnF,OAAD,CAAQzT,MAAOkX,EAAE,eAAgB,UAAW1a,MAAM,QAAQkB,KAAK,WAAWkb,UAAQ,KAEnF,gBAAC,EAAA5M,UAAD,CACC4T,SAAS,yBACTpM,MAAM,OACN+E,QAAS,CAAEC,IAAK,SAChBvM,OAAO,MACPoM,WAAW,QACXlM,cAAc,cAEd,gBAAC,EAAA20B,WAAD,CACC10B,MAAO,CAAEoH,MAAO,QAChBpI,MAAOs1B,EACPv0B,cAAc,aACdmZ,SAAU,SAACyb,GAAD,OAA4BJ,EAAeI,KAErD,gBAAC,EAAAC,MAAD,CACCxtB,MAAM,OACNxT,MAAOkX,EACN,+BACA,kDAED9L,MAAM,MAEP,gBAAC,EAAA41B,MAAD,CACChhC,MAAOkX,EACN,6BACA,0DAED9L,MAAM,MAEP,gBAAC,EAAA41B,MAAD,CACChhC,MAAOkX,EACN,0BACA,wEAED9L,MAAM,MAEP,gBAAC,EAAA41B,MAAD,CAAOhhC,MAAOkX,EAAE,kBAAmB,sCAAuC9L,MAAM,OAEjF,gBAAC,EAAAsN,QAAD,CAASmb,OAAO,aC/DpB,GAjFwB,SAAC,GAAuE,IAArE3c,EAAqE,EAArEA,EAAGxa,EAAkE,EAAlEA,MAAOqhC,EAA2D,EAA3DA,iBACpC,GAAwCvyB,EAAAA,EAAAA,UAAS9O,EAAM4/B,cAAvD,eAAO2E,EAAP,KAAqBC,EAArB,KACMC,GAAep/B,EAAAA,EAAAA,UACpB,kBAAOk/B,EAAe,GAAK/pB,EAAE,qBAAsB,kBACnD,CAAC+pB,EAAc/pB,KAEhBlM,EAAAA,EAAAA,YAAU,WACTk2B,EAAgBxkC,EAAM4/B,gBACpB,CAAC5/B,EAAM4/B,eAEV,IAAMhX,GAAW3Z,EAAAA,EAAAA,cAChB,SAACkY,GACAqd,EAAgBrd,EAAGja,OAAOwB,OAC1B,IAAMkzB,EAAa,CAClB3hC,GAAID,EAAM+/B,WACV7xB,IAAK,yBACLQ,MAAOyY,EAAGja,OAAOwB,OAGlB2yB,EAAiBO,KAElB,CAACP,EAAkBrhC,EAAM+/B,WAAYyE,IAGtC,OACC,gCACC,gBAAC,EAAAl1B,UAAD,CACC4T,SAAS,yBACTpM,MAAM,OACN+E,QAAS,CAAEC,IAAK,SAChBvM,OAAO,MACPoM,WAAW,QACXlM,cAAc,cAEd,gBAAC,EAAAuM,QAAD,CAASmJ,WAAW,SAASrO,MAAM,QAClC,gBAAC,EAAA1N,KAAD,CAAM2lB,OAAO,QAAQvU,EAAE,yBAA0B,uBAGnD,gBAAC,EAAAoB,IAAD,CACC9E,MAAM,OACN+E,QAAS,CAAEsJ,WAAY,QAASgS,OAAQ,SACxC5nB,OAAO,MACPoM,WAAW,QACXlM,cAAc,cAEd,gBAAC,EAAAmM,IAAD,CAAKF,YAAY,WAAWjM,cAAc,aAAaqH,MAAM,QAC5D,gBAAC,EAAA8E,IAAD,CAAKF,YAAY,aAAa5E,MAAM,OAAOrH,cAAc,cACxD,gBAAC,EAAArG,KAAD,CAAMuS,WAAW,QAAQ7b,MAAM,YAAYgX,MAAM,QAC/C0D,EACA,2BACA,gFAIH,gBAAC,EAAAoB,IAAD,CAAKF,YAAY,aAAa5E,MAAM,OAAOrH,cAAc,cACxD,gBAAC,EAAArG,KAAD,CAAMuS,WAAW,QAAQ7b,MAAM,aAC7B0a,EACA,2BACA,2GAML,gBAAC,EAAAoB,IAAD,CACC9E,MAAM,OACN+E,QAAS,CAAEsJ,WAAY,QAASgS,OAAQ,SACxC5nB,OAAO,MACPoM,WAAW,QACXlM,cAAc,cAEd,gBAAC,EAAAmM,IAAD,CAAK2H,oBAAkB,GACtB,gBAAC,EAAAkY,MAAD,CAAOn4B,MAAOmhC,EAAc/1B,MAAO61B,EAAc5oB,WAAW,QAAQiN,SAAUA,MAIhF,gBAAC,EAAA5M,QAAD,CAASmb,OAAO,YC0GnB,GArL0B,SAAC,GAIiB,IAH3C3c,EAG2C,EAH3CA,EACAxa,EAE2C,EAF3CA,MACAqhC,EAC2C,EAD3CA,iBAEMrrB,GAAQ3Q,EAAAA,EAAAA,UAAQ,kBAAMmV,EAAE,oBAAqB,sBAAqB,CAACA,IACnEkqB,GAAkBr/B,EAAAA,EAAAA,UACvB,kBAAMmV,EAAE,sBAAuB,mDAC/B,CAACA,IAMF,GAAwD1L,EAAAA,EAAAA,UACxB,SAA/B9O,EAAMugC,sBADP,eAA6BoE,GAA7B,WAGA,GAAkD71B,EAAAA,EAAAA,UAAqC,SAA5B9O,EAAMwgC,mBAAjE,eAAOA,EAAP,KAA0BoE,EAA1B,KACA,GAAsD91B,EAAAA,EAAAA,UAAS9O,EAAM6kC,qBAArE,eAAOA,EAAP,KAA4BC,EAA5B,MAEAx2B,EAAAA,EAAAA,YAAU,WACTs2B,EAAiD,SAA5B5kC,EAAMwgC,qBACzB,CAACxgC,EAAMwgC,qBACVlyB,EAAAA,EAAAA,YAAU,WACTw2B,EAAuB9kC,EAAM6kC,uBAC3B,CAAC7kC,EAAM6kC,uBACVv2B,EAAAA,EAAAA,YAAU,WACTq2B,EAAuD,SAA/B3kC,EAAMugC,wBAC5B,CAACvgC,EAAMugC,uBAEV,IAAMwE,GAA2B1/B,EAAAA,EAAAA,UAChC,kBAAOw/B,EAAsB,GAAKrqB,EAAE,kBAAmB,gBACvD,CAACA,EAAGqqB,IAECG,GAA2B/1B,EAAAA,EAAAA,cAAY,WAC5C21B,GAAsBpE,GACtB,IAAMoB,EAAa,CAClB3hC,GAAID,EAAM+/B,WACV7xB,IAAK,8BACLQ,MAAO8xB,EAAoB,QAAU,QAEtCa,EAAiBO,KACf,CAAC5hC,EAAM+/B,WAAYsB,EAAkBb,IAElC2C,GAAe99B,EAAAA,EAAAA,UACpB,kBAAMm7B,IAAsBjhC,EAAuB6jC,KAAKyB,GAAuB,MAC/E,CAACA,EAAqBrE,IAGjByE,GAA8Bh2B,EAAAA,EAAAA,cACnC,SAACkY,GACA2d,EAAuB3d,EAAGja,OAAOwB,OACjC,IAAMkzB,EAAa,CAClB3hC,GAAID,EAAM+/B,WACV7xB,IAAK,gCACLQ,MAAOyY,EAAGja,OAAOwB,OAGlB2yB,EAAiBO,KAElB,CAACP,EAAkBrhC,EAAM+/B,aAgC1B,OACC,gCACC,gBAAC,EAAAzwB,UAAD,CACC4T,SAAS,yBACTpM,MAAM,OACN+E,QAAS,CAAEC,IAAK,SAChBvM,OAAO,MACPoM,WAAW,QACXlM,cAAc,cAEd,gBAAC,EAAAuM,QAAD,CAASmJ,WAAW,SAASrO,MAAM,QAClC,gBAAC,EAAA1N,KAAD,CAAM2lB,OAAO,QAAQ/Y,KAGvB,gBAAC,EAAA4F,IAAD,CACC9E,MAAM,OACN6E,WAAW,QACXlM,cAAc,aACdoM,QAAS,CAAEsJ,WAAY,QAASgS,OAAQ,UAExC,gBAAC,EAAA8C,SAAD,CACC32B,MAAOohC,EACPh2B,MAAO8xB,EACPvkB,QAAS+oB,KAGX,gBAAC,EAAAppB,IAAD,CACC9E,MAAM,OACN+E,QAAS,CAAEsJ,WAAY,QAASgS,OAAQ,SACxC5nB,OAAO,MACPoM,WAAW,QACXlM,cAAc,cAEd,gBAAC,EAAAmM,IAAD,CAAK9E,MAAM,MAAM+E,QAAS,CAAE5O,MAAO,UAClC,gBAAC,EAAAwuB,MAAD,CACCn4B,MAAOyhC,EACPr2B,MAAOm2B,EACPlpB,WAAW,QACXO,UAAWskB,EACX8C,SAAUH,EACVva,SAAU,SACTzB,GADS,OAIC8d,EAA4B9d,QAuC1C,gBAAC,EAAAnL,QAAD,CAASmb,OAAO,Y,ykBCpJZ,IAAM+N,GAAmB,SAAC,GAAiE,UAA/DC,EAA+D,EAA/DA,kBAAmB3qB,EAA4C,EAA5CA,EACrD,GAAwB1L,EAAAA,EAAAA,UAAe,IAAvC,eAAOwI,EAAP,KAAasmB,EAAb,KACA,GAAoD9uB,EAAAA,EAAAA,UAAS,KAA7D,eAAOg1B,EAAP,KAA2BC,EAA3B,KACA,GAAoDj1B,EAAAA,EAAAA,UAAS,GAA7D,eAAOmwB,EAAP,KAA2BE,EAA3B,KACA,GAAoCrwB,EAAAA,EAAAA,UAA0Bq2B,GAA9D,eAAOv6B,EAAP,KAAmBs0B,EAAnB,KACA,GAAkCpwB,EAAAA,EAAAA,UAA0B,IAA5D,eAAOs2B,EAAP,KAAkBC,EAAlB,KAEMC,EAAgBn4B,KAAkB7C,MAAMi7B,4BACxChP,GAAStnB,EAAAA,EAAAA,cACd,SAACu2B,GACA,IAAQxkC,EAA6CwkC,EAA7CxkC,KAAM4gC,EAAuC4D,EAAvC5D,WAAYjqB,EAA2B6tB,EAA3B7tB,WAAYC,EAAe4tB,EAAf5tB,WACtCgmB,GAAQ,SAAC6H,GAAc,gBAChBC,EAAU,WAAGljC,EAAAA,EAAAA,MAClBijC,MAAAA,GADsB,UACtBA,EAAWhuB,gBADW,aACtB,EAAqBC,YACrB,SAACvX,GAAD,OAAUA,EAAKF,MAAO2hC,MAAAA,OAAZ,EAAYA,EAAY3hC,cAFnB,aAAG,EAGhBuG,MACGkR,OACiB,IAAfkqB,EAAP,mBAEM6D,EAAUhuB,gBAFhB,aAEM,EAAoBC,YAF1B,cAGIkqB,EAAW3hC,GAAK,CAChBA,GAAI2hC,EAAW3hC,GACfuG,MAAO,SAAKk/B,GAAP,cAAoB9D,EAAW1zB,IAAM0zB,EAAWlzB,WALzD,UAQG+2B,EAAUhuB,gBARb,aAQG,EAAoBC,WAClBiuB,GAAgB,UAAAF,EAAUhuB,gBAAV,eAAoBG,aAAcA,EAClDguB,GAAgB,UAAAH,EAAUhuB,gBAAV,eAAoBE,aAAcA,EACxD,gBACI8tB,GADJ,cAGEzkC,EAAO,CACP2W,WAAYiuB,EACZhuB,WAAY+tB,EACZjuB,WAAAA,UAKJ,CAACkmB,IAGIiI,GAAmB52B,EAAAA,EAAAA,cAAY,SAACu2B,GACrC,IAAQxkC,EAAqBwkC,EAArBxkC,KAAM4gC,EAAe4D,EAAf5D,WACdhE,GAAQ,SAAC6H,GAAc,cAChBC,EAAU,WAAGljC,EAAAA,EAAAA,MAClBijC,MAAAA,GADsB,UACtBA,EAAWhuB,gBADW,aACtB,EAAqBG,YACrB,SAACzX,GAAD,OAAUA,EAAKqG,MAAMqR,aAAc+pB,MAAAA,OAAzB,EAAyBA,EAAY3hC,cAFhC,aAAG,EAGhBuG,MACGs/B,OACiB,IAAflE,EAAP,mBAEM6D,EAAUhuB,gBAFhB,aAEM,EAAoBG,YAF1B,cAGIgqB,EAAW3hC,GAAK,CAChBuG,MAAO,SAAKk/B,GAAP,cAAoB9D,EAAW1zB,IAAM0zB,EAAWlzB,gBAGtDrE,EACJ,gBACIo7B,GADJ,cAGEzkC,EAAO,CACP4W,WAAYkuB,EACZnuB,WAAU,UAAE8tB,EAAUhuB,gBAAZ,aAAE,EAAoBE,WAChCD,WAAU,UAAE+tB,EAAUhuB,gBAAZ,aAAE,EAAoBC,mBAIjC,IACG2nB,GAAmBpwB,EAAAA,EAAAA,cACxB,SAAC2I,GAKA2e,EAJY,CACXv1B,KAAM,WACN4W,WAAAA,MAIF,CAAC2e,IAGI8K,GAAmBpyB,EAAAA,EAAAA,cACxB,SAAC2yB,GACA,IAAM4D,EAAM,CACXxkC,KAAM,WACN4gC,WAAY,CAAE3hC,GAAI2hC,EAAW3hC,GAAIiO,IAAK0zB,EAAW1zB,IAAKQ,MAAOkzB,EAAWlzB,QAE5C,iBAAlBkzB,EAAW3hC,GACrBs2B,EAAOiP,GAC4B,iBAAlB5D,EAAW3hC,IAC5B4lC,EAAiBL,GAElB,IAAMO,GAAqBC,EAAAA,EAAAA,aAAWrxB,EAAAA,EAAAA,SAAQitB,EAAW1zB,IAAK,aAAc,KAC5EgxB,GACC/rB,EAAAA,EAAAA,KAAIvI,GAAY,SAACzK,GAAD,OACfA,EAAK4/B,aAAe6B,EAAW3hC,GAA/B,SACQE,GADR,cACe4lC,EAAqBnE,EAAWlzB,QAC5CvO,QAIN,CAACo2B,EAAQ3rB,EAAYi7B,IAGhBzG,GAAmBnwB,EAAAA,EAAAA,cACxB,SAAC0I,GAKA4e,EAJY,CACXv1B,KAAM,WACN2W,WAAAA,MAIF,CAAC4e,IAGIhF,GAAiBuM,EAAAA,EAAAA,gBAEvBxvB,EAAAA,EAAAA,YAAU,WACTnE,GAAAA,WAEEmC,aAAa9O,EAFf2M,CAGE,YAHF,mEAMEQ,MAAK,SAAClC,GACN,GAAIA,EAAIw9B,IAAK,CACZ,IAAMC,GAAgC/yB,EAAAA,EAAAA,KAAI1K,EAAIw9B,KAAK,SAAC9lC,GAAD,MAAW,CAC7D8Y,MAAO9Y,EAAK2Y,EACZ7L,MAAO9M,EAAK8M,UAEPk5B,GAAgBhkC,EAAAA,EAAAA,QACrB+jC,GACA,SAACE,EAA2BjmC,GAC3B,IAAM0gC,GAAQl9B,EAAAA,EAAAA,WAAUyiC,EAAQ,CAAEntB,MAAO9Y,EAAK8Y,QAU9C,OATe,IAAX4nB,EACHuF,EAAOnxB,KAAK,CAAEgE,MAAO9Y,EAAK8Y,MAAOhM,MAAO9M,EAAK8M,SAE7Cm5B,EAAOnxB,KAAK,CACXgE,MAAO9Y,EAAK8Y,MACZhM,MAAO,GAAF,OAAK9M,EAAK8M,MAAV,gBAAuBm5B,EAAOvF,GAAO5zB,SAE3Cm5B,EAAOC,OAAOxF,EAAO,IAEfuF,IAER,IAEKA,GAASjzB,EAAAA,EAAAA,KAAIgzB,GAAe,SAAChmC,EAAuB0gC,GAAxB,UAAC,MAC/B1gC,GAD8B,IAEjCF,GAAI4gC,EAAMC,gBAEXuE,EAAae,SAGd,KAEH93B,EAAAA,EAAAA,YAAU,WACT4wB,EAAciG,GACdvH,EAAQ,MACN,CAACuH,IAEJ,IAAMprB,GAAS9K,EAAAA,EAAAA,cAAY,WAAM,YAE/Bk2B,EAAkBvf,SAChB,UAAAtO,EAAKG,gBAAL,mBAAeG,kBAAf,eAA2BgO,SAAU,KACrCtO,MAAAA,GAAA,UAAAA,EAAMG,gBAAN,mBAAgBE,kBAAhB,eAA4BiO,SAAU,GACxC0f,EAEA/T,EAAe,CACdrjB,IAAK,MACLyG,SAAS,EACT3T,KAAM,QACNsC,MAAOkX,EACN,6CACA,qFAEDujB,gBAAiB,IACjBC,YAAY,KAId3mB,GAAaC,GACX3M,MAAK,WACL4mB,EAAe,CACdrjB,IAAK,MACLyG,SAAS,EACT3T,KAAM,OACNsC,MAAOkX,EAAE,kCAAmC,yBAC5CujB,gBAAiB,IACjBC,YAAY,OARf,OAWQ,WACNzM,EAAe,CACdrjB,IAAK,MACLyG,SAAS,EACT3T,KAAM,QACNsC,MAAOkX,EAAE,iBAAkB,0CAC3BujB,gBAAiB,IACjBC,YAAY,OAGfJ,EAAQ,OACN,CAACuH,EAAkBvf,OAAQtO,EAAMguB,EAAe/T,EAAgB/W,IAE7DS,GAAWhM,EAAAA,EAAAA,cAAY,kBAAM2uB,EAAQ,MAAK,IAC1C5nB,GAAgB3Q,EAAAA,EAAAA,UAAQ,kBAAMmV,EAAE,iBAAkB,cAAa,CAACA,IAChEU,GAAU7V,EAAAA,EAAAA,UAAQ,mBAAOqb,EAAAA,EAAAA,SAAQpJ,KAAO,CAACA,IAC/C,OACC,gCACC,gBAAC,GAAD,CAAgByC,OAAQA,EAAQkB,SAAUA,EAAUC,QAASA,EAASlF,MAAOA,IAC7E,gBAAC,EAAA1G,UAAD,CAAWqM,WAAW,QAAQE,QAAS,CAAEuS,IAAK,SAAW7e,OAAO,QAChE,gBAAC,EAAAD,UAAD,CACCqM,WAAW,QACXlM,cAAc,aACdoM,QAAS,CAAEC,IAAK,SAChBpM,MAAO,CAAEqR,SAAU,SAEnB,gBAAC,GAAD,CACCvG,EAAGA,EACH5P,WAAYA,EACZs0B,cAAeA,EACfD,mBAAoBA,EACpBE,sBAAuBA,EACvBC,iBAAkBA,EAClBC,iBAAkBA,KAElB,UAAAz0B,EAAWq0B,UAAX,eAAgCj+B,QAASwZ,EAAE,gBAAiB,YAC5D,gCACC,gBAAC,GAAD,CACCA,EAAGA,EACHxa,MAAO4K,EAAW,GAClBy2B,iBAAkBA,IAEnB,gBAAC,GAAD,CACC7mB,EAAGA,EACHxa,MAAO4K,EAAWq0B,GAClB4C,mBAAmB,EACnBR,iBAAkBA,IAEnB,gBAAC,GAAD,CACC7mB,EAAGA,EACHxa,MAAO4K,EAAWq0B,GAClB1N,eAAgBA,IAEjB,gBAAC,GAAD,CACC/W,EAAGA,EACHxa,MAAOolC,EACPtB,mBAAoBA,EACpBC,sBAAuBA,MAIzB,UAAAn5B,EAAWq0B,UAAX,eAAgCj+B,QAASwZ,EAAE,gBAAiB,YAC5D,gCACC,gBAAC,GAAD,CACCA,EAAGA,EACHxa,MAAO4K,EAAWq0B,GAClBoC,iBAAkBA,IAEnB,gBAAC,GAAD,CACC7mB,EAAGA,EACHxa,MAAO4K,EAAWq0B,GAClB4C,mBAAmB,EACnBR,iBAAkBA,IAEnB,gBAAC,GAAD,CACC7mB,EAAGA,EACHxa,MAAO4K,EAAWq0B,GAClBoC,iBAAkBA,MAIpBj7B,EAAAA,EAAAA,UAAS,CAAC,OAAQ,OAAV,UAAkBwE,EAAWq0B,UAA7B,aAAkB,EAAgCj+B,OAC1D,oCCvRL,SA/BuB,WACtB,IAAMslC,EAAkB35B,KACxB,GAAY4N,EAAAA,EAAAA,KAALC,GAAP,eACM2qB,GAAoB9/B,EAAAA,EAAAA,UAAQ,WACjC,IAAMkhC,GAAOpzB,EAAAA,EAAAA,KAAImzB,MAAAA,OAAD,EAACA,EAAiB17B,WAAW6M,UAAU,SAACtX,EAAM0gC,GAAP,MAAkB,CACxE5gC,GAAkB,YAAdE,EAAKU,KAAqB,KAAOggC,EAAQ,GAAGC,WAChD9/B,KAAoB,YAAdb,EAAKU,KAAqB2Z,EAAE,gBAAiB,WAAaA,EAAE,gBAAiB,WACnFulB,WAAY5/B,EAAK2K,OAAO07B,sBAAwB,GAChDxG,YAAa7/B,EAAK2K,OAAOkN,uBAAyB,GAClD4nB,aAAcz/B,EAAK2K,OAAOgN,wBAA0B,GACpDmoB,YAAa9/B,EAAK2K,OAAOiN,uBAAyB,GAClD0rB,gBAAiBtjC,EAAK2K,OAAO27B,uBAAyB,GACtDvG,eAAgB//B,EAAK2K,OAAOoN,0BAA4B,GACxDioB,eAAgBhgC,EAAK2K,OAAOqN,0BAA4B,GACxDioB,eAAgBjgC,EAAK2K,OAAOmN,0BAA4B,GACxDooB,WAAYlgC,EAAK2K,OAAO47B,sBAAwB,GAChDpG,eAAgBngC,EAAK2K,OAAO67B,0BAA4B,GACxDpG,qBAAsBpgC,EAAK2K,OAAOyN,gCAAkC,GACpEioB,kBAAmBrgC,EAAK2K,OAAOwN,6BAA+B,GAC9DusB,oBAAqB1kC,EAAK2K,OAAO87B,+BAAiC,OAE7DR,EAAS,CAACG,EAAKA,EAAK3gB,OAAS,IAAvB,gBAA8B2gB,IAE1C,OADAH,EAAOS,MACAT,IACL,CAACE,EAAiB9rB,IAErB,OAAO2qB,EAAkBvf,OAAS,EACjC,gBAACsf,GAAD,CAAkBC,kBAAmBA,EAAmB3qB,EAAGA,IACxD,MCjBL,IAAMssB,GAAgB,CACrB5jC,MAAOzF,EACPwC,GAAIxC,EACJ4E,IAAK5E,GAEAspC,GAAqB,SAACvsB,GAAD,MAAmC,CAC7Dva,GAAIxC,EACJ4E,IAAK5E,EACLyF,MAAOzF,EACP0F,UAAW,qBACXC,SAAU,GACVC,SAAS,EACTC,MAAOkX,EAAE,eAAgB,YACzB9a,MAAO,CACNC,MAAM,KAGFqnC,GAAuB,CAC5B/mC,GAAIxC,EACJ4E,IAAK5E,EACLyF,MAAOzF,EACP0F,UxB/ByD,SAAC,GAAiB,IAAf2qB,EAAe,EAAfA,SACtDmZ,EAAgB7mC,GAAY,SAAC8E,GAAD,OAAOA,EAAE5D,MAAMM,YAC3C2S,GAAUS,EAAAA,GAAAA,MACVnP,GAAWsO,EAAAA,GAAAA,MACXnU,GAAQqF,EAAAA,EAAAA,UACb,kBACC4hC,EAAc9zB,KAAI,SAACvP,GAAD,MAAW,CAC5B3D,GAAI2D,EAAKV,MACTI,MAAOM,EAAKN,MACZpC,KAAM0C,EAAK1C,KACXuqB,OAAQ5lB,EAAS2F,WAAT,WAA0B/N,EAA1B,YAA6CmG,EAAKV,QAA+B,KAApB2C,EAAShE,OAC9EqlC,aACCrhC,EAAS2F,WAAT,WAA0B/N,EAA1B,YAA6CmG,EAAKV,QAA+B,KAApB2C,EAAShE,OACvEoa,QAAS,SAAC7P,GACTA,EAAE0iB,kBACFva,EAAQU,KAAR,WAAiBxX,EAAjB,YAAoCmG,EAAKV,SAE1ClD,OAAOmT,EAAAA,EAAAA,KAAIvP,EAAK0Z,aAAa,SAACnd,GAAD,UAAC,MAC1BA,GADyB,IAE5BsrB,OAAQ5lB,EAAShE,SAAT,mBAAgC1B,EAAKF,IAC7CinC,aAAcrhC,EAAShE,SAAT,mBAAgC1B,EAAKF,IACnDgc,QAAS,SAAC7P,GACTA,EAAE0iB,kBACFva,EAAQI,QAAR,WAAoBlX,EAApB,YAAuCmG,EAAKV,MAA5C,oBAA6D/C,EAAKF,iBAItE,CAACsU,EAAS1O,EAAS2F,SAAU3F,EAAShE,OAAQolC,IAEzCE,GAAiB9hC,EAAAA,EAAAA,UACtB,kBACC4hC,EAAc9zB,KAAI,SAACuT,GAAD,OACjB,gBAAC,EAAA8B,QAAD,CAASllB,MAAOojB,EAAEpjB,MAAOkmB,UAAU,QAAQtb,IAAKwY,EAAEzmB,IACjD,gBAAC,EAAAoiB,WAAD,CACCnhB,KAAMwlB,EAAExlB,KACR+a,QAAS,kBAAY1H,EAAQU,KAAR,WAAiBxX,EAAjB,YAAoCipB,EAAExjB,SAC3D+b,KAAK,QACLwK,WAAWrV,EAAAA,EAAAA,YAAWvO,EAAS2F,SAAV,WAAwB/N,EAAxB,YAA2CipB,EAAExjB,gBAItE,CAACqR,EAAS1O,EAAS2F,SAAUy7B,IAE9B,OAAOnZ,EAAW,gBAAC,EAAAU,UAAD,CAAWxuB,MAAOA,IAAY,gCAAGmnC,KwBT9CC,GAAkB,CACvBnnC,GAAIxC,EACJ4E,IAAK5E,EACLyF,MAAOzF,EACP0F,UCtCkC,WAClC,IAAM8jC,EAAgB7mC,GAAY,SAAC8E,GAAD,OAAOA,EAAE5D,MAAMM,YAC3CP,GAASgE,EAAAA,EAAAA,UACd,kBACC8N,EAAAA,EAAAA,KAAI8zB,GAAe,SAACrjC,GAAD,OAClB,gBAAC,MAAD,CAAOsK,IAAKtK,EAAKV,MAAOke,OAAK,EAACvM,KAAI,WAAMpX,EAAN,YAAyBmG,EAAKV,QAC/D,gBAAC,GAAD,CAAoB6O,IAAKnO,EAAKvB,KAC7B,gBAACuB,EAAKT,UAAN,aAIJ,CAAC8jC,IAEF,OACC,gBAAC,MAAD,KACE5lC,EACD,gBAAC,MAAD,CAAUigB,KAAI,WAAM7jB,GAAmB2jB,OAAK,EAACC,QAAM,EAACnK,GAAE,WAAMzZ,EAAN,iBDwBnD4pC,GAAsB,SAAC7sB,GAAD,MAAiC,CAC5Dva,GAAI,UACJiD,MAAO,UACPb,IAAK7E,EACL2F,UAAWmkC,GACXpmC,KAAM,qBACNoC,MAAOkX,EAAE,2BAA4B,WACrCpX,SAAU,EACVka,YAAa8Y,GAAoB5b,KAG5B+sB,GAAuB,SAAC/sB,GAAD,MAAiC,CAC7Dva,GAAI,WACJiD,MAAO,WACPb,IAAK7E,EACL2F,UAAWqkC,GACXtmC,KAAM,gBACNoC,MAAOkX,EAAE,oBAAqB,YAC9BpX,SAAU,IAGLqkC,GAAc,CACnBvkC,MAAOvF,EACPsC,GAAItC,EACJ0E,IAAK1E,GAEA+pC,GAAmB,SAACltB,GAAD,MAAmC,CAC3Dva,GAAItC,EACJ0E,IAAK1E,EACLuF,MAAOvF,EACPwF,UAAW,mBACXC,SAAU,GACVC,SAAS,EACTC,MAAOkX,EAAE,aAAc,UACvB9a,MAAO,CACNC,MAAM,KAGFgoC,GAAgB,CACrB1nC,GAAItC,EACJ0E,IAAK1E,EACLuF,MAAOvF,EACPwF,UzBnBgC,WAAM,MAChC0gB,EAAczjB,GAAY,SAAC8E,GAAD,OAAOA,EAAE5D,MAAMO,UACzCR,GAASgE,EAAAA,EAAAA,UACd,kBACC8N,EAAAA,EAAAA,KAAI0Q,GAAa,SAACjgB,GAAD,OAChB,gBAAC,MAAD,CAAOsK,IAAG,WAAMtK,EAAKV,OAAS2R,KAAI,WAAMlX,EAAN,YAAuBiG,EAAKV,QAC7D,gBAAC,GAAD,CAAoB6O,IAAKnO,EAAKvB,KAC7B,gBAACuB,EAAKT,UAAN,CACCoyB,SAAUA,GACVE,cAAeA,GACfD,iBAAkBA,YAKvB,CAAC3R,IAEF,OACC,gCAOC,gBAAC,MAAD,KACExiB,EACD,gBAAC,MAAD,CACC+f,OAAK,EACLC,QAAM,EACNC,KAAI,WAAM3jB,GACVuZ,GAAE,WAAMvZ,EAAN,sBAAuBkmB,EAAY,UAAnC,aAAuB,EAAgB3gB,ayBTxC0kC,GAAoB,CACzB3nC,GAAI,WACJoC,IAAK7E,EACL2F,UV4GoB,WAAM,UAC1B,GAAYoX,EAAAA,EAAAA,KAALC,GAAP,eACMqtB,GAASxiC,EAAAA,EAAAA,UAAQ,kBA1FN,SAACmV,GAAD,MAA2D,CAC5E,CAAElX,MAAOkX,EAAE,0BAA2B,kBAAmB9L,MAAO,iBAChE,CAAEpL,MAAOkX,EAAE,qBAAsB,aAAc9L,MAAO,aACtD,CAAEpL,MAAOkX,EAAE,4BAA6B,oBAAqB9L,MAAO,mBACpE,CAAEpL,MAAOkX,EAAE,iBAAkB,SAAU9L,MAAO,UAsFjBo5B,CAAUttB,KAAI,CAACA,IACtCutB,EAAU3iC,IACV7E,GAAO8E,EAAAA,EAAAA,UACZ,kBAAMnF,EAAAA,EAAAA,QAAO6nC,GAAS,SAAC1lC,GAAD,QAAWA,EAAIC,eAErC,CAACylC,IAEIC,GAAW3iC,EAAAA,EAAAA,UAChB,kBACC8N,EAAAA,EAAAA,KAAI5S,GAAM,SAAC8B,GAAD,MAAU,CACnBiB,MAAOjB,EAAIlB,QACXuN,MAAOrM,EAAIxB,WAEb,CAACN,IAEIsM,EAAOF,KACb,GAA0B4lB,EAAAA,EAAAA,YAAWzV,GAAS0hB,IAA9C,eAAOyJ,EAAP,KAAcxV,EAAd,KACA,GAA8B3jB,EAAAA,EAAAA,WAAS,GAAvC,eAAOkwB,EAAP,KAAgBkJ,EAAhB,KACA,GAA0Bp5B,EAAAA,EAAAA,UAAS,GAAnC,eAAOq5B,EAAP,KAAcC,EAAd,KAEMC,GAAcp5B,EAAAA,EAAAA,cACnB,SAACkY,GAAD,aACCsL,EAAS,CACRzxB,KAAM,aACN6wB,QAAS,CACRxvB,IAAK8kB,EACLpmB,QAAO,WAAEyB,EAAAA,EAAAA,MAAKjC,EAAM,CAAC,OAAQ4mB,WAAtB,aAAE,EAA0BpmB,aAGtC,CAACR,IAGI+nC,GAAgBr5B,EAAAA,EAAAA,cAAY,SAACkY,GAClC+gB,GAAW,GACXzV,EAAS,CAAEzxB,KAAM,eAAgB6wB,QAAS1K,MACxC,IAEGohB,GAAgBt5B,EAAAA,EAAAA,cAAY,SAACkY,GAElCA,EAAGja,OAAOwC,MAAMH,OAAS,OAEzB4X,EAAGja,OAAOwC,MAAMH,OAAhB,UAA4B,GAAK4X,EAAGja,OAAOs7B,aAA3C,MACIrhB,EAAGja,OAAOwB,MAAMkX,QAAU,MAC7BwiB,EAASjhB,EAAGja,OAAOwB,MAAMkX,QACzB6M,EAAS,CAAEzxB,KAAM,cAAe6wB,QAAS1K,EAAGja,OAAOwB,WAElD,IAEG+5B,GAAmBx5B,EAAAA,EAAAA,cACxB,SAACkY,GAAO,MAGe,EAFK,OAAvB,UAAA8gB,EAAMtJ,aAAN,eAAaC,OAAesJ,GAAW,GACtCA,GAAW,GACG,IAAf/gB,EAAGuhB,SACwB,KAA1B,UAAAT,EAAMxtB,eAAN,eAAemL,SAClBsiB,GAAW,KAId,CAACA,EAAYD,IAGRU,EAAahyB,KAEb4a,GAAiBtf,EAAAA,EAAAA,YAAWuf,EAAAA,wBAE5BoX,GAAiB35B,EAAAA,EAAAA,cAAY,WAClC,IvElQuBwL,EAElB5S,EuEgQCghC,GvElQiBpuB,EuEkQKwtB,GvEhQvBpgC,EADWX,EAAYY,WACJX,QAAQ2hC,UAAUC,aAA3B,OAA6CtuB,GAA7C,IAAsDgkB,MAAOC,EAAAA,EAAAA,UAE5E12B,QAAQC,KAAK,YAAaJ,EAAS,oBAE7BA,GuE6PN0pB,EACCsX,EACG,CAAE7nC,KAAM,UAAWsC,MAAOkX,EAAE,mBAAoB,gCAChD,CACAxZ,KAAM,QACNsC,MAAOkX,EAAE,iBAAkB,oDAG/BmuB,MACE,CAACV,EAAO1W,EAAgB/W,EAAGmuB,KAE9Br6B,EAAAA,EAAAA,YAAU,WAAM,MACfmkB,EAAS,CACRzxB,KAAM,WACN6wB,QAAS,CAAE5xB,GAAI4M,EAAK5M,GAAIY,KAAI,UAAEgM,EAAK5B,mBAAP,QAAsB4B,EAAKhM,UAEtD,CAACgM,IAEJ,IAAMm8B,GAAe3jC,EAAAA,EAAAA,UACpB,8BACC,UAAC4iC,MAAAA,GAAD,UAACA,EAAOxtB,eAAR,aAAC,EAAgBmL,cAAjB,QAA2B,IAAM,GAA4B,OAAvB,UAAAqiB,EAAMtJ,aAAN,eAAaC,QAAsC,OAArB,UAAAqJ,EAAMtJ,aAAN,eAAat8B,OAClF,CAAC4lC,EAAMxtB,QAAP,UAAgBwtB,EAAMtJ,aAAtB,aAAgB,EAAaC,MAA7B,UAAoCqJ,EAAMtJ,aAA1C,aAAoC,EAAat8B,MAG5CwmB,GAAe5Z,EAAAA,EAAAA,cACpB,SAAC1E,GAAD,OAAW,gBAACw0B,IAAD,WAAmBx0B,EAAnB,CAA0By0B,QAASA,OAC9C,CAACA,IAGF,OACC,gBAAC,EAAA1vB,UAAD,CAAWuM,QAAS,CAAEC,IAAK,SAAWrM,cAAc,gBACnD,gBAAC,EAAAH,UAAD,CAAWoM,YAAY,aAAanM,OAAO,OAC1C,gBAAC2uB,GAAD,CAAezuB,cAAc,aAAaD,eAAe,cACxD,gBAAC,EAAApG,KAAD,CAAM2lB,OAAO,OAAO9P,KAAK,QACvBzE,EAAE,4BAA6B,qCAEjC,gBAAC6jB,GAAD,CAAgBtd,SAAS,aAAaud,WAAW,QAC/C9jB,EACA,uBACA,0KAGF,gBAAC6jB,GAAD,CAAgBtd,SAAS,cACvBvG,EACA,gBACA,wHAKH,gBAAC2jB,GAAD,CAAiB3uB,eAAe,WAAWC,cAAc,YACxD,gBAAC,EAAAsH,OAAD,CACCzT,MAAOkX,EAAE,gBAAiB,QAC1ByB,QAAS2sB,EACT1sB,SAAU8sB,MAIb,gBAAC,EAAA15B,UAAD,CACCuM,QAAS,CAAEsb,OAAQ,UACnB5nB,OAAO,MACPE,cAAc,gBACdD,eAAe,aACfkM,YAAY,cAEZ,gBAAC,EAAApM,UAAD,CAAWG,cAAc,gBAAgBD,eAAe,aAAaiZ,SAAS,SAC7E,gBAAC,EAAA7M,IAAD,CAAKC,QAAS,CAAE8O,SAAU,UACzB,gBAAC,EAAAvhB,KAAD,CAAM2lB,OAAO,OAAO9P,KAAK,QAAzB,WAID,gBAAC,EAAAyJ,OAAD,CACCplB,MAAOkX,EAAE,2BAA4B,mBACrCxa,MAAOgoC,EACPpf,SAAUyf,EACVxf,aAAciW,MAGhB,gBAAC,EAAAxvB,UAAD,CAAWG,cAAc,gBAAgBD,eAAe,aAAaiZ,SAAS,SAC7E,gBAAC,EAAA7M,IAAD,CAAKC,QAAS,CAAE8O,SAAU,UACzB,gBAAC,EAAAvhB,KAAD,CAAM2lB,OAAO,OAAO9P,KAAK,QAAzB,UAID,gBAAC,EAAAyJ,OAAD,CACCplB,MAAOkX,EAAE,0BAA2B,kBACpC8K,WAAW9iB,EAAAA,EAAAA,MAAKqlC,EAAQ,CAAC,QAAD,UAAUI,EAAMtJ,aAAhB,aAAU,EAAaC,QAC/C5+B,MAAO6nC,EACPjf,SAAU0f,EACVzf,aAAcA,EACdogB,UAAU,MAIb,gBAAC7K,GAAD,CAAa5uB,eAAe,YAC3B,gBAACyuB,GAAD,CACCvvB,MAAOu5B,EAAMxtB,QACbyuB,QAAST,EACT7f,SAAU2f,EACVxgB,YAAavN,EAAE,sBAAuB,8BAEvC,gBAAC,EAAApR,KAAD,CAAM6V,KAAK,SAASnf,MAAM,aACxBqoC,EADF,WUrRHjlC,MAAO,YAEFimC,GAAmB,CACxBlpC,GAAI,WACJoC,IAAK7E,EACL2F,UEpGoB,kBAAM,kCFqG1BD,MAAO,YAEFkmC,GAAiB,CACtBnpC,GAAI,aACJkD,UGtG2B,kBAC3B,gBAAC,EAAAkf,WAAD,CACCnhB,KAAK,OACL+d,KAAK,QACLhD,QAAS,kCACRpO,GAAiB/F,WAAWgG,iCADpB,aACR,EAAuDgI,SAAStY,EAAhE,CAA8E,aAAc,CAC3FwY,MAAO,kBHiGV1S,MAAO,YACPjB,IAAK7E,EACL4F,SAAU,KIhGLimC,GAA2B,WAChC,OAAY9uB,EAAAA,EAAAA,KAALC,GAAP,eAIA,OAHAlM,EAAAA,EAAAA,YAAU,YJgGyB,SAACkM,GACpCpa,EAAAA,UACCwC,EAAAA,EAAAA,KAAQ,SAACsC,GASQ,MARZmB,MACHnB,EAAE7D,QAAF,UACE5D,EAAkBqpC,IAEpB5hC,EAAE5D,MAAMC,WAAa,CAACwlC,GAAmBvsB,IACzCtV,EAAE5D,MAAME,aAAe,CAACwlC,IACxB9hC,EAAE5D,MAAMG,QAAU,CAAC2lC,MtFtHtB9nC,gBAAkBL,EAAYC,UAAYI,gBAAkBL,EAAYE,csFyHrE+F,EAAE7D,QAAF,eACE1D,EAAgB8pC,KADlB,SAEEhqC,EAAkBqpC,IAFpB,GAIA5hC,EAAE5D,MAAMC,WAAa,CAACmmC,GAAiBltB,GAAIusB,GAAmBvsB,IAC9DtV,EAAE5D,MAAME,aAAe,CAACwlC,IACxB9hC,EAAE5D,MAAMG,QAAU,CAACkmC,GAAeP,IAClCliC,EAAE5D,MAAMM,SAAW,CAACylC,GAAoB7sB,GAAI+sB,GAAqB/sB,KAElEtV,EAAE5D,MAAMI,MAAQ,CAACkmC,IACb3S,mBACH/vB,EAAE5D,MAAMI,MAAMuT,KAAKk0B,IACnBjkC,EAAE5D,MAAMQ,sBAAsBmT,KAAKm0B,SIvHrCE,CAAqB9uB,KACnB,CAACA,IACG,MAGF+uB,GAA4C,SAAC,GAAoB,IAAlBv3B,EAAkB,EAAlBA,YAOpD,OANA7D,GAAU,CACTJ,UAAW,GACXD,0BAA2B,CAC1B0M,EAAG,SAACnY,GAAD,OAAS2P,EAAYM,WAAW,CAAEzR,KAAMwB,IAAOmY,MAG7C,MA2BR,SAxByB,WACxB,IAAMxI,GAAc3M,EAAAA,EAAAA,UAAQ,kBAAM,IAAI6tB,KAAe,IAC/ChhB,GAAe7M,EAAAA,EAAAA,UAAQ,kBAAM,IAAIyvB,KAAgB,IAOvD,OANAxmB,EAAAA,EAAAA,YAAU,W1D3BS,IAACk7B,EAA2BC,E0D6B9C,O1D7BmBD,E0D4Bdx3B,E1D5ByCy3B,E0D4B5Bv3B,E1D3BnB/H,GAAAA,WAEEM,OACAE,MAAK,WAAM,sBACX6+B,EAAaE,UAAb,wCAEGv/B,GAAAA,WAA2BvI,gBAF9B,iBAEG,EAAqC4E,aAFxC,aAEG,EAA4Ck2B,wBAF/C,kBAGGvyB,GAAAA,WAA2BvI,gBAH9B,iBAGG,EAAqC0I,aAHxC,aAGG,EAA4Cq/B,oBAH/C,iBACC,EAGGl+B,aAJJ,iBACC,SAGW,YAJZ,aACC,EAGkB,UAJnB,QAIyB,M2DHrB,SAAkByG,EAA4B3R,GCY9C,IAEAqpC,GAAAA,EAAoBhkC,QAClBgX,4BAGRgtB,EAAIhtB,0BAA4B,CAC/B,aAAcitB,GACdC,MAAOC,EACP,YAAaC,GACb,gBAAiBC,GACjB,cAAeC,GACfC,OAAQC,EACR,mBAAoBC,GACpB/R,OAAQgS,GACR,oBAAqBC,GACrB,4BACIC,IADJ,IAECzV,eAAgB,WACf,MAAM,IAAI9rB,MAAM,gDAEjBwhC,YAAa,WACZ,MAAM,IAAIxhC,MAAM,kDAGlB,6BAA8B,GAC9B,kCAAmCyhC,GAEpCd,EAAIxrB,oBAAsB,IDtC1B,IAAMusB,GAAazqC,EAAAA,EAAAA,QAAOK,GAAM,SAAC8B,GAChC,OAAIA,EAAIxB,OAASrD,KACb6E,EAAIpB,SAAoD,SjF4BhC,sCAAc4T,EAAd,yBAAcA,EAAd,uBAC7BnM,EAAAA,EAAAA,KAAIyB,GAAAA,WAA2BvI,UAAU4V,EAAAA,EAAAA,MAAK3C,EAAM,MiF7BhC+1B,CAAe,QAASvoC,EAAIpB,aAGhD+G,QAAQ2D,IACP,iBACA,yHAEDzE,EAAYY,WAAWL,WAAWkjC,GAClCnuB,QAAQquB,YAAW13B,EAAAA,EAAAA,KAAIw3B,GAAY,SAACtoC,GAAD,O7D8E7B,SAAiB0P,EAAqBG,GAE5C,OAAOoK,GAAcvK,EADPG,EAAaE,eAAeL,I6D/EE+4B,CAAQzoC,EAAK6P,O3DPvD64B,CAAStB,EAAelwB,OAAOG,OAAOtZ,EAAAA,WAAuBG,U0DkBvD,W5DyEDic,QAAQwuB,UAAUrgC,MAAK,YAC7BsgC,EAAAA,EAAAA,QAAO7uB,IAAU,SAACkC,GACbA,EAAO4sB,YAAY5sB,EAAO4sB,WAAWC,YAAY7sB,Y4DxEpD,CAACtM,EAAaE,IAEhB,gBAACsN,GAAD,KACC,gBAAC,EAAA9M,gBAAD,KACC,gBAAC,EAAAD,aAAD,KACC,gBAAC,GAAD,CAA6BT,YAAaA,EAAaE,aAAcA,GACpE,gBAACq3B,GAAD,CAASv3B,YAAaA,IACtB,gBAACq3B,GAAD,MACA,gBAAC,GAAD,Y,gBGrDN,IAAIl2B,EAAM,CACT,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,MACX,aAAc,MACd,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,gBAAiB,MACjB,aAAc,MACd,gBAAiB,MACjB,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,MACX,aAAc,MACd,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,WAAY,MACZ,cAAe,MACf,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,YAAa,MACb,eAAgB,MAChB,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,QAAS,MACT,aAAc,MACd,gBAAiB,MACjB,WAAY,MACZ,UAAW,KACX,aAAc,KACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,YAAa,MACb,eAAgB,MAChB,UAAW,KACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,gBAAiB,MACjB,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,OAIf,SAASi4B,EAAeC,GACvB,IAAIprC,EAAKqrC,EAAsBD,GAC/B,OAAOE,EAAoBtrC,GAE5B,SAASqrC,EAAsBD,GAC9B,IAAIE,EAAoBC,EAAEr4B,EAAKk4B,GAAM,CACpC,IAAIj/B,EAAI,IAAInD,MAAM,uBAAyBoiC,EAAM,KAEjD,MADAj/B,EAAErD,KAAO,mBACHqD,EAEP,OAAO+G,EAAIk4B,GAEZD,EAAe5xB,KAAO,WACrB,OAAOD,OAAOC,KAAKrG,IAEpBi4B,EAAeJ,QAAUM,EACzBnpB,EAAOspB,QAAUL,EACjBA,EAAenrC,GAAK","sources":["webpack://@zextras/carbonio-shell-ui/./src/constants/index.ts","webpack://@zextras/carbonio-shell-ui/./src/store/app/utils.tsx","webpack://@zextras/carbonio-shell-ui/./src/store/app/store.ts","webpack://@zextras/carbonio-shell-ui/./src/store/app/hooks.ts","webpack://@zextras/carbonio-shell-ui/./src/network/go-to-login.ts","webpack://@zextras/carbonio-shell-ui/./src/multimode/components.tsx","webpack://@zextras/carbonio-shell-ui/./src/multimode/functions.ts","webpack://@zextras/carbonio-shell-ui/./src/network/get-info.ts","webpack://@zextras/carbonio-shell-ui/./src/network/user-agent.ts","webpack://@zextras/carbonio-shell-ui/./types/exports/index.d.ts","webpack://@zextras/carbonio-shell-ui/./src/reporting/store.ts","webpack://@zextras/carbonio-shell-ui/./src/reporting/functions.ts","webpack://@zextras/carbonio-shell-ui/./src/network/fetch.ts","webpack://@zextras/carbonio-shell-ui/./src/network/noOp.ts","webpack://@zextras/carbonio-shell-ui/./src/store/account/store.ts","webpack://@zextras/carbonio-shell-ui/./src/store/account/normalization.ts","webpack://@zextras/carbonio-shell-ui/./src/store/account/hooks.ts","webpack://@zextras/carbonio-shell-ui/./src/store/context-bridge.ts","webpack://@zextras/carbonio-shell-ui/./src/store/integrations/composer.tsx","webpack://@zextras/carbonio-shell-ui/./src/store/integrations/store.ts","webpack://@zextras/carbonio-shell-ui/./src/boot/bootstrapper-context.ts","webpack://@zextras/carbonio-shell-ui/./src/boot/app/app-error-catcher.tsx","webpack://@zextras/carbonio-shell-ui/./src/boot/app/app-context-provider.tsx","webpack://@zextras/carbonio-shell-ui/./src/store/integrations/getters.tsx","webpack://@zextras/carbonio-shell-ui/./src/shell/shell-context.js","webpack://@zextras/carbonio-shell-ui/./src/shell/hooks.ts","webpack://@zextras/carbonio-shell-ui/./src/store/integrations/hooks.tsx","webpack://@zextras/carbonio-shell-ui/./src/history/hooks.ts","webpack://@zextras/carbonio-shell-ui/./src/shell/boards/board-context.js","webpack://@zextras/carbonio-shell-ui/./src/shell/boards/board-hooks.ts","webpack://@zextras/carbonio-shell-ui/./src/boot/app/app-loader-functions.ts","webpack://@zextras/carbonio-shell-ui/./src/ui-extras/spinner.tsx","webpack://@zextras/carbonio-shell-ui/./src/ui-extras/app-link.tsx","webpack://@zextras/carbonio-shell-ui/./src/network/edit-settings.ts","webpack://@zextras/carbonio-shell-ui/./src/ui-extras/nav-guard.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/components/settings-header.tsx","webpack://@zextras/carbonio-shell-ui/./src/boot/app/load-app.ts","webpack://@zextras/carbonio-shell-ui/./src/boot/app/app-loader-setters.ts","webpack://@zextras/carbonio-shell-ui/./src/boot/init.ts","webpack://@zextras/carbonio-shell-ui/./src/boot/theme-provider.tsx","webpack://@zextras/carbonio-shell-ui/./src/boot/app/app-loader-mounter.tsx","webpack://@zextras/carbonio-shell-ui/./src/shell/app-view-container.jsx","webpack://@zextras/carbonio-shell-ui/./src/shell/shell-context-provider.jsx","webpack://@zextras/carbonio-shell-ui/./src/search/search-store.tsx","webpack://@zextras/carbonio-shell-ui/./src/search/search-bar.tsx","webpack://@zextras/carbonio-shell-ui/./src/shell/creation-button.tsx","webpack://@zextras/carbonio-shell-ui/./src/shell/shell-header.tsx","webpack://@zextras/carbonio-shell-ui/./src/shell/badge-wrap.tsx","webpack://@zextras/carbonio-shell-ui/./src/utility-bar/utils.ts","webpack://@zextras/carbonio-shell-ui/./src/shell/shell-primary-bar.tsx","webpack://@zextras/carbonio-shell-ui/./src/shell/collapser.tsx","webpack://@zextras/carbonio-shell-ui/./src/utility-bar/store.ts","webpack://@zextras/carbonio-shell-ui/./src/network/logout.ts","webpack://@zextras/carbonio-shell-ui/./src/utility-bar/bar.tsx","webpack://@zextras/carbonio-shell-ui/./src/utility-bar/panel.tsx","webpack://@zextras/carbonio-shell-ui/./src/shell/shell-secondary-bar.tsx","webpack://@zextras/carbonio-shell-ui/./src/shell/shell-mobile-nav.jsx","webpack://@zextras/carbonio-shell-ui/./src/shell/shell-navigation-bar.jsx","webpack://@zextras/carbonio-shell-ui/./src/shell/boards/app-board-tab.jsx","webpack://@zextras/carbonio-shell-ui/./src/shell/boards/app-board.jsx","webpack://@zextras/carbonio-shell-ui/./src/shell/boards/app-board-window.jsx","webpack://@zextras/carbonio-shell-ui/./src/shell/shell-view.jsx","webpack://@zextras/carbonio-shell-ui/./src/boot/bootstrapper-router.tsx","webpack://@zextras/carbonio-shell-ui/./src/shell/boards/board-context-provider.jsx","webpack://@zextras/carbonio-shell-ui/./src/boot/bootstrapper-provider.tsx","webpack://@zextras/carbonio-shell-ui/./src/i18n/i18n-factory.ts","webpack://@zextras/carbonio-shell-ui/./src/redux/store-factory.ts","webpack://@zextras/carbonio-shell-ui/./src/search/search-app-view.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/settings-sidebar.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/general-settings-sub-sections.ts","webpack://@zextras/carbonio-shell-ui/./src/settings/components/general-settings/logout.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/components/general-settings/appearance-settings.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/components/general-settings/module-version-settings.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/components/settings-heading.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/components/date-picker-style.jsx","webpack://@zextras/carbonio-shell-ui/./src/settings/components/utils.ts","webpack://@zextras/carbonio-shell-ui/./src/settings/components/date-time-select-view.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/components/general-settings/out-of-office-view.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/components/general-settings/user-quota.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/language-and-timezone-settings.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/search-settings-view.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/general-settings.tsx","webpack://@zextras/carbonio-shell-ui/./src/reporting/feedback.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/components/account-settings/accounts-list.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/components/account-settings/primary-account-settings.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/components/account-settings/settings-sent-messages.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/components/account-settings/password-recovery-settings.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/components/account-settings/delegates.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/components/account-settings/persona-settings.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/components/account-settings/persona-use-section.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/accounts-settings.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/account-wrapper.tsx","webpack://@zextras/carbonio-shell-ui/./src/boot/app/default-views.ts","webpack://@zextras/carbonio-shell-ui/./src/settings/settings-app-view.tsx","webpack://@zextras/carbonio-shell-ui/./src/dev/dev-board.tsx","webpack://@zextras/carbonio-shell-ui/./src/dev/dev-board-trigger.tsx","webpack://@zextras/carbonio-shell-ui/./src/boot/bootstrapper.tsx","webpack://@zextras/carbonio-shell-ui/./src/boot/app/load-apps.ts","webpack://@zextras/carbonio-shell-ui/./src/boot/app/shared-libraries.ts","webpack://@zextras/carbonio-shell-ui//tmp/workspace/extras_carbonio-shell-ui_release/node_modules/moment/locale|sync|/^\\.\\/.*$/"],"sourcesContent":["/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\nimport { DynamicThemeFix } from 'darkreader';\nimport { ShellModes } from '../../types';\n\n/*\n\treference: https://zextras.atlassian.net/wiki/spaces/IRIS/pages/223215854/UI+Guidelines+and+theming\n*/\nexport const ZIMBRA_STANDARD_COLORS = [\n\t{ zValue: 0, hex: '#000000', zLabel: 'black' },\n\t{ zValue: 1, hex: '#2b73d2', zLabel: 'blue' },\n\t{ zValue: 2, hex: '#2196d3', zLabel: 'cyan' },\n\t{ zValue: 3, hex: '#639030', zLabel: 'green' },\n\t{ zValue: 4, hex: '#1a75a7', zLabel: 'purple' },\n\t{ zValue: 5, hex: '#d74942', zLabel: 'red' },\n\t{ zValue: 6, hex: '#ffc107', zLabel: 'yellow' },\n\t{ zValue: 7, hex: '#edaeab', zLabel: 'pink' },\n\t{ zValue: 8, hex: '#828282', zLabel: 'gray' },\n\t{ zValue: 9, hex: '#ba8b00', zLabel: 'orange' }\n];\n\nexport const FOLDERS = {\n\tUSER_ROOT: '1',\n\tINBOX: '2',\n\tTRASH: '3',\n\tSPAM: '4',\n\tSENT: '5',\n\tDRAFTS: '6',\n\tCONTACTS: '7',\n\tTAGS: '8',\n\tCONVERSATIONS: '9',\n\tCALENDAR: '10',\n\tROOT: '11',\n\tNOTEBOOK: '12', // no longer created in new mailboxes since Helix (bug 39647). old mailboxes may still contain a system folder with id 12\n\tAUTO_CONTACTS: '13',\n\tIM_LOGS: '14',\n\tTASKS: '15',\n\tBRIEFCASE: '16'\n};\n\nexport const SHELL_APP_ID = 'carbonio-shell-ui';\nexport const SETTINGS_APP_ID = 'settings';\nexport const ACCOUNTS_APP_ID = 'accounts';\nexport const SEARCH_APP_ID = 'search';\nexport const ACTION_TYPES = {\n\tCONVERSATION: 'conversation',\n\tCONVERSATION_lIST: 'conversation_list',\n\tMESSAGE: 'message',\n\tMESSAGE_lIST: 'message_list',\n\tCONTACT: 'contact',\n\tCONTACT_lIST: 'contact_list',\n\tINVITE: 'invite',\n\tINVITE_lIST: 'invite_list',\n\tAPPOINTMENT: 'appointment',\n\tAPPOINTMENT_lIST: 'appointment_list',\n\tFOLDER: 'folder',\n\tFOLDER_lIST: 'folder_list',\n\tCALENDAR: 'calendar',\n\tCALENDAR_lIST: 'calendar_list',\n\tNEW: 'new'\n};\n\nexport const darkReaderDynamicThemeFixes: DynamicThemeFix = {\n\tignoreImageAnalysis: ['.no-dr-invert *'],\n\tinvert: [],\n\tcss: `\n\t\t.tox, .force-white-bg, .tox-swatches-menu, .tox .tox-edit-area__iframe {\n\t\t\tbackground-color: #fff !important;\n\t\t\tbackground: #fff !important;\n\t\t}\n\t`,\n\tignoreInlineStyle: ['.tox-menu *'],\n\tdisableStyleSheetsProxy: false\n};\n\nexport const SHELL_MODES: Record<string, ShellModes> = {\n\tCARBONIO: 'carbonio',\n\tSTANDALONE: 'carbonioStandalone',\n\tADMIN: 'carbonioAdmin'\n};\n\nexport const BASENAME = `/${__SHELL_ENV__}/`;\nexport const EMAIL_VALIDATION_REGEX =\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars, max-len, no-control-regex\n\t/(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])/;\n","/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport { trim } from 'lodash';\nimport React, { FC } from 'react';\nimport {\n\tAppRouteDescriptor,\n\tBadgeInfo,\n\tBoardView,\n\tCarbonioModule,\n\tPrimaryAccessoryView,\n\tSearchView,\n\tSecondaryAccessoryView,\n\tSettingsView,\n\tUtilityView\n} from '../../../types';\n\nexport const normalizeApp = (app: Partial<CarbonioModule>): CarbonioModule => ({\n\tcommit: app.commit ?? '',\n\tdescription: app.description ?? 'A carbonio Module',\n\t// eslint-disable-next-line camelcase\n\tjs_entrypoint: app.js_entrypoint ?? '',\n\tname: app.name ?? 'module',\n\tpriority: app.priority ?? 99,\n\tversion: app.version ?? '',\n\ttype: app.type ?? 'carbonio',\n\tattrKey: app.attrKey,\n\ticon: app.icon ?? 'Cube',\n\tdisplay: app.display ?? 'Module',\n\tsentryDsn: app.sentryDsn\n});\n\nconst FallbackView: FC = () => <p>Missing Component</p>;\n\nexport const normalizeBadgeInfo = (badge: Partial<BadgeInfo>): BadgeInfo => ({\n\tshow: badge.show ?? false,\n\tcount: badge.count ?? 0,\n\tshowCount: badge.showCount ?? false,\n\tcolor: badge.color ?? 'primary'\n});\n\nexport const normalizeRoute = (\n\tdata: Partial<AppRouteDescriptor>,\n\tapp: CarbonioModule\n): AppRouteDescriptor => {\n\tconst route = trim(data.route ?? app.name, '/');\n\treturn {\n\t\tapp: app.name,\n\t\troute,\n\t\tid: data.id ?? route,\n\t\tbadge: normalizeBadgeInfo(data?.badge ?? {}),\n\t\tposition: data?.position ?? app.priority,\n\t\tvisible: data?.visible ?? true,\n\t\tlabel: data?.label ?? '',\n\t\tprimaryBar: data.primaryBar ?? app.icon ?? 'CubeOutline',\n\t\tsecondaryBar: data.secondaryBar,\n\t\tappView: data.appView ?? FallbackView\n\t};\n};\n\nexport const normalizeSettingsView = (\n\tdata: Partial<SettingsView>,\n\tapp: CarbonioModule\n): SettingsView => {\n\tconst route = trim(data.route ?? app.name, '/');\n\treturn {\n\t\tapp: app.name,\n\t\troute,\n\t\tid: data?.id ?? route,\n\t\tcomponent: data?.component ?? FallbackView,\n\t\tlabel: data.label ?? app.display,\n\t\ticon: data.icon ?? app.icon,\n\t\tposition: data.position ?? app.priority ?? 99,\n\t\tsubSections: data.subSections ?? []\n\t};\n};\nexport const normalizeSearchView = (data: Partial<SearchView>, app: CarbonioModule): SearchView => {\n\tconst route = trim(data.route ?? app.name, '/');\n\treturn {\n\t\tapp: app.name,\n\t\troute,\n\t\tid: data?.id ?? route,\n\t\tcomponent: data?.component ?? FallbackView,\n\t\tlabel: data.label ?? app.display,\n\t\ticon: data.icon ?? app.icon,\n\t\tposition: data.position ?? app.priority ?? 99\n\t};\n};\nexport const normalizeUtilityView = (\n\tdata: Partial<UtilityView>,\n\tapp: CarbonioModule\n): UtilityView => ({\n\tapp: app.name,\n\tid: data?.id ?? app.name,\n\twhitelistRoutes: data?.whitelistRoutes,\n\tblacklistRoutes: data?.blacklistRoutes,\n\tcomponent: data?.component ?? FallbackView,\n\tbutton: data?.button ?? 'Cube',\n\tbadge: normalizeBadgeInfo(data?.badge ?? {}),\n\tposition: data?.position ?? app.priority,\n\tlabel: data?.label ?? app.display\n});\nexport const normalizePrimaryAccessoryView = (\n\tdata: Partial<PrimaryAccessoryView>,\n\tapp: CarbonioModule\n): PrimaryAccessoryView => ({\n\tapp: app.name,\n\tonClick: data?.onClick,\n\tlabel: data?.label ?? app.display,\n\tposition: data?.position ?? app.priority,\n\twhitelistRoutes: data?.whitelistRoutes,\n\tblacklistRoutes: data?.blacklistRoutes,\n\tid: data?.id ?? app.name,\n\tcomponent: data?.component ?? FallbackView\n});\nexport const normalizeSecondaryAccessoryView = (\n\tdata: Partial<SecondaryAccessoryView>,\n\tapp: CarbonioModule\n): SecondaryAccessoryView => ({\n\tapp: app.name,\n\tposition: data?.position ?? app.priority,\n\twhitelistRoutes: data?.whitelistRoutes,\n\tblacklistRoutes: data?.blacklistRoutes,\n\tid: data?.id ?? app.name,\n\tcomponent: data?.component ?? FallbackView\n});\n\nexport const normalizeBoardView = (data: Partial<BoardView>, app: CarbonioModule): BoardView => {\n\tconst route = trim(data.route ?? app.name, '/');\n\treturn {\n\t\tapp: app.name,\n\t\troute,\n\t\tid: data?.id ?? route,\n\t\tcomponent: data?.component ?? FallbackView\n\t};\n};\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport produce from 'immer';\nimport { filter, find, findIndex, merge, omit, reduce, sortBy, unionBy, unionWith } from 'lodash';\nimport create, { StoreApi, UseBoundStore } from 'zustand';\nimport {\n\tAppRouteDescriptor,\n\tAppState,\n\tAppView,\n\tBadgeInfo,\n\tBoardView,\n\tCarbonioModule,\n\tPrimaryAccessoryView,\n\tPrimaryBarView,\n\tSearchView,\n\tSecondaryAccessoryView,\n\tSecondaryBarView,\n\tSettingsView,\n\tUtilityView\n} from '../../../types';\nimport { SHELL_APP_ID } from '../../constants';\nimport { normalizeApp } from './utils';\n\nconst filterById = <T extends { id: string }>(items: Array<T>, id: string): Array<T> =>\n\tfilter(items, (item) => item.id !== id);\n\nexport const useAppStore = create<AppState>((set) => ({\n\tapps: {},\n\tappContexts: {},\n\tshell: {\n\t\tcommit: '',\n\t\tdescription: '',\n\t\tjs_entrypoint: '',\n\t\tname: 'carbonio-shell-ui',\n\t\tpriority: -1,\n\t\tversion: '',\n\t\ttype: 'shell',\n\t\tattrKey: '',\n\t\ticon: '',\n\t\tdisplay: 'Shell'\n\t},\n\tentryPoints: {},\n\troutes: {},\n\tviews: {\n\t\tprimaryBar: [],\n\t\tsecondaryBar: [],\n\t\tappView: [],\n\t\tboard: [],\n\t\tutilityBar: [],\n\t\tsettings: [],\n\t\tsearch: [],\n\t\tprimaryBarAccessories: [],\n\t\tsecondaryBarAccessories: []\n\t},\n\tsetters: {\n\t\taddApps: (apps: Array<Partial<CarbonioModule>>): void => {\n\t\t\tset((state) => ({\n\t\t\t\tapps: reduce(\n\t\t\t\t\tapps,\n\t\t\t\t\t(acc, app) =>\n\t\t\t\t\t\tapp.name && app.name !== SHELL_APP_ID\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t...acc,\n\t\t\t\t\t\t\t\t\t[app.name]: normalizeApp(app)\n\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t: acc,\n\t\t\t\t\t{}\n\t\t\t\t),\n\t\t\t\tshell: {\n\t\t\t\t\t...state.shell,\n\t\t\t\t\t...(find(apps, (app) => app.name === SHELL_APP_ID) ?? {})\n\t\t\t\t},\n\t\t\t\tappContexts: reduce(apps, (acc, val) => (val.name ? { ...acc, [val.name]: {} } : acc), {})\n\t\t\t}));\n\t\t},\n\t\tsetAppContext:\n\t\t\t(app: string) =>\n\t\t\t(context: unknown): void => {\n\t\t\t\tset(\n\t\t\t\t\tproduce((state: AppState) => {\n\t\t\t\t\t\tstate.appContexts[app] = merge(state.appContexts[app], context);\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t},\n\t\t// add route (id route primaryBar secondaryBar app)\n\t\taddRoute: (routeData: AppRouteDescriptor): string => {\n\t\t\tset(\n\t\t\t\tproduce((state: AppState) => {\n\t\t\t\t\tstate.routes[routeData.id] = routeData;\n\t\t\t\t\tif (routeData.primaryBar) {\n\t\t\t\t\t\tstate.views.primaryBar = sortBy(\n\t\t\t\t\t\t\tunionWith<PrimaryBarView>(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tapp: routeData.app,\n\t\t\t\t\t\t\t\t\t\tid: routeData.id,\n\t\t\t\t\t\t\t\t\t\troute: routeData.route,\n\t\t\t\t\t\t\t\t\t\tcomponent: routeData.primaryBar,\n\t\t\t\t\t\t\t\t\t\tbadge: routeData.badge,\n\t\t\t\t\t\t\t\t\t\tposition: routeData.position,\n\t\t\t\t\t\t\t\t\t\tvisible: routeData.visible,\n\t\t\t\t\t\t\t\t\t\tlabel: routeData.label\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tstate.views.primaryBar,\n\t\t\t\t\t\t\t\t(a, b): boolean => a.id === b.id\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t'position'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif (routeData.secondaryBar) {\n\t\t\t\t\t\tstate.views.secondaryBar = unionWith<SecondaryBarView>(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tapp: routeData.app,\n\t\t\t\t\t\t\t\t\tid: routeData.id,\n\t\t\t\t\t\t\t\t\troute: routeData.route,\n\t\t\t\t\t\t\t\t\tcomponent: routeData.secondaryBar\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tstate.views.secondaryBar,\n\t\t\t\t\t\t\t(a, b): boolean => a.id === b.id\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif (routeData.appView) {\n\t\t\t\t\t\tstate.views.appView = unionWith<AppView>(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tapp: routeData.app,\n\t\t\t\t\t\t\t\t\tid: routeData.id,\n\t\t\t\t\t\t\t\t\troute: routeData.route,\n\t\t\t\t\t\t\t\t\tcomponent: routeData.appView\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tstate.views.appView,\n\t\t\t\t\t\t\t(a, b): boolean => a.id === b.id\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn routeData.id;\n\t\t},\n\t\tsetRouteVisibility: (id: string, visible: boolean): void => {\n\t\t\tset(\n\t\t\t\tproduce((state: AppState) => {\n\t\t\t\t\tconst idx = findIndex(state.views.primaryBar, (view) => view.id === id);\n\t\t\t\t\tif (idx >= 0) {\n\t\t\t\t\t\tstate.views.primaryBar[idx].visible = visible;\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t);\n\t\t},\n\n\t\t// remove route (id | route)\n\t\tremoveRoute: (id: string): void => {\n\t\t\tset(\n\t\t\t\tproduce((state: AppState) => {\n\t\t\t\t\tstate.routes = omit(state.routes, [id]);\n\t\t\t\t\tstate.views.primaryBar = filterById(state.views.primaryBar, id);\n\t\t\t\t\tstate.views.secondaryBar = filterById(state.views.secondaryBar, id);\n\t\t\t\t\tstate.views.appView = filterById(state.views.appView, id);\n\t\t\t\t})\n\t\t\t);\n\t\t},\n\t\t// add board\n\t\taddBoardView: (data: BoardView): string => {\n\t\t\tset(\n\t\t\t\tproduce((state: AppState) => {\n\t\t\t\t\tstate.views.board = unionBy([data], state.views.board, 'id');\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn data.id;\n\t\t},\n\n\t\t// remove board\n\t\tremoveBoardView: (id: string): void => {\n\t\t\tset(\n\t\t\t\tproduce((state: AppState) => {\n\t\t\t\t\tstate.views.board = filterById(state.views.board, id);\n\t\t\t\t})\n\t\t\t);\n\t\t},\n\n\t\t// add settings\n\t\taddSettingsView: (data: SettingsView): string => {\n\t\t\tset(\n\t\t\t\tproduce((state: AppState) => {\n\t\t\t\t\tstate.views.settings = sortBy(unionBy([data], state.views.settings, 'id'), 'position');\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn data.id;\n\t\t},\n\n\t\t// remove settings\n\t\tremoveSettingsView: (id: string): void => {\n\t\t\tset(\n\t\t\t\tproduce((state: AppState) => {\n\t\t\t\t\tstate.views.settings = filterById(state.views.settings, id);\n\t\t\t\t})\n\t\t\t);\n\t\t},\n\t\t//\n\t\t// add search\n\t\taddSearchView: (data: SearchView): string => {\n\t\t\tset(\n\t\t\t\tproduce((state: AppState) => {\n\t\t\t\t\tstate.views.search = sortBy(unionBy([data], state.views.search, 'id'), 'position');\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn data.id;\n\t\t},\n\t\t// remove search\n\t\tremoveSearchView: (id: string): void => {\n\t\t\tset(\n\t\t\t\tproduce((state: AppState) => {\n\t\t\t\t\tstate.views.search = filterById(state.views.search, id);\n\t\t\t\t})\n\t\t\t);\n\t\t},\n\t\t//\n\t\t// add utility\n\t\taddUtilityView: (data: UtilityView): string => {\n\t\t\tset(\n\t\t\t\tproduce((state: AppState) => {\n\t\t\t\t\tstate.views.utilityBar = sortBy(\n\t\t\t\t\t\tunionBy([data], state.views.utilityBar, 'id'),\n\t\t\t\t\t\t'position'\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn data.id;\n\t\t},\n\t\t// remove utility\n\t\tremoveUtilityView: (id: string): void => {\n\t\t\tset(\n\t\t\t\tproduce((state: AppState) => {\n\t\t\t\t\tstate.views.utilityBar = filterById(state.views.utilityBar, id);\n\t\t\t\t})\n\t\t\t);\n\t\t},\n\t\t//\n\t\t// add primaryAccessory\n\t\taddPrimaryAccessoryView: (data: PrimaryAccessoryView): string => {\n\t\t\tset(\n\t\t\t\tproduce((state: AppState) => {\n\t\t\t\t\tstate.views.primaryBarAccessories = unionBy(\n\t\t\t\t\t\t[data],\n\t\t\t\t\t\tstate.views.primaryBarAccessories,\n\t\t\t\t\t\t'id'\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn data.id;\n\t\t},\n\t\t// remove primaryAccessory\n\t\tremovePrimaryAccessoryView: (id: string): void => {\n\t\t\tset(\n\t\t\t\tproduce((state: AppState) => {\n\t\t\t\t\tstate.views.primaryBarAccessories = filterById(state.views.primaryBarAccessories, id);\n\t\t\t\t})\n\t\t\t);\n\t\t},\n\t\t//\n\t\t// add secondaryAccessory\n\t\taddSecondaryAccessoryView: (data: SecondaryAccessoryView): string => {\n\t\t\tset(\n\t\t\t\tproduce((state: AppState) => {\n\t\t\t\t\tstate.views.secondaryBarAccessories = unionBy(\n\t\t\t\t\t\t[data],\n\t\t\t\t\t\tstate.views.secondaryBarAccessories,\n\t\t\t\t\t\t'id'\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn data.id;\n\t\t},\n\t\t// remove secondaryAccessory\n\t\tremoveSecondaryAccessoryView: (id: string): void => {\n\t\t\tset(\n\t\t\t\tproduce((state: AppState) => {\n\t\t\t\t\tstate.views.secondaryBarAccessories = filterById(state.views.secondaryBarAccessories, id);\n\t\t\t\t})\n\t\t\t);\n\t\t},\n\t\tupdatePrimaryBadge: (badge: Partial<BadgeInfo>, id: string): void => {\n\t\t\tset(\n\t\t\t\tproduce((state: AppState) => {\n\t\t\t\t\tconst idx = findIndex(state.views.primaryBar, (bar) => bar.id === id);\n\t\t\t\t\tif (idx >= 0) {\n\t\t\t\t\t\tstate.views.primaryBar[idx].badge = {\n\t\t\t\t\t\t\t...state.views.primaryBar[idx].badge,\n\t\t\t\t\t\t\t...badge\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t);\n\t\t},\n\t\tupdateUtilityBadge: (badge: Partial<BadgeInfo>, id: string): void => {\n\t\t\tset(\n\t\t\t\tproduce((state: AppState) => {\n\t\t\t\t\tconst idx = findIndex(state.views.utilityBar, (bar) => bar.id === id);\n\t\t\t\t\tif (idx >= 0) {\n\t\t\t\t\t\tstate.views.utilityBar[idx].badge = {\n\t\t\t\t\t\t\t...state.views.utilityBar[idx].badge,\n\t\t\t\t\t\t\t...badge\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t}\n})) as UseBoundStore<AppState, StoreApi<AppState>>;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\n/* eslint-disable react-hooks/rules-of-hooks */\n/* THIS FILE CONTAINS HOOKS, BUT ESLINT IS DUMB */\n\nimport { sortBy } from 'lodash';\nimport { useMemo } from 'react';\nimport { useAppStore } from './store';\nimport { AppRoute, CarbonioModule } from '../../../types';\n\nexport const useApp = (appId: string) => (): CarbonioModule => useAppStore((s) => s.apps[appId]);\nexport const useApps = (): Record<string, CarbonioModule> => useAppStore((s) => s.apps);\nexport const useAppList = (): Array<CarbonioModule> => {\n\tconst apps = useApps();\n\treturn useMemo(() => sortBy(apps, (a) => a.priority), [apps]);\n};\nexport const getAppList = (): Array<CarbonioModule> =>\n\tsortBy(useAppStore.getState().apps, (a) => a.priority);\n\nexport const getApp = (appId: string) => (): CarbonioModule => useAppStore.getState().apps[appId];\nexport const getApps = (): Record<string, CarbonioModule> => useAppStore.getState().apps;\n\nexport const useAppContext = (appId: string) => (): unknown =>\n\tuseAppStore((s) => s.appContexts[appId]);\nexport const getAppContext = (appId: string) => (): unknown =>\n\tuseAppStore.getState().appContexts[appId];\nexport const getShell = (): CarbonioModule => useAppStore.getState().shell;\nexport const getRoutes = (): Record<string, AppRoute> => useAppStore.getState().routes;\nexport const useRoutes = (): Record<string, AppRoute> => useAppStore((s) => s.routes);\nexport const getRoute = (id: string): AppRoute => useAppStore.getState().routes[id];\nexport const useRoute = (id: string): AppRoute => useAppStore((s) => s.routes[id]);\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nexport const goToLogin: () => void = () => {\n\twindow?.location?.assign?.(`${window?.location?.origin}/static/login`);\n};\n","/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\nimport React, { FC, useMemo } from 'react';\nimport { ShellModes } from '../../types';\n\nexport const ShellMode: FC<{ include?: ShellModes[]; exclude?: ShellModes[] }> = ({\n\tinclude,\n\texclude,\n\tchildren\n}) => {\n\tconst pass = useMemo(() => {\n\t\tif (include) {\n\t\t\treturn include.includes(__SHELL_ENV__);\n\t\t}\n\t\tif (exclude) {\n\t\t\treturn !exclude.includes(__SHELL_ENV__);\n\t\t}\n\t\treturn false;\n\t}, [exclude, include]);\n\n\treturn pass ? <>{children}</> : null;\n};\n","import { SHELL_MODES } from '../constants';\n\n/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\nexport const isClient = (): boolean =>\n\t__SHELL_ENV__ === SHELL_MODES.CARBONIO || __SHELL_ENV__ === SHELL_MODES.STANDALONE;\nexport const isAdmin = (): boolean => __SHELL_ENV__ === SHELL_MODES.ADMIN;\nexport const isStandalone = (): boolean => __SHELL_ENV__ === SHELL_MODES.STANDALONE;\nexport const isFullClient = (): boolean => __SHELL_ENV__ === SHELL_MODES.CARBONIO;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport { GetState, SetState } from 'zustand';\nimport { filter } from 'lodash';\nimport { SHELL_APP_ID, SHELL_MODES } from '../constants';\nimport { useAppStore } from '../store/app';\nimport { normalizeAccount } from '../store/account/normalization';\nimport { AccountSettings, AccountState, GetInfoResponse, Tag, CarbonioModule } from '../../types';\nimport { goToLogin } from './go-to-login';\nimport { isAdmin, isFullClient, isStandalone } from '../multimode';\n\nconst parsePollingInterval = (settings: AccountSettings): number => {\n\tconst pollingPref = (settings.prefs?.zimbraPrefMailPollingInterval ?? '') as string;\n\tif (pollingPref === '500') {\n\t\treturn 500;\n\t}\n\tconst pollingValue = parseInt(pollingPref, 10);\n\tif (Number.isNaN(pollingValue)) {\n\t\treturn 30000;\n\t}\n\tif (pollingPref.includes('m')) {\n\t\treturn pollingValue * 60 * 1000;\n\t}\n\treturn pollingValue * 1000;\n};\nexport const getInfo = (set: SetState<AccountState>, get: GetState<AccountState>): Promise<void> =>\n\tget()\n\t\t.soapFetch(SHELL_APP_ID)<{ _jsns: string; rights: string }, GetInfoResponse>('GetInfo', {\n\t\t\t_jsns: 'urn:zimbraAccount',\n\t\t\trights: 'sendAs,sendAsDistList,viewFreeBusy,sendOnBehalfOf,sendOnBehalfOfDistList'\n\t\t})\n\t\t.then((res: any): void => {\n\t\t\tif (res) {\n\t\t\t\tconst { account, settings, version } = normalizeAccount(res);\n\t\t\t\tset({\n\t\t\t\t\taccount,\n\t\t\t\t\tsettings,\n\t\t\t\t\tpollingInterval: parsePollingInterval(settings),\n\t\t\t\t\tzimbraVersion: version\n\t\t\t\t});\n\t\t\t}\n\t\t})\n\t\t.then(() => fetch('/static/iris/components.json'))\n\t\t.then((r: any) => r.json())\n\t\t.then(({ components }: { components: Array<CarbonioModule> }) => {\n\t\t\tuseAppStore.getState().setters.addApps(\n\t\t\t\tfilter(components, ({ type, name }) => {\n\t\t\t\t\tif (type === 'shell') return true;\n\t\t\t\t\tif (isAdmin()) return type === SHELL_MODES.ADMIN;\n\t\t\t\t\tif (isFullClient()) return type === SHELL_MODES.CARBONIO;\n\t\t\t\t\tif (isStandalone()) return name === window.location.pathname.split('/')[2];\n\t\t\t\t\treturn false;\n\t\t\t\t})\n\t\t\t);\n\t\t})\n\t\t.catch((err: unknown) => {\n\t\t\tconsole.log('there was an error checking user data');\n\t\t\tconsole.error(err);\n\t\t\tgoToLogin();\n\t\t});\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport UAParser from 'ua-parser-js';\n\nconst { os, browser } = UAParser();\nexport const userAgent = `CarbonioWebClient - ${browser.name} ${browser.version} (${os.name})`;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n/* eslint-disable @typescript-eslint/ban-types */\n\nimport { ComponentType, FC } from 'react';\nimport { LinkProps } from 'react-router-dom';\nimport { Reducer, Store } from 'redux';\nimport { TFunction } from 'react-i18next';\nimport {\n\tAppRoute,\n\tAppRouteDescriptor,\n\tBadgeInfo,\n\tBoardView,\n\tCarbonioModule,\n\tPrimaryAccessoryView,\n\tSearchView,\n\tSecondaryAccessoryView,\n\tSettingsView,\n\tUtilityView\n} from '../apps';\nimport { ActionFactory, AnyFunction, CombinedActionFactory, Action } from '../integrations';\nimport {\n\tAccountSettings,\n\tTag,\n\tAccount,\n\tNotifyObject,\n\tAccountRights,\n\tAccountRightName,\n\tAccountRightTarget,\n\tSoapFetch\n} from '../account';\nimport { Mods } from '../network';\nimport { HistoryParams, ShellModes } from '../misc';\n\nexport const getBridgedFunctions: () => {\n\taddBoard: (path: string, context?: unknown | { app: string }) => void;\n\tcreateModal: (...params: any[]) => void;\n\tcreateSnackbar: (...params: any[]) => void;\n\tgetHistory: () => History;\n\tremoveBoard: (key: string) => void;\n\tremoveCurrentBoard: () => void;\n\tsetCurrentBoard: (key: string) => void;\n\tupdateBoard: (key: string, url: string, title: string) => void;\n\tupdateCurrentBoard: (url: string, title: string) => void;\n\tt: TFunction;\n\ttoggleMinimizedBoard: () => void;\n};\nexport const editSettings: (mods: Mods) => Promise<any>;\nexport const ZIMBRA_STANDARD_COLORS: Array<{ zValue: number; hex: string; zLabel: string }>;\nexport const FOLDERS: {\n\t[name: string]: string;\n};\nexport const SHELL_APP_ID = 'carbonio-shell-ui';\nexport const SETTINGS_APP_ID = 'settings';\nexport const SEARCH_APP_ID = 'search';\nexport const ACTION_TYPES: {\n\t[name: string]: string;\n};\nexport const SHELL_MODES: Record<string, ShellModes>;\nexport const BASENAME: string;\nexport const getIntegratedHook: (id: string) => [Function, boolean];\nexport const getIntegratedFunction: (id: string) => [Function, boolean];\nexport const getIntegratedComponent: (id: string) => [ComponentType<unknown>, boolean];\nexport const getActions: <T>(target: T, type: string) => Array<Action>;\nexport const getActionsFactory: (type: string) => <T>(target: T) => Array<Action>;\nexport const getAction: <T>(type: string, id: string, target?: T) => [Action | undefined, boolean];\nexport const getActionFactory: <T>(\n\ttype: string,\n\tid: string\n) => [ActionFactory<T> | undefined, boolean];\nexport const useIntegratedHook: (id: string) => [Function, boolean];\nexport const useIntegratedFunction: (id: string) => [Function, boolean];\nexport const useIntegratedComponent: (id: string) => [ComponentType<unknown>, boolean];\nexport const useActions: <T>(target: T, type: string) => Array<Action>;\nexport const useActionsFactory: <T>(type: string) => CombinedActionFactory<T>;\nexport const useAction: <T>(type: string, id: string, target?: T) => [Action | undefined, boolean];\nexport const useActionFactory: <T>(\n\ttype: string,\n\tid: string\n) => [ActionFactory<T> | undefined, boolean];\nexport const useApp: () => CarbonioModule;\nexport const getApp: () => CarbonioModule;\nexport const useAppContext: <T>() => T;\nexport const getAppContext: <T>() => T;\nexport const useUserAccount: () => Account;\nexport const useUserAccounts: () => Array<Account>;\nexport const useUserRights: () => AccountRights;\nexport const useUserRight: (right: AccountRightName) => Array<AccountRightTarget>;\nexport const getUserAccount: () => Account;\nexport const getUserAccounts: () => Array<Account>;\nexport const getUserRights: () => AccountRights;\nexport const getUserRight: (right: AccountRightName) => Array<AccountRightTarget>;\nexport const useTags: () => Array<Tag>;\nexport const getTags: () => Array<Tag>;\nexport const useUserSettings: () => AccountSettings;\nexport const useUserSetting: <T = void>(...path: Array<string>) => string | T;\nexport const getUserSettings: () => AccountSettings;\nexport const getUserSetting: <T = void>(...path: Array<string>) => string | T;\nexport const store: {\n\tstore: Store<any>;\n\tsetReducer(nextReducer: Reducer): void;\n};\nexport const useNotify: () => Array<NotifyObject>;\nexport const useRefresh: () => NotifyObject;\nexport const Applink: FC<LinkProps>;\nexport const Spinner: FC;\nexport const useAddBoardCallback: () => (\n\tpath: string,\n\tcontext?: { app?: string; title?: string }\n) => void;\nexport const useUpdateCurrentBoard: () => (url: string, title: string) => void;\nexport const useRemoveCurrentBoard: () => () => void;\nexport const useBoardConfig: <T>() => T;\n\nexport const useIsMobile: () => boolean;\nexport const soapFetch: SoapFetch;\nexport const xmlSoapFetch: SoapFetch;\nexport const report: (error: Error, hint?: unknown) => void;\nexport const setAppContext: <T>(obj: T) => void;\n\nexport const removeActions: (...ids: Array<string>) => void;\nexport const registerActions: (\n\t...items: Array<{ id: string; action: ActionFactory<unknown>; type: string }>\n) => void;\nexport const removeComponents: (...ids: Array<string>) => void;\nexport const registerComponents: (\n\t...items: Array<{ id: string; component: ComponentType }>\n) => void;\nexport const removeHooks: (...ids: Array<string>) => void;\nexport const registerHooks: (...items: Array<{ id: string; hook: AnyFunction }>) => void;\nexport const removeFunctions: (...ids: Array<string>) => void;\nexport const registerFunctions: (...items: Array<{ id: string; fn: AnyFunction }>) => void;\n// add route (id route primaryBar secondaryBar app)\nexport const addRoute: (routeData: Partial<AppRouteDescriptor>) => string;\nexport const setRouteVisibility: (id: string, visible: boolean) => void;\n// remove route (id | route)\nexport const removeRoute: (id: string) => void;\n//\n// update primaryBar\nexport const updatePrimaryBadge: (badge: Partial<BadgeInfo>, id: string) => void;\nexport const updateUtilityBadge: (badge: Partial<BadgeInfo>, id: string) => void;\n//\n// add board\nexport const addBoardView: (data: Object & Partial<BoardView>) => string;\n// remove board\nexport const removeBoardView: (id: string) => void;\n//\n// add settings\nexport const addSettingsView: (data: Partial<SettingsView>) => string;\n// remove settings\nexport const removeSettingsView: (id: string) => void;\n//\n// add search\nexport const addSearchView: (data: Partial<SearchView>) => string;\n// remove search\nexport const removeSearchView: (id: string) => void;\n//\n// add utility\nexport const addUtilityView: (data: Partial<UtilityView>) => string;\n// remove utility\nexport const removeUtilityView: (id: string) => void;\n//\n// add primaryAccessory\nexport const addPrimaryAccessoryView: (data: Partial<PrimaryAccessoryView>) => string;\n// remove primaryAccessory\nexport const removePrimaryAccessoryView: (id: string) => void;\n//\n// add secondaryAccessory\nexport const addSecondaryAccessoryView: (data: Partial<SecondaryAccessoryView>) => string;\n// remove secondaryAccessory\nexport const removeSecondaryAccessoryView: (id: string) => void;\nexport const usePushHistoryCallback: () => (params: HistoryParams) => void;\nexport const useReplaceHistoryCallback: () => (params: HistoryParams) => void;\nexport const useGoBackHistoryCallback: () => () => void;\nexport const pushHistory: (params: HistoryParams) => void;\nexport const replaceHistory: (params: HistoryParams) => void;\nexport const goBackHistory: () => void;\nexport const useCurrentRoute: () => AppRoute | undefined;\nexport const getCurrentRoute: () => AppRoute | undefined;\n","/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport create, { StoreApi, UseBoundStore } from 'zustand';\nimport { BrowserClient, Hub } from '@sentry/browser';\nimport { reduce } from 'lodash';\nimport { CarbonioModule, SHELL_APP_ID } from '../../types';\n\ntype ReporterState = {\n\tclients: Record<string, Hub>;\n\tsetClients: (apps: Array<CarbonioModule>) => void;\n};\n\nexport const useReporter = create<ReporterState>((set) => ({\n\tclients: {\n\t\t[SHELL_APP_ID]: new Hub(\n\t\t\tnew BrowserClient({\n\t\t\t\tdsn: 'https://0ce2448c05b94f0182c47ae52c7ff52c@feedback.zextras.tools/6',\n\t\t\t\trelease: '0',\n\t\t\t\tmaxValueLength: 500\n\t\t\t})\n\t\t),\n\t\tfeedbacks: new Hub(\n\t\t\tnew BrowserClient({\n\t\t\t\tdsn: 'https://1b6b3e2bbdc64a73bf45c72b725c56b4@feedback.zextras.tools/8',\n\t\t\t\trelease: '0',\n\t\t\t\tmaxValueLength: 500\n\t\t\t})\n\t\t)\n\t},\n\tsetClients: (apps): void => {\n\t\tset((s) => ({\n\t\t\tclients: reduce(\n\t\t\t\tapps,\n\t\t\t\t(acc, app) => {\n\t\t\t\t\tif (app.sentryDsn) {\n\t\t\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\t\t\ts.clients[app.name] = new Hub(\n\t\t\t\t\t\t\tnew BrowserClient({\n\t\t\t\t\t\t\t\tdsn: app.sentryDsn,\n\t\t\t\t\t\t\t\trelease: app.version,\n\t\t\t\t\t\t\t\tmaxValueLength: 500\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn acc;\n\t\t\t\t},\n\t\t\t\ts.clients\n\t\t\t)\n\t\t}));\n\t}\n})) as UseBoundStore<ReporterState, StoreApi<ReporterState>>;\n","/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\nimport { Event, EventHint, Severity } from '@sentry/browser';\nimport { useReporter } from './store';\n\nexport const report =\n\t(appId: string) =>\n\t(error: Event, hint?: EventHint): string => {\n\t\tconst reporter = useReporter.getState();\n\t\tconst eventId = reporter.clients[appId]?.captureException(error, { ...hint });\n\t\tif (eventId) {\n\t\t\tconsole.info('Reported event ', eventId);\n\t\t}\n\t\treturn eventId;\n\t};\n\nexport const feedback = (message: Event): string => {\n\tconst reporter = useReporter.getState();\n\tconst eventId = reporter.clients.feedbacks.captureEvent({ ...message, level: Severity.Info });\n\tif (eventId) {\n\t\tconsole.info('Feedback ', eventId, ' sent, Thank you');\n\t}\n\treturn eventId;\n};\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport { GetState, SetState } from 'zustand';\nimport { find } from 'lodash';\nimport { goToLogin } from './go-to-login';\nimport {\n\tAccount,\n\tAccountState,\n\tErrorSoapResponse,\n\tSoapResponse,\n\tSuccessSoapResponse,\n\tTag\n} from '../../types';\nimport { userAgent } from './user-agent';\nimport { noOp } from './noOp';\nimport { report } from '../reporting';\n\nconst getAccount = (\n\tacc?: Account,\n\totherAccount?: string\n): { by: string; _content: string } | undefined => {\n\tif (otherAccount) {\n\t\treturn {\n\t\t\tby: 'name',\n\t\t\t_content: otherAccount\n\t\t};\n\t}\n\tif (acc) {\n\t\tif (acc.name) {\n\t\t\treturn {\n\t\t\t\tby: 'name',\n\t\t\t\t_content: acc.name\n\t\t\t};\n\t\t}\n\t\tif (acc.id) {\n\t\t\treturn {\n\t\t\t\tby: 'id',\n\t\t\t\t_content: acc.id\n\t\t\t};\n\t\t}\n\t}\n\treturn undefined;\n};\n\nconst getXmlAccount = (acc?: Account, otherAccount?: string): string => {\n\tif (otherAccount) {\n\t\treturn `<account by=\"name\">${otherAccount}</account>`;\n\t}\n\tif (acc) {\n\t\tif (acc.name) {\n\t\t\treturn `<account by=\"name\">${acc.name}</account>`;\n\t\t}\n\t\tif (acc.id) {\n\t\t\treturn `<account by=\"id\">${acc.id}</account>`;\n\t\t}\n\t}\n\treturn '';\n};\n\nconst getXmlSession = (context?: any): string => {\n\tif (context?.session?.id) {\n\t\treturn `<session id=\"${context?.session?.id}\"/>`;\n\t}\n\treturn '';\n};\n\nconst handleResponse = <R>(\n\tapi: string,\n\tres: SoapResponse<R>,\n\tset: SetState<AccountState>,\n\tget: GetState<AccountState>\n): R => {\n\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t// @ts-ignore\n\tclearTimeout(get().noOpTimeout);\n\tif (res?.Body?.Fault) {\n\t\tif (\n\t\t\tfind(\n\t\t\t\t['service.AUTH_REQUIRED', 'service.AUTH_EXPIRED'],\n\t\t\t\t(code) => code === (<ErrorSoapResponse>res).Body.Fault.Detail?.Error?.Code\n\t\t\t)\n\t\t) {\n\t\t\tgoToLogin();\n\t\t}\n\t\tthrow new Error(\n\t\t\t`${(<ErrorSoapResponse>res)?.Body.Fault.Detail?.Error?.Detail}: ${\n\t\t\t\t(<ErrorSoapResponse>res).Body.Fault.Reason?.Text\n\t\t\t}`\n\t\t);\n\t}\n\tif (res?.Header?.context) {\n\t\tconst usedQuota =\n\t\t\tres.Header.context?.refresh?.mbx?.[0]?.s ?? res.Header.context?.notify?.[0]?.mbx?.[0]?.s;\n\t\tconst tags = res.Header.context?.refresh?.tags?.tag as Array<Tag>;\n\t\tset({\n\t\t\tnoOpTimeout: setTimeout(() => noOp(get), get().pollingInterval),\n\t\t\ttags: tags ?? get().tags,\n\t\t\tusedQuota: usedQuota ?? get().usedQuota,\n\t\t\tcontext: {\n\t\t\t\t...get().context,\n\t\t\t\t...res?.Header?.context\n\t\t\t}\n\t\t});\n\t}\n\treturn (<SuccessSoapResponse<R>>res).Body[`${api}Response`] as R;\n};\nexport const getSoapFetch =\n\t(app: string, set: SetState<AccountState>, get: GetState<AccountState>) =>\n\t<Request, Response>(api: string, body: Request, otherAccount?: string): Promise<Response> =>\n\t\tfetch(`/service/soap/${api}Request`, {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json'\n\t\t\t},\n\t\t\tbody: JSON.stringify({\n\t\t\t\tBody: {\n\t\t\t\t\t[`${api}Request`]: body\n\t\t\t\t},\n\t\t\t\tHeader: {\n\t\t\t\t\tcontext: {\n\t\t\t\t\t\t_jsns: 'urn:zimbra',\n\t\t\t\t\t\tnotify: get().context?.notify?.[0]?.seq\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\tseq: get().context?.notify?.[0]?.seq\n\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\tsession: get().context?.session ?? {},\n\t\t\t\t\t\taccount: getAccount(get().account as Account, otherAccount),\n\t\t\t\t\t\tuserAgent: {\n\t\t\t\t\t\t\tname: userAgent,\n\t\t\t\t\t\t\tversion: get().zimbraVersion\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t}) // TODO proper error handling\n\t\t\t.then((res) => res?.json())\n\t\t\t.then((res: SoapResponse<Response>) => handleResponse(api, res, set, get))\n\t\t\t.catch((e) => {\n\t\t\t\treport(app)(e);\n\t\t\t\tthrow e;\n\t\t\t}) as Promise<Response>;\n\nexport const getXmlSoapFetch =\n\t(app: string, set: SetState<AccountState>, get: GetState<AccountState>) =>\n\t<Request, Response>(api: string, body: Request, otherAccount?: string): Promise<Response> =>\n\t\tfetch(`/service/soap/${api}Request`, {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'content-type': 'application/soap+xml'\n\t\t\t},\n\t\t\tbody: `<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\t\t<soap:Envelope xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\">\n\t\t\t<soap:Header><context xmlns=\"urn:zimbra\"><userAgent name=\"${userAgent}\" version=\"${\n\t\t\t\tget().zimbraVersion\n\t\t\t}\"/>${getXmlSession(get().context)}${getXmlAccount(\n\t\t\t\tget().account,\n\t\t\t\totherAccount\n\t\t\t)}<format type=\"js\"/></context></soap:Header>\n\t\t\t<soap:Body>${body}</soap:Body>\n\t\t</soap:Envelope>`\n\t\t}) // TODO proper error handling\n\t\t\t.then((res) => res?.json())\n\t\t\t.then((res: SoapResponse<Response>) => handleResponse(api, res, set, get))\n\t\t\t.catch((e) => {\n\t\t\t\treport(app)(e);\n\t\t\t\tthrow e;\n\t\t\t}) as Promise<Response>;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport { GetState } from 'zustand';\nimport { AccountState } from '../../types';\nimport { SHELL_APP_ID } from '../constants';\n\nexport const noOp = (get: GetState<AccountState>): void => {\n\tget().soapFetch(SHELL_APP_ID)(\n\t\t'NoOp',\n\t\tget().pollingInterval === 500\n\t\t\t? { _jsns: 'urn:zimbraMail', limitToOneBlocked: 1, wait: 1 }\n\t\t\t: { _jsns: 'urn:zimbraMail' }\n\t);\n};\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport create, { StoreApi, UseBoundStore } from 'zustand';\nimport { AccountContext, AccountState, SoapFetch } from '../../../types';\nimport { getInfo } from '../../network/get-info';\nimport { getSoapFetch, getXmlSoapFetch } from '../../network/fetch';\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nexport const useAccountStore = create<AccountState>((set, get) => ({\n\taccount: undefined,\n\tversion: '',\n\tsettings: {\n\t\tprefs: {},\n\t\tattrs: {},\n\t\tprops: []\n\t},\n\tcontext: {},\n\tsetContext: (context: AccountContext): void => set({ context }),\n\tinit: (): Promise<void> => getInfo(set, get),\n\tsoapFetch: (app: string): SoapFetch => getSoapFetch(app, set, get),\n\txmlSoapFetch: (app: string): SoapFetch => getXmlSoapFetch(app, set, get),\n\tusedQuota: 0,\n\tlastNotificationTime: Date.now(),\n\tpollingInterval: 30000\n})) as UseBoundStore<AccountState, StoreApi<AccountState>>;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport { GetInfoResponse, Account, AccountSettings } from '../../../types';\n\nconst normalizeSettings = (\n\tsettings: Pick<GetInfoResponse, 'attrs' | 'prefs' | 'props'>\n): AccountSettings => ({\n\tattrs: settings.attrs._attrs,\n\tprefs: settings.prefs._attrs,\n\tprops: settings.props.prop ?? []\n});\n\nexport const normalizeAccount = ({\n\tid,\n\tname,\n\tattrs,\n\tprefs,\n\tidentities,\n\tsignatures,\n\tprops,\n\tversion,\n\trights\n}: GetInfoResponse): {\n\taccount: Account;\n\tsettings: AccountSettings;\n\tversion: string;\n} => {\n\tconst settings = normalizeSettings({ attrs, prefs, props });\n\treturn {\n\t\taccount: {\n\t\t\tid,\n\t\t\tname,\n\t\t\tdisplayName: attrs._attrs.displayName,\n\t\t\tidentities,\n\t\t\tsignatures,\n\t\t\trights\n\t\t},\n\t\tsettings,\n\t\tversion\n\t};\n};\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport { find, get, join } from 'lodash';\nimport { useMemo } from 'react';\nimport {\n\tAccount,\n\tAccountRightName,\n\tAccountRights,\n\tAccountRightTarget,\n\tAccountSettings,\n\tNotifyObject,\n\tTag\n} from '../../../types';\nimport { useAccountStore } from './store';\n\nexport const useUserAccount = (): Account => useAccountStore((s) => s.account as Account);\nexport const useUserAccounts = (): Array<Account> => {\n\tconst acct = useAccountStore((s) => s.account);\n\treturn useMemo(() => (acct ? [acct as Account] : []), [acct]);\n};\n\nexport const useUserRights = (): AccountRights =>\n\tuseAccountStore((s) => s.account?.rights ?? { targets: [] });\n\nexport const useUserRight = (right: AccountRightName): Array<AccountRightTarget> => {\n\tconst { targets } = useUserRights();\n\treturn useMemo(\n\t\t() => find(targets, ['right', right])?.target ?? ([] as Array<AccountRightTarget>),\n\t\t[right, targets]\n\t);\n};\nexport const useUserSettings = (): AccountSettings => useAccountStore((s) => s.settings);\nexport const useUserSetting = <T = void>(...path: Array<string>): string | T =>\n\tuseAccountStore((s) => get(s.settings, join(path, '.')));\nexport const useTags = (): Array<Tag> => useAccountStore((s) => s.tags);\n\nexport const useNotify = (): NotifyObject[] => {\n\tconst notify = useAccountStore((s) => s.context.notify ?? []);\n\treturn notify;\n};\nexport const useRefresh = (): NotifyObject => useAccountStore((s) => s.context.refresh ?? {});\n\nexport const getUserAccount = (): Account => useAccountStore.getState().account as Account;\nexport const getUserAccounts = (): Array<Account> => [\n\tuseAccountStore.getState().account as Account\n];\nexport const getUserSettings = (): AccountSettings => useAccountStore.getState().settings;\nexport const getUserSetting = <T = void>(...path: Array<string>): string | T =>\n\tget(useAccountStore.getState().settings, join(path, '.'));\nexport const getTags = (): Array<Tag> => useAccountStore.getState().tags;\n\nexport const getUserRights = (): AccountRights =>\n\tuseAccountStore.getState().account?.rights ?? { targets: [] };\n\nexport const getUserRight = (right: AccountRightName): Array<AccountRightTarget> =>\n\tfind(getUserRights().targets, ['right', right])?.target ?? ([] as Array<AccountRightTarget>);\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\n/* eslint-disable @typescript-eslint/ban-types */\nimport create, { UseBoundStore, StoreApi } from 'zustand';\nimport { reduce } from 'lodash';\nimport { useEffect } from 'react';\nimport { ContextBridgeState } from '../../types';\n\nexport const useContextBridge = create<ContextBridgeState>((set) => ({\n\tpackageDependentFunctions: {},\n\tfunctions: {},\n\tadd: ({ packageDependentFunctions, functions }): void => {\n\t\tset((s) => ({\n\t\t\tpackageDependentFunctions: reduce(\n\t\t\t\tpackageDependentFunctions ?? {},\n\t\t\t\t(acc, f, key) => {\n\t\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\t\tacc[key] = f;\n\t\t\t\t\treturn acc;\n\t\t\t\t},\n\t\t\t\ts.packageDependentFunctions\n\t\t\t),\n\t\t\tfunctions: reduce(\n\t\t\t\tfunctions ?? {},\n\t\t\t\t(acc, f, key) => {\n\t\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\t\tacc[key] = f;\n\t\t\t\t\treturn acc;\n\t\t\t\t},\n\t\t\t\ts.functions\n\t\t\t)\n\t\t}));\n\t}\n})) as UseBoundStore<ContextBridgeState, StoreApi<ContextBridgeState>>;\n\nexport const useBridge = (content: Partial<Omit<ContextBridgeState, 'add'>>): void => {\n\tconst addFunctions = useContextBridge(({ add }) => add);\n\tuseEffect(() => {\n\t\taddFunctions(content);\n\t}, [content, addFunctions]);\n};\n","/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\nimport React, { FC, useCallback, useEffect, useState } from 'react';\nimport { Container } from '@zextras/carbonio-design-system';\n// TinyMCE so the global var exists\n// eslint-disable-next-line no-unused-vars\nimport tinymce from 'tinymce/tinymce';\n// this 'expression' prevents webpack from stripping it, maybe there's a better way\ntinymce;\n\n// Theme\nimport 'tinymce/themes/silver';\n// Toolbar icons\nimport 'tinymce/icons/default';\n// Editor styles\nimport 'tinymce/skins/ui/oxide/skin.min.css';\n\n// importing the plugin js.\nimport 'tinymce/plugins/advlist';\nimport 'tinymce/plugins/autolink';\nimport 'tinymce/plugins/lists';\nimport 'tinymce/plugins/link';\nimport 'tinymce/plugins/image';\nimport 'tinymce/plugins/charmap';\nimport 'tinymce/plugins/code';\nimport 'tinymce/plugins/print';\nimport 'tinymce/plugins/preview';\nimport 'tinymce/plugins/anchor';\nimport 'tinymce/plugins/searchreplace';\nimport 'tinymce/plugins/visualblocks';\nimport 'tinymce/plugins/fullscreen';\nimport 'tinymce/plugins/insertdatetime';\nimport 'tinymce/plugins/media';\nimport 'tinymce/plugins/table';\nimport 'tinymce/plugins/paste';\nimport 'tinymce/plugins/help';\nimport 'tinymce/plugins/wordcount';\nimport 'tinymce/plugins/quickbars';\nimport 'tinymce/plugins/directionality';\nimport 'tinymce/plugins/autoresize';\n\nimport { Editor } from '@tinymce/tinymce-react';\n\ntype ComposerProps = {\n\t/** The callback invoked when an edit is performed into the editor. `([text, html]) => {}` */\n\tonEditorChange?: (values: [string, string]) => void;\n\t/** Enable the distraction-free mode */\n\tinline?: boolean;\n\t/** The initial content of the editor */\n\tinitialValue?: string;\n\t/** The content of the editor (controlled mode) */\n\tvalue?: string;\n\t/** The base url to append to the resource urls */\n\tbaseAssetsUrl?: string;\n};\n\nconst Composer: FC<ComposerProps> = ({\n\tonEditorChange,\n\tinline = false,\n\tvalue,\n\tbaseAssetsUrl,\n\tinitialValue,\n\t...rest\n}) => {\n\tconst [content, setContent] = useState(initialValue);\n\n\tconst _onEditorChange = useCallback(\n\t\t(newContent, editor) => {\n\t\t\tsetContent(newContent);\n\t\t\tonEditorChange?.([\n\t\t\t\teditor.getContent({ format: 'text' }),\n\t\t\t\teditor.getContent({ format: 'html' })\n\t\t\t]);\n\t\t},\n\t\t[setContent, onEditorChange]\n\t);\n\n\tuseEffect(() => setContent(value), [value]);\n\n\treturn (\n\t\t<Container\n\t\t\theight=\"100%\"\n\t\t\tcrossAlignment=\"baseline\"\n\t\t\tmainAlignment=\"flex-start \"\n\t\t\tstyle={{ overflowY: 'hidden' }}\n\t\t>\n\t\t\t<Editor\n\t\t\t\tvalue={content}\n\t\t\t\tinit={{\n\t\t\t\t\tskin_url: `${baseAssetsUrl}/tinymce/skins/ui/oxide`,\n\t\t\t\t\tcontent_css: `${baseAssetsUrl}/tinymce/skins/content/default/content.css`,\n\t\t\t\t\tmin_height: 350,\n\t\t\t\t\tmenubar: false,\n\t\t\t\t\tstatusbar: false,\n\t\t\t\t\tbranding: false,\n\t\t\t\t\tresize: true,\n\t\t\t\t\tinline,\n\t\t\t\t\tplugins: [\n\t\t\t\t\t\t'advlist',\n\t\t\t\t\t\t'autolink',\n\t\t\t\t\t\t'lists',\n\t\t\t\t\t\t'link',\n\t\t\t\t\t\t'image',\n\t\t\t\t\t\t'charmap',\n\t\t\t\t\t\t'print',\n\t\t\t\t\t\t'preview',\n\t\t\t\t\t\t'anchor',\n\t\t\t\t\t\t'searchreplace',\n\t\t\t\t\t\t'code',\n\t\t\t\t\t\t'fullscreen',\n\t\t\t\t\t\t'insertdatetime',\n\t\t\t\t\t\t'media',\n\t\t\t\t\t\t'table',\n\t\t\t\t\t\t'paste',\n\t\t\t\t\t\t'code',\n\t\t\t\t\t\t'help',\n\t\t\t\t\t\t'quickbars',\n\t\t\t\t\t\t'directionality',\n\t\t\t\t\t\t'autoresize'\n\t\t\t\t\t],\n\t\t\t\t\ttoolbar: inline\n\t\t\t\t\t\t? false\n\t\t\t\t\t\t: // eslint-disable-next-line max-len\n\t\t\t\t\t\t 'fontselect fontsizeselect formatselect | bold italic underline strikethrough | removeformat code | alignleft aligncenter alignright alignjustify | forecolor backcolor | bullist numlist outdent indent | ltr rtl',\n\t\t\t\t\tquickbars_insert_toolbar: inline ? 'bullist numlist' : '',\n\t\t\t\t\tquickbars_selection_toolbar: inline\n\t\t\t\t\t\t? 'bold italic underline | forecolor backcolor | removeformat | quicklink'\n\t\t\t\t\t\t: 'quicklink',\n\t\t\t\t\tcontextmenu: inline ? '' : '',\n\t\t\t\t\ttoolbar_mode: 'wrap'\n\t\t\t\t}}\n\t\t\t\tonEditorChange={_onEditorChange}\n\t\t\t\t{...rest}\n\t\t\t/>\n\t\t</Container>\n\t);\n};\n\nexport default Composer;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport produce from 'immer';\nimport create from 'zustand';\nimport { forEach, omit, reduce } from 'lodash';\nimport { ComponentType } from 'react';\nimport { ActionFactory, AnyFunction, IntegrationsState, SHELL_APP_ID } from '../../../types';\nimport Composer from './composer';\n\nexport const useIntegrationsStore = create<IntegrationsState>((set) => ({\n\tactions: {},\n\tcomponents: {\n\t\tcomposer: {\n\t\t\titem: Composer,\n\t\t\tapp: SHELL_APP_ID\n\t\t}\n\t},\n\thooks: {},\n\tfunctions: {},\n\tregisterActions: <T>(\n\t\t...items: Array<{ id: string; action: ActionFactory<T>; type: string }>\n\t): void =>\n\t\tset(\n\t\t\tproduce((state) => {\n\t\t\t\tforEach(items, ({ id, action, type }) => {\n\t\t\t\t\tif (!state.actions[type]) state.actions[type] = {};\n\t\t\t\t\tstate.actions[type][id] = action;\n\t\t\t\t});\n\t\t\t})\n\t\t),\n\tregisterComponents:\n\t\t(app: string) =>\n\t\t(...items: Array<{ id: string; component: ComponentType }>): void =>\n\t\t\tset(\n\t\t\t\tproduce((state) => {\n\t\t\t\t\tforEach(items, ({ id, component }) => {\n\t\t\t\t\t\tstate.components[id] = { app, item: component };\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t),\n\tregisterHooks: (...items: Array<{ id: string; hook: AnyFunction }>): void =>\n\t\tset(\n\t\t\tproduce((state) => {\n\t\t\t\tforEach(items, ({ id, hook }) => {\n\t\t\t\t\tstate.hooks[id] = hook;\n\t\t\t\t});\n\t\t\t})\n\t\t),\n\tregisterFunctions: (...items: Array<{ id: string; fn: AnyFunction }>): void =>\n\t\tset(\n\t\t\tproduce((state) => {\n\t\t\t\tforEach(items, ({ id, fn }) => {\n\t\t\t\t\tstate.functions[id] = fn;\n\t\t\t\t});\n\t\t\t})\n\t\t),\n\tremoveActions: (...ids: Array<string>): void =>\n\t\tset((s) => ({\n\t\t\t...s,\n\t\t\tactions: reduce(\n\t\t\t\ts.actions,\n\t\t\t\t(acc, actions, type) => ({ ...acc, [type]: omit(actions, ids) }),\n\t\t\t\t{}\n\t\t\t)\n\t\t})),\n\tremoveComponents: (...ids: Array<string>): void =>\n\t\tset((s) => ({\n\t\t\t...s,\n\t\t\tactions: omit(s.components, ids)\n\t\t})),\n\tremoveHooks: (...ids: Array<string>): void =>\n\t\tset((s) => ({\n\t\t\t...s,\n\t\t\tactions: omit(s.hooks, ids)\n\t\t})),\n\tremoveFunctions: (...ids: Array<string>): void =>\n\t\tset((s) => ({\n\t\t\t...s,\n\t\t\tactions: omit(s.functions, ids)\n\t\t}))\n}));\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport { createContext, useContext } from 'react';\n\nexport const BootstrapperContext = createContext<any>({});\n\nexport function useI18nFactory(): any {\n\tconst { i18nFactory } = useContext(BootstrapperContext);\n\treturn i18nFactory;\n}\n\nexport function useStoreFactory(): any {\n\tconst { storeFactory } = useContext(BootstrapperContext);\n\treturn storeFactory;\n}\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { FC, useCallback } from 'react';\nimport { Catcher } from '@zextras/carbonio-design-system';\n\nconst AppErrorCatcher: FC = ({ children }) => {\n\tconst onError = useCallback((error) => {\n\t\tconsole.error(error);\n\t\t// ({event: 'report-exception',data: { exception: error }});\n\t}, []);\n\treturn <Catcher onError={onError}>{children}</Catcher>;\n};\nexport default AppErrorCatcher;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { FC, useMemo } from 'react';\nimport { Provider } from 'react-redux';\nimport { I18nextProvider } from 'react-i18next';\nimport { ModalManager, SnackbarManager } from '@zextras/carbonio-design-system';\nimport { useStoreFactory, useI18nFactory } from '../bootstrapper-context';\nimport AppErrorCatcher from './app-error-catcher';\nimport { getApp, getShell } from '../../store/app';\n\nconst AppContextProvider: FC<{ pkg: string }> = ({ pkg, children }) => {\n\tconst i18nFactory = useI18nFactory();\n\tconst storeFactory = useStoreFactory();\n\tconst app = useMemo(() => getApp(pkg)() ?? getShell(), [pkg]);\n\tconst store = useMemo(() => storeFactory.getStoreForApp(app), [app, storeFactory]);\n\tconst i18n = useMemo(() => i18nFactory.getAppI18n(app), [i18nFactory, app]);\n\treturn (\n\t\t<Provider store={store}>\n\t\t\t<I18nextProvider i18n={i18n}>\n\t\t\t\t<ModalManager>\n\t\t\t\t\t<SnackbarManager>\n\t\t\t\t\t\t<AppErrorCatcher>{children}</AppErrorCatcher>\n\t\t\t\t\t</SnackbarManager>\n\t\t\t\t</ModalManager>\n\t\t\t</I18nextProvider>\n\t\t</Provider>\n\t);\n};\n\nexport default AppContextProvider;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\n/* eslint-disable react-hooks/rules-of-hooks */\n/* THIS FILE CONTAINS HOOKS, BUT ESLINT IS DUMB */\n\nimport { compact, map } from 'lodash';\nimport React, { FC, FunctionComponent } from 'react';\nimport { useIntegrationsStore } from './store';\nimport { Action, ActionFactory } from '../../../types';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport AppContextProvider from '../../boot/app/app-context-provider';\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const getIntegratedHook = (id: string): [Function, boolean] => {\n\tconst integration = useIntegrationsStore.getState().hooks?.[id];\n\t// eslint-disable-next-line @typescript-eslint/no-empty-function\n\treturn integration ? [integration, true] : [(): void => {}, false];\n};\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const getIntegratedFunction = (id: string): [Function, boolean] => {\n\tconst integration = useIntegrationsStore.getState().functions?.[id];\n\t// eslint-disable-next-line @typescript-eslint/no-empty-function\n\treturn integration ? [integration, true] : [(): void => {}, false];\n};\n\nexport const getIntegratedComponent = (id: string): [FunctionComponent<unknown>, boolean] => {\n\tconst Integration = useIntegrationsStore.getState().components?.[id];\n\tif (Integration) {\n\t\tconst C: FC = (props: unknown) => (\n\t\t\t<AppContextProvider pkg={Integration.app}>\n\t\t\t\t{/* eslint-disable-next-line @typescript-eslint/ban-ts-comment */}\n\t\t\t\t{/* @ts-ignore */}\n\t\t\t\t<Integration.item {...props} />\n\t\t\t</AppContextProvider>\n\t\t);\n\t\treturn [C, true];\n\t}\n\treturn [(): null => null, false];\n};\n\nexport const getActions = <T,>(target: T, type: string): Array<Action> => {\n\tconst factories = useIntegrationsStore.getState().actions[type];\n\treturn compact(\n\t\tmap(factories, (f) => {\n\t\t\ttry {\n\t\t\t\tconst action = f(target);\n\t\t\t\treturn action;\n\t\t\t} catch (e) {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.error(e);\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t})\n\t);\n};\n\nexport const getActionsFactory = (type: string): (<T>(target: T) => Array<Action>) => {\n\tconst factories = useIntegrationsStore.getState().actions[type];\n\treturn <T,>(target: T): Array<Action> =>\n\t\tcompact(\n\t\t\tmap(factories, (f) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst action = f(target);\n\t\t\t\t\treturn action;\n\t\t\t\t} catch (e) {\n\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\tconsole.error(e);\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t})\n\t\t);\n};\n\nexport const getAction = <T,>(\n\ttype: string,\n\tid: string,\n\ttarget?: T\n): [Action | undefined, boolean] => {\n\tconst factory = useIntegrationsStore.getState().actions[type]?.[id];\n\tconst action = factory?.(target);\n\treturn [action, !!action];\n};\n\nexport const getActionFactory = <T,>(\n\ttype: string,\n\tid: string\n): [ActionFactory<T> | undefined, boolean] => {\n\tconst factory = useIntegrationsStore.getState().actions[type]?.[id];\n\treturn [factory, !!factory];\n};\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport { createContext } from 'react';\n\nconst ShellContext = createContext({ isMobile: true });\n\nexport default ShellContext;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\n/* eslint-disable react-hooks/rules-of-hooks */\n\nimport { useContext, useState } from 'react';\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport ShellContext from './shell-context';\n\nexport function useIsMobile(): boolean {\n\tconst { isMobile } = useContext(ShellContext);\n\treturn isMobile;\n}\n\nexport function useLocalStorage<T>(key: string, initialValue: T): any {\n\tconst [storedValue, setStoredValue] = useState<T>(() => {\n\t\ttry {\n\t\t\tconst item = window.localStorage.getItem(key);\n\t\t\treturn item ? JSON.parse(item) : initialValue;\n\t\t} catch (error) {\n\t\t\tconsole.error(error);\n\t\t\treturn initialValue;\n\t\t}\n\t});\n\tconst setValue = (value: T | ((val: T) => T)): any => {\n\t\ttry {\n\t\t\tconst valueToStore = value instanceof Function ? value(storedValue) : value;\n\t\t\tsetStoredValue(valueToStore);\n\t\t\tlocalStorage.setItem(key, JSON.stringify(valueToStore));\n\t\t} catch (error) {\n\t\t\tconsole.error(error);\n\t\t}\n\t};\n\treturn [storedValue, setValue] as const;\n}\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\n/* eslint-disable react-hooks/rules-of-hooks */\n/* THIS FILE CONTAINS HOOKS, BUT ESLINT IS DUMB */\n\nimport { compact, map } from 'lodash';\nimport React, { useMemo, FC, FunctionComponent, useCallback } from 'react';\nimport { useIntegrationsStore } from './store';\nimport { Action, ActionFactory, CombinedActionFactory } from '../../../types';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport AppContextProvider from '../../boot/app/app-context-provider';\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const useIntegratedHook = (id: string): [Function, boolean] => {\n\tconst integration = useIntegrationsStore((s) => s.hooks?.[id]);\n\t// eslint-disable-next-line @typescript-eslint/no-empty-function\n\treturn integration ? [integration, true] : [(): void => {}, false];\n};\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const useIntegratedFunction = (id: string): [Function, boolean] => {\n\tconst integration = useIntegrationsStore((s) => s.functions?.[id]);\n\t// eslint-disable-next-line @typescript-eslint/no-empty-function\n\treturn integration ? [integration, true] : [(): void => {}, false];\n};\n\nexport const useIntegratedComponent = (id: string): [FunctionComponent<unknown>, boolean] => {\n\tconst Integration = useIntegrationsStore((s) => s.components?.[id]);\n\treturn useMemo(() => {\n\t\tif (Integration) {\n\t\t\tconst C: FC = (props: unknown) => (\n\t\t\t\t<AppContextProvider pkg={Integration.app}>\n\t\t\t\t\t{/* eslint-disable-next-line @typescript-eslint/ban-ts-comment */}\n\t\t\t\t\t{/* @ts-ignore */}\n\t\t\t\t\t<Integration.item {...props} />\n\t\t\t\t</AppContextProvider>\n\t\t\t);\n\t\t\treturn [C, true];\n\t\t}\n\t\treturn [(): null => null, false];\n\t}, [Integration]);\n};\n\nexport const useActions = <T,>(target: T, type: string): Array<Action> => {\n\tconst factories = useIntegrationsStore((s) => s.actions[type]);\n\tconst actions = useMemo(\n\t\t() =>\n\t\t\tcompact(\n\t\t\t\tmap(factories, (f) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst action = f(target);\n\t\t\t\t\t\treturn action;\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\t\tconsole.error(e);\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t) ?? [],\n\t\t[factories, target]\n\t);\n\treturn actions;\n};\n\nexport const useActionsFactory = <T,>(type: string): CombinedActionFactory<T> => {\n\tconst factories = useIntegrationsStore((s) => s.actions[type]);\n\tconst combinedFactory = useCallback(\n\t\t(target: unknown) =>\n\t\t\tcompact(\n\t\t\t\tmap(factories, (f) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst action = f(target);\n\t\t\t\t\t\treturn action;\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\t\tconsole.error(e);\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t),\n\t\t[factories]\n\t);\n\treturn combinedFactory;\n};\n\nexport const useAction = <T,>(\n\ttype: string,\n\tid: string,\n\ttarget?: T\n): [Action | undefined, boolean] => {\n\tconst factory = useIntegrationsStore((s) => s.actions[type][id]);\n\tconst action = useMemo(() => {\n\t\ttry {\n\t\t\treturn factory?.(target);\n\t\t} catch (e) {\n\t\t\treturn undefined;\n\t\t}\n\t}, [factory, target]);\n\treturn [action, !!action];\n};\n\nexport const useActionFactory = <T,>(\n\ttype: string,\n\tid: string\n): [ActionFactory<T> | undefined, boolean] => {\n\tconst factory = useIntegrationsStore((s) => s.actions[type][id]);\n\treturn [factory, !!factory];\n};\n","/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport { To } from 'history';\nimport { find, startsWith, replace, trim } from 'lodash';\nimport { useMemo, useCallback } from 'react';\nimport { useLocation, useHistory } from 'react-router-dom';\nimport { AppRoute, HistoryParams } from '../../types';\nimport { useRoutes, getRoutes } from '../store/app';\nimport { useContextBridge } from '../store/context-bridge';\n\nexport const useCurrentRoute = (): AppRoute | undefined => {\n\tconst location = useLocation();\n\tconst routes = useRoutes();\n\treturn useMemo(\n\t\t() => find(routes, (r) => startsWith(trim(location.pathname, '/'), r.route)),\n\t\t[location.pathname, routes]\n\t);\n};\nexport const getCurrentRoute = (): AppRoute | undefined => {\n\tconst history = useContextBridge.getState().functions.getHistory?.();\n\tconst routes = getRoutes();\n\treturn find(routes, (r) => startsWith(trim(history.location.pathname, '/'), r.route));\n};\n\nexport const parseParams = (params: HistoryParams): To => {\n\tif (typeof params === 'string') {\n\t\treturn replace(`/${getCurrentRoute()?.route}/${params}`, '//', '/');\n\t}\n\tconst routeToApply = params.route\n\t\t? find(getRoutes(), (r) => r.id === params.route || r.route === params.route)\n\t\t: getCurrentRoute();\n\treturn typeof params.path === 'string'\n\t\t? replace(`/${routeToApply?.route}/${params.path}`, '//', '/')\n\t\t: {\n\t\t\t\tsearch: params.path.search,\n\t\t\t\thash: params.path.hash,\n\t\t\t\tpathname: replace(`/${routeToApply?.route}/${params.path.pathname}`, '//', '/')\n\t\t };\n};\n\nexport const usePushHistoryCallback = (): ((params: HistoryParams) => void) => {\n\tconst history = useHistory();\n\tconst cb = useCallback(\n\t\t(params: HistoryParams): void => history.push(parseParams(params)),\n\t\t[history]\n\t);\n\treturn cb;\n};\n\nexport const useReplaceHistoryCallback = (): ((params: HistoryParams) => void) => {\n\tconst history = useHistory();\n\tconst cb = useCallback(\n\t\t(params: HistoryParams): void => history.replace(parseParams(params)),\n\t\t[history]\n\t);\n\treturn cb;\n};\n\nexport function useGoBackHistoryCallback(): () => void {\n\tconst history = useHistory();\n\treturn history.goBack;\n}\n\nexport const pushHistory = (params: HistoryParams): void => {\n\tconst history = useContextBridge.getState().functions.getHistory?.();\n\thistory.push(parseParams(params));\n};\n\nexport const replaceHistory = (params: HistoryParams): void => {\n\tconst history = useContextBridge.getState().functions.getHistory?.();\n\thistory.replace(parseParams(params));\n};\n\nexport const goBackHistory = (): void =>\n\tuseContextBridge.getState().functions.getHistory?.().goBack();\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport { createContext } from 'react';\n\nconst BoardValueContext = createContext({\n\tboards: {},\n\tcurrentBoard: 0,\n\tlargeView: false,\n\tminimized: false\n});\nconst BoardSetterContext = createContext({\n\taddBoard: (url, title, context) => undefined,\n\tremoveBoard: (key) => undefined,\n\tremoveCurrentBoard: () => undefined,\n\tremoveAllBoards: () => undefined,\n\tupdateBoard: (key, url, title) => undefined,\n\tsetCurrentBoard: (key) => undefined,\n\tupdateCurrentBoard: (url, title) => undefined,\n\ttoggleLargeView: () => undefined,\n\ttoggleMinimized: () => undefined\n});\n\nexport { BoardValueContext, BoardSetterContext };\n","/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\nimport { useContext, useCallback } from 'react';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { BoardSetterContext, BoardValueContext } from './board-context';\n\nexport const getUseAddBoardCallback =\n\t(appId: string) => (): ((path: string, context?: unknown | { app: string }) => void) => {\n\t\tconst { addBoard } = useContext(BoardSetterContext);\n\t\tconst callback = useCallback(\n\t\t\t(path: string, context?: unknown | { app?: string }) => {\n\t\t\t\taddBoard(path, context, (context as { app?: string })?.app ?? appId);\n\t\t\t},\n\t\t\t[addBoard]\n\t\t);\n\t\treturn callback;\n\t};\n\nexport function useUpdateCurrentBoard(): (url: string, title: string) => void {\n\tconst { updateCurrentBoard } = useContext(BoardSetterContext);\n\treturn updateCurrentBoard;\n}\n\nexport function useRemoveCurrentBoard(): () => void {\n\tconst { removeCurrentBoard } = useContext(BoardSetterContext);\n\treturn removeCurrentBoard;\n}\n\nexport function useBoardConfig(): unknown {\n\tconst context: any = useContext(BoardValueContext);\n\tif (context) {\n\t\treturn context.boards?.[context.currentBoard]?.context;\n\t}\n\treturn undefined;\n}\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n// The 'useXXX' functions actually return hooks\n/* eslint-disable react-hooks/rules-of-hooks */\n\nimport { reduce } from 'lodash';\nimport { getApp, getAppContext, useApp, useAppContext } from '../../store/app';\nimport { useContextBridge } from '../../store/context-bridge';\nimport {\n\tgetAction,\n\tgetActions,\n\tgetActionsFactory,\n\tgetActionFactory,\n\tgetIntegratedComponent,\n\tgetIntegratedFunction,\n\tgetIntegratedHook\n} from '../../store/integrations/getters';\nimport {\n\tgetUserAccount,\n\tgetUserAccounts,\n\tgetUserSettings,\n\tgetTags,\n\tuseUserAccount,\n\tuseUserAccounts,\n\tuseUserSettings,\n\tuseTags,\n\tuseNotify,\n\tuseRefresh,\n\tuseUserRight,\n\tuseUserRights,\n\tgetUserRight,\n\tgetUserRights,\n\tuseAccountStore\n} from '../../store/account';\nimport { useIsMobile } from '../../shell/hooks';\nimport {\n\tuseAction,\n\tuseActions,\n\tuseActionsFactory,\n\tuseActionFactory,\n\tuseIntegratedComponent,\n\tuseIntegratedFunction,\n\tuseIntegratedHook\n} from '../../store/integrations/hooks';\nimport { CarbonioModule } from '../../../types';\nimport { getEditSettingsForApp } from '../../network/edit-settings';\nimport {\n\tusePushHistoryCallback,\n\tuseGoBackHistoryCallback,\n\tuseReplaceHistoryCallback,\n\tgetCurrentRoute,\n\tuseCurrentRoute,\n\treplaceHistory,\n\tgoBackHistory,\n\tpushHistory\n} from '../../history/hooks';\nimport {\n\tgetUseAddBoardCallback,\n\tuseBoardConfig,\n\tuseRemoveCurrentBoard,\n\tuseUpdateCurrentBoard\n} from '../../shell/boards/board-hooks';\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const getAppFunctions = (pkg: CarbonioModule): Record<string, Function> => ({\n\tsoapFetch: useAccountStore.getState().soapFetch(pkg.name),\n\txmlSoapFetch: useAccountStore.getState().xmlSoapFetch(pkg.name),\n\n\t// APP STORE FUNCTIONS\n\tuseAppContext: useAppContext(pkg.name),\n\tgetAppContext: getAppContext(pkg.name),\n\tuseApp: useApp(pkg.name),\n\tgetApp: getApp(pkg.name),\n\n\t// INTEGRATIONS\n\tuseIntegratedHook,\n\tgetIntegratedHook,\n\tuseIntegratedFunction,\n\tgetIntegratedFunction,\n\tuseIntegratedComponent,\n\tgetIntegratedComponent,\n\tuseAction,\n\tgetAction,\n\tuseActions,\n\tgetActions,\n\tuseActionsFactory,\n\tgetActionsFactory,\n\tuseActionFactory,\n\tgetActionFactory,\n\t// ACCOUNTS\n\tuseUserAccount,\n\tgetUserAccount,\n\tuseUserAccounts,\n\tgetUserAccounts,\n\tuseUserSettings,\n\tgetUserSettings,\n\tuseUserRight,\n\tuseUserRights,\n\tgetUserRight,\n\tgetUserRights,\n\tuseTags,\n\tgetTags,\n\tuseNotify,\n\tuseRefresh,\n\t// BOARDS\n\tuseAddBoardCallback: getUseAddBoardCallback(pkg.name),\n\tuseUpdateCurrentBoard,\n\tuseRemoveCurrentBoard,\n\tuseBoardConfig,\n\t// HISTORY\n\tusePushHistoryCallback,\n\tuseGoBackHistoryCallback,\n\tuseReplaceHistoryCallback,\n\tuseCurrentRoute,\n\tgetCurrentRoute,\n\tpushHistory,\n\tgoBackHistory,\n\treplaceHistory,\n\t// STUFF\n\tuseIsMobile,\n\tgetBridgedFunctions: (): unknown => {\n\t\tconst { packageDependentFunctions, functions } = useContextBridge.getState();\n\t\treturn {\n\t\t\t...functions,\n\t\t\t...reduce(packageDependentFunctions, (acc, f, name) => ({ ...acc, [name]: f(pkg.name) }), {})\n\t\t};\n\t}\n});\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { FC } from 'react';\nimport { Button, Container } from '@zextras/carbonio-design-system';\n\nexport const Spinner: FC = () => (\n\t<Container width=\"fill\" height=\"fill\" mainAlignment=\"center\" crossAlignment=\"center\">\n\t\t<Button type=\"ghost\" label=\"Button\" color=\"primary\" loading />\n\t</Container>\n);\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { FC, useMemo } from 'react';\nimport { Link as RRLink, LinkProps } from 'react-router-dom';\nimport { parseParams } from '../history/hooks';\n\ntype AppLinkProps = LinkProps & {\n\troute?: string;\n};\nexport const AppLink: FC<AppLinkProps> = ({ to, route, ...rest }) => {\n\tconst _to = useMemo(() => parseParams({ path: to, route }), [route, to]);\n\treturn <RRLink style={{ textDecoration: 'none' }} to={_to} {...rest} />;\n};\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport { filter, find, findIndex, forEach, map, reduce } from 'lodash';\nimport { SHELL_APP_ID } from '../constants';\nimport { useAccountStore } from '../store/account/store';\nimport { AccountState, Mods, Account } from '../../types';\n\nexport const editSettings = (mods: Mods, appId: string = SHELL_APP_ID): Promise<any> =>\n\tuseAccountStore\n\t\t.getState()\n\t\t.xmlSoapFetch(SHELL_APP_ID)(\n\t\t\t'Batch',\n\t\t\t`<BatchRequest xmlns=\"urn:zimbra\" onerror=\"stop\">${\n\t\t\t\tmods.props\n\t\t\t\t\t? `<ModifyPropertiesRequest xmlns=\"urn:zimbraAccount\">${map(\n\t\t\t\t\t\t\tmods.props,\n\t\t\t\t\t\t\t(prop, key) =>\n\t\t\t\t\t\t\t\t`<prop name=\"${key}\" zimlet=\"${prop.app ?? appId}\">${prop.value}</prop>`\n\t\t\t\t\t )}</ModifyPropertiesRequest>`\n\t\t\t\t\t: ''\n\t\t\t}${\n\t\t\t\tmods.prefs\n\t\t\t\t\t? `<ModifyPrefsRequest xmlns=\"urn:zimbraAccount\">${map(\n\t\t\t\t\t\t\tmods.prefs,\n\t\t\t\t\t\t\t(pref, key) => `<pref name=\"${key}\">${pref}</pref>`\n\t\t\t\t\t ).join('')}</ModifyPrefsRequest>`\n\t\t\t\t\t: ''\n\t\t\t}${\n\t\t\t\tmods.identity?.modifyList\n\t\t\t\t\t? map(\n\t\t\t\t\t\t\tmods.identity.modifyList,\n\t\t\t\t\t\t\t(item) =>\n\t\t\t\t\t\t\t\t`<ModifyIdentityRequest xmlns=\"urn:zimbraAccount\" requestId=\"0\"><identity id=\"${\n\t\t\t\t\t\t\t\t\titem.id\n\t\t\t\t\t\t\t\t}\">${map(item.prefs, (value, key) => `<a name=\"${key}\">${value}</a>`).join(\n\t\t\t\t\t\t\t\t\t''\n\t\t\t\t\t\t\t\t)}<a name=\"zimbraPrefFromAddressType\">sendAs</a></identity></ModifyIdentityRequest>`\n\t\t\t\t\t ).join('')\n\t\t\t\t\t: ''\n\t\t\t}${\n\t\t\t\tmods.identity?.deleteList\n\t\t\t\t\t? map(\n\t\t\t\t\t\t\tmods.identity.deleteList,\n\t\t\t\t\t\t\t(item) =>\n\t\t\t\t\t\t\t\t`<DeleteIdentityRequest xmlns=\"urn:zimbraAccount\" requestId=\"0\"><identity id=\"${item}\"/></DeleteIdentityRequest>`\n\t\t\t\t\t ).join('')\n\t\t\t\t\t: ''\n\t\t\t}${\n\t\t\t\tmods.identity?.createList\n\t\t\t\t\t? map(\n\t\t\t\t\t\t\tmods.identity.createList,\n\t\t\t\t\t\t\t(item) =>\n\t\t\t\t\t\t\t\t`<CreateIdentityRequest xmlns=\"urn:zimbraAccount\" requestId=\"${item.prefs.requestId}\"><identity name=\"${item.prefs.zimbraPrefIdentityName}\"><a name=\"zimbraPrefIdentityName\">${item.prefs.zimbraPrefIdentityName}</a><a name=\"zimbraPrefFromDisplay\">${item.prefs.zimbraPrefFromDisplay}</a><a name=\"zimbraPrefFromAddress\">${item.prefs.zimbraPrefFromAddress}</a><a name=\"zimbraPrefFromAddressType\">sendAs</a><a name=\"zimbraPrefReplyToEnabled\">${item.prefs.zimbraPrefReplyToEnabled}</a><a name=\"zimbraPrefReplyToDisplay\">${item.prefs.zimbraPrefReplyToDisplay}</a><a name=\"zimbraPrefReplyToAddress\">${item.prefs.zimbraPrefReplyToAddress}</a><a name=\"zimbraPrefDefaultSignatureId\">${item.prefs.zimbraPrefDefaultSignatureId}</a><a name=\"zimbraPrefForwardReplySignatureId\">${item.prefs.zimbraPrefForwardReplySignatureId}</a><a name=\"zimbraPrefWhenSentToEnabled\">${item.prefs.zimbraPrefWhenSentToEnabled}</a><a name=\"zimbraPrefWhenInFoldersEnabled\">${item.prefs.zimbraPrefWhenInFoldersEnabled}</a></identity></CreateIdentityRequest>`\n\t\t\t\t\t ).join('')\n\t\t\t\t\t: ''\n\t\t\t}${\n\t\t\t\tmods.permissions\n\t\t\t\t\t? `<RevokeRightsRequest xmlns=\"urn:zimbraAccount\" requestId=\"0\">${\n\t\t\t\t\t\t\tmods.permissions.freeBusy\n\t\t\t\t\t\t\t\t? map(mods.permissions.freeBusy.current, (right) => {\n\t\t\t\t\t\t\t\t\t\tif (right.gt === 'dom')\n\t\t\t\t\t\t\t\t\t\t\treturn `<ace right=\"viewFreeBusy\" gt=\"${right.gt}\" zid=\"${right.zid}\" d=\"zextras.com\"/>`;\n\t\t\t\t\t\t\t\t\t\tif (right.gt === 'all' && right.deny)\n\t\t\t\t\t\t\t\t\t\t\treturn `<ace right=\"viewFreeBusy\" gt=\"${right.gt}\" zid=\"${right.zid}\" deny=\"1\"/>`;\n\t\t\t\t\t\t\t\t\t\tif (right.gt === 'usr')\n\t\t\t\t\t\t\t\t\t\t\treturn `<ace right=\"viewFreeBusy\" gt=\"${right.gt}\" zid=\"${right.zid}\" d=\"${right.d}\"/>`;\n\t\t\t\t\t\t\t\t\t\treturn `<ace right=\"viewFreeBusy\" gt=\"${right.gt}\" zid=\"${right.zid}\" />`;\n\t\t\t\t\t\t\t\t }).join('')\n\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t }${\n\t\t\t\t\t\t\tmods.permissions.inviteRight\n\t\t\t\t\t\t\t\t? map(mods.permissions.inviteRight.current, (right) => {\n\t\t\t\t\t\t\t\t\t\tif (right.gt === 'all' && right.deny)\n\t\t\t\t\t\t\t\t\t\t\treturn `<ace right=\"invite\" gt=\"${right.gt}\" zid=\"${right.zid}\" deny=\"1\"/>`;\n\t\t\t\t\t\t\t\t\t\tif (right.gt === 'usr')\n\t\t\t\t\t\t\t\t\t\t\treturn `<ace right=\"invite\" gt=\"${right.gt}\" zid=\"${right.zid}\" d=\"${right.d}\"/>`;\n\t\t\t\t\t\t\t\t\t\treturn `<ace right=\"invite\" gt=\"${right.gt}\" zid=\"${right.zid}\" />`;\n\t\t\t\t\t\t\t\t }).join('')\n\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t }</RevokeRightsRequest><GrantRightsRequest xmlns=\"urn:zimbraAccount\" requestId=\"1\">${\n\t\t\t\t\t\t\tmods.permissions.freeBusy\n\t\t\t\t\t\t\t\t? `${((): string => {\n\t\t\t\t\t\t\t\t\t\tif (mods.permissions.freeBusy.new.gt === 'dom') {\n\t\t\t\t\t\t\t\t\t\t\treturn `<ace right=\"viewFreeBusy\" gt=\"${mods.permissions.freeBusy.new.gt}\" d=\"zextras.com\"/>`;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\tmods.permissions.freeBusy.new.gt === 'all' &&\n\t\t\t\t\t\t\t\t\t\t\tmods.permissions.freeBusy.new.deny\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\treturn `<ace right=\"viewFreeBusy\" gt=\"${mods.permissions.freeBusy.new.gt}\" deny=\"1\"/>`;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (mods.permissions.freeBusy.new.gt === 'usr') {\n\t\t\t\t\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t\t\t\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\t\t\t\t\treturn map(\n\t\t\t\t\t\t\t\t\t\t\t\tmods.permissions.freeBusy.new.d,\n\t\t\t\t\t\t\t\t\t\t\t\t(u) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t`<ace right=\"viewFreeBusy\" gt=\"${mods.permissions?.freeBusy.new.gt}\" d=\"${u.email}\"/>`\n\t\t\t\t\t\t\t\t\t\t\t).join('');\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn `<ace right=\"viewFreeBusy\" gt=\"${mods.permissions.freeBusy.new.gt}\" />`;\n\t\t\t\t\t\t\t\t })()}`\n\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t }${\n\t\t\t\t\t\t\tmods.permissions.inviteRight\n\t\t\t\t\t\t\t\t? `${((): string => {\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\tmods.permissions.inviteRight.new.gt === 'all' &&\n\t\t\t\t\t\t\t\t\t\t\tmods.permissions.inviteRight.new.deny\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\treturn `<ace right=\"invite\" gt=\"${mods.permissions.inviteRight.new.gt}\" deny=\"1\"/>`;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (mods.permissions.inviteRight.new.gt === 'usr') {\n\t\t\t\t\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t\t\t\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\t\t\t\t\treturn map(\n\t\t\t\t\t\t\t\t\t\t\t\tmods.permissions.inviteRight.new.d,\n\t\t\t\t\t\t\t\t\t\t\t\t(u) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t`<ace right=\"invite\" gt=\"${mods.permissions?.inviteRight.new.gt}\" d=\"${u.email}\"/>`\n\t\t\t\t\t\t\t\t\t\t\t).join('');\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn `<ace right=\"invite\" gt=\"${mods.permissions?.inviteRight.new.gt}\" />`;\n\t\t\t\t\t\t\t\t })()}`\n\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t }\n\t</GrantRightsRequest>`\n\t\t\t\t\t: ''\n\t\t\t}</BatchRequest>`\n\t\t)\n\t\t.then((r: any) => {\n\t\t\tuseAccountStore.setState((s: AccountState) => ({\n\t\t\t\tsettings: {\n\t\t\t\t\t...s.settings,\n\t\t\t\t\tprefs: reduce(\n\t\t\t\t\t\tmods.prefs,\n\t\t\t\t\t\t(acc, pref, key) => ({\n\t\t\t\t\t\t\t...acc,\n\t\t\t\t\t\t\t[key]: pref as string\n\t\t\t\t\t\t}),\n\t\t\t\t\t\ts.settings.prefs\n\t\t\t\t\t),\n\t\t\t\t\tprops: reduce(\n\t\t\t\t\t\tmods.props,\n\t\t\t\t\t\t(acc, { app, value }, key) => {\n\t\t\t\t\t\t\tconst propIndex = findIndex(acc, (p) => p.name === key && p.zimlet === app);\n\t\t\t\t\t\t\tif (propIndex >= 0) {\n\t\t\t\t\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\t\t\t\t\tacc[propIndex] = {\n\t\t\t\t\t\t\t\t\tname: key,\n\t\t\t\t\t\t\t\t\tzimlet: app,\n\t\t\t\t\t\t\t\t\t_content: value as string\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tacc.push({\n\t\t\t\t\t\t\t\t\tname: key,\n\t\t\t\t\t\t\t\t\tzimlet: app,\n\t\t\t\t\t\t\t\t\t_content: value as string\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn acc;\n\t\t\t\t\t\t},\n\t\t\t\t\t\ts.settings.props\n\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t\taccount: {\n\t\t\t\t\t...s.account,\n\t\t\t\t\tdisplayName:\n\t\t\t\t\t\tfind(mods?.identity?.modifyList, (item) => item.id === s?.account?.id)?.prefs\n\t\t\t\t\t\t\t.zimbraPrefIdentityName || s.account?.displayName,\n\t\t\t\t\tname:\n\t\t\t\t\t\tfind(mods?.identity?.modifyList, (item) => item.id === s?.account?.id)?.prefs\n\t\t\t\t\t\t\t.zimbraPrefFromAddress || s.account?.name,\n\t\t\t\t\tidentities: {\n\t\t\t\t\t\tidentity:\n\t\t\t\t\t\t\ttypeof s.account !== 'undefined'\n\t\t\t\t\t\t\t\t? reduce(\n\t\t\t\t\t\t\t\t\t\tmods?.identity?.modifyList,\n\t\t\t\t\t\t\t\t\t\t(acc, { id, prefs }) => {\n\t\t\t\t\t\t\t\t\t\t\tconst tempResult = [];\n\t\t\t\t\t\t\t\t\t\t\tconst propIndex = findIndex(\n\t\t\t\t\t\t\t\t\t\t\t\tacc,\n\t\t\t\t\t\t\t\t\t\t\t\t(itemMods, indexAccount) => acc[indexAccount].id === id\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\tif (propIndex > -1) {\n\t\t\t\t\t\t\t\t\t\t\t\tforEach(Object.keys(prefs), (item, _index) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\t\t\t\t\t\t\t\t\t\tacc[propIndex]._attrs[item] = Object.values(prefs)[_index];\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\titem === 'zimbraPrefIdentityName' &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tacc[propIndex].name !== 'DEFAULT'\n\t\t\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tacc[propIndex].name = Object.values(prefs)[_index];\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\ttempResult.push(prefs);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\treturn acc;\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t...filter(\n\t\t\t\t\t\t\t\t\t\t\t\ts.account.identities.identity,\n\t\t\t\t\t\t\t\t\t\t\t\t(item) => !mods?.identity?.deleteList?.includes(item.id)\n\t\t\t\t\t\t\t\t\t\t\t).filter((i) => i.name !== 'DEFAULT'),\n\t\t\t\t\t\t\t\t\t\t\t...map(r?.CreateIdentityResponse, (item) => item.identity[0]),\n\t\t\t\t\t\t\t\t\t\t\t...filter(\n\t\t\t\t\t\t\t\t\t\t\t\ts.account.identities.identity,\n\t\t\t\t\t\t\t\t\t\t\t\t(item) => !mods?.identity?.deleteList?.includes(item.id)\n\t\t\t\t\t\t\t\t\t\t\t).filter((i) => i.name === 'DEFAULT')\n\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t} as Account\n\t\t\t}));\n\t\t\treturn r;\n\t\t});\n\nexport const getEditSettingsForApp =\n\t(app: string) =>\n\t(mods: Mods): Promise<any> =>\n\t\teditSettings(mods, app).then((r) => {\n\t\t\tr.type = 'fulfilled';\n\t\t\treturn r;\n\t\t});\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useEffect, useState, FC, useMemo } from 'react';\nimport { Location } from 'history';\nimport { Prompt, useHistory } from 'react-router-dom';\nimport { Modal } from '@zextras/carbonio-design-system';\nimport { useTranslation } from 'react-i18next';\n\nexport const RouteLeavingGuard: FC<{\n\twhen?: boolean;\n\tonSave: () => void;\n}> = ({ children, when, onSave }) => {\n\tconst history = useHistory();\n\tconst lastLocationInitial = useMemo(() => history.location.pathname, [history]);\n\tconst [modalVisible, setModalVisible] = useState(false);\n\tconst [lastLocation, setLastLocation] = useState<Location>(lastLocationInitial);\n\tconst [confirmedNavigation, setConfirmedNavigation] = useState(false);\n\tconst [t] = useTranslation();\n\tconst onClose = (): void => {\n\t\tsetModalVisible(false);\n\t\tsetConfirmedNavigation(true);\n\t};\n\tconst handleBlockedNavigation = (nextLocation: Location): boolean => {\n\t\tif (\n\t\t\t!confirmedNavigation &&\n\t\t\tnextLocation.pathname !== (lastLocation?.pathname || lastLocationInitial)\n\t\t) {\n\t\t\tsetModalVisible(true);\n\t\t\tsetLastLocation(nextLocation);\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t};\n\tconst onConfirm = (): void => {\n\t\tsetModalVisible(false);\n\t\tonSave();\n\t\tsetConfirmedNavigation(true);\n\t};\n\tuseEffect(() => {\n\t\tif (confirmedNavigation && lastLocation) {\n\t\t\t// Navigate to the previous blocked location with your navigate function\n\t\t\thistory.push(lastLocation.pathname);\n\t\t}\n\t}, [confirmedNavigation, history, lastLocation]);\n\treturn (\n\t\t<>\n\t\t\t<Prompt when={when} message={handleBlockedNavigation} />\n\t\t\t{/* Your own alert/dialog/modal component */}\n\t\t\t<Modal\n\t\t\t\topen={modalVisible}\n\t\t\t\tonClose={onClose}\n\t\t\t\tonConfirm={onConfirm}\n\t\t\t\ttitle={t('label.unsaved_changes', 'You have unsaved changes')}\n\t\t\t\tdismissLabel={t('label.leave_anyway', 'Leave anyway')}\n\t\t\t\tconfirmLabel={t('label.save_and_leave', 'Save and leave')}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</Modal>\n\t\t</>\n\t);\n};\nexport default RouteLeavingGuard;\n","/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { FC, useEffect } from 'react';\nimport {\n\tPadding,\n\tRow,\n\tText,\n\tContainer,\n\tButton,\n\tDivider,\n\tBreadcrumbs\n} from '@zextras/carbonio-design-system';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory, useParams } from 'react-router-dom';\nimport { SETTINGS_APP_ID } from '../../constants';\nimport { RouteLeavingGuard } from '../../ui-extras/nav-guard';\n\ntype SettingsHeaderProps = {\n\ttitle: string;\n\tonSave: () => void;\n\tonCancel: () => void;\n\tisDirty: boolean;\n};\n\nconst SettingsHeader: FC<SettingsHeaderProps> = ({ onSave, onCancel, isDirty, title }) => {\n\tconst [t] = useTranslation();\n\tconst history = useHistory();\n\tconst useparam = useParams();\n\tconst crumbs = [\n\t\t{\n\t\t\tid: 'settings',\n\t\t\tlabel: t('settings.app', 'Settings'),\n\t\t\tclick: (): void => history.push(`/${SETTINGS_APP_ID}/`)\n\t\t},\n\t\t{\n\t\t\tid: 'general',\n\t\t\tlabel: title,\n\t\t\tclick: (): void => history.push(`/${SETTINGS_APP_ID}/`)\n\t\t}\n\t];\n\tconst search = history.location?.search;\n\tuseEffect(() => {\n\t\tif (search) {\n\t\t\tsetTimeout(\n\t\t\t\t() =>\n\t\t\t\t\tdocument\n\t\t\t\t\t\t.querySelector(`#${history.location.search}`.replace('?section=', ''))\n\t\t\t\t\t\t?.scrollIntoView(),\n\t\t\t\t1\n\t\t\t);\n\t\t}\n\t}, [history, history.location, history.location.search, search, useparam]);\n\treturn (\n\t\t<>\n\t\t\t<RouteLeavingGuard when={isDirty} onSave={onSave}>\n\t\t\t\t<Text>\n\t\t\t\t\t{t(\n\t\t\t\t\t\t'label.unsaved_changes_line1',\n\t\t\t\t\t\t'Are you sure you want to leave this page without saving?'\n\t\t\t\t\t)}\n\t\t\t\t</Text>\n\t\t\t\t<Text>{t('label.unsaved_changes_line2', 'All your unsaved changes will be lost')}</Text>\n\t\t\t</RouteLeavingGuard>\n\t\t\t<Container\n\t\t\t\torientation=\"vertical\"\n\t\t\t\tmainAlignment=\"space-around\"\n\t\t\t\tbackground=\"gray5\"\n\t\t\t\theight=\"fit\"\n\t\t\t>\n\t\t\t\t<Row orientation=\"horizontal\" width=\"100%\">\n\t\t\t\t\t<Row\n\t\t\t\t\t\tpadding={{ all: 'small' }}\n\t\t\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t\t\t\twidth=\"50%\"\n\t\t\t\t\t\tcrossAlignment=\"flex-start\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<Breadcrumbs crumbs={crumbs} />\n\t\t\t\t\t</Row>\n\t\t\t\t\t<Row\n\t\t\t\t\t\tpadding={{ all: 'small' }}\n\t\t\t\t\t\twidth=\"50%\"\n\t\t\t\t\t\tmainAlignment=\"flex-end\"\n\t\t\t\t\t\tcrossAlignment=\"flex-end\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<Padding right=\"small\">\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tlabel={t('label.discard_changes', 'DISCARD CHANGES')}\n\t\t\t\t\t\t\t\tonClick={onCancel}\n\t\t\t\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\t\t\t\tdisabled={!isDirty}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Padding>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tlabel={t('label.save', 'Save')}\n\t\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\t\tonClick={onSave}\n\t\t\t\t\t\t\tdisabled={!isDirty}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Row>\n\t\t\t\t</Row>\n\t\t\t</Container>\n\t\t\t<Divider />\n\t\t</>\n\t);\n};\n\nexport default SettingsHeader;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\n/* eslint-disable import/no-duplicates */\n/* eslint-disable import/no-named-default */\nimport { forOwn } from 'lodash';\nimport { ComponentType } from 'react';\nimport { Reducer, Store } from '@reduxjs/toolkit';\nimport StoreFactory from '../../redux/store-factory';\n\nimport { useAppStore } from '../../store/app';\nimport { getAppFunctions } from './app-loader-functions';\nimport { Spinner } from '../../ui-extras/spinner';\nimport { AppLink } from '../../ui-extras/app-link';\nimport * as CONSTANTS from '../../constants';\nimport { IShellWindow, CarbonioModule } from '../../../types';\nimport { getAppSetters } from './app-loader-setters';\nimport { report } from '../../reporting';\nimport SettingsHeader from '../../settings/components/settings-header';\n\nexport const _scripts: { [pkgName: string]: HTMLScriptElement } = {};\nlet _scriptId = 0;\n// const _revertableActions: { [pkgName: string]: RevertableActionCollection } = {};\n\n// export function updateAppHandlers(appPkg: CarbonioModule, handlers: RequestHandlersList): void {\n// \tif (FLAVOR === 'NPM' && typeof devUtils !== 'undefined') {\n// \t\tconst worker = devUtils.getMSWorker<SetupWorkerApi>();\n// \t\tif (worker) {\n// \t\t\tworker.resetHandlers();\n// \t\t\tforEach(handlers, (h) => worker.use(h));\n// \t\t}\n// \t}\n// }\n\nfunction loadAppModule(appPkg: CarbonioModule, store: Store<any>): Promise<CarbonioModule> {\n\treturn new Promise((_resolve, _reject) => {\n\t\tlet resolved = false;\n\t\tconst resolve: (...args: any[]) => void = (...args) => {\n\t\t\tif (!resolved) {\n\t\t\t\tresolved = true;\n\t\t\t\t_resolve(appPkg);\n\t\t\t}\n\t\t};\n\t\tconst reject: (e: Error) => void = (e) => {\n\t\t\tif (!resolved) {\n\t\t\t\tresolved = true;\n\t\t\t\t_reject(e);\n\t\t\t}\n\t\t};\n\t\ttry {\n\t\t\t(window as unknown as IShellWindow).__ZAPP_SHARED_LIBRARIES__['@zextras/carbonio-shell-ui'][\n\t\t\t\tappPkg.name\n\t\t\t] = {\n\t\t\t\tstore: {\n\t\t\t\t\tstore,\n\t\t\t\t\tsetReducer: (reducer: Reducer): void => store.replaceReducer(reducer)\n\t\t\t\t},\n\t\t\t\treport: report(appPkg.name),\n\t\t\t\tAppLink,\n\t\t\t\tSpinner,\n\t\t\t\tSettingsHeader,\n\t\t\t\t...getAppSetters(appPkg),\n\t\t\t\t...getAppFunctions(appPkg),\n\t\t\t\t...CONSTANTS\n\t\t\t};\n\n\t\t\t(window as unknown as IShellWindow).__ZAPP_HMR_EXPORT__[appPkg.name] = (\n\t\t\t\tappComponent: ComponentType\n\t\t\t): void => {\n\t\t\t\tuseAppStore.setState((state) => ({\n\t\t\t\t\tentryPoints: {\n\t\t\t\t\t\t...state.entryPoints,\n\t\t\t\t\t\t[appPkg.name]: appComponent\n\t\t\t\t\t}\n\t\t\t\t}));\n\t\t\t\tconsole.info(\n\t\t\t\t\t`%c loaded ${appPkg.name}`,\n\t\t\t\t\t'color: white; background: #539507;padding: 4px 8px 2px 4px; font-family: sans-serif; border-radius: 12px; width: 100%'\n\t\t\t\t);\n\t\t\t\tresolve(appPkg);\n\t\t\t};\n\n\t\t\t// if (FLAVOR === 'NPM' && typeof cliSettings !== 'undefined' && cliSettings.hasHandlers) {\n\t\t\t// eslint-disable-next-line max-len\n\t\t\t// (\n\t\t\t// \twindow as unknown as IShellWindow<SharedLibrariesAppsMap, ComponentClass>\n\t\t\t// ).__ZAPP_HMR_HANDLERS__[appPkg.name] = (handlers: RequestHandlersList): void =>\n\t\t\t// \tupdateAppHandlers(appPkg, handlers);\n\t\t\t// }\n\t\t\tconst script: HTMLScriptElement = document.createElement('script');\n\t\t\tscript.setAttribute('type', 'text/javascript');\n\t\t\tscript.setAttribute('data-pkg_name', appPkg.name);\n\t\t\tscript.setAttribute('data-pkg_version', appPkg.version);\n\t\t\tscript.setAttribute('data-is_app', 'true');\n\t\t\tscript.setAttribute('src', `${appPkg.js_entrypoint}`);\n\t\t\tdocument.body.appendChild(script);\n\t\t\t_scripts[`${appPkg.name}-loader-${(_scriptId += 1)}`] = script;\n\t\t} catch (err) {\n\t\t\tconsole.error(err);\n\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t\t// @ts-ignore\n\t\t\treject(err);\n\t\t}\n\t});\n}\n\nexport function loadApp(pkg: CarbonioModule, storeFactory: StoreFactory): Promise<CarbonioModule> {\n\tconst store = storeFactory.getStoreForApp(pkg);\n\treturn loadAppModule(pkg, store);\n}\n\nexport function unloadApps(): Promise<void> {\n\treturn Promise.resolve().then(() => {\n\t\tforOwn(_scripts, (script) => {\n\t\t\tif (script.parentNode) script.parentNode.removeChild(script);\n\t\t});\n\t});\n}\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n// The 'useXXX' functions actually return hooks\n/* eslint-disable react-hooks/rules-of-hooks */\n\nimport {\n\tAppRouteDescriptor,\n\tBoardView,\n\tCarbonioModule,\n\tPrimaryAccessoryView,\n\tSearchView,\n\tSecondaryAccessoryView,\n\tSettingsView,\n\tUtilityView\n} from '../../../types';\nimport { getEditSettingsForApp } from '../../network/edit-settings';\nimport { useAppStore } from '../../store/app';\nimport {\n\tnormalizeRoute,\n\tnormalizeSettingsView,\n\tnormalizeSearchView,\n\tnormalizeUtilityView,\n\tnormalizePrimaryAccessoryView,\n\tnormalizeSecondaryAccessoryView,\n\tnormalizeBoardView\n} from '../../store/app/utils';\nimport { useIntegrationsStore } from '../../store/integrations/store';\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const getAppSetters = (pkg: CarbonioModule): Record<string, Function> => {\n\tconst appSetters = useAppStore.getState().setters;\n\tconst integrations = useIntegrationsStore.getState();\n\treturn {\n\t\tupdatePrimaryBadge: appSetters.updatePrimaryBadge,\n\t\tupdateUtilityBadge: appSetters.updateUtilityBadge,\n\t\tsetAppContext: appSetters.setAppContext(pkg.name),\n\t\taddRoute: (route: Partial<AppRouteDescriptor>) =>\n\t\t\tappSetters.addRoute(normalizeRoute(route, pkg)),\n\t\tsetRouteVisibility: (routeId: string, visible: boolean) =>\n\t\t\tappSetters.setRouteVisibility(routeId, visible),\n\t\tremoveRoute: (routeId: string) => appSetters.removeRoute(routeId),\n\t\t// add board\n\t\taddBoardView: (data: Partial<BoardView>) =>\n\t\t\tappSetters.addBoardView(normalizeBoardView(data, pkg)),\n\t\t// remove board\n\t\tremoveBoardView: appSetters.removeBoardView,\n\t\t//\n\t\t// add settings\n\t\taddSettingsView: (data: Partial<SettingsView>) =>\n\t\t\tappSetters.addSettingsView(normalizeSettingsView(data, pkg)),\n\t\t// remove settings\n\t\tremoveSettingsView: appSetters.removeSettingsView,\n\t\t//\n\t\t// add search\n\t\taddSearchView: (data: Partial<SearchView>) =>\n\t\t\tappSetters.addSearchView(normalizeSearchView(data, pkg)),\n\t\t// remove search\n\t\tremoveSearchView: appSetters.removeSearchView,\n\t\t//\n\t\t// add utility\n\t\taddUtilityView: (data: Partial<UtilityView>) =>\n\t\t\tappSetters.addUtilityView(normalizeUtilityView(data, pkg)),\n\t\t// remove utility\n\t\tremoveUtilityView: appSetters.removeUtilityView,\n\t\t//\n\t\t// add primaryAccessory\n\t\taddPrimaryAccessoryView: (data: Partial<PrimaryAccessoryView>) =>\n\t\t\tappSetters.addPrimaryAccessoryView(normalizePrimaryAccessoryView(data, pkg)),\n\t\t// remove primaryAccessory\n\t\tremovePrimaryAccessoryView: appSetters.removePrimaryAccessoryView,\n\t\t//\n\t\t// add secondaryAccessory\n\t\taddSecondaryAccessoryView: (data: Partial<SecondaryAccessoryView>) =>\n\t\t\tappSetters.addSecondaryAccessoryView(normalizeSecondaryAccessoryView(data, pkg)),\n\t\t// remove secondaryAccessory\n\t\tremoveSecondaryAccessoryView: appSetters.removeSecondaryAccessoryView,\n\t\tregisterHooks: integrations.registerHooks,\n\t\tremoveHooks: integrations.removeHooks,\n\t\tregisterFunctions: integrations.registerFunctions,\n\t\tremoveFunctions: integrations.removeFunctions,\n\t\tregisterActions: integrations.registerActions,\n\t\tremoveActions: integrations.removeActions,\n\t\tregisterComponents: integrations.registerComponents(pkg.name),\n\t\tremoveComponents: integrations.removeComponents,\n\t\teditSettings: getEditSettingsForApp(pkg.name)\n\t};\n};\n","/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport { useAccountStore } from '../store/account';\nimport { useAppStore } from '../store/app';\nimport { registerDefaultViews } from './app/default-views';\nimport { loadApps } from './app/load-apps';\nimport I18nFactory from '../i18n/i18n-factory';\nimport StoreFactory from '../redux/store-factory';\n\nexport const init = (_i18nFactory: I18nFactory, _storeFactory: StoreFactory): void => {\n\tuseAccountStore\n\t\t.getState()\n\t\t.init()\n\t\t.then(() => {\n\t\t\t_i18nFactory.setLocale(\n\t\t\t\t(\n\t\t\t\t\t(useAccountStore.getState().settings?.prefs?.zimbraPrefLocale as string) ??\n\t\t\t\t\t(useAccountStore.getState().settings?.attrs?.zimbraLocale as string)\n\t\t\t\t)?.split?.('_')?.[0] ?? 'en'\n\t\t\t);\n\t\t\tloadApps(_storeFactory, Object.values(useAppStore.getState().apps));\n\t\t});\n};\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { createContext, FC, useCallback, useEffect, useState } from 'react';\nimport { ThemeProvider as UIThemeProvider } from '@zextras/carbonio-design-system';\nimport { enable, disable, auto, setFetchMethod } from 'darkreader';\nimport { reduce } from 'lodash';\nimport { useAccountStore } from '../store/account';\nimport { ThemeExtension, ThemeExtensionMap } from '../../types';\nimport { darkReaderDynamicThemeFixes } from '../constants';\n\nsetFetchMethod(window.fetch);\n\nexport const ThemeCallbacksContext = createContext<{\n\taddExtension: (newExtension: ThemeExtension, id: string) => void;\n\tsetDarkReaderState: (newState: 'auto' | 'enabled' | 'disabled') => void;\n}>({\n\t// eslint-disable-next-line @typescript-eslint/no-empty-function\n\taddExtension: (newExtension: ThemeExtension, id: string) => {},\n\t// eslint-disable-next-line @typescript-eslint/no-empty-function\n\tsetDarkReaderState: (newState: 'auto' | 'enabled' | 'disabled') => {}\n});\n\nconst themeSizes = (\n\tsize: 'small' | 'normal' | 'large' | 'larger' | 'default' | string\n): ThemeExtension => {\n\tswitch (size) {\n\t\tcase 'small': {\n\t\t\treturn (t: any): any => {\n\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\tt.sizes.font = {\n\t\t\t\t\textrasmall: '10px',\n\t\t\t\t\tsmall: '12px',\n\t\t\t\t\tmedium: '14px',\n\t\t\t\t\tlarge: '16px'\n\t\t\t\t};\n\t\t\t\treturn t;\n\t\t\t};\n\t\t}\n\t\tcase 'large': {\n\t\t\treturn (t: any): any => {\n\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\tt.sizes.font = {\n\t\t\t\t\textrasmall: '14px',\n\t\t\t\t\tsmall: '16px',\n\t\t\t\t\tmedium: '18px',\n\t\t\t\t\tlarge: '20px'\n\t\t\t\t};\n\t\t\t\treturn t;\n\t\t\t};\n\t\t}\n\t\tcase 'larger': {\n\t\t\treturn (t: any): any => {\n\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\tt.sizes.font = {\n\t\t\t\t\textrasmall: '16px',\n\t\t\t\t\tsmall: '18px',\n\t\t\t\t\tmedium: '20px',\n\t\t\t\t\tlarge: '22px'\n\t\t\t\t};\n\t\t\t\treturn t;\n\t\t\t};\n\t\t}\n\t\tcase 'default':\n\t\tcase 'normal':\n\t\tdefault: {\n\t\t\treturn (t: any): any => {\n\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\tt.sizes.font = {\n\t\t\t\t\textrasmall: '12px',\n\t\t\t\t\tsmall: '14px',\n\t\t\t\t\tmedium: '16px',\n\t\t\t\t\tlarge: '18px'\n\t\t\t\t};\n\t\t\t\treturn t;\n\t\t\t};\n\t\t}\n\t}\n};\n\nexport const ThemeProvider: FC = ({ children }) => {\n\tconst zimbraPrefFontSize = useAccountStore((s) => s.settings.prefs?.zimbraPrefFontSize as string);\n\t// TODO: update when the DS is fully typed :D\n\tconst [extensions, setExtensions] = useState<ThemeExtensionMap>({\n\t\tfonts: (theme) => {\n\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\ttheme.sizes.font = {\n\t\t\t\textrasmall: '12px',\n\t\t\t\tsmall: '14px',\n\t\t\t\tmedium: '16px',\n\t\t\t\tlarge: '18px'\n\t\t\t};\n\t\t\treturn theme;\n\t\t}\n\t});\n\tuseEffect(() => {\n\t\tsetExtensions((e) => ({\n\t\t\t...e,\n\t\t\tfonts: themeSizes(zimbraPrefFontSize)\n\t\t}));\n\t}, [zimbraPrefFontSize]);\n\tconst [darkReaderState, setDarkReaderState] = useState<'auto' | 'disabled' | 'enabled'>('auto');\n\tuseEffect(() => {\n\t\tswitch (darkReaderState) {\n\t\t\tcase 'disabled':\n\t\t\t\tdisable();\n\t\t\t\tbreak;\n\t\t\tcase 'enabled':\n\t\t\t\tenable(\n\t\t\t\t\t{\n\t\t\t\t\t\tsepia: -50\n\t\t\t\t\t},\n\t\t\t\t\tdarkReaderDynamicThemeFixes\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase 'auto':\n\t\t\tdefault:\n\t\t\t\tauto(\n\t\t\t\t\t{\n\t\t\t\t\t\tsepia: -50\n\t\t\t\t\t},\n\t\t\t\t\tdarkReaderDynamicThemeFixes\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t}\n\t}, [darkReaderState]);\n\tconst aggregatedExtensions = useCallback(\n\t\t(theme: any) => reduce(extensions, (acc, val) => val(acc), theme),\n\t\t[extensions]\n\t);\n\tconst addExtension = useCallback((newExtension: ThemeExtension, id: string) => {\n\t\tsetExtensions((ext) => ({ ...ext, [id]: newExtension }));\n\t}, []);\n\treturn (\n\t\t<UIThemeProvider extension={aggregatedExtensions}>\n\t\t\t<ThemeCallbacksContext.Provider value={{ addExtension, setDarkReaderState }}>\n\t\t\t\t{children}\n\t\t\t</ThemeCallbacksContext.Provider>\n\t\t</UIThemeProvider>\n\t);\n};\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { FC, memo, Suspense, useMemo } from 'react';\nimport { isEmpty, map } from 'lodash';\nimport { useAppStore } from '../../store/app';\nimport AppContextProvider from './app-context-provider';\n\nconst Mounter: FC<{ appId: string }> = ({ children, appId }) => (\n\t<div key={appId} id={appId}>\n\t\t<AppContextProvider key={appId} pkg={appId}>\n\t\t\t<Suspense fallback={''}>{children}</Suspense>\n\t\t</AppContextProvider>\n\t</div>\n);\n\nconst AppLoaderMounter: FC = () => {\n\tconst entryPoints = useAppStore((s) => s.entryPoints);\n\tconst entries = useMemo(\n\t\t() =>\n\t\t\tisEmpty(entryPoints)\n\t\t\t\t? null\n\t\t\t\t: map(entryPoints, (Comp, appId) => {\n\t\t\t\t\t\tconst MemoComp = memo(Comp);\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Mounter key={appId} appId={appId}>\n\t\t\t\t\t\t\t\t<MemoComp />\n\t\t\t\t\t\t\t</Mounter>\n\t\t\t\t\t\t);\n\t\t\t\t }),\n\t\t[entryPoints]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tdata-testid=\"app-mounter\"\n\t\t\tkey=\"app-mounter\"\n\t\t\thidden\n\t\t\tstyle={{ height: 0, overflow: 'hidden' }}\n\t\t>\n\t\t\t{entries}\n\t\t</div>\n\t);\n};\n\nexport default AppLoaderMounter;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useMemo } from 'react';\nimport { Redirect, Route, Switch, useLocation } from 'react-router-dom';\nimport styled from 'styled-components';\nimport { map, find } from 'lodash';\nimport { Container } from '@zextras/carbonio-design-system';\nimport AppContextProvider from '../boot/app/app-context-provider';\nimport { useAppList, useAppStore, useRoutes } from '../store/app';\n\nconst _BoardsRouterContainer = styled(Container)`\n\tflex-grow: 1;\n\tflex-basis: 0;\n\tmin-width: 1px;\n\tmax-height: calc(100vh - 60px);\n\toverflow-y: auto;\n`;\n\nconst FirstAppRedirect = () => {\n\tconst apps = useAppList();\n\tconst routes = useRoutes();\n\tconst location = useLocation();\n\tconst mainRoute = useMemo(\n\t\t() => find(routes, (r) => apps[0]?.name === r.app)?.route,\n\t\t[apps, routes]\n\t);\n\treturn mainRoute && location?.pathname === '/' ? (\n\t\t<Redirect exact strict from=\"/\" to={`/${mainRoute}`} />\n\t) : null;\n};\n\nexport default function AppViewContainer() {\n\tconst appViews = useAppStore((s) => s.views.appView);\n\tconst routes = useMemo(\n\t\t() => [\n\t\t\t...map(appViews, (view) => (\n\t\t\t\t<Route key={view.id} path={`/${view.route}`}>\n\t\t\t\t\t<AppContextProvider key={view.app} pkg={view.app}>\n\t\t\t\t\t\t<view.component />\n\t\t\t\t\t</AppContextProvider>\n\t\t\t\t</Route>\n\t\t\t))\n\t\t],\n\t\t[appViews]\n\t);\n\n\treturn (\n\t\t<_BoardsRouterContainer>\n\t\t\t<Container mainAlignment=\"flex-start\">\n\t\t\t\t<Switch>{routes}</Switch>\n\t\t\t\t<FirstAppRedirect />\n\t\t\t</Container>\n\t\t</_BoardsRouterContainer>\n\t);\n}\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useMemo } from 'react';\nimport { useScreenMode } from '@zextras/carbonio-design-system';\nimport ShellContext from './shell-context';\n\nexport default function ShellContextProvider({ children }) {\n\tconst screenMode = useScreenMode();\n\n\tconst value = useMemo(\n\t\t() => ({\n\t\t\tisMobile: screenMode === 'mobile'\n\t\t}),\n\t\t[screenMode]\n\t);\n\n\treturn <ShellContext.Provider value={value}>{children}</ShellContext.Provider>;\n}\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport { isFunction } from 'lodash';\nimport create from 'zustand';\nimport { QueryChip, SearchState } from '../../types';\n\nexport const useSearchStore = create<SearchState>((set, get) => ({\n\tquery: [],\n\tsearchDisabled: false,\n\tsetSearchDisabled: (searchDisabled: boolean): void => set({ searchDisabled }),\n\tupdateQuery: (query: Array<QueryChip> | ((q: Array<QueryChip>) => Array<QueryChip>)): void =>\n\t\tset({ query: isFunction(query) ? query(get().query) : query }),\n\tupdateModule: (module: string): void => set({ module })\n}));\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\n/* eslint-disable @typescript-eslint/ban-ts-comment */\n\nimport React, { useContext, useState, useCallback, useEffect, useMemo, FC, useRef } from 'react';\nimport {\n\tChipInput,\n\tContainer,\n\tIconButton,\n\tTooltip,\n\tThemeContext,\n\tSelect,\n\tRow,\n\tIcon,\n\tText,\n\tPadding\n} from '@zextras/carbonio-design-system';\nimport { useTranslation } from 'react-i18next';\nimport { filter, find, map, reduce } from 'lodash';\nimport styled from 'styled-components';\nimport { useHistory } from 'react-router-dom';\nimport { useLocalStorage } from '../shell/hooks';\nimport { SEARCH_APP_ID } from '../constants';\nimport { useApps, useAppStore } from '../store/app';\nimport { useSearchStore } from './search-store';\nimport { QueryChip, SearchBarProps, SelectLabelFactoryProps } from '../../types';\nimport { handleKeyboardShortcuts } from '../keyboard-shortcuts/keyboard-shortcuts';\n\nconst OutlinedIconButton = styled(IconButton)`\n\tborder: 1px solid\n\t\t${({ theme, disabled }): string =>\n\t\t\tdisabled ? theme.palette.primary.disabled : theme.palette.primary.regular};\n\tdisplay: 'block';\n\t& svg {\n\t\tborder: none;\n\t}\n`;\n\nconst StyledChipInput = styled(ChipInput)`\n\t&:hover {\n\t\toutline: none;\n\t\tbackground: ${({ theme, disabled }): string =>\n\t\t\tdisabled ? 'gray5' : theme.palette.gray5.hover};\n\t}\n`;\n\nconst StyledContainer = styled(Container)`\n\theight: 42px;\n\toverflow-y: hidden;\n\t&:first-child {\n\t\ttransform: translateY(-2px);\n\t}\n`;\n\nconst SelectLabelFactory: FC<SelectLabelFactoryProps> = ({ selected, open, focus, disabled }) => {\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tconst theme: any = useContext(ThemeContext);\n\tconst color = useMemo(\n\t\t// eslint-disable-next-line no-nested-ternary\n\t\t() => (disabled ? '#CCCCCC' : open || focus ? 'primary' : 'text'),\n\t\t[disabled, open, focus]\n\t);\n\treturn (\n\t\t<Container\n\t\t\torientation=\"horizontal\"\n\t\t\tbackground={disabled ? 'gray5' : 'gray6'}\n\t\t\theight={42}\n\t\t\twidth=\"fit\"\n\t\t\tminWidth=\"150px\"\n\t\t\tcrossAlignment=\"center\"\n\t\t\tmainAlignment=\"space-between\"\n\t\t\tborderRadius=\"half\"\n\t\t\tstyle={{\n\t\t\t\tborderRight: `1px solid ${theme.palette.gray4.regular}`,\n\t\t\t\tcursor: disabled ? 'default' : 'pointer'\n\t\t\t}}\n\t\t>\n\t\t\t<Row takeAvailableSpace mainAlignment=\"unset\" padding={{ left: 'small' }}>\n\t\t\t\t<Text size=\"small\" color={color}>\n\t\t\t\t\t{selected[0]?.label}\n\t\t\t\t</Text>\n\t\t\t</Row>\n\t\t\t<Icon\n\t\t\t\tsize=\"large\"\n\t\t\t\ticon={open ? 'ChevronUpOutline' : 'ChevronDownOutline'}\n\t\t\t\tcolor={color}\n\t\t\t\tstyle={{ alignSelf: 'center' }}\n\t\t\t/>\n\t\t</Container>\n\t);\n};\n\nexport const SearchBar: FC<SearchBarProps> = ({\n\tactiveRoute\n\t// primaryAction,\n\t// secondaryActions\n}) => {\n\tconst searchViews = useAppStore((s) => s.views.search);\n\n\tconst [searchIsEnabled, setSearchIsEnabled] = useState(false);\n\tconst inputRef = useRef<HTMLInputElement>();\n\tconst [t] = useTranslation();\n\tconst [storedValue, setStoredValue] = useLocalStorage('search_suggestions', []);\n\tconst [inputTyped, setInputTyped] = useState('');\n\tconst history = useHistory();\n\tconst { updateQuery, module, updateModule, query, searchDisabled, setSearchDisabled } =\n\t\tuseSearchStore();\n\tconst [moduleSelection, setModuleSelection] = useState<{\n\t\tvalue: string;\n\t\tlabel: string;\n\t}>();\n\tconst [isTyping, setIsTyping] = useState(false);\n\t// const [changedBySearchBar, setChangedBySearchBar] = useState(false);\n\n\tconst moduleSelectorItems = useMemo<\n\t\tArray<{ label: string; value: string; customComponent: JSX.Element }>\n\t>(\n\t\t() =>\n\t\t\tmap(searchViews, (view) => ({\n\t\t\t\tcustomComponent: (\n\t\t\t\t\t<Container mainAlignment=\"flex-start\" orientation=\"horizontal\">\n\t\t\t\t\t\t<Padding horizontal=\"extrasmall\">\n\t\t\t\t\t\t\t<Icon icon={view.icon} />\n\t\t\t\t\t\t</Padding>\n\t\t\t\t\t\t<Text>{view.label}</Text>\n\t\t\t\t\t</Container>\n\t\t\t\t),\n\t\t\t\tlabel: view.label,\n\t\t\t\tvalue: view.route\n\t\t\t})),\n\t\t[searchViews]\n\t);\n\n\tconst [options, setOptions] = useState<Array<{ label: string; hasAvatar: false }>>([]);\n\n\t// 1 - update moduleSelection when route changes\n\tuseEffect(() => {\n\t\tif (activeRoute) {\n\t\t\tsetModuleSelection((selection) =>\n\t\t\t\tactiveRoute.route !== selection?.value\n\t\t\t\t\t? find(moduleSelectorItems, (i) => i.value === activeRoute.route) ??\n\t\t\t\t\t moduleSelectorItems?.[0]\n\t\t\t\t\t: moduleSelectorItems?.[0]\n\t\t\t);\n\t\t} else {\n\t\t\tsetModuleSelection(moduleSelectorItems?.[0]);\n\t\t}\n\t}, [activeRoute, moduleSelectorItems]);\n\t// 2 - update module when moduleSelection changes\n\tuseEffect(() => {\n\t\tif (moduleSelection && module !== moduleSelection.value) updateModule(moduleSelection.value);\n\t}, [module, moduleSelection, updateModule]);\n\tconst [inputHasFocus, setInputHasFocus] = useState(false);\n\n\tconst [inputState, setInputState] = useState(query);\n\tconst showClear = useMemo(\n\t\t() =>\n\t\t\tinputState.length > 0 ||\n\t\t\t(inputRef.current?.textContent && inputRef.current?.textContent?.length > 0),\n\t\t[inputState.length]\n\t);\n\tconst clearSearch = useCallback((): void => {\n\t\tif (inputRef.current) {\n\t\t\tinputRef.current.innerText = '';\n\t\t\tinputRef.current?.focus();\n\t\t}\n\t\tsetIsTyping(false);\n\t\tsetInputState([]);\n\t\tsetSearchDisabled(false);\n\t\tupdateQuery([]);\n\t\tsetInputTyped('');\n\t}, [setSearchDisabled, updateQuery]);\n\n\tconst onSearch = useCallback(() => {\n\t\tupdateQuery((currentQuery) => {\n\t\t\tconst ref = inputRef?.current;\n\n\t\t\tif (ref) ref.innerText = '';\n\t\t\tif (inputTyped.length > 0) {\n\t\t\t\tconst newInputState = [\n\t\t\t\t\t...inputState,\n\t\t\t\t\t...map(inputTyped?.split(' '), (item) => ({ label: item, hasAvatar: false }))\n\t\t\t\t];\n\t\t\t\tsetInputState(newInputState);\n\t\t\t\tsetInputTyped('');\n\t\t\t\treturn reduce(\n\t\t\t\t\tnewInputState,\n\t\t\t\t\t(acc, chip) => {\n\t\t\t\t\t\tif (!find(currentQuery, (c: QueryChip): boolean => c.label === chip.label)) {\n\t\t\t\t\t\t\tacc.push(chip);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn acc;\n\t\t\t\t\t},\n\t\t\t\t\tfilter(\n\t\t\t\t\t\tcurrentQuery,\n\t\t\t\t\t\t(qchip: QueryChip): boolean =>\n\t\t\t\t\t\t\tqchip.isQueryFilter ||\n\t\t\t\t\t\t\t!!find(inputState, (c: QueryChip): boolean => c.label === qchip.label)\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\t\t\tsetInputTyped('');\n\t\t\treturn reduce(\n\t\t\t\tinputState,\n\t\t\t\t(acc, chip) => {\n\t\t\t\t\tif (!find(currentQuery, (c: QueryChip): boolean => c.label === chip.label)) {\n\t\t\t\t\t\tacc.push(chip);\n\t\t\t\t\t}\n\t\t\t\t\treturn acc;\n\t\t\t\t},\n\t\t\t\tfilter(\n\t\t\t\t\tcurrentQuery,\n\t\t\t\t\t(qchip: QueryChip): boolean =>\n\t\t\t\t\t\tqchip.isQueryFilter ||\n\t\t\t\t\t\t!!find(inputState, (c: QueryChip): boolean => c.label === qchip.label)\n\t\t\t\t)\n\t\t\t);\n\t\t});\n\t\tif (activeRoute?.app !== SEARCH_APP_ID) {\n\t\t\thistory.push(`/${SEARCH_APP_ID}/${moduleSelection?.value}`);\n\t\t}\n\t\tsetSearchIsEnabled(false);\n\t\t// setChangedBySearchBar(true);\n\t}, [updateQuery, activeRoute?.app, inputTyped, inputState, history, moduleSelection?.value]);\n\n\tconst appSuggestions = useMemo<Array<QueryChip & { hasAvatar: false }>>(\n\t\t() =>\n\t\t\tfilter(storedValue, (v) => v.app === moduleSelection?.value)\n\t\t\t\t.reverse()\n\t\t\t\t.map((item: QueryChip) => ({\n\t\t\t\t\t...item,\n\t\t\t\t\thasAvatar: false,\n\t\t\t\t\tdisabled: searchDisabled,\n\t\t\t\t\tclick: (): void => {\n\t\t\t\t\t\tsetInputState((q: Array<QueryChip>) => [...q, { ...item, hasAvatar: false }]);\n\t\t\t\t\t}\n\t\t\t\t})),\n\t\t[moduleSelection?.value, storedValue, setInputState, searchDisabled]\n\t);\n\n\tconst updateOptions = useCallback(\n\t\t(target: HTMLInputElement, q: Array<any>): void => {\n\t\t\tif (target.textContent && target.textContent.length > 0) {\n\t\t\t\tsetOptions(\n\t\t\t\t\tappSuggestions\n\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t(v: QueryChip): boolean =>\n\t\t\t\t\t\t\t\tv.label?.indexOf(target.textContent as string) !== -1 &&\n\t\t\t\t\t\t\t\t!find(q, (i) => i.value === v.label)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.slice(0, 5)\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tsetOptions(appSuggestions.slice(0, 5));\n\t\t\t}\n\t\t},\n\t\t[appSuggestions]\n\t);\n\n\tconst onQueryChange = useCallback(\n\t\t(newQuery) => {\n\t\t\tif (\n\t\t\t\tnewQuery[newQuery.length - 1]?.label &&\n\t\t\t\tmoduleSelection?.value &&\n\t\t\t\t!find(appSuggestions, (v) => v.label === newQuery[newQuery.length - 1]?.label)\n\t\t\t) {\n\t\t\t\tsetStoredValue(\n\t\t\t\t\t(\n\t\t\t\t\t\tvalue: Array<{ value: string; label: string; icon: string; app: string; id: string }>\n\t\t\t\t\t) => [\n\t\t\t\t\t\t...value,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: newQuery[newQuery.length - 1].label,\n\t\t\t\t\t\t\tlabel: newQuery[newQuery.length - 1].label,\n\t\t\t\t\t\t\ticon: 'ClockOutline',\n\t\t\t\t\t\t\tapp: moduleSelection.value,\n\t\t\t\t\t\t\tid: `${value.length}`,\n\t\t\t\t\t\t\thasAvatar: false\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t);\n\t\t\t}\n\t\t\t/** Commented for future reference */\n\t\t\t// if (inputRef.current) {\n\t\t\t// \tupdateOptions(inputRef.current, newQuery);\n\t\t\t// }\n\t\t\tsetInputState(newQuery);\n\t\t\tsetSearchIsEnabled(true);\n\t\t},\n\t\t[appSuggestions, moduleSelection?.value, setStoredValue]\n\t);\n\n\tconst onInputType = useCallback(\n\t\t(ev) => {\n\t\t\tif (ev.target.textContent === '') {\n\t\t\t\tsetIsTyping(false);\n\t\t\t} else if (!isTyping) {\n\t\t\t\tsetIsTyping(true);\n\t\t\t}\n\t\t\tsetInputTyped(ev.target.textContent);\n\t\t\tupdateOptions(ev.target, query);\n\t\t},\n\t\t[query, updateOptions, isTyping]\n\t);\n\n\tuseEffect(() => {\n\t\tif (moduleSelection?.value) {\n\t\t\tconst suggestions = filter(\n\t\t\t\tappSuggestions,\n\t\t\t\t(suggestion) => suggestion?.app === moduleSelection.value\n\t\t\t).slice(0, 5);\n\n\t\t\tsetOptions(suggestions);\n\t\t}\n\t}, [appSuggestions, moduleSelection?.value]);\n\n\tconst onSelectionChange = useCallback(\n\t\t(newVal) => {\n\t\t\tsetModuleSelection(find(moduleSelectorItems, (item) => item.value === newVal));\n\t\t\t// setInputState([]);\n\t\t\t// updateQuery([]);\n\t\t\tif (activeRoute?.app === SEARCH_APP_ID) {\n\t\t\t\thistory.push(`/${SEARCH_APP_ID}/${newVal}`);\n\t\t\t}\n\t\t},\n\t\t[activeRoute?.app, history, moduleSelectorItems]\n\t);\n\tconst [triggerSearch, setTriggerSearch] = useState(false);\n\tconst containerRef = useRef<HTMLDivElement>();\n\n\t// useEffect(() => {\n\t// \tconst handler = (event: KeyboardEvent): unknown =>\n\t// \t\thandleKeyboardShortcuts({\n\t// \t\t\tevent,\n\t// \t\t\tinputRef,\n\t// \t\t\tprimaryAction,\n\t// \t\t\tsecondaryActions,\n\t// \t\t\tcurrentApp\n\t// \t\t});\n\t// \tdocument.addEventListener('keydown', handler);\n\t// \treturn (): void => {\n\t// \t\tdocument.removeEventListener('keydown', handler);\n\t// \t};\n\t// }, [currentApp, inputRef, primaryAction, secondaryActions]);\n\n\tuseEffect(() => {\n\t\tconst ref = inputRef.current;\n\t\tconst searchCb = (ev: any): void => {\n\t\t\tif (ev.key === 'Enter') {\n\t\t\t\tsetTimeout(() => setTriggerSearch(true), 0);\n\t\t\t}\n\t\t};\n\t\tif (ref) {\n\t\t\tref.addEventListener('keyup', searchCb);\n\t\t}\n\t\treturn (): void => {\n\t\t\tif (ref) {\n\t\t\t\tref.removeEventListener('keyup', searchCb);\n\t\t\t}\n\t\t};\n\t}, [onSearch]);\n\n\tuseEffect(() => {\n\t\tif (triggerSearch) {\n\t\t\tonSearch();\n\t\t\tsetTriggerSearch(false);\n\t\t}\n\t}, [onSearch, triggerSearch]);\n\n\t// useEffect(() => {\n\t// \tsetChangedBySearchBar((value) => {\n\t// \t\tif (!value) {\n\t// \t\t\tsetInputState(filter(query, (q) => !q.isQueryFilter));\n\t// \t\t}\n\t// \t\treturn false;\n\t// \t});\n\t// }, [query]);\n\n\tconst disableOptions = useMemo(() => !(options.length > 0) || isTyping, [options, isTyping]);\n\n\tconst placeholder = useMemo(\n\t\t() =>\n\t\t\tinputHasFocus && moduleSelection\n\t\t\t\t? t('search.active_input_label', 'Separate your keywords by a comma or pressing TAB')\n\t\t\t\t: t('search.idle_input_label', 'Search in {{module}}', {\n\t\t\t\t\t\tmodule: moduleSelection?.label\n\t\t\t\t }),\n\t\t[t, moduleSelection, inputHasFocus]\n\t);\n\n\tconst clearButtonPlaceholder = useMemo(\n\t\t() =>\n\t\t\tshowClear || isTyping\n\t\t\t\t? t('search.clear', 'Clear search input')\n\t\t\t\t: t('search.already_clear', 'Search input is already clear'),\n\t\t[showClear, t, isTyping]\n\t);\n\tconst searchBtnTooltipLabel = useMemo(() => {\n\t\tif (searchIsEnabled && inputState.length > 0) {\n\t\t\treturn t('search.start', 'Start search');\n\t\t}\n\t\tif (inputHasFocus) {\n\t\t\treturn t(\n\t\t\t\t'search.type_or_choose_suggestion',\n\t\t\t\t'Type or choose some keywords to start a search'\n\t\t\t);\n\t\t}\n\t\tif (query.length > 0) {\n\t\t\treturn t('label.edit_to_start_search', 'Edit your search to start a new one');\n\t\t}\n\t\treturn t('search.type_to_start_search', 'Type some keywords to start a search');\n\t}, [t, searchIsEnabled, inputState.length, inputHasFocus, query.length]);\n\n\tconst onChipAdd = useCallback(\n\t\t(newChip: string) => {\n\t\t\tsetIsTyping(false);\n\t\t\tsetInputTyped('');\n\t\t\tif (moduleSelection?.value) {\n\t\t\t\tconst suggestions = filter(\n\t\t\t\t\tappSuggestions,\n\t\t\t\t\t(suggestion) => suggestion?.app === moduleSelection?.value\n\t\t\t\t).slice(0, 5);\n\n\t\t\t\tsetOptions(suggestions);\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tlabel: newChip.trim(),\n\t\t\t\thasAvatar: false,\n\t\t\t\tavatarLabel: ''\n\t\t\t};\n\t\t},\n\t\t[appSuggestions, moduleSelection?.value]\n\t);\n\n\tuseEffect(() => {\n\t\tsetInputState(map(query, (q) => ({ ...q, disabled: searchDisabled })));\n\t}, [searchDisabled, query]);\n\n\tconst addFocus = useCallback(() => setInputHasFocus(true), []);\n\tconst removeFocus = useCallback(() => setInputHasFocus(false), []);\n\tconst disableClearButton = useMemo(() => (isTyping ? false : !showClear), [showClear, isTyping]);\n\n\treturn (\n\t\t<Container orientation=\"horizontal\" minWidth=\"0\" ref={containerRef}>\n\t\t\t<Tooltip\n\t\t\t\tdisabled={!searchDisabled}\n\t\t\t\tmaxWidth=\"100%\"\n\t\t\t\tlabel={t(\n\t\t\t\t\t'search.unable_to_parse_query',\n\t\t\t\t\t'Unable to complete the search, clear it and retry'\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<Container orientation=\"horizontal\" width=\"fill\">\n\t\t\t\t\t<Container minWidth=\"512px\" width=\"fill\">\n\t\t\t\t\t\t<Container orientation=\"horizontal\" width=\"fill\">\n\t\t\t\t\t\t\t<Container width=\"fit\">\n\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\tdisabled={searchDisabled}\n\t\t\t\t\t\t\t\t\titems={moduleSelectorItems}\n\t\t\t\t\t\t\t\t\tbackground=\"gray6\"\n\t\t\t\t\t\t\t\t\tselectedBackgroundColor=\"highlight\"\n\t\t\t\t\t\t\t\t\tlabel={t('search.module', 'Module')}\n\t\t\t\t\t\t\t\t\tselection={moduleSelection}\n\t\t\t\t\t\t\t\t\tonChange={onSelectionChange}\n\t\t\t\t\t\t\t\t\tLabelFactory={SelectLabelFactory}\n\t\t\t\t\t\t\t\t\tstyle={{ fontSize: '14px' }}\n\t\t\t\t\t\t\t\t\tcolor=\"text\"\n\t\t\t\t\t\t\t\t\tfontSize=\"small\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</Container>\n\t\t\t\t\t\t\t<StyledContainer orientation=\"horizontal\">\n\t\t\t\t\t\t\t\t<StyledChipInput\n\t\t\t\t\t\t\t\t\tdisabled={searchDisabled}\n\t\t\t\t\t\t\t\t\tinputRef={inputRef}\n\t\t\t\t\t\t\t\t\tvalue={inputState}\n\t\t\t\t\t\t\t\t\tonAdd={onChipAdd}\n\t\t\t\t\t\t\t\t\toptions={options}\n\t\t\t\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\t\t\t\tconfirmChipOnBlur={false}\n\t\t\t\t\t\t\t\t\tconfirmChipOnSpace={false}\n\t\t\t\t\t\t\t\t\tseparators={['Comma']}\n\t\t\t\t\t\t\t\t\tbackground={searchDisabled ? 'gray5' : 'gray6'}\n\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t\t\t\t\t\toverflowX: 'hidden'\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tonChange={onQueryChange}\n\t\t\t\t\t\t\t\t\tonInputType={onInputType}\n\t\t\t\t\t\t\t\t\tonInputTypeDebounce={0}\n\t\t\t\t\t\t\t\t\tonBlur={removeFocus}\n\t\t\t\t\t\t\t\t\tonFocus={addFocus}\n\t\t\t\t\t\t\t\t\tdisableOptions={disableOptions}\n\t\t\t\t\t\t\t\t\trequireUniqueChips={false}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</StyledContainer>\n\t\t\t\t\t\t</Container>\n\t\t\t\t\t</Container>\n\n\t\t\t\t\t{!disableClearButton && (\n\t\t\t\t\t\t<Padding left=\"small\">\n\t\t\t\t\t\t\t<Tooltip label={clearButtonPlaceholder} placement=\"bottom\">\n\t\t\t\t\t\t\t\t<OutlinedIconButton\n\t\t\t\t\t\t\t\t\tdisabled={disableClearButton}\n\t\t\t\t\t\t\t\t\ticon=\"BackspaceOutline\"\n\t\t\t\t\t\t\t\t\ticonColor=\"primary\"\n\t\t\t\t\t\t\t\t\tonClick={clearSearch}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t</Padding>\n\t\t\t\t\t)}\n\n\t\t\t\t\t<Padding left=\"small\">\n\t\t\t\t\t\t<Tooltip\n\t\t\t\t\t\t\tmaxWidth=\"100%\"\n\t\t\t\t\t\t\tdisabled={searchDisabled}\n\t\t\t\t\t\t\tlabel={searchBtnTooltipLabel}\n\t\t\t\t\t\t\tplacement=\"bottom\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\ticon=\"Search\"\n\t\t\t\t\t\t\t\tdisabled={!(searchIsEnabled && inputState.length > 0)}\n\t\t\t\t\t\t\t\tbackgroundColor=\"primary\"\n\t\t\t\t\t\t\t\ticonColor=\"gray6\"\n\t\t\t\t\t\t\t\tonClick={onSearch}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t</Padding>\n\t\t\t\t</Container>\n\t\t\t</Tooltip>\n\t\t</Container>\n\t);\n};\n","/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { FC, useCallback, useMemo, useState } from 'react';\nimport { reduce, groupBy } from 'lodash';\nimport { MultiButton, Button, Dropdown } from '@zextras/carbonio-design-system';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation } from 'react-router-dom';\nimport { useActions } from '../store/integrations/hooks';\nimport { ACTION_TYPES } from '../constants';\nimport { Action, AppRoute } from '../../types';\nimport { useAppList } from '../store/app';\n\nconst useSecondaryActions = (\n\tactions: Array<Action>,\n\tactiveRoute?: AppRoute\n): Array<Action | { type: string; id: string }> => {\n\tconst apps = useAppList();\n\n\tconst byApp = useMemo(() => groupBy(actions, 'group'), [actions]);\n\treturn useMemo(\n\t\t() => [\n\t\t\t...(byApp[activeRoute?.app ?? ''] ?? []),\n\t\t\t...reduce(\n\t\t\t\tapps,\n\t\t\t\t(acc, app, i) => {\n\t\t\t\t\tif (app.name !== activeRoute?.app && byApp[app.name]?.length > 0) {\n\t\t\t\t\t\tacc.push({ type: 'divider', label: '', id: `divider-${i}` }, ...byApp[app.name]);\n\t\t\t\t\t}\n\t\t\t\t\treturn acc;\n\t\t\t\t},\n\t\t\t\t[] as Array<Action | { type: string; id: string }>\n\t\t\t)\n\t\t],\n\t\t[activeRoute?.app, apps, byApp]\n\t);\n};\n\nexport const CreationButton: FC<{ activeRoute?: AppRoute }> = ({ activeRoute }) => {\n\tconst [t] = useTranslation();\n\tconst location = useLocation();\n\tconst actions = useActions({ activeRoute, location }, ACTION_TYPES.NEW);\n\tconst [open, setOpen] = useState(false);\n\tconst primaryAction = useMemo(\n\t\t() =>\n\t\t\tactions?.find?.(\n\t\t\t\t(a) => (a.group === activeRoute?.id || a.group === activeRoute?.app) && a.primary\n\t\t\t),\n\t\t[actions, activeRoute?.app, activeRoute?.id]\n\t);\n\tconst secondaryActions = useSecondaryActions(actions, activeRoute);\n\n\tconst onClose = useCallback(() => {\n\t\tsetOpen(false);\n\t}, []);\n\tconst onOpen = useCallback(() => {\n\t\tsetOpen(true);\n\t}, []);\n\treturn primaryAction ? (\n\t\t<MultiButton\n\t\t\tstyle={{ height: '42px' }}\n\t\t\tbackground=\"primary\"\n\t\t\tlabel={primaryAction?.label ?? t('new', 'New')}\n\t\t\tonClick={primaryAction?.click}\n\t\t\titems={secondaryActions}\n\t\t\tdisabled={!primaryAction || primaryAction?.disabled}\n\t\t/>\n\t) : (\n\t\t<Dropdown items={secondaryActions} onClose={onClose} onOpen={onOpen}>\n\t\t\t<Button\n\t\t\t\tstyle={{ height: '42px' }}\n\t\t\t\tbackground=\"primary\"\n\t\t\t\titems={secondaryActions}\n\t\t\t\tlabel={t('new', 'New')}\n\t\t\t\ticon={open ? 'ChevronUp' : 'ChevronDown'}\n\t\t\t/>\n\t\t</Dropdown>\n\t);\n};\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { FC } from 'react';\nimport {\n\tContainer,\n\tIconButton,\n\tPadding,\n\tResponsive,\n\tuseScreenMode\n} from '@zextras/carbonio-design-system';\nimport Logo from '../svg/carbonio-beta.svg';\nimport LogoAdmin from '../svg/carbonio-admin-panel.svg';\nimport { SearchBar } from '../search/search-bar';\nimport { CreationButton } from './creation-button';\nimport { useAppStore } from '../store/app';\nimport { AppRoute } from '../../types';\nimport { ShellMode } from '../multimode';\nimport { SHELL_MODES } from '../constants';\n\nconst ShellHeader: FC<{\n\tactiveRoute: AppRoute;\n\tmobileNavIsOpen: boolean;\n\tonMobileMenuClick: () => void;\n}> = ({ activeRoute, mobileNavIsOpen, onMobileMenuClick, children }) => {\n\tconst screenMode = useScreenMode();\n\tconst searchEnabled = useAppStore((s) => s.views.search.length > 0);\n\treturn (\n\t\t<Container\n\t\t\torientation=\"horizontal\"\n\t\t\tbackground=\"gray3\"\n\t\t\twidth=\"fill\"\n\t\t\theight=\"60px\"\n\t\t\tminHeight=\"60px\"\n\t\t\tmaxHeight=\"60px\"\n\t\t\tmainAlignment=\"space-between\"\n\t\t\tpadding={{\n\t\t\t\thorizontal: screenMode === 'desktop' ? 'large' : 'extrasmall',\n\t\t\t\tvertical: 'small'\n\t\t\t}}\n\t\t>\n\t\t\t<Container orientation=\"horizontal\" width=\"75%\" maxWidth=\"75%\" mainAlignment=\"space-between\">\n\t\t\t\t<Responsive mode=\"mobile\">\n\t\t\t\t\t<Padding right=\"small\">\n\t\t\t\t\t\t<IconButton icon={mobileNavIsOpen ? 'Close' : 'Menu'} onClick={onMobileMenuClick} />\n\t\t\t\t\t</Padding>\n\t\t\t\t</Responsive>\n\t\t\t\t<Container width={320} height={32} crossAlignment=\"flex-start\">\n\t\t\t\t\t<ShellMode exclude={[SHELL_MODES.ADMIN]}>\n\t\t\t\t\t\t<Logo height=\"32px\" />\n\t\t\t\t\t</ShellMode>\n\t\t\t\t\t<ShellMode include={[SHELL_MODES.ADMIN]}>\n\t\t\t\t\t\t<LogoAdmin height=\"32px\" />\n\t\t\t\t\t</ShellMode>\n\t\t\t\t</Container>\n\t\t\t\t<ShellMode exclude={[SHELL_MODES.ADMIN]}>\n\t\t\t\t\t<Padding horizontal=\"large\">\n\t\t\t\t\t\t<CreationButton activeRoute={activeRoute} />\n\t\t\t\t\t</Padding>\n\t\t\t\t</ShellMode>\n\t\t\t\t<Responsive mode=\"desktop\">\n\t\t\t\t\t{searchEnabled && (\n\t\t\t\t\t\t<SearchBar\n\t\t\t\t\t\t\tactiveRoute={activeRoute}\n\t\t\t\t\t\t\t// primaryAction={primaryAction}\n\t\t\t\t\t\t\t// secondaryActions={secondaryActions}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</Responsive>\n\t\t\t</Container>\n\t\t\t<Container orientation=\"horizontal\" width=\"25%\" mainAlignment=\"flex-end\">\n\t\t\t\t<Responsive mode=\"desktop\">{children}</Responsive>\n\t\t\t\t<Responsive mode=\"mobile\">\n\t\t\t\t\t<Container\n\t\t\t\t\t\torientation=\"horizontal\"\n\t\t\t\t\t\tmainAlignment=\"flex-end\"\n\t\t\t\t\t\tpadding={{ right: 'extrasmall' }}\n\t\t\t\t\t>\n\t\t\t\t\t\t{/* <Dropdown items={secondaryActions} placement=\"bottom-start\">\n\t\t\t\t\t\t\t<IconButton icon=\"Plus\" />\n\t\t\t\t\t\t</Dropdown> */}\n\t\t\t\t\t</Container>\n\t\t\t\t</Responsive>\n\t\t\t</Container>\n\t\t</Container>\n\t);\n};\nexport default ShellHeader;\n","/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\nimport React, { FC, forwardRef } from 'react';\nimport { Container, Text } from '@zextras/carbonio-design-system';\nimport styled from 'styled-components';\nimport { BadgeInfo } from '../../types';\n\nconst MiniBadge = styled(Container)<{ badge: BadgeInfo }>`\n\tposition: absolute;\n\tbottom: 25%;\n\tright: 25%;\n\ttransform: translate(30%, 30%);\n\tbackground: ${({ badge, theme }): string => theme.palette[badge?.color ?? 'primary'].regular};\n\tmin-width: 12px;\n\tmin-height: 12px;\n\tline-height: 12px;\n\tborder-radius: 8px;\n\tuser-select: none;\n\tcursor: pointer;\n\tpointer-events: none;\n`;\n\n// eslint-disable-next-line react/display-name\nconst BadgeWrap: FC<{ badge: BadgeInfo }> = forwardRef(({ badge, children }, ref) => (\n\t<Container width={48} height={48} style={{ position: 'relative' }} ref={ref}>\n\t\t{badge.show && (\n\t\t\t<MiniBadge badge={badge} height=\"fit\" width=\"fit\">\n\t\t\t\t{badge.showCount ? (\n\t\t\t\t\t<Text size=\"extrasmall\" style={{ padding: '2px 4px', fontSize: '10px' }} color=\"gray6\">\n\t\t\t\t\t\t{badge.count ?? 0}\n\t\t\t\t\t</Text>\n\t\t\t\t) : null}\n\t\t\t</MiniBadge>\n\t\t)}\n\t\t{children}\n\t</Container>\n));\n\nexport default BadgeWrap;\n","/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport { filter, intersection } from 'lodash';\nimport { useMemo } from 'react';\nimport { AppRoute, PrimaryAccessoryView, SecondaryAccessoryView, UtilityView } from '../../types';\nimport { useCurrentRoute } from '../history/hooks';\nimport { useAppStore } from '../store/app';\n\nexport const checkList = (l1: Array<string>, l2?: Array<string>): boolean =>\n\tintersection(l1, l2).length > 0;\n\nexport const checkRoute = (\n\tview: UtilityView | PrimaryAccessoryView | SecondaryAccessoryView,\n\tactiveRoute?: AppRoute\n): boolean => {\n\tconst activeRouteValues = Object.values(activeRoute ?? {});\n\tif (view.blacklistRoutes) return !checkList(activeRouteValues, view.blacklistRoutes);\n\tif (view.whitelistRoutes) return checkList(activeRouteValues, view.whitelistRoutes);\n\treturn true;\n};\nexport const useUtilityViews = (): Array<UtilityView> => {\n\tconst utilityViews = useAppStore((s) => s.views.utilityBar);\n\n\tconst activeRoute = useCurrentRoute();\n\treturn useMemo(\n\t\t() => filter(utilityViews, (v) => checkRoute(v, activeRoute)),\n\t\t[activeRoute, utilityViews]\n\t);\n};\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport {\n\tContainer,\n\tIconButton,\n\tRow,\n\tTooltip,\n\tText,\n\tPadding,\n\tIcon\n} from '@zextras/carbonio-design-system';\nimport { map, isEmpty, trim, filter, sortBy } from 'lodash';\nimport React, { useContext, FC, useState, useEffect, useMemo } from 'react';\nimport styled from 'styled-components';\nimport { useHistory } from 'react-router-dom';\n// TODO: convert boards management to ts (and maybe a zustand store)\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { BoardValueContext, BoardSetterContext } from './boards/board-context';\nimport { useAppStore } from '../store/app';\nimport { AppRoute, PrimaryAccessoryView, PrimaryBarView } from '../../types';\nimport BadgeWrap from './badge-wrap';\nimport { isAdmin, ShellMode } from '../multimode';\nimport { SHELL_MODES } from '../constants';\nimport AppContextProvider from '../boot/app/app-context-provider';\nimport { checkRoute } from '../utility-bar/utils';\n\nconst PrimaryContainer = styled(Container)<{ active: boolean }>`\n\tbackground: ${({ theme, active }): string => theme.palette[active ? 'gray4' : 'gray6'].regular};\n\tcursor: pointer;\n\ttransition: background 0.2s ease-out;\n\t&:hover {\n\t\tbackground: ${({ theme, active }): string => theme.palette[active ? 'gray4' : 'gray6'].hover};\n\t}\n\t&:focus {\n\t\tbackground: ${({ theme, active }): string => theme.palette[active ? 'gray4' : 'gray6'].focus};\n\t}\n`;\n\nconst ContainerWithDivider = styled(Container)`\n\tborder-right: 1px solid ${({ theme }): string => theme.palette.gray3.regular};\n`;\n\nconst ToggleBoardIcon: FC = () => {\n\tconst { boards, minimized } = useContext(BoardValueContext);\n\tconst { toggleMinimized } = useContext(BoardSetterContext);\n\n\tif (isEmpty(boards)) return null;\n\treturn (\n\t\t<IconButton\n\t\t\ticonColor=\"primary\"\n\t\t\ticon={minimized ? 'BoardOpen' : 'BoardCollapse'}\n\t\t\tonClick={toggleMinimized}\n\t\t\tsize=\"large\"\n\t\t/>\n\t);\n};\n\ntype PrimaryBarItemProps = {\n\tview: PrimaryBarView;\n\tactive: boolean;\n\tonClick: () => void;\n};\n\ntype PrimaryBarAccessoryItemProps = {\n\tview: PrimaryAccessoryView;\n};\n\nconst AdminPrimaryBarElement: FC<PrimaryBarItemProps> = ({ view, active, onClick }) => (\n\t<PrimaryContainer\n\t\torientation=\"horizontal\"\n\t\tmainAlignment=\"flex-start\"\n\t\theight=\"48px\"\n\t\tonClick={onClick}\n\t>\n\t\t<BadgeWrap badge={view.badge}>\n\t\t\t{typeof view.component === 'string' ? (\n\t\t\t\t<Icon icon={view.component} color={active ? 'primary' : 'text'} size=\"large\" />\n\t\t\t) : (\n\t\t\t\t<view.component active={active} />\n\t\t\t)}\n\t\t</BadgeWrap>\n\t\t<Padding right=\"large\">\n\t\t\t<Text color={active ? 'primary' : 'text'}>{view.label}</Text>\n\t\t</Padding>\n\t</PrimaryContainer>\n);\n\nconst PrimaryBarElement: FC<PrimaryBarItemProps> = ({ view, active, onClick }) => (\n\t<Tooltip label={view.label} placement=\"right\" key={view.id}>\n\t\t<BadgeWrap badge={view.badge}>\n\t\t\t{typeof view.component === 'string' ? (\n\t\t\t\t<IconButton\n\t\t\t\t\ticon={view.component}\n\t\t\t\t\tbackgroundColor={active ? 'gray4' : 'gray6'}\n\t\t\t\t\ticonColor={active ? 'primary' : 'text'}\n\t\t\t\t\tonClick={onClick}\n\t\t\t\t\tsize=\"large\"\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<view.component active={active} />\n\t\t\t)}\n\t\t</BadgeWrap>\n\t</Tooltip>\n);\n\nconst PrimaryBarAccessoryElement: FC<PrimaryBarAccessoryItemProps> = ({ view }) =>\n\tisAdmin() ? (\n\t\t<AppContextProvider key={view.id} pkg={view.app}>\n\t\t\t<PrimaryContainer\n\t\t\t\torientation=\"horizontal\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t\theight=\"48px\"\n\t\t\t\tonClick={view.onClick}\n\t\t\t>\n\t\t\t\t<Container width={48} height={48} style={{ position: 'relative' }}>\n\t\t\t\t\t{typeof view.component === 'string' ? (\n\t\t\t\t\t\t<Icon icon={view.component} size=\"large\" />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<view.component />\n\t\t\t\t\t)}\n\t\t\t\t</Container>\n\t\t\t\t<Padding right=\"large\">\n\t\t\t\t\t<Text>{view.label}</Text>\n\t\t\t\t</Padding>\n\t\t\t</PrimaryContainer>\n\t\t</AppContextProvider>\n\t) : (\n\t\t<Tooltip label={view.label} placement=\"right\" key={view.id}>\n\t\t\t<AppContextProvider key={view.id} pkg={view.app}>\n\t\t\t\t{typeof view.component === 'string' ? (\n\t\t\t\t\t<IconButton\n\t\t\t\t\t\ticon={view.component}\n\t\t\t\t\t\tbackgroundColor=\"gray6\"\n\t\t\t\t\t\ticonColor=\"text\"\n\t\t\t\t\t\tonClick={view.onClick}\n\t\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t/>\n\t\t\t\t) : (\n\t\t\t\t\t<view.component />\n\t\t\t\t)}\n\t\t\t</AppContextProvider>\n\t\t</Tooltip>\n\t);\n\nconst ShellPrimaryBar: FC<{ activeRoute: AppRoute }> = ({ activeRoute }) => {\n\tconst primaryBarViews = useAppStore((s) => s.views.primaryBar);\n\n\tconst [routes, setRoutes] = useState<Record<string, string>>({});\n\tconst history = useHistory();\n\n\tuseEffect(() => {\n\t\tsetRoutes((r) =>\n\t\t\tprimaryBarViews.reduce((acc, v) => {\n\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\tif (!acc[v.id]) acc[v.id] = v.route;\n\t\t\t\treturn acc;\n\t\t\t}, r)\n\t\t);\n\t}, [primaryBarViews]);\n\tuseEffect(() => {\n\t\tif (activeRoute) {\n\t\t\tsetRoutes((r) => ({ ...r, [activeRoute.id]: trim(history.location.pathname, '/') }));\n\t\t}\n\t}, [activeRoute, history.location.pathname, primaryBarViews]);\n\tconst primaryBarAccessoryViews = useAppStore((s) => s.views.primaryBarAccessories);\n\tconst accessories = useMemo(\n\t\t() =>\n\t\t\tsortBy(\n\t\t\t\tfilter(primaryBarAccessoryViews, (v) => checkRoute(v, activeRoute)),\n\t\t\t\t'position'\n\t\t\t),\n\t\t[activeRoute, primaryBarAccessoryViews]\n\t);\n\treturn (\n\t\t<ContainerWithDivider\n\t\t\twidth={isAdmin() ? 'fit' : 49}\n\t\t\theight=\"fill\"\n\t\t\tbackground=\"gray6\"\n\t\t\torientation=\"vertical\"\n\t\t\tmainAlignment=\"flex-start\"\n\t\t\tcrossAlignment=\"flex-start\"\n\t\t>\n\t\t\t<Row\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t\tcrossAlignment=\"flex-start\"\n\t\t\t\torientation=\"vertical\"\n\t\t\t\ttakeAvailableSpace\n\t\t\t\twrap=\"nowrap\"\n\t\t\t\tstyle={{ minHeight: '1px', overflowY: 'overlay' }}\n\t\t\t>\n\t\t\t\t<ShellMode include={[SHELL_MODES.ADMIN]}>\n\t\t\t\t\t{map(primaryBarViews, (view) =>\n\t\t\t\t\t\t// eslint-disable-next-line no-nested-ternary\n\t\t\t\t\t\tview.visible ? (\n\t\t\t\t\t\t\t<AdminPrimaryBarElement\n\t\t\t\t\t\t\t\tkey={view.id}\n\t\t\t\t\t\t\t\tonClick={(): void => history.push(`/${routes[view.id]}`)}\n\t\t\t\t\t\t\t\tview={view}\n\t\t\t\t\t\t\t\tactive={activeRoute?.id === view.id}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : null\n\t\t\t\t\t)}\n\t\t\t\t</ShellMode>\n\t\t\t\t<ShellMode exclude={[SHELL_MODES.ADMIN]}>\n\t\t\t\t\t{map(primaryBarViews, (view) =>\n\t\t\t\t\t\t// eslint-disable-next-line no-nested-ternary\n\t\t\t\t\t\tview.visible ? (\n\t\t\t\t\t\t\t<PrimaryBarElement\n\t\t\t\t\t\t\t\tkey={view.id}\n\t\t\t\t\t\t\t\tonClick={(): void => history.push(`/${routes[view.id]}`)}\n\t\t\t\t\t\t\t\tview={view}\n\t\t\t\t\t\t\t\tactive={activeRoute?.id === view.id}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : null\n\t\t\t\t\t)}\n\t\t\t\t</ShellMode>\n\t\t\t</Row>\n\t\t\t<Row\n\t\t\t\tmainAlignment=\"flex-end\"\n\t\t\t\torientation=\"vertical\"\n\t\t\t\twrap=\"nowrap\"\n\t\t\t\tstyle={{ minHeight: '1px', overflowY: 'overlay' }}\n\t\t\t>\n\t\t\t\t{accessories.map((v) => (\n\t\t\t\t\t<PrimaryBarAccessoryElement view={v} key={v.id} />\n\t\t\t\t))}\n\t\t\t\t<ToggleBoardIcon />\n\t\t\t</Row>\n\t\t</ContainerWithDivider>\n\t);\n};\n\nexport default ShellPrimaryBar;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { FunctionComponent } from 'react';\nimport styled from 'styled-components';\nimport { Icon } from '@zextras/carbonio-design-system';\n\nconst VerticalDivider = styled.div`\n\tposition: relative;\n\toverflow: visible;\n\theight: 100%;\n\twidth: 1px;\n\tmax-width: 1px;\n\tmin-width: 1px;\n\tbackground-color: ${({ theme }): string => theme.palette.gray2.regular};\n\ttransition: background 0.2s;\n\t&:hover {\n\t\tbackground-color: ${({ theme }): string => theme.palette.gray2.hover};\n\t}\n`;\n\nconst Bubble = styled.div<{ open: boolean }>`\n\tcursor: pointer;\n\tz-index: 2;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tposition: absolute;\n\ttop: 50%;\n\tleft: -12px;\n\twidth: 24px;\n\theight: 24px;\n\tborder-radius: 50%;\n\tbackground-color: ${({ theme }): string => theme.palette.gray2.regular};\n\ttransition: background-color 0.2s, transform 0.2s;\n\ttransform: scaleX(${({ open }): number => (open ? 1 : -1)});\n\t&:hover {\n\t\tbackground-color: ${({ theme }): string => theme.palette.gray2.hover};\n\t}\n\t&:active {\n\t\tbackground-color: ${({ theme }): string => theme.palette.gray2.active};\n\t}\n`;\n\nexport const Collapser: FunctionComponent<{ open: boolean; onClick: () => void }> = ({\n\topen,\n\tonClick\n}) => (\n\t<VerticalDivider>\n\t\t<Bubble onClick={onClick} open={open}>\n\t\t\t<Icon size=\"medium\" icon=\"ChevronLeft\" />\n\t\t</Bubble>\n\t</VerticalDivider>\n);\n","/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\nimport create from 'zustand';\nimport { UtilityBarStore } from '../../types';\n\nexport const useUtilityBarStore = create<UtilityBarStore>((set) => ({\n\tmode: 'closed',\n\tcurrent: undefined,\n\tsecondaryBarState: true,\n\tsetMode: (mode): void =>\n\t\tset((s) => ({ mode, secondaryBarState: mode === 'open' ? false : s.secondaryBarState })),\n\tsetCurrent: (current): void => set({ current }),\n\tsetSecondaryBarState: (secondaryBarState: boolean): void => set({ secondaryBarState })\n}));\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport { SHELL_APP_ID } from '../constants';\nimport { useAccountStore } from '../store/account';\nimport { goToLogin } from './go-to-login';\n\nexport const logout = (): Promise<void> =>\n\tuseAccountStore\n\t\t.getState()\n\t\t.soapFetch(SHELL_APP_ID)('EndSession', {\n\t\t\t_jsns: 'urn:zimbraAccount'\n\t\t})\n\t\t.then(() => {\n\t\t\tfetch('/?loginOp=logout')\n\t\t\t\t.then((res) => res)\n\t\t\t\t.then(goToLogin);\n\t\t});\n","/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\nimport React, { FC, useCallback, useMemo } from 'react';\nimport { Container, Tooltip, IconButton, Dropdown } from '@zextras/carbonio-design-system';\nimport { map } from 'lodash';\nimport { useTranslation } from 'react-i18next';\nimport { useUtilityBarStore } from './store';\nimport { SHELL_APP_ID, UtilityView } from '../../types';\nimport { useUtilityViews } from './utils';\nimport { logout } from '../network/logout';\nimport { useContextBridge } from '../store/context-bridge';\nimport { useAccountStore } from '../store/account';\n\nconst UtilityBarItem: FC<{ view: UtilityView }> = ({ view }) => {\n\tconst { mode, setMode, current, setCurrent } = useUtilityBarStore();\n\tconst onClick = useCallback((): void => {\n\t\t// eslint-disable-next-line no-nested-ternary\n\t\tsetMode(current !== view.id ? 'open' : mode !== 'open' ? 'open' : 'closed');\n\t\tsetCurrent(view.id);\n\t}, [current, mode, setCurrent, setMode, view.id]);\n\tif (typeof view.button === 'string') {\n\t\treturn (\n\t\t\t<Tooltip label={view.label} placement=\"bottom-end\">\n\t\t\t\t<IconButton\n\t\t\t\t\ticon={view.button}\n\t\t\t\t\ticonColor={current === view.id ? 'primary' : 'text'}\n\t\t\t\t\tonClick={onClick}\n\t\t\t\t\tsize=\"large\"\n\t\t\t\t/>\n\t\t\t</Tooltip>\n\t\t);\n\t}\n\treturn <view.button mode={mode} setMode={setMode} />;\n};\n\nexport const ShellUtilityBar: FC = () => {\n\tconst views = useUtilityViews();\n\tconst [t] = useTranslation();\n\tconst accountItems = useMemo(\n\t\t() => [\n\t\t\t{\n\t\t\t\tid: 'feedback',\n\t\t\t\tlabel: t('label.feedback', 'Feedback'),\n\t\t\t\tclick: () =>\n\t\t\t\t\tuseContextBridge.getState().packageDependentFunctions?.addBoard(SHELL_APP_ID)(\n\t\t\t\t\t\t'/feedback/',\n\t\t\t\t\t\t{ title: t('label.feedback', 'Feedback') }\n\t\t\t\t\t),\n\t\t\t\ticon: 'MessageSquareOutline'\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'update',\n\t\t\t\tlabel: t('label.update_view', 'Update view'),\n\t\t\t\tclick: (): void => {\n\t\t\t\t\tuseAccountStore.getState().soapFetch(SHELL_APP_ID)<{ _jsns: string }, any>('NoOp', {\n\t\t\t\t\t\t_jsns: 'urn:zimbraMail'\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\ticon: 'Refresh'\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'docs',\n\t\t\t\tlabel: t('label.documentation', 'Documentation'),\n\t\t\t\t// TODO: Replace when the correct link is available\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-empty-function\n\t\t\t\tclick: (): void => {},\n\t\t\t\tdisabled: true,\n\t\t\t\ticon: 'InfoOutline'\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'logout',\n\t\t\t\tlabel: t('label.logout', 'Logout'),\n\t\t\t\tclick: logout,\n\t\t\t\ticon: 'LogOut'\n\t\t\t}\n\t\t],\n\t\t[t]\n\t);\n\treturn (\n\t\t<Container orientation=\"horizontal\" width=\"fit\">\n\t\t\t{map(views, (view) => (\n\t\t\t\t<UtilityBarItem view={view} key={view.id} />\n\t\t\t))}\n\t\t\t<Tooltip label={t('label.account_menu', 'Account menu')} placement=\"left-end\">\n\t\t\t\t<Dropdown items={accountItems}>\n\t\t\t\t\t<IconButton icon=\"PersonOutline\" size=\"large\" />\n\t\t\t\t</Dropdown>\n\t\t\t</Tooltip>\n\t\t</Container>\n\t);\n};\n","/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\nimport React, { FC, useEffect, useMemo } from 'react';\nimport { Container, Responsive } from '@zextras/carbonio-design-system';\nimport { find } from 'lodash';\nimport styled from 'styled-components';\nimport AppContextProvider from '../boot/app/app-context-provider';\nimport { useUtilityViews } from './utils';\nimport { useUtilityBarStore } from './store';\n\nconst Panel = styled(Container)`\n\twidth: ${({ mode }): number => (mode !== 'closed' ? 256 : 48)}px;\n\tborder-radius: 0;\n\theight: 100%;\n\tposition: absolute;\n\tright: 0;\n\ttop: 0;\n\tbottom: 0;\n\ttransition: width 0.2s;\n\tborder-left: 1px solid ${({ theme }): string => theme.palette.gray2.regular};\n`;\nconst Spacer = styled.div<{ mode: string }>`\n\tposition: relative;\n\twidth: ${({ mode }): number => (mode === 'open' ? 256 : 48)}px;\n\theight: 100%;\n\ttransition: width 0.2s;\n`;\n\nexport const ShellUtilityPanel: FC = () => {\n\tconst { mode, setMode, current, setCurrent } = useUtilityBarStore();\n\tconst views = useUtilityViews();\n\tconst currentPanel = useMemo(() => find(views, (view) => view.id === current), [current, views]);\n\tuseEffect(() => {\n\t\tif (!(current && currentPanel)) {\n\t\t\tsetCurrent(views[0]?.id);\n\t\t}\n\t}, [current, currentPanel, setCurrent, views]);\n\treturn currentPanel ? (\n\t\t<Responsive mode=\"desktop\">\n\t\t\t<Spacer mode={mode}>\n\t\t\t\t<Panel mode={mode} mainAlignment=\"flex-start\">\n\t\t\t\t\t{currentPanel && (\n\t\t\t\t\t\t<AppContextProvider pkg={currentPanel?.id}>\n\t\t\t\t\t\t\t<currentPanel.component mode={mode} setMode={setMode} />\n\t\t\t\t\t\t</AppContextProvider>\n\t\t\t\t\t)}\n\t\t\t\t</Panel>\n\t\t\t</Spacer>\n\t\t</Responsive>\n\t) : null;\n};\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { FC, useCallback, useMemo } from 'react';\nimport { filter, findIndex, map, sortBy } from 'lodash';\nimport styled from 'styled-components';\nimport { Route, Switch } from 'react-router-dom';\nimport { Container } from '@zextras/carbonio-design-system';\nimport AppContextProvider from '../boot/app/app-context-provider';\nimport { Collapser } from './collapser';\nimport { useAppStore } from '../store/app';\nimport { AppRoute } from '../../types';\nimport { useUtilityBarStore } from '../utility-bar';\nimport { checkRoute } from '../utility-bar/utils';\n\nconst SidebarContainer = styled(Container)`\n\tmin-width: 48px;\n\tmax-width: 314px;\n\twidth: ${({ sidebarIsOpen }): number => (sidebarIsOpen ? 314 : 48)}px;\n\ttransition: width 300ms;\n\toverflow-x: hidden;\n`;\n\ntype SecondaryBarProps = {\n\tactiveRoute: AppRoute;\n};\n\nconst ShellSecondaryBar: FC<SecondaryBarProps> = ({ activeRoute }) => {\n\tconst isOpen = useUtilityBarStore((s) => s.secondaryBarState);\n\tconst setIsOpen = useUtilityBarStore((s) => s.setSecondaryBarState);\n\tconst onCollapserClick = useCallback(() => setIsOpen(!isOpen), [isOpen, setIsOpen]);\n\tconst secondaryBarViews = useAppStore((s) => s.views.secondaryBar);\n\tconst secondaryBarAccessoryViews = useAppStore((s) => s.views.secondaryBarAccessories);\n\tconst accessories = useMemo(\n\t\t() =>\n\t\t\tsortBy(\n\t\t\t\tfilter(secondaryBarAccessoryViews, (v) => checkRoute(v, activeRoute)),\n\t\t\t\t'position'\n\t\t\t),\n\t\t[activeRoute, secondaryBarAccessoryViews]\n\t);\n\tconst disabled = useMemo(\n\t\t() => findIndex(secondaryBarViews, (view) => view.id === activeRoute?.id) < 0,\n\t\t[activeRoute?.id, secondaryBarViews]\n\t);\n\treturn disabled ? null : (\n\t\t<>\n\t\t\t<SidebarContainer\n\t\t\t\tsidebarIsOpen={isOpen}\n\t\t\t\trole=\"menu\"\n\t\t\t\theight=\"fill\"\n\t\t\t\torientation=\"vertical\"\n\t\t\t\tmainAlignment=\"space-between\"\n\t\t\t\tonClick={isOpen ? undefined : onCollapserClick}\n\t\t\t\tstyle={{\n\t\t\t\t\tmaxHeight: 'calc(100vh - 48px)',\n\t\t\t\t\toverflowY: 'auto'\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<Container mainAlignment=\"flex-start\">\n\t\t\t\t\t<Switch>\n\t\t\t\t\t\t{map(secondaryBarViews, (view) => (\n\t\t\t\t\t\t\t<Route key={view.id} path={`/${view.route}`}>\n\t\t\t\t\t\t\t\t<AppContextProvider pkg={view.app}>\n\t\t\t\t\t\t\t\t\t<view.component expanded={isOpen} />\n\t\t\t\t\t\t\t\t</AppContextProvider>\n\t\t\t\t\t\t\t</Route>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</Switch>\n\t\t\t\t</Container>\n\t\t\t\t<Container mainAlignment=\"flex-end\" height=\"fit\">\n\t\t\t\t\t{accessories.map((view) => (\n\t\t\t\t\t\t<AppContextProvider key={view.id} pkg={view.app}>\n\t\t\t\t\t\t\t<view.component expanded={isOpen} />\n\t\t\t\t\t\t</AppContextProvider>\n\t\t\t\t\t))}\n\t\t\t\t</Container>\n\t\t\t</SidebarContainer>\n\t\t\t<Collapser onClick={onCollapserClick} open={isOpen} />\n\t\t</>\n\t);\n};\n\nexport default ShellSecondaryBar;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React from 'react';\nimport { reduce, find } from 'lodash';\nimport { Accordion, Collapse, Container, Padding } from '@zextras/carbonio-design-system';\nimport { useHistory } from 'react-router-dom';\nimport { useAppStore } from '../store/app';\nimport AppContextProvider from '../boot/app/app-context-provider';\n\nconst SidebarComponent = ({ item }) =>\n\titem.secondary ? (\n\t\t<AppContextProvider pkg={item.id}>\n\t\t\t<item.secondary />\n\t\t</AppContextProvider>\n\t) : null;\n\nexport default function ShellMobileNav({ mobileNavIsOpen, menuTree }) {\n\tconst history = useHistory();\n\tconst views = useAppStore((s) =>\n\t\treduce(\n\t\t\ts.routes,\n\t\t\t(acc, val) => {\n\t\t\t\tconst primary = find(s.views.primaryBar, (item) => item.id === val.id);\n\t\t\t\tconst secondary = find(s.views.secondaryBar, (item) => item.id === val.id);\n\t\t\t\tif (primary && primary.visible) {\n\t\t\t\t\tacc.push({\n\t\t\t\t\t\tid: `${val.app}-wrap`,\n\t\t\t\t\t\tlabel: primary.label,\n\t\t\t\t\t\ticon: typeof primary.component === 'string' ? primary.component : 'Cube',\n\t\t\t\t\t\tonClick: () => history.push(`/${val.route}`),\n\t\t\t\t\t\titems: secondary\n\t\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: secondary.id,\n\t\t\t\t\t\t\t\t\t\tlabel: secondary.id,\n\t\t\t\t\t\t\t\t\t\ticon: 'Cube',\n\t\t\t\t\t\t\t\t\t\tsecondary: secondary.component,\n\t\t\t\t\t\t\t\t\t\tCustomComponent: SidebarComponent\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t ]\n\t\t\t\t\t\t\t: []\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn acc;\n\t\t\t},\n\t\t\t[]\n\t\t)\n\t);\n\n\treturn (\n\t\t<Container\n\t\t\theight=\"fill\"\n\t\t\twidth=\"fit\"\n\t\t\tbackground=\"gray5\"\n\t\t\tstyle={{\n\t\t\t\tposition: 'absolute',\n\t\t\t\tleft: 0,\n\t\t\t\ttop: 0,\n\t\t\t\tzIndex: 3\n\t\t\t}}\n\t\t>\n\t\t\t<Collapse orientation=\"horizontal\" open={mobileNavIsOpen} crossSize=\"100%\">\n\t\t\t\t<Container\n\t\t\t\t\twidth={256 + 48 + 12}\n\t\t\t\t\theight=\"fill\"\n\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\tmainAlignment=\"space-between\"\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tmaxHeight: 'calc(100vh - 48px)',\n\t\t\t\t\t\toverflowY: 'auto'\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<Container width=\"fill\" height=\"fit\" orientation=\"vertical\" mainAlignment=\"space-between\">\n\t\t\t\t\t\t<Accordion items={views} />\n\t\t\t\t\t</Container>\n\t\t\t\t\t<Container width=\"fill\" height=\"fit\" orientation=\"vertical\" mainAlignment=\"flex-end\">\n\t\t\t\t\t\t<Accordion items={menuTree} />\n\t\t\t\t\t\t<Padding vertical=\"medium\">{/* <UserQuota mobileView={true}/> */}</Padding>\n\t\t\t\t\t</Container>\n\t\t\t\t</Container>\n\t\t\t</Collapse>\n\t\t</Container>\n\t);\n}\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React from 'react';\nimport { Container, Responsive } from '@zextras/carbonio-design-system';\nimport ShellPrimaryBar from './shell-primary-bar';\nimport ShellSecondaryBar from './shell-secondary-bar';\nimport ShellMobileNav from './shell-mobile-nav';\n\nexport default function ShellNavigationBar({ mobileNavIsOpen, activeRoute }) {\n\treturn (\n\t\t<Container\n\t\t\torientation=\"horizontal\"\n\t\t\tbackground=\"gray5\"\n\t\t\twidth=\"fit\"\n\t\t\theight=\"fill\"\n\t\t\tmainAlignment=\"flex-start\"\n\t\t\tcrossAlignment=\"flex-start\"\n\t\t>\n\t\t\t<Responsive mode=\"desktop\">\n\t\t\t\t<ShellPrimaryBar activeRoute={activeRoute} />\n\t\t\t\t<ShellSecondaryBar activeRoute={activeRoute} />\n\t\t\t</Responsive>\n\t\t\t<Responsive mode=\"mobile\">\n\t\t\t\t<ShellMobileNav mobileNavIsOpen={mobileNavIsOpen} activeRoute={activeRoute} />\n\t\t\t</Responsive>\n\t\t</Container>\n\t);\n}\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useCallback, useContext } from 'react';\nimport styled from 'styled-components';\nimport { useTranslation } from 'react-i18next';\nimport {\n\tIconButton,\n\tText,\n\tRow,\n\tPadding,\n\tIcon,\n\tContainer,\n\tTooltip\n} from '@zextras/carbonio-design-system';\nimport { BoardValueContext, BoardSetterContext } from './board-context';\n\nconst TabContainer = styled(Row)`\n\tcursor: pointer;\n\theight: 28px;\n\twidth: fit-content;\n\tuser-select: none;\n\tbackground-color: ${({ theme, active }) =>\n\t\tactive ? theme.palette.gray3.regular : theme.palette.gray5.regular};\n\tborder-radius: 2px;\n\tpadding: 2px 4px;\n`;\n\nconst VerticalDivider = styled(Container)`\n\twidth: 1px;\n\theight: 100%;\n\tbackground: ${({ theme }) => theme.palette.gray3.regular};\n\tmargin: ${({ theme }) => theme.sizes.padding.extrasmall};\n`;\n\nexport default function AppBoardTab({ idx, icon, iconSize }) {\n\tconst { boards, currentBoard } = useContext(BoardValueContext);\n\tconst { removeBoard, setCurrentBoard } = useContext(BoardSetterContext);\n\tconst [t] = useTranslation();\n\tconst onClick = useCallback(() => setCurrentBoard(idx), [idx, setCurrentBoard]);\n\tconst onRemove = useCallback(\n\t\t(ev) => {\n\t\t\tev.stopPropagation();\n\t\t\tremoveBoard(idx);\n\t\t},\n\t\t[idx, removeBoard]\n\t);\n\n\treturn (\n\t\t<Container orientation=\"row\" width=\"fit\" maxWidth=\"100%\">\n\t\t\t{currentBoard !== idx ? <VerticalDivider /> : null}\n\t\t\t<TabContainer active={currentBoard === idx} padding={{ all: 'extrasmall' }}>\n\t\t\t\t<Row\n\t\t\t\t\theight=\"100%\"\n\t\t\t\t\tonClick={onClick}\n\t\t\t\t\ttakeAvailableSpace\n\t\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t\t\twrap=\"nowrap\"\n\t\t\t\t>\n\t\t\t\t\t<Icon icon={icon} size={iconSize} />\n\t\t\t\t\t<Padding right=\"small\" />\n\t\t\t\t\t<Tooltip label={boards[idx].title} placement=\"top\" maxWidth=\"700px\">\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\tsize=\"medium\"\n\t\t\t\t\t\t\tweight=\"regular\"\n\t\t\t\t\t\t\tcolor={currentBoard === idx ? 'text' : 'secondary'}\n\t\t\t\t\t\t\tpadding={{ right: 'small' }}\n\t\t\t\t\t\t\toverflow=\"ellipsis\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{boards[idx].title}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t</Row>\n\t\t\t\t<Padding right=\"small\" />\n\t\t\t\t<Tooltip label={t('board.close_tab', 'Close Tab')} placement=\"top\">\n\t\t\t\t\t<IconButton\n\t\t\t\t\t\ticonColor=\"secondary\"\n\t\t\t\t\t\ticon=\"Close\"\n\t\t\t\t\t\tonClick={onRemove}\n\t\t\t\t\t\tstyle={{ padding: '2px', width: '24px', height: '24px' }}\n\t\t\t\t\t/>\n\t\t\t\t</Tooltip>\n\t\t\t</TabContainer>\n\t\t</Container>\n\t);\n}\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useContext, useEffect, useMemo, useState } from 'react';\nimport { Route, Router, useHistory } from 'react-router-dom';\nimport styled from 'styled-components';\nimport { map } from 'lodash';\nimport { createMemoryHistory } from 'history';\nimport AppContextProvider from '../../boot/app/app-context-provider';\nimport { BoardValueContext, BoardSetterContext } from './board-context';\nimport { useAppStore } from '../../store/app';\n\nconst BoardContainer = styled.div`\n\tdisplay: ${(props) => (props.show ? 'block' : 'none')};\n\theight: 100%;\n\twidth: 100%;\n\toverflow-y: auto;\n`;\n\nexport default function AppBoard({ idx }) {\n\tconst { boards, currentBoard } = useContext(BoardValueContext);\n\tconst [history] = useState(() => createMemoryHistory({ initialEntries: [boards[idx].url] }));\n\tconst { updateBoard } = useContext(BoardSetterContext);\n\tconst boardViews = useAppStore((s) => s.views.board);\n\tconst windowHistory = useHistory();\n\tconst routes = useMemo(\n\t\t() =>\n\t\t\tmap(boardViews, (view) => (\n\t\t\t\t<Route key={view.id} path={`/${view.route}`}>\n\t\t\t\t\t<AppContextProvider key={view.id} pkg={view.app}>\n\t\t\t\t\t\t<view.component windowHistory={windowHistory} />\n\t\t\t\t\t</AppContextProvider>\n\t\t\t\t</Route>\n\t\t\t)),\n\t\t[boardViews, windowHistory]\n\t);\n\n\tuseEffect(() => {\n\t\tconst unlisten = history.listen(({ location }) => {\n\t\t\tif (`${location.pathname}${location.search}${location.hash}` !== boards[idx].url) {\n\t\t\t\tupdateBoard(idx, `${location.pathname}${location.search}${location.hash}`);\n\t\t\t}\n\t\t});\n\t\treturn () => {\n\t\t\tunlisten();\n\t\t};\n\t}, [boards, history, idx, updateBoard]);\n\n\tuseEffect(() => {\n\t\tconst l = history.location;\n\t\tif (`${l.pathname}${l.search}${l.hash}` !== boards[idx].url) {\n\t\t\thistory.push(boards[idx].url);\n\t\t}\n\t}, [idx, boards, history]);\n\n\treturn (\n\t\t<BoardContainer show={currentBoard === idx}>\n\t\t\t<Router history={history}>{routes}</Router>\n\t\t</BoardContainer>\n\t);\n}\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useContext, useRef, useMemo, useLayoutEffect } from 'react';\nimport styled, { css } from 'styled-components';\nimport { reduce, map, slice } from 'lodash';\nimport {\n\tContainer,\n\tDivider,\n\tIconButton,\n\tRow,\n\tPadding,\n\tDropdown,\n\tButton,\n\tuseHiddenCount,\n\tTooltip\n} from '@zextras/carbonio-design-system';\nimport { useTranslation } from 'react-i18next';\nimport AppBoardTab from './app-board-tab';\nimport AppBoard from './app-board';\nimport { BoardSetterContext, BoardValueContext } from './board-context';\nimport { useApps } from '../../store/app';\n\nfunction TabsList({ tabs, currentBoard, setCurrentBoard, largeView, t }) {\n\tconst apps = useApps();\n\tconst tabContainerRef = useRef();\n\tconst [hiddenTabsCount, recalculateHiddenTabs] = useHiddenCount(tabContainerRef, largeView);\n\n\tuseLayoutEffect(() => {\n\t\trecalculateHiddenTabs();\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [tabs, largeView, tabContainerRef.current]);\n\n\treturn (\n\t\t<Row wrap=\"nowrap\" height=\"100%\" mainAlignment=\"flex-start\" takeAvailableSpace>\n\t\t\t<Row\n\t\t\t\tref={tabContainerRef}\n\t\t\t\theight=\"48px\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t\tstyle={{ overflow: 'hidden' }}\n\t\t\t\twidth=\"calc(100% - 8px)\"\n\t\t\t>\n\t\t\t\t{tabs &&\n\t\t\t\t\tmap(tabs, (tab) => (\n\t\t\t\t\t\t<AppBoardTab\n\t\t\t\t\t\t\tkey={tab.key}\n\t\t\t\t\t\t\tidx={tab.key}\n\t\t\t\t\t\t\ticon={apps?.[tab.app]?.icon ?? 'Edit2Outline'}\n\t\t\t\t\t\t\ticonSize=\"large\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t</Row>\n\t\t\t{hiddenTabsCount > 0 && (\n\t\t\t\t<>\n\t\t\t\t\t<Container width=\"fit\" padding={{ horizontal: 'extrasmall', vertical: 'extrasmall' }}>\n\t\t\t\t\t\t<Container width=\"1px\" heigth=\"fill\" background=\"gray3\" />\n\t\t\t\t\t</Container>\n\t\t\t\t\t<Tooltip label={t('board.show_tabs', 'Show other tabs')} placement=\"top\">\n\t\t\t\t\t\t<Dropdown\n\t\t\t\t\t\t\twidth=\"fit\"\n\t\t\t\t\t\t\tstyle={{ flexGrow: '1' }}\n\t\t\t\t\t\t\titems={map(slice(tabs, -hiddenTabsCount), (tab) => ({\n\t\t\t\t\t\t\t\tid: tab.key,\n\t\t\t\t\t\t\t\tlabel: tab.title,\n\t\t\t\t\t\t\t\ticon: tab.icon,\n\t\t\t\t\t\t\t\tclick: () => setCurrentBoard(tab.key),\n\t\t\t\t\t\t\t\tselected: tab.key === currentBoard\n\t\t\t\t\t\t\t}))}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\ttype=\"ghost\"\n\t\t\t\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\t\t\t\tlabel={`+${hiddenTabsCount}`}\n\t\t\t\t\t\t\t\tpadding={{ all: 'extrasmall' }}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Dropdown>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t</>\n\t\t\t)}\n\t\t</Row>\n\t);\n}\n\nconst BoardContainer = styled.div`\n\tposition: fixed;\n\ttop: 60px;\n\tbottom: 0;\n\tleft: 48px;\n\tright: 0;\n\tbackground-color: rgba(0, 0, 0, 0);\n\tpointer-events: none;\n\tz-index: 10;\n\t${({ largeView }) =>\n\t\tlargeView &&\n\t\tcss`\n\t\t\tbackground-color: rgba(0, 0, 0, 0.5);\n\t\t\tpointer-events: auto;\n\t\t`}\n\t${({ minimized }) =>\n\t\tminimized &&\n\t\tcss`\n\t\t\tdisplay: none;\n\t\t`}\n`;\nconst Board = styled(Container)`\n\tz-index: 5;\n\tposition: absolute;\n\tleft: 24px;\n\tbottom: 0;\n\twidth: 700px;\n\theight: 70vh;\n\tmin-height: 400px;\n\tbox-shadow: 0 2px 5px 0 rgba(125, 125, 125, 0.5);\n\tpointer-events: auto;\n\t${({ largeView }) =>\n\t\tlargeView &&\n\t\tcss`\n\t\t\theight: calc(100% - 24px);\n\t\t\twidth: calc(100% - 24px * 2);\n\t\t\tmin-height: auto;\n\t\t`}\n`;\nconst BoardHeader = styled(Row)``;\nconst BoardDetailContainer = styled(Row)`\n\tmin-height: 0;\n`;\nconst BackButton = styled(IconButton)``;\nconst Actions = styled(Row)``;\n\nexport default function AppBoardWindow() {\n\tconst [t] = useTranslation();\n\tconst { boards: shellBoards, currentBoard, largeView, minimized } = useContext(BoardValueContext);\n\tconst { toggleLargeView, toggleMinimized, removeAllBoards, setCurrentBoard } =\n\t\tuseContext(BoardSetterContext);\n\n\tconst [tabs, boards] = useMemo(\n\t\t() =>\n\t\t\treduce(\n\t\t\t\tshellBoards,\n\t\t\t\t(acc, board, boardId) => {\n\t\t\t\t\tconst [_tabs, _boards] = acc;\n\t\t\t\t\t_tabs.push({ key: boardId, ...board });\n\t\t\t\t\t_boards.push(<AppBoard key={boardId} idx={boardId} />);\n\t\t\t\t\treturn acc;\n\t\t\t\t},\n\t\t\t\t[[], []]\n\t\t\t),\n\t\t[shellBoards]\n\t);\n\tif (!tabs.length) return null;\n\treturn (\n\t\t<BoardContainer largeView={largeView} minimized={minimized}>\n\t\t\t<Board background=\"gray6\" crossAlignment=\"unset\" largeView={largeView}>\n\t\t\t\t<BoardHeader background=\"gray5\">\n\t\t\t\t\t<Padding all=\"extrasmall\">\n\t\t\t\t\t\t<Tooltip label={t('board.hide', 'Hide board')} placement=\"top\">\n\t\t\t\t\t\t\t<BackButton icon=\"BoardCollapseOutline\" onClick={toggleMinimized} />\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t</Padding>\n\t\t\t\t\t<TabsList\n\t\t\t\t\t\ttabs={tabs}\n\t\t\t\t\t\tlargeView={largeView}\n\t\t\t\t\t\tcurrentBoard={currentBoard}\n\t\t\t\t\t\tsetCurrentBoard={setCurrentBoard}\n\t\t\t\t\t\tt={t}\n\t\t\t\t\t/>\n\t\t\t\t\t<Actions padding={{ all: 'extrasmall' }}>\n\t\t\t\t\t\t{boards[currentBoard]?.context?.onReturnToApp && (\n\t\t\t\t\t\t\t<Padding right=\"extrasmall\">\n\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\ticon={'DiagonalArrowRightUp'}\n\t\t\t\t\t\t\t\t\tonClick={boards[currentBoard]?.context?.onReturnToApp}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</Padding>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{/* <Padding right=\"extrasmall\">\n\t\t\t\t\t\t\t<Tooltip label={t('board.open_app', 'Open in app')} placement=\"top\">\n\t\t\t\t\t\t\t\t<IconButton icon=\"DiagonalArrowRightUpOutline\" onClick={toggleLargeView} />\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t</Padding> */}\n\t\t\t\t\t\t<Padding right=\"extrasmall\">\n\t\t\t\t\t\t\t<Tooltip\n\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\tlargeView\n\t\t\t\t\t\t\t\t\t\t? t('board.reduce', 'Reduce board')\n\t\t\t\t\t\t\t\t\t\t: t('board.enlarge', 'Enlarge board')\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tplacement=\"top\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\ticon={largeView ? 'CollapseOutline' : 'ExpandOutline'}\n\t\t\t\t\t\t\t\t\tonClick={toggleLargeView}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t</Padding>\n\t\t\t\t\t\t<Tooltip label={t('board.close_tabs', 'Close all your tabs')} placement=\"top\">\n\t\t\t\t\t\t\t<IconButton icon=\"CloseOutline\" onClick={removeAllBoards} />\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t</Actions>\n\t\t\t\t</BoardHeader>\n\t\t\t\t<Divider style={{ height: '2px' }} />\n\t\t\t\t<BoardDetailContainer takeAvailableSpace>{boards}</BoardDetailContainer>\n\t\t\t</Board>\n\t\t</BoardContainer>\n\t);\n}\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useEffect, useState, useContext } from 'react';\nimport { Row, Responsive, ModalManager, SnackbarManager } from '@zextras/carbonio-design-system';\nimport styled from 'styled-components';\nimport { find } from 'lodash';\nimport AppViewContainer from './app-view-container';\nimport ShellContextProvider from './shell-context-provider';\nimport ShellHeader from './shell-header';\nimport ShellNavigationBar from './shell-navigation-bar';\nimport AppBoardWindow from './boards/app-board-window';\nimport { ThemeCallbacksContext } from '../boot/theme-provider';\nimport { useUserSettings } from '../store/account';\nimport { ShellUtilityBar, ShellUtilityPanel } from '../utility-bar';\nimport { useCurrentRoute } from '../history/hooks';\n\nconst Background = styled.div`\n\tbackground: ${({ theme }) => theme.palette.gray6.regular};\n\tdisplay: flex;\n\tflex-direction: column;\n\theight: 100%;\n\tmin-height: 100%;\n\tmax-height: 100%;\n\twidth: 100%;\n\tmin-width: 100%;\n\tmax-width: 100%;\n`;\n\nfunction DarkReaderListener() {\n\tconst { setDarkReaderState } = useContext(ThemeCallbacksContext);\n\tconst settings = useUserSettings();\n\tuseEffect(() => {\n\t\tconst darkreaderState =\n\t\t\tfind(settings?.props ?? [], ['name', 'zappDarkreaderMode'])?._content ?? 'auto';\n\t\tsetDarkReaderState(darkreaderState);\n\t}, [setDarkReaderState, settings]);\n\treturn null;\n}\n\nexport function Shell() {\n\tconst [mobileNavOpen, setMobileNavOpen] = useState(false);\n\tconst activeRoute = useCurrentRoute();\n\n\treturn (\n\t\t<Background>\n\t\t\t<DarkReaderListener />\n\t\t\t{/* <MainAppRerouter /> */}\n\t\t\t<ShellHeader\n\t\t\t\tactiveRoute={activeRoute}\n\t\t\t\tmobileNavIsOpen={mobileNavOpen}\n\t\t\t\tonMobileMenuClick={() => setMobileNavOpen(!mobileNavOpen)}\n\t\t\t>\n\t\t\t\t<ShellUtilityBar />\n\t\t\t</ShellHeader>\n\t\t\t<Row crossAlignment=\"unset\" style={{ position: 'relative', flexGrow: '1' }}>\n\t\t\t\t<ShellNavigationBar activeRoute={activeRoute} mobileNavIsOpen={mobileNavOpen} />\n\t\t\t\t<AppViewContainer activeRoute={activeRoute} />\n\t\t\t\t<ShellUtilityPanel />\n\t\t\t</Row>\n\t\t\t<Responsive mode=\"desktop\">\n\t\t\t\t<AppBoardWindow />\n\t\t\t</Responsive>\n\t\t</Background>\n\t);\n}\n\nexport default function ShellView() {\n\treturn (\n\t\t<ShellContextProvider>\n\t\t\t<ModalManager>\n\t\t\t\t<SnackbarManager>\n\t\t\t\t\t<Shell />\n\t\t\t\t</SnackbarManager>\n\t\t\t</ModalManager>\n\t\t</ShellContextProvider>\n\t);\n}\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { FC, useContext } from 'react';\nimport { BrowserRouter, useHistory } from 'react-router-dom';\nimport { SnackbarManagerContext, ModalManagerContext } from '@zextras/carbonio-design-system';\nimport AppLoaderMounter from './app/app-loader-mounter';\nimport { useBridge } from '../store/context-bridge';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport ShellView from '../shell/shell-view';\nimport { BASENAME } from '../constants';\n\nconst ContextBridge: FC = () => {\n\tconst history = useHistory();\n\t// eslint-disable-next-line @typescript-eslint/ban-types\n\tconst createSnackbar = useContext(SnackbarManagerContext) as Function;\n\t// eslint-disable-next-line @typescript-eslint/ban-types\n\tconst createModal = useContext(ModalManagerContext) as Function;\n\tuseBridge({\n\t\tfunctions: {\n\t\t\tgetHistory: () => history,\n\t\t\tcreateSnackbar,\n\t\t\tcreateModal\n\t\t}\n\t});\n\treturn null;\n};\n\nconst BootstrapperRouter: FC = () => (\n\t<BrowserRouter basename={BASENAME}>\n\t\t<ContextBridge />\n\t\t<AppLoaderMounter />\n\t\t<ShellView />\n\t</BrowserRouter>\n);\n\nexport default BootstrapperRouter;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useCallback, useMemo, useReducer } from 'react';\nimport { pickBy, trim } from 'lodash';\nimport { useTranslation } from 'react-i18next';\nimport { BoardValueContext, BoardSetterContext } from './board-context';\nimport { useBridge } from '../../store/context-bridge';\n\nfunction getRandomKey() {\n\treturn String(Date.now() * (Math.floor(Math.random() * 1000) + 1));\n}\nconst reducer = (state, action) => {\n\tswitch (action.type) {\n\t\tcase 'ADD_BOARD': {\n\t\t\tconst returnValue = {\n\t\t\t\t...state,\n\t\t\t\tboards: {\n\t\t\t\t\t[action.payload.boardKey]: {\n\t\t\t\t\t\turl: action.payload.url,\n\t\t\t\t\t\ttitle: action.payload.title,\n\t\t\t\t\t\tcontext: action.payload.context,\n\t\t\t\t\t\tapp: action.payload.app\n\t\t\t\t\t},\n\t\t\t\t\t...state.boards\n\t\t\t\t},\n\t\t\t\tcurrentBoard: action.payload.boardKey,\n\t\t\t\tminimized: false\n\t\t\t};\n\t\t\treturn returnValue;\n\t\t}\n\t\tcase 'REMOVE_BOARD': {\n\t\t\tlet newCurrentBoard = state.currentBoard;\n\t\t\tconst boardKeys = Object.keys(state.boards);\n\t\t\tconst boardToRemove = (action.payload && action.payload.key) || state.currentBoard;\n\t\t\tif (state.currentBoard === boardToRemove) {\n\t\t\t\tconst removedBoardIndex = boardKeys.indexOf(boardToRemove);\n\t\t\t\tnewCurrentBoard = boardKeys[removedBoardIndex > 0 ? removedBoardIndex - 1 : 1];\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tboards: pickBy(state.boards, (board, key) => key !== boardToRemove),\n\t\t\t\tlargeView: boardKeys.length === 1 ? false : state.largeView,\n\t\t\t\tcurrentBoard: newCurrentBoard\n\t\t\t};\n\t\t}\n\t\tcase 'REMOVE_ALL_BOARDS': {\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tboards: {},\n\t\t\t\tlargeView: false\n\t\t\t};\n\t\t}\n\t\tcase 'UPDATE_BOARD': {\n\t\t\tif (!state.boards[action.payload.key]) return state;\n\t\t\tconst updatedBoards = { ...state.boards };\n\t\t\tif (action.payload.url) updatedBoards[action.payload.key].url = action.payload.url;\n\t\t\tif (action.payload.title) updatedBoards[action.payload.key].title = action.payload.title;\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tboards: updatedBoards\n\t\t\t};\n\t\t}\n\t\tcase 'UPDATE_CURRENT_BOARD': {\n\t\t\tconst updatedBoards = { ...state.boards };\n\t\t\tif (action.payload.url) updatedBoards[state.currentBoard].url = action.payload.url;\n\t\t\tif (action.payload.title) updatedBoards[state.currentBoard].title = action.payload.title;\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tboards: updatedBoards\n\t\t\t};\n\t\t}\n\t\tcase 'SET_CURRENT_BOARD': {\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tcurrentBoard: action.payload.key\n\t\t\t};\n\t\t}\n\t\tcase 'TOGGLE_LARGE_VIEW': {\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tlargeView: !state.largeView\n\t\t\t};\n\t\t}\n\t\tcase 'TOGGLE_MINIMIZED': {\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tminimized: !state.minimized\n\t\t\t};\n\t\t}\n\t\tdefault:\n\t\t\tconsole.warn('Unrecognized action type in BoardContext');\n\t\t\treturn state;\n\t}\n};\n\nexport default function BoardContextProvider({ children }) {\n\tconst [t] = useTranslation();\n\tconst [boardState, dispatch] = useReducer(reducer, {\n\t\tboards: {},\n\t\tcurrentBoard: 0,\n\t\tlargeView: false,\n\t\tminimized: false\n\t});\n\n\tconst addBoard = useCallback(\n\t\t(url, context, app) => {\n\t\t\tconst boardKey = getRandomKey();\n\t\t\tdispatch({\n\t\t\t\ttype: 'ADD_BOARD',\n\t\t\t\tpayload: {\n\t\t\t\t\turl: `/${trim(url, '/')}`,\n\t\t\t\t\ttitle: context?.title ?? t('new_tab', 'New Tab'),\n\t\t\t\t\tcontext,\n\t\t\t\t\tboardKey,\n\t\t\t\t\tapp\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn boardKey;\n\t\t},\n\t\t[t]\n\t);\n\tconst removeBoard = useCallback((key) => {\n\t\tdispatch({ type: 'REMOVE_BOARD', payload: { key } });\n\t}, []);\n\tconst removeCurrentBoard = useCallback(() => {\n\t\tdispatch({ type: 'REMOVE_BOARD' });\n\t}, []);\n\tconst removeAllBoards = useCallback(() => {\n\t\tdispatch({ type: 'REMOVE_ALL_BOARDS' });\n\t}, []);\n\tconst updateBoard = useCallback((key, url, title) => {\n\t\tdispatch({ type: 'UPDATE_BOARD', payload: { key, url, title } });\n\t}, []);\n\tconst updateCurrentBoard = useCallback((url, title) => {\n\t\tdispatch({ type: 'UPDATE_CURRENT_BOARD', payload: { url, title } });\n\t}, []);\n\tconst setCurrentBoard = useCallback((key) => {\n\t\tdispatch({ type: 'SET_CURRENT_BOARD', payload: { key } });\n\t}, []);\n\tconst toggleLargeView = useCallback(() => {\n\t\tdispatch({ type: 'TOGGLE_LARGE_VIEW' });\n\t}, []);\n\tconst toggleMinimized = useCallback(() => {\n\t\tdispatch({ type: 'TOGGLE_MINIMIZED' });\n\t}, []);\n\n\tconst boardSetters = useMemo(\n\t\t() => ({\n\t\t\taddBoard,\n\t\t\tremoveBoard,\n\t\t\tremoveCurrentBoard,\n\t\t\tremoveAllBoards,\n\t\t\tupdateBoard,\n\t\t\tsetCurrentBoard,\n\t\t\ttoggleLargeView,\n\t\t\ttoggleMinimized,\n\t\t\tupdateCurrentBoard\n\t\t}),\n\t\t[\n\t\t\taddBoard,\n\t\t\tremoveAllBoards,\n\t\t\tremoveBoard,\n\t\t\tremoveCurrentBoard,\n\t\t\tsetCurrentBoard,\n\t\t\ttoggleLargeView,\n\t\t\ttoggleMinimized,\n\t\t\tupdateBoard,\n\t\t\tupdateCurrentBoard\n\t\t]\n\t);\n\n\tconst cbFunctions = useMemo(\n\t\t() => ({\n\t\t\tpackageDependentFunctions: {\n\t\t\t\taddBoard: (pkg) => (path, context) => {\n\t\t\t\t\taddBoard(path, context, context?.app ?? pkg);\n\t\t\t\t}\n\t\t\t},\n\t\t\tfunctions: {\n\t\t\t\tremoveBoard,\n\t\t\t\tremoveCurrentBoard,\n\t\t\t\tupdateBoard,\n\t\t\t\tsetCurrentBoard,\n\t\t\t\tupdateCurrentBoard,\n\t\t\t\ttoggleMinimizedBoard: toggleMinimized\n\t\t\t}\n\t\t}),\n\t\t[\n\t\t\taddBoard,\n\t\t\tremoveBoard,\n\t\t\tremoveCurrentBoard,\n\t\t\tsetCurrentBoard,\n\t\t\ttoggleMinimized,\n\t\t\tupdateBoard,\n\t\t\tupdateCurrentBoard\n\t\t]\n\t);\n\tuseBridge(cbFunctions);\n\n\treturn (\n\t\t<BoardValueContext.Provider value={boardState}>\n\t\t\t<BoardSetterContext.Provider value={boardSetters}>{children}</BoardSetterContext.Provider>\n\t\t</BoardValueContext.Provider>\n\t);\n}\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { FC } from 'react';\nimport { I18nextProvider } from 'react-i18next';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport BoardContextProvider from '../shell/boards/board-context-provider';\nimport { BootstrapperContext } from './bootstrapper-context';\nimport I18nFactory from '../i18n/i18n-factory';\nimport StoreFactory from '../redux/store-factory';\n\nconst BootstrapperContextProvider: FC<{ i18nFactory: I18nFactory; storeFactory: StoreFactory }> = ({\n\tchildren,\n\ti18nFactory,\n\tstoreFactory\n}) => (\n\t<BootstrapperContext.Provider\n\t\tvalue={{\n\t\t\tstoreFactory,\n\t\t\ti18nFactory\n\t\t}}\n\t>\n\t\t<I18nextProvider i18n={i18nFactory.getShellI18n()}>\n\t\t\t<BoardContextProvider>{children}</BoardContextProvider>\n\t\t</I18nextProvider>\n\t</BootstrapperContext.Provider>\n);\nexport default BootstrapperContextProvider;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport i18next, { i18n } from 'i18next';\nimport Backend from 'i18next-http-backend';\n// import LanguageDetector from 'i18next-browser-languagedetector';\nimport { dropRight, forEach } from 'lodash';\nimport { II18nFactory, CarbonioModule } from '../../types';\nimport { getShell } from '../store/app';\nimport { SHELL_APP_ID } from '../constants';\n\nexport default class I18nFactory implements II18nFactory {\n\t_cache: { [pkg: string]: i18n } = {};\n\n\tlocale = 'en';\n\n\tpublic getShellI18n(): i18n {\n\t\treturn this.getAppI18n(getShell() ?? { name: SHELL_APP_ID });\n\t}\n\n\tpublic setLocale(locale: string): void {\n\t\tif (this.locale !== locale) {\n\t\t\tthis.locale = locale;\n\t\t\tforEach(this._cache, (appI18n) => {\n\t\t\t\tappI18n.changeLanguage(locale);\n\t\t\t});\n\t\t}\n\t}\n\n\t// eslint-disable-next-line class-methods-use-this\n\tpublic getAppI18n(appPkgDescription: CarbonioModule | { name: string }): i18n {\n\t\tif (this._cache[appPkgDescription.name]) {\n\t\t\treturn this._cache[appPkgDescription.name];\n\t\t}\n\t\tconst newI18n = i18next.createInstance();\n\t\tconst baseI18nPath =\n\t\t\tappPkgDescription.name === SHELL_APP_ID\n\t\t\t\t? BASE_PATH\n\t\t\t\t: dropRight((appPkgDescription as CarbonioModule).js_entrypoint.split('/')).join('/');\n\t\tnewI18n\n\t\t\t// load translation using http -> see /public/locales (i.e. https://github.com/i18next/react-i18next/tree/master/example/react/public/locales)\n\t\t\t// learn more: https://github.com/i18next/i18next-http-backend\n\t\t\t.use(Backend)\n\t\t\t// detect user language\n\t\t\t// learn more: https://github.com/i18next/i18next-browser-languageDetector\n\t\t\t// .use(LanguageDetector)\n\t\t\t// init i18next\n\t\t\t// for all options read: https://www.i18next.com/overview/configuration-options\n\t\t\t.init({\n\t\t\t\tlng: this.locale,\n\t\t\t\tfallbackLng: 'en',\n\t\t\t\tdebug: false,\n\t\t\t\tinterpolation: {\n\t\t\t\t\tescapeValue: false // not needed for react as it escapes by default\n\t\t\t\t},\n\t\t\t\tmissingKeyHandler: (lng, ns, key, fallbackValue) => {\n\t\t\t\t\tconsole.warn(`Missing translation with key '${key}'`);\n\t\t\t\t},\n\t\t\t\tbackend: {\n\t\t\t\t\tloadPath: `${baseI18nPath}/i18n/{{lng}}.json`\n\t\t\t\t}\n\t\t\t});\n\t\tthis._cache[appPkgDescription.name] = newI18n;\n\t\treturn newI18n;\n\t}\n}\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport { Store, configureStore, createSlice } from '@reduxjs/toolkit';\nimport logger from 'redux-logger';\nimport { CarbonioModule } from '../../types';\n\nconst _uselessSlice = createSlice({\n\tname: '_useless',\n\tinitialState: {},\n\treducers: {}\n});\n\nexport default class StoreFactory {\n\tprivate _cache: { [pkgName: string]: Store<any> } = {};\n\n\tgetStoreForApp(pkg: CarbonioModule): Store<any> {\n\t\tif (this._cache[pkg.name]) return this._cache[pkg?.name];\n\t\tconst store = configureStore({\n\t\t\tdevTools: __CARBONIO_DEV__\n\t\t\t\t? {\n\t\t\t\t\t\tname: pkg.name\n\t\t\t\t }\n\t\t\t\t: false,\n\t\t\tmiddleware: __CARBONIO_DEV__\n\t\t\t\t? // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n\t\t\t\t (getDefaultMiddleware) => getDefaultMiddleware().concat(logger)\n\t\t\t\t: // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n\t\t\t\t (getDefaultMiddleware) => getDefaultMiddleware(),\n\t\t\treducer: {\n\t\t\t\t_useless: _uselessSlice.reducer\n\t\t\t}\n\t\t});\n\t\tthis._cache[pkg?.name] = store;\n\t\treturn store;\n\t}\n}\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport { map } from 'lodash';\nimport React, { FC, useCallback, useMemo } from 'react';\nimport { Redirect, Route, Switch } from 'react-router-dom';\nimport { Container, Chip, Padding, Divider, Text, Button } from '@zextras/carbonio-design-system';\nimport { useTranslation } from 'react-i18next';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport AppContextProvider from '../boot/app/app-context-provider';\nimport { useSearchStore } from './search-store';\nimport { SEARCH_APP_ID } from '../constants';\nimport { useAppStore } from '../store/app';\nimport { QueryChip } from '../../types';\n// import { RouteLeavingGuard } from '../ui-extras/nav-guard';\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nconst useQuery = (): [Array<QueryChip>, Function] =>\n\tuseSearchStore((s) => [s.query, s.updateQuery]);\n// eslint-disable-next-line @typescript-eslint/ban-types\nconst useDisableSearch = (): [boolean, Function] =>\n\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\tuseSearchStore((s) => [s.searchDisabled, s.setSearchDisabled]);\nconst ResultsHeader: FC<{ label: string }> = ({ label }) => {\n\tconst [t] = useTranslation();\n\tconst [query, updateQuery] = useQuery();\n\tconst [disabled, setDisabled] = useDisableSearch();\n\n\tconst resetQuery = useCallback(() => {\n\t\tupdateQuery([]);\n\t\tsetDisabled(false);\n\t}, [updateQuery, setDisabled]);\n\treturn (\n\t\t<>\n\t\t\t<Container\n\t\t\t\torientation=\"horizontal\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t\twidth=\"100%\"\n\t\t\t\tbackground=\"gray5\"\n\t\t\t\theight=\"fit\"\n\t\t\t\tminHeight=\"48px\"\n\t\t\t\tmaxHeight=\"120px\"\n\t\t\t\tstyle={{ overflow: 'hidden' }}\n\t\t\t\tpadding={{ horizontal: 'large', vertical: 'medium' }}\n\t\t\t>\n\t\t\t\t<Container width=\"85%\" orientation=\"horizontal\" wrap=\"wrap\" mainAlignment=\"flex-start\">\n\t\t\t\t\t<Text color=\"secondary\">{label}</Text>\n\n\t\t\t\t\t{map(query, (q, i) => (\n\t\t\t\t\t\t<Padding key={`${i}${q.label}`} all=\"extrasmall\">\n\t\t\t\t\t\t\t<Chip {...q} background=\"gray2\" />\n\t\t\t\t\t\t</Padding>\n\t\t\t\t\t))}\n\t\t\t\t</Container>\n\t\t\t\t{query?.length > 0 && (\n\t\t\t\t\t<Container width=\"15%\" mainAlignment=\"flex-start\" crossAlignment=\"flex-start\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tlabel={t('label.clear_search_query', 'CLEAR SEARCH')}\n\t\t\t\t\t\t\ticon=\"CloseOutline\"\n\t\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t\t\ttype=\"ghost\"\n\t\t\t\t\t\t\tonClick={resetQuery}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Container>\n\t\t\t\t)}\n\t\t\t</Container>\n\t\t\t<Divider color=\"gray3\" />\n\t\t</>\n\t);\n};\n\nexport const SearchAppView: FC = () => {\n\tconst searchViews = useAppStore((s) => s.views.search);\n\tconst routes = useMemo(\n\t\t() =>\n\t\t\tmap(searchViews, (view) => (\n\t\t\t\t<Route key={`/${view.route}`} path={`/${SEARCH_APP_ID}/${view.route}`}>\n\t\t\t\t\t<AppContextProvider pkg={view.app}>\n\t\t\t\t\t\t<view.component\n\t\t\t\t\t\t\tuseQuery={useQuery}\n\t\t\t\t\t\t\tResultsHeader={ResultsHeader}\n\t\t\t\t\t\t\tuseDisableSearch={useDisableSearch}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</AppContextProvider>\n\t\t\t\t</Route>\n\t\t\t)),\n\t\t[searchViews]\n\t);\n\treturn (\n\t\t<>\n\t\t\t{/* <RouteLeavingGuard\n\t\t\t\twhen\n\t\t\t\ttitle={t('search.leave.title', 'Are you sure you want to leave this module?')}\n\t\t\t>\n\t\t\t\t<Text>{t('search.leave.warning', 'The current search results will be lost')}</Text>\n\t\t\t</RouteLeavingGuard> */}\n\t\t\t<Switch>\n\t\t\t\t{routes}\n\t\t\t\t<Redirect\n\t\t\t\t\texact\n\t\t\t\t\tstrict\n\t\t\t\t\tfrom={`/${SEARCH_APP_ID}`}\n\t\t\t\t\tto={`/${SEARCH_APP_ID}/${searchViews[0]?.route}`}\n\t\t\t\t/>\n\t\t\t</Switch>\n\t\t</>\n\t);\n};\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { FC, useMemo } from 'react';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport { Accordion, Tooltip, IconButton } from '@zextras/carbonio-design-system';\nimport { map, startsWith } from 'lodash';\nimport { SETTINGS_APP_ID } from '../constants';\nimport { useAppStore } from '../store/app';\n\nexport const SettingsSidebar: FC<{ expanded: boolean }> = ({ expanded }) => {\n\tconst settingsViews = useAppStore((s) => s.views.settings);\n\tconst history = useHistory();\n\tconst location = useLocation();\n\tconst items = useMemo(\n\t\t() =>\n\t\t\tsettingsViews.map((view) => ({\n\t\t\t\tid: view.route,\n\t\t\t\tlabel: view.label,\n\t\t\t\ticon: view.icon,\n\t\t\t\tactive: location.pathname === `/${SETTINGS_APP_ID}/${view.route}` && location.search === '',\n\t\t\t\tdisableHover:\n\t\t\t\t\tlocation.pathname === `/${SETTINGS_APP_ID}/${view.route}` && location.search === '',\n\t\t\t\tonClick: (e: MouseEvent): void => {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\thistory.push(`/${SETTINGS_APP_ID}/${view.route}`);\n\t\t\t\t},\n\t\t\t\titems: map(view.subSections, (item) => ({\n\t\t\t\t\t...item,\n\t\t\t\t\tactive: location.search === `?section=${item.id}`,\n\t\t\t\t\tdisableHover: location.search === `?section=${item.id}`,\n\t\t\t\t\tonClick: (e: MouseEvent): void => {\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\thistory.replace(`/${SETTINGS_APP_ID}/${view.route}?section=${item.id}`);\n\t\t\t\t\t}\n\t\t\t\t}))\n\t\t\t})),\n\t\t[history, location.pathname, location.search, settingsViews]\n\t);\n\tconst collapsedItems = useMemo(\n\t\t() =>\n\t\t\tsettingsViews.map((v) => (\n\t\t\t\t<Tooltip label={v.label} placement=\"right\" key={v.id}>\n\t\t\t\t\t<IconButton\n\t\t\t\t\t\ticon={v.icon}\n\t\t\t\t\t\tonClick={(): void => history.push(`/${SETTINGS_APP_ID}/${v.route}`)}\n\t\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t\ticonColor={startsWith(location.pathname, `/${SETTINGS_APP_ID}/${v.route}`)}\n\t\t\t\t\t/>\n\t\t\t\t</Tooltip>\n\t\t\t)),\n\t\t[history, location.pathname, settingsViews]\n\t);\n\treturn expanded ? <Accordion items={items} /> : <>{collapsedItems}</>;\n};\n","/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\nimport { TFunction } from 'react-i18next';\nimport { SettingsSubSection } from '../../types';\n\nexport const themeSubSection = (t: TFunction): SettingsSubSection => ({\n\tlabel: t('settings.general.theme_options', 'Theme Options'),\n\tid: 'theme_options'\n});\nexport const timezoneAndLanguageSubSection = (t: TFunction): SettingsSubSection => ({\n\tlabel: t('settings.timezone_and_language', 'Time Zone and Language'),\n\tid: 'timezone_and_language'\n});\nexport const outOfOfficeSubSection = (t: TFunction): SettingsSubSection => ({\n\tlabel: t('settings.out_of_office.headings.settings_label', 'Out of Office Settings'),\n\tid: 'out_of_office'\n});\nexport const searchPrefsSubSection = (t: TFunction): SettingsSubSection => ({\n\tlabel: t('search.app', 'Search'),\n\tid: 'search_prefs'\n});\nexport const versionsSubSection = (t: TFunction): SettingsSubSection => ({\n\tlabel: t('module.app.version', 'Application versions'),\n\tid: 'app_version'\n});\nexport const quotaSubSection = (t: TFunction): SettingsSubSection => ({\n\tlabel: t('user_quota.title', \"User's quota\"),\n\tid: 'user_quota'\n});\nexport const accountSubSection = (t: TFunction): SettingsSubSection => ({\n\tlabel: t('settings.general.account', 'Account'),\n\tid: 'account'\n});\n\nexport const settingsSubSections = (t: TFunction): Array<SettingsSubSection> => [\n\tthemeSubSection(t),\n\ttimezoneAndLanguageSubSection(t),\n\toutOfOfficeSubSection(t),\n\tsearchPrefsSubSection(t),\n\tversionsSubSection(t),\n\tquotaSubSection(t),\n\taccountSubSection(t)\n];\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { FC, useCallback, useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { FormSubSection, Button } from '@zextras/carbonio-design-system';\nimport { logout } from '../../../network/logout';\nimport { accountSubSection } from '../../general-settings-sub-sections';\n\nconst Logout: FC = () => {\n\tconst [t] = useTranslation();\n\tconst onClick = useCallback(() => {\n\t\tlogout();\n\t}, []);\n\tconst sectionTitle = useMemo(() => accountSubSection(t), [t]);\n\treturn (\n\t\t<FormSubSection\n\t\t\tlabel={sectionTitle.label}\n\t\t\tminWidth=\"calc(min(100%, 512px))\"\n\t\t\twidth=\"50%\"\n\t\t\tid={sectionTitle.id}\n\t\t>\n\t\t\t<Button label={t('settings.general.account_logout', 'Logout')} onClick={onClick} />\n\t\t</FormSubSection>\n\t);\n};\n\nexport default Logout;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { FC, useState, useMemo, useContext, useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { FormSubSection, Select } from '@zextras/carbonio-design-system';\nimport { find } from 'lodash';\nimport { ThemeCallbacksContext } from '../../../boot/theme-provider';\nimport { AccountSettings, DRPropValues } from '../../../../types';\nimport { SHELL_APP_ID } from '../../../constants';\nimport { themeSubSection } from '../../general-settings-sub-sections';\n\nconst AppearanceSettings: FC<{\n\tsettings: AccountSettings;\n\taddMod: (type: 'prefs' | 'props', key: string, value: { value: any; app: string }) => void;\n}> = ({ settings, addMod }) => {\n\tconst { setDarkReaderState } = useContext(ThemeCallbacksContext);\n\tconst [drMode, setDrMode] = useState<DRPropValues>(\n\t\t(find(settings.props, ['name', 'zappDarkreaderMode'])?._content as unknown as DRPropValues) ??\n\t\t\t'auto'\n\t);\n\tconst [t] = useTranslation();\n\tconst items = useMemo(\n\t\t() => [\n\t\t\t{\n\t\t\t\tlabel: t('settings.general.theme_auto', 'Auto'),\n\t\t\t\tvalue: 'auto'\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: t('settings.general.theme_enabled', 'Enabled'),\n\t\t\t\tvalue: 'enabled'\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: t('settings.general.theme_disabled', 'Disabled'),\n\t\t\t\tvalue: 'disabled'\n\t\t\t}\n\t\t],\n\t\t[t]\n\t);\n\tconst defaultSelection = useMemo(\n\t\t() => find(items, ['value', drMode]) ?? items[0],\n\t\t[drMode, items]\n\t);\n\tconst onSelectionChange = useCallback(\n\t\t(v) => {\n\t\t\tif (v !== drMode) {\n\t\t\t\tsetDrMode((old) => (v !== old ? v : old));\n\t\t\t\t// setDarkReaderState(v);\n\t\t\t\taddMod('props', 'zappDarkreaderMode', { app: SHELL_APP_ID, value: v });\n\t\t\t}\n\t\t},\n\t\t[addMod, drMode]\n\t);\n\t// useEffect(\n\t// \t() => (): void =>\n\t// \t\tsetDarkReaderState(\n\t// \t\t\t(find(settings.props, ['name', 'zappDarkreaderMode'])\n\t// \t\t\t\t?._content as unknown as DRPropValues) ?? 'auto'\n\t// \t\t),\n\t// \t[setDarkReaderState, settings.props]\n\t// );\n\tconst subSection = useMemo(() => themeSubSection(t), [t]);\n\treturn (\n\t\t<FormSubSection\n\t\t\tlabel={subSection.label}\n\t\t\tminWidth=\"calc(min(100%, 512px))\"\n\t\t\twidth=\"50%\"\n\t\t\tid={subSection.id}\n\t\t>\n\t\t\t<Select\n\t\t\t\titems={items}\n\t\t\t\tselection={defaultSelection}\n\t\t\t\tlabel={t('settings.general.dark_mode', 'Dark Mode')}\n\t\t\t\tonChange={onSelectionChange}\n\t\t\t/>\n\t\t</FormSubSection>\n\t);\n};\n\nexport default AppearanceSettings;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\n/* eslint-disable @typescript-eslint/ban-ts-comment */\n\nimport React, { FC, useContext, useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n\tFormSubSection,\n\tContainer,\n\tText,\n\tBadge,\n\tDivider,\n\tTooltip,\n\tThemeContext\n} from '@zextras/carbonio-design-system';\nimport { map } from 'lodash';\nimport { useAppList } from '../../../store/app/hooks';\n\nimport { SEARCH_APP_ID, SETTINGS_APP_ID } from '../../../constants/index';\nimport { CarbonioModule } from '../../../../types';\nimport { versionsSubSection } from '../../general-settings-sub-sections';\n\nconst ModuleVersionSettings: FC = () => {\n\tconst apps = useAppList();\n\tconst [t] = useTranslation();\n\tconst theme = useContext(ThemeContext);\n\n\tconst copyToClipboard: any = (e: any) => {\n\t\te.preventDefault();\n\t\tnavigator.clipboard.writeText(e.target.innerText);\n\t};\n\n\tconst filteredList = useMemo(\n\t\t() => apps.filter((app) => app.name !== SEARCH_APP_ID && app.name !== SETTINGS_APP_ID),\n\t\t[apps]\n\t);\n\tconst sectionTitle = useMemo(() => versionsSubSection(t), [t]);\n\treturn (\n\t\t<>\n\t\t\t<FormSubSection\n\t\t\t\tlabel={sectionTitle.label}\n\t\t\t\tminWidth=\"calc(min(100%, 512px))\"\n\t\t\t\twidth=\"50%\"\n\t\t\t\tid={sectionTitle.id}\n\t\t\t>\n\t\t\t\t{map(filteredList, (app: CarbonioModule) => (\n\t\t\t\t\t<Container key={app.name} padding={{ horizontal: 'large', vertical: 'small' }}>\n\t\t\t\t\t\t<Container orientation=\"horizontal\" mainAlignment=\"space-between\">\n\t\t\t\t\t\t\t<Text>\n\t\t\t\t\t\t\t\t{app.display} ({app.name})\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t<Tooltip placement=\"top\" label=\"Click to copy\">\n\t\t\t\t\t\t\t\t<Text style={{ cursor: 'pointer' }} onClick={(e: any): any => copyToClipboard(e)}>\n\t\t\t\t\t\t\t\t\tVersion: {app.version}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t</Container>\n\t\t\t\t\t\t<Container\n\t\t\t\t\t\t\torientation=\"horizontal\"\n\t\t\t\t\t\t\tmainAlignment=\"space-between\"\n\t\t\t\t\t\t\tpadding={{ top: 'extrasmall', bottom: 'medium' }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Text color=\"secondary\">{app.description}</Text>\n\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\tvalue=\"Active\"\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\t\t\tbackgroundColor: theme.palette.success.regular,\n\t\t\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\t\t\tcolor: theme.palette.gray6.regular\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t></Badge>\n\t\t\t\t\t\t</Container>\n\t\t\t\t\t\t<Divider color=\"gray2\" />\n\t\t\t\t\t</Container>\n\t\t\t\t))}\n\t\t\t</FormSubSection>\n\t\t</>\n\t);\n};\n\nexport default ModuleVersionSettings;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { FC } from 'react';\nimport { Padding, Row, Text } from '@zextras/carbonio-design-system';\n\nconst Heading: FC<{ title: string }> = ({ title }) => (\n\t<>\n\t\t<Row padding={{ all: 'small' }} mainAlignment=\"baseline\" crossAlignment=\"baseline\" width=\"100%\">\n\t\t\t<Text size=\"large\" weight=\"bold\">\n\t\t\t\t{title}\n\t\t\t</Text>\n\t\t</Row>\n\t\t<Padding veritcal=\"small\" />\n\t</>\n);\n\nexport default Heading;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport { Container } from '@zextras/carbonio-design-system';\nimport styled from 'styled-components';\n\nconst Styler = styled(Container)`\n\t.rw-btn,\n\t.rw-input-reset,\n\t.rw-input,\n\t.rw-dropdown-list-autofill,\n\t.rw-filter-input {\n\t\tcolor: inherit;\n\t\tpadding: 0;\n\t\tmargin: 0;\n\t\tborder: none;\n\t\tbox-shadow: none;\n\t\tbackground: none;\n\t\tbackground-image: none;\n\t\tfont-family: inherit;\n\t\tfont-size: inherit;\n\t\tline-height: inherit;\n\t\t-ms-touch-action: manipulation;\n\t\ttouch-action: manipulation;\n\t}\n\t.rw-btn::-moz-focus-inner {\n\t\tpadding: 0;\n\t\tborder: 0;\n\t}\n\tselect.rw-input {\n\t\ttext-transform: none;\n\t}\n\thtml input[type='button'].rw-input {\n\t\t-webkit-appearance: button;\n\t\tcursor: pointer;\n\t}\n\ttextarea.rw-input {\n\t\toverflow: auto;\n\t\tresize: vertical;\n\t}\n\tbutton[disabled].rw-input,\n\tfieldset[disabled] .rw-input,\n\thtml input[disabled].rw-input {\n\t\tcursor: not-allowed;\n\t}\n\tbutton.rw-input::-moz-focus-inner,\n\tinput.rw-input::-moz-focus-inner {\n\t\tborder: 0;\n\t\tpadding: 0;\n\t}\n\tinput[type='checkbox'],\n\tinput[type='radio'] {\n\t\tbox-sizing: border-box;\n\t\tpadding: 0;\n\t}\n\t${\n\t\t/* @font-face {\n\tfont-family: \"RwWidgets\";\n\tfont-weight: normal;\n\tfont-style: normal;\n\t${/* src: url(\"../fonts/rw-widgets.eot?v=4.1.0\");\n\tsrc: url(\"../fonts/rw-widgets.eot?#iefix&v=4.1.0\") format(\"embedded-opentype\"),\n\turl(\"../fonts/rw-widgets.woff?v=4.1.0\") format(\"woff\"),\n\turl(\"../fonts/rw-widgets.ttf?v=4.1.0\") format(\"truetype\"),\n\t\turl(\"../fonts/rw-widgets.svg?v=4.1.0#fontawesomeregular\") format(\"svg\"); */ ''\n\t};\n\t.rw-i {\n\t\tdisplay: inline-block;\n\t\tcolor: inherit;\n\t\t${/* font-family: RwWidgets; */ ''};\n\t\tfont-style: normal;\n\t\tfont-weight: normal;\n\t\tfont-variant: normal;\n\t\ttext-transform: none;\n\t\t-moz-osx-font-smoothing: grayscale;\n\t\t-webkit-font-smoothing: antialiased;\n\t}\n\t.rw-i-caret-down:before {\n\t\tcontent: '\\e803';\n\t}\n\t.rw-i-caret-up:before {\n\t\tcontent: '\\e800';\n\t}\n\t.rw-i-chevron-left:before {\n\t\tcontent: '\\f104';\n\t}\n\t.rw-i-chevron-right:before {\n\t\tcontent: '\\f105';\n\t}\n\t.rw-i-clock-o:before {\n\t\tcontent: '\\e805';\n\t}\n\t.rw-i-calendar:before {\n\t\tcontent: '\\e804';\n\t}\n\t.rw-i-search:before {\n\t\tcontent: '\\e801';\n\t}\n\t.rw-btn {\n\t\tposition: relative;\n\t\tcolor: #333;\n\t\tdisplay: inline-block;\n\t\ttext-align: center;\n\t\tvertical-align: middle;\n\t\tborder: 1px solid transparent;\n\t\tcursor: pointer;\n\t\toutline: none;\n\t}\n\t.rw-state-readonly .rw-btn,\n\t.rw-state-disabled .rw-btn {\n\t\tcursor: not-allowed;\n\t}\n\t.rw-btn-select {\n\t\topacity: 0.75;\n\t\ttransition: opacity 150ms ease-in;\n\t}\n\t.rw-btn-select:hover,\n\t.rw-state-focus .rw-btn-select,\n\t:hover > .rw-btn-select {\n\t\topacity: 1;\n\t}\n\t.rw-btn-primary {\n\t\twidth: 100%;\n\t\twhite-space: normal;\n\t\tline-height: 2em;\n\t}\n\t.rw-btn-primary:hover {\n\t\tbackground-color: #e6e6e6;\n\t}\n\t.rw-btn-select[disabled],\n\t.rw-btn-primary[disabled],\n\tfieldset[disabled] .rw-btn-select,\n\tfieldset[disabled] .rw-btn-primary {\n\t\tbox-shadow: none;\n\t\tcursor: not-allowed;\n\t\topacity: 0.65;\n\t\tpointer-events: none;\n\t}\n\t.rw-sr {\n\t\tposition: absolute;\n\t\twidth: 1px;\n\t\theight: 1px;\n\t\tmargin: -1px;\n\t\tpadding: 0;\n\t\toverflow: hidden;\n\t\tclip: rect(0, 0, 0, 0);\n\t\tborder: 0;\n\t}\n\t.rw-widget {\n\t\tbackground-clip: border-box;\n\t\tborder: none;\n\t\toutline: none;\n\t\tposition: relative;\n\t\tborder-radius: 2px 2px 0 0;\n\t\twidth: 100%;\n\t}\n\t.rw-widget,\n\t.rw-widget * {\n\t\tbox-sizing: border-box;\n\t}\n\t.rw-widget:before,\n\t.rw-widget *:before,\n\t.rw-widget:after,\n\t.rw-widget *:after {\n\t\tbox-sizing: border-box;\n\t}\n\t.rw-widget > .rw-widget-container {\n\t\twidth: 100%;\n\t\tmargin: 0;\n\t}\n\t.rw-widget-container {\n\t\tbackground-color: ${({ theme }) => theme.palette.gray5.regular};\n\t\tborder-bottom: ${({ theme }) => theme.palette.gray2.regular} 1px solid;\n\t}\n\t.rw-widget-container.rw-state-focus,\n\t.rw-state-focus > .rw-widget-container,\n\t.rw-widget-container.rw-state-focus:hover,\n\t.rw-state-focus > .rw-widget-container:hover {\n\t\tbackground-color: ${({ theme }) => theme.palette.gray5.focus};\n\t\tborder-bottom: ${({ theme }) => theme.palette.primary.regular} 1px solid;\n\t}\n\t.rw-widget-container.rw-state-readonly,\n\t.rw-state-readonly > .rw-widget-container {\n\t\tcursor: not-allowed;\n\t}\n\t.rw-widget-container.rw-state-disabled,\n\t.rw-state-disabled > .rw-widget-container,\n\tfieldset[disabled] .rw-widget-container,\n\t.rw-widget-container.rw-state-disabled:hover,\n\t.rw-state-disabled > .rw-widget-container:hover,\n\tfieldset[disabled] .rw-widget-container:hover,\n\t.rw-widget-container.rw-state-disabled:active,\n\t.rw-state-disabled > .rw-widget-container:active,\n\tfieldset[disabled] .rw-widget-container:active {\n\t\tbox-shadow: none;\n\t\tcursor: not-allowed;\n\t}\n\n\t.rw-datetime-picker {\n\t\theight: 42px;\n\t}\n\t.rw-widget-picker {\n\t\tposition: relative;\n\t\toverflow: hidden;\n\t\tborder-collapse: separate;\n\t\tdisplay: inline-table;\n\t\theight: 100%;\n\t}\n\t.rw-widget-picker > * {\n\t\tposition: relative;\n\t\tborder: none;\n\t\toutline: none;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: table-cell;\n\t}\n\t.rw-widget-picker > .rw-select {\n\t\twidth: ${({ allDay }) => (allDay ? '34px' : '68px')};\n\t\twhite-space: nowrap;\n\t}\n\t.rw-open > .rw-widget-picker {\n\t\tborder-bottom-right-radius: 0;\n\t\tborder-bottom-left-radius: 0;\n\t}\n\t.rw-open-up > .rw-widget-picker {\n\t\tborder-top-right-radius: 0;\n\t\tborder-top-left-radius: 0;\n\t}\n\tfieldset[disabled] .rw-widget-picker,\n\t.rw-state-disabled > .rw-widget-picker {\n\t\tbackground-color: #eee;\n\t}\n\t.rw-multiselect > .rw-widget-picker {\n\t\theight: auto;\n\t}\n\t.rw-select {\n\t\tcursor: pointer;\n\t}\n\t.rw-select > * {\n\t\twidth: 32px;\n\t\theight: 100%;\n\t}\n\t.rw-state-readonly .rw-select,\n\t.rw-state-disabled .rw-select {\n\t\tcursor: not-allowed;\n\t}\n\t.rw-select-bordered {\n\t\tcursor: pointer;\n\t\tborder: none;\n\t\tborder-left: #ccc 1px solid;\n\t}\n\t.rw-select-bordered:hover,\n\t.rw-select-bordered:active {\n\t\tbackground-color: #e6e6e6;\n\t}\n\t.rw-select-bordered:active {\n\t\tbox-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n\t}\n\t.rw-state-disabled .rw-select-bordered,\n\t.rw-state-readonly .rw-select-bordered,\n\tfieldset[disabled] .rw-select-bordered,\n\t.rw-state-disabled .rw-select-bordered:hover,\n\t.rw-state-readonly .rw-select-bordered:hover,\n\tfieldset[disabled] .rw-select-bordered:hover,\n\t.rw-state-disabled .rw-select-bordered:active,\n\t.rw-state-readonly .rw-select-bordered:active,\n\tfieldset[disabled] .rw-select-bordered:active {\n\t\tcursor: not-allowed;\n\t\tbackground-color: inherit;\n\t\tbackground-image: none;\n\t\tbox-shadow: none;\n\t}\n\t.rw-rtl .rw-select-bordered {\n\t\tborder-right: #ccc 1px solid;\n\t\tborder-left: none;\n\t}\n\t.rw-rtl {\n\t\tdirection: rtl;\n\t}\n\t.rw-input-reset,\n\t.rw-input,\n\t.rw-dropdown-list-autofill,\n\t.rw-filter-input {\n\t\toutline: 0;\n\t}\n\t.rw-input-reset::-moz-placeholder {\n\t\tcolor: #999;\n\t\topacity: 1;\n\t}\n\t.rw-input-reset:-ms-input-placeholder {\n\t\tcolor: #999;\n\t}\n\t.rw-input-reset::-webkit-input-placeholder {\n\t\tcolor: #999;\n\t}\n\t.rw-input,\n\t.rw-dropdown-list-autofill,\n\t.rw-filter-input {\n\t\tpadding: 0 0.857em;\n\t}\n\t.rw-input[type='text']::-ms-clear {\n\t\tdisplay: none;\n\t}\n\t.rw-input[disabled],\n\tfieldset[disabled] .rw-input {\n\t\tbox-shadow: none;\n\t\tcursor: not-allowed;\n\t\topacity: 1;\n\t\tbackground-color: #eee;\n\t\tborder-color: #ccc;\n\t}\n\t.rw-input[readonly] {\n\t\tcursor: not-allowed;\n\t}\n\t.rw-i.rw-loading {\n\t\tdisplay: block;\n\t\t${/* background: url(\"../img/loading.gif\") no-repeat center; */ ''};\n\t\tmin-width: 16px;\n\t\twidth: 1.9em;\n\t\theight: 16px;\n\t}\n\t.rw-i.rw-loading:before {\n\t\tcontent: '';\n\t}\n\t.rw-placeholder {\n\t\tcolor: #999;\n\t}\n\t.rw-detect-autofill:-webkit-autofill {\n\t\tanimation-name: react-widgets-autofill-start;\n\t\ttransition: background-color 50000s ease-in-out 0s;\n\t}\n\t.rw-detect-autofill:not(:-webkit-autofill) {\n\t\tanimation-name: react-widgets-autofill-cancel;\n\t}\n\t.rw-webkit-autofill .rw-widget-container,\n\t.rw-input:-webkit-autofill {\n\t\tbackground-color: #faffbd !important;\n\t\tbackground-image: none !important;\n\t\tcolor: #000 !important;\n\t}\n\t.rw-widget-input,\n\t.rw-filter-input {\n\t}\n\t.rw-widget-input.rw-state-focus {\n\t\tbox-shadow: 0 0 8px rgba(102, 175, 233, 0.6), inset 0 1px 1px rgba(0, 0, 0, 0.075);\n\t}\n\t.rw-list {\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\tlist-style: none;\n\t\tfont-size: 1em;\n\t\toutline: 0;\n\t\toverflow: auto;\n\t\tmax-height: 200px;\n\t}\n\t.rw-list-option {\n\t\t-ms-user-select: none;\n\t\tuser-select: none;\n\t\tcolor: #333;\n\t\tcursor: pointer;\n\t\tborder: 1px solid transparent;\n\t}\n\t.rw-list-option.rw-state-focus,\n\t.rw-list-option.rw-state-focus:hover {\n\t\tbackground-color: transparent;\n\t\tborder-color: #66afe9;\n\t\tcolor: #333;\n\t}\n\t.rw-list-option:hover,\n\t.rw-list-option:hover.rw-state-focus {\n\t\tbackground-color: #e6e6e6;\n\t\tborder-color: #e6e6e6;\n\t\tcolor: #333;\n\t}\n\t.rw-list-option.rw-state-selected,\n\t.rw-list-option.rw-state-selected:hover {\n\t\tbackground-color: #337ab7;\n\t\tborder-color: #337ab7;\n\t\tcolor: white;\n\t}\n\tfieldset[disabled] .rw-list-option,\n\t.rw-list-option.rw-state-disabled,\n\t.rw-list-option.rw-state-readonly {\n\t\tbox-shadow: none;\n\t\tcursor: not-allowed;\n\t\tcolor: #999;\n\t\topacity: 0.7;\n\t}\n\tfieldset[disabled] .rw-list-option:hover,\n\t.rw-list-option.rw-state-disabled:hover,\n\t.rw-list-option.rw-state-readonly:hover {\n\t\tbackground: none;\n\t\tborder-color: transparent;\n\t}\n\t.rw-list-empty,\n\t.rw-list-option,\n\t.rw-list-optgroup {\n\t\tpadding: 0.143em 0.75em;\n\t\toutline: 0;\n\t}\n\t.rw-list-optgroup {\n\t\tfont-weight: bold;\n\t\tpadding-top: 7px;\n\t}\n\t.rw-list-option-create {\n\t\tborder-top: 1px #ccc solid;\n\t}\n\t.rw-dropdown-list-autofill {\n\t\tpadding: 0;\n\t}\n\t.rw-dropdown-list-input {\n\t\tbackground-color: transparent;\n\t\tvertical-align: middle;\n\t\tpadding-right: 0;\n\t\tmax-width: 1px;\n\t\ttext-overflow: ellipsis;\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t}\n\t.rw-rtl .rw-dropdown-list-input {\n\t\tpadding-right: 0.857em;\n\t\tpadding-left: 0;\n\t}\n\t.rw-filter-input {\n\t\tposition: relative;\n\t\tmargin: 4px;\n\t\tpadding-right: 0;\n\t}\n\t.rw-filter-input .rw-rtl {\n\t\tpadding-right: 0.857em;\n\t\tpadding-left: 0;\n\t}\n\t.rw-filter-input .rw-select,\n\t.rw-filter-input .rw-btn {\n\t\topacity: 0.75;\n\t\tcursor: text;\n\t}\n\t.rw-filter-input > .rw-select,\n\t.rw-filter-input > .rw-select:active,\n\t.rw-filter-input > .rw-select:hover {\n\t\tbackground: none;\n\t\tcursor: initial;\n\t\tbox-shadow: none;\n\t}\n\n\t.rw-number-picker .rw-btn {\n\t\tcursor: pointer;\n\t\theight: calc(1.2145em - 1px);\n\t\t${\n\t\t\t/*\n\t\t margin-top: -1px\\9;\n\theight: 1.2145em\\9;\n*/ 'border: 2px solid red;'\n\t\t};\n\t\tline-height: 1.2145em;\n\t\tline-height: calc(1.2145em - 1px);\n\t\tdisplay: block;\n\t\tborder: none;\n\t}\n\n\t.rw-number-picker .rw-btn:hover,\n\t.rw-number-picker .rw-btn:active {\n\t\tbackground-color: #e6e6e6;\n\t}\n\t.rw-number-picker .rw-btn:active {\n\t\tbox-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n\t}\n\t.rw-state-disabled .rw-number-picker .rw-btn,\n\t.rw-state-readonly .rw-number-picker .rw-btn,\n\tfieldset[disabled] .rw-number-picker .rw-btn,\n\t.rw-state-disabled .rw-number-picker .rw-btn:hover,\n\t.rw-state-readonly .rw-number-picker .rw-btn:hover,\n\tfieldset[disabled] .rw-number-picker .rw-btn:hover,\n\t.rw-state-disabled .rw-number-picker .rw-btn:active,\n\t.rw-state-readonly .rw-number-picker .rw-btn:active,\n\tfieldset[disabled] .rw-number-picker .rw-btn:active {\n\t\tcursor: not-allowed;\n\t\tbackground-color: inherit;\n\t\tbackground-image: none;\n\t\tbox-shadow: none;\n\t}\n\t.rw-number-picker .rw-select {\n\t\tvertical-align: middle;\n\t}\n\t.rw-number-picker .rw-select,\n\t.rw-number-picker .rw-select:hover,\n\t.rw-number-picker .rw-select:active {\n\t\tbox-shadow: none;\n\t}\n\t.rw-calendar-popup {\n\t\tright: auto;\n\t\tmin-width: 0;\n\t\twidth: 18em;\n\t}\n\t.rw-calendar {\n\t\tborder-radius: 4px;\n\t\tbackground-color: #fff;\n\t\tborder: #ccc 1px solid;\n\t\toverflow: hidden;\n\t}\n\t.rw-calendar.rw-popup {\n\t\tborder-color: #ccc;\n\t}\n\t.rw-calendar-now {\n\t\tfont-weight: bold;\n\t}\n\t.rw-calendar-btn-left,\n\t.rw-calendar-btn-right {\n\t\twidth: 12.5%;\n\t}\n\t.rw-calendar-btn-view {\n\t\twidth: 75%;\n\t}\n\t.rw-calendar-footer {\n\t\tborder-top: 1px solid #ccc;\n\t}\n\t.rw-calendar-grid {\n\t\toutline: none;\n\t\theight: 14.28571429em;\n\t\ttable-layout: fixed;\n\t\tborder-collapse: separate;\n\t\tborder-spacing: 0;\n\t\twidth: 100%;\n\t\tbackground-color: #fff;\n\t}\n\t.rw-head-cell {\n\t\ttext-align: center;\n\t\tborder-bottom: 1px solid #ccc;\n\t\tpadding: 0.25em;\n\t}\n\t.rw-cell {\n\t\tcolor: #333;\n\t\tborder-radius: 4px;\n\t\tcursor: pointer;\n\t\tline-height: normal;\n\t\ttext-align: center;\n\t\tborder: 1px solid transparent;\n\t\tpadding: 0.25em;\n\t}\n\t.rw-cell:hover {\n\t\tbackground-color: #e6e6e6;\n\t\tborder-color: #e6e6e6;\n\t\tcolor: #333;\n\t}\n\t.rw-cell.rw-state-focus,\n\t.rw-cell.rw-state-focus:hover {\n\t\tbackground-color: transparent;\n\t\tborder-color: #66afe9;\n\t\tcolor: #333;\n\t}\n\t.rw-cell.rw-state-selected,\n\t.rw-cell.rw-state-selected:hover {\n\t\tbackground-color: #337ab7;\n\t\tborder-color: #337ab7;\n\t\tcolor: white;\n\t}\n\t.rw-cell.rw-state-disabled {\n\t\tcolor: #999;\n\t\topacity: 0.7;\n\t}\n\t.rw-cell.rw-state-disabled:hover {\n\t\tbackground: none;\n\t\tborder-color: transparent;\n\t}\n\t.rw-calendar-month .rw-cell {\n\t\ttext-align: center;\n\t}\n\t.rw-cell-off-range {\n\t\tcolor: #999;\n\t}\n\t.rw-calendar-transition-group {\n\t\tposition: relative;\n\t}\n\t.rw-calendar-transition {\n\t\ttransition: transform 300ms;\n\t\toverflow: hidden;\n\t}\n\t.rw-calendar-transition-top {\n\t\t-ms-transform: translateY(-100%);\n\t\ttransform: translateY(-100%);\n\t}\n\t.rw-calendar-transition-bottom {\n\t\t-ms-transform: translateY(100%);\n\t\ttransform: translateY(100%);\n\t}\n\t.rw-calendar-transition-right {\n\t\t-ms-transform: translateX(-100%);\n\t\ttransform: translateX(-100%);\n\t}\n\t.rw-calendar-transition-left {\n\t\t-ms-transform: translateX(100%);\n\t\ttransform: translateX(100%);\n\t}\n\t.rw-calendar-transition-entering.rw-calendar-transition-top,\n\t.rw-calendar-transition-entered.rw-calendar-transition-top,\n\t.rw-calendar-transition-entering.rw-calendar-transition-bottom,\n\t.rw-calendar-transition-entered.rw-calendar-transition-bottom {\n\t\t-ms-transform: translateY(0);\n\t\ttransform: translateY(0);\n\t}\n\t.rw-calendar-transition-entering.rw-calendar-transition-right,\n\t.rw-calendar-transition-entered.rw-calendar-transition-right,\n\t.rw-calendar-transition-entering.rw-calendar-transition-left,\n\t.rw-calendar-transition-entered.rw-calendar-transition-left {\n\t\t-ms-transform: translateX(0);\n\t\ttransform: translateX(0);\n\t}\n\t.rw-calendar-transition-exiting.rw-calendar-transition-top {\n\t\t-ms-transform: translateY(100%);\n\t\ttransform: translateY(100%);\n\t}\n\t.rw-calendar-transition-exiting.rw-calendar-transition-bottom {\n\t\t-ms-transform: translateY(-100%);\n\t\ttransform: translateY(-100%);\n\t}\n\t.rw-calendar-transition-exiting.rw-calendar-transition-right {\n\t\t-ms-transform: translateX(100%);\n\t\ttransform: translateX(100%);\n\t}\n\t.rw-calendar-transition-exiting.rw-calendar-transition-left {\n\t\t-ms-transform: translateX(-100%);\n\t\ttransform: translateX(-100%);\n\t}\n\t.rw-select-list {\n\t\toverflow: auto;\n\t\tposition: relative;\n\t}\n\t.rw-select-list .rw-list {\n\t\tmax-height: none;\n\t\tfont-size: 1em;\n\t}\n\t.rw-select-list-label {\n\t\tdisplay: block;\n\t\tposition: relative;\n\t\tfont-weight: normal;\n\t\tcursor: inherit;\n\t\tpadding-left: 20px;\n\t\tmargin: 0;\n\t}\n\t.rw-rtl .rw-select-list-label {\n\t\tpadding-left: 0;\n\t\tpadding-right: 20px;\n\t}\n\tinput.rw-select-list-input {\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\ttop: 50%;\n\t\t-ms-transform: translateY(-50%);\n\t\ttransform: translateY(-50%);\n\t\t${/* top: 0.1em\\9; */ ''};\n\t\tmargin: 0;\n\t\tline-height: normal;\n\t\tcursor: inherit;\n\t}\n\t.rw-rtl input.rw-select-list-input {\n\t\tleft: auto;\n\t\tright: 0;\n\t}\n\t.rw-loading-mask {\n\t\tcontent: '';\n\t\t${/* background: url(\"../img/loader-big.gif\") no-repeat center; */ ''};\n\t\tposition: absolute;\n\t\tbackground-color: #fff;\n\t\tborder-radius: 4px;\n\t\topacity: 0.7;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\theight: 100%;\n\t\twidth: 100%;\n\t}\n\t.rw-multiselect {\n\t\tcursor: text;\n\t}\n\t.rw-multiselect .rw-input-reset {\n\t\theight: calc(2.429em - 2px);\n\t\t${\n\t\t\t/* margin-top: -2px\\9;\n\theight: 2.429em\\9; */ ''\n\t\t};\n\t\tborder-width: 0;\n\t\twidth: auto;\n\t\tmax-width: 100%;\n\t\tpadding: 0 0.857em;\n\t}\n\t.rw-multiselect .rw-select {\n\t\tvertical-align: middle;\n\t}\n\t.rw-multiselect .rw-select,\n\t.rw-multiselect .rw-select:hover,\n\t.rw-multiselect .rw-select:active {\n\t\tbox-shadow: none;\n\t\tbackground: none;\n\t}\n\t.rw-multiselect-taglist {\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\tlist-style: none;\n\t\tdisplay: inline-block;\n\t\tvertical-align: 0;\n\t\toutline: none;\n\t}\n\t.rw-multiselect-tag {\n\t\tdisplay: inline-table;\n\t\tcolor: inherit;\n\t\tpadding: 0 0.35em 0 0.35em;\n\t\tmargin-left: calc(0.279335em - 1px);\n\t\tmargin-top: 0.279335em;\n\t\tmargin-top: calc(0.279335em - 1px);\n\t\theight: 1.87033em;\n\t\tborder-radius: 3px;\n\t\tbackground-color: #eee;\n\t\tborder: 1px solid #ccc;\n\t\tcursor: default;\n\t\tvertical-align: top;\n\t\ttext-align: center;\n\t\toverflow: hidden;\n\t\tmax-width: 100%;\n\t}\n\t.rw-multiselect-tag > * {\n\t\tdisplay: table-cell;\n\t\tvertical-align: middle;\n\t\theight: 100%;\n\t}\n\t.rw-rtl .rw-multiselect-tag {\n\t\tmargin-left: 0;\n\t\tmargin-right: calc(0.279335em - 1px);\n\t\tpadding: 0 0.35em 0 0.35em;\n\t}\n\t.rw-multiselect-tag.rw-state-focus,\n\t.rw-multiselect-tag.rw-state-focus:hover {\n\t\tbackground-color: transparent;\n\t\tborder-color: #66afe9;\n\t\tcolor: #333;\n\t}\n\t.rw-multiselect-tag.rw-state-readonly,\n\t.rw-multiselect-tag.rw-state-disabled,\n\t.rw-state-readonly .rw-multiselect-tag,\n\t.rw-state-disabled .rw-multiselect-tag,\n\tfieldset[disabled] .rw-multiselect-tag {\n\t\tcursor: not-allowed;\n\t}\n\t.rw-multiselect-tag.rw-state-disabled,\n\t.rw-state-disabled .rw-multiselect-tag,\n\tfieldset[disabled] .rw-multiselect-tag {\n\t\topacity: 0.65;\n\t}\n\tfieldset[disabled] .rw-multiselect-tag {\n\t\tbox-shadow: none;\n\t\tcursor: not-allowed;\n\t}\n\t.rw-multiselect-tag-btn {\n\t\tcolor: inherit;\n\t\tmargin-left: 0.25em;\n\t}\n\t.rw-rtl .rw-multiselect-tag-btn {\n\t\tmargin-left: 0;\n\t\tmargin-right: 0.25em;\n\t}\n\t.rw-autocomplete .rw-select {\n\t\tposition: absolute;\n\t\tdisplay: block;\n\t\twidth: auto;\n\t\ttop: 0;\n\t\tbottom: 0;\n\t\tright: 0;\n\t}\n\t.rw-popup-container {\n\t\tposition: absolute;\n\t\tz-index: 1005;\n\t\ttop: 100%;\n\t\tleft: -6px;\n\t\tright: -6px;\n\t}\n\t.rw-popup-container.rw-dropup {\n\t\ttop: auto;\n\t\tbottom: 100%;\n\t}\n\t.rw-state-focus .rw-popup-container {\n\t\tz-index: 1006;\n\t}\n\t.rw-popup-transition {\n\t\twidth: 100%;\n\t\tmargin-bottom: 6px;\n\t\tpadding: 0 6px;\n\t}\n\t.rw-dropup > .rw-popup-transition {\n\t\tmargin-bottom: 0;\n\t\tmargin-top: 6px;\n\t}\n\t.rw-popup {\n\t\tborder-top-right-radius: 0;\n\t\tborder-top-left-radius: 0;\n\t\tborder-bottom-right-radius: 3px;\n\t\tborder-bottom-left-radius: 3px;\n\t\tbox-shadow: 0 5px 6px rgba(0, 0, 0, 0.2);\n\t\tborder: #ccc 1px solid;\n\t\tbackground: #fff;\n\t}\n\t.rw-dropup .rw-popup {\n\t\tborder-bottom-right-radius: 0;\n\t\tborder-bottom-left-radius: 0;\n\t\tborder-top-right-radius: 3px;\n\t\tborder-top-left-radius: 3px;\n\t\tbox-shadow: 0 -2px 6px rgba(0, 0, 0, 0.2);\n\t}\n\t.rw-popup-transition {\n\t\ttransition: transform 200ms;\n\t}\n\t.rw-popup-transition-entering {\n\t\toverflow: hidden;\n\t}\n\t.rw-popup-transition-entering .rw-popup-transition {\n\t\t-ms-transform: translateY(0);\n\t\ttransform: translateY(0);\n\t\ttransition-timing-function: ease-out;\n\t}\n\t.rw-popup-transition-exiting .rw-popup-transition {\n\t\ttransition-timing-function: ease-in;\n\t}\n\t.rw-popup-transition-exiting,\n\t.rw-popup-transition-exited {\n\t\toverflow: hidden;\n\t}\n\t.rw-popup-transition-exiting .rw-popup-transition,\n\t.rw-popup-transition-exited .rw-popup-transition {\n\t\t-ms-transform: translateY(-100%);\n\t\ttransform: translateY(-100%);\n\t}\n\t.rw-popup-transition-exiting.rw-dropup .rw-popup-transition,\n\t.rw-popup-transition-exited.rw-dropup .rw-popup-transition {\n\t\t-ms-transform: translateY(100%);\n\t\ttransform: translateY(100%);\n\t}\n\t.rw-popup-transition-exited {\n\t\tdisplay: none;\n\t}\n\t.rw-state-disabled {\n\t\tbox-shadow: none;\n\t\tcursor: not-allowed;\n\t}\n\n\tcolor: ${({ theme }) => theme.palette.text.regular};\n\tfont-family: ${({ theme }) => theme.fonts.default};\n\tfont-size: ${({ theme }) => theme.sizes.font.medium};\n\tfont-weight: ${({ theme }) => theme.fonts.weight.regular};\n`;\n\nexport default Styler;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport moment from 'moment';\nimport { TFunction } from 'i18next';\nimport { AccountSettings } from '../../../types';\n\n// const [t] = useTranslation();\n\nexport const ItemsSendAutoReplies = (t: TFunction): any => [\n\t{\n\t\tlabel: t('settings.out_of_office.send_auto_replies', 'Send auto-replies'),\n\t\tvalue: 'TRUE'\n\t},\n\t{\n\t\tlabel: t('settings.out_of_office.do_not_send_auto_replies', 'Do not send auto-replies'),\n\t\tvalue: 'FALSE'\n\t}\n];\n\nexport const ItemsExternalSenders = (t: TFunction): any => [\n\t{\n\t\tlabel: t(\n\t\t\t'settings.out_of_office.external_senders.send_standard_auto_reply',\n\t\t\t'Send standard auto-reply message'\n\t\t),\n\t\tvalue: 'SEND_AUTO_REPLY'\n\t},\n\t{\n\t\tlabel: t(\n\t\t\t'settings.out_of_office.external_senders.send_custom_in_organisation',\n\t\t\t'Send custom message to those who are not in my organization'\n\t\t),\n\t\tvalue: 'SHOW_EXTERNAL_INPUT'\n\t},\n\t{\n\t\tlabel: t(\n\t\t\t'settings.out_of_office.external_senders.send_custom_not_in_organisation',\n\t\t\t'Send custom message to those who are not in my organization or address book'\n\t\t),\n\t\tvalue: 'SEND_NOT_IN_ORG'\n\t},\n\t{\n\t\tlabel: t(\n\t\t\t'settings.out_of_office.external_senders.do_not_send_to_external',\n\t\t\t'Don’t send an auto-reply message to external sender'\n\t\t),\n\t\tvalue: 'SUPPRESS_EXTERNAL'\n\t}\n];\n\nexport const ItemsOutOfOfficeStatus = (t: TFunction): any => [\n\t{\n\t\tlabel: t('label.out_of_office', 'Out of Office'),\n\t\tvalue: 'OUTOFOFFICE'\n\t},\n\t{\n\t\tlabel: t('settings.out_of_office.status.busy', 'Busy'),\n\t\tvalue: 'BUSY'\n\t}\n];\n\nexport const getExternalSendersPrefsData = (\n\tsettings: AccountSettings,\n\tret: string,\n\tt: TFunction\n): string => {\n\tlet item;\n\tconst itemsExternalSenders = ItemsExternalSenders(t);\n\tif (\n\t\tsettings.prefs.zimbraPrefOutOfOfficeSuppressExternalReply === 'FALSE' &&\n\t\tsettings.prefs.zimbraPrefOutOfOfficeExternalReplyEnabled === 'FALSE'\n\t) {\n\t\titem = { ...itemsExternalSenders[0] };\n\t} else if (\n\t\tsettings.prefs.zimbraPrefExternalSendersType === 'ALL' &&\n\t\tsettings.prefs.zimbraPrefOutOfOfficeExternalReplyEnabled === 'TRUE'\n\t) {\n\t\titem = { ...itemsExternalSenders[1] };\n\t} else if (\n\t\tsettings.prefs.zimbraPrefExternalSendersType === 'ALLNOTINAB' &&\n\t\tsettings.prefs.zimbraPrefOutOfOfficeExternalReplyEnabled === 'TRUE'\n\t) {\n\t\titem = { ...itemsExternalSenders[2] };\n\t} else {\n\t\titem = { ...itemsExternalSenders[3] };\n\t}\n\treturn String(item[ret]);\n};\n\nexport const getOutOfOfficeStatusPrefsData = (\n\tsettings: AccountSettings,\n\tret: string,\n\tt: TFunction\n): string => {\n\tlet item;\n\tconst itemsOutOfOfficeStatus = ItemsOutOfOfficeStatus(t);\n\tif (settings.prefs.zimbraPrefOutOfOfficeFreeBusyStatus === 'BUSY') {\n\t\titem = { ...itemsOutOfOfficeStatus[1] };\n\t} else {\n\t\titem = { ...itemsOutOfOfficeStatus[0] };\n\t}\n\n\treturn String(item[ret]);\n};\n\nexport const changeDateEvent = (date: string | Date): string =>\n\tmoment(moment(date, 'YYYYMMDDHHmmss[Z]').utc()).format('YYYYMMDDHHmmss[Z]');\n\nexport const getDateEvent = (date: string): Date =>\n\tnew Date(moment.utc(date, 'YYYYMMDDHHmmss[Z]').local().valueOf());\n\nexport const startOfDate = (date: string): string =>\n\tmoment.utc(date, 'YYYYMMDDHHmmss[Z]').local().startOf('day').utc().format('YYYYMMDDHHmmss[Z]');\n\nexport const endOfDate = (date: string): string =>\n\tmoment.utc(date, 'YYYYMMDDHHmmss[Z]').local().endOf('day').utc().format('YYYYMMDDHHmmss[Z]');\n\nexport const localeList = (\n\tt: TFunction\n): Array<{ id: string; name: string; localName: string; value: string; label: string }> => [\n\t{\n\t\tid: 'zh_CN',\n\t\tname: '中文 (中国)',\n\t\tlocalName: t('locale.chinese_china', 'Chinese (China)'),\n\t\tlabel: t('locale.label_chinese', {\n\t\t\tvalue: '中文 (中国)',\n\t\t\tdefaultValue: 'Chinese (China) - {{value}}'\n\t\t}),\n\t\tvalue: 'zh_CN'\n\t},\n\t{\n\t\tid: 'nl',\n\t\tname: 'Nederlands',\n\t\tlocalName: t('locale.dutch', 'Dutch'),\n\t\tlabel: t('locale.label_dutch', { value: 'Nederlands', defaultValue: 'Dutch - {{value}}' }),\n\t\tvalue: 'nl'\n\t},\n\t{\n\t\tid: 'en',\n\t\tname: 'English',\n\t\tlocalName: t('locale.English', 'English'),\n\t\tlabel: t('locale.label_english', { value: 'English', defaultValue: 'English - {{value}}' }),\n\t\tvalue: 'en'\n\t},\n\t{\n\t\tid: 'de',\n\t\tname: 'Deutsch',\n\t\tlocalName: t('locale.german', 'German'),\n\t\tlabel: t('locale.label_german', { value: 'Deutsch', defaultValue: 'German - {{value}}' }),\n\t\tvalue: 'de'\n\t},\n\t{\n\t\tid: 'hi',\n\t\tname: 'हिंदी',\n\t\tlocalName: t('locale.hindi', 'Hindi'),\n\t\tlabel: t('locale.label_hindi', { value: 'हिंदी', defaultValue: 'Hindi - {{value}}' }),\n\t\tvalue: 'hi'\n\t},\n\t{\n\t\tid: 'it',\n\t\tname: 'italiano',\n\t\tlocalName: t('locale.italian', 'Italian'),\n\t\tlabel: t('locale.label_italian', { value: 'italiano', defaultValue: 'Italian - {{value}}' }),\n\t\tvalue: 'it'\n\t},\n\t{\n\t\tid: 'ja',\n\t\tname: '日本語',\n\t\tlocalName: t('locale.japanese', 'Japanese'),\n\t\tlabel: t('locale.label_japanese', { value: '日本語', defaultValue: 'Japanese - {{value}}' }),\n\t\tvalue: 'ja'\n\t},\n\n\t{\n\t\tid: 'pt',\n\t\tname: 'português',\n\t\tlocalName: t('locale.portuguese', 'Portuguese'),\n\t\tlabel: t('locale.label_portuguese', {\n\t\t\tvalue: 'português',\n\t\t\tdefaultValue: 'Portuguese - {{value}}'\n\t\t}),\n\t\tvalue: 'pt'\n\t},\n\t{\n\t\tid: 'pt_BR',\n\t\tname: 'português (Brasil)',\n\t\tlocalName: t('locale.portuguese_brazil', 'Portuguese (Brazil)'),\n\t\tlabel: t('locale.label_portuguese_brazil', {\n\t\t\tvalue: 'português (Brasil)',\n\t\t\tdefaultValue: 'Portuguese - {{value}}'\n\t\t}),\n\t\tvalue: 'pt_BR'\n\t},\n\n\t{\n\t\tid: 'ro',\n\t\tname: 'română',\n\t\tlocalName: t('locale.romanian', 'Romanian'),\n\t\tlabel: t('locale.label_romanian', { value: 'română', defaultValue: 'Romanian - {{value}}' }),\n\t\tvalue: 'ro'\n\t},\n\t{\n\t\tid: 'ru',\n\t\tname: 'русский',\n\t\tlocalName: t('locale.russian', 'Russian'),\n\t\tlabel: t('locale.label_russian', { value: 'русский', defaultValue: 'Russian - {{value}}' }),\n\t\tvalue: 'ru'\n\t},\n\n\t{\n\t\tid: 'es',\n\t\tname: 'español',\n\t\tlocalName: t('locale.spanish', 'Spanish'),\n\t\tlabel: t('locale.label_spanish', { value: 'español', defaultValue: 'Spanish - {{value}}' }),\n\t\tvalue: 'es'\n\t},\n\n\t{\n\t\tid: 'th',\n\t\tname: 'ไทย',\n\t\tlocalName: t('locale.thai', 'Thai'),\n\t\tlabel: t('locale.label_thai', { value: 'ไทย', defaultValue: 'Thai - {{value}}' }),\n\t\tvalue: 'th'\n\t},\n\t{\n\t\tid: 'tr',\n\t\tname: 'Türkçe',\n\t\tlocalName: t('locale.turkish', 'Turkish'),\n\t\tlabel: t('locale.label_turkish', { value: 'Türkçe', defaultValue: 'Turkish - {{value}}' }),\n\t\tvalue: 'tr'\n\t},\n\t{\n\t\tid: 'fr',\n\t\tname: 'français',\n\t\tlocalName: t('locale.french', 'French'),\n\t\tlabel: t('locale.label_french', { value: 'français', defaultValue: 'French - {{value}}' }),\n\t\tvalue: 'fr'\n\t}\n];\n// TODO: For future languages\n// export const localeList = (t: TFunction): any => [\n// \t{\n// \t\tid: 'ar',\n// \t\tname: 'العربية',\n// \t\tlocalName: t('locale.arabic', 'Arabic'),\n// \t\tlabel: t('locale.label_arabic', { value: 'لعربية', defaultValue: 'Arabic - {{value}}' }),\n// \t\tvalue: 'ar'\n// \t},\n// \t{\n// \t\tid: 'eu',\n// \t\tname: 'Euskara',\n// \t\tlocalName: t('locale.basque', 'Basque'),\n// \t\tlabel: t('locale.label_basque', { value: 'Euskara', defaultValue: 'Basque - {{value}}' }),\n// \t\tvalue: 'eu'\n// \t},\n// \t{\n// \t\tid: 'bg',\n// \t\tname: 'български',\n// \t\tlocalName: t('locale.bulgarian', 'Bulgarian'),\n// \t\tlabel: t('locale.label_bulgarian', {\n// \t\t\tvalue: 'български',\n// \t\t\tdefaultValue: 'Bulgarian - {{value}}'\n// \t\t}),\n// \t\tvalue: 'bg'\n// \t},\n// \t{\n// \t\tid: 'ca',\n// \t\tname: 'català',\n// \t\tlocalName: t('locale.catalan', 'Catalan'),\n// \t\tlabel: 'Catalan - català',\n// \t\tvalue: 'ca'\n// \t},\n// \t{\n// \t\tid: 'zh',\n// \t\tname: '中文',\n// \t\tlocalName: t('locale.chinese', 'Chinese'),\n// \t\tlabel: 'Chinese - 中文',\n// \t\tvalue: 'zh'\n// \t},\n// \t{\n// \t\tid: 'zh_CN',\n// \t\tname: '中文 (中国)',\n// \t\tlocalName: t('locale.chinese_china', 'Chinese (China)'),\n// \t\tlabel: 'Chinese (China) - 中文 (中国)',\n// \t\tvalue: 'zh_CN'\n// \t},\n// \t{\n// \t\tid: 'zh_HK',\n// \t\tname: '中文 (香港)',\n// \t\tlocalName: t('locale.chinese_hong_kong', 'Chinese (Hong Kong SAR China)'),\n// \t\tlabel: 'Chinese (Hong Kong SAR China) - 中文 (香港)',\n// \t\tvalue: 'zh_HK'\n// \t},\n// \t{\n// \t\tid: 'zh_TW',\n// \t\tname: '中文 (台灣)',\n// \t\tlocalName: t('locale.chinese_taiwan', 'Chinese (Taiwan)'),\n// \t\tlabel: 'Chinese (Taiwan) - 中文 (台灣)',\n// \t\tvalue: 'zh_TW'\n// \t},\n// \t{\n// \t\tid: 'hr',\n// \t\tname: 'hrvatski',\n// \t\tlocalName: t('locale.croatian', 'Croatian'),\n// \t\tlabel: 'Croatian - hrvatski',\n// \t\tvalue: 'hr'\n// \t},\n// \t{\n// \t\tid: 'da',\n// \t\tname: 'Dansk',\n// \t\tlocalName: t('locale.danish', 'Danish'),\n// \t\tlabel: 'Danish - Dansk',\n// \t\tvalue: 'da'\n// \t},\n\n// \t{\n// \t\tid: 'en_AU',\n// \t\tname: 'English (Australia)',\n// \t\tlocalName: t('locale.english_australia', 'English (Australia)'),\n// \t\tlabel: 'English (Australia) - English (Australia)',\n// \t\tvalue: 'en_AU'\n// \t},\n// \t{\n// \t\tid: 'en_GB',\n// \t\tname: 'English (United Kingdom)',\n// \t\tlocalName: t('locale.english_united_kingdom', 'English (United Kingdom)'),\n// \t\tlabel: 'English (United Kingdom) - English (United Kingdom)',\n// \t\tvalue: 'en_GB'\n// \t},\n// \t{\n// \t\tid: 'en_US',\n// \t\tname: 'English (United States)',\n// \t\tlocalName: t('locale.english_united_states', 'English (United States)'),\n// \t\tlabel: 'English (United States) - English (United States)',\n// \t\tvalue: 'en_US'\n// \t},\n// \t{\n// \t\tid: 'fr',\n// \t\tname: 'français',\n// \t\tlocalName: t('locale.french', 'French'),\n// \t\tlabel: 'French - français',\n// \t\tvalue: 'fr'\n// \t},\n// \t{\n// \t\tid: 'fr_CA',\n// \t\tname: 'français (Canada)',\n// \t\tlocalName: t('locale.french_canada', 'French (Canada)'),\n// \t\tlabel: 'French (Canada) - français (Canada)',\n// \t\tvalue: 'fr_CA'\n// \t},\n// \t{\n// \t\tid: 'fr_FR',\n// \t\tname: 'français (France)',\n// \t\tlocalName: t('locale.french_france', 'French (France)'),\n// \t\tlabel: 'French (France) - français (France)',\n// \t\tvalue: 'fr_FR'\n// \t},\n\n// \t{\n// \t\tid: 'iw',\n// \t\tname: 'עברית',\n// \t\tlocalName: t('locale.hebrew', 'Hebrew'),\n// \t\tlabel: 'Hebrew - עברית',\n// \t\tvalue: 'iw'\n// \t},\n\n// \t{\n// \t\tid: 'hu',\n// \t\tname: 'magyar',\n// \t\tlocalName: t('locale.hungarian', 'Hungarian'),\n// \t\tlabel: 'Hungarian - magyar',\n// \t\tvalue: 'hu'\n// \t},\n// \t{\n// \t\tid: 'in',\n// \t\tname: 'Bahasa Indonesia',\n// \t\tlocalName: t('locale.indonesian', 'Indonesian'),\n// \t\tlabel: 'Indonesian - Bahasa Indonesia',\n// \t\tvalue: 'in'\n// \t},\n\n// \t{\n// \t\tid: 'ko',\n// \t\tname: '한국어',\n// \t\tlocalName: t('locale.korean', 'Korean'),\n// \t\tlabel: 'Korean - 한국어',\n// \t\tvalue: 'ko'\n// \t},\n// \t{\n// \t\tid: 'lo',\n// eslint-disable-next-line no-irregular-whitespace\n// \t\tname: 'ພາສາລາວ',\n// \t\tlocalName: t('locale.lao', 'Lao'),\n// eslint-disable-next-line no-irregular-whitespace\n// \t\tlabel: 'Lao - ພາສາລາວ',\n// \t\tvalue: 'lo'\n// \t},\n// \t{\n// \t\tid: 'ms',\n// \t\tname: 'Bahasa Melayu',\n// \t\tlocalName: t('locale.malay', 'Malay'),\n// \t\tlabel: 'Malay - Bahasa Melayu',\n// \t\tvalue: 'ms'\n// \t},\n// \t{\n// \t\tid: 'no',\n// \t\tname: 'norsk',\n// \t\tlocalName: t('locale.norwegian', 'Norwegian'),\n// \t\tlabel: 'Norwegian - norsk',\n// \t\tvalue: 'no'\n// \t},\n// \t{\n// \t\tid: 'pl',\n// \t\tname: 'polski',\n// \t\tlocalName: t('locale.polish', 'Polish'),\n// \t\tlabel: 'Polish - polski',\n// \t\tvalue: 'pl'\n// \t},\n\n// \t{\n// \t\tid: 'pt_PT',\n// \t\tname: 'português (Portugal)',\n// \t\tlocalName: t('locale.potuguese_portugal', 'Portuguese (Portugal)'),\n// \t\tlabel: 'Portuguese (Portugal) - português (Portugal)',\n// \t\tvalue: 'pt_PT'\n// \t},\n\n// \t{\n// \t\tid: 'sl',\n// \t\tname: 'Slovenščina',\n// \t\tlocalName: t('locale.slovenian', 'Slovenian'),\n// \t\tlabel: 'Slovenian - Slovenščina',\n// \t\tvalue: 'sl'\n// \t},\n\n// \t{\n// \t\tid: 'sv',\n// \t\tname: 'svenska',\n// \t\tlocalName: t('locale.swedish', 'Swedish'),\n// \t\tlabel: 'Swedish - svenska',\n// \t\tvalue: 'sv'\n// \t},\n// \t{\n// \t\tid: 'ta',\n// \t\tname: 'தமிழ்',\n// \t\tlocalName: t('locale.tamil', 'Tamil'),\n// \t\tlabel: 'Tamil - தமிழ்',\n// \t\tvalue: 'ta'\n// \t},\n\n// \t{\n// \t\tid: 'uk',\n// \t\tname: 'українська',\n// \t\tlocalName: t('locale.ukrainian', 'Ukrainian'),\n// \t\tlabel: 'Ukrainian - українська',\n// \t\tvalue: 'uk'\n// \t},\n// \t{\n// \t\tid: 'vi',\n// \t\tname: 'Tiếng Việt',\n// \t\tlocalName: t('locale.vietnamese', 'Vietnamese'),\n// \t\tlabel: 'Vietnamese - Tiếng Việt',\n// \t\tvalue: 'vi'\n// \t}\n// ];\n\nexport const timeZoneList = (\n\tt: TFunction\n): Array<{ value?: string; label: string; offSet?: string }> => [\n\t{\n\t\tvalue: 'Etc/GMT+12',\n\t\tlabel: t('timezone.dateline', { value: 'GMT -12:00 ', defaultValue: '{{value}} Dateline' })\n\t},\n\t{\n\t\tvalue: 'Pacific/Midway',\n\t\tlabel: t('timezone.samoa', { value: 'GMT -11:00', defaultValue: '{{value}} Samoa' })\n\t},\n\t{\n\t\tvalue: 'Etc/GMT+11',\n\t\tlabel: t('timezone.gmt_11', { value: 'GMT -11:00', defaultValue: '{{value}} GMT-11' })\n\t},\n\t{\n\t\tvalue: 'Pacific/Honolulu',\n\t\tlabel: t('timezone.hawaii', { value: 'GMT -10:00', defaultValue: '{{value}} Hawaii' })\n\t},\n\t{\n\t\tvalue: 'America/Anchorage',\n\t\tlabel: t('timezone.alaska', { value: 'GMT -09:00', defaultValue: '{{value}} Alaska' })\n\t},\n\t{\n\t\tvalue: 'America/Los_Angeles',\n\t\tlabel: t('timezone.us_canada_pacific', {\n\t\t\tvalue: 'GMT -08:00',\n\t\t\tdefaultValue: '{{value}} US/Canada Pacific'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'America/Tijuana',\n\t\tlabel: t('timezone.baja_california', {\n\t\t\tvalue: 'GMT -08:00',\n\t\t\tdefaultValue: '{{value}} Baja California'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'America/Denver',\n\t\tlabel: t('timezone.us_canada_mountain', {\n\t\t\tvalue: 'GMT -07:00',\n\t\t\tdefaultValue: '{{value}} US/Canada Mountain'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'America/Chihuahua',\n\t\tlabel: t('timezone.chihuahua_la_paz_mazatlan', {\n\t\t\tvalue: 'GMT -07:00',\n\t\t\tdefaultValue: '{{value}} Chihuahua, La Paz, Mazatlan'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'America/Phoenix',\n\t\tlabel: t('timezone.arizona', { value: 'GMT -07:00', defaultValue: '{{value}} Arizona' })\n\t},\n\t{\n\t\tvalue: 'America/Chicago',\n\t\tlabel: t('timezone.us_canada_central', {\n\t\t\tvalue: 'GMT -06:00',\n\t\t\tdefaultValue: '{{value}} US/Canada Central'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'America/Regina',\n\t\tlabel: t('timezone.saskatchewan', {\n\t\t\tvalue: 'GMT -06:00',\n\t\t\tdefaultValue: '{{value}} Saskatchewan'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'America/Mexico_City',\n\t\tlabel: t('timezone.guadalajara_mexico_city_monterrey ', {\n\t\t\tvalue: 'GMT -06:00 ',\n\t\t\tdefaultValue: '{{value}} Guadalajara, Mexico City, Monterrey '\n\t\t})\n\t},\n\t{\n\t\tvalue: 'America/Guatemala',\n\t\tlabel: t('timezone.central_america', {\n\t\t\tvalue: 'GMT -06:00',\n\t\t\tdefaultValue: '{{value}} Central America'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'America/New_York',\n\t\tlabel: t('timezone.us_canada_eastern', {\n\t\t\tvalue: 'GMT -05:00',\n\t\t\tdefaultValue: '{{value}} US/Canada Eastern'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'America/Indiana/Indianapolis',\n\t\tlabel: t('timezone.indiana_east', {\n\t\t\tvalue: 'GMT -05:00',\n\t\t\tdefaultValue: '{{value}} Indiana (East)'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'America/Bogota',\n\t\tlabel: t('timezone.colombia', { value: 'GMT -05:00', defaultValue: '{{value}} Colombia' })\n\t},\n\t{\n\t\tvalue: 'America/Caracas',\n\t\tlabel: t('timezone.caracas', { value: 'GMT -04:30', defaultValue: '{{value}} Caracas' })\n\t},\n\t{\n\t\tvalue: 'America/Santiago',\n\t\tlabel: t('timezone.pacific_south_america', {\n\t\t\tvalue: 'GMT -04:00',\n\t\t\tdefaultValue: '{{value}} Pacific South America'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'America/Manaus',\n\t\tlabel: t('timezone.manaus', { value: 'GMT -04:00', defaultValue: '{{value}} Manaus' })\n\t},\n\t{\n\t\tvalue: 'America/La_Paz',\n\t\tlabel: t('timezone.la_paz', { value: 'GMT -04:00', defaultValue: '{{value}} La Paz' })\n\t},\n\t{\n\t\tvalue: 'America/Guyana',\n\t\tlabel: t('timezone.georgetown_la_paz_manaus_san_juan', {\n\t\t\tvalue: 'GMT -04:00',\n\t\t\tdefaultValue: '{{value}} Georgetown, La Paz, Manaus, San Juan'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'America/Cuiaba',\n\t\tlabel: t('timezone.cuiaba', { value: 'GMT -04:00', defaultValue: '{{value}} Cuiaba' })\n\t},\n\t{\n\t\tvalue: 'America/Halifax',\n\t\tlabel: t('timezone.atlantic_time_canada', {\n\t\t\tvalue: 'GMT -04:00',\n\t\t\tdefaultValue: '{{value}} Atlantic Time (Canada)'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'America/Asuncion',\n\t\tlabel: t('timezone.asuncion', { value: 'GMT -04:00 ', defaultValue: '{{value}} Asuncion' })\n\t},\n\t{\n\t\tvalue: 'America/St_Johns',\n\t\tlabel: t('timezone.newfoundland', {\n\t\t\tvalue: 'GMT -03:30',\n\t\t\tdefaultValue: '{{value}} Newfoundland'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'America/Montevideo',\n\t\tlabel: t('timezone.montevideo', { value: 'GMT -03:00', defaultValue: '{{value}} Montevideo' })\n\t},\n\t{\n\t\tvalue: 'America/Godthab',\n\t\tlabel: t('timezone.greenland', { value: 'GMT -03:00', defaultValue: '{{value}} Greenland' })\n\t},\n\t{\n\t\tvalue: 'America/Cayenne',\n\t\tlabel: t('timezone.cayenne_fortaleza', {\n\t\t\tvalue: 'GMT -03:00',\n\t\t\tdefaultValue: '{{value}} Cayenne, Fortaleza'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'America/Sao_Paulo',\n\t\tlabel: t('timezone.brasilia', { value: 'GMT -03:00', defaultValue: '{{value}} Brasilia' })\n\t},\n\t{\n\t\tvalue: 'America/Argentina/Buenos_Aires',\n\t\tlabel: t('timezone.argentina', { value: 'GMT -03:00', defaultValue: '{{value}} Argentina' })\n\t},\n\t{\n\t\tvalue: 'Atlantic/South_Georgia',\n\t\tlabel: t('timezone.mid_atlantic', {\n\t\t\tvalue: 'GMT -02:00',\n\t\t\tdefaultValue: '{{value}} Mid-Atlantic'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Etc/GMT+2',\n\t\tlabel: t('timezone.gmt_02', { value: 'GMT -02:00', defaultValue: '{{value}} GMT-02' })\n\t},\n\t{\n\t\tvalue: 'Atlantic/Cape_Verde',\n\t\tlabel: t('timezone.cape_verde_is', {\n\t\t\tvalue: 'GMT -01:00',\n\t\t\tdefaultValue: '{{value}} Cape Verde Is.'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Atlantic/Azores',\n\t\tlabel: t('timezone.azores', { value: 'GMT -01:00', defaultValue: '{{value}} Azores' })\n\t},\n\t{\n\t\tvalue: 'UTC',\n\t\tlabel: t('timezone.coordinated_universal_time', {\n\t\t\tvalue: 'GMT/UTC',\n\t\t\tdefaultValue: '{{value}} Coordinated Universal Time'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Europe/London',\n\t\tlabel: t('timezone.britain_ireland_portugal', {\n\t\t\tvalue: 'GMT +00:00',\n\t\t\tdefaultValue: '{{value}} Britain, Ireland, Portugal'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Africa/Casablanca',\n\t\tlabel: t('timezone.casablanca', { value: 'GMT +00:00', defaultValue: '{{value}} Casablanca' })\n\t},\n\t{\n\t\tvalue: 'Africa/Monrovia',\n\t\tlabel: t('timezone.monrovia', { value: 'GMT +00:00', defaultValue: '{{value}} Monrovia' })\n\t},\n\t{\n\t\tvalue: 'Europe/Berlin',\n\t\tlabel: t('timezone.amsterdam_berlin_bern_rome_stockholm_vienna', {\n\t\t\tvalue: 'GMT +01:00',\n\t\t\tdefaultValue: '{{value}} Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Europe/Belgrade',\n\t\tlabel: t('timezone.belgrade_bratislava_budapest_ljubljana_prague', {\n\t\t\tvalue: 'GMT +01:00',\n\t\t\tdefaultValue: '{{value}} Belgrade, Bratislava, Budapest, Ljubljana, Prague'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Europe/Brussels',\n\t\tlabel: t('timezone.brussels_copenhagen_madrid_paris ', {\n\t\t\tvalue: 'GMT +01:00 ',\n\t\t\tdefaultValue: '{{value}} Brussels, Copenhagen, Madrid, Paris '\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Africa/Windhoek',\n\t\tlabel: t('timezone.namibia', { value: 'GMT +01:00', defaultValue: '{{value}} Namibia' })\n\t},\n\t{\n\t\tvalue: 'Europe/Warsaw',\n\t\tlabel: t('timezone.sarajevo_skopje_warsaw_zagreb', {\n\t\t\tvalue: 'GMT +01:00',\n\t\t\tdefaultValue: '{{value}} Sarajevo, Skopje, Warsaw, Zagreb'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Africa/Algiers',\n\t\tlabel: t('timezone.west_central_africa', {\n\t\t\tvalue: 'GMT +01:00',\n\t\t\tdefaultValue: '{{value}} West Central Africa'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Europe/Athens',\n\t\tlabel: t('timezone.athens_beirut_bucharest_istanbul', {\n\t\t\tvalue: 'GMT +02:00',\n\t\t\tdefaultValue: '{{value}} Athens, Beirut, Bucharest, Istanbul'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Asia/Beirut',\n\t\tlabel: t('timezone.beirut', { value: 'GMT +02:00', defaultValue: '{{value}} Beirut' })\n\t},\n\t{\n\t\tvalue: 'Asia/Damascus',\n\t\tlabel: t('timezone.damascus', { value: 'GMT +02:00', defaultValue: '{{value}} Damascus' })\n\t},\n\t{\n\t\tvalue: 'Africa/Cairo',\n\t\tlabel: t('timezone.egypt', { value: 'GMT +02:00', defaultValue: '{{value}} Egypt' })\n\t},\n\t{\n\t\tvalue: 'Africa/Harare',\n\t\tlabel: t('timezone.harare_pretoria', {\n\t\t\tvalue: 'GMT +02:00',\n\t\t\tdefaultValue: '{{value}} Harare, Pretoria'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Europe/Helsinki',\n\t\tlabel: t('timezone.helsinki_kyiv_riga_sofia_tallinn_vilnius', {\n\t\t\tvalue: 'GMT +02:00',\n\t\t\tdefaultValue: '{{value}} Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Europe/Istanbul',\n\t\tlabel: t('timezone.istanbul', { value: 'GMT +02:00', defaultValue: '{{value}} Istanbul' })\n\t},\n\t{\n\t\tvalue: 'Asia/Jerusalem',\n\t\tlabel: t('timezone.jerusalem', { value: 'GMT +02:00', defaultValue: '{{value}} Jerusalem' })\n\t},\n\t{\n\t\tvalue: 'Asia/Amman',\n\t\tlabel: t('timezone.jordan', { value: 'GMT +02:00', defaultValue: '{{value}} Jordan' })\n\t},\n\t{\n\t\tvalue: 'Europe/Kaliningrad',\n\t\tlabel: t('timezone.kaliningrad_rtz_1', {\n\t\t\tvalue: 'GMT +02:00',\n\t\t\tdefaultValue: '{{value}} Kaliningrad (RTZ 1)'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Asia/Baghdad',\n\t\tlabel: t('timezone.iraq', { value: 'GMT +03:00', defaultValue: '{{value}} Iraq' })\n\t},\n\t{\n\t\tvalue: 'Asia/Kuwait',\n\t\tlabel: t('timezone.kuwait_riyadh', {\n\t\t\tvalue: 'GMT +03:00',\n\t\t\tdefaultValue: '{{value}} Kuwait, Riyadh'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Europe/Minsk',\n\t\tlabel: t('timezone.minsk', { value: 'GMT +03:00', defaultValue: '{{value}} Minsk' })\n\t},\n\t{\n\t\tvalue: 'Europe/Moscow',\n\t\tlabel: t('timezone.moscow_st_petersburg_volgograd_rtz_2', {\n\t\t\tvalue: 'GMT +03:00',\n\t\t\tdefaultValue: '{{value}} Moscow, St. Petersburg, Volgograd (RTZ 2)'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Africa/Nairobi',\n\t\tlabel: t('timezone.nairobi', { value: 'GMT +03:00', defaultValue: '{{value}} Nairobi' })\n\t},\n\t{\n\t\tvalue: 'Asia/Tehran',\n\t\tlabel: t('timezone.tehran', { value: 'GMT +03:30', defaultValue: '{{value}} Tehran' })\n\t},\n\t{\n\t\tvalue: 'Asia/Muscat',\n\t\tlabel: t('timezone.abu_dhabi_muscat', {\n\t\t\tvalue: 'GMT +04:00',\n\t\t\tdefaultValue: '{{value}} Abu Dhabi, Muscat'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Asia/Baku',\n\t\tlabel: t('timezone.baku', { value: 'GMT +04:00', defaultValue: '{{value}} Baku' })\n\t},\n\t{\n\t\tvalue: 'Indian/Mauritius',\n\t\tlabel: t('timezone.port_louis', { value: 'GMT +04:00', defaultValue: '{{value}} Port Louis' })\n\t},\n\t{\n\t\tvalue: 'Asia/Tbilisi',\n\t\tlabel: t('timezone.tbilisi', { value: 'GMT +04:00', defaultValue: '{{value}} Tbilisi' })\n\t},\n\t{\n\t\tvalue: 'Asia/Yerevan',\n\t\tlabel: t('timezone.yerevan', { value: 'GMT +04:00', defaultValue: '{{value}} Yerevan' })\n\t},\n\t{\n\t\tvalue: 'Asia/Kabul',\n\t\tlabel: t('timezone.kabul', { value: 'GMT +04:30', defaultValue: '{{value}} Kabul' })\n\t},\n\t{\n\t\tvalue: 'Asia/Yekaterinburg',\n\t\tlabel: t('timezone.ekaterinburg_rtz_4', {\n\t\t\tvalue: 'GMT +05:00',\n\t\t\tdefaultValue: '{{value}} Ekaterinburg (RTZ 4)'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Asia/Colombo',\n\t\tlabel: t('timezone.sri_jayawardenepura_kotte', {\n\t\t\tvalue: 'GMT +05:30',\n\t\t\tdefaultValue: '{{value}} Sri Jayawardenepura Kotte'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Asia/Kolkata',\n\t\tlabel: t('timezone.chennai_kolkata_mumbai_new_delhi', {\n\t\t\tvalue: 'GMT +05:30',\n\t\t\tdefaultValue: '{{value}} Chennai, Kolkata, Mumbai, New Delhi'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Asia/Kathmandu',\n\t\tlabel: t('timezone.kathmandu', { value: 'GMT +05:45', defaultValue: '{{value}} Kathmandu' })\n\t},\n\t{\n\t\tvalue: 'Asia/Dhaka',\n\t\tlabel: t('timezone.dhaka', { value: 'GMT +06:00', defaultValue: '{{value}} Dhaka' })\n\t},\n\t{\n\t\tvalue: 'Asia/Yangon',\n\t\tlabel: t('timezone.yangon', { value: 'GMT +06:30 ', defaultValue: '{{value}} Yangon' })\n\t},\n\t{\n\t\tvalue: 'Asia/Bangkok',\n\t\tlabel: t('timezone.bangkok_hanoi_jakarta', {\n\t\t\tvalue: 'GMT +07:00',\n\t\t\tdefaultValue: '{{value}} Bangkok, Hanoi, Jakarta'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Asia/Krasnoyarsk',\n\t\tlabel: t('timezone.krasnoyarsk_rtz_6', {\n\t\t\tvalue: 'GMT +07:00',\n\t\t\tdefaultValue: '{{value}} Krasnoyarsk (RTZ 6)'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Asia/Hong_Kong',\n\t\tlabel: t('timezone.beijing_chongqing_hong_kong_urumqi', {\n\t\t\tvalue: 'GMT +08:00',\n\t\t\tdefaultValue: '{{value}} Beijing, Chongqing, Hong Kong, Urumqi'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Asia/Irkutsk',\n\t\tlabel: t('timezone.irkutsk_rtz_7', {\n\t\t\tvalue: 'GMT +08:00',\n\t\t\tdefaultValue: '{{value}} Irkutsk (RTZ 7)'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Australia/Eucla',\n\t\tlabel: t('timezone.eucla', { value: 'GMT +08:45', defaultValue: '{{value}} Eucla' })\n\t},\n\t{\n\t\tvalue: 'Asia/Chita',\n\t\tlabel: t('timezone.chita', { value: 'GMT +09:00', defaultValue: '{{value}} Chita' })\n\t},\n\t{\n\t\tvalue: 'Asia/Pyongyang',\n\t\tlabel: t('timezone.pyongyang', { value: 'GMT +08:30 ', defaultValue: '{{value}} Pyongyang' })\n\t},\n\t{\n\t\tvalue: 'Asia/Seoul',\n\t\tlabel: t('timezone.korea', { value: 'GMT +09:00 ', defaultValue: '{{value}} Korea' })\n\t},\n\t{\n\t\tvalue: 'Australia/Darwin',\n\t\tlabel: t('timezone.darwin', { value: 'GMT +09:30', defaultValue: '{{value}} Darwin' })\n\t},\n\t{\n\t\tvalue: 'Asia/Vladivostok',\n\t\tlabel: t('timezone.vladivostok_magadan', {\n\t\t\tvalue: 'GMT +10:00',\n\t\t\tdefaultValue: '{{value}} vladivostok_magadan_rtz_9'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Asia/Magadan',\n\t\tlabel: t('timezone.magadan', { value: 'GMT +11:00', defaultValue: '{{value}} Magadan' })\n\t},\n\t{\n\t\tvalue: 'Asia/Kamchatka',\n\t\tlabel: t('timezone.anadyr_petropavlovsk_kamchatsky_rtz11', {\n\t\t\tvalue: 'GMT +12:00',\n\t\t\tdefaultValue: '{{value}} Anadyr, Petropavlovsk-Kamchatsky (RTZ 11)'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Pacific/Tongatapu',\n\t\tlabel: t('timezone.nuku_alofa', { value: 'GMT +13:00', defaultValue: '{{value}} Nuku’alofa' })\n\t},\n\t{\n\t\tvalue: 'Pacific/Kiritimati',\n\t\tlabel: t('timezone.christmas_island', {\n\t\t\tvalue: 'GMT +14:00',\n\t\t\tdefaultValue: '{{value}} Christmas Island'\n\t\t})\n\t}\n];\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useState, useCallback, FC, useEffect, useMemo } from 'react';\nimport { Container, Checkbox, Text, Icon, Padding } from '@zextras/carbonio-design-system';\n\nimport moment from 'moment';\nimport DateTimePicker from 'react-widgets/lib/DateTimePicker';\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport momentLocalizer from 'react-widgets-moment';\nimport { useTranslation } from 'react-i18next';\nimport { AccountSettings } from '../../../types';\nimport Heading from './settings-heading';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport Styler from './date-picker-style';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { changeDateEvent, getDateEvent, startOfDate, endOfDate } from './utils';\n\nmomentLocalizer();\n\nconst DateTimeSelect: FC<{\n\tsettings: AccountSettings;\n\taddMod: (type: 'prefs' | 'props', key: string, value: { value: any; app: string }) => void;\n\tsendAutoReply: boolean;\n}> = ({ settings, addMod, sendAutoReply }) => {\n\tconst { t } = useTranslation();\n\tconst [dateDisabled, setDateDisabled] = useState<boolean>(false);\n\tconst [sendAutoReplyTimePeriod, setSendAutoReplyTimePeriod] = useState<boolean>(\n\t\t!!(\n\t\t\tsettings.prefs.zimbraPrefOutOfOfficeFromDate && settings.prefs.zimbraPrefOutOfOfficeUntilDate\n\t\t)\n\t);\n\n\tconst [dateZimbraPrefOutOfOfficeFromDate, setZimbraPrefOutOfOfficeFromDate] = useState<string>(\n\t\tsettings.prefs.zimbraPrefOutOfOfficeFromDate as string\n\t);\n\n\tconst [dateZimbraPrefOutOfOfficeUntilDate, setZimbraPrefOutOfOfficeUntilDate] = useState<string>(\n\t\tsettings.prefs.zimbraPrefOutOfOfficeUntilDate as string\n\t);\n\tconst [allDay, setAllDay] = useState<boolean>(false);\n\tconst [allDayDisabled, setAllDayDisabled] = useState<boolean>(false);\n\tconst [timeDisabled, setTimeDisabled] = useState<boolean>(false);\n\tconst updatePrefs = useCallback(\n\t\t(v, p) => {\n\t\t\taddMod('prefs', p, v);\n\t\t},\n\t\t[addMod]\n\t);\n\n\tuseEffect(() => {\n\t\tif (sendAutoReply) {\n\t\t\tif (sendAutoReplyTimePeriod) {\n\t\t\t\tsetTimeDisabled(false);\n\t\t\t\tsetAllDayDisabled(false);\n\t\t\t\tsetDateDisabled(false);\n\t\t\t} else {\n\t\t\t\tsetAllDayDisabled(true);\n\t\t\t\tsetTimeDisabled(true);\n\t\t\t\tsetDateDisabled(true);\n\t\t\t}\n\t\t\tif (allDay) {\n\t\t\t\tsetZimbraPrefOutOfOfficeFromDate(startOfDate(dateZimbraPrefOutOfOfficeFromDate));\n\t\t\t\tupdatePrefs(\n\t\t\t\t\tstartOfDate(dateZimbraPrefOutOfOfficeFromDate),\n\t\t\t\t\t'zimbraPrefOutOfOfficeFromDate'\n\t\t\t\t);\n\t\t\t\tsetZimbraPrefOutOfOfficeUntilDate(endOfDate(dateZimbraPrefOutOfOfficeUntilDate));\n\t\t\t\tupdatePrefs(\n\t\t\t\t\tendOfDate(dateZimbraPrefOutOfOfficeUntilDate),\n\t\t\t\t\t'zimbraPrefOutOfOfficeUntilDate'\n\t\t\t\t);\n\n\t\t\t\tsetTimeDisabled(true);\n\t\t\t}\n\t\t} else {\n\t\t\tsetDateDisabled(true);\n\t\t\tsetTimeDisabled(true);\n\t\t\tsetAllDay(false);\n\t\t\tsetAllDayDisabled(true);\n\t\t}\n\t}, [\n\t\tsettings.prefs.zimbraPrefOutOfOfficeFromDate,\n\t\tupdatePrefs,\n\t\tdateZimbraPrefOutOfOfficeFromDate,\n\t\tdateZimbraPrefOutOfOfficeUntilDate,\n\t\tallDay,\n\t\tsendAutoReply,\n\t\tsendAutoReplyTimePeriod\n\t]);\n\tconst toggleSendAutoReplyTimePeriod = (): void => {\n\t\tsetSendAutoReplyTimePeriod(!sendAutoReplyTimePeriod);\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<Heading title={t('settings.out_of_office.headings.time_period', 'Time Period')} />\n\t\t\t<Checkbox\n\t\t\t\tlabel={t(\n\t\t\t\t\t'settings.out_of_office.labels.send_auto_reply_period',\n\t\t\t\t\t'Send auto-replies during the following period:'\n\t\t\t\t)}\n\t\t\t\tvalue={sendAutoReplyTimePeriod}\n\t\t\t\tonClick={toggleSendAutoReplyTimePeriod}\n\t\t\t\tdisabled={!sendAutoReply}\n\t\t\t/>\n\t\t\t<Styler orientation=\"horizontal\" allDay height=\"fit\" mainAlignment=\"space-between\">\n\t\t\t\t<Container\n\t\t\t\t\tcrossAlignment=\"flex-start\"\n\t\t\t\t\tstyle={{ maxWidth: '50%' }}\n\t\t\t\t\tpadding={{ all: 'small' }}\n\t\t\t\t>\n\t\t\t\t\t<Padding bottom=\"extrasmall\">\n\t\t\t\t\t\t<Text size=\"small\">{t('settings.out_of_office.labels.start_date', 'Start Date')}</Text>\n\t\t\t\t\t</Padding>\n\t\t\t\t\t<DateTimePicker\n\t\t\t\t\t\tdisabled={dateDisabled}\n\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\tdateZimbraPrefOutOfOfficeFromDate\n\t\t\t\t\t\t\t\t? getDateEvent(dateZimbraPrefOutOfOfficeFromDate)\n\t\t\t\t\t\t\t\t: new Date()\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttime={false}\n\t\t\t\t\t\tonChange={(value: any): void => {\n\t\t\t\t\t\t\tsetZimbraPrefOutOfOfficeFromDate(changeDateEvent(value));\n\t\t\t\t\t\t\tupdatePrefs(changeDateEvent(value), 'zimbraPrefOutOfOfficeFromDate');\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tmoment(value).diff(getDateEvent(dateZimbraPrefOutOfOfficeUntilDate), 'minutes') >= 0\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tsetZimbraPrefOutOfOfficeUntilDate(\n\t\t\t\t\t\t\t\t\tchangeDateEvent(new Date(moment(value).add(1, 'd').valueOf()))\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tupdatePrefs(\n\t\t\t\t\t\t\t\t\tchangeDateEvent(new Date(moment(value).add(1, 'd').valueOf())),\n\t\t\t\t\t\t\t\t\t'zimbraPrefOutOfOfficeUntilDate'\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tdateIcon={\n\t\t\t\t\t\t\t<Padding all=\"small\">\n\t\t\t\t\t\t\t\t<Icon icon=\"CalendarOutline\" />\n\t\t\t\t\t\t\t</Padding>\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttimeIcon={\n\t\t\t\t\t\t\t<Padding all=\"small\">\n\t\t\t\t\t\t\t\t<Icon icon=\"ClockOutline\" />\n\t\t\t\t\t\t\t</Padding>\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</Container>\n\t\t\t\t<Container\n\t\t\t\t\tcrossAlignment=\"flex-start\"\n\t\t\t\t\tstyle={{ maxWidth: '50%' }}\n\t\t\t\t\tpadding={{ all: 'small' }}\n\t\t\t\t>\n\t\t\t\t\t<Padding bottom=\"extrasmall\">\n\t\t\t\t\t\t<Text size=\"small\">{t('settings.out_of_office.labels.end_date', 'End Date')}</Text>\n\t\t\t\t\t</Padding>\n\t\t\t\t\t<DateTimePicker\n\t\t\t\t\t\tdisabled={dateDisabled}\n\t\t\t\t\t\tinputProps={{ readOnly: true }}\n\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\tdateZimbraPrefOutOfOfficeUntilDate\n\t\t\t\t\t\t\t\t? getDateEvent(dateZimbraPrefOutOfOfficeUntilDate)\n\t\t\t\t\t\t\t\t: new Date()\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttime={false}\n\t\t\t\t\t\tonChange={(value: any): void => {\n\t\t\t\t\t\t\tsetZimbraPrefOutOfOfficeUntilDate(changeDateEvent(value));\n\t\t\t\t\t\t\tupdatePrefs(changeDateEvent(value), 'zimbraPrefOutOfOfficeUntilDate');\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tmoment(value).diff(getDateEvent(dateZimbraPrefOutOfOfficeFromDate), 'minutes') <= 0\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tsetZimbraPrefOutOfOfficeFromDate(\n\t\t\t\t\t\t\t\t\tchangeDateEvent(new Date(moment(value).subtract(1, 'd').valueOf()))\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tupdatePrefs(\n\t\t\t\t\t\t\t\t\tchangeDateEvent(new Date(moment(value).subtract(1, 'd').valueOf())),\n\t\t\t\t\t\t\t\t\t'zimbraPrefOutOfOfficeFromDate'\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tdateIcon={\n\t\t\t\t\t\t\t<Padding all=\"small\">\n\t\t\t\t\t\t\t\t<Icon icon=\"CalendarOutline\" />\n\t\t\t\t\t\t\t</Padding>\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttimeIcon={\n\t\t\t\t\t\t\t<Padding all=\"small\">\n\t\t\t\t\t\t\t\t<Icon icon=\"ClockOutline\" />\n\t\t\t\t\t\t\t</Padding>\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</Container>\n\t\t\t</Styler>\n\n\t\t\t<Container crossAlignment=\"flex-start\">\n\t\t\t\t<Checkbox\n\t\t\t\t\tdisabled={allDayDisabled}\n\t\t\t\t\tlabel={t('settings.out_of_office.labels.all_day', 'All Day:')}\n\t\t\t\t\tvalue={allDay}\n\t\t\t\t\tonClick={(): void => {\n\t\t\t\t\t\tsetAllDay(!allDay);\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t</Container>\n\t\t\t<Styler orientation=\"horizontal\" allDay height=\"fit\" mainAlignment=\"space-between\">\n\t\t\t\t<Container\n\t\t\t\t\tcrossAlignment=\"flex-start\"\n\t\t\t\t\tstyle={{ maxWidth: '50%' }}\n\t\t\t\t\tpadding={{ all: 'small' }}\n\t\t\t\t>\n\t\t\t\t\t<Padding bottom=\"extrasmall\">\n\t\t\t\t\t\t<Text size=\"small\">{t('settings.out_of_office.labels.start_time', 'Start Time:')}</Text>\n\t\t\t\t\t</Padding>\n\t\t\t\t\t<DateTimePicker\n\t\t\t\t\t\tdisabled={timeDisabled}\n\t\t\t\t\t\tdate={false}\n\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\tdateZimbraPrefOutOfOfficeFromDate\n\t\t\t\t\t\t\t\t? getDateEvent(dateZimbraPrefOutOfOfficeFromDate)\n\t\t\t\t\t\t\t\t: new Date()\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttime\n\t\t\t\t\t\tonChange={(value: any): void => {\n\t\t\t\t\t\t\tsetZimbraPrefOutOfOfficeFromDate(changeDateEvent(value));\n\t\t\t\t\t\t\tupdatePrefs(changeDateEvent(value), 'zimbraPrefOutOfOfficeFromDate');\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tmoment(value).diff(getDateEvent(dateZimbraPrefOutOfOfficeUntilDate), 'minutes') >= 0\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tsetZimbraPrefOutOfOfficeUntilDate(\n\t\t\t\t\t\t\t\t\tchangeDateEvent(new Date(moment(value).add(1, 'd').valueOf()))\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tupdatePrefs(\n\t\t\t\t\t\t\t\t\tchangeDateEvent(new Date(moment(value).add(1, 'd').valueOf())),\n\t\t\t\t\t\t\t\t\t'zimbraPrefOutOfOfficeUntilDate'\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tdateIcon={\n\t\t\t\t\t\t\t<Padding all=\"small\">\n\t\t\t\t\t\t\t\t<Icon icon=\"CalendarOutline\" />\n\t\t\t\t\t\t\t</Padding>\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttimeIcon={\n\t\t\t\t\t\t\t<Padding all=\"small\">\n\t\t\t\t\t\t\t\t<Icon icon=\"ClockOutline\" />\n\t\t\t\t\t\t\t</Padding>\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</Container>\n\t\t\t\t<Container\n\t\t\t\t\tcrossAlignment=\"flex-start\"\n\t\t\t\t\tstyle={{ maxWidth: '50%' }}\n\t\t\t\t\tpadding={{ all: 'small' }}\n\t\t\t\t>\n\t\t\t\t\t<Padding bottom=\"extrasmall\">\n\t\t\t\t\t\t<Text size=\"small\">{t('settings.out_of_office.labels.end_time', 'End Time:')}</Text>\n\t\t\t\t\t</Padding>\n\t\t\t\t\t<DateTimePicker\n\t\t\t\t\t\tdisabled={timeDisabled}\n\t\t\t\t\t\tdate={false}\n\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\tdateZimbraPrefOutOfOfficeUntilDate\n\t\t\t\t\t\t\t\t? getDateEvent(dateZimbraPrefOutOfOfficeUntilDate)\n\t\t\t\t\t\t\t\t: new Date()\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttime\n\t\t\t\t\t\tonChange={(value: any): void => {\n\t\t\t\t\t\t\tsetZimbraPrefOutOfOfficeUntilDate(changeDateEvent(value));\n\t\t\t\t\t\t\tupdatePrefs(changeDateEvent(value), 'zimbraPrefOutOfOfficeUntilDate');\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tmoment(value).diff(getDateEvent(dateZimbraPrefOutOfOfficeFromDate), 'minutes') <= 0\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tsetZimbraPrefOutOfOfficeFromDate(\n\t\t\t\t\t\t\t\t\tchangeDateEvent(new Date(moment(value).subtract(1, 'd').valueOf()))\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tupdatePrefs(\n\t\t\t\t\t\t\t\t\tchangeDateEvent(new Date(moment(value).subtract(1, 'd').valueOf())),\n\t\t\t\t\t\t\t\t\t'zimbraPrefOutOfOfficeFromDate'\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ttimeIcon={\n\t\t\t\t\t\t\t<Padding all=\"small\">\n\t\t\t\t\t\t\t\t<Icon icon=\"ClockOutline\" />\n\t\t\t\t\t\t\t</Padding>\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</Container>\n\t\t\t</Styler>\n\t\t</>\n\t);\n};\n\nexport default DateTimeSelect;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useState, useCallback, FC, useEffect, useMemo } from 'react';\nimport {\n\tContainer,\n\tFormSubSection,\n\tInput,\n\tCheckbox,\n\tSelect,\n\tPadding\n} from '@zextras/carbonio-design-system';\n\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport momentLocalizer from 'react-widgets-moment';\nimport { useTranslation } from 'react-i18next';\nimport { AccountSettings } from '../../../../types';\nimport Heading from '../settings-heading';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport DateTimeSelect from '../date-time-select-view';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport {\n\tItemsExternalSenders,\n\tgetExternalSendersPrefsData,\n\tItemsOutOfOfficeStatus,\n\tgetOutOfOfficeStatusPrefsData,\n\tItemsSendAutoReplies\n} from '../utils';\nimport { outOfOfficeSubSection } from '../../general-settings-sub-sections';\n\nmomentLocalizer();\n\nconst OutOfOfficeView: FC<{\n\tsettings: AccountSettings;\n\taddMod: (type: 'prefs' | 'props', key: string, value: { value: any; app: string }) => void;\n}> = ({ settings, addMod }) => {\n\tconst { t } = useTranslation();\n\tconst [sendAutoReply, setSendAutoReply] = useState<boolean>(\n\t\tsettings.prefs.zimbraPrefOutOfOfficeReplyEnabled === 'TRUE'\n\t);\n\tconst [inputZimbraPrefOutOfOfficeReply, setInputZimbraPrefOutOfOfficeReply] = useState<string>(\n\t\tsettings.prefs.zimbraPrefOutOfOfficeReply as string\n\t);\n\n\tconst [inputZimbraPrefOutOfOfficeExternalReply, setInputZimbraPrefOutOfOfficeExternalReply] =\n\t\tuseState<string>(settings.prefs.zimbraPrefOutOfOfficeExternalReply as string);\n\n\tconst [createAppointmentDisabled, setCreateAppointmentDisabled] = useState<boolean>(false);\n\tconst [externalReplyInput, setExternalReplyInput] = useState<boolean>(\n\t\tsettings.prefs.zimbraPrefOutOfOfficeExternalReplyEnabled === 'TRUE'\n\t);\n\n\tconst [createAppointment, setCreateAppointment] = useState<boolean>(true);\n\n\tconst updatePrefs = useCallback(\n\t\t(v, p) => {\n\t\t\taddMod('prefs', p, v);\n\t\t},\n\t\t[addMod]\n\t);\n\n\tuseEffect(() => {\n\t\tif (sendAutoReply) {\n\t\t\tsetCreateAppointmentDisabled(false);\n\t\t} else {\n\t\t\tsetCreateAppointmentDisabled(true);\n\t\t}\n\t}, [\n\t\tsendAutoReply,\n\t\tsettings.prefs.zimbraPrefOutOfOfficeFromDate,\n\t\tupdatePrefs,\n\t\tsetCreateAppointment,\n\t\tsetCreateAppointmentDisabled\n\t]);\n\n\tconst externalSendersHandler = (v: any): void => {\n\t\tsetExternalReplyInput(false);\n\n\t\tif (v === 'SEND_AUTO_REPLY') {\n\t\t\tupdatePrefs('FALSE', 'zimbraPrefOutOfOfficeSuppressExternalReply');\n\t\t\tupdatePrefs('FALSE', 'zimbraPrefOutOfOfficeExternalReplyEnabled');\n\t\t\tupdatePrefs('INSD', 'zimbraPrefExternalSendersType');\n\t\t} else if (v === 'SEND_NOT_IN_ORG') {\n\t\t\tupdatePrefs('ALLNOTINAB', 'zimbraPrefExternalSendersType');\n\t\t\tupdatePrefs('TRUE', 'zimbraPrefOutOfOfficeExternalReplyEnabled');\n\t\t\tupdatePrefs('FALSE', 'zimbraPrefOutOfOfficeSuppressExternalReply');\n\t\t\tsetExternalReplyInput(true);\n\t\t} else if (v === 'SHOW_EXTERNAL_INPUT') {\n\t\t\tupdatePrefs('ALL', 'zimbraPrefExternalSendersType');\n\t\t\tupdatePrefs('FALSE', 'zimbraPrefOutOfOfficeExternalReplyEnabled');\n\t\t\tupdatePrefs('INSD', 'zimbraPrefOutOfOfficeSuppressExternalReply');\n\t\t\tsetExternalReplyInput(true);\n\t\t} else {\n\t\t\tupdatePrefs('TRUE', 'zimbraPrefOutOfOfficeSuppressExternalReply');\n\t\t\tupdatePrefs('INAB', 'zimbraPrefExternalSendersType');\n\t\t\tupdatePrefs('FALSE', 'zimbraPrefOutOfOfficeExternalReplyEnabled');\n\t\t}\n\t};\n\n\tconst createAppointmentAsHandler = (v: any): void => {\n\t\tupdatePrefs(v, 'zimbraPrefOutOfOfficeFreeBusyStatus');\n\t};\n\n\tconst itemsSendAutoReplies = useMemo(() => ItemsSendAutoReplies(t), [t]);\n\tconst itemsExternalSenders = useMemo(() => ItemsExternalSenders(t), [t]);\n\tconst itemsOutOfOfficeStatus = useMemo(() => ItemsOutOfOfficeStatus(t), [t]);\n\tconst sectionTitle = useMemo(() => outOfOfficeSubSection(t), [t]);\n\treturn (\n\t\t<FormSubSection\n\t\t\tlabel={sectionTitle.label}\n\t\t\tminWidth=\"calc(min(100%, 512px))\"\n\t\t\twidth=\"50%\"\n\t\t\tid={sectionTitle.id}\n\t\t>\n\t\t\t<Container crossAlignment=\"baseline\" padding={{ all: 'small' }}>\n\t\t\t\t<Select\n\t\t\t\t\titems={itemsSendAutoReplies}\n\t\t\t\t\tbackground=\"gray5\"\n\t\t\t\t\tlabel={t('label.out_of_office', 'Out of Office')}\n\t\t\t\t\tonChange={(value: any): void => {\n\t\t\t\t\t\tupdatePrefs(value, 'zimbraPrefOutOfOfficeReplyEnabled');\n\t\t\t\t\t\tsetSendAutoReply(!sendAutoReply);\n\t\t\t\t\t}}\n\t\t\t\t\tdefaultSelection={\n\t\t\t\t\t\tsettings.prefs.zimbraPrefOutOfOfficeReplyEnabled === 'TRUE'\n\t\t\t\t\t\t\t? itemsSendAutoReplies[0]\n\t\t\t\t\t\t\t: itemsSendAutoReplies[1]\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t<Padding top=\"small\" width=\"100%\">\n\t\t\t\t\t<Input\n\t\t\t\t\t\tonChange={(e: React.ChangeEvent<HTMLInputElement>): void => {\n\t\t\t\t\t\t\tsetInputZimbraPrefOutOfOfficeReply(e.target.value);\n\t\t\t\t\t\t\tupdatePrefs(e.target.value, 'zimbraPrefOutOfOfficeReply');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tautoComplete=\"on\"\n\t\t\t\t\t\tlabel={t('settings.out_of_office.labels.auto_reply_message', 'Auto-Reply Message:')}\n\t\t\t\t\t\tbackgroundColor=\"gray5\"\n\t\t\t\t\t\tvalue={inputZimbraPrefOutOfOfficeReply || ''}\n\t\t\t\t\t\tdisabled={!sendAutoReply}\n\t\t\t\t\t/>\n\t\t\t\t</Padding>\n\t\t\t\t<Padding top=\"small\" width=\"100%\">\n\t\t\t\t\t<Select\n\t\t\t\t\t\tdisabled={!sendAutoReply}\n\t\t\t\t\t\titems={itemsExternalSenders}\n\t\t\t\t\t\tbackground=\"gray5\"\n\t\t\t\t\t\tlabel={t('settings.out_of_office.labels.external_senders', 'External Senders')}\n\t\t\t\t\t\tonChange={(value: unknown): void => {\n\t\t\t\t\t\t\texternalSendersHandler(value);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tdefaultSelection={{\n\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\tlabel: getExternalSendersPrefsData(settings, 'label', t),\n\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\tvalue: getExternalSendersPrefsData(settings, 'value', t)\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</Padding>\n\t\t\t\t{externalReplyInput && (\n\t\t\t\t\t<Padding top=\"small\" width=\"100%\">\n\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\tonChange={(e: React.ChangeEvent<HTMLInputElement>): void => {\n\t\t\t\t\t\t\t\tsetInputZimbraPrefOutOfOfficeExternalReply(e.target.value);\n\t\t\t\t\t\t\t\tupdatePrefs(e.target.value, 'zimbraPrefOutOfOfficeExternalReply');\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tautoComplete=\"on\"\n\t\t\t\t\t\t\tlabel={t(\n\t\t\t\t\t\t\t\t'settings.out_of_office.labels.auto_reply_message_external',\n\t\t\t\t\t\t\t\t'Auto-Reply Message for External senders:'\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\tbackgroundColor=\"gray5\"\n\t\t\t\t\t\t\tvalue={inputZimbraPrefOutOfOfficeExternalReply || ''}\n\t\t\t\t\t\t\tdisabled={!sendAutoReply}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Padding>\n\t\t\t\t)}\n\t\t\t</Container>\n\t\t\t<Container crossAlignment=\"baseline\" padding={{ all: 'small' }}>\n\t\t\t\t<DateTimeSelect settings={settings} addMod={addMod} sendAutoReply={sendAutoReply} />\n\t\t\t\t<Container crossAlignment=\"flex-start\">\n\t\t\t\t\t<Heading\n\t\t\t\t\t\ttitle={t('settings.out_of_office.headings.create_appointment', 'Calendar Appointment')}\n\t\t\t\t\t/>\n\t\t\t\t\t<Checkbox\n\t\t\t\t\t\tdisabled={createAppointmentDisabled}\n\t\t\t\t\t\tlabel={t('settings.out_of_office.labels.create_appointment', 'Create Appointment:')}\n\t\t\t\t\t\tvalue={createAppointment}\n\t\t\t\t\t\tonClick={(value: any): void => {\n\t\t\t\t\t\t\tsetCreateAppointment(!createAppointment);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</Container>\n\t\t\t\t<Container crossAlignment=\"baseline\" padding={{ all: 'small' }}>\n\t\t\t\t\t<Padding top=\"small\" width=\"50%\">\n\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\tdisabled={createAppointmentDisabled}\n\t\t\t\t\t\t\titems={itemsOutOfOfficeStatus}\n\t\t\t\t\t\t\tbackground=\"gray5\"\n\t\t\t\t\t\t\tlabel={t(\n\t\t\t\t\t\t\t\t'settings.out_of_office.labels.out_of_office_status',\n\t\t\t\t\t\t\t\t'Out Of Office Status:'\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\tonChange={(value: unknown): void => {\n\t\t\t\t\t\t\t\tcreateAppointmentAsHandler(value);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tdefaultSelection={{\n\t\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\t\tlabel: getOutOfOfficeStatusPrefsData(settings, 'label', t),\n\t\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\t\tvalue: getOutOfOfficeStatusPrefsData(settings, 'value', t)\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Padding>\n\t\t\t\t</Container>\n\t\t\t</Container>\n\t\t</FormSubSection>\n\t);\n};\n\nexport default OutOfOfficeView;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { FC, useMemo } from 'react';\nimport { Quota, Container, FormSubSection, Text, Tooltip } from '@zextras/carbonio-design-system';\nimport { useTranslation } from 'react-i18next';\nimport { useUserSettings } from '../../../store/account/hooks';\nimport { useAccountStore } from '../../../store/account/store';\nimport { quotaSubSection } from '../../general-settings-sub-sections';\n\ninterface UserQuotaProps {\n\tmobileView: boolean;\n}\n\nconst UserQuota: FC<UserQuotaProps> = ({ mobileView }) => {\n\tconst [t] = useTranslation();\n\n\tconst settings = useUserSettings();\n\tconst used = useAccountStore((s) => s.usedQuota);\n\tconst quota = useMemo(() => {\n\t\tconst userQuota = Number(settings?.attrs?.zimbraMailQuota);\n\t\tif (used && userQuota && userQuota > 0) {\n\t\t\treturn Math.round((used / userQuota) * 100);\n\t\t}\n\t\treturn -1;\n\t}, [settings?.attrs?.zimbraMailQuota, used]);\n\n\tconst description = useMemo(() => {\n\t\tswitch (true) {\n\t\t\tcase !quota || quota < 0:\n\t\t\t\treturn t('user_quota.unlimited', 'You have unlimited space available');\n\t\t\tcase quota === 100:\n\t\t\t\treturn t('user_quota.space_full', 'It seems that all available space is full');\n\t\t\tdefault:\n\t\t\t\treturn t('user_quota.limited', {\n\t\t\t\t\tdefaultValue: 'You have filled {{quota}}% of the available space',\n\t\t\t\t\tquota\n\t\t\t\t});\n\t\t}\n\t}, [quota, t]);\n\n\tconst fillBackground = useMemo(() => {\n\t\tswitch (true) {\n\t\t\tcase quota >= 95:\n\t\t\t\treturn 'error';\n\t\t\tcase quota >= 90:\n\t\t\t\treturn 'warning';\n\t\t\tcase quota === -1:\n\t\t\t\treturn 'gray4';\n\t\t\tdefault:\n\t\t\t\treturn 'primary';\n\t\t}\n\t}, [quota]);\n\tconst sectionTitle = useMemo(() => quotaSubSection(t), [t]);\n\treturn mobileView ? (\n\t\t<Container width=\"fit\" padding={{ right: 'medium' }}>\n\t\t\t<Tooltip label={description} placement=\"bottom\">\n\t\t\t\t<Quota fill={quota > 0 ? quota : 0} fillBackground={fillBackground} />\n\t\t\t</Tooltip>\n\t\t</Container>\n\t) : (\n\t\t<FormSubSection\n\t\t\tlabel={sectionTitle.label}\n\t\t\tminWidth=\"calc(min(100%, 512px))\"\n\t\t\twidth=\"50%\"\n\t\t\tid={sectionTitle.id}\n\t\t>\n\t\t\t<Container width=\"fill\" padding={{ vertical: 'medium' }}>\n\t\t\t\t<Container\n\t\t\t\t\torientation=\"horizontal\"\n\t\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t\t\ttakeAvailableSpace\n\t\t\t\t\tpadding={{ bottom: 'medium' }}\n\t\t\t\t>\n\t\t\t\t\t<Text orientation=\"left\">{description}</Text>\n\t\t\t\t</Container>\n\t\t\t\t<Quota fill={quota === -1 ? 100 : quota} fillBackground={fillBackground} />\n\t\t\t</Container>\n\t\t</FormSubSection>\n\t);\n};\n\nexport default UserQuota;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useCallback, FC, useMemo } from 'react';\nimport {\n\tContainer,\n\tFormSubSection,\n\tModal,\n\tSelect,\n\tText,\n\tPadding\n} from '@zextras/carbonio-design-system';\n\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport momentLocalizer from 'react-widgets-moment';\nimport { useTranslation } from 'react-i18next';\nimport { find } from 'lodash';\nimport { AccountSettings } from '../../types';\nimport { localeList, timeZoneList } from './components/utils';\nimport { timezoneAndLanguageSubSection } from './general-settings-sub-sections';\n\nmomentLocalizer();\n\nconst LanguageAndTimeZone: FC<{\n\tsettings: AccountSettings;\n\topen: boolean;\n\tsetOpen: (arg: boolean) => any;\n\taddMod: (type: 'prefs' | 'props', key: string, value: { value: any; app: string }) => void;\n}> = ({ settings, addMod, open, setOpen }) => {\n\tconst { t } = useTranslation();\n\tconst locales = useMemo(() => localeList(t), [t]);\n\tconst timezones = useMemo(() => timeZoneList(t), [t]);\n\tconst updatePrefs = useCallback(\n\t\t(v, p) => {\n\t\t\taddMod('prefs', p, v);\n\t\t},\n\t\t[addMod]\n\t);\n\n\tconst defaultSelection = useMemo(\n\t\t() =>\n\t\t\tsettings.prefs.zimbraPrefLocale && find(locales, { id: settings.prefs.zimbraPrefLocale })\n\t\t\t\t? find(locales, { id: settings.prefs.zimbraPrefLocale })\n\t\t\t\t: locales[5],\n\t\t[locales, settings.prefs.zimbraPrefLocale]\n\t);\n\n\tconst defaultTimeZone = useMemo(\n\t\t() =>\n\t\t\tsettings.prefs.zimbraPrefTimeZoneId &&\n\t\t\tfind(timezones, { value: settings.prefs.zimbraPrefTimeZoneId })\n\t\t\t\t? find(timezones, { value: settings.prefs.zimbraPrefTimeZoneId })\n\t\t\t\t: timezones[39],\n\t\t[timezones, settings.prefs.zimbraPrefTimeZoneId]\n\t);\n\tconst sectionTitle = useMemo(() => timezoneAndLanguageSubSection(t), [t]);\n\treturn (\n\t\t<FormSubSection\n\t\t\tlabel={sectionTitle.label}\n\t\t\tminWidth=\"calc(min(100%, 512px))\"\n\t\t\twidth=\"50%\"\n\t\t\tid={sectionTitle.id}\n\t\t>\n\t\t\t<Container crossAlignment=\"baseline\" padding={{ all: 'small' }}>\n\t\t\t\t{Object.keys(settings.prefs).length > 0 && (\n\t\t\t\t\t<Select\n\t\t\t\t\t\titems={locales}\n\t\t\t\t\t\tbackground=\"gray5\"\n\t\t\t\t\t\tlabel={t('label.language', 'Language')}\n\t\t\t\t\t\tonChange={(value: any): void => {\n\t\t\t\t\t\t\tupdatePrefs(value, 'zimbraPrefLocale');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tdefaultSelection={defaultSelection}\n\t\t\t\t\t\tshowCheckbox={false}\n\t\t\t\t\t\tdropdownMaxHeight=\"200px\"\n\t\t\t\t\t\tselectedBackgroundColor=\"highlight\"\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t<Padding top=\"small\" width=\"100%\">\n\t\t\t\t\t{Object.keys(settings.prefs).length > 0 && (\n\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\titems={timezones}\n\t\t\t\t\t\t\tbackground=\"gray5\"\n\t\t\t\t\t\t\tlabel={t('label.time_zone', 'Time Zone')}\n\t\t\t\t\t\t\tonChange={(value: any): void => {\n\t\t\t\t\t\t\t\tupdatePrefs(value, 'zimbraPrefTimeZoneId');\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tdefaultSelection={defaultTimeZone}\n\t\t\t\t\t\t\tshowCheckbox={false}\n\t\t\t\t\t\t\tdropdownMaxHeight=\"200px\"\n\t\t\t\t\t\t\tselectedBackgroundColor=\"highlight\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</Padding>\n\t\t\t\t<Modal\n\t\t\t\t\ttitle={t('label.reload', 'Reload')}\n\t\t\t\t\topen={open}\n\t\t\t\t\tdismissLabel={t('label.no', 'No')}\n\t\t\t\t\tonConfirm={(): void => window.location.reload()}\n\t\t\t\t\tconfirmLabel={t('label.reload', 'Reload')}\n\t\t\t\t\tonClose={(): void => setOpen(false)}\n\t\t\t\t>\n\t\t\t\t\t<Text overflow=\"break-word\">\n\t\t\t\t\t\t{t(\n\t\t\t\t\t\t\t'message.reload',\n\t\t\t\t\t\t\t`\tWould you like to reload the application now to show the new language?\n\t\t\t\t\t\t\t(Otherwise, the new language will appear the next time you sign in.)`\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Text>\n\t\t\t\t</Modal>\n\t\t\t</Container>\n\t\t</FormSubSection>\n\t);\n};\n\nexport default LanguageAndTimeZone;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useState, FC, useCallback, useEffect, useMemo } from 'react';\nimport { Container, FormSubSection, Checkbox } from '@zextras/carbonio-design-system';\nimport { useTranslation } from 'react-i18next';\nimport { AccountSettings } from '../../types';\nimport { searchPrefsSubSection } from './general-settings-sub-sections';\n\nconst SearchSettingsView: FC<{\n\tsettings: AccountSettings;\n\taddMod: (type: 'prefs' | 'props', key: string, value: { value: any; app: string }) => void;\n}> = ({ settings, addMod }) => {\n\tconst { t } = useTranslation();\n\tconst [searchInSpamFolder, setSearchInSpamFolder] = useState<boolean>(\n\t\tsettings.prefs.zimbraPrefIncludeSpamInSearch === 'TRUE'\n\t);\n\tconst [searchInTrashFolder, setSearchInTrashFolder] = useState<boolean>(\n\t\tsettings.prefs.zimbraPrefIncludeTrashInSearch === 'TRUE'\n\t);\n\tconst [searchInSharedFolder, setSearchInSharedFolder] = useState<boolean>(\n\t\tsettings.prefs.zimbraPrefIncludeSharedItemsInSearch === 'TRUE'\n\t);\n\tconst setMode = useCallback(\n\t\t(v, p) => {\n\t\t\tconst value: any = v ? 'TRUE' : 'FALSE';\n\t\t\taddMod('prefs', p, value);\n\t\t},\n\t\t[addMod]\n\t);\n\n\tuseEffect(() => {\n\t\tsetSearchInSpamFolder(settings.prefs.zimbraPrefIncludeSpamInSearch === 'TRUE');\n\t}, [settings.prefs.zimbraPrefIncludeSpamInSearch]);\n\tuseEffect(() => {\n\t\tsetSearchInTrashFolder(settings.prefs.zimbraPrefIncludeTrashInSearch === 'TRUE');\n\t}, [settings.prefs.zimbraPrefIncludeTrashInSearch]);\n\tuseEffect(() => {\n\t\tsetSearchInSharedFolder(settings.prefs.zimbraPrefIncludeSharedItemsInSearch === 'TRUE');\n\t}, [settings.prefs.zimbraPrefIncludeSharedItemsInSearch]);\n\n\tconst onClickSpam = useCallback(() => {\n\t\tsetSearchInSpamFolder(!searchInSpamFolder);\n\t\tsetMode(!searchInSpamFolder, 'zimbraPrefIncludeSpamInSearch');\n\t}, [searchInSpamFolder, setMode]);\n\tconst onClickTrash = useCallback(() => {\n\t\tsetSearchInTrashFolder(!searchInTrashFolder);\n\t\tsetMode(!searchInTrashFolder, 'zimbraPrefIncludeTrashInSearch');\n\t}, [searchInTrashFolder, setMode]);\n\tconst onClickShared = useCallback(() => {\n\t\tsetSearchInSharedFolder(!searchInSharedFolder);\n\t\tsetMode(!searchInSharedFolder, 'zimbraPrefIncludeSharedItemsInSearch');\n\t}, [searchInSharedFolder, setMode]);\n\tconst sectionTitle = useMemo(() => searchPrefsSubSection(t), [t]);\n\treturn (\n\t\t<FormSubSection\n\t\t\tlabel={sectionTitle.label}\n\t\t\tminWidth=\"calc(min(100%, 512px))\"\n\t\t\twidth=\"50%\"\n\t\t\tid={sectionTitle.id}\n\t\t>\n\t\t\t<Container crossAlignment=\"baseline\" padding={{ all: 'small' }}>\n\t\t\t\t<Checkbox\n\t\t\t\t\tlabel={t(\n\t\t\t\t\t\t'settings.search_settings.labels.include_search_in_spam_folder',\n\t\t\t\t\t\t'Include Spam Folder in Searches'\n\t\t\t\t\t)}\n\t\t\t\t\tvalue={searchInSpamFolder}\n\t\t\t\t\tonClick={onClickSpam}\n\t\t\t\t/>\n\t\t\t\t<Checkbox\n\t\t\t\t\tlabel={t(\n\t\t\t\t\t\t'settings.search_settings.labels.include_search_in_trash_folder',\n\t\t\t\t\t\t'Include Trash Folder in Searches'\n\t\t\t\t\t)}\n\t\t\t\t\tvalue={searchInTrashFolder}\n\t\t\t\t\tonClick={onClickTrash}\n\t\t\t\t/>\n\t\t\t\t<Checkbox\n\t\t\t\t\tlabel={t(\n\t\t\t\t\t\t'settings.search_settings.labels.include_search_in_shared_folder',\n\t\t\t\t\t\t'Include Shared Folder in Searches'\n\t\t\t\t\t)}\n\t\t\t\t\tvalue={searchInSharedFolder}\n\t\t\t\t\tonClick={onClickShared}\n\t\t\t\t/>\n\t\t\t</Container>\n\t\t</FormSubSection>\n\t);\n};\n\nexport default SearchSettingsView;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useCallback, useState, FC, useMemo } from 'react';\nimport { Container, useSnackbar } from '@zextras/carbonio-design-system';\nimport { useTranslation } from 'react-i18next';\nimport { includes, isEmpty } from 'lodash';\nimport { useUserSettings } from '../store/account';\nimport Logout from './components/general-settings/logout';\nimport AppearanceSettings from './components/general-settings/appearance-settings';\nimport ModuleVersionSettings from './components/general-settings/module-version-settings';\nimport OutOfOfficeSettings from './components/general-settings/out-of-office-view';\nimport UserQuota from './components/general-settings/user-quota';\nimport { editSettings } from '../network/edit-settings';\nimport { Mods } from '../../types';\nimport LanguageAndTimeZoneSettings from './language-and-timezone-settings';\nimport SearchSettingsView from './search-settings-view';\nimport SettingsHeader from './components/settings-header';\n\nconst GeneralSettings: FC = () => {\n\tconst [mods, setMods] = useState<Mods>({});\n\tconst [t] = useTranslation();\n\tconst settings = useUserSettings();\n\tconst [open, setOpen] = useState(false);\n\tconst addMod = useCallback((type: 'props' | 'prefs', key, value) => {\n\t\tsetMods((m) => ({\n\t\t\t...m,\n\t\t\t[type]: {\n\t\t\t\t...m?.[type],\n\t\t\t\t[key]: value\n\t\t\t}\n\t\t}));\n\t}, []);\n\tconst createSnackbar = useSnackbar();\n\n\tconst onSave = useCallback(() => {\n\t\teditSettings(mods)\n\t\t\t.then(() => {\n\t\t\t\tif (mods.prefs && includes(Object.keys(mods.prefs), 'zimbraPrefLocale')) {\n\t\t\t\t\tsetOpen(true);\n\t\t\t\t}\n\t\t\t\tcreateSnackbar({\n\t\t\t\t\tkey: `new`,\n\t\t\t\t\treplace: true,\n\t\t\t\t\ttype: 'info',\n\t\t\t\t\tlabel: t('message.snackbar.settings_saved', 'Edits saved correctly'),\n\t\t\t\t\tautoHideTimeout: 3000,\n\t\t\t\t\thideButton: true\n\t\t\t\t});\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\tcreateSnackbar({\n\t\t\t\t\tkey: `new`,\n\t\t\t\t\treplace: true,\n\t\t\t\t\ttype: 'error',\n\t\t\t\t\tlabel: t('snackbar.error', 'Something went wrong, please try again'),\n\t\t\t\t\tautoHideTimeout: 3000,\n\t\t\t\t\thideButton: true\n\t\t\t\t});\n\t\t\t});\n\t\tsetMods({});\n\t}, [createSnackbar, mods, t]);\n\tconst onCancel = useCallback(() => {\n\t\tsetMods({});\n\t}, []);\n\tconst isDirty = useMemo(() => !isEmpty(mods), [mods]);\n\tconst title = useMemo(() => t('settings.general.general', 'General Settings'), [t]);\n\n\treturn (\n\t\t<>\n\t\t\t<SettingsHeader title={title} onCancel={onCancel} onSave={onSave} isDirty={isDirty} />\n\t\t\t<Container\n\t\t\t\tbackground=\"gray5\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t\tpadding={{ all: 'medium' }}\n\t\t\t\tstyle={{ overflow: 'auto' }}\n\t\t\t>\n\t\t\t\t<AppearanceSettings settings={settings} addMod={addMod} />\n\t\t\t\t<LanguageAndTimeZoneSettings\n\t\t\t\t\tsettings={settings}\n\t\t\t\t\taddMod={addMod}\n\t\t\t\t\topen={open}\n\t\t\t\t\tsetOpen={setOpen}\n\t\t\t\t/>\n\n\t\t\t\t<OutOfOfficeSettings settings={settings} addMod={addMod} />\n\t\t\t\t<SearchSettingsView settings={settings} addMod={addMod} />\n\t\t\t\t<ModuleVersionSettings />\n\t\t\t\t<UserQuota mobileView={false} />\n\t\t\t\t<Logout />\n\t\t\t</Container>\n\t\t</>\n\t);\n};\n\nexport default GeneralSettings;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, {\n\tuseEffect,\n\tuseState,\n\tuseCallback,\n\tuseReducer,\n\tuseMemo,\n\tFC,\n\tuseContext\n} from 'react';\nimport {\n\tText,\n\tButton,\n\tSelect,\n\tContainer,\n\tRow,\n\tIcon,\n\tSnackbarManagerContext\n} from '@zextras/carbonio-design-system';\nimport { Severity, Event } from '@sentry/browser';\nimport { filter, find, map } from 'lodash';\nimport styled from 'styled-components';\nimport { TFunction, useTranslation } from 'react-i18next';\nimport { useUserAccount } from '../store/account';\nimport { useRemoveCurrentBoard } from '../shell/boards/board-hooks';\nimport { feedback } from './functions';\nimport { useAppList } from '../store/app';\n\nconst TextArea = styled.textarea<{ size?: string }>`\n\twidth: 100%;\n\tmin-height: 128px;\n\tbox-sizing: border-box;\n\toutline: none;\n\tborder: none;\n\tbackground: ${({ theme }): string => theme.palette.gray5.regular};\n\tresize: none;\n\ttransition: height 0.4s ease;\n\tcolor: ${({ theme }): string => theme.palette.text.regular};\n\tfont-family: ${({ theme }): string => theme.fonts.default};\n\tfont-size: ${({ theme, size }): string => theme.sizes.font[size ?? 'medium']};\n\t&:focus {\n\t\tbackground: ${({ theme }): string => theme.palette.gray4.regular};\n\t\toutline: none;\n\t}\n`;\n\nconst TextContainer = styled(Container)`\n\ttext-align: justify;\n\talign-items: left;\n\twidth: 80%;\n`;\n\nconst ButtonContainer = styled(Container)`\n\twidth: 20%;\n\tposition: relative;\n`;\n\nconst TAContainer = styled(Container)`\n\tbackground: ${({ theme }): string => theme.palette.gray5.regular};\n\tborder-radius: 2px 2px 0 0;\n\tpadding: 8px;\n\ttransition: height 0.4s ease;\n\theight: auto;\n\tmax-height: 50%;\n\t&:focus-within {\n\t\tbackground: ${({ theme }): string => theme.palette.gray4.regular};\n\t\toutline: none;\n\t\tborder-bottom: 1px solid ${({ theme }): string => theme.palette.primary.regular};\n\t}\n`;\n\nconst SubHeadingText = styled(Text)`\n\tborder-radius: 2px 2px 0 0;\n\tline-height: 21px;\n\tfont-size: 14px;\n\tfont-weight: 300;\n\tmargin-top: 10px;\n\tline-height: ${(props): string => props.lineHeight};\n`;\n\nconst LabelContainer = styled(Container)`\n\tborder-bottom: 1px solid ${(props): string => (props.disabled ? 'red' : '#cfd5dc')};\n`;\n\nconst emptyEvent: Event = {\n\tmessage: '',\n\tlevel: Severity.Info,\n\trelease: 'unknown',\n\textra: {\n\t\tapp: '0',\n\t\ttopic: '0'\n\t},\n\tuser: {}\n};\n\nfunction reducer(state: Event, { type, payload }: { type: string; payload: any }): Event {\n\tswitch (type) {\n\t\tcase 'set-user':\n\t\t\treturn { ...state, user: payload };\n\t\tcase 'reset':\n\t\t\treturn emptyEvent;\n\t\tcase 'set-message':\n\t\t\treturn { ...state, message: payload };\n\t\tcase 'select-app':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\trelease: payload.version,\n\t\t\t\textra: { ...state.extra, app: payload.app }\n\t\t\t};\n\t\tcase 'select-topic':\n\t\t\treturn { ...state, extra: { ...state.extra, topic: payload } };\n\t\tdefault:\n\t\t\treturn state;\n\t}\n}\n\nconst getTopics = (t: TFunction): Array<{ label: string; value: string }> => [\n\t{ label: t('feedback.user_interface', 'User interface'), value: 'UserInterface' },\n\t{ label: t('feedback.behaviors', 'Behaviors'), value: 'Behaviors' },\n\t{ label: t('feedback.missing_features', 'Missing features'), value: 'MissingFeatures' },\n\t{ label: t('feedback.other', 'Other'), value: 'Other' }\n];\n\nconst ModuleLabelFactory: FC<{\n\tselected: Array<{ label: string; value: string }>;\n\tlabel: string;\n\topen: boolean;\n\tfocus: boolean;\n}> = ({ selected, label, open, focus }) => (\n\t<LabelContainer\n\t\torientation=\"horizontal\"\n\t\twidth=\"fill\"\n\t\tcrossAlignment=\"center\"\n\t\tmainAlignment=\"space-between\"\n\t\tborderRadius=\"half\"\n\t\tbackground=\"gray5\"\n\t\tpadding={{\n\t\t\tall: 'small'\n\t\t}}\n\t>\n\t\t<Row takeAvailableSpace mainAlignment=\"unset\">\n\t\t\t<Text size=\"medium\" color={open || focus ? 'primary' : 'secondary'}>\n\t\t\t\t{selected.length > 0 ? selected[0].label : label}\n\t\t\t</Text>\n\t\t</Row>\n\t\t<Icon\n\t\t\tsize=\"large\"\n\t\t\ticon={open ? 'ChevronUpOutline' : 'ChevronDownOutline'}\n\t\t\tcolor={open || focus ? 'primary' : 'secondary'}\n\t\t\tstyle={{ alignSelf: 'center' }}\n\t\t/>\n\t</LabelContainer>\n);\n\nconst _LabelFactory: FC<{\n\tselected: Array<{ label: string; value: string }>;\n\tlabel: string;\n\topen: boolean;\n\tfocus: boolean;\n\tshowErr: boolean;\n}> = ({ selected, label, open, focus, showErr }) => (\n\t<LabelContainer\n\t\tdisabled={showErr}\n\t\torientation=\"horizontal\"\n\t\twidth=\"fill\"\n\t\tcrossAlignment=\"center\"\n\t\tmainAlignment=\"space-between\"\n\t\tborderRadius=\"half\"\n\t\tbackground=\"gray5\"\n\t\tpadding={{\n\t\t\tall: 'small'\n\t\t}}\n\t>\n\t\t<Row takeAvailableSpace mainAlignment=\"unset\">\n\t\t\t{showErr ? (\n\t\t\t\t<Text size=\"medium\" color={(open && showErr) || focus ? 'primary' : 'error'}>\n\t\t\t\t\t{' '}\n\t\t\t\t\t{selected.length > 0 ? selected[0].label : label}\n\t\t\t\t</Text>\n\t\t\t) : (\n\t\t\t\t<Text size=\"medium\" color={open || focus ? 'primary' : 'secondary'}>\n\t\t\t\t\t{selected.length > 0 ? selected[0].label : label}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t</Row>\n\n\t\t{showErr ? (\n\t\t\t<Icon\n\t\t\t\tsize=\"large\"\n\t\t\t\ticon={open ? 'ChevronUpOutline' : 'ChevronDownOutline'}\n\t\t\t\tcolor={(open && showErr) || focus ? 'primary' : 'error'}\n\t\t\t\tstyle={{ alignSelf: 'center' }}\n\t\t\t/>\n\t\t) : (\n\t\t\t<Icon\n\t\t\t\tsize=\"large\"\n\t\t\t\ticon={open ? 'ChevronUpOutline' : 'ChevronDownOutline'}\n\t\t\t\tcolor={open || focus ? 'primary' : 'secondary'}\n\t\t\t\tstyle={{ alignSelf: 'center' }}\n\t\t\t/>\n\t\t)}\n\t</LabelContainer>\n);\n\nconst Feedback: FC = () => {\n\tconst [t] = useTranslation();\n\tconst topics = useMemo(() => getTopics(t), [t]);\n\tconst allApps = useAppList();\n\tconst apps = useMemo(\n\t\t() => filter(allApps, (app) => !!app.sentryDsn),\n\n\t\t[allApps]\n\t);\n\tconst appItems = useMemo(\n\t\t() =>\n\t\t\tmap(apps, (app) => ({\n\t\t\t\tlabel: app.display,\n\t\t\t\tvalue: app.name\n\t\t\t})),\n\t\t[apps]\n\t);\n\tconst acct = useUserAccount();\n\tconst [event, dispatch] = useReducer(reducer, emptyEvent);\n\tconst [showErr, setShowErr] = useState(false);\n\tconst [limit, setLimit] = useState(0);\n\n\tconst onAppSelect = useCallback(\n\t\t(ev) =>\n\t\t\tdispatch({\n\t\t\t\ttype: 'select-app',\n\t\t\t\tpayload: {\n\t\t\t\t\tapp: ev,\n\t\t\t\t\tversion: find(apps, ['name', ev])?.version\n\t\t\t\t}\n\t\t\t}),\n\t\t[apps]\n\t);\n\n\tconst onTopicSelect = useCallback((ev) => {\n\t\tsetShowErr(false);\n\t\tdispatch({ type: 'select-topic', payload: ev });\n\t}, []);\n\n\tconst onInputChange = useCallback((ev) => {\n\t\t// eslint-disable-next-line no-param-reassign\n\t\tev.target.style.height = 'auto';\n\t\t// eslint-disable-next-line no-param-reassign\n\t\tev.target.style.height = `${25 + ev.target.scrollHeight}px`;\n\t\tif (ev.target.value.length <= 500) {\n\t\t\tsetLimit(ev.target.value.length);\n\t\t\tdispatch({ type: 'set-message', payload: ev.target.value });\n\t\t}\n\t}, []);\n\n\tconst checkTopicSelect = useCallback(\n\t\t(ev) => {\n\t\t\tif (event.extra?.topic === '0') setShowErr(true);\n\t\t\telse setShowErr(false);\n\t\t\tif (ev.keyCode === 8) {\n\t\t\t\tif (event.message?.length === 0) {\n\t\t\t\t\tsetShowErr(false);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[setShowErr, event]\n\t);\n\n\tconst closeBoard = useRemoveCurrentBoard();\n\n\tconst createSnackbar = useContext(SnackbarManagerContext) as (snackbar: any) => void;\n\n\tconst confirmHandler = useCallback(() => {\n\t\tconst feedbackId = feedback(event);\n\t\tcreateSnackbar(\n\t\t\tfeedbackId\n\t\t\t\t? { type: 'success', label: t('feedback.success', 'Thank you for your feedback') }\n\t\t\t\t: {\n\t\t\t\t\t\ttype: 'error',\n\t\t\t\t\t\tlabel: t('feedback.error', 'There was an error while sending your feedback')\n\t\t\t\t }\n\t\t);\n\t\tcloseBoard();\n\t}, [event, createSnackbar, t, closeBoard]);\n\n\tuseEffect(() => {\n\t\tdispatch({\n\t\t\ttype: 'set-user',\n\t\t\tpayload: { id: acct.id, name: acct.displayName ?? acct.name }\n\t\t});\n\t}, [acct]);\n\n\tconst disabledSend = useMemo(\n\t\t() =>\n\t\t\t(event?.message?.length ?? 0) <= 0 || event.extra?.topic === '0' || event.extra?.app === '0',\n\t\t[event.message, event.extra?.topic, event.extra?.app]\n\t);\n\n\tconst LabelFactory = useCallback(\n\t\t(props) => <_LabelFactory {...props} showErr={showErr} />,\n\t\t[showErr]\n\t);\n\n\treturn (\n\t\t<Container padding={{ all: 'large' }} mainAlignment=\"space-around\">\n\t\t\t<Container orientation=\"horizontal\" height=\"fit\">\n\t\t\t\t<TextContainer mainAlignment=\"flex-start\" crossAlignment=\"flex-start\">\n\t\t\t\t\t<Text weight=\"bold\" size=\"18px\">\n\t\t\t\t\t\t{t('feedback.report_something', 'Do you want to report something?')}\n\t\t\t\t\t</Text>\n\t\t\t\t\t<SubHeadingText overflow=\"break-word\" lineHeight=\"21px\">\n\t\t\t\t\t\t{t(\n\t\t\t\t\t\t\t'feedback.explanation',\n\t\t\t\t\t\t\t'Please send us your feedback about your new experience with Zextras Server. Your opinion is meaningful for us to improve our product. So tell us what’s on your mind.'\n\t\t\t\t\t\t)}\n\t\t\t\t\t</SubHeadingText>\n\t\t\t\t\t<SubHeadingText overflow=\"break-word\">\n\t\t\t\t\t\t{t(\n\t\t\t\t\t\t\t'feedback.hint',\n\t\t\t\t\t\t\t'Remember: define the topic using module and macro area selectors before write your feedback. Thanks for your help.'\n\t\t\t\t\t\t)}\n\t\t\t\t\t</SubHeadingText>\n\t\t\t\t</TextContainer>\n\n\t\t\t\t<ButtonContainer crossAlignment=\"flex-end\" mainAlignment=\"baseline\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\tlabel={t('feedback.send', 'SEND')}\n\t\t\t\t\t\tonClick={confirmHandler}\n\t\t\t\t\t\tdisabled={disabledSend}\n\t\t\t\t\t/>\n\t\t\t\t</ButtonContainer>\n\t\t\t</Container>\n\t\t\t<Container\n\t\t\t\tpadding={{ bottom: 'medium' }}\n\t\t\t\theight=\"fit\"\n\t\t\t\tmainAlignment=\"space-between\"\n\t\t\t\tcrossAlignment=\"flex-start\"\n\t\t\t\torientation=\"horizontal\"\n\t\t\t>\n\t\t\t\t<Container mainAlignment=\"space-between\" crossAlignment=\"flex-start\" maxWidth=\"305px\">\n\t\t\t\t\t<Row padding={{ vertical: 'large' }}>\n\t\t\t\t\t\t<Text weight=\"bold\" size=\"14px\">\n\t\t\t\t\t\t\tModule\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</Row>\n\t\t\t\t\t<Select\n\t\t\t\t\t\tlabel={t('feedback.select_a_module', 'Select a module')}\n\t\t\t\t\t\titems={appItems}\n\t\t\t\t\t\tonChange={onAppSelect}\n\t\t\t\t\t\tLabelFactory={ModuleLabelFactory}\n\t\t\t\t\t/>\n\t\t\t\t</Container>\n\t\t\t\t<Container mainAlignment=\"space-between\" crossAlignment=\"flex-start\" maxWidth=\"305px\">\n\t\t\t\t\t<Row padding={{ vertical: 'large' }}>\n\t\t\t\t\t\t<Text weight=\"bold\" size=\"14px\">\n\t\t\t\t\t\t\tTopic\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</Row>\n\t\t\t\t\t<Select\n\t\t\t\t\t\tlabel={t('feedback.select_a_topic', 'Select a topic')}\n\t\t\t\t\t\tselection={find(topics, ['value', event.extra?.topic])}\n\t\t\t\t\t\titems={topics}\n\t\t\t\t\t\tonChange={onTopicSelect}\n\t\t\t\t\t\tLabelFactory={LabelFactory}\n\t\t\t\t\t\tmultiple={false}\n\t\t\t\t\t/>\n\t\t\t\t</Container>\n\t\t\t</Container>\n\t\t\t<TAContainer crossAlignment=\"flex-end\">\n\t\t\t\t<TextArea\n\t\t\t\t\tvalue={event.message}\n\t\t\t\t\tonKeyUp={checkTopicSelect}\n\t\t\t\t\tonChange={onInputChange}\n\t\t\t\t\tplaceholder={t('feedback.write_here', 'Write your feedback here')}\n\t\t\t\t/>\n\t\t\t\t<Text size=\"medium\" color=\"secondary\">\n\t\t\t\t\t{limit}/500\n\t\t\t\t</Text>\n\t\t\t</TAContainer>\n\t\t</Container>\n\t);\n};\n\nexport default Feedback;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useCallback, ReactElement, useMemo, useState, useContext } from 'react';\nimport {\n\tContainer,\n\tText,\n\tList,\n\tDivider,\n\tRow,\n\tPadding,\n\tButton,\n\tIcon,\n\tModalManagerContext\n} from '@zextras/carbonio-design-system';\nimport { TFunction } from 'i18next';\nimport { map, filter, max } from 'lodash';\nimport { IdentityProps, CreateIdentityProps } from '../../../../types';\n\ntype AccountsListProps = {\n\tt: TFunction;\n\tidentities: IdentityProps[];\n\tsetIdentities: (identities: IdentityProps[]) => void;\n\tselectedIdentityId: number;\n\tsetSelectedIdentityId: (value: number) => void;\n\tdeleteIdentities: (deleteList: string[]) => void;\n\tcreateIdentities: (createList: { prefs: CreateIdentityProps }[]) => void;\n};\n\ntype ListItemProps = {\n\tactive: boolean;\n\titem: IdentityProps;\n\tselected: boolean;\n\tsetSelected: () => void;\n\tbackground: string;\n\tselectedBackground: string;\n\tactiveBackground: string;\n};\n\nconst AccountsList = ({\n\tt,\n\tselectedIdentityId,\n\tidentities,\n\tsetIdentities,\n\tsetSelectedIdentityId,\n\tdeleteIdentities,\n\tcreateIdentities\n}: AccountsListProps): ReactElement => {\n\tconst changeView = (value: number): void => setSelectedIdentityId(value);\n\n\tconst ListItem = ({ item }: ListItemProps): ReactElement => (\n\t\t<>\n\t\t\t<Container\n\t\t\t\tonClick={(): void => {\n\t\t\t\t\tchangeView(Number(item.id));\n\t\t\t\t}}\n\t\t\t\torientation=\"horizontal\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t\tpadding={{ all: 'small' }}\n\t\t\t>\n\t\t\t\t<Row width=\"fill\" mainAlignment=\"space-between\">\n\t\t\t\t\t<Container orientation=\"horizontal\" mainAlignment=\"flex-start\" width=\"fit\">\n\t\t\t\t\t\t<Padding right=\"small\">\n\t\t\t\t\t\t\t<Icon icon=\"CheckmarkCircle2Outline\" size=\"large\" color=\"primary\" />\n\t\t\t\t\t\t</Padding>\n\t\t\t\t\t\t<Padding right=\"small\">\n\t\t\t\t\t\t\t<Text weight=\"regular\" size=\"small\">\n\t\t\t\t\t\t\t\t{item.identityName}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</Padding>\n\t\t\t\t\t\t<Padding right=\"small\">\n\t\t\t\t\t\t\t<Text weight=\"regular\" size=\"small\" color=\"secondary\">\n\t\t\t\t\t\t\t\t({item.fromAddress})\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</Padding>\n\t\t\t\t\t</Container>\n\t\t\t\t\t<Container width=\"fit\" mainAlignment=\"flex-end\">\n\t\t\t\t\t\t<Text weight=\"regular\" size=\"small\">\n\t\t\t\t\t\t\t{item.type}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</Container>\n\t\t\t\t</Row>\n\n\t\t\t\t<Row width=\"fit\"></Row>\n\t\t\t</Container>\n\t\t\t<Divider />\n\t\t</>\n\t);\n\n\tconst createModal = useContext(ModalManagerContext);\n\n\tconst [createListrequestId, setCreateListrequestId] = useState(0);\n\tconst [createList, setCreateList] = useState<{ prefs: CreateIdentityProps }[]>([]);\n\tconst addNewPersona = useCallback(() => {\n\t\tconst newPersonaNextNumber =\n\t\t\tNumber(\n\t\t\t\tmax([\n\t\t\t\t\t...filter(\n\t\t\t\t\t\tmap(\n\t\t\t\t\t\t\tmap(\n\t\t\t\t\t\t\t\tfilter(identities, (item) => item.identityName?.includes('New Persona')),\n\t\t\t\t\t\t\t\t(item: IdentityProps) => item.identityName\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t(item: string) => parseFloat(item.replace('New Persona ', ''))\n\t\t\t\t\t\t),\n\t\t\t\t\t\t(item) => Number(item)\n\t\t\t\t\t)\n\t\t\t\t])\n\t\t\t) + 1;\n\t\tconst newPersonaName = `New Persona ${newPersonaNextNumber || 1}`;\n\t\tidentities.push({\n\t\t\tid: `${identities.length}`,\n\t\t\ttype: t('label.persona', 'Persona'),\n\t\t\tidentityId: createListrequestId,\n\t\t\tfromAddress: identities[0]?.fromAddress,\n\t\t\tidentityName: newPersonaName,\n\t\t\tfromDisplay: identities[0]?.fromDisplay,\n\t\t\treplyToDisplay: '',\n\t\t\treplyToAddress: '',\n\t\t\treplyToEnabled: 'FALSE',\n\t\t\tsaveToSent: '',\n\t\t\tsentMailFolder: '',\n\t\t\twhenInFoldersEnabled: '',\n\t\t\twhenSentToEnabled: ''\n\t\t});\n\t\tsetIdentities(identities);\n\t\tsetCreateListrequestId(createListrequestId + 1);\n\t\tsetCreateList((state) => {\n\t\t\tstate.push({\n\t\t\t\tprefs: {\n\t\t\t\t\trequestId: createListrequestId,\n\t\t\t\t\tzimbraPrefIdentityName: newPersonaName,\n\t\t\t\t\tzimbraPrefFromDisplay: identities[0]?.fromDisplay,\n\t\t\t\t\tzimbraPrefFromAddress: identities[0]?.fromAddress,\n\t\t\t\t\tzimbraPrefFromAddressType: 'sendAs',\n\t\t\t\t\tzimbraPrefReplyToEnabled: 'FALSE',\n\t\t\t\t\tzimbraPrefReplyToDisplay: '',\n\t\t\t\t\tzimbraPrefReplyToAddress: '',\n\t\t\t\t\tzimbraPrefDefaultSignatureId: '',\n\t\t\t\t\tzimbraPrefForwardReplySignatureId: '',\n\t\t\t\t\tzimbraPrefWhenSentToEnabled: 'FALSE',\n\t\t\t\t\tzimbraPrefWhenInFoldersEnabled: 'FALSE'\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn state;\n\t\t});\n\t\tcreateIdentities(createList);\n\t\tsetSelectedIdentityId(identities.length - 1);\n\t}, [\n\t\tidentities,\n\t\tsetIdentities,\n\t\tt,\n\t\tcreateIdentities,\n\t\tcreateListrequestId,\n\t\tcreateList,\n\t\tsetSelectedIdentityId\n\t]);\n\n\tconst [deleteList, setDeleteList] = useState<string[]>([]);\n\tconst onConfirmDelete = useCallback((): void => {\n\t\tconst newIdentities = map(\n\t\t\tfilter(\n\t\t\t\tidentities,\n\t\t\t\t(identity) => identity?.identityId !== identities[selectedIdentityId]?.identityId\n\t\t\t),\n\t\t\t(item: IdentityProps, index: number) => ({ ...item, id: index.toString() })\n\t\t);\n\t\tsetDeleteList((state) => {\n\t\t\tstate.push(identities[selectedIdentityId]?.identityId.toString());\n\t\t\treturn state;\n\t\t});\n\t\tsetIdentities(newIdentities);\n\t\tdeleteIdentities(deleteList);\n\t\tsetSelectedIdentityId(selectedIdentityId - 1);\n\t}, [\n\t\tidentities,\n\t\tsetIdentities,\n\t\tdeleteIdentities,\n\t\tdeleteList,\n\t\tsetSelectedIdentityId,\n\t\tselectedIdentityId\n\t]);\n\tconst onDelete = useCallback((): void => {\n\t\t// I'm disabling lint as the DS is not defining the type\n\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t// @ts-ignore\n\t\tconst closeModal = createModal({\n\t\t\ttitle: t('label.permanent_delete_title', 'Are you sure to permanently delete this Persona?'),\n\t\t\tonConfirm: () => {\n\t\t\t\tonConfirmDelete();\n\t\t\t\tcloseModal();\n\t\t\t},\n\t\t\tconfirmLabel: t('label.delete_permanently', 'Delete permanently'),\n\t\t\tconfirmColor: 'error',\n\t\t\tshowCloseIcon: true,\n\t\t\tonClose: () => closeModal(),\n\t\t\tchildren: (\n\t\t\t\t<Padding all=\"small\">\n\t\t\t\t\t<Text overflow=\"break-word\">\n\t\t\t\t\t\t{t(\n\t\t\t\t\t\t\t'messages.permanent_delete_body',\n\t\t\t\t\t\t\t'If you permanently delete this Persona you will not be able to recover it. Continue?'\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Text>\n\t\t\t\t</Padding>\n\t\t\t)\n\t\t});\n\t}, [createModal, t, onConfirmDelete]);\n\n\treturn (\n\t\t<>\n\t\t\t<Container\n\t\t\t\tminWidth=\"calc(min(100%, 512px))\"\n\t\t\t\twidth=\"fill\"\n\t\t\t\tpadding={{ all: 'large' }}\n\t\t\t\theight=\"fit\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t>\n\t\t\t\t<Padding horizontal=\"medium\" bottom=\"large\" width=\"100%\">\n\t\t\t\t\t<Text weight=\"bold\">{t('label.accounts_list', 'Accounts list')}</Text>\n\t\t\t\t</Padding>\n\t\t\t\t<List\n\t\t\t\t\titems={identities}\n\t\t\t\t\tItemComponent={ListItem}\n\t\t\t\t\tactive={identities[selectedIdentityId]?.id}\n\t\t\t\t\theight=\"fit\"\n\t\t\t\t\tselectedIdentityId={selectedIdentityId}\n\t\t\t\t\tsetSelectedIdentityId={setSelectedIdentityId}\n\t\t\t\t/>\n\t\t\t</Container>\n\t\t\t<Row\n\t\t\t\tpadding={{ horizontal: 'large', bottom: 'large' }}\n\t\t\t\twidth=\"fill\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t>\n\t\t\t\t<Padding right=\"small\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\tlabel={t('label.add_external_account', 'Add external account')}\n\t\t\t\t\t\t// onClick={(): void => setSelectedIdentity({ type: 'POP' })}\n\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\ttype=\"outlined\"\n\t\t\t\t\t\tdisabled\n\t\t\t\t\t/>\n\t\t\t\t</Padding>\n\t\t\t\t<Padding right=\"small\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\tlabel={t('label.add_persona', 'Add persona')}\n\t\t\t\t\t\tonClick={(): void => addNewPersona()}\n\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\ttype=\"outlined\"\n\t\t\t\t\t/>\n\t\t\t\t</Padding>\n\t\t\t\t<Button\n\t\t\t\t\tlabel={t('label.delete', 'Delete')}\n\t\t\t\t\tonClick={(): void => onDelete()}\n\t\t\t\t\tcolor=\"error\"\n\t\t\t\t\ttype=\"outlined\"\n\t\t\t\t\tdisabled={identities[selectedIdentityId]?.type === t('label.primary', 'Primary')}\n\t\t\t\t/>\n\t\t\t</Row>\n\t\t\t<Padding bottom=\"large\" />\n\t\t</>\n\t);\n};\n\nexport default AccountsList;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useMemo, useCallback, ReactElement, useState, useEffect } from 'react';\nimport { Container, Text, Padding, Input, Row } from '@zextras/carbonio-design-system';\nimport { TFunction } from 'i18next';\nimport { IdentityProps } from '../../../../types';\n\ninterface PrimaryAccountSettingsProps {\n\tt: TFunction;\n\titems: IdentityProps;\n\tupdateIdentities: (modifyList: {\n\t\tid: string | number;\n\t\tkey: string;\n\t\tvalue: string | boolean;\n\t}) => void;\n}\n\nconst PrimaryAccountSettings = ({\n\tt,\n\titems,\n\tupdateIdentities\n}: PrimaryAccountSettingsProps): ReactElement => {\n\tconst emailValue = useMemo(() => items?.fromAddress, [items]);\n\tconst emailLabel = useMemo(\n\t\t() => (emailValue ? '' : t('label.email_address', 'E-mail address')),\n\t\t[emailValue, t]\n\t);\n\tconst [accountNameValue, setAccountNameValue] = useState(items?.identityName);\n\n\tuseEffect(() => setAccountNameValue(items.identityName), [items.identityName]);\n\tconst accountLabel = useMemo(\n\t\t() => (accountNameValue ? '' : t('label.account_name', 'Account Name')),\n\t\t[accountNameValue, t]\n\t);\n\n\tconst onChangeDisabled = useCallback(() => null, []);\n\tconst onChange = useCallback(\n\t\t(\n\t\t\tev: MouseEvent & {\n\t\t\t\ttarget: HTMLButtonElement;\n\t\t\t}\n\t\t): void => {\n\t\t\tsetAccountNameValue(ev.target.value);\n\n\t\t\tconst modifyProp = {\n\t\t\t\tid: items.identityId,\n\t\t\t\tkey: 'zimbraPrefIdentityName',\n\t\t\t\tvalue: ev.target.value\n\t\t\t};\n\n\t\t\tupdateIdentities(modifyProp);\n\t\t},\n\t\t[updateIdentities, items.identityId]\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<Container\n\t\t\t\tminWidth=\"calc(min(100%, 512px))\"\n\t\t\t\twidth=\"fill\"\n\t\t\t\tpadding={{ all: 'large' }}\n\t\t\t\theight=\"fit\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t>\n\t\t\t\t<Padding horizontal=\"medium\" width=\"100%\">\n\t\t\t\t\t<Text weight=\"bold\">{t('primary_account.title', 'Primary Account Settings')}</Text>\n\t\t\t\t</Padding>\n\t\t\t</Container>\n\t\t\t<Row\n\t\t\t\twidth=\"fill\"\n\t\t\t\tpadding={{ horizontal: 'large', bottom: 'large' }}\n\t\t\t\theight=\"fit\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t>\n\t\t\t\t<Row width=\"50%\" padding={{ right: 'small' }}>\n\t\t\t\t\t<Input\n\t\t\t\t\t\tlabel={emailLabel}\n\t\t\t\t\t\tvalue={emailValue || ' '}\n\t\t\t\t\t\tbackground=\"gray5\"\n\t\t\t\t\t\tonChange={onChangeDisabled}\n\t\t\t\t\t/>\n\t\t\t\t</Row>\n\t\t\t\t<Row width=\"50%\">\n\t\t\t\t\t<Input\n\t\t\t\t\t\tlabel={accountLabel}\n\t\t\t\t\t\tvalue={accountNameValue || ' '}\n\t\t\t\t\t\tbackground=\"gray5\"\n\t\t\t\t\t\tonChange={(\n\t\t\t\t\t\t\tev: MouseEvent & {\n\t\t\t\t\t\t\t\ttarget: HTMLButtonElement;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t): void => onChange(ev)}\n\t\t\t\t\t/>\n\t\t\t\t</Row>\n\t\t\t</Row>\n\t\t\t<Padding bottom=\"large\" />\n\t\t</>\n\t);\n};\n\nexport default PrimaryAccountSettings;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useMemo, useCallback, ReactElement, useState, useEffect } from 'react';\nimport {\n\tContainer,\n\tText,\n\tPadding,\n\tInput,\n\tRow,\n\tSelect,\n\tCheckbox,\n\tDropdown,\n\tIcon\n} from '@zextras/carbonio-design-system';\nimport { TFunction } from 'i18next';\nimport { filter, find } from 'lodash';\nimport { IdentityProps, Mods } from '../../../../types';\nimport { EMAIL_VALIDATION_REGEX } from '../../../constants';\n\ntype SettingsSentMessagesProps = {\n\tt: TFunction;\n\titems: IdentityProps;\n\tisExternalAccount: boolean;\n\tupdateIdentities: (modifyList: {\n\t\tid: string | number;\n\t\tkey: string;\n\t\tvalue: string | boolean;\n\t}) => void;\n};\n\nconst SettingsSentMessages = ({\n\tt,\n\titems,\n\tisExternalAccount,\n\tupdateIdentities\n}: SettingsSentMessagesProps): ReactElement => {\n\tconst title = useMemo(() => t('label.settings_sent_messages', 'Settings for Sent Messages'), [t]);\n\tconst [replyToEnabledValue, setReplyToEnabledValue] = useState(items.replyToEnabled === 'TRUE');\n\tconst [replyToAddress, setReplyToAddress] = useState(items.replyToAddress);\n\tconst [dropdownOpen, setDropdownOpen] = useState(false);\n\tconst [fromDisplayValue, setFromDisplayValue] = useState(items.fromDisplay);\n\tconst [replyToDisplay, setReplyToDisplay] = useState(items?.replyToDisplay);\n\tconst fromAddressArray = useMemo(\n\t\t() => [{ value: items.fromAddress, label: items.fromAddress }],\n\t\t[items?.fromAddress]\n\t);\n\tconst [fromAddress, setFromAddress] = useState(() =>\n\t\tfind(fromAddressArray, (item) => item.value === items.fromAddress)\n\t);\n\n\tuseEffect(() => {\n\t\tsetReplyToEnabledValue(items.replyToEnabled === 'TRUE');\n\t}, [items.replyToEnabled]);\n\tuseEffect(() => {\n\t\tsetFromDisplayValue(items.fromDisplay);\n\t}, [items.fromDisplay]);\n\tuseEffect(() => {\n\t\tconst k = find(fromAddressArray, (item) => item.value === items.fromAddress);\n\t\tsetFromAddress(k);\n\t}, [fromAddressArray, items.fromAddress]);\n\tuseEffect(() => {\n\t\tsetReplyToDisplay(items?.replyToDisplay === undefined ? '' : items?.replyToDisplay);\n\t}, [items?.replyToDisplay]);\n\tuseEffect(() => {\n\t\tsetReplyToAddress(items.replyToAddress);\n\t}, [items.replyToAddress]);\n\n\tconst onClickReplyToEnabled = useCallback(() => {\n\t\tsetReplyToEnabledValue(!replyToEnabledValue);\n\t\tconst modifyProp = {\n\t\t\tid: items.identityId,\n\t\t\tkey: 'zimbraPrefReplyToEnabled',\n\t\t\tvalue: replyToEnabledValue ? 'FALSE' : 'TRUE'\n\t\t};\n\t\tupdateIdentities(modifyProp);\n\t}, [items.identityId, replyToEnabledValue, updateIdentities]);\n\n\tconst fromDisplayLabel = useMemo(\n\t\t() => (fromDisplayValue ? '' : t('label.from_name', 'From: \"Name\"')),\n\t\t[t, fromDisplayValue]\n\t);\n\tconst onChangeFromDisplayValue = (\n\t\tev: MouseEvent & {\n\t\t\ttarget: HTMLButtonElement;\n\t\t}\n\t): void => {\n\t\tsetFromDisplayValue(ev.target.value);\n\t\tconst modifyProp = {\n\t\t\tid: items.identityId,\n\t\t\tkey: 'zimbraPrefFromDisplay',\n\t\t\tvalue: ev.target.value\n\t\t};\n\t\tupdateIdentities(modifyProp);\n\t};\n\n\tconst fromAddressLabel = useMemo(\n\t\t() => (fromAddress ? '' : t('label.address', 'Address')),\n\t\t[fromAddress, t]\n\t);\n\n\tconst onChangeFromAddress = useCallback(\n\t\t(newVal) => {\n\t\t\tsetFromAddress(filter(fromAddressArray, (item) => item.value === newVal)[0]);\n\t\t\tconst modifyProp = {\n\t\t\t\tid: items.identityId,\n\t\t\t\tkey: 'zimbraPrefFromAddress',\n\t\t\t\tvalue: newVal\n\t\t\t};\n\t\t\tupdateIdentities(modifyProp);\n\t\t},\n\t\t[items.identityId, updateIdentities, fromAddressArray]\n\t);\n\n\tconst replyToEnabledLabel = useMemo(\n\t\t() => t('label.set_reply_to_field', 'Set the \"Reply-to\" field of e-mail message to:'),\n\t\t[t]\n\t);\n\n\tconst replyToDisplayLabel = useMemo(\n\t\t() => (replyToDisplay ? '' : t('label.reply_to_field_example', 'e.g. Bob Smith')),\n\t\t[t, replyToDisplay]\n\t);\n\tconst onChangePrefReplyToDisplay = useCallback(\n\t\t(\n\t\t\tev: MouseEvent & {\n\t\t\t\ttarget: HTMLButtonElement;\n\t\t\t}\n\t\t): void => {\n\t\t\tsetReplyToDisplay(ev.target.value);\n\t\t\tconst modifyProp = {\n\t\t\t\tid: items.identityId,\n\t\t\t\tkey: 'zimbraPrefReplyToDisplay',\n\t\t\t\tvalue: ev.target.value\n\t\t\t};\n\t\t\tupdateIdentities(modifyProp);\n\t\t},\n\t\t[updateIdentities, items.identityId]\n\t);\n\n\tconst replyToAddressLabel = useMemo(\n\t\t() => (replyToAddress ? '' : t('label.choose_account', 'Choose an account')),\n\t\t[t, replyToAddress]\n\t);\n\n\tconst replyToAddressArray = useMemo(\n\t\t() => [\n\t\t\t{\n\t\t\t\tid: '0',\n\t\t\t\tlabel: items.fromAddress,\n\t\t\t\tclick: (ev: MouseEvent & { target: string & { textContent: string } }): void => {\n\t\t\t\t\tsetReplyToAddress(ev.target.textContent);\n\t\t\t\t\tconst modifyProp = {\n\t\t\t\t\t\tid: items.identityId,\n\t\t\t\t\t\tkey: 'zimbraPrefReplyToAddress',\n\t\t\t\t\t\tvalue: ev.target.textContent\n\t\t\t\t\t};\n\t\t\t\t\tupdateIdentities(modifyProp);\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\t[items.fromAddress, items.identityId, updateIdentities]\n\t);\n\n\tconst onChangeReplyToAddress = useCallback(\n\t\t(ev) => {\n\t\t\tsetReplyToAddress(ev.target.value);\n\t\t\tconst modifyProp = {\n\t\t\t\tid: items.identityId,\n\t\t\t\tkey: 'zimbraPrefReplyToAddress',\n\t\t\t\tvalue: ev.target.value\n\t\t\t};\n\t\t\tupdateIdentities(modifyProp);\n\t\t},\n\t\t[updateIdentities, items.identityId]\n\t);\n\n\tconst isValidEmail = useMemo(\n\t\t() => replyToEnabledValue && !EMAIL_VALIDATION_REGEX.test(replyToAddress || ''),\n\t\t[replyToEnabledValue, replyToAddress]\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<Container\n\t\t\t\tminWidth=\"calc(min(100%, 512px))\"\n\t\t\t\twidth=\"fill\"\n\t\t\t\tpadding={{ all: 'large' }}\n\t\t\t\theight=\"fit\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t>\n\t\t\t\t<Padding horizontal=\"medium\" width=\"100%\">\n\t\t\t\t\t<Text weight=\"bold\">{title}</Text>\n\t\t\t\t</Padding>\n\t\t\t</Container>\n\t\t\t<Row\n\t\t\t\twidth=\"fill\"\n\t\t\t\tpadding={{ horizontal: 'large', bottom: 'large' }}\n\t\t\t\theight=\"fit\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t>\n\t\t\t\t<Row\n\t\t\t\t\twidth={isExternalAccount ? '100%' : '50%'}\n\t\t\t\t\tpadding={{ right: isExternalAccount ? '' : 'small' }}\n\t\t\t\t>\n\t\t\t\t\t<Input\n\t\t\t\t\t\tlabel={fromDisplayLabel}\n\t\t\t\t\t\tvalue={fromDisplayValue}\n\t\t\t\t\t\tonChange={(\n\t\t\t\t\t\t\tev: MouseEvent & {\n\t\t\t\t\t\t\t\ttarget: HTMLButtonElement;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t): void => onChangeFromDisplayValue(ev)}\n\t\t\t\t\t\tbackground=\"gray5\"\n\t\t\t\t\t/>\n\t\t\t\t</Row>\n\t\t\t\t{!isExternalAccount && (\n\t\t\t\t\t<Row width=\"50%\">\n\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\tlabel={fromAddressLabel}\n\t\t\t\t\t\t\tselection={fromAddress}\n\t\t\t\t\t\t\titems={fromAddressArray}\n\t\t\t\t\t\t\tshowCheckbox={false}\n\t\t\t\t\t\t\tbackground=\"gray5\"\n\t\t\t\t\t\t\tonChange={(): unknown => onChangeFromAddress}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Row>\n\t\t\t\t)}\n\t\t\t</Row>\n\t\t\t<Row\n\t\t\t\twidth=\"fill\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t\tpadding={{ horizontal: 'large', bottom: 'large' }}\n\t\t\t>\n\t\t\t\t<Checkbox\n\t\t\t\t\tlabel={replyToEnabledLabel}\n\t\t\t\t\tvalue={replyToEnabledValue}\n\t\t\t\t\tonClick={(): void => onClickReplyToEnabled()}\n\t\t\t\t/>\n\t\t\t</Row>\n\t\t\t<Row\n\t\t\t\twidth=\"fill\"\n\t\t\t\tpadding={{ horizontal: 'large', bottom: 'large' }}\n\t\t\t\theight=\"fit\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t>\n\t\t\t\t<Row width=\"50%\" padding={{ right: 'small' }}>\n\t\t\t\t\t<Input\n\t\t\t\t\t\tlabel={replyToDisplayLabel}\n\t\t\t\t\t\tvalue={replyToDisplay}\n\t\t\t\t\t\tbackground=\"gray5\"\n\t\t\t\t\t\tdisabled={!replyToEnabledValue}\n\t\t\t\t\t\tonChange={(\n\t\t\t\t\t\t\tev: MouseEvent & {\n\t\t\t\t\t\t\t\ttarget: HTMLButtonElement;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t): void => onChangePrefReplyToDisplay(ev)}\n\t\t\t\t\t/>\n\t\t\t\t</Row>\n\t\t\t\t<Row width=\"50%\">\n\t\t\t\t\t<Dropdown\n\t\t\t\t\t\titems={replyToAddressArray}\n\t\t\t\t\t\tplacement=\"bottom-start\"\n\t\t\t\t\t\tstyle={{ flexGrow: '1' }}\n\t\t\t\t\t\tonClose={(): void => setDropdownOpen(false)}\n\t\t\t\t\t\tonOpen={(): void => setDropdownOpen(true)}\n\t\t\t\t\t\tdisabled={!replyToEnabledValue}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\tlabel={replyToAddressLabel}\n\t\t\t\t\t\t\tvalue={replyToAddress}\n\t\t\t\t\t\t\tonChange={(\n\t\t\t\t\t\t\t\tev: MouseEvent & {\n\t\t\t\t\t\t\t\t\ttarget: HTMLButtonElement;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t): void => onChangeReplyToAddress(ev)}\n\t\t\t\t\t\t\tbackground=\"gray5\"\n\t\t\t\t\t\t\thasError={isValidEmail}\n\t\t\t\t\t\t\tCustomIcon={(): ReactElement => (\n\t\t\t\t\t\t\t\t<Icon icon={dropdownOpen ? 'ArrowUp' : 'ArrowDown'} />\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\tdisabled={!replyToEnabledValue}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Dropdown>\n\t\t\t\t</Row>\n\t\t\t</Row>\n\t\t\t<Padding bottom=\"large\" />\n\t\t</>\n\t);\n};\n\nexport default SettingsSentMessages;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useMemo, useCallback, ReactElement, useState } from 'react';\nimport {\n\tContainer,\n\tText,\n\tPadding,\n\tInput,\n\tRow,\n\tButton,\n\tDivider\n} from '@zextras/carbonio-design-system';\nimport { TFunction } from 'i18next';\nimport { SHELL_APP_ID, EMAIL_VALIDATION_REGEX } from '../../../constants';\nimport { IdentityProps } from '../../../../types';\nimport { useAccountStore } from '../../../store/account/store';\n\ninterface PasswordRecoverySettingsProps {\n\tt: TFunction;\n\titems: IdentityProps;\n\tcreateSnackbar: (arg: {\n\t\tkey: string;\n\t\treplace: boolean;\n\t\ttype: string;\n\t\tlabel: string;\n\t\tautoHideTimeout: number;\n\t\thideButton: boolean;\n\t}) => void;\n}\nconst PasswordRecoverySettings = ({\n\tt,\n\titems,\n\tcreateSnackbar\n}: PasswordRecoverySettingsProps): ReactElement => {\n\tconst title = useMemo(\n\t\t() => t('label.passwords_recovery_settings', 'Password Recovery Account Settings'),\n\t\t[t]\n\t);\n\n\tconst recoveryEmail = useMemo(\n\t\t() => items.recoveryAccount || t('label.no_results', 'No results found'),\n\t\t[t, items.recoveryAccount]\n\t);\n\tconst [emailValue, setEmailValue] = useState('');\n\tconst [isValidEmail, setIsValidEmail] = useState(false);\n\tconst inputLabel = useMemo(\n\t\t() => (emailValue ? '' : t('label.add_new_email', 'Add new e-mail address')),\n\t\t[emailValue, t]\n\t);\n\n\tconst onChange = useCallback(\n\t\t(\n\t\t\tev: MouseEvent & {\n\t\t\t\ttarget: HTMLButtonElement;\n\t\t\t}\n\t\t): void => {\n\t\t\tsetEmailValue(ev.target.value);\n\t\t\tsetIsValidEmail(EMAIL_VALIDATION_REGEX.test(ev.target.value));\n\t\t},\n\t\t[setEmailValue, setIsValidEmail]\n\t);\n\n\tconst onSubmit = useCallback(() => {\n\t\tuseAccountStore\n\t\t\t.getState()\n\t\t\t.xmlSoapFetch(SHELL_APP_ID)(\n\t\t\t\t'SetRecoveryAccount',\n\t\t\t\t`<SetRecoveryAccountRequest xmlns=\"urn:zimbraMail\" op=\"sendCode\" recoveryAccount=\"${emailValue}\"/>`\n\t\t\t)\n\t\t\t.catch(() => {\n\t\t\t\tcreateSnackbar({\n\t\t\t\t\tkey: `new`,\n\t\t\t\t\treplace: true,\n\t\t\t\t\ttype: 'error',\n\t\t\t\t\tlabel: t('snackbar.error', 'Something went wrong, please try again'),\n\t\t\t\t\tautoHideTimeout: 3000,\n\t\t\t\t\thideButton: true\n\t\t\t\t});\n\t\t\t});\n\t}, [createSnackbar, emailValue, t]);\n\n\treturn (\n\t\t<>\n\t\t\t<Container\n\t\t\t\tminWidth=\"calc(min(100%, 512px))\"\n\t\t\t\twidth=\"fill\"\n\t\t\t\tpadding={{ all: 'large' }}\n\t\t\t\theight=\"fit\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t>\n\t\t\t\t<Padding horizontal=\"medium\" width=\"100%\">\n\t\t\t\t\t<Text weight=\"bold\">{title} </Text>\n\t\t\t\t</Padding>\n\t\t\t</Container>\n\t\t\t<Row\n\t\t\t\twidth=\"fill\"\n\t\t\t\tpadding={{ horizontal: 'large', bottom: 'large' }}\n\t\t\t\theight=\"fit\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t>\n\t\t\t\t<Row width=\"fill\" padding={{ bottom: 'medium' }}>\n\t\t\t\t\t<Text background=\"gray6\" color=\"secondary\">\n\t\t\t\t\t\t{recoveryEmail}\n\t\t\t\t\t</Text>\n\t\t\t\t</Row>\n\t\t\t\t<Divider />\n\t\t\t</Row>\n\t\t\t<Row\n\t\t\t\twidth=\"fill\"\n\t\t\t\tpadding={{ horizontal: 'large', bottom: 'large' }}\n\t\t\t\theight=\"fit\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t>\n\t\t\t\t<Row takeAvailableSpace padding={{ right: 'small' }}>\n\t\t\t\t\t<Input\n\t\t\t\t\t\tlabel={inputLabel}\n\t\t\t\t\t\tvalue={emailValue}\n\t\t\t\t\t\tbackground=\"gray5\"\n\t\t\t\t\t\tonChange={onChange}\n\t\t\t\t\t\thasError={emailValue !== '' && !isValidEmail}\n\t\t\t\t\t/>\n\t\t\t\t</Row>\n\t\t\t\t<Row width=\"fit\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\tlabel={t('label.add_recovery_email', 'Add recovery e-mail')}\n\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\ttype=\"outlined\"\n\t\t\t\t\t\tdisabled={!isValidEmail}\n\t\t\t\t\t\tonClick={onSubmit}\n\t\t\t\t\t/>\n\t\t\t\t</Row>\n\t\t\t</Row>\n\n\t\t\t<Padding bottom=\"large\" />\n\t\t</>\n\t);\n};\n\nexport default PasswordRecoverySettings;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { ReactElement, useState } from 'react';\nimport {\n\tContainer,\n\tText,\n\tList,\n\tDivider,\n\tRow,\n\tPadding,\n\tButton,\n\tRadio,\n\tRadioGroup\n} from '@zextras/carbonio-design-system';\nimport { TFunction } from 'i18next';\n\ntype DelegatesProps = {\n\tt: TFunction;\n\titems: { email: string; right: string; id: string }[];\n\tactiveDelegateView: string;\n\tsetActiveDelegateView: (value: string) => void;\n};\n\ntype ListItemProps = {\n\tactive: string;\n\titem: { id: string; label: string; email: string; right: string };\n\tselected: boolean;\n\tsetSelected: () => void;\n\tbackground: string;\n\tselectedBackground: string;\n\tactiveBackground: string;\n};\n\nconst Delegates = ({\n\tt,\n\titems,\n\tactiveDelegateView,\n\tsetActiveDelegateView\n}: DelegatesProps): ReactElement => {\n\tconst [activeValue, setActiveValue] = useState('1');\n\n\tconst changeView = (value: string): void => setActiveDelegateView(value);\n\n\tconst ListItem = ({ item }: ListItemProps): ReactElement => (\n\t\t<>\n\t\t\t<Container\n\t\t\t\tonClick={(): void => changeView(item.id)}\n\t\t\t\torientation=\"horizontal\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t\tpadding={{ all: 'small' }}\n\t\t\t>\n\t\t\t\t<Row width=\"fill\" mainAlignment=\"space-between\">\n\t\t\t\t\t<Container orientation=\"horizontal\" mainAlignment=\"flex-start\" width=\"fit\">\n\t\t\t\t\t\t<Padding right=\"small\">\n\t\t\t\t\t\t\t<Text weight=\"regular\" size=\"small\">\n\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</Padding>\n\t\t\t\t\t\t<Padding right=\"small\">\n\t\t\t\t\t\t\t<Text weight=\"regular\" size=\"small\" color=\"secondary\">\n\t\t\t\t\t\t\t\t{item.email}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</Padding>\n\t\t\t\t\t</Container>\n\t\t\t\t\t<Container width=\"fit\" mainAlignment=\"flex-end\">\n\t\t\t\t\t\t<Text weight=\"regular\" size=\"small\">\n\t\t\t\t\t\t\t{item.right}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</Container>\n\t\t\t\t</Row>\n\n\t\t\t\t<Row width=\"fit\"></Row>\n\t\t\t</Container>\n\t\t\t<Divider />\n\t\t</>\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<Container\n\t\t\t\tminWidth=\"calc(min(100%, 512px))\"\n\t\t\t\twidth=\"fill\"\n\t\t\t\tpadding={{ all: 'large' }}\n\t\t\t\theight=\"fit\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t>\n\t\t\t\t<Padding horizontal=\"medium\" bottom=\"large\" width=\"100%\">\n\t\t\t\t\t<Text weight=\"bold\">{t('label.delegates', 'Delegates')}</Text>\n\t\t\t\t</Padding>\n\t\t\t\t<List\n\t\t\t\t\titems={items}\n\t\t\t\t\tItemComponent={ListItem}\n\t\t\t\t\tactive={activeDelegateView}\n\t\t\t\t\theight=\"fit\"\n\t\t\t\t\tactiveView={activeDelegateView}\n\t\t\t\t\tsetActiveView={setActiveDelegateView}\n\t\t\t\t/>\n\t\t\t</Container>\n\t\t\t<Row\n\t\t\t\tpadding={{ horizontal: 'large' }}\n\t\t\t\twidth=\"fill\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t>\n\t\t\t\t<Padding right=\"small\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\tlabel={t('label.add_delegate', 'Add delegate')}\n\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\ttype=\"outlined\"\n\t\t\t\t\t\tdisabled\n\t\t\t\t\t/>\n\t\t\t\t</Padding>\n\t\t\t\t<Padding right=\"small\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\tlabel={t('label.edit_permissions', 'Edit permissions')}\n\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\ttype=\"outlined\"\n\t\t\t\t\t\tdisabled\n\t\t\t\t\t/>\n\t\t\t\t</Padding>\n\t\t\t\t<Button label={t('label.remove', 'remove')} color=\"error\" type=\"outlined\" disabled />\n\t\t\t</Row>\n\t\t\t<Container\n\t\t\t\tminWidth=\"calc(min(100%, 512px))\"\n\t\t\t\twidth=\"100%\"\n\t\t\t\tpadding={{ all: 'large' }}\n\t\t\t\theight=\"fit\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t>\n\t\t\t\t<RadioGroup\n\t\t\t\t\tstyle={{ width: '100%' }}\n\t\t\t\t\tvalue={activeValue}\n\t\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t\t\tonChange={(newValue: string): void => setActiveValue(newValue)}\n\t\t\t\t>\n\t\t\t\t\t<Radio\n\t\t\t\t\t\twidth=\"100%\"\n\t\t\t\t\t\tlabel={t(\n\t\t\t\t\t\t\t'label.save_to_my_sent_folder',\n\t\t\t\t\t\t\t'Save a copy of sent messages to my Sent folder'\n\t\t\t\t\t\t)}\n\t\t\t\t\t\tvalue=\"1\"\n\t\t\t\t\t/>\n\t\t\t\t\t<Radio\n\t\t\t\t\t\tlabel={t(\n\t\t\t\t\t\t\t'label.save_delegate_folder',\n\t\t\t\t\t\t\t'Save a copy of sent messages to delegate’s Sent folder'\n\t\t\t\t\t\t)}\n\t\t\t\t\t\tvalue=\"2\"\n\t\t\t\t\t/>\n\t\t\t\t\t<Radio\n\t\t\t\t\t\tlabel={t(\n\t\t\t\t\t\t\t'label.save_both_folders',\n\t\t\t\t\t\t\t'Save a copy of sent messages to my Sent folder and delegate’s folder'\n\t\t\t\t\t\t)}\n\t\t\t\t\t\tvalue=\"3\"\n\t\t\t\t\t/>\n\t\t\t\t\t<Radio label={t('label.dont_save', 'Don’t save a copy of sent messages')} value=\"4\" />\n\t\t\t\t</RadioGroup>\n\t\t\t\t<Padding bottom=\"large\" />\n\t\t\t</Container>\n\t\t</>\n\t);\n};\n\nexport default Delegates;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useState, useCallback, ReactElement, useEffect, useMemo } from 'react';\nimport { Container, Text, Padding, Input, Row } from '@zextras/carbonio-design-system';\nimport { TFunction } from 'i18next';\nimport { IdentityProps } from '../../../../types';\n\ninterface PersonaSettingsProps {\n\tt: TFunction;\n\titems: IdentityProps;\n\tupdateIdentities: (modifyList: {\n\t\tid: string | number;\n\t\tkey: string;\n\t\tvalue: string | boolean;\n\t}) => void;\n}\n\nconst PersonaSettings = ({ t, items, updateIdentities }: PersonaSettingsProps): ReactElement => {\n\tconst [personaValue, setPersonaValue] = useState(items.identityName);\n\tconst personaLabel = useMemo(\n\t\t() => (personaValue ? '' : t('label.persona_name', 'Persona Name')),\n\t\t[personaValue, t]\n\t);\n\tuseEffect(() => {\n\t\tsetPersonaValue(items.identityName);\n\t}, [items.identityName]);\n\n\tconst onChange = useCallback(\n\t\t(ev) => {\n\t\t\tsetPersonaValue(ev.target.value);\n\t\t\tconst modifyProp = {\n\t\t\t\tid: items.identityId,\n\t\t\t\tkey: 'zimbraPrefIdentityName',\n\t\t\t\tvalue: ev.target.value\n\t\t\t};\n\n\t\t\tupdateIdentities(modifyProp);\n\t\t},\n\t\t[updateIdentities, items.identityId, setPersonaValue]\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<Container\n\t\t\t\tminWidth=\"calc(min(100%, 512px))\"\n\t\t\t\twidth=\"fill\"\n\t\t\t\tpadding={{ all: 'large' }}\n\t\t\t\theight=\"fit\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t>\n\t\t\t\t<Padding horizontal=\"medium\" width=\"100%\">\n\t\t\t\t\t<Text weight=\"bold\">{t('label.persona_settings', 'Persona Settings')}</Text>\n\t\t\t\t</Padding>\n\t\t\t</Container>\n\t\t\t<Row\n\t\t\t\twidth=\"fill\"\n\t\t\t\tpadding={{ horizontal: 'large', bottom: 'large' }}\n\t\t\t\theight=\"fit\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t>\n\t\t\t\t<Row orientation=\"vertical\" mainAlignment=\"flex-start\" width=\"fill\">\n\t\t\t\t\t<Row orientation=\"horizontal\" width=\"100%\" mainAlignment=\"flex-start\">\n\t\t\t\t\t\t<Text background=\"gray6\" color=\"secondary\" width=\"fill\">\n\t\t\t\t\t\t\t{t(\n\t\t\t\t\t\t\t\t'label.use_personas_line1',\n\t\t\t\t\t\t\t\t'Use personas to quickly change many settings when sending e-mail messages.'\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</Row>\n\t\t\t\t\t<Row orientation=\"horizontal\" width=\"100%\" mainAlignment=\"flex-start\">\n\t\t\t\t\t\t<Text background=\"gray6\" color=\"secondary\">\n\t\t\t\t\t\t\t{t(\n\t\t\t\t\t\t\t\t'label.use_personas_line2',\n\t\t\t\t\t\t\t\t'For example, if you sometimes send e-mails in a particular role at work, create a persona for that.'\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</Row>\n\t\t\t\t</Row>\n\t\t\t</Row>\n\t\t\t<Row\n\t\t\t\twidth=\"fill\"\n\t\t\t\tpadding={{ horizontal: 'large', bottom: 'large' }}\n\t\t\t\theight=\"fit\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t>\n\t\t\t\t<Row takeAvailableSpace>\n\t\t\t\t\t<Input label={personaLabel} value={personaValue} background=\"gray5\" onChange={onChange} />\n\t\t\t\t</Row>\n\t\t\t</Row>\n\n\t\t\t<Padding bottom=\"large\" />\n\t\t</>\n\t);\n};\n\nexport default PersonaSettings;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useMemo, useEffect, ReactElement, useState, useCallback } from 'react';\nimport { Container, Text, Padding, Input, Row, Checkbox } from '@zextras/carbonio-design-system';\nimport { TFunction } from 'i18next';\nimport { IdentityProps } from '../../../../types';\nimport { EMAIL_VALIDATION_REGEX } from '../../../constants';\n\ntype PersonaUseSectionProps = {\n\tt: TFunction;\n\titems: IdentityProps;\n\tupdateIdentities: (modifyList: {\n\t\tid: string | number;\n\t\tkey: string;\n\t\tvalue: string | boolean;\n\t}) => void;\n};\n\nconst PersonaUseSection = ({\n\tt,\n\titems,\n\tupdateIdentities\n}: PersonaUseSectionProps): ReactElement => {\n\tconst title = useMemo(() => t('label.use_persona', 'Use this persona'), [t]);\n\tconst whenSentToLabel = useMemo(\n\t\t() => t('label.when_replying', 'When replying or forwarding messages sent to:'),\n\t\t[t]\n\t);\n\t// this code is work in progress for when the mails sync is implemented\n\t// const [open, setOpen] = useState(false);\n\t// const onClose = useCallback(() => setOpen(false), []);\n\n\tconst [whenInFoldersEnabled, setWhenInFoldersEnabled] = useState(\n\t\titems.whenInFoldersEnabled === 'TRUE'\n\t);\n\tconst [whenSentToEnabled, setWhenSentToEnabled] = useState(items.whenSentToEnabled === 'TRUE');\n\tconst [whenSentToAddresses, setWhenSentToAddresses] = useState(items.whenSentToAddresses);\n\n\tuseEffect(() => {\n\t\tsetWhenSentToEnabled(items.whenSentToEnabled === 'TRUE');\n\t}, [items.whenSentToEnabled]);\n\tuseEffect(() => {\n\t\tsetWhenSentToAddresses(items.whenSentToAddresses);\n\t}, [items.whenSentToAddresses]);\n\tuseEffect(() => {\n\t\tsetWhenInFoldersEnabled(items.whenInFoldersEnabled === 'TRUE');\n\t}, [items.whenInFoldersEnabled]);\n\n\tconst whenSentToAddressesLabel = useMemo(\n\t\t() => (whenSentToAddresses ? '' : t('label.recipents', 'Recipients')),\n\t\t[t, whenSentToAddresses]\n\t);\n\tconst onClickWhenSentToEnabled = useCallback(() => {\n\t\tsetWhenSentToEnabled(!whenSentToEnabled);\n\t\tconst modifyProp = {\n\t\t\tid: items.identityId,\n\t\t\tkey: 'zimbraPrefWhenSentToEnabled',\n\t\t\tvalue: whenSentToEnabled ? 'FALSE' : 'TRUE'\n\t\t};\n\t\tupdateIdentities(modifyProp);\n\t}, [items.identityId, updateIdentities, whenSentToEnabled]);\n\n\tconst isValidEmail = useMemo(\n\t\t() => whenSentToEnabled && !EMAIL_VALIDATION_REGEX.test(whenSentToAddresses || ''),\n\t\t[whenSentToAddresses, whenSentToEnabled]\n\t);\n\n\tconst onChangeWhenSentToAddresses = useCallback(\n\t\t(ev) => {\n\t\t\tsetWhenSentToAddresses(ev.target.value);\n\t\t\tconst modifyProp = {\n\t\t\t\tid: items.identityId,\n\t\t\t\tkey: 'zimbraPrefWhenSentToAddresses',\n\t\t\t\tvalue: ev.target.value\n\t\t\t};\n\n\t\t\tupdateIdentities(modifyProp);\n\t\t},\n\t\t[updateIdentities, items.identityId]\n\t);\n\n\t// this function is work in progress for when the mails sync is implemented\n\t// const onClickWhenInFoldersEnabled = useCallback(() => {\n\t// \tsetWhenInFoldersEnabled(!whenInFoldersEnabled);\n\t// \tif (!whenInFoldersEnabled === (items.whenInFoldersEnabled === 'TRUE')) {\n\t// \t\tsetMods({});\n\t// \t} else {\n\t// \t\tupdateIdentities(\n\t// \t\t\titems.identityId,\n\t// \t\t\t'zimbraPrefWhenInFoldersEnabled',\n\t// \t\t\titems.whenInFoldersEnabled ? 'TRUE' : 'FALSE'\n\t// \t\t);\n\t// \t}\n\t// }, [\n\t// \titems.whenInFoldersEnabled,\n\t// \twhenInFoldersEnabled,\n\t// \tsetMods,\n\t// \tupdateIdentities,\n\t// \titems.identityId\n\t// ]);\n\t// const modalProps = useMemo(\n\t// \t() => ({\n\t// \t\topen,\n\t// \t\tonClose,\n\t// \t\tsetFolder,\n\t// \t\tt\n\t// \t}),\n\t// \t[open, onClose, setFolder, t]\n\t// );\n\n\treturn (\n\t\t<>\n\t\t\t<Container\n\t\t\t\tminWidth=\"calc(min(100%, 512px))\"\n\t\t\t\twidth=\"fill\"\n\t\t\t\tpadding={{ all: 'large' }}\n\t\t\t\theight=\"fit\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t>\n\t\t\t\t<Padding horizontal=\"medium\" width=\"100%\">\n\t\t\t\t\t<Text weight=\"bold\">{title}</Text>\n\t\t\t\t</Padding>\n\t\t\t</Container>\n\t\t\t<Row\n\t\t\t\twidth=\"fill\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t\tpadding={{ horizontal: 'large', bottom: 'large' }}\n\t\t\t>\n\t\t\t\t<Checkbox\n\t\t\t\t\tlabel={whenSentToLabel}\n\t\t\t\t\tvalue={whenSentToEnabled}\n\t\t\t\t\tonClick={onClickWhenSentToEnabled}\n\t\t\t\t/>\n\t\t\t</Row>\n\t\t\t<Row\n\t\t\t\twidth=\"fill\"\n\t\t\t\tpadding={{ horizontal: 'large', bottom: 'large' }}\n\t\t\t\theight=\"fit\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t>\n\t\t\t\t<Row width=\"50%\" padding={{ right: 'small' }}>\n\t\t\t\t\t<Input\n\t\t\t\t\t\tlabel={whenSentToAddressesLabel}\n\t\t\t\t\t\tvalue={whenSentToAddresses}\n\t\t\t\t\t\tbackground=\"gray5\"\n\t\t\t\t\t\tdisabled={!whenSentToEnabled}\n\t\t\t\t\t\thasError={isValidEmail}\n\t\t\t\t\t\tonChange={(\n\t\t\t\t\t\t\tev: MouseEvent & {\n\t\t\t\t\t\t\t\ttarget: HTMLButtonElement;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t): void => onChangeWhenSentToAddresses(ev)}\n\t\t\t\t\t/>\n\t\t\t\t</Row>\n\t\t\t</Row>\n\t\t\t{/* <Row\n\t\t\t\twidth=\"fill\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t\tpadding={{ horizontal: 'large', bottom: 'large' }}\n\t\t\t>\n\t\t\t\t<Checkbox\n\t\t\t\t\tlabel={t(\n\t\t\t\t\t\t'label.when_composing',\n\t\t\t\t\t\t'When composing, replying to or forwarding messages in folder(s):'\n\t\t\t\t\t)}\n\t\t\t\t\tvalue={whenInFoldersEnabled}\n\t\t\t\t\tonClick={(): void => onClickWhenInFoldersEnabled()}\n\t\t\t\t/>\n\t\t\t</Row>\n\t\t\t<Row\n\t\t\t\twidth=\"fill\"\n\t\t\t\tpadding={{ horizontal: 'large', bottom: 'large' }}\n\t\t\t\theight=\"fit\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t>\n\t\t\t\t<Row width=\"50%\" padding={{ right: 'small' }}>\n\t\t\t\t\t<ChipInput\n\t\t\t\t\t\tlabel=\"e.g. Bob Smith\"\n\t\t\t\t\t\tvalue=\"\"\n\t\t\t\t\t\tplaceholder={t('label.folders', 'Folders')}\n\t\t\t\t\t\tbackground=\"gray5\"\n\t\t\t\t\t\ticon=\"FolderOutline\"\n\t\t\t\t\t\tdisabled={!whenInFoldersEnabled}\n\t\t\t\t\t\ticonAction={openFolderModal}\n\t\t\t\t\t/>\n\t\t\t\t</Row>\n\t\t\t</Row> */}\n\n\t\t\t<Padding bottom=\"large\" />\n\t\t\t{/* <FolderSelectModal compProps={modalProps} /> */}\n\t\t</>\n\t);\n};\n\nexport default PersonaUseSection;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useCallback, useMemo, useState, useEffect, ReactElement } from 'react';\nimport { Container, useSnackbar } from '@zextras/carbonio-design-system';\nimport { TFunction } from 'react-i18next';\nimport { map, includes, findIndex, reduce, find, replace, lowerFirst, isEmpty } from 'lodash';\nimport { useUserSettings } from '../store/account/hooks';\nimport { editSettings } from '../network/edit-settings';\nimport { SHELL_APP_ID } from '../constants';\nimport { Mods, IdentityProps, CreateIdentityProps } from '../../types';\nimport { useAccountStore } from '../store/account/store';\nimport AccountsList from './components/account-settings/accounts-list';\nimport PrimaryAccountSettings from './components/account-settings/primary-account-settings';\nimport SettingsSentMessages from './components/account-settings/settings-sent-messages';\nimport PasswordRecoverySettings from './components/account-settings/password-recovery-settings';\nimport Delegates from './components/account-settings/delegates';\nimport PersonaSettings from './components/account-settings/persona-settings';\nimport PersonaUseSection from './components/account-settings/persona-use-section';\nimport SettingsHeader from './components/settings-header';\n\n// external accounts not yet activated, graphical part is complete\n// import ExternalAccount from './components/account-settings/external-account-settings';\n// import AdvancedSettings from './components/account-settings/advanced-settings';\n// import DownloadMessages from './components/account-settings/download-messages';\n\ntype ModifyProps = { id: string | number; key: string; value: string | boolean } | undefined;\ntype AddModProps = {\n\ttype: string;\n\tmodifyProp?: ModifyProps;\n\tdeleteList?: string[];\n\tcreateList?: { prefs: CreateIdentityProps }[];\n};\ntype AccountSettingsProps = {\n\tidentitiesDefault: IdentityProps[];\n\tt: TFunction;\n};\n\ntype UserRightsProps = { email: string; right: string };\n\ntype DelegateProps = {\n\tid: string;\n\temail: string;\n\tright: string;\n};\n\nexport const AccountsSettings = ({ identitiesDefault, t }: AccountSettingsProps): ReactElement => {\n\tconst [mods, setMods] = useState<Mods>({});\n\tconst [activeDelegateView, setActiveDelegateView] = useState('0');\n\tconst [selectedIdentityId, setSelectedIdentityId] = useState(0);\n\tconst [identities, setIdentities] = useState<IdentityProps[]>(identitiesDefault);\n\tconst [delegates, setDelegates] = useState<DelegateProps[]>([]);\n\n\tconst maxIdentities = useUserSettings().attrs.zimbraIdentityMaxNumEntries;\n\tconst addMod = useCallback(\n\t\t(arg: AddModProps) => {\n\t\t\tconst { type, modifyProp, deleteList, createList } = arg;\n\t\t\tsetMods((prevState) => {\n\t\t\t\tconst prevRecord = find(\n\t\t\t\t\tprevState?.identity?.modifyList,\n\t\t\t\t\t(item) => item.id === modifyProp?.id\n\t\t\t\t)?.prefs;\n\t\t\t\tconst modifyList =\n\t\t\t\t\ttypeof modifyProp !== 'undefined'\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t...prevState.identity?.modifyList,\n\t\t\t\t\t\t\t\t[modifyProp.id]: {\n\t\t\t\t\t\t\t\t\tid: modifyProp.id,\n\t\t\t\t\t\t\t\t\tprefs: { ...prevRecord, [modifyProp.key]: modifyProp.value }\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t }\n\t\t\t\t\t\t: prevState.identity?.modifyList;\n\t\t\t\tconst newCreateList = prevState.identity?.createList || createList;\n\t\t\t\tconst newDeleteList = prevState.identity?.deleteList || deleteList;\n\t\t\t\treturn {\n\t\t\t\t\t...prevState,\n\n\t\t\t\t\t[type]: {\n\t\t\t\t\t\tdeleteList: newDeleteList,\n\t\t\t\t\t\tcreateList: newCreateList,\n\t\t\t\t\t\tmodifyList\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t});\n\t\t},\n\t\t[setMods]\n\t);\n\n\tconst modifyCreateList = useCallback((arg: AddModProps) => {\n\t\tconst { type, modifyProp } = arg;\n\t\tsetMods((prevState) => {\n\t\t\tconst prevRecord = find(\n\t\t\t\tprevState?.identity?.createList,\n\t\t\t\t(item) => item.prefs.requestId === modifyProp?.id\n\t\t\t)?.prefs;\n\t\t\tconst modifiedCreateList =\n\t\t\t\ttypeof modifyProp !== 'undefined'\n\t\t\t\t\t? {\n\t\t\t\t\t\t\t...prevState.identity?.createList,\n\t\t\t\t\t\t\t[modifyProp.id]: {\n\t\t\t\t\t\t\t\tprefs: { ...prevRecord, [modifyProp.key]: modifyProp.value }\n\t\t\t\t\t\t\t}\n\t\t\t\t\t }\n\t\t\t\t\t: undefined;\n\t\t\treturn {\n\t\t\t\t...prevState,\n\n\t\t\t\t[type]: {\n\t\t\t\t\tcreateList: modifiedCreateList,\n\t\t\t\t\tdeleteList: prevState.identity?.deleteList,\n\t\t\t\t\tmodifyList: prevState.identity?.modifyList\n\t\t\t\t}\n\t\t\t};\n\t\t});\n\t}, []);\n\tconst createIdentities = useCallback(\n\t\t(createList: { prefs: CreateIdentityProps }[]) => {\n\t\t\tconst arg = {\n\t\t\t\ttype: 'identity',\n\t\t\t\tcreateList\n\t\t\t};\n\t\t\taddMod(arg);\n\t\t},\n\t\t[addMod]\n\t);\n\n\tconst updateIdentities = useCallback(\n\t\t(modifyProp: { id: string | number; key: string; value: string | boolean }) => {\n\t\t\tconst arg = {\n\t\t\t\ttype: 'identity',\n\t\t\t\tmodifyProp: { id: modifyProp.id, key: modifyProp.key, value: modifyProp.value }\n\t\t\t};\n\t\t\tif (typeof modifyProp.id === 'string') {\n\t\t\t\taddMod(arg);\n\t\t\t} else if (typeof modifyProp.id === 'number') {\n\t\t\t\tmodifyCreateList(arg);\n\t\t\t}\n\t\t\tconst updatedIdentityKey = lowerFirst(replace(modifyProp.key, 'zimbraPref', ''));\n\t\t\tsetIdentities(\n\t\t\t\tmap(identities, (item) =>\n\t\t\t\t\titem.identityId === modifyProp.id\n\t\t\t\t\t\t? { ...item, [updatedIdentityKey]: modifyProp.value }\n\t\t\t\t\t\t: item\n\t\t\t\t)\n\t\t\t);\n\t\t},\n\t\t[addMod, identities, modifyCreateList]\n\t);\n\n\tconst deleteIdentities = useCallback(\n\t\t(deleteList: string[]) => {\n\t\t\tconst arg = {\n\t\t\t\ttype: 'identity',\n\t\t\t\tdeleteList\n\t\t\t};\n\t\t\taddMod(arg);\n\t\t},\n\t\t[addMod]\n\t);\n\n\tconst createSnackbar = useSnackbar();\n\n\tuseEffect(() => {\n\t\tuseAccountStore\n\t\t\t.getState()\n\t\t\t.xmlSoapFetch(SHELL_APP_ID)(\n\t\t\t\t'GetRights',\n\t\t\t\t`<GetRightsRequest xmlns=\"urn:zimbraAccount\"></GetRightsRequest>`\n\t\t\t)\n\t\t\t.then((res: any) => {\n\t\t\t\tif (res.ace) {\n\t\t\t\t\tconst tempResult: UserRightsProps[] = map(res.ace, (item) => ({\n\t\t\t\t\t\temail: item.d,\n\t\t\t\t\t\tright: item.right\n\t\t\t\t\t}));\n\t\t\t\t\tconst resultReduced = reduce(\n\t\t\t\t\t\ttempResult,\n\t\t\t\t\t\t(result: UserRightsProps[], item) => {\n\t\t\t\t\t\t\tconst index = findIndex(result, { email: item.email });\n\t\t\t\t\t\t\tif (index === -1) {\n\t\t\t\t\t\t\t\tresult.push({ email: item.email, right: item.right });\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tresult.push({\n\t\t\t\t\t\t\t\t\temail: item.email,\n\t\t\t\t\t\t\t\t\tright: `${item.right} and ${result[index].right}`\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tresult.splice(index, 1);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t},\n\t\t\t\t\t\t[]\n\t\t\t\t\t);\n\t\t\t\t\tconst result = map(resultReduced, (item: UserRightsProps, index) => ({\n\t\t\t\t\t\t...item,\n\t\t\t\t\t\tid: index.toString()\n\t\t\t\t\t}));\n\t\t\t\t\tsetDelegates(result);\n\t\t\t\t}\n\t\t\t});\n\t}, []);\n\n\tuseEffect(() => {\n\t\tsetIdentities(identitiesDefault);\n\t\tsetMods({});\n\t}, [identitiesDefault]);\n\n\tconst onSave = useCallback(() => {\n\t\tif (\n\t\t\tidentitiesDefault.length +\n\t\t\t\t(mods.identity?.createList?.length || 0) -\n\t\t\t\t(mods?.identity?.deleteList?.length || 0) >\n\t\t\tmaxIdentities\n\t\t) {\n\t\t\tcreateSnackbar({\n\t\t\t\tkey: `new`,\n\t\t\t\treplace: true,\n\t\t\t\ttype: 'error',\n\t\t\t\tlabel: t(\n\t\t\t\t\t'message.snackbar.identities_quota_exceeded',\n\t\t\t\t\t'The identitity could not be created because you have exceeded your identity quota'\n\t\t\t\t),\n\t\t\t\tautoHideTimeout: 5000,\n\t\t\t\thideButton: true\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\teditSettings(mods)\n\t\t\t.then(() => {\n\t\t\t\tcreateSnackbar({\n\t\t\t\t\tkey: `new`,\n\t\t\t\t\treplace: true,\n\t\t\t\t\ttype: 'info',\n\t\t\t\t\tlabel: t('message.snackbar.settings_saved', 'Edits saved correctly'),\n\t\t\t\t\tautoHideTimeout: 3000,\n\t\t\t\t\thideButton: true\n\t\t\t\t});\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\tcreateSnackbar({\n\t\t\t\t\tkey: `new`,\n\t\t\t\t\treplace: true,\n\t\t\t\t\ttype: 'error',\n\t\t\t\t\tlabel: t('snackbar.error', 'Something went wrong, please try again'),\n\t\t\t\t\tautoHideTimeout: 3000,\n\t\t\t\t\thideButton: true\n\t\t\t\t});\n\t\t\t});\n\t\tsetMods({});\n\t}, [identitiesDefault.length, mods, maxIdentities, createSnackbar, t]);\n\n\tconst onCancel = useCallback(() => setMods({}), []);\n\tconst title: string = useMemo(() => t('label.accounts', 'Accounts'), [t]);\n\tconst isDirty = useMemo(() => !isEmpty(mods), [mods]);\n\treturn (\n\t\t<>\n\t\t\t<SettingsHeader onSave={onSave} onCancel={onCancel} isDirty={isDirty} title={title} />\n\t\t\t<Container background=\"gray5\" padding={{ top: 'large' }} height=\"fit\" />\n\t\t\t<Container\n\t\t\t\tbackground=\"gray5\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t\tpadding={{ all: 'large' }}\n\t\t\t\tstyle={{ overflow: 'auto' }}\n\t\t\t>\n\t\t\t\t<AccountsList\n\t\t\t\t\tt={t}\n\t\t\t\t\tidentities={identities}\n\t\t\t\t\tsetIdentities={setIdentities}\n\t\t\t\t\tselectedIdentityId={selectedIdentityId}\n\t\t\t\t\tsetSelectedIdentityId={setSelectedIdentityId}\n\t\t\t\t\tdeleteIdentities={deleteIdentities}\n\t\t\t\t\tcreateIdentities={createIdentities}\n\t\t\t\t/>\n\t\t\t\t{identities[selectedIdentityId]?.type === t('label.primary', 'Primary') && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<PrimaryAccountSettings\n\t\t\t\t\t\t\tt={t}\n\t\t\t\t\t\t\titems={identities[0]}\n\t\t\t\t\t\t\tupdateIdentities={updateIdentities}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<SettingsSentMessages\n\t\t\t\t\t\t\tt={t}\n\t\t\t\t\t\t\titems={identities[selectedIdentityId]}\n\t\t\t\t\t\t\tisExternalAccount={false}\n\t\t\t\t\t\t\tupdateIdentities={updateIdentities}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<PasswordRecoverySettings\n\t\t\t\t\t\t\tt={t}\n\t\t\t\t\t\t\titems={identities[selectedIdentityId]}\n\t\t\t\t\t\t\tcreateSnackbar={createSnackbar}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Delegates\n\t\t\t\t\t\t\tt={t}\n\t\t\t\t\t\t\titems={delegates}\n\t\t\t\t\t\t\tactiveDelegateView={activeDelegateView}\n\t\t\t\t\t\t\tsetActiveDelegateView={setActiveDelegateView}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t\t{identities[selectedIdentityId]?.type === t('label.persona', 'Persona') && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<PersonaSettings\n\t\t\t\t\t\t\tt={t}\n\t\t\t\t\t\t\titems={identities[selectedIdentityId]}\n\t\t\t\t\t\t\tupdateIdentities={updateIdentities}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<SettingsSentMessages\n\t\t\t\t\t\t\tt={t}\n\t\t\t\t\t\t\titems={identities[selectedIdentityId]}\n\t\t\t\t\t\t\tisExternalAccount={false}\n\t\t\t\t\t\t\tupdateIdentities={updateIdentities}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<PersonaUseSection\n\t\t\t\t\t\t\tt={t}\n\t\t\t\t\t\t\titems={identities[selectedIdentityId]}\n\t\t\t\t\t\t\tupdateIdentities={updateIdentities}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t\t{includes(['IMAP', 'POP'], identities[selectedIdentityId]?.type) && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{/* <ExternalAccount t={t} items={identities} />\n\t\t\t\t\t\t<AdvancedSettings t={t} items={identities} />\n\t\t\t\t\t\t<DownloadMessages t={t} items={identities} />\n\t\t\t\t\t\t<SettingsSentMessages\n\t\t\t\t\t\t\tt={t}\n\t\t\t\t\t\t\titems={identities[selectedIdentityId]}\n\t\t\t\t\t\t\tisExternalAccount\n\t\t\t\t\t\t\tupdateIdentities={updateIdentities}\n\t\t\t\t\t\t\tsetMods={setMods}\n\t\t\t\t\t\t/> */}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</Container>\n\t\t</>\n\t);\n};\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useMemo } from 'react';\nimport { map } from 'lodash';\nimport { useTranslation } from 'react-i18next';\nimport { AccountsSettings } from './accounts-settings';\nimport { useUserAccount } from '../store/account';\n\nconst AccountWrapper = (): React.ReactElement | null => {\n\tconst accountSettings = useUserAccount();\n\tconst [t] = useTranslation();\n\tconst identitiesDefault = useMemo(() => {\n\t\tconst temp = map(accountSettings?.identities.identity, (item, index) => ({\n\t\t\tid: item.name === 'DEFAULT' ? '0' : (index + 1).toString(),\n\t\t\ttype: item.name === 'DEFAULT' ? t('label.primary', 'Primary') : t('label.persona', 'Persona'),\n\t\t\tidentityId: item._attrs.zimbraPrefIdentityId || '',\n\t\t\tfromAddress: item._attrs.zimbraPrefFromAddress || '',\n\t\t\tidentityName: item._attrs.zimbraPrefIdentityName || '',\n\t\t\tfromDisplay: item._attrs.zimbraPrefFromDisplay || '',\n\t\t\trecoveryAccount: item._attrs.zimbraRecoveryAccount || '',\n\t\t\treplyToDisplay: item._attrs.zimbraPrefReplyToDisplay || '',\n\t\t\treplyToAddress: item._attrs.zimbraPrefReplyToAddress || '',\n\t\t\treplyToEnabled: item._attrs.zimbraPrefReplyToEnabled || '',\n\t\t\tsaveToSent: item._attrs.zimbraPrefSaveToSent || '',\n\t\t\tsentMailFolder: item._attrs.zimbraPrefSentMailFolder || '',\n\t\t\twhenInFoldersEnabled: item._attrs.zimbraPrefWhenInFoldersEnabled || '',\n\t\t\twhenSentToEnabled: item._attrs.zimbraPrefWhenSentToEnabled || '',\n\t\t\twhenSentToAddresses: item._attrs.zimbraPrefWhenSentToAddresses || ''\n\t\t}));\n\t\tconst result = [temp[temp.length - 1], ...temp];\n\t\tresult.pop();\n\t\treturn result;\n\t}, [accountSettings, t]);\n\n\treturn identitiesDefault.length > 0 ? (\n\t\t<AccountsSettings identitiesDefault={identitiesDefault} t={t} />\n\t) : null;\n};\n\nexport default AccountWrapper;\n","/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n/* eslint-disable no-param-reassign */\n\nimport produce from 'immer';\nimport { TFunction } from 'i18next';\nimport { useAppStore } from '../../store/app';\nimport { SearchAppView } from '../../search/search-app-view';\nimport { SettingsAppView } from '../../settings/settings-app-view';\nimport { SettingsSidebar } from '../../settings/settings-sidebar';\nimport { AppState, PrimaryBarView, SettingsView } from '../../../types';\nimport GeneralSettings from '../../settings/general-settings';\nimport { isAdmin, isClient } from '../../multimode';\nimport Feedback from '../../reporting/feedback';\nimport DevBoard from '../../dev/dev-board';\nimport DevBoardTrigger from '../../dev/dev-board-trigger';\nimport { SEARCH_APP_ID, SETTINGS_APP_ID, SHELL_APP_ID } from '../../constants';\nimport AccountWrapper from '../../settings/account-wrapper';\nimport { settingsSubSections } from '../../settings/general-settings-sub-sections';\n\nconst settingsRoute = {\n\troute: SETTINGS_APP_ID,\n\tid: SETTINGS_APP_ID,\n\tapp: SETTINGS_APP_ID\n};\nconst settingsPrimaryBar = (t: TFunction): PrimaryBarView => ({\n\tid: SETTINGS_APP_ID,\n\tapp: SETTINGS_APP_ID,\n\troute: SETTINGS_APP_ID,\n\tcomponent: 'SettingsModOutline',\n\tposition: 16,\n\tvisible: true,\n\tlabel: t('settings.app', 'Settings'),\n\tbadge: {\n\t\tshow: false\n\t}\n});\nconst settingsSecondaryBar = {\n\tid: SETTINGS_APP_ID,\n\tapp: SETTINGS_APP_ID,\n\troute: SETTINGS_APP_ID,\n\tcomponent: SettingsSidebar\n};\n\nconst settingsAppView = {\n\tid: SETTINGS_APP_ID,\n\tapp: SETTINGS_APP_ID,\n\troute: SETTINGS_APP_ID,\n\tcomponent: SettingsAppView\n};\nconst settingsGeneralView = (t: TFunction): SettingsView => ({\n\tid: 'general',\n\troute: 'general',\n\tapp: SHELL_APP_ID,\n\tcomponent: GeneralSettings,\n\ticon: 'SettingsModOutline',\n\tlabel: t('settings.general.general', 'General'),\n\tposition: 1,\n\tsubSections: settingsSubSections(t)\n});\n\nconst settingsAccountsView = (t: TFunction): SettingsView => ({\n\tid: 'accounts',\n\troute: 'accounts',\n\tapp: SHELL_APP_ID,\n\tcomponent: AccountWrapper,\n\ticon: 'PersonOutline',\n\tlabel: t('settings.accounts', 'Accounts'),\n\tposition: 1\n});\n\nconst searchRoute = {\n\troute: SEARCH_APP_ID,\n\tid: SEARCH_APP_ID,\n\tapp: SEARCH_APP_ID\n};\nconst searchPrimaryBar = (t: TFunction): PrimaryBarView => ({\n\tid: SEARCH_APP_ID,\n\tapp: SEARCH_APP_ID,\n\troute: SEARCH_APP_ID,\n\tcomponent: 'SearchModOutline',\n\tposition: 15,\n\tvisible: true,\n\tlabel: t('search.app', 'Search'),\n\tbadge: {\n\t\tshow: false\n\t}\n});\nconst searchAppView = {\n\tid: SEARCH_APP_ID,\n\tapp: SEARCH_APP_ID,\n\troute: SEARCH_APP_ID,\n\tcomponent: SearchAppView\n};\n\nconst feedbackBoardView = {\n\tid: 'feedback',\n\tapp: SHELL_APP_ID,\n\tcomponent: Feedback,\n\troute: 'feedback'\n};\nconst devModeBoardView = {\n\tid: 'dev-mode',\n\tapp: SHELL_APP_ID,\n\tcomponent: DevBoard,\n\troute: 'devtools'\n};\nconst devModeTrigger = {\n\tid: 'dev-mode-t',\n\tcomponent: DevBoardTrigger,\n\tlabel: 'Dev Tools',\n\tapp: SHELL_APP_ID,\n\tposition: 100\n};\nexport const registerDefaultViews = (t: TFunction): void => {\n\tuseAppStore.setState(\n\t\tproduce((s: AppState) => {\n\t\t\tif (isAdmin()) {\n\t\t\t\ts.routes = {\n\t\t\t\t\t[SETTINGS_APP_ID]: settingsRoute\n\t\t\t\t};\n\t\t\t\ts.views.primaryBar = [settingsPrimaryBar(t)];\n\t\t\t\ts.views.secondaryBar = [settingsSecondaryBar];\n\t\t\t\ts.views.appView = [settingsAppView];\n\t\t\t}\n\t\t\tif (isClient()) {\n\t\t\t\ts.routes = {\n\t\t\t\t\t[SEARCH_APP_ID]: searchRoute,\n\t\t\t\t\t[SETTINGS_APP_ID]: settingsRoute\n\t\t\t\t};\n\t\t\t\ts.views.primaryBar = [searchPrimaryBar(t), settingsPrimaryBar(t)];\n\t\t\t\ts.views.secondaryBar = [settingsSecondaryBar];\n\t\t\t\ts.views.appView = [searchAppView, settingsAppView];\n\t\t\t\ts.views.settings = [settingsGeneralView(t), settingsAccountsView(t)];\n\t\t\t}\n\t\t\ts.views.board = [feedbackBoardView];\n\t\t\tif (__CARBONIO_DEV__) {\n\t\t\t\ts.views.board.push(devModeBoardView);\n\t\t\t\ts.views.primaryBarAccessories.push(devModeTrigger);\n\t\t\t}\n\t\t})\n\t);\n};\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { FC, useMemo } from 'react';\nimport { Redirect, Route, Switch } from 'react-router-dom';\nimport { map } from 'lodash';\nimport { SETTINGS_APP_ID } from '../constants';\nimport AppContextProvider from '../boot/app/app-context-provider';\nimport { useAppStore } from '../store/app';\n\nexport const SettingsAppView: FC = () => {\n\tconst settingsViews = useAppStore((s) => s.views.settings);\n\tconst routes = useMemo(\n\t\t() =>\n\t\t\tmap(settingsViews, (view) => (\n\t\t\t\t<Route key={view.route} exact path={`/${SETTINGS_APP_ID}/${view.route}`}>\n\t\t\t\t\t<AppContextProvider pkg={view.app}>\n\t\t\t\t\t\t<view.component />\n\t\t\t\t\t</AppContextProvider>\n\t\t\t\t</Route>\n\t\t\t)),\n\t\t[settingsViews]\n\t);\n\treturn (\n\t\t<Switch>\n\t\t\t{routes}\n\t\t\t<Redirect from={`/${SETTINGS_APP_ID}`} exact strict to={`/${SETTINGS_APP_ID}/general`} />\n\t\t</Switch>\n\t);\n};\n","/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\nimport React, { FC } from 'react';\n\nconst DevBoard: FC = () => <p>Test</p>;\n\nexport default DevBoard;\n","/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\nimport React, { FC } from 'react';\nimport { IconButton } from '@zextras/carbonio-design-system';\nimport { useContextBridge } from '../store/context-bridge';\nimport { SHELL_APP_ID } from '../../types';\n\nconst DevBoardTrigger: FC = () => (\n\t<IconButton\n\t\ticon=\"Code\"\n\t\tsize=\"large\"\n\t\tonClick={(): void =>\n\t\t\tuseContextBridge.getState().packageDependentFunctions?.addBoard(SHELL_APP_ID)('/devtools/', {\n\t\t\t\ttitle: 'Dev Tools'\n\t\t\t})\n\t\t}\n\t/>\n);\n\nexport default DevBoardTrigger;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { FC, useEffect, useMemo } from 'react';\nimport { SnackbarManager, ModalManager } from '@zextras/carbonio-design-system';\nimport { useTranslation } from 'react-i18next';\nimport { init } from './init';\nimport { ThemeProvider } from './theme-provider';\nimport BootstrapperRouter from './bootstrapper-router';\nimport BootstrapperContextProvider from './bootstrapper-provider';\nimport I18nFactory from '../i18n/i18n-factory';\nimport StoreFactory from '../redux/store-factory';\nimport { unloadAllApps } from './app/load-apps';\nimport { registerDefaultViews } from './app/default-views';\nimport { useBridge } from '../store/context-bridge';\n\nconst DefaultViewsRegister: FC = () => {\n\tconst [t] = useTranslation();\n\tuseEffect(() => {\n\t\tregisterDefaultViews(t);\n\t}, [t]);\n\treturn null;\n};\n\nconst TBridge: FC<{ i18nFactory: I18nFactory }> = ({ i18nFactory }) => {\n\tuseBridge({\n\t\tfunctions: {},\n\t\tpackageDependentFunctions: {\n\t\t\tt: (app) => i18nFactory.getAppI18n({ name: app }).t\n\t\t}\n\t});\n\treturn null;\n};\n\nconst Bootstrapper: FC = () => {\n\tconst i18nFactory = useMemo(() => new I18nFactory(), []);\n\tconst storeFactory = useMemo(() => new StoreFactory(), []);\n\tuseEffect(() => {\n\t\tinit(i18nFactory, storeFactory);\n\t\treturn () => {\n\t\t\tunloadAllApps();\n\t\t};\n\t}, [i18nFactory, storeFactory]);\n\treturn (\n\t\t<ThemeProvider>\n\t\t\t<SnackbarManager>\n\t\t\t\t<ModalManager>\n\t\t\t\t\t<BootstrapperContextProvider i18nFactory={i18nFactory} storeFactory={storeFactory}>\n\t\t\t\t\t\t<TBridge i18nFactory={i18nFactory} />\n\t\t\t\t\t\t<DefaultViewsRegister />\n\t\t\t\t\t\t<BootstrapperRouter />\n\t\t\t\t\t</BootstrapperContextProvider>\n\t\t\t\t</ModalManager>\n\t\t\t</SnackbarManager>\n\t\t</ThemeProvider>\n\t);\n};\n\nexport default Bootstrapper;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\n/* eslint-disable import/no-duplicates */\n/* eslint-disable import/no-named-default */\nimport { filter, map } from 'lodash';\n\nimport StoreFactory from '../../redux/store-factory';\n\nimport { loadApp, unloadApps } from './load-app';\nimport { CarbonioModule } from '../../../types';\nimport { injectSharedLibraries } from './shared-libraries';\nimport { getUserSetting } from '../../store/account';\nimport { useReporter } from '../../reporting';\nimport { SHELL_APP_ID } from '../../constants';\n\nexport function loadApps(storeFactory: StoreFactory, apps: Array<CarbonioModule>): void {\n\tinjectSharedLibraries();\n\tconst appsToLoad = filter(apps, (app) => {\n\t\tif (app.name === SHELL_APP_ID) return false;\n\t\tif (app.attrKey && getUserSetting('attrs', app.attrKey) !== 'TRUE') return false;\n\t\treturn true;\n\t});\n\tconsole.log(\n\t\t'%cLOADING APPS',\n\t\t'color: white; background: #2b73d2;padding: 4px 8px 2px 4px; font-family: sans-serif; border-radius: 12px; width: 100%'\n\t);\n\tuseReporter.getState().setClients(appsToLoad);\n\tPromise.allSettled(map(appsToLoad, (app) => loadApp(app, storeFactory)));\n}\n\nexport function unloadAllApps(): Promise<void> {\n\treturn unloadApps();\n}\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\n/* eslint-disable import/no-duplicates */\n/* eslint-disable import/no-named-default */\n\nimport React, { ComponentClass } from 'react';\nimport * as PropTypes from 'prop-types';\nimport * as ReactDOM from 'react-dom';\nimport * as Lodash from 'lodash';\nimport * as ReactRouterDom from 'react-router-dom';\nimport * as Moment from 'moment';\nimport * as ReactI18n from 'react-i18next';\n// import * as Msw from 'msw';\n// import * as Faker from 'faker';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport * as ReactRedux from 'react-redux';\nimport * as ReduxJSToolkit from '@reduxjs/toolkit';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport * as ZappUI from '@zextras/carbonio-design-system';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport * as StyledComponents from 'styled-components';\n\nimport { IShellWindow } from '../../../types';\n\nexport function injectSharedLibraries(): void {\n\t// eslint-disable-next-line max-len\n\tconst wnd: IShellWindow = window as unknown as IShellWindow;\n\tif (wnd.__ZAPP_SHARED_LIBRARIES__) {\n\t\treturn;\n\t}\n\twnd.__ZAPP_SHARED_LIBRARIES__ = {\n\t\t'prop-types': PropTypes,\n\t\treact: React,\n\t\t'react-dom': ReactDOM,\n\t\t'react-i18next': ReactI18n,\n\t\t'react-redux': ReactRedux,\n\t\tlodash: Lodash,\n\t\t'react-router-dom': ReactRouterDom,\n\t\tmoment: Moment,\n\t\t'styled-components': StyledComponents,\n\t\t'@reduxjs/toolkit': {\n\t\t\t...ReduxJSToolkit,\n\t\t\tconfigureStore: (): void => {\n\t\t\t\tthrow new Error('Apps must use the store given by the Shell.');\n\t\t\t},\n\t\t\tcreateStore: (): void => {\n\t\t\t\tthrow new Error('Apps must use the store given by the Shell.');\n\t\t\t}\n\t\t},\n\t\t'@zextras/carbonio-shell-ui': {},\n\t\t'@zextras/carbonio-design-system': ZappUI\n\t};\n\twnd.__ZAPP_HMR_EXPORT__ = {};\n}\n","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;"],"names":["ZIMBRA_STANDARD_COLORS","zValue","hex","zLabel","FOLDERS","USER_ROOT","INBOX","TRASH","SPAM","SENT","DRAFTS","CONTACTS","TAGS","CONVERSATIONS","CALENDAR","ROOT","NOTEBOOK","AUTO_CONTACTS","IM_LOGS","TASKS","BRIEFCASE","SHELL_APP_ID","SETTINGS_APP_ID","ACCOUNTS_APP_ID","SEARCH_APP_ID","ACTION_TYPES","CONVERSATION","CONVERSATION_lIST","MESSAGE","MESSAGE_lIST","CONTACT","CONTACT_lIST","INVITE","INVITE_lIST","APPOINTMENT","APPOINTMENT_lIST","FOLDER","FOLDER_lIST","CALENDAR_lIST","NEW","darkReaderDynamicThemeFixes","ignoreImageAnalysis","invert","css","ignoreInlineStyle","disableStyleSheetsProxy","SHELL_MODES","CARBONIO","STANDALONE","ADMIN","BASENAME","__SHELL_ENV__","EMAIL_VALIDATION_REGEX","FallbackView","normalizeBadgeInfo","badge","show","count","showCount","color","filterById","items","id","filter","item","useAppStore","create","set","apps","appContexts","shell","commit","description","js_entrypoint","name","priority","version","type","attrKey","icon","display","entryPoints","routes","views","primaryBar","secondaryBar","appView","board","utilityBar","settings","search","primaryBarAccessories","secondaryBarAccessories","setters","addApps","state","reduce","acc","app","sentryDsn","normalizeApp","find","val","setAppContext","context","produce","merge","addRoute","routeData","sortBy","unionWith","route","component","position","visible","label","a","b","setRouteVisibility","idx","findIndex","view","removeRoute","omit","addBoardView","data","unionBy","removeBoardView","addSettingsView","removeSettingsView","addSearchView","removeSearchView","addUtilityView","removeUtilityView","addPrimaryAccessoryView","removePrimaryAccessoryView","addSecondaryAccessoryView","removeSecondaryAccessoryView","updatePrimaryBadge","bar","updateUtilityBadge","useApp","appId","s","useApps","useAppList","useMemo","getApp","getAppContext","getShell","getRoutes","useRoutes","goToLogin","window","location","assign","origin","ShellMode","include","exclude","children","includes","isAdmin","parsePollingInterval","pollingPref","prefs","zimbraPrefMailPollingInterval","pollingValue","parseInt","Number","isNaN","UAParser","os","browser","userAgent","useReporter","clients","Hub","BrowserClient","dsn","release","maxValueLength","setClients","report","error","hint","eventId","getState","captureException","console","info","getAccount","otherAccount","by","_content","getXmlAccount","handleResponse","api","res","get","clearTimeout","noOpTimeout","Body","Fault","code","Detail","Error","Code","Reason","Text","Header","usedQuota","refresh","mbx","notify","tags","tag","setTimeout","soapFetch","pollingInterval","_jsns","limitToOneBlocked","wait","noOp","useAccountStore","account","undefined","attrs","props","setContext","init","rights","then","identities","signatures","_attrs","prop","normalizeSettings","displayName","normalizeAccount","zimbraVersion","fetch","r","json","components","pathname","split","err","log","getInfo","body","method","headers","JSON","stringify","seq","session","e","getSoapFetch","xmlSoapFetch","getXmlSoapFetch","lastNotificationTime","Date","now","useUserAccount","useUserAccounts","acct","useUserRights","targets","useUserRight","right","target","useUserSettings","useTags","useNotify","useRefresh","getUserAccount","getUserAccounts","getUserSettings","getTags","getUserRights","getUserRight","useContextBridge","packageDependentFunctions","functions","add","f","key","useBridge","content","addFunctions","useEffect","tinymce","onEditorChange","inline","value","baseAssetsUrl","initialValue","rest","useState","setContent","_onEditorChange","useCallback","newContent","editor","getContent","format","Container","height","crossAlignment","mainAlignment","style","overflowY","skin_url","content_css","min_height","menubar","statusbar","branding","resize","plugins","toolbar","quickbars_insert_toolbar","quickbars_selection_toolbar","contextmenu","toolbar_mode","useIntegrationsStore","actions","composer","Composer","hooks","registerActions","forEach","action","registerComponents","registerHooks","hook","registerFunctions","fn","removeActions","ids","removeComponents","removeHooks","removeFunctions","BootstrapperContext","createContext","onError","Catcher","pkg","i18nFactory","useContext","storeFactory","store","getStoreForApp","i18n","getAppI18n","Provider","I18nextProvider","ModalManager","SnackbarManager","getIntegratedHook","integration","getIntegratedFunction","getIntegratedComponent","Integration","getActions","factories","compact","map","getActionsFactory","getAction","factory","getActionFactory","isMobile","useIsMobile","ShellContext","useIntegratedHook","useIntegratedFunction","useIntegratedComponent","useActions","useActionsFactory","useAction","useActionFactory","useCurrentRoute","useLocation","startsWith","trim","getCurrentRoute","history","getHistory","parseParams","params","replace","routeToApply","path","hash","usePushHistoryCallback","useHistory","push","useReplaceHistoryCallback","useGoBackHistoryCallback","goBack","pushHistory","replaceHistory","goBackHistory","BoardValueContext","boards","currentBoard","largeView","minimized","BoardSetterContext","addBoard","url","title","removeBoard","removeCurrentBoard","removeAllBoards","updateBoard","setCurrentBoard","updateCurrentBoard","toggleLargeView","toggleMinimized","getUseAddBoardCallback","useUpdateCurrentBoard","useRemoveCurrentBoard","useBoardConfig","Spinner","width","Button","loading","AppLink","to","_to","textDecoration","editSettings","mods","pref","join","identity","modifyList","deleteList","createList","requestId","zimbraPrefIdentityName","zimbraPrefFromDisplay","zimbraPrefFromAddress","zimbraPrefReplyToEnabled","zimbraPrefReplyToDisplay","zimbraPrefReplyToAddress","zimbraPrefDefaultSignatureId","zimbraPrefForwardReplySignatureId","zimbraPrefWhenSentToEnabled","zimbraPrefWhenInFoldersEnabled","permissions","freeBusy","current","gt","zid","deny","d","inviteRight","u","email","propIndex","p","zimlet","itemMods","indexAccount","Object","keys","_index","values","i","CreateIdentityResponse","RouteLeavingGuard","when","onSave","lastLocationInitial","modalVisible","setModalVisible","lastLocation","setLastLocation","confirmedNavigation","setConfirmedNavigation","useTranslation","t","message","nextLocation","Modal","open","onClose","onConfirm","dismissLabel","confirmLabel","onCancel","isDirty","useparam","useParams","crumbs","click","document","querySelector","scrollIntoView","orientation","background","Row","padding","all","Breadcrumbs","Padding","onClick","disabled","Divider","_scripts","_scriptId","loadAppModule","appPkg","Promise","_resolve","_reject","resolved","__ZAPP_SHARED_LIBRARIES__","setReducer","reducer","replaceReducer","SettingsHeader","appSetters","integrations","normalizeRoute","routeId","normalizeBoardView","subSections","normalizeSettingsView","normalizeSearchView","whitelistRoutes","blacklistRoutes","button","normalizeUtilityView","normalizePrimaryAccessoryView","normalizeSecondaryAccessoryView","getAppSetters","useAppContext","useAddBoardCallback","getBridgedFunctions","CONSTANTS","__ZAPP_HMR_EXPORT__","appComponent","script","createElement","setAttribute","appendChild","setFetchMethod","ThemeCallbacksContext","addExtension","newExtension","setDarkReaderState","newState","themeSizes","size","sizes","font","extrasmall","small","medium","large","ThemeProvider","zimbraPrefFontSize","fonts","theme","extensions","setExtensions","darkReaderState","disable","enable","sepia","auto","aggregatedExtensions","ext","extension","Mounter","Suspense","fallback","entries","isEmpty","Comp","MemoComp","memo","hidden","overflow","_BoardsRouterContainer","styled","FirstAppRedirect","mainRoute","exact","strict","from","AppViewContainer","appViews","ShellContextProvider","screenMode","useScreenMode","useSearchStore","query","searchDisabled","setSearchDisabled","updateQuery","isFunction","updateModule","module","OutlinedIconButton","IconButton","palette","primary","regular","StyledChipInput","ChipInput","gray5","hover","StyledContainer","SelectLabelFactory","selected","focus","ThemeContext","minWidth","borderRadius","borderRight","gray4","cursor","takeAvailableSpace","left","Icon","alignSelf","SearchBar","activeRoute","searchViews","searchIsEnabled","setSearchIsEnabled","inputRef","useRef","localStorage","getItem","parse","storedValue","setStoredValue","valueToStore","Function","setItem","useLocalStorage","inputTyped","setInputTyped","moduleSelection","setModuleSelection","isTyping","setIsTyping","moduleSelectorItems","customComponent","horizontal","options","setOptions","selection","inputHasFocus","setInputHasFocus","inputState","setInputState","showClear","length","textContent","clearSearch","innerText","onSearch","currentQuery","ref","newInputState","hasAvatar","chip","c","qchip","isQueryFilter","appSuggestions","v","reverse","q","updateOptions","indexOf","slice","onQueryChange","newQuery","onInputType","ev","suggestions","suggestion","onSelectionChange","newVal","triggerSearch","setTriggerSearch","containerRef","searchCb","addEventListener","removeEventListener","disableOptions","placeholder","clearButtonPlaceholder","searchBtnTooltipLabel","onChipAdd","newChip","avatarLabel","addFocus","removeFocus","disableClearButton","Tooltip","maxWidth","Select","selectedBackgroundColor","onChange","LabelFactory","fontSize","onAdd","confirmChipOnBlur","confirmChipOnSpace","separators","overflowX","onInputTypeDebounce","onBlur","onFocus","requireUniqueChips","placement","iconColor","backgroundColor","CreationButton","setOpen","primaryAction","group","secondaryActions","byApp","groupBy","useSecondaryActions","onOpen","MultiButton","Dropdown","mobileNavIsOpen","onMobileMenuClick","searchEnabled","minHeight","maxHeight","vertical","Responsive","mode","MiniBadge","forwardRef","checkList","l1","l2","intersection","checkRoute","activeRouteValues","useUtilityViews","utilityViews","PrimaryContainer","active","ContainerWithDivider","gray3","ToggleBoardIcon","AdminPrimaryBarElement","PrimaryBarElement","PrimaryBarAccessoryElement","primaryBarViews","setRoutes","primaryBarAccessoryViews","accessories","wrap","VerticalDivider","gray2","Bubble","Collapser","useUtilityBarStore","secondaryBarState","setMode","setCurrent","setSecondaryBarState","logout","UtilityBarItem","ShellUtilityBar","accountItems","Panel","Spacer","ShellUtilityPanel","currentPanel","SidebarContainer","sidebarIsOpen","isOpen","setIsOpen","onCollapserClick","secondaryBarViews","secondaryBarAccessoryViews","role","expanded","SidebarComponent","secondary","ShellMobileNav","menuTree","CustomComponent","top","zIndex","Collapse","crossSize","Accordion","ShellNavigationBar","TabContainer","AppBoardTab","iconSize","onRemove","stopPropagation","weight","BoardContainer","AppBoard","createMemoryHistory","initialEntries","boardViews","windowHistory","unlisten","listen","l","TabsList","tabs","tabContainerRef","useHiddenCount","hiddenTabsCount","recalculateHiddenTabs","useLayoutEffect","tab","heigth","flexGrow","Board","BoardHeader","BoardDetailContainer","BackButton","Actions","AppBoardWindow","shellBoards","boardId","_tabs","_boards","onReturnToApp","Background","gray6","DarkReaderListener","darkreaderState","Shell","mobileNavOpen","setMobileNavOpen","ShellView","ContextBridge","createSnackbar","SnackbarManagerContext","createModal","ModalManagerContext","BrowserRouter","basename","payload","boardKey","newCurrentBoard","boardKeys","boardToRemove","removedBoardIndex","pickBy","updatedBoards","warn","BoardContextProvider","useReducer","boardState","dispatch","String","Math","floor","random","boardSetters","cbFunctions","toggleMinimizedBoard","getShellI18n","I18nFactory","this","locale","_cache","appI18n","changeLanguage","appPkgDescription","newI18n","i18next","baseI18nPath","BASE_PATH","dropRight","use","Backend","lng","fallbackLng","debug","interpolation","escapeValue","missingKeyHandler","ns","fallbackValue","backend","loadPath","_uselessSlice","createSlice","initialState","reducers","StoreFactory","configureStore","devTools","__CARBONIO_DEV__","middleware","getDefaultMiddleware","concat","logger","_useless","useQuery","useDisableSearch","ResultsHeader","setDisabled","resetQuery","Chip","themeSubSection","timezoneAndLanguageSubSection","outOfOfficeSubSection","searchPrefsSubSection","versionsSubSection","quotaSubSection","accountSubSection","settingsSubSections","sectionTitle","FormSubSection","addMod","drMode","setDrMode","defaultSelection","old","subSection","filteredList","preventDefault","navigator","clipboard","writeText","copyToClipboard","bottom","Badge","success","veritcal","allDay","text","ItemsExternalSenders","ItemsOutOfOfficeStatus","getExternalSendersPrefsData","ret","itemsExternalSenders","zimbraPrefOutOfOfficeSuppressExternalReply","zimbraPrefOutOfOfficeExternalReplyEnabled","zimbraPrefExternalSendersType","getOutOfOfficeStatusPrefsData","itemsOutOfOfficeStatus","zimbraPrefOutOfOfficeFreeBusyStatus","changeDateEvent","date","moment","utc","getDateEvent","local","valueOf","startOfDate","startOf","endOfDate","endOf","momentLocalizer","sendAutoReply","dateDisabled","setDateDisabled","zimbraPrefOutOfOfficeFromDate","zimbraPrefOutOfOfficeUntilDate","sendAutoReplyTimePeriod","setSendAutoReplyTimePeriod","dateZimbraPrefOutOfOfficeFromDate","setZimbraPrefOutOfOfficeFromDate","dateZimbraPrefOutOfOfficeUntilDate","setZimbraPrefOutOfOfficeUntilDate","setAllDay","allDayDisabled","setAllDayDisabled","timeDisabled","setTimeDisabled","updatePrefs","Checkbox","time","diff","dateIcon","timeIcon","inputProps","readOnly","subtract","zimbraPrefOutOfOfficeReplyEnabled","setSendAutoReply","zimbraPrefOutOfOfficeReply","inputZimbraPrefOutOfOfficeReply","setInputZimbraPrefOutOfOfficeReply","zimbraPrefOutOfOfficeExternalReply","inputZimbraPrefOutOfOfficeExternalReply","setInputZimbraPrefOutOfOfficeExternalReply","createAppointmentDisabled","setCreateAppointmentDisabled","externalReplyInput","setExternalReplyInput","createAppointment","setCreateAppointment","itemsSendAutoReplies","ItemsSendAutoReplies","Input","autoComplete","mobileView","used","quota","userQuota","zimbraMailQuota","round","defaultValue","fillBackground","Quota","fill","locales","localName","localeList","timezones","timeZoneList","zimbraPrefLocale","defaultTimeZone","zimbraPrefTimeZoneId","showCheckbox","dropdownMaxHeight","reload","zimbraPrefIncludeSpamInSearch","searchInSpamFolder","setSearchInSpamFolder","zimbraPrefIncludeTrashInSearch","searchInTrashFolder","setSearchInTrashFolder","zimbraPrefIncludeSharedItemsInSearch","searchInSharedFolder","setSearchInSharedFolder","onClickSpam","onClickTrash","onClickShared","setMods","m","useSnackbar","autoHideTimeout","hideButton","TextArea","TextContainer","ButtonContainer","TAContainer","SubHeadingText","lineHeight","LabelContainer","emptyEvent","level","Severity","extra","topic","user","ModuleLabelFactory","_LabelFactory","showErr","selectedIdentityId","setIdentities","setSelectedIdentityId","deleteIdentities","createIdentities","createListrequestId","setCreateListrequestId","setCreateList","addNewPersona","newPersonaNextNumber","max","identityName","parseFloat","newPersonaName","identityId","fromAddress","fromDisplay","replyToDisplay","replyToAddress","replyToEnabled","saveToSent","sentMailFolder","whenInFoldersEnabled","whenSentToEnabled","zimbraPrefFromAddressType","setDeleteList","onConfirmDelete","newIdentities","index","toString","onDelete","closeModal","confirmColor","showCloseIcon","List","ItemComponent","updateIdentities","emailValue","emailLabel","accountNameValue","setAccountNameValue","accountLabel","onChangeDisabled","modifyProp","isExternalAccount","replyToEnabledValue","setReplyToEnabledValue","setReplyToAddress","dropdownOpen","setDropdownOpen","fromDisplayValue","setFromDisplayValue","setReplyToDisplay","fromAddressArray","setFromAddress","k","onClickReplyToEnabled","fromDisplayLabel","fromAddressLabel","onChangeFromAddress","replyToEnabledLabel","replyToDisplayLabel","onChangePrefReplyToDisplay","replyToAddressLabel","replyToAddressArray","onChangeReplyToAddress","isValidEmail","test","onChangeFromDisplayValue","hasError","CustomIcon","recoveryEmail","recoveryAccount","setEmailValue","setIsValidEmail","inputLabel","onSubmit","activeDelegateView","setActiveDelegateView","activeValue","setActiveValue","activeView","setActiveView","RadioGroup","newValue","Radio","personaValue","setPersonaValue","personaLabel","whenSentToLabel","setWhenInFoldersEnabled","setWhenSentToEnabled","whenSentToAddresses","setWhenSentToAddresses","whenSentToAddressesLabel","onClickWhenSentToEnabled","onChangeWhenSentToAddresses","AccountsSettings","identitiesDefault","delegates","setDelegates","maxIdentities","zimbraIdentityMaxNumEntries","arg","prevState","prevRecord","newCreateList","newDeleteList","modifyCreateList","modifiedCreateList","updatedIdentityKey","lowerFirst","ace","tempResult","resultReduced","result","splice","accountSettings","temp","zimbraPrefIdentityId","zimbraRecoveryAccount","zimbraPrefSaveToSent","zimbraPrefSentMailFolder","zimbraPrefWhenSentToAddresses","pop","settingsRoute","settingsPrimaryBar","settingsSecondaryBar","settingsViews","disableHover","collapsedItems","settingsAppView","settingsGeneralView","GeneralSettings","settingsAccountsView","AccountWrapper","searchRoute","searchPrimaryBar","searchAppView","feedbackBoardView","topics","getTopics","allApps","appItems","event","setShowErr","limit","setLimit","onAppSelect","onTopicSelect","onInputChange","scrollHeight","checkTopicSelect","keyCode","closeBoard","confirmHandler","feedbackId","feedbacks","captureEvent","disabledSend","multiple","onKeyUp","devModeBoardView","devModeTrigger","DefaultViewsRegister","registerDefaultViews","TBridge","_i18nFactory","_storeFactory","setLocale","zimbraLocale","wnd","PropTypes","react","React","ReactDOM","ReactI18n","ReactRedux","lodash","Lodash","ReactRouterDom","Moment","StyledComponents","ReduxJSToolkit","createStore","ZappUI","appsToLoad","getUserSetting","allSettled","loadApp","loadApps","resolve","forOwn","parentNode","removeChild","webpackContext","req","webpackContextResolve","__webpack_require__","o","exports"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"251.b4ac6d2a.chunk.js","mappings":"uiBAWaA,G,uEAAyB,CACrC,CAAEC,OAAQ,EAAGC,IAAK,UAAWC,OAAQ,SACrC,CAAEF,OAAQ,EAAGC,IAAK,UAAWC,OAAQ,QACrC,CAAEF,OAAQ,EAAGC,IAAK,UAAWC,OAAQ,QACrC,CAAEF,OAAQ,EAAGC,IAAK,UAAWC,OAAQ,SACrC,CAAEF,OAAQ,EAAGC,IAAK,UAAWC,OAAQ,UACrC,CAAEF,OAAQ,EAAGC,IAAK,UAAWC,OAAQ,OACrC,CAAEF,OAAQ,EAAGC,IAAK,UAAWC,OAAQ,UACrC,CAAEF,OAAQ,EAAGC,IAAK,UAAWC,OAAQ,QACrC,CAAEF,OAAQ,EAAGC,IAAK,UAAWC,OAAQ,QACrC,CAAEF,OAAQ,EAAGC,IAAK,UAAWC,OAAQ,YAGzBC,EAAU,CACtBC,UAAW,IACXC,MAAO,IACPC,MAAO,IACPC,KAAM,IACNC,KAAM,IACNC,OAAQ,IACRC,SAAU,IACVC,KAAM,IACNC,cAAe,IACfC,SAAU,KACVC,KAAM,KACNC,SAAU,KACVC,cAAe,KACfC,QAAS,KACTC,MAAO,KACPC,UAAW,MAGCC,EAAe,oBACfC,EAAkB,WAClBC,EAAkB,WAClBC,EAAgB,SAChBC,EAAe,CAC3BC,aAAc,eACdC,kBAAmB,oBACnBC,QAAS,UACTC,aAAc,eACdC,QAAS,UACTC,aAAc,eACdC,OAAQ,SACRC,YAAa,cACbC,YAAa,cACbC,iBAAkB,mBAClBC,OAAQ,SACRC,YAAa,cACbvB,SAAU,WACVwB,cAAe,gBACfC,IAAK,OAGOC,EAA+C,CAC3DC,oBAAqB,CAAC,mBACtBC,OAAQ,GACRC,IAAK,0KAMLC,kBAAmB,CAAC,eACpBC,yBAAyB,GAGbC,EAA0C,CACtDC,SAAU,WACVC,WAAY,qBACZC,MAAO,iBAGKC,EAAW,IAAH,OAAOC,cAAP,KACRC,EAEZ,6a,iHCpDKC,G,SAAmB,kBAAM,gDAElBC,EAAqB,SAACC,GAAD,kBAA2C,CAC5EC,KAAI,UAAED,EAAMC,YAAR,SACJC,MAAK,UAAEF,EAAME,aAAR,QAAiB,EACtBC,UAAS,UAAEH,EAAMG,iBAAR,SACTC,MAAK,UAAEJ,EAAMI,aAAR,QAAiB,Y,qkBCdvB,IAAMC,EAAa,SAA2BC,EAAiBC,GAA5C,OAClBC,EAAAA,EAAAA,QAAOF,GAAO,SAACG,GAAD,OAAUA,EAAKF,KAAOA,MAExBG,GAAcC,EAAAA,EAAAA,IAAiB,SAACC,GAAD,MAAU,CACrDC,KAAM,GACNC,YAAa,GACbC,MAAO,CACNC,OAAQ,GACRC,YAAa,GACbC,cAAe,GACfC,KAAM,oBACNC,UAAW,EACXC,QAAS,GACTC,KAAM,QACNC,QAAS,GACTC,KAAM,GACNC,QAAS,SAEVC,YAAa,GACbC,OAAQ,GACRC,MAAO,CACNC,WAAY,GACZC,aAAc,GACdC,QAAS,GACTC,MAAO,GACPC,WAAY,GACZC,SAAU,GACVC,OAAQ,GACRC,sBAAuB,GACvBC,wBAAyB,IAE1BC,QAAS,CACRC,QAAS,SAAC1B,GACTD,GAAI,SAAC4B,GAAD,YAAY,CACf3B,MAAM4B,EAAAA,EAAAA,QACL5B,GACA,SAAC6B,EAAKC,GAAN,OACCA,EAAIxB,MAAQwB,EAAIxB,OAASrD,EAAzB,OAEM4E,GAFN,cAGIC,EAAIxB,KD/Cc,SAACwB,GAAD,4BAAmD,CAC9E3B,OAAM,UAAE2B,EAAI3B,cAAN,QAAgB,GACtBC,YAAW,UAAE0B,EAAI1B,mBAAN,QAAqB,oBAEhCC,cAAa,UAAEyB,EAAIzB,qBAAN,QAAuB,GACpCC,KAAI,UAAEwB,EAAIxB,YAAN,QAAc,SAClBC,SAAQ,UAAEuB,EAAIvB,gBAAN,QAAkB,GAC1BC,QAAO,UAAEsB,EAAItB,eAAN,QAAiB,GACxBC,KAAI,UAAEqB,EAAIrB,YAAN,QAAc,WAClBC,QAASoB,EAAIpB,QACbC,KAAI,UAAEmB,EAAInB,YAAN,QAAc,OAClBC,QAAO,UAAEkB,EAAIlB,eAAN,QAAiB,SACxBmB,UAAWD,EAAIC,WCmCKC,CAAaF,KAEzBD,IACJ,IAED3B,MAAO,EAAF,KACDyB,EAAMzB,OADL,WAEA+B,EAAAA,EAAAA,MAAKjC,GAAM,SAAC8B,GAAD,OAASA,EAAIxB,OAASrD,YAFjC,QAEkD,IAEvDgD,aAAa2B,EAAAA,EAAAA,QAAO5B,GAAM,SAAC6B,EAAKK,GAAN,OAAeA,EAAI5B,KAAJ,OAAgBuB,GAAhB,cAAsBK,EAAI5B,KAAO,KAAOuB,IAAM,SAGzFM,cACC,SAACL,GAAD,OACA,SAACM,GACArC,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,GACRA,EAAM1B,YAAY6B,IAAOQ,EAAAA,EAAAA,OAAMX,EAAM1B,YAAY6B,GAAMM,SAK3DG,SAAU,SAACC,GAuDV,OAtDAzC,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,GACRA,EAAMb,OAAO0B,EAAU9C,IAAM8C,EACzBA,EAAUxB,aACbW,EAAMZ,MAAMC,YAAayB,EAAAA,EAAAA,SACxBC,EAAAA,EAAAA,WACC,CACC,CACCZ,IAAKU,EAAUV,IACfpC,GAAI8C,EAAU9C,GACdiD,MAAOH,EAAUG,MACjBC,UAAWJ,EAAUxB,WACrB7B,MAAOqD,EAAUrD,MACjB0D,SAAUL,EAAUK,SACpBC,QAASN,EAAUM,QACnBC,MAAOP,EAAUO,QAGnBpB,EAAMZ,MAAMC,YACZ,SAACgC,EAAGC,GAAJ,OAAmBD,EAAEtD,KAAOuD,EAAEvD,MAE/B,aAGE8C,EAAUvB,eACbU,EAAMZ,MAAME,cAAeyB,EAAAA,EAAAA,WAC1B,CACC,CACCZ,IAAKU,EAAUV,IACfpC,GAAI8C,EAAU9C,GACdiD,MAAOH,EAAUG,MACjBC,UAAWJ,EAAUvB,eAGvBU,EAAMZ,MAAME,cACZ,SAAC+B,EAAGC,GAAJ,OAAmBD,EAAEtD,KAAOuD,EAAEvD,OAG5B8C,EAAUtB,UACbS,EAAMZ,MAAMG,SAAUwB,EAAAA,EAAAA,WACrB,CACC,CACCZ,IAAKU,EAAUV,IACfpC,GAAI8C,EAAU9C,GACdiD,MAAOH,EAAUG,MACjBC,UAAWJ,EAAUtB,UAGvBS,EAAMZ,MAAMG,SACZ,SAAC8B,EAAGC,GAAJ,OAAmBD,EAAEtD,KAAOuD,EAAEvD,WAK3B8C,EAAU9C,IAElBwD,mBAAoB,SAACxD,EAAYoD,GAChC/C,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,GACR,IAAMwB,GAAMC,EAAAA,EAAAA,WAAUzB,EAAMZ,MAAMC,YAAY,SAACqC,GAAD,OAAUA,EAAK3D,KAAOA,KAChEyD,GAAO,IACVxB,EAAMZ,MAAMC,WAAWmC,GAAKL,QAAUA,QAO1CQ,YAAa,SAAC5D,GACbK,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,GACRA,EAAMb,QAASyC,EAAAA,EAAAA,MAAK5B,EAAMb,OAAQ,CAACpB,IACnCiC,EAAMZ,MAAMC,WAAaxB,EAAWmC,EAAMZ,MAAMC,WAAYtB,GAC5DiC,EAAMZ,MAAME,aAAezB,EAAWmC,EAAMZ,MAAME,aAAcvB,GAChEiC,EAAMZ,MAAMG,QAAU1B,EAAWmC,EAAMZ,MAAMG,QAASxB,QAKzD8D,aAAc,SAACC,GAMd,OALA1D,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,GACRA,EAAMZ,MAAMI,OAAQuC,EAAAA,EAAAA,SAAQ,CAACD,GAAO9B,EAAMZ,MAAMI,MAAO,UAGlDsC,EAAK/D,IAIbiE,gBAAiB,SAACjE,GACjBK,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,GACRA,EAAMZ,MAAMI,MAAQ3B,EAAWmC,EAAMZ,MAAMI,MAAOzB,QAMrDkE,gBAAiB,SAACH,GAMjB,OALA1D,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,GACRA,EAAMZ,MAAMM,UAAWoB,EAAAA,EAAAA,SAAOiB,EAAAA,EAAAA,SAAQ,CAACD,GAAO9B,EAAMZ,MAAMM,SAAU,MAAO,gBAGtEoC,EAAK/D,IAIbmE,mBAAoB,SAACnE,GACpBK,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,GACRA,EAAMZ,MAAMM,SAAW7B,EAAWmC,EAAMZ,MAAMM,SAAU3B,QAM3DoE,cAAe,SAACL,GAMf,OALA1D,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,GACRA,EAAMZ,MAAMO,QAASmB,EAAAA,EAAAA,SAAOiB,EAAAA,EAAAA,SAAQ,CAACD,GAAO9B,EAAMZ,MAAMO,OAAQ,MAAO,gBAGlEmC,EAAK/D,IAGbqE,iBAAkB,SAACrE,GAClBK,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,GACRA,EAAMZ,MAAMO,OAAS9B,EAAWmC,EAAMZ,MAAMO,OAAQ5B,QAMvDsE,eAAgB,SAACP,GAShB,OARA1D,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,GACRA,EAAMZ,MAAMK,YAAaqB,EAAAA,EAAAA,SACxBiB,EAAAA,EAAAA,SAAQ,CAACD,GAAO9B,EAAMZ,MAAMK,WAAY,MACxC,gBAIIqC,EAAK/D,IAGbuE,kBAAmB,SAACvE,GACnBK,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,GACRA,EAAMZ,MAAMK,WAAa5B,EAAWmC,EAAMZ,MAAMK,WAAY1B,QAM/DwE,wBAAyB,SAACT,GAUzB,OATA1D,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,GACRA,EAAMZ,MAAMQ,uBAAwBmC,EAAAA,EAAAA,SACnC,CAACD,GACD9B,EAAMZ,MAAMQ,sBACZ,UAIIkC,EAAK/D,IAGbyE,2BAA4B,SAACzE,GAC5BK,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,GACRA,EAAMZ,MAAMQ,sBAAwB/B,EAAWmC,EAAMZ,MAAMQ,sBAAuB7B,QAMrF0E,0BAA2B,SAACX,GAU3B,OATA1D,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,GACRA,EAAMZ,MAAMS,yBAA0BkC,EAAAA,EAAAA,SACrC,CAACD,GACD9B,EAAMZ,MAAMS,wBACZ,UAIIiC,EAAK/D,IAGb2E,6BAA8B,SAAC3E,GAC9BK,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,GACRA,EAAMZ,MAAMS,wBAA0BhC,EAAWmC,EAAMZ,MAAMS,wBAAyB9B,QAIzF4E,mBAAoB,SAACnF,EAA2BO,GAC/CK,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,GACR,IAAMwB,GAAMC,EAAAA,EAAAA,WAAUzB,EAAMZ,MAAMC,YAAY,SAACuD,GAAD,OAASA,EAAI7E,KAAOA,KAC9DyD,GAAO,IACVxB,EAAMZ,MAAMC,WAAWmC,GAAKhE,MAA5B,OACIwC,EAAMZ,MAAMC,WAAWmC,GAAKhE,OAC5BA,SAMRqF,mBAAoB,SAACrF,EAA2BO,GAC/CK,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,GACR,IAAMwB,GAAMC,EAAAA,EAAAA,WAAUzB,EAAMZ,MAAMK,YAAY,SAACmD,GAAD,OAASA,EAAI7E,KAAOA,KAC9DyD,GAAO,IACVxB,EAAMZ,MAAMK,WAAW+B,GAAKhE,MAA5B,OACIwC,EAAMZ,MAAMK,WAAW+B,GAAKhE,OAC5BA,cCtSGsF,EAAS,SAACC,GAAD,OAAmB,kBAAsB7E,GAAY,SAAC8E,GAAD,OAAOA,EAAE3E,KAAK0E,QAC5EE,EAAU,kBAAsC/E,GAAY,SAAC8E,GAAD,OAAOA,EAAE3E,SACrE6E,EAAa,WACzB,IAAM7E,EAAO4E,IACb,OAAOE,EAAAA,EAAAA,UAAQ,kBAAMrC,EAAAA,EAAAA,QAAOzC,GAAM,SAACgD,GAAD,OAAOA,EAAEzC,cAAW,CAACP,KAK3C+E,EAAS,SAACL,GAAD,OAAmB,kBAAsB7E,EAAAA,WAAuBG,KAAK0E,KAK9EM,EAAgB,SAACN,GAAD,OAAmB,kBAC/C7E,EAAAA,WAAuBI,YAAYyE,KACvBO,EAAW,kBAAsBpF,EAAAA,WAAuBK,OACxDgF,EAAY,kBAAgCrF,EAAAA,WAAuBiB,QACnEqE,EAAY,kBAAgCtF,GAAY,SAAC8E,GAAD,OAAOA,EAAE7D,WC1BjEsE,EAAwB,WAAM,cACpC,QAAN,EAAAC,cAAA,mBAAQC,gBAAR,mBAAkBC,cAAlB,oCAA8BF,cAA9B,iBAA8B,EAAQC,gBAAtC,aAA8B,EAAkBE,OAAhD,mBCCYC,EAAoE,SAAC,GAI5E,IAHLC,EAGK,EAHLA,QACAC,EAEK,EAFLA,QACAC,EACK,EADLA,SAYA,OAVad,EAAAA,EAAAA,UAAQ,WACpB,OAAIY,EACIA,EAAQG,SAAS9G,iBAErB4G,IACKA,EAAQE,SAAS9G,iBAGxB,CAAC4G,EAASD,IAEC,gCAAGE,GAAe,MCdpBE,EAAU,kBAAe/G,gBAAkBL,EAAYG,OCM9DkH,EAAuB,SAAC1E,GAAsC,QAC7D2E,EAAW,QAAI,EAAJ,UAAI3E,EAAS4E,aAAb,aAAI,EAAgBC,qCAApB,QAAqD,GACtE,GAAoB,QAAhBF,EACH,OAAO,IAER,IAAMG,EAAeC,SAASJ,EAAa,IAC3C,OAAIK,OAAOC,MAAMH,GACT,IAEJH,EAAYH,SAAS,KACF,GAAfM,EAAoB,IAEN,IAAfA,G,+BCnBR,E,MAAwBI,EAAAA,GAAhBC,EAAR,EAAQA,GAAIC,EAAZ,EAAYA,QACCC,EAAY,uBAAH,OAA0BD,EAAQnG,KAAlC,YAA0CmG,EAAQjG,QAAlD,aAA8DgG,EAAGlG,KAAjE,K,qBC8CTrD,EAAe,oBCvCf0J,GAAc7G,EAAAA,EAAAA,IAAsB,SAACC,GAAD,YAAU,CAC1D6G,SAAO,eACL3J,EAAe,IAAI4J,EAAAA,GACnB,IAAIC,EAAAA,EAAc,CACjBC,IAAK,oEACLC,QAAS,IACTC,eAAgB,SALZ,qBAQK,IAAIJ,EAAAA,GACd,IAAIC,EAAAA,EAAc,CACjBC,IAAK,oEACLC,QAAS,IACTC,eAAgB,QAZZ,GAgBPC,WAAY,SAAClH,GACZD,GAAI,SAAC4E,GAAD,MAAQ,CACXiC,SAAShF,EAAAA,EAAAA,QACR5B,GACA,SAAC6B,EAAKC,GAWL,OAVIA,EAAIC,YAEP4C,EAAEiC,QAAQ9E,EAAIxB,MAAQ,IAAIuG,EAAAA,GACzB,IAAIC,EAAAA,EAAc,CACjBC,IAAKjF,EAAIC,UACTiF,QAASlF,EAAItB,QACbyG,eAAgB,QAIZpF,IAER8C,EAAEiC,kB,glBC1CC,IAAMO,EACZ,SAACzC,GAAD,OACA,SAAC0C,EAAcC,GAA6B,MAErCC,EAAO,UADIX,EAAYY,WACJX,QAAQlC,UAApB,aAAG,EAAyB8C,iBAAiBJ,EAA1C,KAAsDC,IAItE,OAHIC,GACHG,QAAQC,KAAK,kBAAmBJ,GAE1BA,I,ykBCKT,IAAMK,GAAa,SAClB9F,EACA+F,GAEA,GAAIA,EACH,MAAO,CACNC,GAAI,OACJC,SAAUF,GAGZ,GAAI/F,EAAK,CACR,GAAIA,EAAIvB,KACP,MAAO,CACNuH,GAAI,OACJC,SAAUjG,EAAIvB,MAGhB,GAAIuB,EAAInC,GACP,MAAO,CACNmI,GAAI,KACJC,SAAUjG,EAAInC,MAOZqI,GAAgB,SAAClG,EAAe+F,GACrC,GAAIA,EACH,mCAA6BA,EAA7B,cAED,GAAI/F,EAAK,CACR,GAAIA,EAAIvB,KACP,mCAA6BuB,EAAIvB,KAAjC,cAED,GAAIuB,EAAInC,GACP,iCAA2BmC,EAAInC,GAA/B,cAGF,MAAO,IAUFsI,GAAiB,SACtBC,EACAC,EACAnI,EACAoI,GACO,QAIe,MAAtB,GADAC,aAAaD,IAAME,aACfH,MAAAA,GAAJ,UAAIA,EAAKI,YAAT,OAAI,EAAWC,MASd,MAPCtG,EAAAA,EAAAA,MACC,CAAC,wBAAyB,yBAC1B,SAACuG,GAAD,eAAUA,KAAI,UAAyBN,EAAKI,KAAKC,MAAME,cAAzC,iBAAK,EAA4CC,aAAjD,aAAK,EAAmDC,UAGvEvD,IAEK,IAAIsD,MAAJ,UACkBR,MAAAA,GADlB,UACkBA,EAAMI,KAAKC,MAAME,cADnC,iBACF,EAA6CC,aAD3C,aACF,EAAoDD,OADlD,uBAEgBP,EAAKI,KAAKC,MAAMK,cAFhC,aAEJ,EAA4CC,OAI/C,GAAIX,MAAAA,GAAJ,UAAIA,EAAKY,cAAT,OAAI,EAAa1G,QAAS,iCACnB2G,EAAS,oBACdb,EAAIY,OAAO1G,eADG,iBACd,EAAoB4G,eADN,iBACd,EAA6BC,WADf,iBACd,EAAmC,UADrB,aACd,EAAuCtE,SADzB,kBAC8BuD,EAAIY,OAAO1G,eADzC,iBAC8B,EAAoB8G,cADlD,iBAC8B,EAA6B,UAD3D,iBAC8B,EAAiCD,WAD/D,iBAC8B,EAAuC,UADrE,aAC8B,EAA2CtE,EAClFwE,EAAI,UAAGjB,EAAIY,OAAO1G,eAAd,iBAAG,EAAoB4G,eAAvB,iBAAG,EAA6BG,YAAhC,aAAG,EAAmCC,IAChDrJ,EAAI,CACHsI,YAAagB,YAAW,kBCzFP,SAAClB,GACpBA,IAAMmB,UAAUrM,EAAhBkL,CACC,OAC0B,MAA1BA,IAAMoB,gBACH,CAAEC,MAAO,iBAAkBC,kBAAmB,EAAGC,KAAM,GACvD,CAAEF,MAAO,mBDoFmBG,CAAKxB,KAAMA,IAAMoB,iBAC/CJ,KAAMA,MAAAA,EAAAA,EAAQhB,IAAMgB,KACpBJ,UAAWA,MAAAA,EAAAA,EAAaZ,IAAMY,UAC9B3G,QAAS,SACL+F,IAAM/F,SACN8F,MAAAA,GAFG,UAEHA,EAAKY,cAFF,aAEH,EAAa1G,WAInB,OAAgC8F,EAAKI,KAA9B,UAAsCL,EAAtC,cE/FK2B,IAAkB9J,EAAAA,EAAAA,IAAqB,SAACC,EAAKoI,GAAN,MAAe,CAClE0B,aAASC,EACTtJ,QAAS,GACTa,SAAU,CACT4E,MAAO,GACP8D,MAAO,GACPC,MAAO,IAER5H,QAAS,GACT6H,WAAY,SAAC7H,GAAD,OAAmCrC,EAAI,CAAEqC,QAAAA,KACrD8H,KAAM,kBPMgB,SAACnK,EAA6BoI,GAA9B,OACtBA,IACEmB,UAAUrM,EADZkL,CAC8E,UAAW,CACvFqB,MAAO,oBACPW,OAAQ,6EAERC,MAAK,SAAClC,GACN,GAAIA,EAAK,CACR,MQrB4B,SAAC,GAc5B,IAbJxI,EAaI,EAbJA,GACAY,EAYI,EAZJA,KACAyJ,EAWI,EAXJA,MACA9D,EAUI,EAVJA,MACAoE,EASI,EATJA,WACAC,EAQI,EARJA,WACAN,EAOI,EAPJA,MACAxJ,EAMI,EANJA,QACA2J,EAKI,EALJA,OAMM9I,EAvBmB,SACzBA,GADyB,YAEH,CACtB0I,MAAO1I,EAAS0I,MAAMQ,OACtBtE,MAAO5E,EAAS4E,MAAMsE,OACtBP,MAAK,UAAE3I,EAAS2I,MAAMQ,YAAjB,QAAyB,IAkBbC,CAAkB,CAAEV,MAAAA,EAAO9D,MAAAA,EAAO+D,MAAAA,IACnD,MAAO,CACNH,QAAS,CACRnK,GAAAA,EACAY,KAAAA,EACAoK,YAAaX,EAAMQ,OAAOG,YAC1BL,WAAAA,EACAC,WAAAA,EACAH,OAAAA,GAED9I,SAAAA,EACAb,QAAAA,GRLyCmK,CAAiBzC,GAAhD2B,EAAR,EAAQA,QAASxI,EAAjB,EAAiBA,SAAUb,EAA3B,EAA2BA,QAC3BT,EAAI,CACH8J,QAAAA,EACAxI,SAAAA,EACAkI,gBAAiBxD,EAAqB1E,GACtCuJ,cAAepK,QAIjB4J,MAAK,kBAAMS,MAAM,mCACjBT,MAAK,SAACU,GAAD,OAAYA,EAAEC,UACnBX,MAAK,YAA2D,IAAxDY,EAAwD,EAAxDA,WACRnL,EAAAA,WAAuB4B,QAAQC,SAC9B/B,EAAAA,EAAAA,QAAOqL,GAAY,YAAoB,IAAjBvK,EAAiB,EAAjBA,KAAMH,EAAW,EAAXA,KAC3B,MAAa,UAATG,IACAqF,IAAkBrF,IAAS/B,EAAYG,MDzCLE,gBAAkBL,EAAYC,SC0CzC8B,IAAS/B,EAAYC,SD3CVI,gBAAkBL,EAAYE,YC4CzC0B,IAAS+E,OAAOC,SAAS2F,SAASC,MAAM,KAAK,WAxB5E,OA6BQ,SAACC,GACP1D,QAAQ2D,IAAI,yCACZ3D,QAAQL,MAAM+D,GACd/F,OOvCyBiG,CAAQtL,EAAKoI,IACxCmB,UAAW,SAACxH,GAAD,OFuFX,SAACA,EAAa/B,EAA6BoI,GAA3C,OACA,SAAoBF,EAAaqD,EAAe1D,GAAhD,2BACCiD,MAAM,iBAAD,OAAkB5C,EAAlB,WAAgC,CACpCsD,OAAQ,OACRC,QAAS,CACR,eAAgB,oBAEjBF,KAAMG,KAAKC,UAAU,CACpBpD,MAAM,oBACDL,EADD,WACgBqD,GAEpBxC,OAAQ,CACP1G,QAAS,CACRoH,MAAO,aACPN,OAAQ,UAAAf,IAAM/F,eAAN,mBAAe8G,cAAf,mBAAwB,UAAxB,SAA4ByC,IACjC,CACAA,IAAG,UAAExD,IAAM/F,eAAR,iBAAE,EAAe8G,cAAjB,iBAAE,EAAwB,UAA1B,aAAE,EAA4ByC,UAEjC7B,EACH8B,QAAO,oBAAEzD,IAAM/F,eAAR,aAAE,EAAewJ,eAAjB,QAA4B,GACnC/B,QAASlC,GAAWQ,IAAM0B,QAAoBjC,GAC9ClB,UAAW,CACVpG,KAAMoG,EACNlG,QAAS2H,IAAMyC,qBAMlBR,MAAK,SAAClC,GAAD,OAASA,MAAAA,OAAT,EAASA,EAAK6C,UACnBX,MAAK,SAAClC,GAAD,OAAiCF,GAAeC,EAAKC,EAAKnI,EAAKoI,MA5BtE,OA6BQ,SAAC0D,GAEP,MADA1E,EAAOrF,EAAPqF,CAAY0E,GACNA,MExH8BC,CAAahK,EAAK/B,EAAKoI,IAC9D4D,aAAc,SAACjK,GAAD,OF2Hd,SAACA,EAAa/B,EAA6BoI,GAA3C,OACA,SAAoBF,EAAaqD,EAAe1D,GAAhD,OACCiD,MAAM,iBAAD,OAAkB5C,EAAlB,WAAgC,CACpCsD,OAAQ,OACRC,QAAS,CACR,eAAgB,wBAEjBF,KAAM,qLAAF,OAEwD5E,EAFxD,sBAGHyB,IAAMyC,cAHH,eA5FgBxI,EAgGA+F,IAAM/F,QA/FxBA,MAAAA,GAAJ,UAAIA,EAASwJ,eAAb,OAAI,EAAkBlM,GACrB,uBAAuB0C,MAAAA,GAAvB,UAAuBA,EAASwJ,eAAhC,aAAuB,EAAkBlM,GAAzC,OAEM,KAwFD,OAIiCqI,GACpCI,IAAM0B,QACNjC,GANG,yEAQS0D,EART,wCAWHlB,MAAK,SAAClC,GAAD,OAASA,MAAAA,OAAT,EAASA,EAAK6C,UACnBX,MAAK,SAAClC,GAAD,OAAiCF,GAAeC,EAAKC,EAAKnI,EAAKoI,MAjBtE,OAkBQ,SAAC0D,GAEP,MADA1E,EAAOrF,EAAPqF,CAAY0E,GACNA,KA3GY,IAACzJ,EAA0B,EACtB,GEvCgB4J,CAAgBlK,EAAK/B,EAAKoI,IACpEY,UAAW,EACXkD,qBAAsBC,KAAKC,MAC3B5C,gBAAiB,QETL6C,GAAiB,kBAAexC,IAAgB,SAACjF,GAAD,OAAOA,EAAEkF,YACzDwC,GAAkB,WAC9B,IAAMC,EAAO1C,IAAgB,SAACjF,GAAD,OAAOA,EAAEkF,WACtC,OAAO/E,EAAAA,EAAAA,UAAQ,kBAAOwH,EAAO,CAACA,GAAmB,KAAK,CAACA,KAG3CC,GAAgB,kBAC5B3C,IAAgB,SAACjF,GAAD,mCAAOA,EAAEkF,eAAT,aAAO,EAAWM,cAAlB,QAA4B,CAAEqC,QAAS,QAE3CC,GAAe,SAACC,GAC5B,IAAQF,EAAYD,KAAZC,QACR,OAAO1H,EAAAA,EAAAA,UACN,+CAAM7C,EAAAA,EAAAA,MAAKuK,EAAS,CAAC,QAASE,WAA9B,aAAM,EAAiCC,cAAvC,QAAkD,KAClD,CAACD,EAAOF,KAGGI,GAAkB,kBAAuBhD,IAAgB,SAACjF,GAAD,OAAOA,EAAEtD,aAGlEwL,GAAU,kBAAkBjD,IAAgB,SAACjF,GAAD,OAAOA,EAAEwE,SAErD2D,GAAY,WAExB,OADelD,IAAgB,SAACjF,GAAD,uBAAOA,EAAEvC,QAAQ8G,cAAjB,QAA2B,OAG9C6D,GAAa,kBAAoBnD,IAAgB,SAACjF,GAAD,uBAAOA,EAAEvC,QAAQ4G,eAAjB,QAA4B,OAE7EgE,GAAiB,kBAAepD,GAAAA,WAA2BC,SAC3DoD,GAAkB,iBAAsB,CACpDrD,GAAAA,WAA2BC,UAEfqD,GAAkB,kBAAuBtD,GAAAA,WAA2BvI,UAGpE8L,GAAU,kBAAkBvD,GAAAA,WAA2BT,MAEvDiE,GAAgB,8CAC5BxD,GAAAA,WAA2BC,eADC,aAC5B,EAAoCM,cADR,QACkB,CAAEqC,QAAS,KAE7Ca,GAAe,SAACX,GAAD,oCAC3BzK,EAAAA,EAAAA,MAAKmL,KAAgBZ,QAAS,CAAC,QAASE,WADb,aAC3B,EAAiDC,cADtB,QACiC,IC/ChDW,I,qCAAmBxN,EAAAA,EAAAA,IAA2B,SAACC,GAAD,MAAU,CACpEwN,0BAA2B,GAC3BC,UAAW,GACXC,IAAK,YAAoD,IAAjDF,EAAiD,EAAjDA,0BAA2BC,EAAsB,EAAtBA,UAClCzN,GAAI,SAAC4E,GAAD,MAAQ,CACX4I,2BAA2B3L,EAAAA,EAAAA,QAC1B2L,MAAAA,EAAAA,EAA6B,IAC7B,SAAC1L,EAAK6L,EAAGC,GAGR,OADA9L,EAAI8L,GAAOD,EACJ7L,IAER8C,EAAE4I,2BAEHC,WAAW5L,EAAAA,EAAAA,QACV4L,MAAAA,EAAAA,EAAa,IACb,SAAC3L,EAAK6L,EAAGC,GAGR,OADA9L,EAAI8L,GAAOD,EACJ7L,IAER8C,EAAE6I,qBAMOI,GAAY,SAACC,GACzB,IAAMC,EAAeR,IAAiB,qBAAGG,QACzCM,EAAAA,EAAAA,YAAU,WACTD,EAAaD,KACX,CAACA,EAASC,K,sVChCdE,KAkIA,SAlFoC,SAAC,GAO/B,IANLC,EAMK,EANLA,eAMK,IALLC,OAAAA,OAKK,SAJLC,EAIK,EAJLA,MACAC,EAGK,EAHLA,cACAC,EAEK,EAFLA,aACGC,GACE,cACL,GAA8BC,EAAAA,EAAAA,UAASF,GAAvC,eAAOR,EAAP,KAAgBW,EAAhB,KAEMC,GAAkBC,EAAAA,EAAAA,cACvB,SAACC,EAAYC,GACZJ,EAAWG,GACXV,MAAAA,GAAAA,EAAiB,CAChBW,EAAOC,WAAW,CAAEC,OAAQ,SAC5BF,EAAOC,WAAW,CAAEC,OAAQ,aAG9B,CAACN,EAAYP,IAKd,OAFAF,EAAAA,EAAAA,YAAU,kBAAMS,EAAWL,KAAQ,CAACA,IAGnC,gBAAC,EAAAY,UAAD,CACCC,OAAO,OACPC,eAAe,WACfC,cAAc,cACdC,MAAO,CAAEC,UAAW,WAEpB,gBAAC,MAAD,SACCjB,MAAON,EACP3D,KAAM,CACLmF,SAAU,GAAF,OAAKjB,EAAL,2BACRkB,YAAa,GAAF,OAAKlB,EAAL,8CACXmB,WAAY,IACZC,SAAS,EACTC,WAAW,EACXC,UAAU,EACVC,QAAQ,EACRzB,OAAAA,EACA0B,QAAS,CACR,UACA,WACA,QACA,OACA,QACA,UACA,QACA,UACA,SACA,gBACA,OACA,aACA,iBACA,QACA,QACA,QACA,OACA,OACA,YACA,iBACA,cAEDC,SAAS3B,GAGN,oNACH4B,yBAA0B5B,EAAS,kBAAoB,GACvD6B,4BAA6B7B,EAC1B,yEACA,YACH8B,YAAsB,GACtBC,aAAc,QAEfhC,eAAgBQ,GACZH,M,ykBC1HD,IAAM4B,IAAuBpQ,EAAAA,EAAAA,IAA0B,SAACC,GAAD,MAAU,CACvEoQ,QAAS,GACTnF,WAAY,CACXoF,SAAU,CACTxQ,KAAMyQ,GACNvO,IAAK7E,IAGPqT,MAAO,GACP9C,UAAW,GACX+C,gBAAiB,sCACb9Q,EADa,yBACbA,EADa,uBAGhBM,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,IACR6O,EAAAA,EAAAA,SAAQ/Q,GAAO,YAA0B,IAAvBC,EAAuB,EAAvBA,GAAI+Q,EAAmB,EAAnBA,OAAQhQ,EAAW,EAAXA,KACxBkB,EAAMwO,QAAQ1P,KAAOkB,EAAMwO,QAAQ1P,GAAQ,IAChDkB,EAAMwO,QAAQ1P,GAAMf,GAAM+Q,UAI9BC,mBACC,SAAC5O,GAAD,OACA,sCAAIrC,EAAJ,yBAAIA,EAAJ,uBACCM,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,IACR6O,EAAAA,EAAAA,SAAQ/Q,GAAO,YAAuB,IAApBC,EAAoB,EAApBA,GAAIkD,EAAgB,EAAhBA,UACrBjB,EAAMqJ,WAAWtL,GAAM,CAAEoC,IAAAA,EAAKlC,KAAMgD,YAIzC+N,cAAe,sCAAIlR,EAAJ,yBAAIA,EAAJ,uBACdM,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,IACR6O,EAAAA,EAAAA,SAAQ/Q,GAAO,YAAkB,IAAfC,EAAe,EAAfA,GAAIkR,EAAW,EAAXA,KACrBjP,EAAM2O,MAAM5Q,GAAMkR,UAItBC,kBAAmB,sCAAIpR,EAAJ,yBAAIA,EAAJ,uBAClBM,GACCsC,EAAAA,EAAAA,KAAQ,SAACV,IACR6O,EAAAA,EAAAA,SAAQ/Q,GAAO,YAAgB,IAAbC,EAAa,EAAbA,GAAIoR,EAAS,EAATA,GACrBnP,EAAM6L,UAAU9N,GAAMoR,UAI1BC,cAAe,sCAAIC,EAAJ,yBAAIA,EAAJ,uBACdjR,GAAI,SAAC4E,GAAD,UAAC,MACDA,GADA,IAEHwL,SAASvO,EAAAA,EAAAA,QACR+C,EAAEwL,SACF,SAACtO,EAAKsO,EAAS1P,GAAf,UAAC,MAA6BoB,GAA9B,cAAoCpB,GAAO8C,EAAAA,EAAAA,MAAK4M,EAASa,OACzD,UAGHC,iBAAkB,sCAAID,EAAJ,yBAAIA,EAAJ,uBACjBjR,GAAI,SAAC4E,GAAD,UAAC,MACDA,GADA,IAEHwL,SAAS5M,EAAAA,EAAAA,MAAKoB,EAAEqG,WAAYgG,SAE9BE,YAAa,sCAAIF,EAAJ,yBAAIA,EAAJ,uBACZjR,GAAI,SAAC4E,GAAD,UAAC,MACDA,GADA,IAEHwL,SAAS5M,EAAAA,EAAAA,MAAKoB,EAAE2L,MAAOU,SAEzBG,gBAAiB,sCAAIH,EAAJ,yBAAIA,EAAJ,uBAChBjR,GAAI,SAAC4E,GAAD,UAAC,MACDA,GADA,IAEHwL,SAAS5M,EAAAA,EAAAA,MAAKoB,EAAE6I,UAAWwD,a,uBC1EjBI,IAAsBC,EAAAA,EAAAA,eAAmB,ICQtD,SAP4B,SAAC,GAAiB,IAAfzL,EAAe,EAAfA,SACxB0L,GAAU5C,EAAAA,EAAAA,cAAY,SAACtH,GAC5BK,QAAQL,MAAMA,KAEZ,IACH,OAAO,gBAAC,EAAAmK,QAAD,CAASD,QAASA,GAAU1L,ICmBpC,GAnBgD,SAAC,GAAsB,IAApB4L,EAAoB,EAApBA,IAAK5L,EAAe,EAAfA,SACjD6L,GFJkBC,EAAAA,EAAAA,YAAWN,IAA3BK,YEKFE,GFAmBD,EAAAA,EAAAA,YAAWN,IAA5BO,aECF7P,GAAMgD,EAAAA,EAAAA,UAAQ,kCAAMC,EAAOyM,EAAPzM,UAAN,QAAuBE,MAAY,CAACuM,IAClDI,GAAQ9M,EAAAA,EAAAA,UAAQ,kBAAM6M,EAAaE,eAAe/P,KAAM,CAACA,EAAK6P,IAC9DG,GAAOhN,EAAAA,EAAAA,UAAQ,kBAAM2M,EAAYM,WAAWjQ,KAAM,CAAC2P,EAAa3P,IACtE,OACC,gBAAC,GAAAkQ,SAAD,CAAUJ,MAAOA,GAChB,gBAACK,GAAA,EAAD,CAAiBH,KAAMA,GACtB,gBAAC,EAAAI,aAAD,KACC,gBAAC,EAAAC,gBAAD,KACC,gBAAC,GAAD,KAAkBvM,QCRjB,IAAMwM,GAAoB,SAAC1S,GAAoC,MAC/D2S,EAAW,UAAGnC,GAAqB3I,WAAW+I,aAAnC,aAAG,EAAwC5Q,GAE5D,OAAO2S,EAAc,CAACA,GAAa,GAAQ,CAAC,cAAgB,IAGhDC,GAAwB,SAAC5S,GAAoC,MACnE2S,EAAW,UAAGnC,GAAqB3I,WAAWiG,iBAAnC,aAAG,EAA4C9N,GAEhE,OAAO2S,EAAc,CAACA,GAAa,GAAQ,CAAC,cAAgB,IAGhDE,GAAyB,SAAC7S,GAAsD,MACtF8S,EAAW,UAAGtC,GAAqB3I,WAAWyD,kBAAnC,aAAG,EAA6CtL,GACjE,OAAI8S,EAQI,CAPO,SAACxI,GAAD,OACb,gBAAC,GAAD,CAAoBwH,IAAKgB,EAAY1Q,KAGpC,gBAAC0Q,EAAY5S,KAASoK,MAGb,GAEL,CAAC,kBAAY,OAAM,IAGdyI,GAAa,SAAK9F,EAAWlM,GACzC,IAAMiS,EAAYxC,GAAqB3I,WAAW4I,QAAQ1P,GAC1D,OAAOkS,EAAAA,EAAAA,UACNC,EAAAA,EAAAA,KAAIF,GAAW,SAAChF,GACf,IAEC,OADeA,EAAEf,GAEhB,MAAOd,GAGR,YADApE,QAAQL,MAAMyE,SAOLgH,GAAoB,SAACpS,GACjC,IAAMiS,EAAYxC,GAAqB3I,WAAW4I,QAAQ1P,GAC1D,OAAO,SAAKkM,GAAL,OACNgG,EAAAA,EAAAA,UACCC,EAAAA,EAAAA,KAAIF,GAAW,SAAChF,GACf,IAEC,OADeA,EAAEf,GAEhB,MAAOd,GAGR,YADApE,QAAQL,MAAMyE,UAONiH,GAAY,SACxBrS,EACAf,EACAiN,GACmC,MAC7BoG,EAAO,UAAG7C,GAAqB3I,WAAW4I,QAAQ1P,UAA3C,aAAG,EAAgDf,GAC1D+Q,EAASsC,MAAAA,OAAH,EAAGA,EAAUpG,GACzB,MAAO,CAAC8D,IAAUA,IAGNuC,GAAmB,SAC/BvS,EACAf,GAC6C,MACvCqT,EAAO,UAAG7C,GAAqB3I,WAAW4I,QAAQ1P,UAA3C,aAAG,EAAgDf,GAChE,MAAO,CAACqT,IAAWA,IClFpB,UAFqB1B,EAAAA,EAAAA,eAAc,CAAE4B,UAAU,ICMxC,SAASC,KAEf,OADqBxB,EAAAA,EAAAA,YAAWyB,IAAxBF,SCEF,IAAMG,GAAoB,SAAC1T,GACjC,IAAM2S,EAAcnC,IAAqB,SAACvL,GAAD,uBAAOA,EAAE2L,aAAT,aAAO,EAAU5Q,MAE1D,OAAO2S,EAAc,CAACA,GAAa,GAAQ,CAAC,cAAgB,IAGhDgB,GAAwB,SAAC3T,GACrC,IAAM2S,EAAcnC,IAAqB,SAACvL,GAAD,uBAAOA,EAAE6I,iBAAT,aAAO,EAAc9N,MAE9D,OAAO2S,EAAc,CAACA,GAAa,GAAQ,CAAC,cAAgB,IAGhDiB,GAAyB,SAAC5T,GACtC,IAAM8S,EAActC,IAAqB,SAACvL,GAAD,uBAAOA,EAAEqG,kBAAT,aAAO,EAAetL,MAC/D,OAAOoF,EAAAA,EAAAA,UAAQ,WACd,OAAI0N,EAQI,CAPO,SAACxI,GAAD,OACb,gBAAC,GAAD,CAAoBwH,IAAKgB,EAAY1Q,KAGpC,gBAAC0Q,EAAY5S,KAASoK,MAGb,GAEL,CAAC,kBAAY,OAAM,KACxB,CAACwI,KAGQe,GAAa,SAAK5G,EAAWlM,GACzC,IAAMiS,EAAYxC,IAAqB,SAACvL,GAAD,OAAOA,EAAEwL,QAAQ1P,MAiBxD,OAhBgBqE,EAAAA,EAAAA,UACf,mCACC6N,EAAAA,EAAAA,UACCC,EAAAA,EAAAA,KAAIF,GAAW,SAAChF,GACf,IAEC,OADeA,EAAEf,GAEhB,MAAOd,GAGR,YADApE,QAAQL,MAAMyE,eARlB,QAYM,KACN,CAAC6G,EAAW/F,KAKD6G,GAAoB,SAAK/S,GACrC,IAAMiS,EAAYxC,IAAqB,SAACvL,GAAD,OAAOA,EAAEwL,QAAQ1P,MAiBxD,OAhBwBiO,EAAAA,EAAAA,cACvB,SAAC/B,GAAD,OACCgG,EAAAA,EAAAA,UACCC,EAAAA,EAAAA,KAAIF,GAAW,SAAChF,GACf,IAEC,OADeA,EAAEf,GAEhB,MAAOd,GAGR,YADApE,QAAQL,MAAMyE,UAKlB,CAAC6G,KAKUe,GAAY,SACxBhT,EACAf,EACAiN,GAEA,IAAMoG,EAAU7C,IAAqB,SAACvL,GAAD,OAAOA,EAAEwL,QAAQ1P,GAAMf,MACtD+Q,GAAS3L,EAAAA,EAAAA,UAAQ,WACtB,IACC,OAAOiO,MAAAA,OAAP,EAAOA,EAAUpG,GAChB,MAAOd,GACR,UAEC,CAACkH,EAASpG,IACb,MAAO,CAAC8D,IAAUA,IAGNiD,GAAmB,SAC/BjT,EACAf,GAEA,IAAMqT,EAAU7C,IAAqB,SAACvL,GAAD,OAAOA,EAAEwL,QAAQ1P,GAAMf,MAC5D,MAAO,CAACqT,IAAWA,I,uBC/FPY,GAAkB,WAC9B,IAAMrO,GAAWsO,EAAAA,GAAAA,MACX9S,EAASqE,IACf,OAAOL,EAAAA,EAAAA,UACN,kBAAM7C,EAAAA,EAAAA,MAAKnB,GAAQ,SAACgK,GAAD,OAAO+I,EAAAA,EAAAA,aAAWC,EAAAA,EAAAA,MAAKxO,EAAS2F,SAAU,KAAMH,EAAEnI,YACrE,CAAC2C,EAAS2F,SAAUnK,KAGTiT,GAAkB,WAA4B,QACpDC,EAAO,WAAG,EAAA1G,GAAiB/F,WAAWiG,WAAUyG,kBAAzC,aAAG,UACVnT,EAASoE,IACf,OAAOjD,EAAAA,EAAAA,MAAKnB,GAAQ,SAACgK,GAAD,OAAO+I,EAAAA,EAAAA,aAAWC,EAAAA,EAAAA,MAAKE,EAAQ1O,SAAS2F,SAAU,KAAMH,EAAEnI,WAGlEuR,GAAc,SAACC,GACK,MAAhC,GAAsB,iBAAXA,EACV,OAAOC,EAAAA,EAAAA,SAAQ,IAAD,iBAAKL,YAAL,aAAK,EAAmBpR,MAAxB,YAAiCwR,GAAU,KAAM,KAEhE,IAAME,EAAeF,EAAOxR,OACzBV,EAAAA,EAAAA,MAAKiD,KAAa,SAAC4F,GAAD,OAAOA,EAAEpL,KAAOyU,EAAOxR,OAASmI,EAAEnI,QAAUwR,EAAOxR,SACrEoR,KACH,MAA8B,iBAAhBI,EAAOG,MAClBF,EAAAA,EAAAA,SAAQ,IAAD,OAAKC,MAAAA,OAAL,EAAKA,EAAc1R,MAAnB,YAA4BwR,EAAOG,MAAQ,KAAM,KACxD,CACAhT,OAAQ6S,EAAOG,KAAKhT,OACpBiT,KAAMJ,EAAOG,KAAKC,KAClBtJ,UAAUmJ,EAAAA,EAAAA,SAAQ,IAAD,OAAKC,MAAAA,OAAL,EAAKA,EAAc1R,MAAnB,YAA4BwR,EAAOG,KAAKrJ,UAAY,KAAM,OAIlEuJ,GAAyB,WACrC,IAAMR,GAAUS,EAAAA,GAAAA,MAKhB,OAJW/F,EAAAA,EAAAA,cACV,SAACyF,GAAD,OAAiCH,EAAQU,KAAKR,GAAYC,MAC1D,CAACH,KAKUW,GAA4B,WACxC,IAAMX,GAAUS,EAAAA,GAAAA,MAKhB,OAJW/F,EAAAA,EAAAA,cACV,SAACyF,GAAD,OAAiCH,EAAQI,QAAQF,GAAYC,MAC7D,CAACH,KAKI,SAASY,KAEf,OADgBH,EAAAA,GAAAA,MACDI,OAGT,IAAMC,GAAc,SAACX,GAAgC,SAC9C,WAAG,EAAA7G,GAAiB/F,WAAWiG,WAAUyG,kBAAzC,aAAG,WACRS,KAAKR,GAAYC,KAGbY,GAAiB,SAACZ,GAAgC,SACjD,WAAG,EAAA7G,GAAiB/F,WAAWiG,WAAUyG,kBAAzC,aAAG,WACRG,QAAQF,GAAYC,KAGhBa,GAAgB,qCAC5B,EAAA1H,GAAiB/F,WAAWiG,WAAUyG,kBADV,aAC5B,UAAqDY,UCtEhDI,IAAoB5D,EAAAA,EAAAA,eAAc,CACvC6D,OAAQ,GACRC,aAAc,EACdC,WAAW,EACXC,WAAW,IAENC,IAAqBjE,EAAAA,EAAAA,eAAc,CACxCkE,SAAU,SAACC,EAAKC,EAAOrT,KACvBsT,YAAa,SAAC/H,KACdgI,mBAAoB,aACpBC,gBAAiB,aACjBC,YAAa,SAAClI,EAAK6H,EAAKC,KACxBK,gBAAiB,SAACnI,KAClBoI,mBAAoB,SAACP,EAAKC,KAC1BO,gBAAiB,aACjBC,gBAAiB,eCbLC,GACZ,SAACxR,GAAD,OAAmB,WAClB,IAAQ6Q,GAAa7D,EAAAA,EAAAA,YAAW4D,IAAxBC,SAOR,OANiB7G,EAAAA,EAAAA,cAChB,SAAC4F,EAAclS,GAAyC,MACvDmT,EAASjB,EAAMlS,EAAP,UAAiBA,MAAAA,OAAjB,EAAiBA,EAA8BN,WAA/C,QAAsD4C,KAE/D,CAAC6Q,MAKG,SAASY,KAEf,OAD+BzE,EAAAA,EAAAA,YAAW4D,IAAlCS,mBAIF,SAASK,KAEf,OAD+B1E,EAAAA,EAAAA,YAAW4D,IAAlCK,mBAIF,SAASU,KACf,IACa,IADPjU,GAAesP,EAAAA,EAAAA,YAAWuD,IAChC,GAAI7S,EACH,iBAAOA,EAAQ8S,cAAf,iBAAO,EAAiB9S,EAAQ+S,qBAAhC,aAAO,EAAwC/S,Q,ykBCgC1C,IC1DMkU,GAAc,kBAC1B,gBAAC,EAAAvH,UAAD,CAAWwH,MAAM,OAAOvH,OAAO,OAAOE,cAAc,SAASD,eAAe,UAC3E,gBAAC,EAAAuH,OAAD,CAAQ/V,KAAK,QAAQsC,MAAM,SAASxD,MAAM,UAAUkX,SAAO,M,6BCEhDC,GAA4B,SAAC,GAA2B,IAAzBC,EAAyB,EAAzBA,GAAIhU,EAAqB,EAArBA,MAAU2L,GAAW,cAC9DsI,GAAM9R,EAAAA,EAAAA,UAAQ,kBAAMoP,GAAY,CAAEI,KAAMqC,EAAIhU,MAAAA,MAAU,CAACA,EAAOgU,IACpE,OAAO,gBAAC,SAAD,SAAQxH,MAAO,CAAE0H,eAAgB,QAAUF,GAAIC,GAAStI,K,8lBCJzD,IAAMwI,GAAe,SAACC,GAAD,UAkGA,EAlGarS,EAAb,uDAA6BzH,EAA7B,OAC3B2M,GAAAA,WAEEmC,aAAa9O,EAFf2M,CAGE,QAHF,0DAKGmN,EAAK/M,MAAL,8DACyD4I,EAAAA,EAAAA,KACtDmE,EAAK/M,OACL,SAACQ,EAAMmD,GAAP,kCACgBA,EADhB,+BACgCnD,EAAK1I,WADrC,QAC4C4C,EAD5C,aACsD8F,EAAK2D,MAD3D,cAHH,8BAMG,IAXN,OAaG4I,EAAK9Q,MAAL,yDACoD2M,EAAAA,EAAAA,KACjDmE,EAAK9Q,OACL,SAAC+Q,EAAMrJ,GAAP,4BAA8BA,EAA9B,aAAsCqJ,EAAtC,cACEC,KAAK,IAJV,yBAKG,IAlBN,OAoBG,UAAAF,EAAKG,gBAAL,SAAeC,YACZvE,EAAAA,EAAAA,KACAmE,EAAKG,SAASC,YACd,SAACvX,GAAD,6FAEEA,EAAKF,GAFP,cAGMkT,EAAAA,EAAAA,KAAIhT,EAAKqG,OAAO,SAACkI,EAAOR,GAAR,yBAA4BA,EAA5B,aAAoCQ,EAApC,WAAiD8I,KACrE,IAJF,wFAMEA,KAAK,IACP,IA9BN,OAgCG,UAAAF,EAAKG,gBAAL,SAAeE,YACZxE,EAAAA,EAAAA,KACAmE,EAAKG,SAASE,YACd,SAACxX,GAAD,6FACiFA,EADjF,kCAEEqX,KAAK,IACP,IAtCN,OAwCG,UAAAF,EAAKG,gBAAL,SAAeG,YACZzE,EAAAA,EAAAA,KACAmE,EAAKG,SAASG,YACd,SAACzX,GAAD,4EACgEA,EAAKqG,MAAMqR,UAD3E,6BACyG1X,EAAKqG,MAAMsR,uBADpH,8CACgL3X,EAAKqG,MAAMsR,uBAD3L,+CACwP3X,EAAKqG,MAAMuR,sBADnQ,+CAC+T5X,EAAKqG,MAAMwR,sBAD1U,gGACub7X,EAAKqG,MAAMyR,yBADlc,kDACogB9X,EAAKqG,MAAM0R,yBAD/gB,kDACilB/X,EAAKqG,MAAM2R,yBAD5lB,sDACkqBhY,EAAKqG,MAAM4R,6BAD7qB,2DAC4vBjY,EAAKqG,MAAM6R,kCADvwB,qDACq1BlY,EAAKqG,MAAM8R,4BADh2B,wDAC26BnY,EAAKqG,MAAM+R,+BADt7B,8CAEEf,KAAK,IACP,IA9CN,OAgDGF,EAAKkB,YAAL,uEAEGlB,EAAKkB,YAAYC,UACdtF,EAAAA,EAAAA,KAAImE,EAAKkB,YAAYC,SAASC,SAAS,SAACzL,GACxC,MAAiB,QAAbA,EAAM0L,GACF,iCAAP,OAAwC1L,EAAM0L,GAA9C,kBAA0D1L,EAAM2L,IAAhE,uBACgB,QAAb3L,EAAM0L,IAAgB1L,EAAM4L,KACxB,iCAAP,OAAwC5L,EAAM0L,GAA9C,kBAA0D1L,EAAM2L,IAAhE,gBACgB,QAAb3L,EAAM0L,GACF,iCAAP,OAAwC1L,EAAM0L,GAA9C,kBAA0D1L,EAAM2L,IAAhE,gBAA2E3L,EAAM6L,EAAjF,OACD,wCAAwC7L,EAAM0L,GAA9C,kBAA0D1L,EAAM2L,IAAhE,WACGpB,KAAK,IACR,IAZN,OAcGF,EAAKkB,YAAYO,aACd5F,EAAAA,EAAAA,KAAImE,EAAKkB,YAAYO,YAAYL,SAAS,SAACzL,GAC3C,MAAiB,QAAbA,EAAM0L,IAAgB1L,EAAM4L,KACxB,2BAAP,OAAkC5L,EAAM0L,GAAxC,kBAAoD1L,EAAM2L,IAA1D,gBACgB,QAAb3L,EAAM0L,GACF,2BAAP,OAAkC1L,EAAM0L,GAAxC,kBAAoD1L,EAAM2L,IAA1D,gBAAqE3L,EAAM6L,EAA3E,OACD,kCAAkC7L,EAAM0L,GAAxC,kBAAoD1L,EAAM2L,IAA1D,WACGpB,KAAK,IACR,GAtBN,6FAwBGF,EAAKkB,YAAYC,SAAjB,UAE4C,QAArCnB,EAAKkB,YAAYC,SAAjB,IAA8BE,GACjC,wCAAwCrB,EAAKkB,YAAYC,SAAjB,IAA8BE,GAAtE,uBAGqC,QAArCrB,EAAKkB,YAAYC,SAAjB,IAA8BE,IAC9BrB,EAAKkB,YAAYC,SAAjB,IAA8BI,KAE9B,wCAAwCvB,EAAKkB,YAAYC,SAAjB,IAA8BE,GAAtE,gBAEwC,QAArCrB,EAAKkB,YAAYC,SAAjB,IAA8BE,IAG1BxF,EAAAA,EAAAA,KACNmE,EAAKkB,YAAYC,SAAjB,IAA8BK,GAC9B,SAACE,GAAD,8DACkC1B,EAAKkB,mBADvC,aACkC,EAAkBC,SAAlB,IAA+BE,GADjE,gBAC2EK,EAAEC,MAD7E,UAECzB,KAAK,IAER,wCAAwCF,EAAKkB,YAAYC,SAAjB,IAA8BE,GAAtE,SAEA,IA9CN,OAgDGrB,EAAKkB,YAAYO,YAAjB,UAG4C,QAAxCzB,EAAKkB,YAAYO,YAAjB,IAAiCJ,IACjCrB,EAAKkB,YAAYO,YAAjB,IAAiCF,KAEjC,kCAAkCvB,EAAKkB,YAAYO,YAAjB,IAAiCJ,GAAnE,gBAE2C,QAAxCrB,EAAKkB,YAAYO,YAAjB,IAAiCJ,IAG7BxF,EAAAA,EAAAA,KACNmE,EAAKkB,YAAYO,YAAjB,IAAiCD,GACjC,SAACE,GAAD,wDAC4B1B,EAAKkB,mBADjC,aAC4B,EAAkBO,YAAlB,IAAkCJ,GAD9D,gBACwEK,EAAEC,MAD1E,UAECzB,KAAK,IAER,4CAAkCF,EAAKkB,mBAAvC,aAAkC,EAAkBO,YAAlB,IAAkCJ,GAApE,SAEA,GAnEN,6BAsEG,GAtHN,oBAyHEhO,MAAK,SAACU,GAsFN,OArFAlB,GAAAA,UAAyB,SAACjF,GAAD,wBAAsB,CAC9CtD,SAAU,SACNsD,EAAEtD,UADE,IAEP4E,OAAOrE,EAAAA,EAAAA,QACNmV,EAAK9Q,OACL,SAACpE,EAAKmV,EAAMrJ,GAAZ,UAAC,MACG9L,GADJ,cAEE8L,EAAMqJ,MAERrS,EAAEtD,SAAS4E,OAEZ+D,OAAOpI,EAAAA,EAAAA,QACNmV,EAAK/M,OACL,SAACnI,EAAD,EAAsB8L,GAAQ,IAAtB7L,EAAsB,EAAtBA,IAAKqM,EAAiB,EAAjBA,MACNwK,GAAYvV,EAAAA,EAAAA,WAAUvB,GAAK,SAAC+W,GAAD,OAAOA,EAAEtY,OAASqN,GAAOiL,EAAEC,SAAW/W,KAevE,OAdI6W,GAAa,EAEhB9W,EAAI8W,GAAa,CAChBrY,KAAMqN,EACNkL,OAAQ/W,EACRgG,SAAUqG,GAGXtM,EAAI6S,KAAK,CACRpU,KAAMqN,EACNkL,OAAQ/W,EACRgG,SAAUqG,IAGLtM,IAER8C,EAAEtD,SAAS2I,SAGbH,QAAS,SACLlF,EAAEkF,SADC,IAENa,aACC,WAAAzI,EAAAA,EAAAA,MAAK8U,MAAAA,GAAD,UAACA,EAAMG,gBAAP,aAAC,EAAgBC,YAAY,SAACvX,GAAD,aAAUA,EAAKF,MAAOiF,MAAAA,GAAZ,UAAYA,EAAGkF,eAAf,aAAY,EAAYnK,cAAnE,eAAwEuG,MACtEsR,0BADF,UAC4B5S,EAAEkF,eAD9B,aAC4B,EAAWa,aACxCpK,MACC,WAAA2B,EAAAA,EAAAA,MAAK8U,MAAAA,GAAD,UAACA,EAAMG,gBAAP,aAAC,EAAgBC,YAAY,SAACvX,GAAD,aAAUA,EAAKF,MAAOiF,MAAAA,GAAZ,UAAYA,EAAGkF,eAAf,aAAY,EAAYnK,cAAnE,eAAwEuG,MACtEwR,yBADF,UAC2B9S,EAAEkF,eAD7B,aAC2B,EAAWvJ,MACvC+J,WAAY,CACX6M,cACsB,IAAdvS,EAAEkF,SACNjI,EAAAA,EAAAA,QACAmV,MAAAA,GADM,UACNA,EAAMG,gBADA,aACN,EAAgBC,YAChB,SAACtV,EAAD,GAAwB,IAAhBnC,EAAgB,EAAhBA,GAAIuG,EAAY,EAAZA,MAEL0S,GAAYvV,EAAAA,EAAAA,WACjBvB,GACA,SAACiX,EAAUC,GAAX,OAA4BlX,EAAIkX,GAAcrZ,KAAOA,KAgBtD,OAdIiZ,GAAa,KAChBnI,EAAAA,EAAAA,SAAQwI,OAAOC,KAAKhT,IAAQ,SAACrG,EAAMsZ,GAElCrX,EAAI8W,GAAWpO,OAAO3K,GAAQoZ,OAAOG,OAAOlT,GAAOiT,GAEzC,2BAATtZ,GACwB,YAAxBiC,EAAI8W,GAAWrY,OAGfuB,EAAI8W,GAAWrY,KAAO0Y,OAAOG,OAAOlT,GAAOiT,OAd3B,GAiBPxE,KAAKzO,IAEVpE,IAtBF,oBAyBFlC,EAAAA,EAAAA,QACFgF,EAAEkF,QAAQQ,WAAW6M,UACrB,SAACtX,GAAD,gBAAWmX,MAAAA,GAAD,UAACA,EAAMG,gBAAP,iBAAC,EAAgBE,kBAAjB,OAAC,EAA4BvR,SAASjG,EAAKF,QACpDC,QAAO,SAACyZ,GAAD,MAAkB,YAAXA,EAAE9Y,UA5Bb,SA6BFsS,EAAAA,EAAAA,KAAI9H,MAAAA,OAAD,EAACA,EAAGuO,wBAAwB,SAACzZ,GAAD,OAAUA,EAAKsX,SAAS,QA7BrD,SA8BFvX,EAAAA,EAAAA,QACFgF,EAAEkF,QAAQQ,WAAW6M,UACrB,SAACtX,GAAD,gBAAWmX,MAAAA,GAAD,UAACA,EAAMG,gBAAP,iBAAC,EAAgBE,kBAAjB,OAAC,EAA4BvR,SAASjG,EAAKF,QACpDC,QAAO,SAACyZ,GAAD,MAAkB,YAAXA,EAAE9Y,gBAGnBwJ,SAIAgB,MC/MGwO,GAGR,SAAC,GAA+B,IAA7B1T,EAA6B,EAA7BA,SAAU2T,EAAmB,EAAnBA,KAAMC,EAAa,EAAbA,OACjBxF,GAAUS,EAAAA,GAAAA,MACVgF,GAAsB3U,EAAAA,EAAAA,UAAQ,kBAAMkP,EAAQ1O,SAAS2F,WAAU,CAAC+I,IACtE,GAAwCzF,EAAAA,EAAAA,WAAS,GAAjD,eAAOmL,EAAP,KAAqBC,EAArB,KACA,GAAwCpL,EAAAA,EAAAA,UAAmBkL,GAA3D,eAAOG,EAAP,KAAqBC,EAArB,KACA,GAAsDtL,EAAAA,EAAAA,WAAS,GAA/D,eAAOuL,EAAP,KAA4BC,EAA5B,KACA,GAAYC,EAAAA,EAAAA,KAALC,GAAP,eA2BA,OANAlM,EAAAA,EAAAA,YAAU,WACL+L,GAAuBF,GAE1B5F,EAAQU,KAAKkF,EAAa3O,YAEzB,CAAC6O,EAAqB9F,EAAS4F,IAEjC,gCACC,gBAAC,MAAD,CAAQL,KAAMA,EAAMW,QAxBU,SAACC,GAChC,SACEL,GACDK,EAAalP,aAAc2O,MAAAA,OAAA,EAAAA,EAAc3O,WAAYwO,KAErDE,GAAgB,GAChBE,EAAgBM,GACT,OAmBP,gBAAC,EAAAC,MAAD,CACCC,KAAMX,EACNY,QAhCa,WACfX,GAAgB,GAChBI,GAAuB,IA+BrBQ,UAlBe,WACjBZ,GAAgB,GAChBH,IACAO,GAAuB,IAgBrBtE,MAAOwE,EAAE,wBAAyB,4BAClCO,aAAcP,EAAE,qBAAsB,gBACtCQ,aAAcR,EAAE,uBAAwB,mBAEvCrU,KCkDL,SAlFgD,SAAC,GAAyC,MAAvC4T,EAAuC,EAAvCA,OAAQkB,EAA+B,EAA/BA,SAAUC,EAAqB,EAArBA,QAASlF,EAAY,EAAZA,MAC7E,GAAYuE,EAAAA,EAAAA,KAALC,GAAP,eACMjG,GAAUS,EAAAA,GAAAA,MACVmG,GAAWC,EAAAA,GAAAA,MACXC,EAAS,CACd,CACCpb,GAAI,WACJqD,MAAOkX,EAAE,eAAgB,YACzBc,MAAO,kBAAY/G,EAAQU,KAAR,WAAiBxX,EAAjB,QAEpB,CACCwC,GAAI,UACJqD,MAAO0S,EACPsF,MAAO,kBAAY/G,EAAQU,KAAR,WAAiBxX,EAAjB,SAGfoE,EAAM,UAAG0S,EAAQ1O,gBAAX,aAAG,EAAkBhE,OAYjC,OAXAyM,EAAAA,EAAAA,YAAU,WACLzM,GACH+H,YACC,kCACC2R,SACEC,cAAc,WAAIjH,EAAQ1O,SAAShE,QAAS8S,QAAQ,YAAa,YAFpE,aACC,EAEG8G,mBACJ,KAGA,CAAClH,EAASA,EAAQ1O,SAAU0O,EAAQ1O,SAAShE,OAAQA,EAAQsZ,IAE/D,gCACC,gBAACtB,GAAD,CAAmBC,KAAMoB,EAASnB,OAAQA,GACzC,gBAAC,EAAA3Q,KAAD,KACEoR,EACA,8BACA,6DAGF,gBAAC,EAAApR,KAAD,KAAOoR,EAAE,8BAA+B,2CAEzC,gBAAC,EAAAlL,UAAD,CACCoM,YAAY,WACZjM,cAAc,eACdkM,WAAW,QACXpM,OAAO,OAEP,gBAAC,EAAAqM,IAAD,CAAKF,YAAY,aAAa5E,MAAM,QACnC,gBAAC,EAAA8E,IAAD,CACCC,QAAS,CAAEC,IAAK,SAChBrM,cAAc,aACdqH,MAAM,MACNtH,eAAe,cAEf,gBAAC,EAAAuM,YAAD,CAAaV,OAAQA,KAEtB,gBAAC,EAAAO,IAAD,CACCC,QAAS,CAAEC,IAAK,SAChBhF,MAAM,MACNrH,cAAc,WACdD,eAAe,YAEf,gBAAC,EAAAwM,QAAD,CAAS/O,MAAM,SACd,gBAAC,EAAA8J,OAAD,CACCzT,MAAOkX,EAAE,wBAAyB,mBAClCyB,QAAShB,EACTnb,MAAM,YACNoc,UAAWhB,KAGb,gBAAC,EAAAnE,OAAD,CACCzT,MAAOkX,EAAE,aAAc,QACvB1a,MAAM,UACNmc,QAASlC,EACTmC,UAAWhB,OAKf,gBAAC,EAAAiB,QAAD,Q,ykBClFI,IAAMC,GAAqD,GAC9DC,GAAY,EAahB,SAASC,GAAcC,EAAwBpK,GAC9C,OAAO,IAAIqK,SAAQ,SAACC,EAAUC,GAC7B,IN4B8B3K,E3BzCF9M,EiCaxB0X,GAAW,EAaf,IACE/W,OAAmCgX,0BAA0B,8BAC7DL,EAAO1b,MADR,GAAC,OAGAsR,MAAO,CACNA,MAAAA,EACA0K,WAAY,SAACC,GAAD,OAA4B3K,EAAM4K,eAAeD,KAE9DpV,OAAQA,EAAO6U,EAAO1b,MACtBoW,QAAAA,GACAJ,QAAAA,GACAmG,eAAAA,IC/ByB,SAACjL,GAC7B,IJ8LC1P,EI9LK4a,EAAa7c,EAAAA,WAAuB4B,QACpCkb,EAAezM,GAAqB3I,WAC1C,MAAO,CACNjD,mBAAoBoY,EAAWpY,mBAC/BE,mBAAoBkY,EAAWlY,mBAC/BrC,cAAeua,EAAWva,cAAcqP,EAAIlR,MAC5CiC,SAAU,SAACI,GAAD,OACT+Z,EAAWna,SpCIgB,SAC7BkB,EACA3B,GACwB,sBAClBa,GAAQmR,EAAAA,EAAAA,MAAI,UAACrQ,EAAKd,aAAN,QAAeb,EAAIxB,KAAM,KAC3C,MAAO,CACNwB,IAAKA,EAAIxB,KACTqC,MAAAA,EACAjD,GAAE,UAAE+D,EAAK/D,UAAP,QAAaiD,EACfxD,MAAOD,EAAkB,UAACuE,MAAAA,OAAD,EAACA,EAAMtE,aAAP,QAAgB,IACzC0D,SAAQ,UAAEY,MAAAA,OAAF,EAAEA,EAAMZ,gBAAR,QAAoBf,EAAIvB,SAChCuC,QAAO,UAAEW,MAAAA,OAAF,EAAEA,EAAMX,eAAR,SACPC,MAAK,UAAEU,MAAAA,OAAF,EAAEA,EAAMV,aAAR,QAAiB,GACtB/B,WAAU,oBAAEyC,EAAKzC,kBAAP,QAAqBc,EAAInB,YAAzB,QAAiC,cAC3CM,aAAcwC,EAAKxC,aACnBC,QAAO,UAAEuC,EAAKvC,eAAP,QAAkBjC,GoCnBJ2d,CAAeja,EAAO6O,KAC3CtO,mBAAoB,SAAC2Z,EAAiB/Z,GAAlB,OACnB4Z,EAAWxZ,mBAAmB2Z,EAAS/Z,IACxCQ,YAAa,SAACuZ,GAAD,OAAqBH,EAAWpZ,YAAYuZ,IAEzDrZ,aAAc,SAACC,GAAD,OACbiZ,EAAWlZ,apCoFoB,SAACC,EAA0B3B,GAAmC,UACzFa,GAAQmR,EAAAA,EAAAA,MAAI,UAACrQ,EAAKd,aAAN,QAAeb,EAAIxB,KAAM,KAC3C,MAAO,CACNwB,IAAKA,EAAIxB,KACTqC,MAAAA,EACAjD,GAAE,UAAE+D,MAAAA,OAAF,EAAEA,EAAM/D,UAAR,QAAciD,EAChBC,UAAS,UAAEa,MAAAA,OAAF,EAAEA,EAAMb,iBAAR,QAAqB3D,GoC1FL6d,CAAmBrZ,EAAM+N,KAElD7N,gBAAiB+Y,EAAW/Y,gBAG5BC,gBAAiB,SAACH,GAAD,OAChBiZ,EAAW9Y,gBpCWuB,SACpCH,EACA3B,GACkB,oBACZa,GAAQmR,EAAAA,EAAAA,MAAI,UAACrQ,EAAKd,aAAN,QAAeb,EAAIxB,KAAM,KAC3C,MAAO,CACNwB,IAAKA,EAAIxB,KACTqC,MAAAA,EACAjD,GAAE,UAAE+D,MAAAA,OAAF,EAAEA,EAAM/D,UAAR,QAAciD,EAChBC,UAAS,UAAEa,MAAAA,OAAF,EAAEA,EAAMb,iBAAR,QAAqB3D,EAC9B8D,MAAK,UAAEU,EAAKV,aAAP,QAAgBjB,EAAIlB,QACzBD,KAAI,UAAE8C,EAAK9C,YAAP,QAAemB,EAAInB,KACvBkC,SAAQ,oBAAEY,EAAKZ,gBAAP,QAAmBf,EAAIvB,gBAAvB,QAAmC,GAC3Cwc,YAAW,UAAEtZ,EAAKsZ,mBAAP,QAAsB,IoCxBLC,CAAsBvZ,EAAM+N,KAExD3N,mBAAoB6Y,EAAW7Y,mBAG/BC,cAAe,SAACL,GAAD,OACdiZ,EAAW5Y,cpCqBqB,SAACL,EAA2B3B,GAAoC,kBAC5Fa,GAAQmR,EAAAA,EAAAA,MAAI,UAACrQ,EAAKd,aAAN,QAAeb,EAAIxB,KAAM,KAC3C,MAAO,CACNwB,IAAKA,EAAIxB,KACTqC,MAAAA,EACAjD,GAAE,UAAE+D,MAAAA,OAAF,EAAEA,EAAM/D,UAAR,QAAciD,EAChBC,UAAS,UAAEa,MAAAA,OAAF,EAAEA,EAAMb,iBAAR,QAAqB3D,EAC9B8D,MAAK,UAAEU,EAAKV,aAAP,QAAgBjB,EAAIlB,QACzBD,KAAI,UAAE8C,EAAK9C,YAAP,QAAemB,EAAInB,KACvBkC,SAAQ,oBAAEY,EAAKZ,gBAAP,QAAmBf,EAAIvB,gBAAvB,QAAmC,IoC9BjB0c,CAAoBxZ,EAAM+N,KAEpDzN,iBAAkB2Y,EAAW3Y,iBAG7BC,eAAgB,SAACP,GAAD,OACfiZ,EAAW1Y,epC2BsB,SACnCP,EACA3B,GAFmC,sBAGjB,CAClBA,IAAKA,EAAIxB,KACTZ,GAAE,UAAE+D,MAAAA,OAAF,EAAEA,EAAM/D,UAAR,QAAcoC,EAAIxB,KACpB4c,gBAAiBzZ,MAAAA,OAAF,EAAEA,EAAMyZ,gBACvBC,gBAAiB1Z,MAAAA,OAAF,EAAEA,EAAM0Z,gBACvBva,UAAS,UAAEa,MAAAA,OAAF,EAAEA,EAAMb,iBAAR,QAAqB3D,EAC9Bme,OAAM,UAAE3Z,MAAAA,OAAF,EAAEA,EAAM2Z,cAAR,QAAkB,OACxBje,MAAOD,EAAkB,UAACuE,MAAAA,OAAD,EAACA,EAAMtE,aAAP,QAAgB,IACzC0D,SAAQ,UAAEY,MAAAA,OAAF,EAAEA,EAAMZ,gBAAR,QAAoBf,EAAIvB,SAChCwC,MAAK,UAAEU,MAAAA,OAAF,EAAEA,EAAMV,aAAR,QAAiBjB,EAAIlB,SoCvCEyc,CAAqB5Z,EAAM+N,KAEtDvN,kBAAmByY,EAAWzY,kBAG9BC,wBAAyB,SAACT,GAAD,OACxBiZ,EAAWxY,wBpCmC+B,SAC5CT,EACA3B,GAF4C,kBAGjB,CAC3BA,IAAKA,EAAIxB,KACTob,QAASjY,MAAAA,OAAF,EAAEA,EAAMiY,QACf3Y,MAAK,UAAEU,MAAAA,OAAF,EAAEA,EAAMV,aAAR,QAAiBjB,EAAIlB,QAC1BiC,SAAQ,UAAEY,MAAAA,OAAF,EAAEA,EAAMZ,gBAAR,QAAoBf,EAAIvB,SAChC2c,gBAAiBzZ,MAAAA,OAAF,EAAEA,EAAMyZ,gBACvBC,gBAAiB1Z,MAAAA,OAAF,EAAEA,EAAM0Z,gBACvBzd,GAAE,UAAE+D,MAAAA,OAAF,EAAEA,EAAM/D,UAAR,QAAcoC,EAAIxB,KACpBsC,UAAS,UAAEa,MAAAA,OAAF,EAAEA,EAAMb,iBAAR,QAAqB3D,GoC9COqe,CAA8B7Z,EAAM+N,KAExErN,2BAA4BuY,EAAWvY,2BAGvCC,0BAA2B,SAACX,GAAD,OAC1BiZ,EAAWtY,0BpC0CiC,SAC9CX,EACA3B,GAF8C,gBAGjB,CAC7BA,IAAKA,EAAIxB,KACTuC,SAAQ,UAAEY,MAAAA,OAAF,EAAEA,EAAMZ,gBAAR,QAAoBf,EAAIvB,SAChC2c,gBAAiBzZ,MAAAA,OAAF,EAAEA,EAAMyZ,gBACvBC,gBAAiB1Z,MAAAA,OAAF,EAAEA,EAAM0Z,gBACvBzd,GAAE,UAAE+D,MAAAA,OAAF,EAAEA,EAAM/D,UAAR,QAAcoC,EAAIxB,KACpBsC,UAAS,UAAEa,MAAAA,OAAF,EAAEA,EAAMb,iBAAR,QAAqB3D,GoCnDSse,CAAgC9Z,EAAM+N,KAE5EnN,6BAA8BqY,EAAWrY,6BACzCsM,cAAegM,EAAahM,cAC5BO,YAAayL,EAAazL,YAC1BL,kBAAmB8L,EAAa9L,kBAChCM,gBAAiBwL,EAAaxL,gBAC9BZ,gBAAiBoM,EAAapM,gBAC9BQ,cAAe4L,EAAa5L,cAC5BL,mBAAoBiM,EAAajM,mBAAmBc,EAAIlR,MACxD2Q,iBAAkB0L,EAAa1L,iBAC/B6F,cJwIAhV,EIxIoC0P,EAAIlR,KJyIzC,SAACyW,GAAD,OACCD,GAAaC,EAAMjV,GAAKsI,MAAK,SAACU,GAE7B,OADAA,EAAErK,KAAO,YACFqK,QGnKH0S,CAAcxB,KNGWxK,EMFTwK,ENE4D,CAClF1S,UAAWM,GAAAA,WAA2BN,UAAUkI,EAAIlR,MACpDyL,aAAcnC,GAAAA,WAA2BmC,aAAayF,EAAIlR,MAG1Dmd,e3B9C6B/Y,E2B8CA8M,EAAIlR,K3B9Cc,kBAC/CT,GAAY,SAAC8E,GAAD,OAAOA,EAAE1E,YAAYyE,Q2B8CjCM,cAAeA,EAAcwM,EAAIlR,MACjCmE,OAAQA,EAAO+M,EAAIlR,MACnByE,OAAQA,EAAOyM,EAAIlR,MAGnB8S,kBAAAA,GACAhB,kBAAAA,GACAiB,sBAAAA,GACAf,sBAAAA,GACAgB,uBAAAA,GACAf,uBAAAA,GACAkB,UAAAA,GACAX,UAAAA,GACAS,WAAAA,GACAd,WAAAA,GACAe,kBAAAA,GACAX,kBAAAA,GACAa,iBAAAA,GACAV,iBAAAA,GAEA5G,eAAAA,GACAY,eAAAA,GACAX,gBAAAA,GACAY,gBAAAA,GACAL,gBAAAA,GACAM,gBAAAA,GACAT,aAAAA,GACAF,cAAAA,GACAc,aAAAA,GACAD,cAAAA,GACAP,QAAAA,GACAM,QAAAA,GACAL,UAAAA,GACAC,WAAAA,GAEA2Q,oBAAqBxH,GAAuB1E,EAAIlR,MAChD6V,sBAAAA,GACAC,sBAAAA,GACAC,eAAAA,GAEA7B,uBAAAA,GACAI,yBAAAA,GACAD,0BAAAA,GACAhB,gBAAAA,GACAI,gBAAAA,GACAe,YAAAA,GACAE,cAAAA,GACAD,eAAAA,GAEA7B,YAAAA,GACAyK,oBAAqB,WACpB,MAAiDrQ,GAAiB/F,WAA1DgG,EAAR,EAAQA,0BACR,gBADA,EAAmCC,YAG/B5L,EAAAA,EAAAA,QAAO2L,GAA2B,SAAC1L,EAAK6L,EAAGpN,GAAT,UAAC,MAAuBuB,GAAxB,cAA8BvB,EAAOoN,EAAE8D,EAAIlR,UAAU,SM7DtFsd,GAGHvY,OAAmCwY,oBAAoB7B,EAAO1b,MAAQ,SACtEwd,GAEAje,EAAAA,UAAqB,SAAC8B,GAAD,MAAY,CAChCd,YAAa,SACTc,EAAMd,aADC,cAETmb,EAAO1b,KAAOwd,QAGjBrW,QAAQC,KAAR,oBACcsU,EAAO1b,MACpB,yHAvCG8b,IACJA,GAAW,EACXF,EAASF,KAiDV,IAAM+B,EAA4B/C,SAASgD,cAAc,UACzDD,EAAOE,aAAa,OAAQ,mBAC5BF,EAAOE,aAAa,gBAAiBjC,EAAO1b,MAC5Cyd,EAAOE,aAAa,mBAAoBjC,EAAOxb,SAC/Cud,EAAOE,aAAa,cAAe,QACnCF,EAAOE,aAAa,MAApB,UAA8BjC,EAAO3b,gBACrC2a,SAAS1P,KAAK4S,YAAYH,GAC1BlC,GAAS,GAAD,OAAIG,EAAO1b,KAAX,mBAA2Bwb,IAAa,IAAQiC,EACvD,MAAO5S,GACR1D,QAAQL,MAAM+D,GAtDTiR,IACJA,GAAW,EACXD,EAuDMhR,Q,4qBE3FH,I,slBCCPgT,EAAAA,GAAAA,gBAAe9Y,OAAOwF,OAEf,IAAMuT,IAAwB/M,EAAAA,EAAAA,eAGlC,CAEFgN,aAAc,SAACC,EAA8B5e,KAE7C6e,mBAAoB,SAACC,OAGhBC,GAAa,SAClBC,GAEA,OAAQA,GACP,IAAK,QACJ,OAAO,SAACzE,GAQP,OANAA,EAAE0E,MAAMC,KAAO,CACdC,WAAY,OACZC,MAAO,OACPC,OAAQ,OACRC,MAAO,QAED/E,GAGT,IAAK,QACJ,OAAO,SAACA,GAQP,OANAA,EAAE0E,MAAMC,KAAO,CACdC,WAAY,OACZC,MAAO,OACPC,OAAQ,OACRC,MAAO,QAED/E,GAGT,IAAK,SACJ,OAAO,SAACA,GAQP,OANAA,EAAE0E,MAAMC,KAAO,CACdC,WAAY,OACZC,MAAO,OACPC,OAAQ,OACRC,MAAO,QAED/E,GAKT,QACC,OAAO,SAACA,GAQP,OANAA,EAAE0E,MAAMC,KAAO,CACdC,WAAY,OACZC,MAAO,OACPC,OAAQ,OACRC,MAAO,QAED/E,KAMEgF,GAAoB,SAAC,GAAiB,IAAfrZ,EAAe,EAAfA,SAC7BsZ,EAAqBtV,IAAgB,SAACjF,GAAD,uBAAOA,EAAEtD,SAAS4E,aAAlB,aAAO,EAAkBiZ,sBAEpE,GAAoC3Q,EAAAA,EAAAA,UAA4B,CAC/D4Q,MAAO,SAACC,GAQP,OANAA,EAAMT,MAAMC,KAAO,CAClBC,WAAY,OACZC,MAAO,OACPC,OAAQ,OACRC,MAAO,QAEDI,KATT,eAAOC,EAAP,KAAmBC,EAAnB,MAYAvR,EAAAA,EAAAA,YAAU,WACTuR,GAAc,SAACzT,GAAD,UAAC,MACXA,GADU,IAEbsT,MAAOV,GAAWS,UAEjB,CAACA,IACJ,OAA8C3Q,EAAAA,EAAAA,UAA0C,QAAxF,eAAOgR,EAAP,KAAwBhB,EAAxB,MACAxQ,EAAAA,EAAAA,YAAU,WACT,OAAQwR,GACP,IAAK,YACJC,EAAAA,GAAAA,WACA,MACD,IAAK,WACJC,EAAAA,GAAAA,QACC,CACCC,OAAQ,IAETthB,GAED,MAED,SACCuhB,EAAAA,GAAAA,MACC,CACCD,OAAQ,IAETthB,MAID,CAACmhB,IACJ,IAAMK,GAAuBlR,EAAAA,EAAAA,cAC5B,SAAC0Q,GAAD,OAAgBxd,EAAAA,EAAAA,QAAOyd,GAAY,SAACxd,EAAKK,GAAN,OAAcA,EAAIL,KAAMud,KAC3D,CAACC,IAEIhB,GAAe3P,EAAAA,EAAAA,cAAY,SAAC4P,EAA8B5e,GAC/D4f,GAAc,SAACO,GAAD,UAAC,MAAcA,GAAf,cAAqBngB,EAAK4e,SACtC,IACH,OACC,gBAAC,gBAAD,CAAiBwB,UAAWF,GAC3B,gBAACxB,GAAsBpM,SAAvB,CAAgC7D,MAAO,CAAEkQ,aAAAA,EAAcE,mBAAAA,IACrD3Y,KChICma,GAAiC,SAAC,GAAD,IAAGna,EAAH,EAAGA,SAAUlB,EAAb,EAAaA,MAAb,OACtC,uBAAKiJ,IAAKjJ,EAAOhF,GAAIgF,GACpB,gBAAC,GAAD,CAAoBiJ,IAAKjJ,EAAO8M,IAAK9M,GACpC,gBAAC,EAAAsb,SAAD,CAAUC,SAAU,IAAKra,MAkC5B,SA7B6B,WAC5B,IAAM/E,EAAchB,GAAY,SAAC8E,GAAD,OAAOA,EAAE9D,eACnCqf,GAAUpb,EAAAA,EAAAA,UACf,kBACCqb,EAAAA,EAAAA,SAAQtf,GACL,MACA+R,EAAAA,EAAAA,KAAI/R,GAAa,SAACuf,EAAM1b,GACxB,IAAM2b,GAAWC,EAAAA,EAAAA,MAAKF,GACtB,OACC,gBAACL,GAAD,CAASpS,IAAKjJ,EAAOA,MAAOA,GAC3B,gBAAC2b,EAAD,YAIN,CAACxf,IAGF,OACC,uBACC,cAAY,cACZ8M,IAAI,cACJ4S,QAAM,EACNpR,MAAO,CAAEH,OAAQ,EAAGwR,SAAU,WAE7BN,IC7BJ,IAAMO,IAAyBC,EAAAA,GAAAA,SAAO3R,EAAAA,WAAV,gGAAG2R,CAAH,2FAQtBC,GAAmB,WACxB,IAAM3gB,EAAO6E,IACP/D,EAASqE,IACTG,GAAWsO,EAAAA,GAAAA,MACXgN,GAAY9b,EAAAA,EAAAA,UACjB,mCAAM7C,EAAAA,EAAAA,MAAKnB,GAAQ,SAACgK,GAAD,aAAO,UAAA9K,EAAK,UAAL,eAASM,QAASwK,EAAEhJ,cAA9C,aAAM,EAA8Ca,QACpD,CAAC3C,EAAMc,IAER,OAAO8f,GAAoC,OAAvBtb,MAAAA,OAAA,EAAAA,EAAU2F,UAC7B,gBAAC,MAAD,CAAU4V,OAAK,EAACC,QAAM,EAACC,KAAK,IAAIpK,GAAE,WAAMiK,KACrC,MAGU,SAASI,KACvB,IAAMC,EAAWphB,GAAY,SAAC8E,GAAD,OAAOA,EAAE5D,MAAMG,WACtCJ,GAASgE,EAAAA,EAAAA,UACd,2BACI8N,EAAAA,EAAAA,KAAIqO,GAAU,SAAC5d,GAAD,OAChB,gBAAC,MAAD,CAAOsK,IAAKtK,EAAK3D,GAAI4U,KAAI,WAAMjR,EAAKV,QACnC,gBAAC,GAAD,CAAoBgL,IAAKtK,EAAKvB,IAAK0P,IAAKnO,EAAKvB,KAC5C,gBAACuB,EAAKT,UAAN,cAKJ,CAACqe,IAGF,OACC,gBAACR,GAAD,KACC,gBAAC,EAAA1R,UAAD,CAAWG,cAAc,cACxB,gBAAC,MAAD,KAASpO,GACT,gBAAC6f,GAAD,QC5CW,SAASO,GAAT,GAA4C,IAAZtb,EAAY,EAAZA,SACxCub,GAAaC,EAAAA,EAAAA,iBAEbjT,GAAQrJ,EAAAA,EAAAA,UACb,iBAAO,CACNmO,SAAyB,WAAfkO,KAEX,CAACA,IAGF,OAAO,gBAAC,YAAD,CAAuBhT,MAAOA,GAAQvI,G,4BCVjCyb,I,8CAAiBvhB,EAAAA,EAAAA,IAAoB,SAACC,EAAKoI,GAAN,MAAe,CAChEmZ,MAAO,GACPC,gBAAgB,EAChBC,kBAAmB,SAACD,GAAD,OAAmCxhB,EAAI,CAAEwhB,eAAAA,KAC5DE,YAAa,SAACH,GAAD,OACZvhB,EAAI,CAAEuhB,OAAOI,EAAAA,EAAAA,YAAWJ,GAASA,EAAMnZ,IAAMmZ,OAASA,KACvDK,aAAc,SAACC,GAAD,OAA0B7hB,EAAI,CAAE6hB,OAAAA,U,ykBCgB/C,IAAMC,IAAqBnB,EAAAA,GAAAA,SAAOoB,EAAAA,YAAV,qFAAGpB,CAAH,8DAEpB,gBAAGtB,EAAH,EAAGA,MAAH,SAAUzD,SACAyD,EAAM2C,QAAQC,QAAQrG,SAAWyD,EAAM2C,QAAQC,QAAQC,WAO/DC,IAAkBxB,EAAAA,GAAAA,SAAOyB,EAAAA,WAAV,kFAAGzB,CAAH,2CAGL,gBAAGtB,EAAH,EAAGA,MAAH,SAAUzD,SACZ,QAAUyD,EAAM2C,QAAQK,MAAMC,SAItCC,IAAkB5B,EAAAA,GAAAA,SAAO3R,EAAAA,WAAV,kFAAG2R,CAAH,8EAQf6B,GAAkD,SAAC,GAAwC,MAAtCC,EAAsC,EAAtCA,SAAUnI,EAA4B,EAA5BA,KAAMoI,EAAsB,EAAtBA,MAAO9G,EAAe,EAAfA,SAE3EyD,GAAa1N,EAAAA,EAAAA,YAAWgR,EAAAA,cACxBnjB,GAAQuF,EAAAA,EAAAA,UAEb,kBAAO6W,EAAW,UAAYtB,GAAQoI,EAAQ,UAAY,SAC1D,CAAC9G,EAAUtB,EAAMoI,IAElB,OACC,gBAAC,EAAA1T,UAAD,CACCoM,YAAY,aACZC,WAAYO,EAAW,QAAU,QACjC3M,OAAQ,GACRuH,MAAM,MACNoM,SAAS,QACT1T,eAAe,SACfC,cAAc,gBACd0T,aAAa,OACbzT,MAAO,CACN0T,YAAa,aAAF,OAAezD,EAAM2C,QAAQe,MAAMb,SAC9Cc,OAAQpH,EAAW,UAAY,YAGhC,gBAAC,EAAAN,IAAD,CAAK2H,oBAAkB,EAAC9T,cAAc,QAAQoM,QAAS,CAAE2H,KAAM,UAC9D,gBAAC,EAAApa,KAAD,CAAM6V,KAAK,QAAQnf,MAAOA,GAA1B,UACEijB,EAAS,UADX,aACE,EAAazf,QAGhB,gBAAC,EAAAmgB,KAAD,CACCxE,KAAK,QACL/d,KAAM0Z,EAAO,mBAAqB,qBAClC9a,MAAOA,EACP4P,MAAO,CAAEgU,UAAW,cAMXC,GAAgC,SAAC,GAIxC,IAHLC,EAGK,EAHLA,YAIMC,EAAczjB,GAAY,SAAC8E,GAAD,OAAOA,EAAE5D,MAAMO,UAE/C,GAA8CiN,EAAAA,EAAAA,WAAS,GAAvD,eAAOgV,EAAP,KAAwBC,EAAxB,KACMC,GAAWC,EAAAA,EAAAA,UACjB,GAAY1J,EAAAA,EAAAA,KAALC,GAAP,eACA,EnBvFM,SAA4BtM,EAAaU,GAC/C,OAAsCE,EAAAA,EAAAA,WAAY,WACjD,IACC,IAAM3O,EAAOyF,OAAOse,aAAaC,QAAQjW,GACzC,OAAO/N,EAAO6L,KAAKoY,MAAMjkB,GAAQyO,EAChC,MAAOjH,GAER,OADAK,QAAQL,MAAMA,GACPiH,MANT,eAAOyV,EAAP,KAAoBC,EAApB,KAkBA,MAAO,CAACD,EATS,SAAC3V,GACjB,IACC,IAAM6V,EAAe7V,aAAiB8V,SAAW9V,EAAM2V,GAAe3V,EACtE4V,EAAeC,GACfL,aAAaO,QAAQvW,EAAKlC,KAAKC,UAAUsY,IACxC,MAAO5c,GACRK,QAAQL,MAAMA,MmBuEsB+c,CAAgB,qBAAsB,IAA5E,eAAOL,EAAP,KAAoBC,EAApB,KACA,GAAoCxV,EAAAA,EAAAA,UAAS,IAA7C,eAAO6V,EAAP,KAAmBC,EAAnB,KACMrQ,GAAUS,EAAAA,GAAAA,MAChB,EACC4M,KADOI,EAAR,EAAQA,YAAaG,EAArB,EAAqBA,OAAQD,EAA7B,EAA6BA,aAAcL,EAA3C,EAA2CA,MAAOC,EAAlD,EAAkDA,eAAgBC,EAAlE,EAAkEA,kBAElE,GAA8CjT,EAAAA,EAAAA,YAA9C,eAAO+V,EAAP,KAAwBC,EAAxB,KAIA,GAAgChW,EAAAA,EAAAA,WAAS,GAAzC,eAAOiW,EAAP,KAAiBC,EAAjB,KAGMC,GAAsB5f,EAAAA,EAAAA,UAG3B,kBACC8N,EAAAA,EAAAA,KAAI0Q,GAAa,SAACjgB,GAAD,MAAW,CAC3BshB,gBACC,gBAAC,EAAA5V,UAAD,CAAWG,cAAc,aAAaiM,YAAY,cACjD,gBAAC,EAAAM,QAAD,CAASmJ,WAAW,cACnB,gBAAC,EAAA1B,KAAD,CAAMviB,KAAM0C,EAAK1C,QAElB,gBAAC,EAAAkI,KAAD,KAAOxF,EAAKN,QAGdA,MAAOM,EAAKN,MACZoL,MAAO9K,EAAKV,YAEd,CAAC2gB,IAGF,GAA8B/U,EAAAA,EAAAA,UAAqD,IAAnF,eAAOsW,EAAP,KAAgBC,EAAhB,MAGA/W,EAAAA,EAAAA,YAAU,WAERwW,EADGlB,EACgB,SAAC0B,GAAD,aAClB1B,EAAY1gB,SAAUoiB,MAAAA,OAAtB,EAAsBA,EAAW5W,QAAjC,WACGlM,EAAAA,EAAAA,MAAKyiB,GAAqB,SAACtL,GAAD,OAAOA,EAAEjL,QAAUkV,EAAY1gB,gBAD5D,QAGG+hB,MAAAA,OAHH,EAGGA,EAAsB,IAGPA,MAAAA,OAAD,EAACA,EAAsB,MAExC,CAACrB,EAAaqB,KAEjB3W,EAAAA,EAAAA,YAAU,WACLuW,GAAmB1C,IAAW0C,EAAgBnW,OAAOwT,EAAa2C,EAAgBnW,SACpF,CAACyT,EAAQ0C,EAAiB3C,IAC7B,OAA0CpT,EAAAA,EAAAA,WAAS,GAAnD,eAAOyW,EAAP,KAAsBC,EAAtB,KAEA,GAAoC1W,EAAAA,EAAAA,UAAS+S,GAA7C,eAAO4D,EAAP,KAAmBC,EAAnB,KACMC,IAAYtgB,EAAAA,EAAAA,UACjB,4BACCogB,EAAWG,OAAS,IACnB,UAAA5B,EAAStL,eAAT,eAAkBmN,eAAe,UAAA7B,EAAStL,eAAT,mBAAkBmN,mBAAlB,eAA+BD,QAAS,IAC3E,CAACH,EAAWG,SAEPE,IAAc7W,EAAAA,EAAAA,cAAY,WACT,MAAlB+U,EAAStL,UACZsL,EAAStL,QAAQqN,UAAY,GAC7B,UAAA/B,EAAStL,eAAT,SAAkBsK,SAEnBgC,GAAY,GACZU,EAAc,IACd3D,GAAkB,GAClBC,EAAY,IACZ4C,EAAc,MACZ,CAAC7C,EAAmBC,IAEjBgE,IAAW/W,EAAAA,EAAAA,cAAY,WAC5B+S,GAAY,SAACiE,GACZ,IAAMC,EAAMlC,MAAAA,OAAH,EAAGA,EAAUtL,QAGtB,GADIwN,IAAKA,EAAIH,UAAY,IACrBpB,EAAWiB,OAAS,EAAG,CAC1B,IAAMO,EAAgB,GAAH,gBACfV,IADe,SAEftS,EAAAA,EAAAA,KAAIwR,MAAAA,OAAD,EAACA,EAAYlZ,MAAM,MAAM,SAACtL,GAAD,MAAW,CAAEmD,MAAOnD,EAAMimB,WAAW,QAIrE,OAFAV,EAAcS,GACdvB,EAAc,KACPziB,EAAAA,EAAAA,QACNgkB,GACA,SAAC/jB,EAAKikB,GAIL,OAHK7jB,EAAAA,EAAAA,MAAKyjB,GAAc,SAACK,GAAD,OAA2BA,EAAEhjB,QAAU+iB,EAAK/iB,UACnElB,EAAI6S,KAAKoR,GAEHjkB,KAERlC,EAAAA,EAAAA,QACC+lB,GACA,SAACM,GAAD,OACCA,EAAMC,kBACJhkB,EAAAA,EAAAA,MAAKijB,GAAY,SAACa,GAAD,OAA2BA,EAAEhjB,QAAUijB,EAAMjjB,aAKpE,OADAshB,EAAc,KACPziB,EAAAA,EAAAA,QACNsjB,GACA,SAACrjB,EAAKikB,GAIL,OAHK7jB,EAAAA,EAAAA,MAAKyjB,GAAc,SAACK,GAAD,OAA2BA,EAAEhjB,QAAU+iB,EAAK/iB,UACnElB,EAAI6S,KAAKoR,GAEHjkB,KAERlC,EAAAA,EAAAA,QACC+lB,GACA,SAACM,GAAD,OACCA,EAAMC,kBACJhkB,EAAAA,EAAAA,MAAKijB,GAAY,SAACa,GAAD,OAA2BA,EAAEhjB,QAAUijB,EAAMjjB,iBAIhEsgB,MAAAA,OAAA,EAAAA,EAAavhB,OAAQ1E,GACxB4W,EAAQU,KAAR,WAAiBtX,EAAjB,YAAkCknB,MAAAA,OAAlC,EAAkCA,EAAiBnW,QAEpDqV,GAAmB,KAEjB,CAAC/B,EAAa4B,MAAAA,OAAd,EAAcA,EAAavhB,IAAKsiB,EAAYc,EAAYlR,EAASsQ,MAAAA,OAAjE,EAAiEA,EAAiBnW,QAE/E+X,IAAiBphB,EAAAA,EAAAA,UACtB,kBACCnF,EAAAA,EAAAA,QAAOmkB,GAAa,SAACqC,GAAD,OAAOA,EAAErkB,OAAQwiB,MAAAA,OAAV,EAAUA,EAAiBnW,UACpDiY,UACAxT,KAAI,SAAChT,GAAD,UAAC,MACFA,GADC,IAEJimB,WAAW,EACXlK,SAAU4F,EACVxG,MAAO,WACNoK,GAAc,SAACkB,GAAD,yBAA6BA,GAA7B,IAAC,MAAoCzmB,GAArC,IAA2CimB,WAAW,iBAGxE,CAACvB,MAAAA,OAAD,EAACA,EAAiBnW,MAAO2V,EAAaqB,EAAe5D,IAGhD+E,IAAgB5X,EAAAA,EAAAA,cACrB,SAAC/B,EAA0B0Z,GACtB1Z,EAAO2Y,aAAe3Y,EAAO2Y,YAAYD,OAAS,EACrDP,EACCoB,GACEvmB,QACA,SAACwmB,GAAD,aACqD,KAApD,UAAAA,EAAEpjB,aAAF,eAASwjB,QAAQ5Z,EAAO2Y,iBACvBrjB,EAAAA,EAAAA,MAAKokB,GAAG,SAACjN,GAAD,OAAOA,EAAEjL,QAAUgY,EAAEpjB,YAE/ByjB,MAAM,EAAG,IAGZ1B,EAAWoB,GAAeM,MAAM,EAAG,MAGrC,CAACN,KAGIO,IAAgB/X,EAAAA,EAAAA,cACrB,SAACgY,GAAa,MAEZ,UAAAA,EAASA,EAASrB,OAAS,UAA3B,SAA+BtiB,OAA/B,MACAuhB,GAAAA,EAAiBnW,SAChBlM,EAAAA,EAAAA,MAAKikB,IAAgB,SAACC,GAAD,aAAOA,EAAEpjB,SAAF,UAAY2jB,EAASA,EAASrB,OAAS,UAAvC,aAAY,EAA+BtiB,WAExEghB,GACC,SACC5V,GADD,yBAGIA,GAHJ,CAIC,CACCA,MAAOuY,EAASA,EAASrB,OAAS,GAAGtiB,MACrCA,MAAO2jB,EAASA,EAASrB,OAAS,GAAGtiB,MACrCpC,KAAM,eACNmB,IAAKwiB,EAAgBnW,MACrBzO,GAAI,GAAF,OAAKyO,EAAMkX,QACbQ,WAAW,QASfV,EAAcuB,GACdlD,GAAmB,KAEpB,CAAC0C,GAAgB5B,MAAAA,OAAjB,EAAiBA,EAAiBnW,MAAO4V,IAGpC4C,IAAcjY,EAAAA,EAAAA,cACnB,SAACkY,GAC8B,KAA1BA,EAAGja,OAAO2Y,YACbb,GAAY,GACDD,GACXC,GAAY,GAEbJ,EAAcuC,EAAGja,OAAO2Y,aACxBgB,GAAcM,EAAGja,OAAQ2U,KAE1B,CAACA,EAAOgF,GAAe9B,KAGxBzW,EAAAA,EAAAA,YAAU,WACT,GAAIuW,MAAAA,GAAAA,EAAiBnW,MAAO,CAC3B,IAAM0Y,GAAclnB,EAAAA,EAAAA,QACnBumB,IACA,SAACY,GAAD,OAAgBA,MAAAA,OAAA,EAAAA,EAAYhlB,OAAQwiB,EAAgBnW,SACnDqY,MAAM,EAAG,GAEX1B,EAAW+B,MAEV,CAACX,GAAgB5B,MAAAA,OAAjB,EAAiBA,EAAiBnW,QAErC,IAAM4Y,IAAoBrY,EAAAA,EAAAA,cACzB,SAACsY,GACAzC,GAAmBtiB,EAAAA,EAAAA,MAAKyiB,GAAqB,SAAC9kB,GAAD,OAAUA,EAAKuO,QAAU6Y,OAGlE3D,MAAAA,OAAA,EAAAA,EAAavhB,OAAQ1E,GACxB4W,EAAQU,KAAR,WAAiBtX,EAAjB,YAAkC4pB,MAGpC,CAAC3D,MAAAA,OAAD,EAACA,EAAavhB,IAAKkS,EAAS0Q,IAE7B,IAA0CnW,EAAAA,EAAAA,WAAS,GAAnD,iBAAO0Y,GAAP,MAAsBC,GAAtB,MACMC,IAAezD,EAAAA,EAAAA,WAiBrB3V,EAAAA,EAAAA,YAAU,WACT,IAAM4X,EAAMlC,EAAStL,QACfiP,EAAW,SAACR,GACF,UAAXA,EAAGjZ,KACNtE,YAAW,kBAAM6d,IAAiB,KAAO,IAM3C,OAHIvB,GACHA,EAAI0B,iBAAiB,QAASD,GAExB,WACFzB,GACHA,EAAI2B,oBAAoB,QAASF,MAGjC,CAAC3B,MAEJ1X,EAAAA,EAAAA,YAAU,WACLkZ,KACHxB,KACAyB,IAAiB,MAEhB,CAACzB,GAAUwB,KAWd,IAAMM,IAAiBziB,EAAAA,EAAAA,UAAQ,mBAAQ+f,EAAQQ,OAAS,IAAMb,IAAU,CAACK,EAASL,IAE5EgD,IAAc1iB,EAAAA,EAAAA,UACnB,kBACCkgB,GAAiBV,EACdrK,EAAE,4BAA6B,qDAC/BA,EAAE,0BAA2B,uBAAwB,CACrD2H,OAAQ0C,MAAAA,OAAF,EAAEA,EAAiBvhB,UAE7B,CAACkX,EAAGqK,EAAiBU,IAGhByC,IAAyB3iB,EAAAA,EAAAA,UAC9B,kBACCsgB,IAAaZ,EACVvK,EAAE,eAAgB,sBAClBA,EAAE,uBAAwB,mCAC9B,CAACmL,GAAWnL,EAAGuK,IAEVkD,IAAwB5iB,EAAAA,EAAAA,UAAQ,WACrC,OAAIye,GAAmB2B,EAAWG,OAAS,EACnCpL,EAAE,eAAgB,gBAEtB+K,EACI/K,EACN,mCACA,kDAGEqH,EAAM+D,OAAS,EACXpL,EAAE,6BAA8B,uCAEjCA,EAAE,8BAA+B,0CACtC,CAACA,EAAGsJ,EAAiB2B,EAAWG,OAAQL,EAAe1D,EAAM+D,SAE1DsC,IAAYjZ,EAAAA,EAAAA,cACjB,SAACkZ,GAGA,GAFAnD,GAAY,GACZJ,EAAc,IACVC,MAAAA,GAAAA,EAAiBnW,MAAO,CAC3B,IAAM0Y,GAAclnB,EAAAA,EAAAA,QACnBumB,IACA,SAACY,GAAD,OAAgBA,MAAAA,OAAA,EAAAA,EAAYhlB,QAAQwiB,MAAAA,OAApB,EAAoBA,EAAiBnW,UACpDqY,MAAM,EAAG,GAEX1B,EAAW+B,GAEZ,MAAO,CACN9jB,MAAO6kB,EAAQ9T,OACf+R,WAAW,EACXgC,YAAa,MAGf,CAAC3B,GAAgB5B,MAAAA,OAAjB,EAAiBA,EAAiBnW,SAGnCJ,EAAAA,EAAAA,YAAU,WACToX,GAAcvS,EAAAA,EAAAA,KAAI0O,GAAO,SAAC+E,GAAD,UAAC,MAAYA,GAAb,IAAgB1K,SAAU4F,UACjD,CAACA,EAAgBD,IAEpB,IAAMwG,IAAWpZ,EAAAA,EAAAA,cAAY,kBAAMuW,GAAiB,KAAO,IACrD8C,IAAcrZ,EAAAA,EAAAA,cAAY,kBAAMuW,GAAiB,KAAQ,IACzD+C,IAAqBljB,EAAAA,EAAAA,UAAQ,kBAAO0f,IAAoBY,KAAY,CAACA,GAAWZ,IAEtF,OACC,gBAAC,EAAAzV,UAAD,CAAWoM,YAAY,aAAawH,SAAS,IAAIgD,IAAKwB,IACrD,gBAAC,EAAAc,QAAD,CACCtM,UAAW4F,EACX2G,SAAS,OACTnlB,MAAOkX,EACN,+BACA,sDAGD,gBAAC,EAAAlL,UAAD,CAAWoM,YAAY,aAAa5E,MAAM,QACzC,gBAAC,EAAAxH,UAAD,CAAW4T,SAAS,QAAQpM,MAAM,QACjC,gBAAC,EAAAxH,UAAD,CAAWoM,YAAY,aAAa5E,MAAM,QACzC,gBAAC,EAAAxH,UAAD,CAAWwH,MAAM,OAChB,gBAAC,EAAA4R,OAAD,CACCxM,SAAU4F,EACV9hB,MAAOilB,EACPtJ,WAAW,QACXgN,wBAAwB,YACxBrlB,MAAOkX,EAAE,gBAAiB,UAC1B8K,UAAWT,EACX+D,SAAUtB,GACVuB,aAAc/F,GACdpT,MAAO,CAAEoZ,SAAU,QACnBhpB,MAAM,OACNgpB,SAAS,WAGX,gBAACjG,GAAD,CAAiBnH,YAAY,cAC5B,gBAAC+G,GAAD,CACCvG,SAAU4F,EACVkC,SAAUA,EACVtV,MAAO+W,EACPsD,MAAOb,GACP9C,QAASA,EACT2C,YAAaA,GACbiB,mBAAmB,EACnBC,oBAAoB,EACpBC,WAAY,CAAC,SACbvN,WAAYmG,EAAiB,QAAU,QACvCpS,MAAO,CACN4T,OAAQ,UACR6F,UAAW,UAEZP,SAAU5B,GACVE,YAAaA,GACbkC,oBAAqB,EACrBC,OAAQf,GACRgB,QAASjB,GACTP,eAAgBA,GAChByB,oBAAoB,QAMtBhB,IACD,gBAAC,EAAAvM,QAAD,CAASwH,KAAK,SACb,gBAAC,EAAAgF,QAAD,CAASllB,MAAO0kB,GAAwBwB,UAAU,UACjD,gBAACpH,GAAD,CACClG,SAAUqM,GACVrnB,KAAK,mBACLuoB,UAAU,UACVxN,QAAS6J,OAMb,gBAAC,EAAA9J,QAAD,CAASwH,KAAK,SACb,gBAAC,EAAAgF,QAAD,CACCC,SAAS,OACTvM,SAAU4F,EACVxe,MAAO2kB,GACPuB,UAAU,UAEV,gBAAC,EAAAnH,WAAD,CACCnhB,KAAK,SACLgb,WAAY4H,GAAmB2B,EAAWG,OAAS,GACnD8D,gBAAgB,UAChBD,UAAU,QACVxN,QAAS+J,WCteJ2D,I,SAAiD,SAAC,GAAoB,MAAlB/F,EAAkB,EAAlBA,YAChE,GAAYrJ,EAAAA,EAAAA,KAALC,GAAP,eACM3U,GAAWsO,EAAAA,GAAAA,MACXzD,EAAUoD,GAAW,CAAE8P,YAAAA,EAAa/d,SAAAA,GAAYjI,EAAac,KACnE,GAAwBoQ,EAAAA,EAAAA,WAAS,GAAjC,eAAO8L,EAAP,KAAagP,EAAb,KACMC,GAAgBxkB,EAAAA,EAAAA,UACrB,wBACCqL,MAAAA,GADD,UACCA,EAASlO,YADV,aACC,OAAAkO,GACC,SAACnN,GAAD,OAAQA,EAAEumB,SAAUlG,MAAAA,OAAZ,EAAYA,EAAa3jB,KAAMsD,EAAEumB,SAAUlG,MAAAA,OAAZ,EAAYA,EAAavhB,OAAQkB,EAAEgf,aAE5E,CAAC7R,EAASkT,MAAAA,OAAV,EAAUA,EAAavhB,IAAKuhB,MAAAA,OAA5B,EAA4BA,EAAa3jB,KAEpC8pB,EArCqB,SAC3BrZ,EACAkT,GAEA,IAAMrjB,EAAO6E,IAEP4kB,GAAQ3kB,EAAAA,EAAAA,UAAQ,kBAAM4kB,EAAAA,EAAAA,SAAQvZ,EAAS,WAAU,CAACA,IACxD,OAAOrL,EAAAA,EAAAA,UACN,sDACK2kB,EAAK,UAACpG,MAAAA,OAAD,EAACA,EAAavhB,WAAd,QAAqB,WAD/B,QACsC,KADtC,SAEIF,EAAAA,EAAAA,QACF5B,GACA,SAAC6B,EAAKC,EAAKsX,GAAM,MAIhB,OAHItX,EAAIxB,QAAS+iB,MAAAA,OAAb,EAAaA,EAAavhB,OAAO,UAAA2nB,EAAM3nB,EAAIxB,aAAV,eAAiB+kB,QAAS,GAC9DxjB,EAAI6S,KAAJ,MAAA7S,EAAG,CAAM,CAAEpB,KAAM,UAAWsC,MAAO,GAAIrD,GAAI,WAAF,OAAa0Z,KAAnD,gBAA6DqQ,EAAM3nB,EAAIxB,SAEpEuB,IAER,QAGF,CAACwhB,MAAAA,OAAD,EAACA,EAAavhB,IAAK9B,EAAMypB,IAgBDE,CAAoBxZ,EAASkT,GAEhD/I,GAAU5L,EAAAA,EAAAA,cAAY,WAC3B2a,GAAQ,KACN,IACGO,GAASlb,EAAAA,EAAAA,cAAY,WAC1B2a,GAAQ,KACN,IACH,OAAOC,EACN,gBAAC,EAAAO,YAAD,CACC1a,MAAO,CAAEH,OAAQ,QACjBoM,WAAW,UACXrY,MAAK,UAAEumB,MAAAA,OAAF,EAAEA,EAAevmB,aAAjB,QAA0BkX,EAAE,MAAO,OACxCyB,QAAS4N,MAAAA,OAAF,EAAEA,EAAevO,MACxBtb,MAAO+pB,EACP7N,UAAW2N,IAAiBA,MAAAA,OAAlB,EAAkBA,EAAe3N,YAG5C,gBAAC,EAAAmO,SAAD,CAAUrqB,MAAO+pB,EAAkBlP,QAASA,EAASsP,OAAQA,GAC5D,gBAAC,EAAApT,OAAD,CACCrH,MAAO,CAAEH,OAAQ,QACjBoM,WAAW,UACX3b,MAAO+pB,EACPzmB,MAAOkX,EAAE,MAAO,OAChBtZ,KAAM0Z,EAAO,YAAc,mBCa/B,SA/DK,SAAC,GAAkE,IAAhEgJ,EAAgE,EAAhEA,YAAa0G,EAAmD,EAAnDA,gBAAiBC,EAAkC,EAAlCA,kBAAmBpkB,EAAe,EAAfA,SAClDub,GAAaC,EAAAA,EAAAA,iBACb6I,EAAgBpqB,GAAY,SAAC8E,GAAD,OAAOA,EAAE5D,MAAMO,OAAO+jB,OAAS,KACjE,OACC,gBAAC,EAAAtW,UAAD,CACCoM,YAAY,aACZC,WAAW,QACX7E,MAAM,OACNvH,OAAO,OACPkb,UAAU,OACVC,UAAU,OACVjb,cAAc,gBACdoM,QAAS,CACRsJ,WAA2B,YAAfzD,EAA2B,QAAU,aACjDiJ,SAAU,UAGX,gBAAC,EAAArb,UAAD,CAAWoM,YAAY,aAAa5E,MAAM,MAAM2R,SAAS,MAAMhZ,cAAc,iBAC5E,gBAAC,EAAAmb,WAAD,CAAYC,KAAK,UAChB,gBAAC,EAAA7O,QAAD,CAAS/O,MAAM,SACd,gBAAC,EAAAoV,WAAD,CAAYnhB,KAAMopB,EAAkB,QAAU,OAAQrO,QAASsO,MAGjE,gBAAC,EAAAjb,UAAD,CAAWwH,MAAO,IAAKvH,OAAQ,GAAIC,eAAe,cACjD,gBAACxJ,EAAD,CAAWE,QAAS,CAACjH,EAAYG,QAChC,gBAAC,KAAD,CAAMmQ,OAAO,UAEd,gBAACvJ,EAAD,CAAWC,QAAS,CAAChH,EAAYG,QAChC,gBAAC,KAAD,CAAWmQ,OAAO,WAGpB,gBAACvJ,EAAD,CAAWE,QAAS,CAACjH,EAAYG,QAChC,gBAAC,EAAA4c,QAAD,CAASmJ,WAAW,SACnB,gBAACwE,GAAD,CAAgB/F,YAAaA,MAG/B,gBAAC,EAAAgH,WAAD,CAAYC,KAAK,WACfL,GACA,gBAAC7G,GAAD,CACCC,YAAaA,MAOjB,gBAAC,EAAAtU,UAAD,CAAWoM,YAAY,aAAa5E,MAAM,MAAMrH,cAAc,YAC7D,gBAAC,EAAAmb,WAAD,CAAYC,KAAK,WAAW1kB,GAC5B,gBAAC,EAAAykB,WAAD,CAAYC,KAAK,UAChB,gBAAC,EAAAvb,UAAD,CACCoM,YAAY,aACZjM,cAAc,WACdoM,QAAS,CAAE5O,MAAO,oB,aCrElB6d,IAAY7J,EAAAA,GAAAA,SAAO3R,EAAAA,WAAV,2EAAG2R,CAAH,+MAKA,kBAAGvhB,EAAH,EAAGA,MAAH,SAAUigB,MAA0B2C,QAAN,UAAc5iB,MAAAA,OAAd,EAAcA,EAAOI,aAArB,QAA8B,WAAW0iB,WA0BtF,UAf4CuI,EAAAA,EAAAA,aAAW,WAAsB7E,GAAtB,MAAGxmB,EAAH,EAAGA,MAAOyG,EAAV,EAAUA,SAAV,OACtD,gBAAC,EAAAmJ,UAAD,CAAWwH,MAAO,GAAIvH,OAAQ,GAAIG,MAAO,CAAEtM,SAAU,YAAc8iB,IAAKA,GACtExmB,EAAMC,MACN,gBAACmrB,GAAD,CAAWprB,MAAOA,EAAO6P,OAAO,MAAMuH,MAAM,OAC1CpX,EAAMG,UACN,gBAAC,EAAAuJ,KAAD,CAAM6V,KAAK,aAAavP,MAAO,CAAEmM,QAAS,UAAWiN,SAAU,QAAUhpB,MAAM,SAA/E,UACEJ,EAAME,aADR,QACiB,GAEd,MAGLuG,MCzBI,IAAM6kB,GAAY,SAACC,EAAmBC,GAApB,OACxBC,EAAAA,EAAAA,cAAaF,EAAIC,GAAItF,OAAS,GAElBwF,GAAa,SACzBxnB,EACAggB,GAEA,IAAMyH,EAAoB9R,OAAOG,OAAOkK,MAAAA,EAAAA,EAAe,IACvD,OAAIhgB,EAAK8Z,iBAAyBsN,GAAUK,EAAmBznB,EAAK8Z,kBAChE9Z,EAAK6Z,iBAAwBuN,GAAUK,EAAmBznB,EAAK6Z,kBAGvD6N,GAAkB,WAC9B,IAAMC,EAAenrB,GAAY,SAAC8E,GAAD,OAAOA,EAAE5D,MAAMK,cAE1CiiB,EAAc1P,KACpB,OAAO7O,EAAAA,EAAAA,UACN,kBAAMnF,EAAAA,EAAAA,QAAOqrB,GAAc,SAAC7E,GAAD,OAAO0E,GAAW1E,EAAG9C,QAChD,CAACA,EAAa2H,K,ykBCChB,IAAMC,IAAmBvK,EAAAA,GAAAA,SAAO3R,EAAAA,WAAV,yFAAG2R,CAAH,wHACP,gBAAGtB,EAAH,EAAGA,MAAO8L,EAAV,EAAUA,OAAV,OAA+B9L,EAAM2C,QAAQmJ,EAAS,QAAU,SAASjJ,WAIxE,gBAAG7C,EAAH,EAAGA,MAAO8L,EAAV,EAAUA,OAAV,OAA+B9L,EAAM2C,QAAQmJ,EAAS,QAAU,SAAS7I,SAGzE,gBAAGjD,EAAH,EAAGA,MAAO8L,EAAV,EAAUA,OAAV,OAA+B9L,EAAM2C,QAAQmJ,EAAS,QAAU,SAASzI,SAInF0I,IAAuBzK,EAAAA,GAAAA,SAAO3R,EAAAA,WAAV,6FAAG2R,CAAH,iCACC,qBAAGtB,MAA0B2C,QAAQqJ,MAAMnJ,WAGhEoJ,GAAsB,WAC3B,OAA8B3Z,EAAAA,EAAAA,YAAWuD,IAAjCC,EAAR,EAAQA,OAAQG,EAAhB,EAAgBA,UACRY,GAAoBvE,EAAAA,EAAAA,YAAW4D,IAA/BW,gBAER,OAAIkK,EAAAA,EAAAA,SAAQjL,GAAgB,KAE3B,gBAAC,EAAA4M,WAAD,CACCoH,UAAU,UACVvoB,KAAM0U,EAAY,YAAc,gBAChCqG,QAASzF,EACTyI,KAAK,WAeF4M,GAAkD,SAAC,GAAD,IAAGjoB,EAAH,EAAGA,KAAM6nB,EAAT,EAASA,OAAQxP,EAAjB,EAAiBA,QAAjB,OACvD,gBAACuP,GAAD,CACC9P,YAAY,aACZjM,cAAc,aACdF,OAAO,OACP0M,QAASA,GAET,gBAAC,GAAD,CAAWvc,MAAOkE,EAAKlE,OACK,iBAAnBkE,EAAKT,UACZ,gBAAC,EAAAsgB,KAAD,CAAMviB,KAAM0C,EAAKT,UAAWrD,MAAO2rB,EAAS,UAAY,OAAQxM,KAAK,UAErE,gBAACrb,EAAKT,UAAN,CAAgBsoB,OAAQA,KAG1B,gBAAC,EAAAzP,QAAD,CAAS/O,MAAM,SACd,gBAAC,EAAA7D,KAAD,CAAMtJ,MAAO2rB,EAAS,UAAY,QAAS7nB,EAAKN,UAK7CwoB,GAA6C,SAAC,GAAD,IAAGloB,EAAH,EAAGA,KAAM6nB,EAAT,EAASA,OAAQxP,EAAjB,EAAiBA,QAAjB,OAClD,gBAAC,EAAAuM,QAAD,CAASllB,MAAOM,EAAKN,MAAOkmB,UAAU,QAAQtb,IAAKtK,EAAK3D,IACvD,gBAAC,GAAD,CAAWP,MAAOkE,EAAKlE,OACK,iBAAnBkE,EAAKT,UACZ,gBAAC,EAAAkf,WAAD,CACCnhB,KAAM0C,EAAKT,UACXumB,gBAAiB+B,EAAS,QAAU,QACpChC,UAAWgC,EAAS,UAAY,OAChCxP,QAASA,EACTgD,KAAK,UAGN,gBAACrb,EAAKT,UAAN,CAAgBsoB,OAAQA,OAMtBM,GAA+D,SAAC,GAAD,IAAGnoB,EAAH,EAAGA,KAAH,OACpEyC,IACC,gBAAC,GAAD,CAAoB6H,IAAKtK,EAAK3D,GAAI8R,IAAKnO,EAAKvB,KAC3C,gBAACmpB,GAAD,CACC9P,YAAY,aACZjM,cAAc,aACdF,OAAO,OACP0M,QAASrY,EAAKqY,SAEd,gBAAC,EAAA3M,UAAD,CAAWwH,MAAO,GAAIvH,OAAQ,GAAIG,MAAO,CAAEtM,SAAU,aACzB,iBAAnBQ,EAAKT,UACZ,gBAAC,EAAAsgB,KAAD,CAAMviB,KAAM0C,EAAKT,UAAW8b,KAAK,UAEjC,gBAACrb,EAAKT,UAAN,OAGF,gBAAC,EAAA6Y,QAAD,CAAS/O,MAAM,SACd,gBAAC,EAAA7D,KAAD,KAAOxF,EAAKN,UAKf,gBAAC,EAAAklB,QAAD,CAASllB,MAAOM,EAAKN,MAAOkmB,UAAU,QAAQtb,IAAKtK,EAAK3D,IACvD,gBAAC,GAAD,CAAoBiO,IAAKtK,EAAK3D,GAAI8R,IAAKnO,EAAKvB,KAChB,iBAAnBuB,EAAKT,UACZ,gBAAC,EAAAkf,WAAD,CACCnhB,KAAM0C,EAAKT,UACXumB,gBAAgB,QAChBD,UAAU,OACVxN,QAASrY,EAAKqY,QACdgD,KAAK,UAGN,gBAACrb,EAAKT,UAAN,SA8FL,SAxFuD,SAAC,GAAoB,IAAlBygB,EAAkB,EAAlBA,YACnDoI,EAAkB5rB,GAAY,SAAC8E,GAAD,OAAOA,EAAE5D,MAAMC,cAEnD,GAA4BuN,EAAAA,EAAAA,UAAiC,IAA7D,eAAOzN,EAAP,KAAe4qB,EAAf,KACM1X,GAAUS,EAAAA,GAAAA,OAEhB1G,EAAAA,EAAAA,YAAU,WACT2d,GAAU,SAAC5gB,GAAD,OACT2gB,EAAgB7pB,QAAO,SAACC,EAAKskB,GAG5B,OADKtkB,EAAIskB,EAAEzmB,MAAKmC,EAAIskB,EAAEzmB,IAAMymB,EAAExjB,OACvBd,IACLiJ,QAEF,CAAC2gB,KACJ1d,EAAAA,EAAAA,YAAU,WACLsV,GACHqI,GAAU,SAAC5gB,GAAD,UAAC,MAAYA,GAAb,cAAiBuY,EAAY3jB,IAAKoU,EAAAA,EAAAA,MAAKE,EAAQ1O,SAAS2F,SAAU,YAE3E,CAACoY,EAAarP,EAAQ1O,SAAS2F,SAAUwgB,IAC5C,IAAME,EAA2B9rB,GAAY,SAAC8E,GAAD,OAAOA,EAAE5D,MAAMQ,yBACtDqqB,GAAc9mB,EAAAA,EAAAA,UACnB,kBACCrC,EAAAA,EAAAA,SACC9C,EAAAA,EAAAA,QAAOgsB,GAA0B,SAACxF,GAAD,OAAO0E,GAAW1E,EAAG9C,MACtD,cAEF,CAACA,EAAasI,IAEf,OACC,gBAACR,GAAD,CACC5U,MAAOzQ,IAAY,MAAQ,GAC3BkJ,OAAO,OACPoM,WAAW,QACXD,YAAY,WACZjM,cAAc,aACdD,eAAe,cAEf,gBAAC,EAAAoM,IAAD,CACCnM,cAAc,aACdD,eAAe,aACfkM,YAAY,WACZ6H,oBAAkB,EAClB6I,KAAK,SACL1c,MAAO,CAAE+a,UAAW,MAAO9a,UAAW,YAEtC,gBAAC3J,EAAD,CAAWC,QAAS,CAAChH,EAAYG,SAC/B+T,EAAAA,EAAAA,KAAI6Y,GAAiB,SAACpoB,GAAD,OAErBA,EAAKP,QACJ,gBAACwoB,GAAD,CACC3d,IAAKtK,EAAK3D,GACVgc,QAAS,kBAAY1H,EAAQU,KAAR,WAAiB5T,EAAOuC,EAAK3D,OAClD2D,KAAMA,EACN6nB,QAAQ7H,MAAAA,OAAA,EAAAA,EAAa3jB,MAAO2D,EAAK3D,KAE/B,SAGN,gBAAC+F,EAAD,CAAWE,QAAS,CAACjH,EAAYG,SAC/B+T,EAAAA,EAAAA,KAAI6Y,GAAiB,SAACpoB,GAAD,OAErBA,EAAKP,QACJ,gBAACyoB,GAAD,CACC5d,IAAKtK,EAAK3D,GACVgc,QAAS,kBAAY1H,EAAQU,KAAR,WAAiB5T,EAAOuC,EAAK3D,OAClD2D,KAAMA,EACN6nB,QAAQ7H,MAAAA,OAAA,EAAAA,EAAa3jB,MAAO2D,EAAK3D,KAE/B,UAIP,gBAAC,EAAA2b,IAAD,CACCnM,cAAc,WACdiM,YAAY,WACZ0Q,KAAK,SACL1c,MAAO,CAAE+a,UAAW,MAAO9a,UAAW,YAErCwc,EAAYhZ,KAAI,SAACuT,GAAD,OAChB,gBAACqF,GAAD,CAA4BnoB,KAAM8iB,EAAGxY,IAAKwY,EAAEzmB,QAE7C,gBAAC2rB,GAAD,SC7NJ,IAAMS,GAAkBpL,GAAAA,QAAAA,IAAAA,WAAH,sEAAGA,CAAH,yKAOA,qBAAGtB,MAA0B2C,QAAQgK,MAAM9J,WAG1C,qBAAG7C,MAA0B2C,QAAQgK,MAAM1J,SAI3D2J,GAAStL,GAAAA,QAAAA,IAAAA,WAAH,6DAAGA,CAAH,4TAYS,qBAAGtB,MAA0B2C,QAAQgK,MAAM9J,WAE3C,qBAAG5H,KAA2B,GAAK,KAElC,qBAAG+E,MAA0B2C,QAAQgK,MAAM1J,SAG3C,qBAAGjD,MAA0B2C,QAAQgK,MAAMb,UAIpDe,GAAuE,SAAC,GAAD,IACnF5R,EADmF,EACnFA,KACAqB,EAFmF,EAEnFA,QAFmF,OAInF,gBAACoQ,GAAD,KACC,gBAACE,GAAD,CAAQtQ,QAASA,EAASrB,KAAMA,GAC/B,gBAAC,EAAA6I,KAAD,CAAMxE,KAAK,SAAS/d,KAAK,mBC7CfurB,IAAqBpsB,EAAAA,EAAAA,IAAwB,SAACC,GAAD,MAAU,CACnEuqB,KAAM,SACNnS,aAASrO,EACTqiB,mBAAmB,EACnBC,QAAS,SAAC9B,GAAD,OACRvqB,GAAI,SAAC4E,GAAD,MAAQ,CAAE2lB,KAAAA,EAAM6B,kBAA4B,SAAT7B,GAA0B3lB,EAAEwnB,uBACpEE,WAAY,SAAClU,GAAD,OAAmBpY,EAAI,CAAEoY,QAAAA,KACrCmU,qBAAsB,SAACH,GAAD,OAAsCpsB,EAAI,CAAEosB,kBAAAA,SCLtDI,GAAS,kBACrB3iB,GAAAA,WAEEN,UAAUrM,EAFZ2M,CAE0B,aAAc,CACtCJ,MAAO,sBAEPY,MAAK,WACLS,MAAM,oBACJT,MAAK,SAAClC,GAAD,OAASA,KACdkC,KAAKhF,OCHJonB,GAA4C,SAAC,GAAa,IAAXnpB,EAAW,EAAXA,KACpD,EAA+C6oB,KAAvC5B,EAAR,EAAQA,KAAM8B,EAAd,EAAcA,QAASjU,EAAvB,EAAuBA,QAASkU,EAAhC,EAAgCA,WAC1B3Q,GAAUhN,EAAAA,EAAAA,cAAY,WAE3B0d,EAAQjU,IAAY9U,EAAK3D,IAAuB,SAAT4qB,EAAT,OAAoC,UAClE+B,EAAWhpB,EAAK3D,MACd,CAACyY,EAASmS,EAAM+B,EAAYD,EAAS/oB,EAAK3D,KAC7C,MAA2B,iBAAhB2D,EAAK+Z,OAEd,gBAAC,EAAA6K,QAAD,CAASllB,MAAOM,EAAKN,MAAOkmB,UAAU,cACrC,gBAAC,EAAAnH,WAAD,CACCnhB,KAAM0C,EAAK+Z,OACX8L,UAAW/Q,IAAY9U,EAAK3D,GAAK,UAAY,OAC7Cgc,QAASA,EACTgD,KAAK,WAKF,gBAACrb,EAAK+Z,OAAN,CAAakN,KAAMA,EAAM8B,QAASA,KAG7BK,GAAsB,WAClC,IAAM1rB,EAAQgqB,KACd,GAAY/Q,EAAAA,EAAAA,KAALC,GAAP,eACMyS,GAAe5nB,EAAAA,EAAAA,UACpB,iBAAM,CACL,CACCpF,GAAI,WACJqD,MAAOkX,EAAE,iBAAkB,YAC3Bc,MAAO,kCACNzN,GAAiB/F,WAAWgG,iCADtB,aACN,EAAuDgI,SAAStY,EAAhE,CACC,aACA,CAAEwY,MAAOwE,EAAE,iBAAkB,eAE/BtZ,KAAM,wBAEP,CACCjB,GAAI,SACJqD,MAAOkX,EAAE,oBAAqB,eAC9Bc,MAAO,WACNnR,GAAAA,WAA2BN,UAAUrM,EAArC2M,CAA2E,OAAQ,CAClFJ,MAAO,oBAGT7I,KAAM,WAEP,CACCjB,GAAI,OACJqD,MAAOkX,EAAE,sBAAuB,iBAGhCc,MAAO,aACPY,UAAU,EACVhb,KAAM,eAEP,CACCjB,GAAI,SACJqD,MAAOkX,EAAE,eAAgB,UACzBc,MAAOwR,GACP5rB,KAAM,aAGR,CAACsZ,IAEF,OACC,gBAAC,EAAAlL,UAAD,CAAWoM,YAAY,aAAa5E,MAAM,QACxC3D,EAAAA,EAAAA,KAAI7R,GAAO,SAACsC,GAAD,OACX,gBAACmpB,GAAD,CAAgBnpB,KAAMA,EAAMsK,IAAKtK,EAAK3D,QAEvC,gBAAC,EAAAuoB,QAAD,CAASllB,MAAOkX,EAAE,qBAAsB,gBAAiBgP,UAAU,YAClE,gBAAC,EAAAa,SAAD,CAAUrqB,MAAOitB,GAChB,gBAAC,EAAA5K,WAAD,CAAYnhB,KAAK,gBAAgB+d,KAAK,cC3ErCiO,IAAQjM,EAAAA,GAAAA,SAAO3R,EAAAA,WAAV,mEAAG2R,CAAH,uIACD,kBAAgC,WAAhC,EAAG4J,KAAwC,IAAM,MAQjC,qBAAGlL,MAA0B2C,QAAQgK,MAAM9J,WAE/D2K,GAASlM,GAAAA,QAAAA,IAAAA,WAAH,yDAAGA,CAAH,sEAEF,kBAAgC,SAAhC,EAAG4J,KAAsC,IAAM,MAK5CuC,GAAwB,WACpC,MAA+CX,KAAvC5B,EAAR,EAAQA,KAAM8B,EAAd,EAAcA,QAASjU,EAAvB,EAAuBA,QAASkU,EAAhC,EAAgCA,WAC1BtrB,EAAQgqB,KACR+B,GAAehoB,EAAAA,EAAAA,UAAQ,kBAAM7C,EAAAA,EAAAA,MAAKlB,GAAO,SAACsC,GAAD,OAAUA,EAAK3D,KAAOyY,OAAU,CAACA,EAASpX,IAMzF,OALAgN,EAAAA,EAAAA,YAAU,WACuB,MAA1BoK,GAAW2U,GAChBT,EAAU,UAACtrB,EAAM,UAAP,aAAC,EAAUrB,MAEpB,CAACyY,EAAS2U,EAAcT,EAAYtrB,IAChC+rB,EACN,gBAAC,EAAAzC,WAAD,CAAYC,KAAK,WAChB,gBAACsC,GAAD,CAAQtC,KAAMA,GACb,gBAACqC,GAAD,CAAOrC,KAAMA,EAAMpb,cAAc,cAC/B4d,GACA,gBAAC,GAAD,CAAoBtb,IAAKsb,MAAAA,OAAF,EAAEA,EAAcptB,IACtC,gBAACotB,EAAalqB,UAAd,CAAwB0nB,KAAMA,EAAM8B,QAASA,QAM/C,MClCCW,IAAmBrM,EAAAA,GAAAA,SAAO3R,EAAAA,WAAV,0FAAG2R,CAAH,0FAGZ,qBAAGsM,cAA6C,IAAM,MAiEhE,SAxDiD,SAAC,GAAoB,IAAlB3J,EAAkB,EAAlBA,YAC7C4J,EAASf,IAAmB,SAACvnB,GAAD,OAAOA,EAAEwnB,qBACrCe,EAAYhB,IAAmB,SAACvnB,GAAD,OAAOA,EAAE2nB,wBACxCa,GAAmBze,EAAAA,EAAAA,cAAY,kBAAMwe,GAAWD,KAAS,CAACA,EAAQC,IAClEE,EAAoBvtB,GAAY,SAAC8E,GAAD,OAAOA,EAAE5D,MAAME,gBAC/CosB,EAA6BxtB,GAAY,SAAC8E,GAAD,OAAOA,EAAE5D,MAAMS,2BACxDoqB,GAAc9mB,EAAAA,EAAAA,UACnB,kBACCrC,EAAAA,EAAAA,SACC9C,EAAAA,EAAAA,QAAO0tB,GAA4B,SAAClH,GAAD,OAAO0E,GAAW1E,EAAG9C,MACxD,cAEF,CAACA,EAAagK,IAMf,OAJiBvoB,EAAAA,EAAAA,UAChB,kBAAM1B,EAAAA,EAAAA,WAAUgqB,GAAmB,SAAC/pB,GAAD,OAAUA,EAAK3D,MAAO2jB,MAAAA,OAAZ,EAAYA,EAAa3jB,OAAM,IAC5E,CAAC2jB,MAAAA,OAAD,EAACA,EAAa3jB,GAAI0tB,IAED,KACjB,gCACC,gBAACL,GAAD,CACCC,cAAeC,EACfK,KAAK,OACLte,OAAO,OACPmM,YAAY,WACZjM,cAAc,gBACdwM,QAASuR,OAASnjB,EAAYqjB,EAC9Bhe,MAAO,CACNgb,UAAW,qBACX/a,UAAW,SAGZ,gBAAC,EAAAL,UAAD,CAAWG,cAAc,cACxB,gBAAC,MAAD,MACE0D,EAAAA,EAAAA,KAAIwa,GAAmB,SAAC/pB,GAAD,OACvB,gBAAC,MAAD,CAAOsK,IAAKtK,EAAK3D,GAAI4U,KAAI,WAAMjR,EAAKV,QACnC,gBAAC,GAAD,CAAoB6O,IAAKnO,EAAKvB,KAC7B,gBAACuB,EAAKT,UAAN,CAAgB2qB,SAAUN,WAM/B,gBAAC,EAAAle,UAAD,CAAWG,cAAc,WAAWF,OAAO,OACzC4c,EAAYhZ,KAAI,SAACvP,GAAD,OAChB,gBAAC,GAAD,CAAoBsK,IAAKtK,EAAK3D,GAAI8R,IAAKnO,EAAKvB,KAC3C,gBAACuB,EAAKT,UAAN,CAAgB2qB,SAAUN,UAK9B,gBAAChB,GAAD,CAAWvQ,QAASyR,EAAkB9S,KAAM4S,MCpE/C,IAAMO,GAAmB,SAAC,GAAD,IAAG5tB,EAAH,EAAGA,KAAH,OACxBA,EAAK6tB,UACJ,gBAAC,GAAD,CAAoBjc,IAAK5R,EAAKF,IAC7B,gBAACE,EAAK6tB,UAAN,OAEE,MAEU,SAASC,GAAT,GAAuD,IAA7B3D,EAA6B,EAA7BA,gBAAiB4D,EAAY,EAAZA,SACnD3Z,GAAUS,EAAAA,GAAAA,MACV1T,EAAQlB,GAAY,SAAC8E,GAAD,OACzB/C,EAAAA,EAAAA,QACC+C,EAAE7D,QACF,SAACe,EAAKK,GACL,IAAM8f,GAAU/f,EAAAA,EAAAA,MAAK0C,EAAE5D,MAAMC,YAAY,SAACpB,GAAD,OAAUA,EAAKF,KAAOwC,EAAIxC,MAC7D+tB,GAAYxrB,EAAAA,EAAAA,MAAK0C,EAAE5D,MAAME,cAAc,SAACrB,GAAD,OAAUA,EAAKF,KAAOwC,EAAIxC,MAoBvE,OAnBIsiB,GAAWA,EAAQlf,SACtBjB,EAAI6S,KAAK,CACRhV,GAAI,GAAF,OAAKwC,EAAIJ,IAAT,SACFiB,MAAOif,EAAQjf,MACfpC,KAAmC,iBAAtBqhB,EAAQpf,UAAyBof,EAAQpf,UAAY,OAClE8Y,QAAS,kBAAM1H,EAAQU,KAAR,WAAiBxS,EAAIS,SACpClD,MAAOguB,EACJ,CACA,CACC/tB,GAAI+tB,EAAU/tB,GACdqD,MAAO0qB,EAAU/tB,GACjBiB,KAAM,OACN8sB,UAAWA,EAAU7qB,UACrBgrB,gBAAiBJ,KAGlB,KAGE3rB,IAER,OAIF,OACC,gBAAC,EAAAkN,UAAD,CACCC,OAAO,OACPuH,MAAM,MACN6E,WAAW,QACXjM,MAAO,CACNtM,SAAU,WACVogB,KAAM,EACN4K,IAAK,EACLC,OAAQ,IAGT,gBAAC,EAAAC,SAAD,CAAU5S,YAAY,aAAad,KAAM0P,EAAiBiE,UAAU,QACnE,gBAAC,EAAAjf,UAAD,CACCwH,MAAO,IACPvH,OAAO,OACPmM,YAAY,WACZjM,cAAc,gBACdC,MAAO,CACNgb,UAAW,qBACX/a,UAAW,SAGZ,gBAAC,EAAAL,UAAD,CAAWwH,MAAM,OAAOvH,OAAO,MAAMmM,YAAY,WAAWjM,cAAc,iBACzE,gBAAC,EAAA+e,UAAD,CAAWxuB,MAAOsB,KAEnB,gBAAC,EAAAgO,UAAD,CAAWwH,MAAM,OAAOvH,OAAO,MAAMmM,YAAY,WAAWjM,cAAc,YACzE,gBAAC,EAAA+e,UAAD,CAAWxuB,MAAOkuB,IAClB,gBAAC,EAAAlS,QAAD,CAAS2O,SAAS,eCrET,SAAS8D,GAAT,GAA8D,IAAhCnE,EAAgC,EAAhCA,gBAAiB1G,EAAe,EAAfA,YAC7D,OACC,gBAAC,EAAAtU,UAAD,CACCoM,YAAY,aACZC,WAAW,QACX7E,MAAM,MACNvH,OAAO,OACPE,cAAc,aACdD,eAAe,cAEf,gBAAC,EAAAob,WAAD,CAAYC,KAAK,WAChB,gBAAC,GAAD,CAAiBjH,YAAaA,IAC9B,gBAAC,GAAD,CAAmBA,YAAaA,KAEjC,gBAAC,EAAAgH,WAAD,CAAYC,KAAK,UAChB,gBAACoD,GAAD,CAAgB3D,gBAAiBA,EAAiB1G,YAAaA,MCPnE,IAAM8K,IAAezN,EAAAA,GAAAA,SAAOrF,EAAAA,KAAV,kFAAGqF,CAAH,2HAKG,gBAAGtB,EAAH,EAAGA,MAAH,SAAU8L,OACpB9L,EAAM2C,QAAQqJ,MAAMnJ,QAAU7C,EAAM2C,QAAQK,MAAMH,WAKvD6J,IAAkBpL,EAAAA,GAAAA,SAAO3R,EAAAA,WAAV,qFAAG2R,CAAH,sDAGN,qBAAGtB,MAAkB2C,QAAQqJ,MAAMnJ,WACvC,qBAAG7C,MAAkBT,MAAMrD,QAAQuD,cAG/B,SAASuP,GAAT,GAA8C,IAAvBjrB,EAAuB,EAAvBA,IAAKxC,EAAkB,EAAlBA,KAAM0tB,EAAY,EAAZA,SAChD,GAAiC3c,EAAAA,EAAAA,YAAWuD,IAApCC,EAAR,EAAQA,OAAQC,EAAhB,EAAgBA,aAChB,GAAyCzD,EAAAA,EAAAA,YAAW4D,IAA5CI,EAAR,EAAQA,YAAaI,EAArB,EAAqBA,gBACrB,GAAYkE,EAAAA,EAAAA,KAALC,GAAP,eACMyB,GAAUhN,EAAAA,EAAAA,cAAY,kBAAMoH,EAAgB3S,KAAM,CAACA,EAAK2S,IACxDwY,GAAW5f,EAAAA,EAAAA,cAChB,SAACkY,GACAA,EAAG2H,kBACH7Y,EAAYvS,KAEb,CAACA,EAAKuS,IAGP,OACC,gBAAC,EAAA3G,UAAD,CAAWoM,YAAY,MAAM5E,MAAM,MAAM2R,SAAS,QAChD/S,IAAiBhS,EAAM,gBAAC,GAAD,MAAsB,KAC9C,gBAACgrB,GAAD,CAAcjD,OAAQ/V,IAAiBhS,EAAKmY,QAAS,CAAEC,IAAK,eAC3D,gBAAC,EAAAF,IAAD,CACCrM,OAAO,OACP0M,QAASA,EACTsH,oBAAkB,EAClB9T,cAAc,aACd2c,KAAK,UAEL,gBAAC,EAAA3I,KAAD,CAAMviB,KAAMA,EAAM+d,KAAM2P,IACxB,gBAAC,EAAA5S,QAAD,CAAS/O,MAAM,UACf,gBAAC,EAAAub,QAAD,CAASllB,MAAOmS,EAAO/R,GAAKsS,MAAOwT,UAAU,MAAMf,SAAS,SAC3D,gBAAC,EAAArf,KAAD,CACC6V,KAAK,SACL8P,OAAO,UACPjvB,MAAO4V,IAAiBhS,EAAM,OAAS,YACvCmY,QAAS,CAAE5O,MAAO,SAClB8T,SAAS,YAERtL,EAAO/R,GAAKsS,SAIhB,gBAAC,EAAAgG,QAAD,CAAS/O,MAAM,UACf,gBAAC,EAAAub,QAAD,CAASllB,MAAOkX,EAAE,kBAAmB,aAAcgP,UAAU,OAC5D,gBAAC,EAAAnH,WAAD,CACCoH,UAAU,YACVvoB,KAAK,QACL+a,QAAS4S,EACTnf,MAAO,CAAEmM,QAAS,MAAO/E,MAAO,OAAQvH,OAAQ,a,gBCnEhDyf,GAAiB/N,GAAAA,QAAAA,IAAAA,WAAH,oEAAGA,CAAH,yDACR,SAAC1W,GAAD,OAAYA,EAAM5K,KAAO,QAAU,UAMhC,SAASsvB,GAAT,GAA2B,IAAPvrB,EAAO,EAAPA,IAClC,GAAiCuO,EAAAA,EAAAA,YAAWuD,IAApCC,EAAR,EAAQA,OAAQC,EAAhB,EAAgBA,aAChB,GAAkB5G,EAAAA,EAAAA,WAAS,kBAAMogB,EAAAA,GAAAA,IAAoB,CAAEC,eAAgB,CAAC1Z,EAAO/R,GAAKqS,UAA7ExB,GAAP,eACQ6B,GAAgBnE,EAAAA,EAAAA,YAAW4D,IAA3BO,YACFgZ,EAAahvB,GAAY,SAAC8E,GAAD,OAAOA,EAAE5D,MAAMI,SACxC2tB,GAAgBra,EAAAA,GAAAA,MAChB3T,GAASgE,EAAAA,EAAAA,UACd,kBACC8N,EAAAA,EAAAA,KAAIic,GAAY,SAACxrB,GAAD,OACf,gBAAC,MAAD,CAAOsK,IAAKtK,EAAK3D,GAAI4U,KAAI,WAAMjR,EAAKV,QACnC,gBAAC,GAAD,CAAoBgL,IAAKtK,EAAK3D,GAAI8R,IAAKnO,EAAKvB,KAC3C,gBAACuB,EAAKT,UAAN,CAAgBksB,cAAeA,WAInC,CAACD,EAAYC,IAqBd,OAlBA/gB,EAAAA,EAAAA,YAAU,WACT,IAAMghB,EAAW/a,EAAQgb,QAAO,YAAkB,IAAf1pB,EAAe,EAAfA,SAC9B,UAAGA,EAAS2F,UAAZ,OAAuB3F,EAAShE,QAAhC,OAAyCgE,EAASiP,QAAWW,EAAO/R,GAAKqS,KAC5EK,EAAY1S,EAAD,UAASmC,EAAS2F,UAAlB,OAA6B3F,EAAShE,QAAtC,OAA+CgE,EAASiP,UAGrE,OAAO,WACNwa,OAEC,CAAC7Z,EAAQlB,EAAS7Q,EAAK0S,KAE1B9H,EAAAA,EAAAA,YAAU,WACT,IAAMkhB,EAAIjb,EAAQ1O,SACd,UAAG2pB,EAAEhkB,UAAL,OAAgBgkB,EAAE3tB,QAAlB,OAA2B2tB,EAAE1a,QAAWW,EAAO/R,GAAKqS,KACvDxB,EAAQU,KAAKQ,EAAO/R,GAAKqS,OAExB,CAACrS,EAAK+R,EAAQlB,IAGhB,gBAACya,GAAD,CAAgBrvB,KAAM+V,IAAiBhS,GACtC,gBAAC,MAAD,CAAQ6Q,QAASA,GAAUlT,I,+NClC9B,SAASouB,GAAT,GAAyE,IAArDC,EAAqD,EAArDA,KAAMha,EAA+C,EAA/CA,aAAcW,EAAiC,EAAjCA,gBAAiBV,EAAgB,EAAhBA,UAAW6E,EAAK,EAALA,EAC7Dja,EAAO4E,IACPwqB,GAAkB1L,EAAAA,EAAAA,UACxB,GAAiD2L,EAAAA,EAAAA,gBAAeD,EAAiBha,GAAjF,eAAOka,EAAP,KAAwBC,EAAxB,KAOA,OALAC,EAAAA,EAAAA,kBAAgB,WACfD,MAEE,CAACJ,EAAM/Z,EAAWga,EAAgBjX,UAGpC,gBAAC,EAAAkD,IAAD,CAAKwQ,KAAK,SAAS7c,OAAO,OAAOE,cAAc,aAAa8T,oBAAkB,GAC7E,gBAAC,EAAA3H,IAAD,CACCsK,IAAKyJ,EACLpgB,OAAO,OACPE,cAAc,aACdC,MAAO,CAAEqR,SAAU,UACnBjK,MAAM,oBAEL4Y,IACAvc,EAAAA,EAAAA,KAAIuc,GAAM,SAACM,GAAD,eACT,gBAACrB,GAAD,CACCzgB,IAAK8hB,EAAI9hB,IACTxK,IAAKssB,EAAI9hB,IACThN,KAAI,UAAEX,MAAAA,GAAF,UAAEA,EAAOyvB,EAAI3tB,YAAb,aAAE,EAAiBnB,YAAnB,QAA2B,eAC/B0tB,SAAS,cAIZiB,EAAkB,GAClB,gCACC,gBAAC,EAAAvgB,UAAD,CAAWwH,MAAM,MAAM+E,QAAS,CAAEsJ,WAAY,aAAcwF,SAAU,eACrE,gBAAC,EAAArb,UAAD,CAAWwH,MAAM,MAAMmZ,OAAO,OAAOtU,WAAW,WAEjD,gBAAC,EAAA6M,QAAD,CAASllB,MAAOkX,EAAE,kBAAmB,mBAAoBgP,UAAU,OAClE,gBAAC,EAAAa,SAAD,CACCvT,MAAM,MACNpH,MAAO,CAAEwgB,SAAU,KACnBlwB,OAAOmT,EAAAA,EAAAA,MAAI4T,EAAAA,EAAAA,OAAM2I,GAAOG,IAAkB,SAACG,GAAD,MAAU,CACnD/vB,GAAI+vB,EAAI9hB,IACR5K,MAAO0sB,EAAIha,MACX9U,KAAM8uB,EAAI9uB,KACVoa,MAAO,kBAAMjF,EAAgB2Z,EAAI9hB,MACjC6U,SAAUiN,EAAI9hB,MAAQwH,OAGvB,gBAAC,EAAAqB,OAAD,CACC/V,KAAK,QACLlB,MAAM,YACNwD,MAAK,WAAMusB,GACXhU,QAAS,CAAEC,IAAK,oBAUxB,IAAMkT,GAAiB/N,GAAAA,QAAAA,IAAAA,WAAH,4EAAGA,CAAH,8HASjB,qBAAGtL,YAEJ7W,EAAAA,GAAAA,KADS,8DAKR,qBAAG8W,YAEJ9W,EAAAA,GAAAA,KADS,sBAKLqxB,IAAQlP,EAAAA,GAAAA,SAAO3R,EAAAA,WAAV,8EAAG2R,CAAH,kKAUR,qBAAGtL,YAEJ7W,EAAAA,GAAAA,KADS,8EAOLsxB,IAAcnP,EAAAA,GAAAA,SAAOrF,EAAAA,KAAV,oFAAGqF,CAAH,MACXoP,IAAuBpP,EAAAA,GAAAA,SAAOrF,EAAAA,KAAV,6FAAGqF,CAAH,mBAGpBqP,IAAarP,EAAAA,GAAAA,SAAOoB,EAAAA,YAAV,mFAAGpB,CAAH,MACVsP,IAAUtP,EAAAA,GAAAA,SAAOrF,EAAAA,KAAV,gFAAGqF,CAAH,MAEE,SAASuP,KAAiB,YACxC,GAAYjW,EAAAA,EAAAA,KAALC,GAAP,eACA,GAAoEvI,EAAAA,EAAAA,YAAWuD,IAA/Dib,EAAhB,EAAQhb,OAAqBC,EAA7B,EAA6BA,aAAcC,EAA3C,EAA2CA,UAAWC,EAAtD,EAAsDA,UACtD,GACC3D,EAAAA,EAAAA,YAAW4D,IADJU,EAAR,EAAQA,gBAAiBC,EAAzB,EAAyBA,gBAAiBL,EAA1C,EAA0CA,gBAAiBE,EAA3D,EAA2DA,gBAG3D,GAAuBhR,EAAAA,EAAAA,UACtB,kBACClD,EAAAA,EAAAA,QACCsuB,GACA,SAACruB,EAAKV,EAAOgvB,GACZ,cAAyBtuB,EAAzB,GAAOuuB,EAAP,KAAcC,EAAd,KAGA,OAFAD,EAAM1b,K,uWAAN,EAAa/G,IAAKwiB,GAAYhvB,IAC9BkvB,EAAQ3b,KAAK,gBAACga,GAAD,CAAU/gB,IAAKwiB,EAAShtB,IAAKgtB,KACnCtuB,IAER,CAAC,GAAI,OAEP,CAACquB,IAZF,eAAOf,EAAP,KAAaja,EAAb,KAcA,OAAKia,EAAK9J,OAET,gBAAC,GAAD,CAAgBjQ,UAAWA,EAAWC,UAAWA,GAChD,gBAACua,GAAD,CAAOxU,WAAW,QAAQnM,eAAe,QAAQmG,UAAWA,GAC3D,gBAACya,GAAD,CAAazU,WAAW,SACvB,gBAAC,EAAAK,QAAD,CAASF,IAAI,cACZ,gBAAC,EAAA0M,QAAD,CAASllB,MAAOkX,EAAE,aAAc,cAAegP,UAAU,OACxD,gBAAC8G,GAAD,CAAYpvB,KAAK,uBAAuB+a,QAASzF,MAGnD,gBAACiZ,GAAD,CACCC,KAAMA,EACN/Z,UAAWA,EACXD,aAAcA,EACdW,gBAAiBA,EACjBmE,EAAGA,IAEJ,gBAAC+V,GAAD,CAAS1U,QAAS,CAAEC,IAAK,gBACvB,UAAArG,EAAOC,UAAP,mBAAsB/S,eAAtB,eAA+BkuB,gBAC/B,gBAAC,EAAA7U,QAAD,CAAS/O,MAAM,cACd,gBAAC,EAAAoV,WAAD,CACCnhB,KAAM,uBACN+a,QAAO,UAAExG,EAAOC,UAAT,iBAAE,EAAsB/S,eAAxB,aAAE,EAA+BkuB,iBAS3C,gBAAC,EAAA7U,QAAD,CAAS/O,MAAM,cACd,gBAAC,EAAAub,QAAD,CACCllB,MACCqS,EACG6E,EAAE,eAAgB,gBAClBA,EAAE,gBAAiB,iBAEvBgP,UAAU,OAEV,gBAAC,EAAAnH,WAAD,CACCnhB,KAAMyU,EAAY,kBAAoB,gBACtCsG,QAAS1F,MAIZ,gBAAC,EAAAiS,QAAD,CAASllB,MAAOkX,EAAE,mBAAoB,uBAAwBgP,UAAU,OACvE,gBAAC,EAAAnH,WAAD,CAAYnhB,KAAK,eAAe+a,QAAS9F,OAI5C,gBAAC,EAAAgG,QAAD,CAASzM,MAAO,CAAEH,OAAQ,SAC1B,gBAAC8gB,GAAD,CAAsB9M,oBAAkB,GAAE9N,KApDpB,KCpI1B,IAAMqb,GAAa7P,GAAAA,QAAAA,IAAAA,WAAH,kEAAGA,CAAH,6IACD,qBAAGtB,MAAkB2C,QAAQyO,MAAMvO,WAWlD,SAASwO,KACR,IAAQlS,GAAuB7M,EAAAA,EAAAA,YAAW0M,IAAlCG,mBACFld,EAAWuL,KAMjB,OALAmB,EAAAA,EAAAA,YAAU,WAAM,UACT2iB,EAAe,qBACpBzuB,EAAAA,EAAAA,MAAI,UAACZ,MAAAA,OAAD,EAACA,EAAU2I,aAAX,QAAoB,GAAI,CAAC,OAAQ,8BADjB,aACpB,EAA6DlC,gBADzC,QACqD,OAC1EyW,EAAmBmS,KACjB,CAACnS,EAAoBld,IACjB,KAGD,SAASsvB,KACf,OAA0CpiB,EAAAA,EAAAA,WAAS,GAAnD,eAAOqiB,EAAP,KAAsBC,EAAtB,KACMxN,EAAc1P,KAEpB,OACC,gBAAC4c,GAAD,KACC,gBAACE,GAAD,MAEA,gBAAC,GAAD,CACCpN,YAAaA,EACb0G,gBAAiB6G,EACjB5G,kBAAmB,kBAAM6G,GAAkBD,KAE3C,gBAACnE,GAAD,OAED,gBAAC,EAAApR,IAAD,CAAKpM,eAAe,QAAQE,MAAO,CAAEtM,SAAU,WAAY8sB,SAAU,MACpE,gBAACzB,GAAD,CAAoB7K,YAAaA,EAAa0G,gBAAiB6G,IAC/D,gBAAC5P,GAAD,CAAkBqC,YAAaA,IAC/B,gBAACwJ,GAAD,OAED,gBAAC,EAAAxC,WAAD,CAAYC,KAAK,WAChB,gBAAC2F,GAAD,QAMW,SAASa,KACvB,OACC,gBAAC5P,GAAD,KACC,gBAAC,EAAAhP,aAAD,KACC,gBAAC,EAAAC,gBAAD,KACC,gBAACwe,GAAD,SC3DL,IAAMI,GAAoB,WACzB,IAAM/c,GAAUS,EAAAA,GAAAA,MAEVuc,GAAiBtf,EAAAA,EAAAA,YAAWuf,EAAAA,wBAE5BC,GAAcxf,EAAAA,EAAAA,YAAWyf,EAAAA,qBAQ/B,OAPAvjB,GAAU,CACTJ,UAAW,CACVyG,WAAY,kBAAMD,GAClBgd,eAAAA,EACAE,YAAAA,KAGK,MAWR,SAR+B,kBAC9B,gBAAC,GAAAE,cAAD,CAAeC,SAAUvyB,GACxB,gBAACiyB,GAAD,MACA,gBAAC,GAAD,MACA,gBAACD,GAAD,Q,ykBCrBF,IAAMvU,GAAU,SAAC5a,EAAO8O,GACvB,OAAQA,EAAOhQ,MACd,IAAK,YAeJ,OAdoB,SAChBkB,GADa,IAEhBuT,OAAQ,IAAF,UACJzE,EAAO6gB,QAAQC,SAAW,CAC1B/b,IAAK/E,EAAO6gB,QAAQ9b,IACpBC,MAAOhF,EAAO6gB,QAAQ7b,MACtBrT,QAASqO,EAAO6gB,QAAQlvB,QACxBN,IAAK2O,EAAO6gB,QAAQxvB,MAElBH,EAAMuT,QAEVC,aAAc1E,EAAO6gB,QAAQC,SAC7Blc,WAAW,IAIb,IAAK,eACJ,IAAImc,EAAkB7vB,EAAMwT,aACtBsc,EAAYzY,OAAOC,KAAKtX,EAAMuT,QAC9Bwc,EAAiBjhB,EAAO6gB,SAAW7gB,EAAO6gB,QAAQ3jB,KAAQhM,EAAMwT,aACtE,GAAIxT,EAAMwT,eAAiBuc,EAAe,CACzC,IAAMC,EAAoBF,EAAUlL,QAAQmL,GAC5CF,EAAkBC,EAAUE,EAAoB,EAAIA,EAAoB,EAAI,GAE7E,gBACIhwB,GADJ,IAECuT,QAAQ0c,EAAAA,EAAAA,QAAOjwB,EAAMuT,QAAQ,SAAC/T,EAAOwM,GAAR,OAAgBA,IAAQ+jB,KACrDtc,UAAgC,IAArBqc,EAAUpM,QAAuB1jB,EAAMyT,UAClDD,aAAcqc,IAGhB,IAAK,oBACJ,gBACI7vB,GADJ,IAECuT,OAAQ,GACRE,WAAW,IAGb,IAAK,eACJ,IAAKzT,EAAMuT,OAAOzE,EAAO6gB,QAAQ3jB,KAAM,OAAOhM,EAC9C,IAAMkwB,EAAgB,MAAKlwB,EAAMuT,QAGjC,OAFIzE,EAAO6gB,QAAQ9b,MAAKqc,EAAcphB,EAAO6gB,QAAQ3jB,KAAK6H,IAAM/E,EAAO6gB,QAAQ9b,KAC3E/E,EAAO6gB,QAAQ7b,QAAOoc,EAAcphB,EAAO6gB,QAAQ3jB,KAAK8H,MAAQhF,EAAO6gB,QAAQ7b,OACnF,SACI9T,GADJ,IAECuT,OAAQ2c,IAGV,IAAK,uBACJ,IAAMA,EAAgB,MAAKlwB,EAAMuT,QAGjC,OAFIzE,EAAO6gB,QAAQ9b,MAAKqc,EAAclwB,EAAMwT,cAAcK,IAAM/E,EAAO6gB,QAAQ9b,KAC3E/E,EAAO6gB,QAAQ7b,QAAOoc,EAAclwB,EAAMwT,cAAcM,MAAQhF,EAAO6gB,QAAQ7b,OACnF,SACI9T,GADJ,IAECuT,OAAQ2c,IAGV,IAAK,oBACJ,gBACIlwB,GADJ,IAECwT,aAAc1E,EAAO6gB,QAAQ3jB,MAG/B,IAAK,oBACJ,gBACIhM,GADJ,IAECyT,WAAYzT,EAAMyT,YAGpB,IAAK,mBACJ,gBACIzT,GADJ,IAEC0T,WAAY1T,EAAM0T,YAGpB,QAEC,OADA5N,QAAQqqB,KAAK,4CACNnwB,IAIK,SAASowB,GAAT,GAA4C,IAAZnsB,EAAY,EAAZA,SAC9C,GAAYoU,EAAAA,EAAAA,KAALC,GAAP,eACA,GAA+B+X,EAAAA,EAAAA,YAAWzV,GAAS,CAClDrH,OAAQ,GACRC,aAAc,EACdC,WAAW,EACXC,WAAW,IAJZ,eAAO4c,EAAP,KAAmBC,EAAnB,KAOM3c,GAAW7G,EAAAA,EAAAA,cAChB,SAAC8G,EAAKpT,EAASN,GAAQ,MAChByvB,EAjGDY,OAAOjmB,KAAKC,OAASimB,KAAKC,MAAsB,IAAhBD,KAAKE,UAAmB,IA4G7D,OAVAJ,EAAS,CACRzxB,KAAM,YACN6wB,QAAS,CACR9b,IAAK,IAAF,QAAM1B,EAAAA,EAAAA,MAAK0B,EAAK,MACnBC,MAAK,UAAErT,MAAAA,OAAF,EAAEA,EAASqT,aAAX,QAAoBwE,EAAE,UAAW,WACtC7X,QAAAA,EACAmvB,SAAAA,EACAzvB,IAAAA,KAGKyvB,IAER,CAACtX,IAEIvE,GAAchH,EAAAA,EAAAA,cAAY,SAACf,GAChCukB,EAAS,CAAEzxB,KAAM,eAAgB6wB,QAAS,CAAE3jB,IAAAA,OAC1C,IACGgI,GAAqBjH,EAAAA,EAAAA,cAAY,WACtCwjB,EAAS,CAAEzxB,KAAM,mBACf,IACGmV,GAAkBlH,EAAAA,EAAAA,cAAY,WACnCwjB,EAAS,CAAEzxB,KAAM,wBACf,IACGoV,GAAcnH,EAAAA,EAAAA,cAAY,SAACf,EAAK6H,EAAKC,GAC1Cyc,EAAS,CAAEzxB,KAAM,eAAgB6wB,QAAS,CAAE3jB,IAAAA,EAAK6H,IAAAA,EAAKC,MAAAA,OACpD,IACGM,GAAqBrH,EAAAA,EAAAA,cAAY,SAAC8G,EAAKC,GAC5Cyc,EAAS,CAAEzxB,KAAM,uBAAwB6wB,QAAS,CAAE9b,IAAAA,EAAKC,MAAAA,OACvD,IACGK,GAAkBpH,EAAAA,EAAAA,cAAY,SAACf,GACpCukB,EAAS,CAAEzxB,KAAM,oBAAqB6wB,QAAS,CAAE3jB,IAAAA,OAC/C,IACGqI,GAAkBtH,EAAAA,EAAAA,cAAY,WACnCwjB,EAAS,CAAEzxB,KAAM,wBACf,IACGwV,GAAkBvH,EAAAA,EAAAA,cAAY,WACnCwjB,EAAS,CAAEzxB,KAAM,uBACf,IAEG8xB,GAAeztB,EAAAA,EAAAA,UACpB,iBAAO,CACNyQ,SAAAA,EACAG,YAAAA,EACAC,mBAAAA,EACAC,gBAAAA,EACAC,YAAAA,EACAC,gBAAAA,EACAE,gBAAAA,EACAC,gBAAAA,EACAF,mBAAAA,KAED,CACCR,EACAK,EACAF,EACAC,EACAG,EACAE,EACAC,EACAJ,EACAE,IAIIyc,GAAc1tB,EAAAA,EAAAA,UACnB,iBAAO,CACNyI,0BAA2B,CAC1BgI,SAAU,SAAC/D,GAAD,OAAS,SAAC8C,EAAMlS,GAAY,MACrCmT,EAASjB,EAAMlS,EAAP,UAAgBA,MAAAA,OAAhB,EAAgBA,EAASN,WAAzB,QAAgC0P,MAG1ChE,UAAW,CACVkI,YAAAA,EACAC,mBAAAA,EACAE,YAAAA,EACAC,gBAAAA,EACAC,mBAAAA,EACA0c,qBAAsBxc,MAGxB,CACCV,EACAG,EACAC,EACAG,EACAG,EACAJ,EACAE,IAKF,OAFAnI,GAAU4kB,GAGT,gBAACvd,GAAkBjD,SAAnB,CAA4B7D,MAAO8jB,GAClC,gBAAC3c,GAAmBtD,SAApB,CAA6B7D,MAAOokB,GAAe3sB,IC9KtD,SAhBkG,SAAC,GAAD,IACjGA,EADiG,EACjGA,SACA6L,EAFiG,EAEjGA,YACAE,EAHiG,EAGjGA,aAHiG,OAKjG,gBAACP,GAAoBY,SAArB,CACC7D,MAAO,CACNwD,aAAAA,EACAF,YAAAA,IAGD,gBAACQ,GAAA,EAAD,CAAiBH,KAAML,EAAYihB,gBAClC,gBAACX,GAAD,KAAuBnsB,M,oDCbL+sB,GAAAA,W,oDACc,K,qBAEzB,M,4CAET,WAA4B,MAC3B,OAAOC,KAAK7gB,WAAL,UAAgB9M,WAAhB,QAA8B,CAAE3E,KAAMrD,M,uBAG9C,SAAiB41B,GACZD,KAAKC,SAAWA,IACnBD,KAAKC,OAASA,GACdriB,EAAAA,EAAAA,SAAQoiB,KAAKE,QAAQ,SAACC,GACrBA,EAAQC,eAAeH,S,wBAM1B,SAAkBI,GACjB,GAAIL,KAAKE,OAAOG,EAAkB3yB,MACjC,OAAOsyB,KAAKE,OAAOG,EAAkB3yB,MAEtC,IAAM4yB,EAAUC,GAAAA,GAAAA,iBACVC,EACLH,EAAkB3yB,OAASrD,EACxBo2B,4EACAC,EAAAA,EAAAA,WAAWL,EAAqC5yB,cAAc6K,MAAM,MAAM+L,KAAK,KAyBnF,OAxBAic,EAGEK,IAAIC,GAAAA,GAMJtpB,KAAK,CACLupB,IAAKb,KAAKC,OACVa,YAAa,KACbC,OAAO,EACPC,cAAe,CACdC,aAAa,GAEdC,kBAAmB,SAACL,EAAKM,EAAIpmB,EAAKqmB,GACjCvsB,QAAQqqB,KAAR,wCAA8CnkB,EAA9C,OAEDsmB,QAAS,CACRC,SAAU,GAAF,OAAKd,EAAL,yBAGXR,KAAKE,OAAOG,EAAkB3yB,MAAQ4yB,EAC/BA,M,EApDYP,G,uBCJfwB,IAAgBC,EAAAA,GAAAA,aAAY,CACjC9zB,KAAM,WACN+zB,aAAc,GACdC,SAAU,KAGUC,GAAAA,W,oDACgC,I,8CAEpD,SAAe/iB,GACd,GAAIohB,KAAKE,OAAOthB,EAAIlR,MAAO,OAAOsyB,KAAKE,OAAOthB,MAAAA,OAAZ,EAAYA,EAAKlR,MACnD,IAAMsR,GAAQ4iB,EAAAA,GAAAA,gBAAe,CAC5BC,WAAUC,kBACP,CACAp0B,KAAMkR,EAAIlR,MAGbq0B,WAAYD,iBAET,SAACE,GAAD,OAA0BA,IAAuBC,OAAOC,OAExD,SAACF,GAAD,OAA0BA,KAC7BrY,QAAS,CACRwY,SAAUZ,GAAc5X,WAI1B,OADAqW,KAAKE,OAAOthB,MAAAA,OAAZ,EAAYA,EAAKlR,MAAQsR,EAClBA,M,EArBY2iB,GCKfS,GAAW,kBAChB3T,IAAe,SAAC1c,GAAD,MAAO,CAACA,EAAE2c,MAAO3c,EAAE8c,iBAE7BwT,GAAmB,kBAExB5T,IAAe,SAAC1c,GAAD,MAAO,CAACA,EAAE4c,eAAgB5c,EAAE6c,uBACtC0T,GAAuC,SAAC,GAAc,IAAZnyB,EAAY,EAAZA,MAC/C,GAAYiX,EAAAA,EAAAA,KAALC,GAAP,eACA,EAA6B+a,KAA7B,eAAO1T,EAAP,KAAcG,EAAd,KACA,EAAgCwT,KAAhC,eAAiBE,GAAjB,WAEMC,GAAa1mB,EAAAA,EAAAA,cAAY,WAC9B+S,EAAY,IACZ0T,GAAY,KACV,CAAC1T,EAAa0T,IACjB,OACC,gCACC,gBAAC,EAAApmB,UAAD,CACCoM,YAAY,aACZjM,cAAc,aACdqH,MAAM,OACN6E,WAAW,QACXpM,OAAO,MACPkb,UAAU,OACVC,UAAU,QACVhb,MAAO,CAAEqR,SAAU,UACnBlF,QAAS,CAAEsJ,WAAY,QAASwF,SAAU,WAE1C,gBAAC,EAAArb,UAAD,CAAWwH,MAAM,MAAM4E,YAAY,aAAa0Q,KAAK,OAAO3c,cAAc,cACzE,gBAAC,EAAArG,KAAD,CAAMtJ,MAAM,aAAawD,IAExB6P,EAAAA,EAAAA,KAAI0O,GAAO,SAAC+E,EAAGjN,GAAJ,OACX,gBAAC,EAAAqC,QAAD,CAAS9N,IAAG,UAAKyL,GAAL,OAASiN,EAAEtjB,OAASwY,IAAI,cACnC,gBAAC,EAAA8Z,MAAD,WAAUhP,EAAV,CAAajL,WAAW,iBAI1BkG,MAAAA,OAAA,EAAAA,EAAO+D,QAAS,GAChB,gBAAC,EAAAtW,UAAD,CAAWwH,MAAM,MAAMrH,cAAc,aAAaD,eAAe,cAChE,gBAAC,EAAAuH,OAAD,CACCzT,MAAOkX,EAAE,2BAA4B,gBACrCtZ,KAAK,eACLpB,MAAM,UACNmf,KAAK,QACLje,KAAK,QACLib,QAAS0Z,MAKb,gBAAC,EAAAxZ,QAAD,CAASrc,MAAM,Y,ykBC1DX,ICLM+1B,GAAkB,SAACrb,GAAD,MAAuC,CACrElX,MAAOkX,EAAE,iCAAkC,iBAC3Cva,GAAI,kBAEQ61B,GAAgC,SAACtb,GAAD,MAAuC,CACnFlX,MAAOkX,EAAE,iCAAkC,0BAC3Cva,GAAI,0BAEQ81B,GAAwB,SAACvb,GAAD,MAAuC,CAC3ElX,MAAOkX,EAAE,iDAAkD,0BAC3Dva,GAAI,kBAEQ+1B,GAAwB,SAACxb,GAAD,MAAuC,CAC3ElX,MAAOkX,EAAE,aAAc,UACvBva,GAAI,iBAEQg2B,GAAqB,SAACzb,GAAD,MAAuC,CACxElX,MAAOkX,EAAE,qBAAsB,wBAC/Bva,GAAI,gBAEQi2B,GAAkB,SAAC1b,GAAD,MAAuC,CACrElX,MAAOkX,EAAE,mBAAoB,gBAC7Bva,GAAI,eAEQk2B,GAAoB,SAAC3b,GAAD,MAAuC,CACvElX,MAAOkX,EAAE,2BAA4B,WACrCva,GAAI,YAGQm2B,GAAsB,SAAC5b,GAAD,MAA6C,CAC/Eqb,GAAgBrb,GAChBsb,GAA8Btb,GAC9Bub,GAAsBvb,GACtBwb,GAAsBxb,GACtByb,GAAmBzb,GACnB0b,GAAgB1b,GAChB2b,GAAkB3b,KCdnB,SAlBmB,WAClB,OAAYD,EAAAA,EAAAA,KAALC,GAAP,eACMyB,GAAUhN,EAAAA,EAAAA,cAAY,WAC3B6d,OACE,IACGuJ,GAAehxB,EAAAA,EAAAA,UAAQ,kBAAM8wB,GAAkB3b,KAAI,CAACA,IAC1D,OACC,gBAAC,EAAA8b,eAAD,CACChzB,MAAO+yB,EAAa/yB,MACpB4f,SAAS,yBACTpM,MAAM,MACN7W,GAAIo2B,EAAap2B,IAEjB,gBAAC,EAAA8W,OAAD,CAAQzT,MAAOkX,EAAE,kCAAmC,UAAWyB,QAASA,MCyD3E,GAhEK,SAAC,GAAyB,QAAvBra,EAAuB,EAAvBA,SAAU20B,EAAa,EAAbA,OAEjB,IAD+BtkB,EAAAA,EAAAA,YAAW0M,IAAlCG,oBACoBhQ,EAAAA,EAAAA,UAAQ,qBAClCtM,EAAAA,EAAAA,MAAKZ,EAAS2I,MAAO,CAAC,OAAQ,8BADI,aAClC,EAAsDlC,gBADpB,QAElC,SAFF,eAAOmuB,EAAP,KAAeC,EAAf,KAIA,GAAYlc,EAAAA,EAAAA,KAALC,GAAP,eACMxa,GAAQqF,EAAAA,EAAAA,UACb,iBAAM,CACL,CACC/B,MAAOkX,EAAE,8BAA+B,QACxC9L,MAAO,QAER,CACCpL,MAAOkX,EAAE,iCAAkC,WAC3C9L,MAAO,WAER,CACCpL,MAAOkX,EAAE,kCAAmC,YAC5C9L,MAAO,eAGT,CAAC8L,IAEIkc,GAAmBrxB,EAAAA,EAAAA,UACxB,mCAAM7C,EAAAA,EAAAA,MAAKxC,EAAO,CAAC,QAASw2B,WAA5B,QAAwCx2B,EAAM,KAC9C,CAACw2B,EAAQx2B,IAEJsnB,GAAoBrY,EAAAA,EAAAA,cACzB,SAACyX,GACIA,IAAM8P,IACTC,GAAU,SAACE,GAAD,OAAUjQ,IAAMiQ,EAAMjQ,EAAIiQ,KAEpCJ,EAAO,QAAS,qBAAsB,CAAEl0B,IAAK7E,EAAckR,MAAOgY,OAGpE,CAAC6P,EAAQC,IAUJI,GAAavxB,EAAAA,EAAAA,UAAQ,kBAAMwwB,GAAgBrb,KAAI,CAACA,IACtD,OACC,gBAAC,EAAA8b,eAAD,CACChzB,MAAOszB,EAAWtzB,MAClB4f,SAAS,yBACTpM,MAAM,MACN7W,GAAI22B,EAAW32B,IAEf,gBAAC,EAAAyoB,OAAD,CACC1oB,MAAOA,EACPslB,UAAWoR,EACXpzB,MAAOkX,EAAE,6BAA8B,aACvCoO,SAAUtB,MCSd,GA3DkC,WACjC,IAAM/mB,EAAO6E,IACb,GAAYmV,EAAAA,EAAAA,KAALC,GAAP,eACMmF,GAAQ1N,EAAAA,EAAAA,YAAWgR,EAAAA,cAOnB4T,GAAexxB,EAAAA,EAAAA,UACpB,kBAAM9E,EAAKL,QAAO,SAACmC,GAAD,OAASA,EAAIxB,OAASlD,GAAiB0E,EAAIxB,OAASpD,OACtE,CAAC8C,IAEI81B,GAAehxB,EAAAA,EAAAA,UAAQ,kBAAM4wB,GAAmBzb,KAAI,CAACA,IAC3D,OACC,gCACC,gBAAC,EAAA8b,eAAD,CACChzB,MAAO+yB,EAAa/yB,MACpB4f,SAAS,yBACTpM,MAAM,MACN7W,GAAIo2B,EAAap2B,KAEhBkT,EAAAA,EAAAA,KAAI0jB,GAAc,SAACx0B,GAAD,OAClB,gBAAC,EAAAiN,UAAD,CAAWpB,IAAK7L,EAAIxB,KAAMgb,QAAS,CAAEsJ,WAAY,QAASwF,SAAU,UACnE,gBAAC,EAAArb,UAAD,CAAWoM,YAAY,aAAajM,cAAc,iBACjD,gBAAC,EAAArG,KAAD,KACE/G,EAAIlB,QADN,KACiBkB,EAAIxB,KADrB,KAGA,gBAAC,EAAA2nB,QAAD,CAASgB,UAAU,MAAMlmB,MAAM,iBAC9B,gBAAC,EAAA8F,KAAD,CAAMsG,MAAO,CAAE4T,OAAQ,WAAarH,QAAS,SAAC7P,GAAD,OAzBvB,SAACA,GAC7BA,EAAE0qB,iBACFC,UAAUC,UAAUC,UAAU7qB,EAAEc,OAAO6Y,WAuB6BmR,CAAgB9qB,KAA9E,YACW/J,EAAItB,WAIjB,gBAAC,EAAAuO,UAAD,CACCoM,YAAY,aACZjM,cAAc,gBACdoM,QAAS,CAAEuS,IAAK,aAAc+I,OAAQ,WAEtC,gBAAC,EAAA/tB,KAAD,CAAMtJ,MAAM,aAAauC,EAAI1B,aAC7B,gBAAC,EAAAy2B,MAAD,CACC1oB,MAAM,SACNgB,MAAO,CAENga,gBAAiB/J,EAAM2C,QAAQ+U,QAAQ7U,QAEvC1iB,MAAO6f,EAAM2C,QAAQyO,MAAMvO,YAI9B,gBAAC,EAAArG,QAAD,CAASrc,MAAM,iB,2BCzDrB,SAXuC,SAAC,GAAD,IAAGkW,EAAH,EAAGA,MAAH,OACtC,gCACC,gBAAC,EAAA4F,IAAD,CAAKC,QAAS,CAAEC,IAAK,SAAWrM,cAAc,WAAWD,eAAe,WAAWsH,MAAM,QACxF,gBAAC,EAAA1N,KAAD,CAAM6V,KAAK,QAAQ8P,OAAO,QACxB/Y,IAGH,gBAAC,EAAAgG,QAAD,CAASsb,SAAS,Y,yBCk0BpB,UAz0BerW,EAAAA,GAAAA,SAAO3R,EAAAA,WAAV,+EAAG2R,CAAH,2keA0DkE,GAK5C,IAsGZ,qBAAGtB,MAAkB2C,QAAQK,MAAMH,WACtC,qBAAG7C,MAAkB2C,QAAQgK,MAAM9J,WAMhC,qBAAG7C,MAAkB2C,QAAQK,MAAMK,SACtC,qBAAGrD,MAAkB2C,QAAQC,QAAQC,WAsC7C,qBAAG+U,OAAuB,OAAS,SAmGoB,GAwI/D,yBAqMqB,GAW6C,GAiB9C,IAoKb,qBAAG5X,MAAkB2C,QAAQkV,KAAKhV,WAC5B,qBAAG7C,MAAkBD,MAAN,WACjB,qBAAGC,MAAkBT,MAAMC,KAAKG,UAC9B,qBAAGK,MAAkBD,MAAMqP,OAAOvM,W,ykBCn0B3C,IAWMiV,GAAuB,SAACjd,GAAD,MAAuB,CAC1D,CACClX,MAAOkX,EACN,mEACA,oCAED9L,MAAO,mBAER,CACCpL,MAAOkX,EACN,sEACA,+DAED9L,MAAO,uBAER,CACCpL,MAAOkX,EACN,0EACA,+EAED9L,MAAO,mBAER,CACCpL,MAAOkX,EACN,kEACA,uDAED9L,MAAO,uBAIIgpB,GAAyB,SAACld,GAAD,MAAuB,CAC5D,CACClX,MAAOkX,EAAE,sBAAuB,iBAChC9L,MAAO,eAER,CACCpL,MAAOkX,EAAE,qCAAsC,QAC/C9L,MAAO,UAIIipB,GAA8B,SAC1C/1B,EACAg2B,EACApd,GAEA,IAAIra,EACE03B,EAAuBJ,GAAqBjd,GAmBlD,OAdCra,EAH8D,UAA9DyB,EAAS4E,MAAMsxB,4CAC8C,UAA7Dl2B,EAAS4E,MAAMuxB,0CAER,MAAKF,EAAqB,IAEgB,QAAjDj2B,EAAS4E,MAAMwxB,+BAC8C,SAA7Dp2B,EAAS4E,MAAMuxB,0CAER,MAAKF,EAAqB,IAEgB,eAAjDj2B,EAAS4E,MAAMwxB,+BAC8C,SAA7Dp2B,EAAS4E,MAAMuxB,0CAER,MAAKF,EAAqB,IAE1B,MAAKA,EAAqB,IAE3BnF,OAAOvyB,EAAKy3B,KAGPK,GAAgC,SAC5Cr2B,EACAg2B,EACApd,GAEA,IAAIra,EACE+3B,EAAyBR,GAAuBld,GAOtD,OALCra,EAD0D,SAAvDyB,EAAS4E,MAAM2xB,oCACX,MAAKD,EAAuB,IAE5B,MAAKA,EAAuB,IAG7BxF,OAAOvyB,EAAKy3B,KAGPQ,GAAkB,SAACC,GAAD,OAC9BC,IAAAA,CAAOA,IAAAA,CAAOD,EAAM,qBAAqBE,OAAOlpB,OAAO,sBAE3CmpB,GAAe,SAACH,GAAD,OAC3B,IAAI5rB,KAAK6rB,KAAAA,IAAWD,EAAM,qBAAqBI,QAAQC,YAE3CC,GAAc,SAACN,GAAD,OAC1BC,KAAAA,IAAWD,EAAM,qBAAqBI,QAAQG,QAAQ,OAAOL,MAAMlpB,OAAO,sBAE9DwpB,GAAY,SAACR,GAAD,OACxBC,KAAAA,IAAWD,EAAM,qBAAqBI,QAAQK,MAAM,OAAOP,MAAMlpB,OAAO,sBChGzE0pB,IAAAA,GAqRA,SA/QK,SAAC,GAAwC,IAAtCn3B,EAAsC,EAAtCA,SAAU20B,EAA4B,EAA5BA,OAAQyC,EAAoB,EAApBA,cACjBxe,GAAMD,EAAAA,EAAAA,KAANC,EACR,GAAwC1L,EAAAA,EAAAA,WAAkB,GAA1D,eAAOmqB,EAAP,KAAqBC,EAArB,KACA,GAA8DpqB,EAAAA,EAAAA,aAE5DlN,EAAS4E,MAAM2yB,gCAAiCv3B,EAAS4E,MAAM4yB,iCAFjE,eAAOC,EAAP,KAAgCC,EAAhC,KAMA,GAA8ExqB,EAAAA,EAAAA,UAC7ElN,EAAS4E,MAAM2yB,+BADhB,eAAOI,EAAP,KAA0CC,EAA1C,KAIA,GAAgF1qB,EAAAA,EAAAA,UAC/ElN,EAAS4E,MAAM4yB,gCADhB,eAAOK,EAAP,KAA2CC,EAA3C,KAGA,GAA4B5qB,EAAAA,EAAAA,WAAkB,GAA9C,eAAOyoB,EAAP,KAAeoC,EAAf,KACA,GAA4C7qB,EAAAA,EAAAA,WAAkB,GAA9D,eAAO8qB,EAAP,KAAuBC,EAAvB,KACA,GAAwC/qB,EAAAA,EAAAA,WAAkB,GAA1D,eAAOgrB,EAAP,KAAqBC,EAArB,KACMC,GAAc/qB,EAAAA,EAAAA,cACnB,SAACyX,EAAGvN,GACHod,EAAO,QAASpd,EAAGuN,KAEpB,CAAC6P,IA+CF,OA5CAjoB,EAAAA,EAAAA,YAAU,WACL0qB,GACCK,GACHU,GAAgB,GAChBF,GAAkB,GAClBX,GAAgB,KAEhBW,GAAkB,GAClBE,GAAgB,GAChBb,GAAgB,IAEb3B,IACHiC,EAAiCb,GAAYY,IAC7CS,EACCrB,GAAYY,GACZ,iCAEDG,EAAkCb,GAAUY,IAC5CO,EACCnB,GAAUY,GACV,kCAGDM,GAAgB,MAGjBb,GAAgB,GAChBa,GAAgB,GAChBJ,GAAU,GACVE,GAAkB,MAEjB,CACFj4B,EAAS4E,MAAM2yB,8BACfa,EACAT,EACAE,EACAlC,EACAyB,EACAK,IAOA,gCACC,gBAAC,GAAD,CAASrjB,MAAOwE,EAAE,8CAA+C,iBACjE,gBAAC,EAAAyf,SAAD,CACC32B,MAAOkX,EACN,uDACA,kDAED9L,MAAO2qB,EACPpd,QAbmC,WACrCqd,GAA4BD,IAa1Bnd,UAAW8c,IAEZ,gBAAC,GAAD,CAAQtd,YAAY,aAAa6b,QAAM,EAAChoB,OAAO,MAAME,cAAc,iBAClE,gBAAC,EAAAH,UAAD,CACCE,eAAe,aACfE,MAAO,CAAE+Y,SAAU,OACnB5M,QAAS,CAAEC,IAAK,UAEhB,gBAAC,EAAAE,QAAD,CAASmb,OAAO,cACf,gBAAC,EAAA/tB,KAAD,CAAM6V,KAAK,SAASzE,EAAE,2CAA4C,gBAEnE,gBAAC,KAAD,CACC0B,SAAU+c,EACVvqB,MACC6qB,EACGf,GAAae,GACb,IAAI9sB,KAERytB,MAAM,EACNtR,SAAU,SAACla,GACV8qB,EAAiCpB,GAAgB1pB,IACjDsrB,EAAY5B,GAAgB1pB,GAAQ,iCAEnC4pB,IAAAA,CAAO5pB,GAAOyrB,KAAK3B,GAAaiB,GAAqC,YAAc,IAEnFC,EACCtB,GAAgB,IAAI3rB,KAAK6rB,IAAAA,CAAO5pB,GAAOV,IAAI,EAAG,KAAK0qB,aAEpDsB,EACC5B,GAAgB,IAAI3rB,KAAK6rB,IAAAA,CAAO5pB,GAAOV,IAAI,EAAG,KAAK0qB,YACnD,oCAIH0B,SACC,gBAAC,EAAApe,QAAD,CAASF,IAAI,SACZ,gBAAC,EAAA2H,KAAD,CAAMviB,KAAK,qBAGbm5B,SACC,gBAAC,EAAAre,QAAD,CAASF,IAAI,SACZ,gBAAC,EAAA2H,KAAD,CAAMviB,KAAK,qBAKf,gBAAC,EAAAoO,UAAD,CACCE,eAAe,aACfE,MAAO,CAAE+Y,SAAU,OACnB5M,QAAS,CAAEC,IAAK,UAEhB,gBAAC,EAAAE,QAAD,CAASmb,OAAO,cACf,gBAAC,EAAA/tB,KAAD,CAAM6V,KAAK,SAASzE,EAAE,yCAA0C,cAEjE,gBAAC,KAAD,CACC0B,SAAU+c,EACVqB,WAAY,CAAEC,UAAU,GACxB7rB,MACC+qB,EACGjB,GAAaiB,GACb,IAAIhtB,KAERytB,MAAM,EACNtR,SAAU,SAACla,GACVgrB,EAAkCtB,GAAgB1pB,IAClDsrB,EAAY5B,GAAgB1pB,GAAQ,kCAEnC4pB,IAAAA,CAAO5pB,GAAOyrB,KAAK3B,GAAae,GAAoC,YAAc,IAElFC,EACCpB,GAAgB,IAAI3rB,KAAK6rB,IAAAA,CAAO5pB,GAAO8rB,SAAS,EAAG,KAAK9B,aAEzDsB,EACC5B,GAAgB,IAAI3rB,KAAK6rB,IAAAA,CAAO5pB,GAAO8rB,SAAS,EAAG,KAAK9B,YACxD,mCAIH0B,SACC,gBAAC,EAAApe,QAAD,CAASF,IAAI,SACZ,gBAAC,EAAA2H,KAAD,CAAMviB,KAAK,qBAGbm5B,SACC,gBAAC,EAAAre,QAAD,CAASF,IAAI,SACZ,gBAAC,EAAA2H,KAAD,CAAMviB,KAAK,sBAOhB,gBAAC,EAAAoO,UAAD,CAAWE,eAAe,cACzB,gBAAC,EAAAyqB,SAAD,CACC/d,SAAU0d,EACVt2B,MAAOkX,EAAE,wCAAyC,YAClD9L,MAAO6oB,EACPtb,QAAS,WACR0d,GAAWpC,OAId,gBAAC,GAAD,CAAQ7b,YAAY,aAAa6b,QAAM,EAAChoB,OAAO,MAAME,cAAc,iBAClE,gBAAC,EAAAH,UAAD,CACCE,eAAe,aACfE,MAAO,CAAE+Y,SAAU,OACnB5M,QAAS,CAAEC,IAAK,UAEhB,gBAAC,EAAAE,QAAD,CAASmb,OAAO,cACf,gBAAC,EAAA/tB,KAAD,CAAM6V,KAAK,SAASzE,EAAE,2CAA4C,iBAEnE,gBAAC,KAAD,CACC0B,SAAU4d,EACVzB,MAAM,EACN3pB,MACC6qB,EACGf,GAAae,GACb,IAAI9sB,KAERytB,MAAI,EACJtR,SAAU,SAACla,GACV8qB,EAAiCpB,GAAgB1pB,IACjDsrB,EAAY5B,GAAgB1pB,GAAQ,iCAEnC4pB,IAAAA,CAAO5pB,GAAOyrB,KAAK3B,GAAaiB,GAAqC,YAAc,IAEnFC,EACCtB,GAAgB,IAAI3rB,KAAK6rB,IAAAA,CAAO5pB,GAAOV,IAAI,EAAG,KAAK0qB,aAEpDsB,EACC5B,GAAgB,IAAI3rB,KAAK6rB,IAAAA,CAAO5pB,GAAOV,IAAI,EAAG,KAAK0qB,YACnD,oCAIH0B,SACC,gBAAC,EAAApe,QAAD,CAASF,IAAI,SACZ,gBAAC,EAAA2H,KAAD,CAAMviB,KAAK,qBAGbm5B,SACC,gBAAC,EAAAre,QAAD,CAASF,IAAI,SACZ,gBAAC,EAAA2H,KAAD,CAAMviB,KAAK,qBAKf,gBAAC,EAAAoO,UAAD,CACCE,eAAe,aACfE,MAAO,CAAE+Y,SAAU,OACnB5M,QAAS,CAAEC,IAAK,UAEhB,gBAAC,EAAAE,QAAD,CAASmb,OAAO,cACf,gBAAC,EAAA/tB,KAAD,CAAM6V,KAAK,SAASzE,EAAE,yCAA0C,eAEjE,gBAAC,KAAD,CACC0B,SAAU4d,EACVzB,MAAM,EACN3pB,MACC+qB,EACGjB,GAAaiB,GACb,IAAIhtB,KAERytB,MAAI,EACJtR,SAAU,SAACla,GACVgrB,EAAkCtB,GAAgB1pB,IAClDsrB,EAAY5B,GAAgB1pB,GAAQ,kCAEnC4pB,IAAAA,CAAO5pB,GAAOyrB,KAAK3B,GAAae,GAAoC,YAAc,IAElFC,EACCpB,GAAgB,IAAI3rB,KAAK6rB,IAAAA,CAAO5pB,GAAO8rB,SAAS,EAAG,KAAK9B,aAEzDsB,EACC5B,GAAgB,IAAI3rB,KAAK6rB,IAAAA,CAAO5pB,GAAO8rB,SAAS,EAAG,KAAK9B,YACxD,mCAIH2B,SACC,gBAAC,EAAAre,QAAD,CAASF,IAAI,SACZ,gBAAC,EAAA2H,KAAD,CAAMviB,KAAK,wBC/PnB63B,IAAAA,GAkMA,SA7LK,SAAC,GAAyB,IAAvBn3B,EAAuB,EAAvBA,SAAU20B,EAAa,EAAbA,OACT/b,GAAMD,EAAAA,EAAAA,KAANC,EACR,GAA0C1L,EAAAA,EAAAA,UACY,SAArDlN,EAAS4E,MAAMi0B,mCADhB,eAAOzB,EAAP,KAAsB0B,EAAtB,KAGA,GAA8E5rB,EAAAA,EAAAA,UAC7ElN,EAAS4E,MAAMm0B,4BADhB,eAAOC,EAAP,KAAwCC,EAAxC,KAIA,GACC/rB,EAAAA,EAAAA,UAAiBlN,EAAS4E,MAAMs0B,oCADjC,eAAOC,EAAP,KAAgDC,EAAhD,KAGA,GAAkElsB,EAAAA,EAAAA,WAAkB,GAApF,eAAOmsB,EAAP,KAAkCC,EAAlC,KACA,GAAoDpsB,EAAAA,EAAAA,UACU,SAA7DlN,EAAS4E,MAAMuxB,2CADhB,eAAOoD,EAAP,KAA2BC,EAA3B,KAIA,GAAkDtsB,EAAAA,EAAAA,WAAkB,GAApE,eAAOusB,EAAP,KAA0BC,EAA1B,KAEMtB,GAAc/qB,EAAAA,EAAAA,cACnB,SAACyX,EAAGvN,GACHod,EAAO,QAASpd,EAAGuN,KAEpB,CAAC6P,KAGFjoB,EAAAA,EAAAA,YAAU,WAER4sB,GADGlC,KAKF,CACFA,EACAp3B,EAAS4E,MAAM2yB,8BACfa,EACAsB,EACAJ,IAGD,IA4BMK,GAAuBl2B,EAAAA,EAAAA,UAAQ,kBFhGF,SAACmV,GAAD,MAAuB,CAC1D,CACClX,MAAOkX,EAAE,2CAA4C,qBACrD9L,MAAO,QAER,CACCpL,MAAOkX,EAAE,kDAAmD,4BAC5D9L,MAAO,UEyFmC8sB,CAAqBhhB,KAAI,CAACA,IAC/Dqd,GAAuBxyB,EAAAA,EAAAA,UAAQ,kBAAMoyB,GAAqBjd,KAAI,CAACA,IAC/D0d,GAAyB7yB,EAAAA,EAAAA,UAAQ,kBAAMqyB,GAAuBld,KAAI,CAACA,IACnE6b,GAAehxB,EAAAA,EAAAA,UAAQ,kBAAM0wB,GAAsBvb,KAAI,CAACA,IAC9D,OACC,gBAAC,EAAA8b,eAAD,CACChzB,MAAO+yB,EAAa/yB,MACpB4f,SAAS,yBACTpM,MAAM,MACN7W,GAAIo2B,EAAap2B,IAEjB,gBAAC,EAAAqP,UAAD,CAAWE,eAAe,WAAWqM,QAAS,CAAEC,IAAK,UACpD,gBAAC,EAAA4M,OAAD,CACC1oB,MAAOu7B,EACP5f,WAAW,QACXrY,MAAOkX,EAAE,sBAAuB,iBAChCoO,SAAU,SAACla,GACVsrB,EAAYtrB,EAAO,qCACnBgsB,GAAkB1B,IAEnBtC,iBACsD,SAArD90B,EAAS4E,MAAMi0B,kCACZc,EAAqB,GACrBA,EAAqB,KAG1B,gBAAC,EAAAvf,QAAD,CAASoS,IAAI,QAAQtX,MAAM,QAC1B,gBAAC,EAAA2kB,MAAD,CACC7S,SAAU,SAACxc,GACVyuB,EAAmCzuB,EAAEc,OAAOwB,OAC5CsrB,EAAY5tB,EAAEc,OAAOwB,MAAO,+BAE7BgtB,aAAa,KACbp4B,MAAOkX,EAAE,mDAAoD,uBAC7DkP,gBAAgB,QAChBhb,MAAOksB,GAAmC,GAC1C1e,UAAW8c,KAGb,gBAAC,EAAAhd,QAAD,CAASoS,IAAI,QAAQtX,MAAM,QAC1B,gBAAC,EAAA4R,OAAD,CACCxM,UAAW8c,EACXh5B,MAAO63B,EACPlc,WAAW,QACXrY,MAAOkX,EAAE,iDAAkD,oBAC3DoO,SAAU,SAACla,GAzEe,IAACgY,EAAAA,EA0EHhY,EAzE5B0sB,GAAsB,GAEZ,oBAAN1U,GACHsT,EAAY,QAAS,8CACrBA,EAAY,QAAS,6CACrBA,EAAY,OAAQ,kCACJ,oBAANtT,GACVsT,EAAY,aAAc,iCAC1BA,EAAY,OAAQ,6CACpBA,EAAY,QAAS,8CACrBoB,GAAsB,IACN,wBAAN1U,GACVsT,EAAY,MAAO,iCACnBA,EAAY,QAAS,6CACrBA,EAAY,OAAQ,8CACpBoB,GAAsB,KAEtBpB,EAAY,OAAQ,8CACpBA,EAAY,OAAQ,iCACpBA,EAAY,QAAS,+CAwDlBtD,iBAAkB,CAGjBpzB,MAAOq0B,GAA4B/1B,EAAU,QAAS4Y,GAGtD9L,MAAOipB,GAA4B/1B,EAAU,QAAS4Y,OAIxD2gB,GACA,gBAAC,EAAAnf,QAAD,CAASoS,IAAI,QAAQtX,MAAM,QAC1B,gBAAC,EAAA2kB,MAAD,CACC7S,SAAU,SAACxc,GACV4uB,EAA2C5uB,EAAEc,OAAOwB,OACpDsrB,EAAY5tB,EAAEc,OAAOwB,MAAO,uCAE7BgtB,aAAa,KACbp4B,MAAOkX,EACN,4DACA,4CAEDkP,gBAAgB,QAChBhb,MAAOqsB,GAA2C,GAClD7e,UAAW8c,MAKf,gBAAC,EAAA1pB,UAAD,CAAWE,eAAe,WAAWqM,QAAS,CAAEC,IAAK,UACpD,gBAAC,GAAD,CAAgBla,SAAUA,EAAU20B,OAAQA,EAAQyC,cAAeA,IACnE,gBAAC,EAAA1pB,UAAD,CAAWE,eAAe,cACzB,gBAAC,GAAD,CACCwG,MAAOwE,EAAE,qDAAsD,0BAEhE,gBAAC,EAAAyf,SAAD,CACC/d,SAAU+e,EACV33B,MAAOkX,EAAE,mDAAoD,uBAC7D9L,MAAO2sB,EACPpf,QAAS,SAACvN,GACT4sB,GAAsBD,OAIzB,gBAAC,EAAA/rB,UAAD,CAAWE,eAAe,WAAWqM,QAAS,CAAEC,IAAK,UACpD,gBAAC,EAAAE,QAAD,CAASoS,IAAI,QAAQtX,MAAM,OAC1B,gBAAC,EAAA4R,OAAD,CACCxM,SAAU+e,EACVj7B,MAAOk4B,EACPvc,WAAW,QACXrY,MAAOkX,EACN,qDACA,yBAEDoO,SAAU,SAACla,GAzGhBsrB,EA0GiCtrB,EA1GlB,wCA4GVgoB,iBAAkB,CAGjBpzB,MAAO20B,GAA8Br2B,EAAU,QAAS4Y,GAGxD9L,MAAOupB,GAA8Br2B,EAAU,QAAS4Y,WCtIhE,GApEsC,SAAC,GAAmB,MAAjBmhB,EAAiB,EAAjBA,WACxC,GAAYphB,EAAAA,EAAAA,KAALC,GAAP,eAEM5Y,EAAWuL,KACXyuB,EAAOzxB,IAAgB,SAACjF,GAAD,OAAOA,EAAEoE,aAChCuyB,GAAQx2B,EAAAA,EAAAA,UAAQ,WAAM,MACrBy2B,EAAYl1B,OAAOhF,MAAAA,GAAD,UAACA,EAAU0I,aAAX,aAAC,EAAiByxB,iBAC1C,OAAIH,GAAQE,GAAaA,EAAY,EAC7BnJ,KAAKqJ,MAAOJ,EAAOE,EAAa,MAEhC,IACN,CAACl6B,MAAAA,GAAD,UAACA,EAAU0I,aAAX,aAAC,EAAiByxB,gBAAiBH,IAEhCj7B,GAAc0E,EAAAA,EAAAA,UAAQ,WAC3B,QAAQ,GACP,KAAMw2B,GAASA,EAAQ,EACtB,OAAOrhB,EAAE,uBAAwB,sCAClC,KAAe,MAAVqhB,EACJ,OAAOrhB,EAAE,wBAAyB,6CACnC,QACC,OAAOA,EAAE,qBAAsB,CAC9ByhB,aAAc,oDACdJ,MAAAA,OAGD,CAACA,EAAOrhB,IAEL0hB,GAAiB72B,EAAAA,EAAAA,UAAQ,WAC9B,QAAQ,GACP,KAAKw2B,GAAS,GACb,MAAO,QACR,KAAKA,GAAS,GACb,MAAO,UACR,KAAgB,IAAXA,EACJ,MAAO,QACR,QACC,MAAO,aAEP,CAACA,IACExF,GAAehxB,EAAAA,EAAAA,UAAQ,kBAAM6wB,GAAgB1b,KAAI,CAACA,IACxD,OAAOmhB,EACN,gBAAC,EAAArsB,UAAD,CAAWwH,MAAM,MAAM+E,QAAS,CAAE5O,MAAO,WACxC,gBAAC,EAAAub,QAAD,CAASllB,MAAO3C,EAAa6oB,UAAU,UACtC,gBAAC,EAAA2S,MAAD,CAAOC,KAAMP,EAAQ,EAAIA,EAAQ,EAAGK,eAAgBA,MAItD,gBAAC,EAAA5F,eAAD,CACChzB,MAAO+yB,EAAa/yB,MACpB4f,SAAS,yBACTpM,MAAM,MACN7W,GAAIo2B,EAAap2B,IAEjB,gBAAC,EAAAqP,UAAD,CAAWwH,MAAM,OAAO+E,QAAS,CAAE8O,SAAU,WAC5C,gBAAC,EAAArb,UAAD,CACCoM,YAAY,aACZjM,cAAc,aACd8T,oBAAkB,EAClB1H,QAAS,CAAEsb,OAAQ,WAEnB,gBAAC,EAAA/tB,KAAD,CAAMsS,YAAY,QAAQ/a,IAE3B,gBAAC,EAAAw7B,MAAD,CAAOC,MAAiB,IAAXP,EAAe,IAAMA,EAAOK,eAAgBA,OCvD7DnD,IAAAA,GA8FA,SAvFK,SAAC,GAAwC,IAAtCn3B,EAAsC,EAAtCA,SAAU20B,EAA4B,EAA5BA,OAAQ3b,EAAoB,EAApBA,KAAMgP,EAAc,EAAdA,QACvBpP,GAAMD,EAAAA,EAAAA,KAANC,EACF6hB,GAAUh3B,EAAAA,EAAAA,UAAQ,kBJwFC,SACzBmV,GADyB,MAEiE,CAC1F,CACCva,GAAI,QACJY,KAAM,UACNy7B,UAAW9hB,EAAE,uBAAwB,mBACrClX,MAAOkX,EAAE,uBAAwB,CAChC9L,MAAO,UACPutB,aAAc,gCAEfvtB,MAAO,SAER,CACCzO,GAAI,KACJY,KAAM,aACNy7B,UAAW9hB,EAAE,eAAgB,SAC7BlX,MAAOkX,EAAE,qBAAsB,CAAE9L,MAAO,aAAcutB,aAAc,sBACpEvtB,MAAO,MAER,CACCzO,GAAI,KACJY,KAAM,UACNy7B,UAAW9hB,EAAE,iBAAkB,WAC/BlX,MAAOkX,EAAE,uBAAwB,CAAE9L,MAAO,UAAWutB,aAAc,wBACnEvtB,MAAO,MAER,CACCzO,GAAI,KACJY,KAAM,UACNy7B,UAAW9hB,EAAE,gBAAiB,UAC9BlX,MAAOkX,EAAE,sBAAuB,CAAE9L,MAAO,UAAWutB,aAAc,uBAClEvtB,MAAO,MAER,CACCzO,GAAI,KACJY,KAAM,QACNy7B,UAAW9hB,EAAE,eAAgB,SAC7BlX,MAAOkX,EAAE,qBAAsB,CAAE9L,MAAO,QAASutB,aAAc,sBAC/DvtB,MAAO,MAER,CACCzO,GAAI,KACJY,KAAM,WACNy7B,UAAW9hB,EAAE,iBAAkB,WAC/BlX,MAAOkX,EAAE,uBAAwB,CAAE9L,MAAO,WAAYutB,aAAc,wBACpEvtB,MAAO,MAER,CACCzO,GAAI,KACJY,KAAM,MACNy7B,UAAW9hB,EAAE,kBAAmB,YAChClX,MAAOkX,EAAE,wBAAyB,CAAE9L,MAAO,MAAOutB,aAAc,yBAChEvtB,MAAO,MAGR,CACCzO,GAAI,KACJY,KAAM,YACNy7B,UAAW9hB,EAAE,oBAAqB,cAClClX,MAAOkX,EAAE,0BAA2B,CACnC9L,MAAO,YACPutB,aAAc,2BAEfvtB,MAAO,MAER,CACCzO,GAAI,QACJY,KAAM,qBACNy7B,UAAW9hB,EAAE,2BAA4B,uBACzClX,MAAOkX,EAAE,iCAAkC,CAC1C9L,MAAO,qBACPutB,aAAc,2BAEfvtB,MAAO,SAGR,CACCzO,GAAI,KACJY,KAAM,SACNy7B,UAAW9hB,EAAE,kBAAmB,YAChClX,MAAOkX,EAAE,wBAAyB,CAAE9L,MAAO,SAAUutB,aAAc,yBACnEvtB,MAAO,MAER,CACCzO,GAAI,KACJY,KAAM,UACNy7B,UAAW9hB,EAAE,iBAAkB,WAC/BlX,MAAOkX,EAAE,uBAAwB,CAAE9L,MAAO,UAAWutB,aAAc,wBACnEvtB,MAAO,MAGR,CACCzO,GAAI,KACJY,KAAM,UACNy7B,UAAW9hB,EAAE,iBAAkB,WAC/BlX,MAAOkX,EAAE,uBAAwB,CAAE9L,MAAO,UAAWutB,aAAc,wBACnEvtB,MAAO,MAGR,CACCzO,GAAI,KACJY,KAAM,MACNy7B,UAAW9hB,EAAE,cAAe,QAC5BlX,MAAOkX,EAAE,oBAAqB,CAAE9L,MAAO,MAAOutB,aAAc,qBAC5DvtB,MAAO,MAER,CACCzO,GAAI,KACJY,KAAM,SACNy7B,UAAW9hB,EAAE,iBAAkB,WAC/BlX,MAAOkX,EAAE,uBAAwB,CAAE9L,MAAO,SAAUutB,aAAc,wBAClEvtB,MAAO,MAER,CACCzO,GAAI,KACJY,KAAM,WACNy7B,UAAW9hB,EAAE,gBAAiB,UAC9BlX,MAAOkX,EAAE,sBAAuB,CAAE9L,MAAO,WAAYutB,aAAc,uBACnEvtB,MAAO,OI/MsB6tB,CAAW/hB,KAAI,CAACA,IACxCgiB,GAAYn3B,EAAAA,EAAAA,UAAQ,kBJobC,SAC3BmV,GAD2B,MAEoC,CAC/D,CACC9L,MAAO,aACPpL,MAAOkX,EAAE,oBAAqB,CAAE9L,MAAO,cAAeutB,aAAc,wBAErE,CACCvtB,MAAO,iBACPpL,MAAOkX,EAAE,iBAAkB,CAAE9L,MAAO,aAAcutB,aAAc,qBAEjE,CACCvtB,MAAO,aACPpL,MAAOkX,EAAE,kBAAmB,CAAE9L,MAAO,aAAcutB,aAAc,sBAElE,CACCvtB,MAAO,mBACPpL,MAAOkX,EAAE,kBAAmB,CAAE9L,MAAO,aAAcutB,aAAc,sBAElE,CACCvtB,MAAO,oBACPpL,MAAOkX,EAAE,kBAAmB,CAAE9L,MAAO,aAAcutB,aAAc,sBAElE,CACCvtB,MAAO,sBACPpL,MAAOkX,EAAE,6BAA8B,CACtC9L,MAAO,aACPutB,aAAc,iCAGhB,CACCvtB,MAAO,kBACPpL,MAAOkX,EAAE,2BAA4B,CACpC9L,MAAO,aACPutB,aAAc,+BAGhB,CACCvtB,MAAO,iBACPpL,MAAOkX,EAAE,8BAA+B,CACvC9L,MAAO,aACPutB,aAAc,kCAGhB,CACCvtB,MAAO,oBACPpL,MAAOkX,EAAE,qCAAsC,CAC9C9L,MAAO,aACPutB,aAAc,2CAGhB,CACCvtB,MAAO,kBACPpL,MAAOkX,EAAE,mBAAoB,CAAE9L,MAAO,aAAcutB,aAAc,uBAEnE,CACCvtB,MAAO,kBACPpL,MAAOkX,EAAE,6BAA8B,CACtC9L,MAAO,aACPutB,aAAc,iCAGhB,CACCvtB,MAAO,iBACPpL,MAAOkX,EAAE,wBAAyB,CACjC9L,MAAO,aACPutB,aAAc,4BAGhB,CACCvtB,MAAO,sBACPpL,MAAOkX,EAAE,8CAA+C,CACvD9L,MAAO,cACPutB,aAAc,oDAGhB,CACCvtB,MAAO,oBACPpL,MAAOkX,EAAE,2BAA4B,CACpC9L,MAAO,aACPutB,aAAc,+BAGhB,CACCvtB,MAAO,mBACPpL,MAAOkX,EAAE,6BAA8B,CACtC9L,MAAO,aACPutB,aAAc,iCAGhB,CACCvtB,MAAO,+BACPpL,MAAOkX,EAAE,wBAAyB,CACjC9L,MAAO,aACPutB,aAAc,8BAGhB,CACCvtB,MAAO,iBACPpL,MAAOkX,EAAE,oBAAqB,CAAE9L,MAAO,aAAcutB,aAAc,wBAEpE,CACCvtB,MAAO,kBACPpL,MAAOkX,EAAE,mBAAoB,CAAE9L,MAAO,aAAcutB,aAAc,uBAEnE,CACCvtB,MAAO,mBACPpL,MAAOkX,EAAE,iCAAkC,CAC1C9L,MAAO,aACPutB,aAAc,qCAGhB,CACCvtB,MAAO,iBACPpL,MAAOkX,EAAE,kBAAmB,CAAE9L,MAAO,aAAcutB,aAAc,sBAElE,CACCvtB,MAAO,iBACPpL,MAAOkX,EAAE,kBAAmB,CAAE9L,MAAO,aAAcutB,aAAc,sBAElE,CACCvtB,MAAO,iBACPpL,MAAOkX,EAAE,6CAA8C,CACtD9L,MAAO,aACPutB,aAAc,oDAGhB,CACCvtB,MAAO,iBACPpL,MAAOkX,EAAE,kBAAmB,CAAE9L,MAAO,aAAcutB,aAAc,sBAElE,CACCvtB,MAAO,kBACPpL,MAAOkX,EAAE,gCAAiC,CACzC9L,MAAO,aACPutB,aAAc,sCAGhB,CACCvtB,MAAO,mBACPpL,MAAOkX,EAAE,oBAAqB,CAAE9L,MAAO,cAAeutB,aAAc,wBAErE,CACCvtB,MAAO,mBACPpL,MAAOkX,EAAE,wBAAyB,CACjC9L,MAAO,aACPutB,aAAc,4BAGhB,CACCvtB,MAAO,qBACPpL,MAAOkX,EAAE,sBAAuB,CAAE9L,MAAO,aAAcutB,aAAc,0BAEtE,CACCvtB,MAAO,kBACPpL,MAAOkX,EAAE,qBAAsB,CAAE9L,MAAO,aAAcutB,aAAc,yBAErE,CACCvtB,MAAO,kBACPpL,MAAOkX,EAAE,6BAA8B,CACtC9L,MAAO,aACPutB,aAAc,kCAGhB,CACCvtB,MAAO,oBACPpL,MAAOkX,EAAE,oBAAqB,CAAE9L,MAAO,aAAcutB,aAAc,wBAEpE,CACCvtB,MAAO,iCACPpL,MAAOkX,EAAE,qBAAsB,CAAE9L,MAAO,aAAcutB,aAAc,yBAErE,CACCvtB,MAAO,yBACPpL,MAAOkX,EAAE,wBAAyB,CACjC9L,MAAO,aACPutB,aAAc,4BAGhB,CACCvtB,MAAO,YACPpL,MAAOkX,EAAE,kBAAmB,CAAE9L,MAAO,aAAcutB,aAAc,sBAElE,CACCvtB,MAAO,sBACPpL,MAAOkX,EAAE,yBAA0B,CAClC9L,MAAO,aACPutB,aAAc,8BAGhB,CACCvtB,MAAO,kBACPpL,MAAOkX,EAAE,kBAAmB,CAAE9L,MAAO,aAAcutB,aAAc,sBAElE,CACCvtB,MAAO,MACPpL,MAAOkX,EAAE,sCAAuC,CAC/C9L,MAAO,UACPutB,aAAc,0CAGhB,CACCvtB,MAAO,gBACPpL,MAAOkX,EAAE,oCAAqC,CAC7C9L,MAAO,aACPutB,aAAc,0CAGhB,CACCvtB,MAAO,oBACPpL,MAAOkX,EAAE,sBAAuB,CAAE9L,MAAO,aAAcutB,aAAc,0BAEtE,CACCvtB,MAAO,kBACPpL,MAAOkX,EAAE,oBAAqB,CAAE9L,MAAO,aAAcutB,aAAc,wBAEpE,CACCvtB,MAAO,gBACPpL,MAAOkX,EAAE,uDAAwD,CAChE9L,MAAO,aACPutB,aAAc,gEAGhB,CACCvtB,MAAO,kBACPpL,MAAOkX,EAAE,yDAA0D,CAClE9L,MAAO,aACPutB,aAAc,iEAGhB,CACCvtB,MAAO,kBACPpL,MAAOkX,EAAE,6CAA8C,CACtD9L,MAAO,cACPutB,aAAc,oDAGhB,CACCvtB,MAAO,kBACPpL,MAAOkX,EAAE,mBAAoB,CAAE9L,MAAO,aAAcutB,aAAc,uBAEnE,CACCvtB,MAAO,gBACPpL,MAAOkX,EAAE,yCAA0C,CAClD9L,MAAO,aACPutB,aAAc,gDAGhB,CACCvtB,MAAO,iBACPpL,MAAOkX,EAAE,+BAAgC,CACxC9L,MAAO,aACPutB,aAAc,mCAGhB,CACCvtB,MAAO,gBACPpL,MAAOkX,EAAE,4CAA6C,CACrD9L,MAAO,aACPutB,aAAc,mDAGhB,CACCvtB,MAAO,cACPpL,MAAOkX,EAAE,kBAAmB,CAAE9L,MAAO,aAAcutB,aAAc,sBAElE,CACCvtB,MAAO,gBACPpL,MAAOkX,EAAE,oBAAqB,CAAE9L,MAAO,aAAcutB,aAAc,wBAEpE,CACCvtB,MAAO,eACPpL,MAAOkX,EAAE,iBAAkB,CAAE9L,MAAO,aAAcutB,aAAc,qBAEjE,CACCvtB,MAAO,gBACPpL,MAAOkX,EAAE,2BAA4B,CACpC9L,MAAO,aACPutB,aAAc,gCAGhB,CACCvtB,MAAO,kBACPpL,MAAOkX,EAAE,oDAAqD,CAC7D9L,MAAO,aACPutB,aAAc,6DAGhB,CACCvtB,MAAO,kBACPpL,MAAOkX,EAAE,oBAAqB,CAAE9L,MAAO,aAAcutB,aAAc,wBAEpE,CACCvtB,MAAO,iBACPpL,MAAOkX,EAAE,qBAAsB,CAAE9L,MAAO,aAAcutB,aAAc,yBAErE,CACCvtB,MAAO,aACPpL,MAAOkX,EAAE,kBAAmB,CAAE9L,MAAO,aAAcutB,aAAc,sBAElE,CACCvtB,MAAO,qBACPpL,MAAOkX,EAAE,6BAA8B,CACtC9L,MAAO,aACPutB,aAAc,mCAGhB,CACCvtB,MAAO,eACPpL,MAAOkX,EAAE,gBAAiB,CAAE9L,MAAO,aAAcutB,aAAc,oBAEhE,CACCvtB,MAAO,cACPpL,MAAOkX,EAAE,yBAA0B,CAClC9L,MAAO,aACPutB,aAAc,8BAGhB,CACCvtB,MAAO,eACPpL,MAAOkX,EAAE,iBAAkB,CAAE9L,MAAO,aAAcutB,aAAc,qBAEjE,CACCvtB,MAAO,gBACPpL,MAAOkX,EAAE,gDAAiD,CACzD9L,MAAO,aACPutB,aAAc,yDAGhB,CACCvtB,MAAO,iBACPpL,MAAOkX,EAAE,mBAAoB,CAAE9L,MAAO,aAAcutB,aAAc,uBAEnE,CACCvtB,MAAO,cACPpL,MAAOkX,EAAE,kBAAmB,CAAE9L,MAAO,aAAcutB,aAAc,sBAElE,CACCvtB,MAAO,cACPpL,MAAOkX,EAAE,4BAA6B,CACrC9L,MAAO,aACPutB,aAAc,iCAGhB,CACCvtB,MAAO,YACPpL,MAAOkX,EAAE,gBAAiB,CAAE9L,MAAO,aAAcutB,aAAc,oBAEhE,CACCvtB,MAAO,mBACPpL,MAAOkX,EAAE,sBAAuB,CAAE9L,MAAO,aAAcutB,aAAc,0BAEtE,CACCvtB,MAAO,eACPpL,MAAOkX,EAAE,mBAAoB,CAAE9L,MAAO,aAAcutB,aAAc,uBAEnE,CACCvtB,MAAO,eACPpL,MAAOkX,EAAE,mBAAoB,CAAE9L,MAAO,aAAcutB,aAAc,uBAEnE,CACCvtB,MAAO,aACPpL,MAAOkX,EAAE,iBAAkB,CAAE9L,MAAO,aAAcutB,aAAc,qBAEjE,CACCvtB,MAAO,qBACPpL,MAAOkX,EAAE,8BAA+B,CACvC9L,MAAO,aACPutB,aAAc,oCAGhB,CACCvtB,MAAO,eACPpL,MAAOkX,EAAE,qCAAsC,CAC9C9L,MAAO,aACPutB,aAAc,yCAGhB,CACCvtB,MAAO,eACPpL,MAAOkX,EAAE,4CAA6C,CACrD9L,MAAO,aACPutB,aAAc,mDAGhB,CACCvtB,MAAO,iBACPpL,MAAOkX,EAAE,qBAAsB,CAAE9L,MAAO,aAAcutB,aAAc,yBAErE,CACCvtB,MAAO,aACPpL,MAAOkX,EAAE,iBAAkB,CAAE9L,MAAO,aAAcutB,aAAc,qBAEjE,CACCvtB,MAAO,cACPpL,MAAOkX,EAAE,kBAAmB,CAAE9L,MAAO,cAAeutB,aAAc,sBAEnE,CACCvtB,MAAO,eACPpL,MAAOkX,EAAE,iCAAkC,CAC1C9L,MAAO,aACPutB,aAAc,uCAGhB,CACCvtB,MAAO,mBACPpL,MAAOkX,EAAE,6BAA8B,CACtC9L,MAAO,aACPutB,aAAc,mCAGhB,CACCvtB,MAAO,iBACPpL,MAAOkX,EAAE,8CAA+C,CACvD9L,MAAO,aACPutB,aAAc,qDAGhB,CACCvtB,MAAO,eACPpL,MAAOkX,EAAE,yBAA0B,CAClC9L,MAAO,aACPutB,aAAc,+BAGhB,CACCvtB,MAAO,kBACPpL,MAAOkX,EAAE,iBAAkB,CAAE9L,MAAO,aAAcutB,aAAc,qBAEjE,CACCvtB,MAAO,aACPpL,MAAOkX,EAAE,iBAAkB,CAAE9L,MAAO,aAAcutB,aAAc,qBAEjE,CACCvtB,MAAO,iBACPpL,MAAOkX,EAAE,qBAAsB,CAAE9L,MAAO,cAAeutB,aAAc,yBAEtE,CACCvtB,MAAO,aACPpL,MAAOkX,EAAE,iBAAkB,CAAE9L,MAAO,cAAeutB,aAAc,qBAElE,CACCvtB,MAAO,mBACPpL,MAAOkX,EAAE,kBAAmB,CAAE9L,MAAO,aAAcutB,aAAc,sBAElE,CACCvtB,MAAO,mBACPpL,MAAOkX,EAAE,+BAAgC,CACxC9L,MAAO,aACPutB,aAAc,yCAGhB,CACCvtB,MAAO,eACPpL,MAAOkX,EAAE,mBAAoB,CAAE9L,MAAO,aAAcutB,aAAc,uBAEnE,CACCvtB,MAAO,iBACPpL,MAAOkX,EAAE,iDAAkD,CAC1D9L,MAAO,aACPutB,aAAc,yDAGhB,CACCvtB,MAAO,oBACPpL,MAAOkX,EAAE,sBAAuB,CAAE9L,MAAO,aAAcutB,aAAc,0BAEtE,CACCvtB,MAAO,qBACPpL,MAAOkX,EAAE,4BAA6B,CACrC9L,MAAO,aACPutB,aAAc,iCI34BgBQ,CAAajiB,KAAI,CAACA,IAC5Cwf,GAAc/qB,EAAAA,EAAAA,cACnB,SAACyX,EAAGvN,GACHod,EAAO,QAASpd,EAAGuN,KAEpB,CAAC6P,IAGIG,GAAmBrxB,EAAAA,EAAAA,UACxB,kBACCzD,EAAS4E,MAAMk2B,mBAAoBl6B,EAAAA,EAAAA,MAAK65B,EAAS,CAAEp8B,GAAI2B,EAAS4E,MAAMk2B,oBACnEl6B,EAAAA,EAAAA,MAAK65B,EAAS,CAAEp8B,GAAI2B,EAAS4E,MAAMk2B,mBACnCL,EAAQ,KACZ,CAACA,EAASz6B,EAAS4E,MAAMk2B,mBAGpBC,GAAkBt3B,EAAAA,EAAAA,UACvB,kBACCzD,EAAS4E,MAAMo2B,uBACfp6B,EAAAA,EAAAA,MAAKg6B,EAAW,CAAE9tB,MAAO9M,EAAS4E,MAAMo2B,wBACrCp6B,EAAAA,EAAAA,MAAKg6B,EAAW,CAAE9tB,MAAO9M,EAAS4E,MAAMo2B,uBACxCJ,EAAU,MACd,CAACA,EAAW56B,EAAS4E,MAAMo2B,uBAEtBvG,GAAehxB,EAAAA,EAAAA,UAAQ,kBAAMywB,GAA8Btb,KAAI,CAACA,IACtE,OACC,gBAAC,EAAA8b,eAAD,CACChzB,MAAO+yB,EAAa/yB,MACpB4f,SAAS,yBACTpM,MAAM,MACN7W,GAAIo2B,EAAap2B,IAEjB,gBAAC,EAAAqP,UAAD,CAAWE,eAAe,WAAWqM,QAAS,CAAEC,IAAK,UACnDvC,OAAOC,KAAK5X,EAAS4E,OAAOof,OAAS,GACrC,gBAAC,EAAA8C,OAAD,CACC1oB,MAAOq8B,EACP1gB,WAAW,QACXrY,MAAOkX,EAAE,iBAAkB,YAC3BoO,SAAU,SAACla,GACVsrB,EAAYtrB,EAAO,qBAEpBgoB,iBAAkBA,EAClBmG,cAAc,EACdC,kBAAkB,QAClBnU,wBAAwB,cAG1B,gBAAC,EAAA3M,QAAD,CAASoS,IAAI,QAAQtX,MAAM,QACzByC,OAAOC,KAAK5X,EAAS4E,OAAOof,OAAS,GACrC,gBAAC,EAAA8C,OAAD,CACC1oB,MAAOw8B,EACP7gB,WAAW,QACXrY,MAAOkX,EAAE,kBAAmB,aAC5BoO,SAAU,SAACla,GACVsrB,EAAYtrB,EAAO,yBAEpBgoB,iBAAkBiG,EAClBE,cAAc,EACdC,kBAAkB,QAClBnU,wBAAwB,eAI3B,gBAAC,EAAAhO,MAAD,CACC3E,MAAOwE,EAAE,eAAgB,UACzBI,KAAMA,EACNG,aAAcP,EAAE,WAAY,MAC5BM,UAAW,kBAAYlV,OAAOC,SAASk3B,UACvC/hB,aAAcR,EAAE,eAAgB,UAChCK,QAAS,kBAAY+O,GAAQ,KAE7B,gBAAC,EAAAxgB,KAAD,CAAM2X,SAAS,cACbvG,EACA,iBADC,qKCZR,GA/EK,SAAC,GAAyB,IAAvB5Y,EAAuB,EAAvBA,SAAU20B,EAAa,EAAbA,OACT/b,GAAMD,EAAAA,EAAAA,KAANC,EACR,GAAoD1L,EAAAA,EAAAA,UACF,SAAjDlN,EAAS4E,MAAMw2B,+BADhB,eAAOC,EAAP,KAA2BC,EAA3B,KAGA,GAAsDpuB,EAAAA,EAAAA,UACH,SAAlDlN,EAAS4E,MAAM22B,gCADhB,eAAOC,EAAP,KAA4BC,EAA5B,KAGA,GAAwDvuB,EAAAA,EAAAA,UACC,SAAxDlN,EAAS4E,MAAM82B,sCADhB,eAAOC,EAAP,KAA6BC,EAA7B,KAGM7Q,GAAU1d,EAAAA,EAAAA,cACf,SAACyX,EAAGvN,GAEHod,EAAO,QAASpd,EADGuN,EAAI,OAAS,WAGjC,CAAC6P,KAGFjoB,EAAAA,EAAAA,YAAU,WACT4uB,EAAuE,SAAjDt7B,EAAS4E,MAAMw2B,iCACnC,CAACp7B,EAAS4E,MAAMw2B,iCACnB1uB,EAAAA,EAAAA,YAAU,WACT+uB,EAAyE,SAAlDz7B,EAAS4E,MAAM22B,kCACpC,CAACv7B,EAAS4E,MAAM22B,kCACnB7uB,EAAAA,EAAAA,YAAU,WACTkvB,EAAgF,SAAxD57B,EAAS4E,MAAM82B,wCACrC,CAAC17B,EAAS4E,MAAM82B,uCAEnB,IAAMG,GAAcxuB,EAAAA,EAAAA,cAAY,WAC/BiuB,GAAuBD,GACvBtQ,GAASsQ,EAAoB,mCAC3B,CAACA,EAAoBtQ,IAClB+Q,GAAezuB,EAAAA,EAAAA,cAAY,WAChCouB,GAAwBD,GACxBzQ,GAASyQ,EAAqB,oCAC5B,CAACA,EAAqBzQ,IACnBgR,GAAgB1uB,EAAAA,EAAAA,cAAY,WACjCuuB,GAAyBD,GACzB5Q,GAAS4Q,EAAsB,0CAC7B,CAACA,EAAsB5Q,IACpB0J,GAAehxB,EAAAA,EAAAA,UAAQ,kBAAM2wB,GAAsBxb,KAAI,CAACA,IAC9D,OACC,gBAAC,EAAA8b,eAAD,CACChzB,MAAO+yB,EAAa/yB,MACpB4f,SAAS,yBACTpM,MAAM,MACN7W,GAAIo2B,EAAap2B,IAEjB,gBAAC,EAAAqP,UAAD,CAAWE,eAAe,WAAWqM,QAAS,CAAEC,IAAK,UACpD,gBAAC,EAAAme,SAAD,CACC32B,MAAOkX,EACN,gEACA,mCAED9L,MAAOuuB,EACPhhB,QAASwhB,IAEV,gBAAC,EAAAxD,SAAD,CACC32B,MAAOkX,EACN,iEACA,oCAED9L,MAAO0uB,EACPnhB,QAASyhB,IAEV,gBAAC,EAAAzD,SAAD,CACC32B,MAAOkX,EACN,kEACA,qCAED9L,MAAO6uB,EACPthB,QAAS0hB,O,ykBCWd,SA5E4B,WAC3B,OAAwB7uB,EAAAA,EAAAA,UAAe,IAAvC,eAAOwI,EAAP,KAAasmB,EAAb,KACA,GAAYrjB,EAAAA,EAAAA,KAALC,GAAP,eACM5Y,EAAWuL,KACjB,GAAwB2B,EAAAA,EAAAA,WAAS,GAAjC,eAAO8L,EAAP,KAAagP,EAAb,KACM2M,GAAStnB,EAAAA,EAAAA,cAAY,SAACjO,EAAyBkN,EAAKQ,GACzDkvB,GAAQ,SAACC,GAAD,UAAC,MACLA,GADI,cAEN78B,EAFM,GAAC,MAGJ68B,MAAAA,OAHG,EAGHA,EAAI78B,IAHD,cAILkN,EAAMQ,WAGP,IACG6iB,GAAiBuM,EAAAA,EAAAA,eAEjB/jB,GAAS9K,EAAAA,EAAAA,cAAY,WAC1BoI,GAAaC,GACX3M,MAAK,WACD2M,EAAK9Q,QAASJ,EAAAA,EAAAA,UAASmT,OAAOC,KAAKlC,EAAK9Q,OAAQ,qBACnDojB,GAAQ,GAET2H,EAAe,CACdrjB,IAAK,MACLyG,SAAS,EACT3T,KAAM,OACNsC,MAAOkX,EAAE,kCAAmC,yBAC5CujB,gBAAiB,IACjBC,YAAY,OAXf,OAcQ,WACNzM,EAAe,CACdrjB,IAAK,MACLyG,SAAS,EACT3T,KAAM,QACNsC,MAAOkX,EAAE,iBAAkB,0CAC3BujB,gBAAiB,IACjBC,YAAY,OAGfJ,EAAQ,MACN,CAACrM,EAAgBja,EAAMkD,IACpBS,GAAWhM,EAAAA,EAAAA,cAAY,WAC5B2uB,EAAQ,MACN,IACG1iB,GAAU7V,EAAAA,EAAAA,UAAQ,mBAAOqb,EAAAA,EAAAA,SAAQpJ,KAAO,CAACA,IACzCtB,GAAQ3Q,EAAAA,EAAAA,UAAQ,kBAAMmV,EAAE,2BAA4B,sBAAqB,CAACA,IAEhF,OACC,gCACC,gBAAC,GAAD,CAAgBxE,MAAOA,EAAOiF,SAAUA,EAAUlB,OAAQA,EAAQmB,QAASA,IAC3E,gBAAC,EAAA5L,UAAD,CACCqM,WAAW,QACXlM,cAAc,aACdoM,QAAS,CAAEC,IAAK,UAChBpM,MAAO,CAAEqR,SAAU,SAEnB,gBAAC,GAAD,CAAoBnf,SAAUA,EAAU20B,OAAQA,IAChD,gBAAC,GAAD,CACC30B,SAAUA,EACV20B,OAAQA,EACR3b,KAAMA,EACNgP,QAASA,IAGV,gBAAC,GAAD,CAAqBhoB,SAAUA,EAAU20B,OAAQA,IACjD,gBAAC,GAAD,CAAoB30B,SAAUA,EAAU20B,OAAQA,IAChD,gBAAC,GAAD,MACA,gBAAC,GAAD,CAAWoF,YAAY,IACvB,gBAAC,GAAD,S,ykBC3DJ,IAAMsC,GAAWhd,GAAAA,QAAAA,SAAAA,WAAH,6DAAGA,CAAH,qNAMC,qBAAGtB,MAA0B2C,QAAQK,MAAMH,WAGhD,qBAAG7C,MAA0B2C,QAAQkV,KAAKhV,WACpC,qBAAG7C,MAA0BD,MAAN,WACzB,gBAAGC,EAAH,EAAGA,MAAOV,EAAV,EAAUA,KAAV,OAA6BU,EAAMT,MAAMC,KAAKF,MAAAA,EAAAA,EAAQ,aAEpD,qBAAGU,MAA0B2C,QAAQe,MAAMb,WAKrD0b,IAAgBjd,EAAAA,GAAAA,SAAO3R,EAAAA,WAAV,6EAAG2R,CAAH,oDAMbkd,IAAkBld,EAAAA,GAAAA,SAAO3R,EAAAA,WAAV,+EAAG2R,CAAH,kCAKfmd,IAAcnd,EAAAA,GAAAA,SAAO3R,EAAAA,WAAV,2EAAG2R,CAAH,0LACF,qBAAGtB,MAA0B2C,QAAQK,MAAMH,WAO1C,qBAAG7C,MAA0B2C,QAAQe,MAAMb,WAE9B,qBAAG7C,MAA0B2C,QAAQC,QAAQC,WAIpE6b,IAAiBpd,EAAAA,GAAAA,SAAO7X,EAAAA,MAAV,8EAAG6X,CAAH,gHAMJ,SAAC1W,GAAD,OAAmBA,EAAM+zB,cAGnCC,IAAiBtd,EAAAA,GAAAA,SAAO3R,EAAAA,WAAV,8EAAG2R,CAAH,kCACQ,SAAC1W,GAAD,OAAoBA,EAAM2R,SAAW,MAAQ,aAGnEsiB,GAAoB,CACzB/jB,QAAS,GACTgkB,MAAOC,EAAAA,EAAAA,KACPn3B,QAAS,UACTo3B,MAAO,CACNt8B,IAAK,IACLu8B,MAAO,KAERC,KAAM,IAGP,SAAS/hB,GAAQ5a,EAAjB,GAAyF,IAAxDlB,EAAwD,EAAxDA,KAAM6wB,EAAkD,EAAlDA,QACtC,OAAQ7wB,GACP,IAAK,WACJ,gBAAYkB,GAAZ,IAAmB28B,KAAMhN,IAC1B,IAAK,QACJ,OAAO2M,GACR,IAAK,cACJ,gBAAYt8B,GAAZ,IAAmBuY,QAASoX,IAC7B,IAAK,aACJ,gBACI3vB,GADJ,IAECqF,QAASsqB,EAAQ9wB,QACjB49B,MAAO,SAAKz8B,EAAMy8B,OAAb,IAAoBt8B,IAAKwvB,EAAQxvB,QAExC,IAAK,eACJ,gBAAYH,GAAZ,IAAmBy8B,MAAO,SAAKz8B,EAAMy8B,OAAb,IAAoBC,MAAO/M,MACpD,QACC,OAAO3vB,GAIV,IAOM48B,GAKD,SAAC,GAAD,IAAG/b,EAAH,EAAGA,SAAUzf,EAAb,EAAaA,MAAOsX,EAApB,EAAoBA,KAAMoI,EAA1B,EAA0BA,MAA1B,OACJ,gBAACub,GAAD,CACC7iB,YAAY,aACZ5E,MAAM,OACNtH,eAAe,SACfC,cAAc,gBACd0T,aAAa,OACbxH,WAAW,QACXE,QAAS,CACRC,IAAK,UAGN,gBAAC,EAAAF,IAAD,CAAK2H,oBAAkB,EAAC9T,cAAc,SACrC,gBAAC,EAAArG,KAAD,CAAM6V,KAAK,SAASnf,MAAO8a,GAAQoI,EAAQ,UAAY,aACrDD,EAAS6C,OAAS,EAAI7C,EAAS,GAAGzf,MAAQA,IAG7C,gBAAC,EAAAmgB,KAAD,CACCxE,KAAK,QACL/d,KAAM0Z,EAAO,mBAAqB,qBAClC9a,MAAO8a,GAAQoI,EAAQ,UAAY,YACnCtT,MAAO,CAAEgU,UAAW,cAKjBqb,GAMD,SAAC,GAAD,IAAGhc,EAAH,EAAGA,SAAUzf,EAAb,EAAaA,MAAOsX,EAApB,EAAoBA,KAAMoI,EAA1B,EAA0BA,MAAOgc,EAAjC,EAAiCA,QAAjC,OACJ,gBAACT,GAAD,CACCriB,SAAU8iB,EACVtjB,YAAY,aACZ5E,MAAM,OACNtH,eAAe,SACfC,cAAc,gBACd0T,aAAa,OACbxH,WAAW,QACXE,QAAS,CACRC,IAAK,UAGN,gBAAC,EAAAF,IAAD,CAAK2H,oBAAkB,EAAC9T,cAAc,SACpCuvB,EACA,gBAAC,EAAA51B,KAAD,CAAM6V,KAAK,SAASnf,MAAQ8a,GAAQokB,GAAYhc,EAAQ,UAAY,SAClE,IACAD,EAAS6C,OAAS,EAAI7C,EAAS,GAAGzf,MAAQA,GAG5C,gBAAC,EAAA8F,KAAD,CAAM6V,KAAK,SAASnf,MAAO8a,GAAQoI,EAAQ,UAAY,aACrDD,EAAS6C,OAAS,EAAI7C,EAAS,GAAGzf,MAAQA,IAK7C07B,EACA,gBAAC,EAAAvb,KAAD,CACCxE,KAAK,QACL/d,KAAM0Z,EAAO,mBAAqB,qBAClC9a,MAAQ8a,GAAQokB,GAAYhc,EAAQ,UAAY,QAChDtT,MAAO,CAAEgU,UAAW,YAGrB,gBAAC,EAAAD,KAAD,CACCxE,KAAK,QACL/d,KAAM0Z,EAAO,mBAAqB,qBAClC9a,MAAO8a,GAAQoI,EAAQ,UAAY,YACnCtT,MAAO,CAAEgU,UAAW,c,omBCmExB,SApOqB,SAAC,GAQiB,QAPtClJ,EAOsC,EAPtCA,EACAykB,EAMsC,EANtCA,mBACAr0B,EAKsC,EALtCA,WACAs0B,EAIsC,EAJtCA,cACAC,EAGsC,EAHtCA,sBACAC,EAEsC,EAFtCA,iBACAC,EACsC,EADtCA,iBA2CM5N,GAAcxf,EAAAA,EAAAA,YAAWyf,EAAAA,qBAE/B,GAAsD5iB,EAAAA,EAAAA,UAAS,GAA/D,eAAOwwB,EAAP,KAA4BC,EAA5B,KACA,GAAoCzwB,EAAAA,EAAAA,UAA2C,IAA/E,eAAO8I,EAAP,KAAmB4nB,EAAnB,KACMC,GAAgBxwB,EAAAA,EAAAA,cAAY,WAAM,QACjCywB,EACL94B,QACC+4B,EAAAA,EAAAA,MAAI,SACAz/B,EAAAA,EAAAA,SACFiT,EAAAA,EAAAA,MACCA,EAAAA,EAAAA,MACCjT,EAAAA,EAAAA,QAAO0K,GAAY,SAACzK,GAAD,uBAAUA,EAAKy/B,oBAAf,aAAU,EAAmBx5B,SAAS,mBACzD,SAACjG,GAAD,OAAyBA,EAAKy/B,iBAE/B,SAACz/B,GAAD,OAAkB0/B,WAAW1/B,EAAKwU,QAAQ,eAAgB,SAE3D,SAACxU,GAAD,OAAUyG,OAAOzG,SAGhB,EACC2/B,EAAiB,eAAH,OAAkBJ,GAAwB,GAC9D90B,EAAWqK,KAAK,CACfhV,GAAI,GAAF,OAAK2K,EAAWgb,QAClB5kB,KAAMwZ,EAAE,gBAAiB,WACzBulB,WAAYT,EACZU,YAAW,UAAEp1B,EAAW,UAAb,aAAE,EAAeo1B,YAC5BJ,aAAcE,EACdG,YAAW,UAAEr1B,EAAW,UAAb,aAAE,EAAeq1B,YAC5BC,eAAgB,GAChBC,eAAgB,GAChBC,eAAgB,QAChBC,WAAY,GACZC,eAAgB,GAChBC,qBAAsB,GACtBC,kBAAmB,KAEpBtB,EAAct0B,GACd20B,EAAuBD,EAAsB,GAC7CE,GAAc,SAACt9B,GAAU,QAiBxB,OAhBAA,EAAM+S,KAAK,CACVzO,MAAO,CACNqR,UAAWynB,EACXxnB,uBAAwBgoB,EACxB/nB,sBAAqB,UAAEnN,EAAW,UAAb,aAAE,EAAeq1B,YACtCjoB,sBAAqB,UAAEpN,EAAW,UAAb,aAAE,EAAeo1B,YACtCS,0BAA2B,SAC3BxoB,yBAA0B,QAC1BC,yBAA0B,GAC1BC,yBAA0B,GAC1BC,6BAA8B,GAC9BC,kCAAmC,GACnCC,4BAA6B,QAC7BC,+BAAgC,WAG3BrW,KAERm9B,EAAiBznB,GACjBunB,EAAsBv0B,EAAWgb,OAAS,KACxC,CACFhb,EACAs0B,EACA1kB,EACA6kB,EACAC,EACA1nB,EACAunB,IAGD,GAAoCrwB,EAAAA,EAAAA,UAAmB,IAAvD,eAAO6I,EAAP,KAAmB+oB,EAAnB,KACMC,GAAkB1xB,EAAAA,EAAAA,cAAY,WACnC,IAAM2xB,GAAgBztB,EAAAA,EAAAA,MACrBjT,EAAAA,EAAAA,QACC0K,GACA,SAAC6M,GAAD,aAAcA,MAAAA,OAAA,EAAAA,EAAUsoB,eAAV,UAAyBn1B,EAAWq0B,UAApC,aAAyB,EAAgCc,gBAExE,SAAC5/B,EAAqB0gC,GAAtB,UAAC,MAA6C1gC,GAA9C,IAAoDF,GAAI4gC,EAAMC,gBAE/DJ,GAAc,SAACx+B,GAAU,MAExB,OADAA,EAAM+S,KAAN,UAAWrK,EAAWq0B,UAAtB,aAAW,EAAgCc,WAAWe,YAC/C5+B,KAERg9B,EAAc0B,GACdxB,EAAiBznB,GACjBwnB,EAAsBF,EAAqB,KACzC,CACFr0B,EACAs0B,EACAE,EACAznB,EACAwnB,EACAF,IAEK8B,GAAW9xB,EAAAA,EAAAA,cAAY,WAI5B,IAAM+xB,EAAavP,EAAY,CAC9Bzb,MAAOwE,EAAE,+BAAgC,oDACzCM,UAAW,WACV6lB,IACAK,KAEDhmB,aAAcR,EAAE,2BAA4B,sBAC5CymB,aAAc,QACdC,eAAe,EACfrmB,QAAS,kBAAMmmB,KACf76B,SACC,gBAAC,EAAA6V,QAAD,CAASF,IAAI,SACZ,gBAAC,EAAA1S,KAAD,CAAM2X,SAAS,cACbvG,EACA,iCACA,8FAMH,CAACiX,EAAajX,EAAGmmB,IAEpB,OACC,gCACC,gBAAC,EAAArxB,UAAD,CACC4T,SAAS,yBACTpM,MAAM,OACN+E,QAAS,CAAEC,IAAK,SAChBvM,OAAO,MACPoM,WAAW,QACXlM,cAAc,cAEd,gBAAC,EAAAuM,QAAD,CAASmJ,WAAW,SAASgS,OAAO,QAAQrgB,MAAM,QACjD,gBAAC,EAAA1N,KAAD,CAAM2lB,OAAO,QAAQvU,EAAE,sBAAuB,mBAE/C,gBAAC,EAAA2mB,KAAD,CACCnhC,MAAO4K,EACPw2B,cA9Ka,SAAC,GAAD,IAAGjhC,EAAH,EAAGA,KAAH,OAChB,gCACC,gBAAC,EAAAmP,UAAD,CACC2M,QAAS,WALO,IAACvN,EAAAA,EAML9H,OAAOzG,EAAKF,IANiBk/B,EAAsBzwB,IAQ/DgN,YAAY,aACZjM,cAAc,aACdoM,QAAS,CAAEC,IAAK,UAEhB,gBAAC,EAAAF,IAAD,CAAK9E,MAAM,OAAOrH,cAAc,iBAC/B,gBAAC,EAAAH,UAAD,CAAWoM,YAAY,aAAajM,cAAc,aAAaqH,MAAM,OACpE,gBAAC,EAAAkF,QAAD,CAAS/O,MAAM,SACd,gBAAC,EAAAwW,KAAD,CAAMviB,KAAK,0BAA0B+d,KAAK,QAAQnf,MAAM,aAEzD,gBAAC,EAAAkc,QAAD,CAAS/O,MAAM,SACd,gBAAC,EAAA7D,KAAD,CAAM2lB,OAAO,UAAU9P,KAAK,SAC1B9e,EAAKy/B,eAGR,gBAAC,EAAA5jB,QAAD,CAAS/O,MAAM,SACd,gBAAC,EAAA7D,KAAD,CAAM2lB,OAAO,UAAU9P,KAAK,QAAQnf,MAAM,aAA1C,IACGK,EAAK6/B,YADR,OAKF,gBAAC,EAAA1wB,UAAD,CAAWwH,MAAM,MAAMrH,cAAc,YACpC,gBAAC,EAAArG,KAAD,CAAM2lB,OAAO,UAAU9P,KAAK,SAC1B9e,EAAKa,QAKT,gBAAC,EAAA4a,IAAD,CAAK9E,MAAM,SAEZ,gBAAC,EAAAqF,QAAD,QA4IEsP,OAAM,UAAE7gB,EAAWq0B,UAAb,aAAE,EAAgCh/B,GACxCsP,OAAO,MACP0vB,mBAAoBA,EACpBE,sBAAuBA,KAGzB,gBAAC,EAAAvjB,IAAD,CACCC,QAAS,CAAEsJ,WAAY,QAASgS,OAAQ,SACxCrgB,MAAM,OACNrH,cAAc,aACdkM,WAAW,SAEX,gBAAC,EAAAK,QAAD,CAAS/O,MAAM,SACd,gBAAC,EAAA8J,OAAD,CACCzT,MAAOkX,EAAE,6BAA8B,wBAEvC1a,MAAM,UACNkB,KAAK,WACLkb,UAAQ,KAGV,gBAAC,EAAAF,QAAD,CAAS/O,MAAM,SACd,gBAAC,EAAA8J,OAAD,CACCzT,MAAOkX,EAAE,oBAAqB,eAC9ByB,QAAS,kBAAYwjB,KACrB3/B,MAAM,UACNkB,KAAK,cAGP,gBAAC,EAAA+V,OAAD,CACCzT,MAAOkX,EAAE,eAAgB,UACzByB,QAAS,kBAAY8kB,KACrBjhC,MAAM,QACNkB,KAAK,WACLkb,UAAU,UAAAtR,EAAWq0B,UAAX,eAAgCj+B,QAASwZ,EAAE,gBAAiB,cAGxE,gBAAC,EAAAwB,QAAD,CAASmb,OAAO,YC/JnB,GArF+B,SAAC,GAIiB,IAHhD3c,EAGgD,EAHhDA,EACAxa,EAEgD,EAFhDA,MACAqhC,EACgD,EADhDA,iBAEMC,GAAaj8B,EAAAA,EAAAA,UAAQ,kBAAMrF,MAAAA,OAAN,EAAMA,EAAOggC,cAAa,CAAChgC,IAChDuhC,GAAal8B,EAAAA,EAAAA,UAClB,kBAAOi8B,EAAa,GAAK9mB,EAAE,sBAAuB,oBAClD,CAAC8mB,EAAY9mB,IAEd,GAAgD1L,EAAAA,EAAAA,UAAS9O,MAAAA,OAAD,EAACA,EAAO4/B,cAAhE,eAAO4B,EAAP,KAAyBC,EAAzB,MAEAnzB,EAAAA,EAAAA,YAAU,kBAAMmzB,EAAoBzhC,EAAM4/B,gBAAe,CAAC5/B,EAAM4/B,eAChE,IAAM8B,GAAer8B,EAAAA,EAAAA,UACpB,kBAAOm8B,EAAmB,GAAKhnB,EAAE,qBAAsB,kBACvD,CAACgnB,EAAkBhnB,IAGdmnB,GAAmB1yB,EAAAA,EAAAA,cAAY,kBAAM,OAAM,IAC3C2Z,GAAW3Z,EAAAA,EAAAA,cAChB,SACCkY,GAIAsa,EAAoBta,EAAGja,OAAOwB,OAE9B,IAAMkzB,EAAa,CAClB3hC,GAAID,EAAM+/B,WACV7xB,IAAK,yBACLQ,MAAOyY,EAAGja,OAAOwB,OAGlB2yB,EAAiBO,KAElB,CAACP,EAAkBrhC,EAAM+/B,aAG1B,OACC,gCACC,gBAAC,EAAAzwB,UAAD,CACC4T,SAAS,yBACTpM,MAAM,OACN+E,QAAS,CAAEC,IAAK,SAChBvM,OAAO,MACPoM,WAAW,QACXlM,cAAc,cAEd,gBAAC,EAAAuM,QAAD,CAASmJ,WAAW,SAASrO,MAAM,QAClC,gBAAC,EAAA1N,KAAD,CAAM2lB,OAAO,QAAQvU,EAAE,wBAAyB,+BAGlD,gBAAC,EAAAoB,IAAD,CACC9E,MAAM,OACN+E,QAAS,CAAEsJ,WAAY,QAASgS,OAAQ,SACxC5nB,OAAO,MACPoM,WAAW,QACXlM,cAAc,cAEd,gBAAC,EAAAmM,IAAD,CAAK9E,MAAM,MAAM+E,QAAS,CAAE5O,MAAO,UAClC,gBAAC,EAAAwuB,MAAD,CACCn4B,MAAOi+B,EACP7yB,MAAO4yB,GAAc,IACrB3lB,WAAW,QACXiN,SAAU+Y,KAGZ,gBAAC,EAAA/lB,IAAD,CAAK9E,MAAM,OACV,gBAAC,EAAA2kB,MAAD,CACCn4B,MAAOo+B,EACPhzB,MAAO8yB,GAAoB,IAC3B7lB,WAAW,QACXiN,SAAU,SACTzB,GADS,OAICyB,EAASzB,QAIvB,gBAAC,EAAAnL,QAAD,CAASmb,OAAO,YCqMnB,GAxQ6B,SAAC,GAKiB,IAJ9C3c,EAI8C,EAJ9CA,EACAxa,EAG8C,EAH9CA,MACA6hC,EAE8C,EAF9CA,kBACAR,EAC8C,EAD9CA,iBAEMrrB,GAAQ3Q,EAAAA,EAAAA,UAAQ,kBAAMmV,EAAE,+BAAgC,gCAA+B,CAACA,IAC9F,GAAsD1L,EAAAA,EAAAA,UAAkC,SAAzB9O,EAAMogC,gBAArE,eAAO0B,EAAP,KAA4BC,EAA5B,KACA,GAA4CjzB,EAAAA,EAAAA,UAAS9O,EAAMmgC,gBAA3D,eAAOA,EAAP,KAAuB6B,EAAvB,KACA,GAAwClzB,EAAAA,EAAAA,WAAS,GAAjD,eAAOmzB,EAAP,KAAqBC,EAArB,KACA,GAAgDpzB,EAAAA,EAAAA,UAAS9O,EAAMigC,aAA/D,eAAOkC,EAAP,KAAyBC,EAAzB,KACA,GAA4CtzB,EAAAA,EAAAA,UAAS9O,MAAAA,OAAD,EAACA,EAAOkgC,gBAA5D,eAAOA,EAAP,KAAuBmC,EAAvB,KACMC,GAAmBj9B,EAAAA,EAAAA,UACxB,iBAAM,CAAC,CAAEqJ,MAAO1O,EAAMggC,YAAa18B,MAAOtD,EAAMggC,gBAChD,CAAChgC,MAAAA,OAAD,EAACA,EAAOggC,cAET,GAAsClxB,EAAAA,EAAAA,WAAS,kBAC9CtM,EAAAA,EAAAA,MAAK8/B,GAAkB,SAACniC,GAAD,OAAUA,EAAKuO,QAAU1O,EAAMggC,kBADvD,eAAOA,EAAP,KAAoBuC,EAApB,MAIAj0B,EAAAA,EAAAA,YAAU,WACTyzB,EAAgD,SAAzB/hC,EAAMogC,kBAC3B,CAACpgC,EAAMogC,kBACV9xB,EAAAA,EAAAA,YAAU,WACT8zB,EAAoBpiC,EAAMigC,eACxB,CAACjgC,EAAMigC,eACV3xB,EAAAA,EAAAA,YAAU,WACT,IAAMk0B,GAAIhgC,EAAAA,EAAAA,MAAK8/B,GAAkB,SAACniC,GAAD,OAAUA,EAAKuO,QAAU1O,EAAMggC,eAChEuC,EAAeC,KACb,CAACF,EAAkBtiC,EAAMggC,eAC5B1xB,EAAAA,EAAAA,YAAU,WACT+zB,OAA4Ch4B,KAA1BrK,MAAAA,OAAA,EAAAA,EAAOkgC,gBAA+B,GAAKlgC,MAAAA,OAA3C,EAA2CA,EAAOkgC,kBAClE,CAAClgC,MAAAA,OAAD,EAACA,EAAOkgC,kBACX5xB,EAAAA,EAAAA,YAAU,WACT0zB,EAAkBhiC,EAAMmgC,kBACtB,CAACngC,EAAMmgC,iBAEV,IAAMsC,GAAwBxzB,EAAAA,EAAAA,cAAY,WACzC8yB,GAAwBD,GACxB,IAAMF,EAAa,CAClB3hC,GAAID,EAAM+/B,WACV7xB,IAAK,2BACLQ,MAAOozB,EAAsB,QAAU,QAExCT,EAAiBO,KACf,CAAC5hC,EAAM+/B,WAAY+B,EAAqBT,IAErCqB,GAAmBr9B,EAAAA,EAAAA,UACxB,kBAAO88B,EAAmB,GAAK3nB,EAAE,kBAAmB,kBACpD,CAACA,EAAG2nB,IAgBCQ,GAAmBt9B,EAAAA,EAAAA,UACxB,kBAAO26B,EAAc,GAAKxlB,EAAE,gBAAiB,aAC7C,CAACwlB,EAAaxlB,IAGTooB,GAAsB3zB,EAAAA,EAAAA,cAC3B,SAACsY,GACAgb,GAAeriC,EAAAA,EAAAA,QAAOoiC,GAAkB,SAACniC,GAAD,OAAUA,EAAKuO,QAAU6Y,KAAQ,IACzE,IAAMqa,EAAa,CAClB3hC,GAAID,EAAM+/B,WACV7xB,IAAK,wBACLQ,MAAO6Y,GAER8Z,EAAiBO,KAElB,CAAC5hC,EAAM+/B,WAAYsB,EAAkBiB,IAGhCO,GAAsBx9B,EAAAA,EAAAA,UAC3B,kBAAMmV,EAAE,2BAA4B,oDACpC,CAACA,IAGIsoB,GAAsBz9B,EAAAA,EAAAA,UAC3B,kBAAO66B,EAAiB,GAAK1lB,EAAE,+BAAgC,oBAC/D,CAACA,EAAG0lB,IAEC6C,GAA6B9zB,EAAAA,EAAAA,cAClC,SACCkY,GAIAkb,EAAkBlb,EAAGja,OAAOwB,OAC5B,IAAMkzB,EAAa,CAClB3hC,GAAID,EAAM+/B,WACV7xB,IAAK,2BACLQ,MAAOyY,EAAGja,OAAOwB,OAElB2yB,EAAiBO,KAElB,CAACP,EAAkBrhC,EAAM+/B,aAGpBiD,GAAsB39B,EAAAA,EAAAA,UAC3B,kBAAO86B,EAAiB,GAAK3lB,EAAE,uBAAwB,uBACvD,CAACA,EAAG2lB,IAGC8C,GAAsB59B,EAAAA,EAAAA,UAC3B,iBAAM,CACL,CACCpF,GAAI,IACJqD,MAAOtD,EAAMggC,YACb1kB,MAAO,SAAC6L,GACP6a,EAAkB7a,EAAGja,OAAO2Y,aAC5B,IAAM+b,EAAa,CAClB3hC,GAAID,EAAM+/B,WACV7xB,IAAK,2BACLQ,MAAOyY,EAAGja,OAAO2Y,aAElBwb,EAAiBO,QAIpB,CAAC5hC,EAAMggC,YAAahgC,EAAM+/B,WAAYsB,IAGjC6B,GAAyBj0B,EAAAA,EAAAA,cAC9B,SAACkY,GACA6a,EAAkB7a,EAAGja,OAAOwB,OAC5B,IAAMkzB,EAAa,CAClB3hC,GAAID,EAAM+/B,WACV7xB,IAAK,2BACLQ,MAAOyY,EAAGja,OAAOwB,OAElB2yB,EAAiBO,KAElB,CAACP,EAAkBrhC,EAAM+/B,aAGpBoD,GAAe99B,EAAAA,EAAAA,UACpB,kBAAMy8B,IAAwBviC,EAAuB6jC,KAAKjD,GAAkB,MAC5E,CAAC2B,EAAqB3B,IAGvB,OACC,gCACC,gBAAC,EAAA7wB,UAAD,CACC4T,SAAS,yBACTpM,MAAM,OACN+E,QAAS,CAAEC,IAAK,SAChBvM,OAAO,MACPoM,WAAW,QACXlM,cAAc,cAEd,gBAAC,EAAAuM,QAAD,CAASmJ,WAAW,SAASrO,MAAM,QAClC,gBAAC,EAAA1N,KAAD,CAAM2lB,OAAO,QAAQ/Y,KAGvB,gBAAC,EAAA4F,IAAD,CACC9E,MAAM,OACN+E,QAAS,CAAEsJ,WAAY,QAASgS,OAAQ,SACxC5nB,OAAO,MACPoM,WAAW,QACXlM,cAAc,cAEd,gBAAC,EAAAmM,IAAD,CACC9E,MAAO+qB,EAAoB,OAAS,MACpChmB,QAAS,CAAE5O,MAAO40B,EAAoB,GAAK,UAE3C,gBAAC,EAAApG,MAAD,CACCn4B,MAAOo/B,EACPh0B,MAAOyzB,EACPvZ,SAAU,SACTzB,GADS,OAhIkB,SAChCA,GAIAib,EAAoBjb,EAAGja,OAAOwB,OAC9B,IAAMkzB,EAAa,CAClB3hC,GAAID,EAAM+/B,WACV7xB,IAAK,wBACLQ,MAAOyY,EAAGja,OAAOwB,OAElB2yB,EAAiBO,GAyHFyB,CAAyBlc,IACpCxL,WAAW,YAGXkmB,GACD,gBAAC,EAAAjmB,IAAD,CAAK9E,MAAM,OACV,gBAAC,EAAA4R,OAAD,CACCplB,MAAOq/B,EACPrd,UAAW0a,EACXhgC,MAAOsiC,EACPzF,cAAc,EACdlhB,WAAW,QACXiN,SAAU,kBAAega,OAK7B,gBAAC,EAAAhnB,IAAD,CACC9E,MAAM,OACN6E,WAAW,QACXlM,cAAc,aACdoM,QAAS,CAAEsJ,WAAY,QAASgS,OAAQ,UAExC,gBAAC,EAAA8C,SAAD,CACC32B,MAAOu/B,EACPn0B,MAAOozB,EACP7lB,QAAS,kBAAYwmB,QAGvB,gBAAC,EAAA7mB,IAAD,CACC9E,MAAM,OACN+E,QAAS,CAAEsJ,WAAY,QAASgS,OAAQ,SACxC5nB,OAAO,MACPoM,WAAW,QACXlM,cAAc,cAEd,gBAAC,EAAAmM,IAAD,CAAK9E,MAAM,MAAM+E,QAAS,CAAE5O,MAAO,UAClC,gBAAC,EAAAwuB,MAAD,CACCn4B,MAAOw/B,EACPp0B,MAAOwxB,EACPvkB,WAAW,QACXO,UAAW4lB,EACXlZ,SAAU,SACTzB,GADS,OAIC4b,EAA2B5b,OAGxC,gBAAC,EAAAvL,IAAD,CAAK9E,MAAM,OACV,gBAAC,EAAAuT,SAAD,CACCrqB,MAAOijC,EACPzZ,UAAU,eACV9Z,MAAO,CAAEwgB,SAAU,KACnBrV,QAAS,kBAAYqnB,GAAgB,IACrC/X,OAAQ,kBAAY+X,GAAgB,IACpChmB,UAAW4lB,GAEX,gBAAC,EAAArG,MAAD,CACCn4B,MAAO0/B,EACPt0B,MAAOyxB,EACPvX,SAAU,SACTzB,GADS,OAIC+b,EAAuB/b,IAClCxL,WAAW,QACX2nB,SAAUH,EACVI,WAAY,kBACX,gBAAC,EAAA9f,KAAD,CAAMviB,KAAM+gC,EAAe,UAAY,eAExC/lB,UAAW4lB,OAKf,gBAAC,EAAA9lB,QAAD,CAASmb,OAAO,YCpJnB,GAhHiC,SAAC,GAIiB,IAHlD3c,EAGkD,EAHlDA,EACAxa,EAEkD,EAFlDA,MACAuxB,EACkD,EADlDA,eAEMvb,GAAQ3Q,EAAAA,EAAAA,UACb,kBAAMmV,EAAE,oCAAqC,wCAC7C,CAACA,IAGIgpB,GAAgBn+B,EAAAA,EAAAA,UACrB,kBAAMrF,EAAMyjC,iBAAmBjpB,EAAE,mBAAoB,sBACrD,CAACA,EAAGxa,EAAMyjC,kBAEX,GAAoC30B,EAAAA,EAAAA,UAAS,IAA7C,eAAOwyB,EAAP,KAAmBoC,EAAnB,KACA,GAAwC50B,EAAAA,EAAAA,WAAS,GAAjD,eAAOq0B,EAAP,KAAqBQ,EAArB,KACMC,GAAav+B,EAAAA,EAAAA,UAClB,kBAAOi8B,EAAa,GAAK9mB,EAAE,sBAAuB,4BAClD,CAAC8mB,EAAY9mB,IAGRoO,GAAW3Z,EAAAA,EAAAA,cAChB,SACCkY,GAIAuc,EAAcvc,EAAGja,OAAOwB,OACxBi1B,EAAgBpkC,EAAuB6jC,KAAKjc,EAAGja,OAAOwB,UAEvD,CAACg1B,EAAeC,IAGXE,GAAW50B,EAAAA,EAAAA,cAAY,WAC5B9E,GAAAA,WAEEmC,aAAa9O,EAFf2M,CAGE,qBAHF,2FAIsFm3B,EAJtF,eAMQ,WACN/P,EAAe,CACdrjB,IAAK,MACLyG,SAAS,EACT3T,KAAM,QACNsC,MAAOkX,EAAE,iBAAkB,0CAC3BujB,gBAAiB,IACjBC,YAAY,SAGb,CAACzM,EAAgB+P,EAAY9mB,IAEhC,OACC,gCACC,gBAAC,EAAAlL,UAAD,CACC4T,SAAS,yBACTpM,MAAM,OACN+E,QAAS,CAAEC,IAAK,SAChBvM,OAAO,MACPoM,WAAW,QACXlM,cAAc,cAEd,gBAAC,EAAAuM,QAAD,CAASmJ,WAAW,SAASrO,MAAM,QAClC,gBAAC,EAAA1N,KAAD,CAAM2lB,OAAO,QAAQ/Y,EAArB,OAGF,gBAAC,EAAA4F,IAAD,CACC9E,MAAM,OACN+E,QAAS,CAAEsJ,WAAY,QAASgS,OAAQ,SACxC5nB,OAAO,MACPoM,WAAW,QACXlM,cAAc,cAEd,gBAAC,EAAAmM,IAAD,CAAK9E,MAAM,OAAO+E,QAAS,CAAEsb,OAAQ,WACpC,gBAAC,EAAA/tB,KAAD,CAAMuS,WAAW,QAAQ7b,MAAM,aAC7B0jC,IAGH,gBAAC,EAAArnB,QAAD,OAED,gBAAC,EAAAP,IAAD,CACC9E,MAAM,OACN+E,QAAS,CAAEsJ,WAAY,QAASgS,OAAQ,SACxC5nB,OAAO,MACPoM,WAAW,QACXlM,cAAc,cAEd,gBAAC,EAAAmM,IAAD,CAAK2H,oBAAkB,EAAC1H,QAAS,CAAE5O,MAAO,UACzC,gBAAC,EAAAwuB,MAAD,CACCn4B,MAAOsgC,EACPl1B,MAAO4yB,EACP3lB,WAAW,QACXiN,SAAUA,EACV0a,SAAyB,KAAfhC,IAAsB6B,KAGlC,gBAAC,EAAAvnB,IAAD,CAAK9E,MAAM,OACV,gBAAC,EAAAC,OAAD,CACCzT,MAAOkX,EAAE,2BAA4B,uBACrC1a,MAAM,UACNkB,KAAK,WACLkb,UAAWinB,EACXlnB,QAAS4nB,MAKZ,gBAAC,EAAA7nB,QAAD,CAASmb,OAAO,YC+BnB,GAtIkB,SAAC,GAKiB,IAJnC3c,EAImC,EAJnCA,EACAxa,EAGmC,EAHnCA,MACA8jC,EAEmC,EAFnCA,mBACAC,EACmC,EADnCA,sBAEA,GAAsCj1B,EAAAA,EAAAA,UAAS,KAA/C,eAAOk1B,EAAP,KAAoBC,EAApB,KAsCA,OACC,gCACC,gBAAC,EAAA30B,UAAD,CACC4T,SAAS,yBACTpM,MAAM,OACN+E,QAAS,CAAEC,IAAK,SAChBvM,OAAO,MACPoM,WAAW,QACXlM,cAAc,cAEd,gBAAC,EAAAuM,QAAD,CAASmJ,WAAW,SAASgS,OAAO,QAAQrgB,MAAM,QACjD,gBAAC,EAAA1N,KAAD,CAAM2lB,OAAO,QAAQvU,EAAE,kBAAmB,eAE3C,gBAAC,EAAA2mB,KAAD,CACCnhC,MAAOA,EACPohC,cAjDa,SAAC,GAAD,IAAGjhC,EAAH,EAAGA,KAAH,OAChB,gCACC,gBAAC,EAAAmP,UAAD,CACC2M,QAAS,kBALQvN,EAKevO,EAAKF,GALI8jC,EAAsBr1B,GAA/C,IAACA,GAMjBgN,YAAY,aACZjM,cAAc,aACdoM,QAAS,CAAEC,IAAK,UAEhB,gBAAC,EAAAF,IAAD,CAAK9E,MAAM,OAAOrH,cAAc,iBAC/B,gBAAC,EAAAH,UAAD,CAAWoM,YAAY,aAAajM,cAAc,aAAaqH,MAAM,OACpE,gBAAC,EAAAkF,QAAD,CAAS/O,MAAM,SACd,gBAAC,EAAA7D,KAAD,CAAM2lB,OAAO,UAAU9P,KAAK,SAC1B9e,EAAKmD,QAGR,gBAAC,EAAA0Y,QAAD,CAAS/O,MAAM,SACd,gBAAC,EAAA7D,KAAD,CAAM2lB,OAAO,UAAU9P,KAAK,QAAQnf,MAAM,aACxCK,EAAK8Y,SAIT,gBAAC,EAAA3J,UAAD,CAAWwH,MAAM,MAAMrH,cAAc,YACpC,gBAAC,EAAArG,KAAD,CAAM2lB,OAAO,UAAU9P,KAAK,SAC1B9e,EAAK8M,SAKT,gBAAC,EAAA2O,IAAD,CAAK9E,MAAM,SAEZ,gBAAC,EAAAqF,QAAD,QAoBEsP,OAAQqY,EACRv0B,OAAO,MACP20B,WAAYJ,EACZK,cAAeJ,KAGjB,gBAAC,EAAAnoB,IAAD,CACCC,QAAS,CAAEsJ,WAAY,SACvBrO,MAAM,OACNrH,cAAc,aACdkM,WAAW,SAEX,gBAAC,EAAAK,QAAD,CAAS/O,MAAM,SACd,gBAAC,EAAA8J,OAAD,CACCzT,MAAOkX,EAAE,qBAAsB,gBAC/B1a,MAAM,UACNkB,KAAK,WACLkb,UAAQ,KAGV,gBAAC,EAAAF,QAAD,CAAS/O,MAAM,SACd,gBAAC,EAAA8J,OAAD,CACCzT,MAAOkX,EAAE,yBAA0B,oBACnC1a,MAAM,UACNkB,KAAK,WACLkb,UAAQ,KAGV,gBAAC,EAAAnF,OAAD,CAAQzT,MAAOkX,EAAE,eAAgB,UAAW1a,MAAM,QAAQkB,KAAK,WAAWkb,UAAQ,KAEnF,gBAAC,EAAA5M,UAAD,CACC4T,SAAS,yBACTpM,MAAM,OACN+E,QAAS,CAAEC,IAAK,SAChBvM,OAAO,MACPoM,WAAW,QACXlM,cAAc,cAEd,gBAAC,EAAA20B,WAAD,CACC10B,MAAO,CAAEoH,MAAO,QAChBpI,MAAOs1B,EACPv0B,cAAc,aACdmZ,SAAU,SAACyb,GAAD,OAA4BJ,EAAeI,KAErD,gBAAC,EAAAC,MAAD,CACCxtB,MAAM,OACNxT,MAAOkX,EACN,+BACA,kDAED9L,MAAM,MAEP,gBAAC,EAAA41B,MAAD,CACChhC,MAAOkX,EACN,6BACA,0DAED9L,MAAM,MAEP,gBAAC,EAAA41B,MAAD,CACChhC,MAAOkX,EACN,0BACA,wEAED9L,MAAM,MAEP,gBAAC,EAAA41B,MAAD,CAAOhhC,MAAOkX,EAAE,kBAAmB,sCAAuC9L,MAAM,OAEjF,gBAAC,EAAAsN,QAAD,CAASmb,OAAO,aC/DpB,GAjFwB,SAAC,GAAuE,IAArE3c,EAAqE,EAArEA,EAAGxa,EAAkE,EAAlEA,MAAOqhC,EAA2D,EAA3DA,iBACpC,GAAwCvyB,EAAAA,EAAAA,UAAS9O,EAAM4/B,cAAvD,eAAO2E,EAAP,KAAqBC,EAArB,KACMC,GAAep/B,EAAAA,EAAAA,UACpB,kBAAOk/B,EAAe,GAAK/pB,EAAE,qBAAsB,kBACnD,CAAC+pB,EAAc/pB,KAEhBlM,EAAAA,EAAAA,YAAU,WACTk2B,EAAgBxkC,EAAM4/B,gBACpB,CAAC5/B,EAAM4/B,eAEV,IAAMhX,GAAW3Z,EAAAA,EAAAA,cAChB,SAACkY,GACAqd,EAAgBrd,EAAGja,OAAOwB,OAC1B,IAAMkzB,EAAa,CAClB3hC,GAAID,EAAM+/B,WACV7xB,IAAK,yBACLQ,MAAOyY,EAAGja,OAAOwB,OAGlB2yB,EAAiBO,KAElB,CAACP,EAAkBrhC,EAAM+/B,WAAYyE,IAGtC,OACC,gCACC,gBAAC,EAAAl1B,UAAD,CACC4T,SAAS,yBACTpM,MAAM,OACN+E,QAAS,CAAEC,IAAK,SAChBvM,OAAO,MACPoM,WAAW,QACXlM,cAAc,cAEd,gBAAC,EAAAuM,QAAD,CAASmJ,WAAW,SAASrO,MAAM,QAClC,gBAAC,EAAA1N,KAAD,CAAM2lB,OAAO,QAAQvU,EAAE,yBAA0B,uBAGnD,gBAAC,EAAAoB,IAAD,CACC9E,MAAM,OACN+E,QAAS,CAAEsJ,WAAY,QAASgS,OAAQ,SACxC5nB,OAAO,MACPoM,WAAW,QACXlM,cAAc,cAEd,gBAAC,EAAAmM,IAAD,CAAKF,YAAY,WAAWjM,cAAc,aAAaqH,MAAM,QAC5D,gBAAC,EAAA8E,IAAD,CAAKF,YAAY,aAAa5E,MAAM,OAAOrH,cAAc,cACxD,gBAAC,EAAArG,KAAD,CAAMuS,WAAW,QAAQ7b,MAAM,YAAYgX,MAAM,QAC/C0D,EACA,2BACA,gFAIH,gBAAC,EAAAoB,IAAD,CAAKF,YAAY,aAAa5E,MAAM,OAAOrH,cAAc,cACxD,gBAAC,EAAArG,KAAD,CAAMuS,WAAW,QAAQ7b,MAAM,aAC7B0a,EACA,2BACA,2GAML,gBAAC,EAAAoB,IAAD,CACC9E,MAAM,OACN+E,QAAS,CAAEsJ,WAAY,QAASgS,OAAQ,SACxC5nB,OAAO,MACPoM,WAAW,QACXlM,cAAc,cAEd,gBAAC,EAAAmM,IAAD,CAAK2H,oBAAkB,GACtB,gBAAC,EAAAkY,MAAD,CAAOn4B,MAAOmhC,EAAc/1B,MAAO61B,EAAc5oB,WAAW,QAAQiN,SAAUA,MAIhF,gBAAC,EAAA5M,QAAD,CAASmb,OAAO,YC0GnB,GArL0B,SAAC,GAIiB,IAH3C3c,EAG2C,EAH3CA,EACAxa,EAE2C,EAF3CA,MACAqhC,EAC2C,EAD3CA,iBAEMrrB,GAAQ3Q,EAAAA,EAAAA,UAAQ,kBAAMmV,EAAE,oBAAqB,sBAAqB,CAACA,IACnEkqB,GAAkBr/B,EAAAA,EAAAA,UACvB,kBAAMmV,EAAE,sBAAuB,mDAC/B,CAACA,IAMF,GAAwD1L,EAAAA,EAAAA,UACxB,SAA/B9O,EAAMugC,sBADP,eAA6BoE,GAA7B,WAGA,GAAkD71B,EAAAA,EAAAA,UAAqC,SAA5B9O,EAAMwgC,mBAAjE,eAAOA,EAAP,KAA0BoE,EAA1B,KACA,GAAsD91B,EAAAA,EAAAA,UAAS9O,EAAM6kC,qBAArE,eAAOA,EAAP,KAA4BC,EAA5B,MAEAx2B,EAAAA,EAAAA,YAAU,WACTs2B,EAAiD,SAA5B5kC,EAAMwgC,qBACzB,CAACxgC,EAAMwgC,qBACVlyB,EAAAA,EAAAA,YAAU,WACTw2B,EAAuB9kC,EAAM6kC,uBAC3B,CAAC7kC,EAAM6kC,uBACVv2B,EAAAA,EAAAA,YAAU,WACTq2B,EAAuD,SAA/B3kC,EAAMugC,wBAC5B,CAACvgC,EAAMugC,uBAEV,IAAMwE,GAA2B1/B,EAAAA,EAAAA,UAChC,kBAAOw/B,EAAsB,GAAKrqB,EAAE,kBAAmB,gBACvD,CAACA,EAAGqqB,IAECG,GAA2B/1B,EAAAA,EAAAA,cAAY,WAC5C21B,GAAsBpE,GACtB,IAAMoB,EAAa,CAClB3hC,GAAID,EAAM+/B,WACV7xB,IAAK,8BACLQ,MAAO8xB,EAAoB,QAAU,QAEtCa,EAAiBO,KACf,CAAC5hC,EAAM+/B,WAAYsB,EAAkBb,IAElC2C,GAAe99B,EAAAA,EAAAA,UACpB,kBAAMm7B,IAAsBjhC,EAAuB6jC,KAAKyB,GAAuB,MAC/E,CAACA,EAAqBrE,IAGjByE,GAA8Bh2B,EAAAA,EAAAA,cACnC,SAACkY,GACA2d,EAAuB3d,EAAGja,OAAOwB,OACjC,IAAMkzB,EAAa,CAClB3hC,GAAID,EAAM+/B,WACV7xB,IAAK,gCACLQ,MAAOyY,EAAGja,OAAOwB,OAGlB2yB,EAAiBO,KAElB,CAACP,EAAkBrhC,EAAM+/B,aAgC1B,OACC,gCACC,gBAAC,EAAAzwB,UAAD,CACC4T,SAAS,yBACTpM,MAAM,OACN+E,QAAS,CAAEC,IAAK,SAChBvM,OAAO,MACPoM,WAAW,QACXlM,cAAc,cAEd,gBAAC,EAAAuM,QAAD,CAASmJ,WAAW,SAASrO,MAAM,QAClC,gBAAC,EAAA1N,KAAD,CAAM2lB,OAAO,QAAQ/Y,KAGvB,gBAAC,EAAA4F,IAAD,CACC9E,MAAM,OACN6E,WAAW,QACXlM,cAAc,aACdoM,QAAS,CAAEsJ,WAAY,QAASgS,OAAQ,UAExC,gBAAC,EAAA8C,SAAD,CACC32B,MAAOohC,EACPh2B,MAAO8xB,EACPvkB,QAAS+oB,KAGX,gBAAC,EAAAppB,IAAD,CACC9E,MAAM,OACN+E,QAAS,CAAEsJ,WAAY,QAASgS,OAAQ,SACxC5nB,OAAO,MACPoM,WAAW,QACXlM,cAAc,cAEd,gBAAC,EAAAmM,IAAD,CAAK9E,MAAM,MAAM+E,QAAS,CAAE5O,MAAO,UAClC,gBAAC,EAAAwuB,MAAD,CACCn4B,MAAOyhC,EACPr2B,MAAOm2B,EACPlpB,WAAW,QACXO,UAAWskB,EACX8C,SAAUH,EACVva,SAAU,SACTzB,GADS,OAIC8d,EAA4B9d,QAuC1C,gBAAC,EAAAnL,QAAD,CAASmb,OAAO,Y,ykBCpJZ,IAAM+N,GAAmB,SAAC,GAAiE,UAA/DC,EAA+D,EAA/DA,kBAAmB3qB,EAA4C,EAA5CA,EACrD,GAAwB1L,EAAAA,EAAAA,UAAe,IAAvC,eAAOwI,EAAP,KAAasmB,EAAb,KACA,GAAoD9uB,EAAAA,EAAAA,UAAS,KAA7D,eAAOg1B,EAAP,KAA2BC,EAA3B,KACA,GAAoDj1B,EAAAA,EAAAA,UAAS,GAA7D,eAAOmwB,EAAP,KAA2BE,EAA3B,KACA,GAAoCrwB,EAAAA,EAAAA,UAA0Bq2B,GAA9D,eAAOv6B,EAAP,KAAmBs0B,EAAnB,KACA,GAAkCpwB,EAAAA,EAAAA,UAA0B,IAA5D,eAAOs2B,EAAP,KAAkBC,EAAlB,KAEMC,EAAgBn4B,KAAkB7C,MAAMi7B,4BACxChP,GAAStnB,EAAAA,EAAAA,cACd,SAACu2B,GACA,IAAQxkC,EAA6CwkC,EAA7CxkC,KAAM4gC,EAAuC4D,EAAvC5D,WAAYjqB,EAA2B6tB,EAA3B7tB,WAAYC,EAAe4tB,EAAf5tB,WACtCgmB,GAAQ,SAAC6H,GAAc,gBAChBC,EAAU,WAAGljC,EAAAA,EAAAA,MAClBijC,MAAAA,GADsB,UACtBA,EAAWhuB,gBADW,aACtB,EAAqBC,YACrB,SAACvX,GAAD,OAAUA,EAAKF,MAAO2hC,MAAAA,OAAZ,EAAYA,EAAY3hC,cAFnB,aAAG,EAGhBuG,MACGkR,OACiB,IAAfkqB,EAAP,mBAEM6D,EAAUhuB,gBAFhB,aAEM,EAAoBC,YAF1B,cAGIkqB,EAAW3hC,GAAK,CAChBA,GAAI2hC,EAAW3hC,GACfuG,MAAO,SAAKk/B,GAAP,cAAoB9D,EAAW1zB,IAAM0zB,EAAWlzB,WALzD,UAQG+2B,EAAUhuB,gBARb,aAQG,EAAoBC,WAClBiuB,GAAgB,UAAAF,EAAUhuB,gBAAV,eAAoBG,aAAcA,EAClDguB,GAAgB,UAAAH,EAAUhuB,gBAAV,eAAoBE,aAAcA,EACxD,gBACI8tB,GADJ,cAGEzkC,EAAO,CACP2W,WAAYiuB,EACZhuB,WAAY+tB,EACZjuB,WAAAA,UAKJ,CAACkmB,IAGIiI,GAAmB52B,EAAAA,EAAAA,cAAY,SAACu2B,GACrC,IAAQxkC,EAAqBwkC,EAArBxkC,KAAM4gC,EAAe4D,EAAf5D,WACdhE,GAAQ,SAAC6H,GAAc,cAChBC,EAAU,WAAGljC,EAAAA,EAAAA,MAClBijC,MAAAA,GADsB,UACtBA,EAAWhuB,gBADW,aACtB,EAAqBG,YACrB,SAACzX,GAAD,OAAUA,EAAKqG,MAAMqR,aAAc+pB,MAAAA,OAAzB,EAAyBA,EAAY3hC,cAFhC,aAAG,EAGhBuG,MACGs/B,OACiB,IAAflE,EAAP,mBAEM6D,EAAUhuB,gBAFhB,aAEM,EAAoBG,YAF1B,cAGIgqB,EAAW3hC,GAAK,CAChBuG,MAAO,SAAKk/B,GAAP,cAAoB9D,EAAW1zB,IAAM0zB,EAAWlzB,gBAGtDrE,EACJ,gBACIo7B,GADJ,cAGEzkC,EAAO,CACP4W,WAAYkuB,EACZnuB,WAAU,UAAE8tB,EAAUhuB,gBAAZ,aAAE,EAAoBE,WAChCD,WAAU,UAAE+tB,EAAUhuB,gBAAZ,aAAE,EAAoBC,mBAIjC,IACG2nB,GAAmBpwB,EAAAA,EAAAA,cACxB,SAAC2I,GAKA2e,EAJY,CACXv1B,KAAM,WACN4W,WAAAA,MAIF,CAAC2e,IAGI8K,GAAmBpyB,EAAAA,EAAAA,cACxB,SAAC2yB,GACA,IAAM4D,EAAM,CACXxkC,KAAM,WACN4gC,WAAY,CAAE3hC,GAAI2hC,EAAW3hC,GAAIiO,IAAK0zB,EAAW1zB,IAAKQ,MAAOkzB,EAAWlzB,QAE5C,iBAAlBkzB,EAAW3hC,GACrBs2B,EAAOiP,GAC4B,iBAAlB5D,EAAW3hC,IAC5B4lC,EAAiBL,GAElB,IAAMO,GAAqBC,EAAAA,EAAAA,aAAWrxB,EAAAA,EAAAA,SAAQitB,EAAW1zB,IAAK,aAAc,KAC5EgxB,GACC/rB,EAAAA,EAAAA,KAAIvI,GAAY,SAACzK,GAAD,OACfA,EAAK4/B,aAAe6B,EAAW3hC,GAA/B,SACQE,GADR,cACe4lC,EAAqBnE,EAAWlzB,QAC5CvO,QAIN,CAACo2B,EAAQ3rB,EAAYi7B,IAGhBzG,GAAmBnwB,EAAAA,EAAAA,cACxB,SAAC0I,GAKA4e,EAJY,CACXv1B,KAAM,WACN2W,WAAAA,MAIF,CAAC4e,IAGIhF,GAAiBuM,EAAAA,EAAAA,gBAEvBxvB,EAAAA,EAAAA,YAAU,WACTnE,GAAAA,WAEEmC,aAAa9O,EAFf2M,CAGE,YAHF,mEAMEQ,MAAK,SAAClC,GACN,GAAIA,EAAIw9B,IAAK,CACZ,IAAMC,GAAgC/yB,EAAAA,EAAAA,KAAI1K,EAAIw9B,KAAK,SAAC9lC,GAAD,MAAW,CAC7D8Y,MAAO9Y,EAAK2Y,EACZ7L,MAAO9M,EAAK8M,UAEPk5B,GAAgBhkC,EAAAA,EAAAA,QACrB+jC,GACA,SAACE,EAA2BjmC,GAC3B,IAAM0gC,GAAQl9B,EAAAA,EAAAA,WAAUyiC,EAAQ,CAAEntB,MAAO9Y,EAAK8Y,QAU9C,OATe,IAAX4nB,EACHuF,EAAOnxB,KAAK,CAAEgE,MAAO9Y,EAAK8Y,MAAOhM,MAAO9M,EAAK8M,SAE7Cm5B,EAAOnxB,KAAK,CACXgE,MAAO9Y,EAAK8Y,MACZhM,MAAO,GAAF,OAAK9M,EAAK8M,MAAV,gBAAuBm5B,EAAOvF,GAAO5zB,SAE3Cm5B,EAAOC,OAAOxF,EAAO,IAEfuF,IAER,IAEKA,GAASjzB,EAAAA,EAAAA,KAAIgzB,GAAe,SAAChmC,EAAuB0gC,GAAxB,UAAC,MAC/B1gC,GAD8B,IAEjCF,GAAI4gC,EAAMC,gBAEXuE,EAAae,SAGd,KAEH93B,EAAAA,EAAAA,YAAU,WACT4wB,EAAciG,GACdvH,EAAQ,MACN,CAACuH,IAEJ,IAAMprB,GAAS9K,EAAAA,EAAAA,cAAY,WAAM,YAE/Bk2B,EAAkBvf,SAChB,UAAAtO,EAAKG,gBAAL,mBAAeG,kBAAf,eAA2BgO,SAAU,KACrCtO,MAAAA,GAAA,UAAAA,EAAMG,gBAAN,mBAAgBE,kBAAhB,eAA4BiO,SAAU,GACxC0f,EAEA/T,EAAe,CACdrjB,IAAK,MACLyG,SAAS,EACT3T,KAAM,QACNsC,MAAOkX,EACN,6CACA,qFAEDujB,gBAAiB,IACjBC,YAAY,KAId3mB,GAAaC,GACX3M,MAAK,WACL4mB,EAAe,CACdrjB,IAAK,MACLyG,SAAS,EACT3T,KAAM,OACNsC,MAAOkX,EAAE,kCAAmC,yBAC5CujB,gBAAiB,IACjBC,YAAY,OARf,OAWQ,WACNzM,EAAe,CACdrjB,IAAK,MACLyG,SAAS,EACT3T,KAAM,QACNsC,MAAOkX,EAAE,iBAAkB,0CAC3BujB,gBAAiB,IACjBC,YAAY,OAGfJ,EAAQ,OACN,CAACuH,EAAkBvf,OAAQtO,EAAMguB,EAAe/T,EAAgB/W,IAE7DS,GAAWhM,EAAAA,EAAAA,cAAY,kBAAM2uB,EAAQ,MAAK,IAC1C5nB,GAAgB3Q,EAAAA,EAAAA,UAAQ,kBAAMmV,EAAE,iBAAkB,cAAa,CAACA,IAChEU,GAAU7V,EAAAA,EAAAA,UAAQ,mBAAOqb,EAAAA,EAAAA,SAAQpJ,KAAO,CAACA,IAC/C,OACC,gCACC,gBAAC,GAAD,CAAgByC,OAAQA,EAAQkB,SAAUA,EAAUC,QAASA,EAASlF,MAAOA,IAC7E,gBAAC,EAAA1G,UAAD,CAAWqM,WAAW,QAAQE,QAAS,CAAEuS,IAAK,SAAW7e,OAAO,QAChE,gBAAC,EAAAD,UAAD,CACCqM,WAAW,QACXlM,cAAc,aACdoM,QAAS,CAAEC,IAAK,SAChBpM,MAAO,CAAEqR,SAAU,SAEnB,gBAAC,GAAD,CACCvG,EAAGA,EACH5P,WAAYA,EACZs0B,cAAeA,EACfD,mBAAoBA,EACpBE,sBAAuBA,EACvBC,iBAAkBA,EAClBC,iBAAkBA,KAElB,UAAAz0B,EAAWq0B,UAAX,eAAgCj+B,QAASwZ,EAAE,gBAAiB,YAC5D,gCACC,gBAAC,GAAD,CACCA,EAAGA,EACHxa,MAAO4K,EAAW,GAClBy2B,iBAAkBA,IAEnB,gBAAC,GAAD,CACC7mB,EAAGA,EACHxa,MAAO4K,EAAWq0B,GAClB4C,mBAAmB,EACnBR,iBAAkBA,IAEnB,gBAAC,GAAD,CACC7mB,EAAGA,EACHxa,MAAO4K,EAAWq0B,GAClB1N,eAAgBA,IAEjB,gBAAC,GAAD,CACC/W,EAAGA,EACHxa,MAAOolC,EACPtB,mBAAoBA,EACpBC,sBAAuBA,MAIzB,UAAAn5B,EAAWq0B,UAAX,eAAgCj+B,QAASwZ,EAAE,gBAAiB,YAC5D,gCACC,gBAAC,GAAD,CACCA,EAAGA,EACHxa,MAAO4K,EAAWq0B,GAClBoC,iBAAkBA,IAEnB,gBAAC,GAAD,CACC7mB,EAAGA,EACHxa,MAAO4K,EAAWq0B,GAClB4C,mBAAmB,EACnBR,iBAAkBA,IAEnB,gBAAC,GAAD,CACC7mB,EAAGA,EACHxa,MAAO4K,EAAWq0B,GAClBoC,iBAAkBA,MAIpBj7B,EAAAA,EAAAA,UAAS,CAAC,OAAQ,OAAV,UAAkBwE,EAAWq0B,UAA7B,aAAkB,EAAgCj+B,OAC1D,oCCvRL,SA/BuB,WACtB,IAAMslC,EAAkB35B,KACxB,GAAY4N,EAAAA,EAAAA,KAALC,GAAP,eACM2qB,GAAoB9/B,EAAAA,EAAAA,UAAQ,WACjC,IAAMkhC,GAAOpzB,EAAAA,EAAAA,KAAImzB,MAAAA,OAAD,EAACA,EAAiB17B,WAAW6M,UAAU,SAACtX,EAAM0gC,GAAP,MAAkB,CACxE5gC,GAAkB,YAAdE,EAAKU,KAAqB,KAAOggC,EAAQ,GAAGC,WAChD9/B,KAAoB,YAAdb,EAAKU,KAAqB2Z,EAAE,gBAAiB,WAAaA,EAAE,gBAAiB,WACnFulB,WAAY5/B,EAAK2K,OAAO07B,sBAAwB,GAChDxG,YAAa7/B,EAAK2K,OAAOkN,uBAAyB,GAClD4nB,aAAcz/B,EAAK2K,OAAOgN,wBAA0B,GACpDmoB,YAAa9/B,EAAK2K,OAAOiN,uBAAyB,GAClD0rB,gBAAiBtjC,EAAK2K,OAAO27B,uBAAyB,GACtDvG,eAAgB//B,EAAK2K,OAAOoN,0BAA4B,GACxDioB,eAAgBhgC,EAAK2K,OAAOqN,0BAA4B,GACxDioB,eAAgBjgC,EAAK2K,OAAOmN,0BAA4B,GACxDooB,WAAYlgC,EAAK2K,OAAO47B,sBAAwB,GAChDpG,eAAgBngC,EAAK2K,OAAO67B,0BAA4B,GACxDpG,qBAAsBpgC,EAAK2K,OAAOyN,gCAAkC,GACpEioB,kBAAmBrgC,EAAK2K,OAAOwN,6BAA+B,GAC9DusB,oBAAqB1kC,EAAK2K,OAAO87B,+BAAiC,OAE7DR,EAAS,CAACG,EAAKA,EAAK3gB,OAAS,IAAvB,gBAA8B2gB,IAE1C,OADAH,EAAOS,MACAT,IACL,CAACE,EAAiB9rB,IAErB,OAAO2qB,EAAkBvf,OAAS,EACjC,gBAACsf,GAAD,CAAkBC,kBAAmBA,EAAmB3qB,EAAGA,IACxD,MCjBL,IAAMssB,GAAgB,CACrB5jC,MAAOzF,EACPwC,GAAIxC,EACJ4E,IAAK5E,GAEAspC,GAAqB,SAACvsB,GAAD,MAAmC,CAC7Dva,GAAIxC,EACJ4E,IAAK5E,EACLyF,MAAOzF,EACP0F,UAAW,qBACXC,SAAU,GACVC,SAAS,EACTC,MAAOkX,EAAE,eAAgB,YACzB9a,MAAO,CACNC,MAAM,KAGFqnC,GAAuB,CAC5B/mC,GAAIxC,EACJ4E,IAAK5E,EACLyF,MAAOzF,EACP0F,UxB/ByD,SAAC,GAAiB,IAAf2qB,EAAe,EAAfA,SACtDmZ,EAAgB7mC,GAAY,SAAC8E,GAAD,OAAOA,EAAE5D,MAAMM,YAC3C2S,GAAUS,EAAAA,GAAAA,MACVnP,GAAWsO,EAAAA,GAAAA,MACXnU,GAAQqF,EAAAA,EAAAA,UACb,kBACC4hC,EAAc9zB,KAAI,SAACvP,GAAD,MAAW,CAC5B3D,GAAI2D,EAAKV,MACTI,MAAOM,EAAKN,MACZpC,KAAM0C,EAAK1C,KACXuqB,OAAQ5lB,EAAS2F,WAAT,WAA0B/N,EAA1B,YAA6CmG,EAAKV,QAA+B,KAApB2C,EAAShE,OAC9EqlC,aACCrhC,EAAS2F,WAAT,WAA0B/N,EAA1B,YAA6CmG,EAAKV,QAA+B,KAApB2C,EAAShE,OACvEoa,QAAS,SAAC7P,GACTA,EAAE0iB,kBACFva,EAAQU,KAAR,WAAiBxX,EAAjB,YAAoCmG,EAAKV,SAE1ClD,OAAOmT,EAAAA,EAAAA,KAAIvP,EAAK0Z,aAAa,SAACnd,GAAD,UAAC,MAC1BA,GADyB,IAE5BsrB,OAAQ5lB,EAAShE,SAAT,mBAAgC1B,EAAKF,IAC7CinC,aAAcrhC,EAAShE,SAAT,mBAAgC1B,EAAKF,IACnDgc,QAAS,SAAC7P,GACTA,EAAE0iB,kBACFva,EAAQI,QAAR,WAAoBlX,EAApB,YAAuCmG,EAAKV,MAA5C,oBAA6D/C,EAAKF,iBAItE,CAACsU,EAAS1O,EAAS2F,SAAU3F,EAAShE,OAAQolC,IAEzCE,GAAiB9hC,EAAAA,EAAAA,UACtB,kBACC4hC,EAAc9zB,KAAI,SAACuT,GAAD,OACjB,gBAAC,EAAA8B,QAAD,CAASllB,MAAOojB,EAAEpjB,MAAOkmB,UAAU,QAAQtb,IAAKwY,EAAEzmB,IACjD,gBAAC,EAAAoiB,WAAD,CACCnhB,KAAMwlB,EAAExlB,KACR+a,QAAS,kBAAY1H,EAAQU,KAAR,WAAiBxX,EAAjB,YAAoCipB,EAAExjB,SAC3D+b,KAAK,QACLwK,WAAWrV,EAAAA,EAAAA,YAAWvO,EAAS2F,SAAV,WAAwB/N,EAAxB,YAA2CipB,EAAExjB,gBAItE,CAACqR,EAAS1O,EAAS2F,SAAUy7B,IAE9B,OAAOnZ,EAAW,gBAAC,EAAAU,UAAD,CAAWxuB,MAAOA,IAAY,gCAAGmnC,KwBT9CC,GAAkB,CACvBnnC,GAAIxC,EACJ4E,IAAK5E,EACLyF,MAAOzF,EACP0F,UCtCkC,WAClC,IAAM8jC,EAAgB7mC,GAAY,SAAC8E,GAAD,OAAOA,EAAE5D,MAAMM,YAC3CP,GAASgE,EAAAA,EAAAA,UACd,kBACC8N,EAAAA,EAAAA,KAAI8zB,GAAe,SAACrjC,GAAD,OAClB,gBAAC,MAAD,CAAOsK,IAAKtK,EAAKV,MAAOke,OAAK,EAACvM,KAAI,WAAMpX,EAAN,YAAyBmG,EAAKV,QAC/D,gBAAC,GAAD,CAAoB6O,IAAKnO,EAAKvB,KAC7B,gBAACuB,EAAKT,UAAN,aAIJ,CAAC8jC,IAEF,OACC,gBAAC,MAAD,KACE5lC,EACD,gBAAC,MAAD,CAAUigB,KAAI,WAAM7jB,GAAmB2jB,OAAK,EAACC,QAAM,EAACnK,GAAE,WAAMzZ,EAAN,iBDwBnD4pC,GAAsB,SAAC7sB,GAAD,MAAiC,CAC5Dva,GAAI,UACJiD,MAAO,UACPb,IAAK7E,EACL2F,UAAWmkC,GACXpmC,KAAM,qBACNoC,MAAOkX,EAAE,2BAA4B,WACrCpX,SAAU,EACVka,YAAa8Y,GAAoB5b,KAG5B+sB,GAAuB,SAAC/sB,GAAD,MAAiC,CAC7Dva,GAAI,WACJiD,MAAO,WACPb,IAAK7E,EACL2F,UAAWqkC,GACXtmC,KAAM,gBACNoC,MAAOkX,EAAE,oBAAqB,YAC9BpX,SAAU,IAGLqkC,GAAc,CACnBvkC,MAAOvF,EACPsC,GAAItC,EACJ0E,IAAK1E,GAEA+pC,GAAmB,SAACltB,GAAD,MAAmC,CAC3Dva,GAAItC,EACJ0E,IAAK1E,EACLuF,MAAOvF,EACPwF,UAAW,mBACXC,SAAU,GACVC,SAAS,EACTC,MAAOkX,EAAE,aAAc,UACvB9a,MAAO,CACNC,MAAM,KAGFgoC,GAAgB,CACrB1nC,GAAItC,EACJ0E,IAAK1E,EACLuF,MAAOvF,EACPwF,UzBnBgC,WAAM,MAChC0gB,EAAczjB,GAAY,SAAC8E,GAAD,OAAOA,EAAE5D,MAAMO,UACzCR,GAASgE,EAAAA,EAAAA,UACd,kBACC8N,EAAAA,EAAAA,KAAI0Q,GAAa,SAACjgB,GAAD,OAChB,gBAAC,MAAD,CAAOsK,IAAG,WAAMtK,EAAKV,OAAS2R,KAAI,WAAMlX,EAAN,YAAuBiG,EAAKV,QAC7D,gBAAC,GAAD,CAAoB6O,IAAKnO,EAAKvB,KAC7B,gBAACuB,EAAKT,UAAN,CACCoyB,SAAUA,GACVE,cAAeA,GACfD,iBAAkBA,YAKvB,CAAC3R,IAEF,OACC,gCAOC,gBAAC,MAAD,KACExiB,EACD,gBAAC,MAAD,CACC+f,OAAK,EACLC,QAAM,EACNC,KAAI,WAAM3jB,GACVuZ,GAAE,WAAMvZ,EAAN,sBAAuBkmB,EAAY,UAAnC,aAAuB,EAAgB3gB,ayBTxC0kC,GAAoB,CACzB3nC,GAAI,WACJoC,IAAK7E,EACL2F,UV4GoB,WAAM,UAC1B,GAAYoX,EAAAA,EAAAA,KAALC,GAAP,eACMqtB,GAASxiC,EAAAA,EAAAA,UAAQ,kBA1FN,SAACmV,GAAD,MAA2D,CAC5E,CAAElX,MAAOkX,EAAE,0BAA2B,kBAAmB9L,MAAO,iBAChE,CAAEpL,MAAOkX,EAAE,qBAAsB,aAAc9L,MAAO,aACtD,CAAEpL,MAAOkX,EAAE,4BAA6B,oBAAqB9L,MAAO,mBACpE,CAAEpL,MAAOkX,EAAE,iBAAkB,SAAU9L,MAAO,UAsFjBo5B,CAAUttB,KAAI,CAACA,IACtCutB,EAAU3iC,IACV7E,GAAO8E,EAAAA,EAAAA,UACZ,kBAAMnF,EAAAA,EAAAA,QAAO6nC,GAAS,SAAC1lC,GAAD,QAAWA,EAAIC,eAErC,CAACylC,IAEIC,GAAW3iC,EAAAA,EAAAA,UAChB,kBACC8N,EAAAA,EAAAA,KAAI5S,GAAM,SAAC8B,GAAD,MAAU,CACnBiB,MAAOjB,EAAIlB,QACXuN,MAAOrM,EAAIxB,WAEb,CAACN,IAEIsM,EAAOF,KACb,GAA0B4lB,EAAAA,EAAAA,YAAWzV,GAAS0hB,IAA9C,eAAOyJ,EAAP,KAAcxV,EAAd,KACA,GAA8B3jB,EAAAA,EAAAA,WAAS,GAAvC,eAAOkwB,EAAP,KAAgBkJ,EAAhB,KACA,GAA0Bp5B,EAAAA,EAAAA,UAAS,GAAnC,eAAOq5B,EAAP,KAAcC,EAAd,KAEMC,GAAcp5B,EAAAA,EAAAA,cACnB,SAACkY,GAAD,aACCsL,EAAS,CACRzxB,KAAM,aACN6wB,QAAS,CACRxvB,IAAK8kB,EACLpmB,QAAO,WAAEyB,EAAAA,EAAAA,MAAKjC,EAAM,CAAC,OAAQ4mB,WAAtB,aAAE,EAA0BpmB,aAGtC,CAACR,IAGI+nC,GAAgBr5B,EAAAA,EAAAA,cAAY,SAACkY,GAClC+gB,GAAW,GACXzV,EAAS,CAAEzxB,KAAM,eAAgB6wB,QAAS1K,MACxC,IAEGohB,GAAgBt5B,EAAAA,EAAAA,cAAY,SAACkY,GAElCA,EAAGja,OAAOwC,MAAMH,OAAS,OAEzB4X,EAAGja,OAAOwC,MAAMH,OAAhB,UAA4B,GAAK4X,EAAGja,OAAOs7B,aAA3C,MACIrhB,EAAGja,OAAOwB,MAAMkX,QAAU,MAC7BwiB,EAASjhB,EAAGja,OAAOwB,MAAMkX,QACzB6M,EAAS,CAAEzxB,KAAM,cAAe6wB,QAAS1K,EAAGja,OAAOwB,WAElD,IAEG+5B,GAAmBx5B,EAAAA,EAAAA,cACxB,SAACkY,GAAO,MAGe,EAFK,OAAvB,UAAA8gB,EAAMtJ,aAAN,eAAaC,OAAesJ,GAAW,GACtCA,GAAW,GACG,IAAf/gB,EAAGuhB,SACwB,KAA1B,UAAAT,EAAMxtB,eAAN,eAAemL,SAClBsiB,GAAW,KAId,CAACA,EAAYD,IAGRU,EAAahyB,KAEb4a,GAAiBtf,EAAAA,EAAAA,YAAWuf,EAAAA,wBAE5BoX,GAAiB35B,EAAAA,EAAAA,cAAY,WAClC,IvElQuBwL,EAElB5S,EuEgQCghC,GvElQiBpuB,EuEkQKwtB,GvEhQvBpgC,EADWX,EAAYY,WACJX,QAAQ2hC,UAAUC,aAA3B,OAA6CtuB,GAA7C,IAAsDgkB,MAAOC,EAAAA,EAAAA,UAE5E12B,QAAQC,KAAK,YAAaJ,EAAS,oBAE7BA,GuE6PN0pB,EACCsX,EACG,CAAE7nC,KAAM,UAAWsC,MAAOkX,EAAE,mBAAoB,gCAChD,CACAxZ,KAAM,QACNsC,MAAOkX,EAAE,iBAAkB,oDAG/BmuB,MACE,CAACV,EAAO1W,EAAgB/W,EAAGmuB,KAE9Br6B,EAAAA,EAAAA,YAAU,WAAM,MACfmkB,EAAS,CACRzxB,KAAM,WACN6wB,QAAS,CAAE5xB,GAAI4M,EAAK5M,GAAIY,KAAI,UAAEgM,EAAK5B,mBAAP,QAAsB4B,EAAKhM,UAEtD,CAACgM,IAEJ,IAAMm8B,GAAe3jC,EAAAA,EAAAA,UACpB,8BACC,UAAC4iC,MAAAA,GAAD,UAACA,EAAOxtB,eAAR,aAAC,EAAgBmL,cAAjB,QAA2B,IAAM,GAA4B,OAAvB,UAAAqiB,EAAMtJ,aAAN,eAAaC,QAAsC,OAArB,UAAAqJ,EAAMtJ,aAAN,eAAat8B,OAClF,CAAC4lC,EAAMxtB,QAAP,UAAgBwtB,EAAMtJ,aAAtB,aAAgB,EAAaC,MAA7B,UAAoCqJ,EAAMtJ,aAA1C,aAAoC,EAAat8B,MAG5CwmB,GAAe5Z,EAAAA,EAAAA,cACpB,SAAC1E,GAAD,OAAW,gBAACw0B,IAAD,WAAmBx0B,EAAnB,CAA0By0B,QAASA,OAC9C,CAACA,IAGF,OACC,gBAAC,EAAA1vB,UAAD,CAAWuM,QAAS,CAAEC,IAAK,SAAWrM,cAAc,gBACnD,gBAAC,EAAAH,UAAD,CAAWoM,YAAY,aAAanM,OAAO,OAC1C,gBAAC2uB,GAAD,CAAezuB,cAAc,aAAaD,eAAe,cACxD,gBAAC,EAAApG,KAAD,CAAM2lB,OAAO,OAAO9P,KAAK,QACvBzE,EAAE,4BAA6B,qCAEjC,gBAAC6jB,GAAD,CAAgBtd,SAAS,aAAaud,WAAW,QAC/C9jB,EACA,uBACA,0KAGF,gBAAC6jB,GAAD,CAAgBtd,SAAS,cACvBvG,EACA,gBACA,wHAKH,gBAAC2jB,GAAD,CAAiB3uB,eAAe,WAAWC,cAAc,YACxD,gBAAC,EAAAsH,OAAD,CACCzT,MAAOkX,EAAE,gBAAiB,QAC1ByB,QAAS2sB,EACT1sB,SAAU8sB,MAIb,gBAAC,EAAA15B,UAAD,CACCuM,QAAS,CAAEsb,OAAQ,UACnB5nB,OAAO,MACPE,cAAc,gBACdD,eAAe,aACfkM,YAAY,cAEZ,gBAAC,EAAApM,UAAD,CAAWG,cAAc,gBAAgBD,eAAe,aAAaiZ,SAAS,SAC7E,gBAAC,EAAA7M,IAAD,CAAKC,QAAS,CAAE8O,SAAU,UACzB,gBAAC,EAAAvhB,KAAD,CAAM2lB,OAAO,OAAO9P,KAAK,QAAzB,WAID,gBAAC,EAAAyJ,OAAD,CACCplB,MAAOkX,EAAE,2BAA4B,mBACrCxa,MAAOgoC,EACPpf,SAAUyf,EACVxf,aAAciW,MAGhB,gBAAC,EAAAxvB,UAAD,CAAWG,cAAc,gBAAgBD,eAAe,aAAaiZ,SAAS,SAC7E,gBAAC,EAAA7M,IAAD,CAAKC,QAAS,CAAE8O,SAAU,UACzB,gBAAC,EAAAvhB,KAAD,CAAM2lB,OAAO,OAAO9P,KAAK,QAAzB,UAID,gBAAC,EAAAyJ,OAAD,CACCplB,MAAOkX,EAAE,0BAA2B,kBACpC8K,WAAW9iB,EAAAA,EAAAA,MAAKqlC,EAAQ,CAAC,QAAD,UAAUI,EAAMtJ,aAAhB,aAAU,EAAaC,QAC/C5+B,MAAO6nC,EACPjf,SAAU0f,EACVzf,aAAcA,EACdogB,UAAU,MAIb,gBAAC7K,GAAD,CAAa5uB,eAAe,YAC3B,gBAACyuB,GAAD,CACCvvB,MAAOu5B,EAAMxtB,QACbyuB,QAAST,EACT7f,SAAU2f,EACVxgB,YAAavN,EAAE,sBAAuB,8BAEvC,gBAAC,EAAApR,KAAD,CAAM6V,KAAK,SAASnf,MAAM,aACxBqoC,EADF,WUrRHjlC,MAAO,YAEFimC,GAAmB,CACxBlpC,GAAI,WACJoC,IAAK7E,EACL2F,UEpGoB,kBAAM,kCFqG1BD,MAAO,YAEFkmC,GAAiB,CACtBnpC,GAAI,aACJkD,UGtG2B,kBAC3B,gBAAC,EAAAkf,WAAD,CACCnhB,KAAK,OACL+d,KAAK,QACLhD,QAAS,kCACRpO,GAAiB/F,WAAWgG,iCADpB,aACR,EAAuDgI,SAAStY,EAAhE,CAA8E,aAAc,CAC3FwY,MAAO,kBHiGV1S,MAAO,YACPjB,IAAK7E,EACL4F,SAAU,KIhGLimC,GAA2B,WAChC,OAAY9uB,EAAAA,EAAAA,KAALC,GAAP,eAIA,OAHAlM,EAAAA,EAAAA,YAAU,YJgGyB,SAACkM,GACpCpa,EAAAA,UACCwC,EAAAA,EAAAA,KAAQ,SAACsC,GASQ,MARZmB,MACHnB,EAAE7D,QAAF,UACE5D,EAAkBqpC,IAEpB5hC,EAAE5D,MAAMC,WAAa,CAACwlC,GAAmBvsB,IACzCtV,EAAE5D,MAAME,aAAe,CAACwlC,IACxB9hC,EAAE5D,MAAMG,QAAU,CAAC2lC,MtFtHtB9nC,gBAAkBL,EAAYC,UAAYI,gBAAkBL,EAAYE,csFyHrE+F,EAAE7D,QAAF,eACE1D,EAAgB8pC,KADlB,SAEEhqC,EAAkBqpC,IAFpB,GAIA5hC,EAAE5D,MAAMC,WAAa,CAACmmC,GAAiBltB,GAAIusB,GAAmBvsB,IAC9DtV,EAAE5D,MAAME,aAAe,CAACwlC,IACxB9hC,EAAE5D,MAAMG,QAAU,CAACkmC,GAAeP,IAClCliC,EAAE5D,MAAMM,SAAW,CAACylC,GAAoB7sB,GAAI+sB,GAAqB/sB,KAElEtV,EAAE5D,MAAMI,MAAQ,CAACkmC,IACb3S,mBACH/vB,EAAE5D,MAAMI,MAAMuT,KAAKk0B,IACnBjkC,EAAE5D,MAAMQ,sBAAsBmT,KAAKm0B,SIvHrCE,CAAqB9uB,KACnB,CAACA,IACG,MAGF+uB,GAA4C,SAAC,GAAoB,IAAlBv3B,EAAkB,EAAlBA,YAOpD,OANA7D,GAAU,CACTJ,UAAW,GACXD,0BAA2B,CAC1B0M,EAAG,SAACnY,GAAD,OAAS2P,EAAYM,WAAW,CAAEzR,KAAMwB,IAAOmY,MAG7C,MA2BR,SAxByB,WACxB,IAAMxI,GAAc3M,EAAAA,EAAAA,UAAQ,kBAAM,IAAI6tB,KAAe,IAC/ChhB,GAAe7M,EAAAA,EAAAA,UAAQ,kBAAM,IAAIyvB,KAAgB,IAOvD,OANAxmB,EAAAA,EAAAA,YAAU,W1D3BS,IAACk7B,EAA2BC,E0D6B9C,O1D7BmBD,E0D4Bdx3B,E1D5ByCy3B,E0D4B5Bv3B,E1D3BnB/H,GAAAA,WAEEM,OACAE,MAAK,WAAM,sBACX6+B,EAAaE,UAAb,wCAEGv/B,GAAAA,WAA2BvI,gBAF9B,iBAEG,EAAqC4E,aAFxC,aAEG,EAA4Ck2B,wBAF/C,kBAGGvyB,GAAAA,WAA2BvI,gBAH9B,iBAGG,EAAqC0I,aAHxC,aAGG,EAA4Cq/B,oBAH/C,iBACC,EAGGl+B,aAJJ,iBACC,SAGW,YAJZ,aACC,EAGkB,UAJnB,QAIyB,M2DHrB,SAAkByG,EAA4B3R,GCY9C,IAEAqpC,GAAAA,EAAoBhkC,QAClBgX,4BAGRgtB,EAAIhtB,0BAA4B,CAC/B,aAAcitB,GACdC,MAAOC,EACP,YAAaC,GACb,gBAAiBC,GACjB,cAAeC,GACfC,OAAQC,EACR,mBAAoBC,GACpB/R,OAAQgS,GACR,oBAAqBC,GACrB,4BACIC,IADJ,IAECzV,eAAgB,WACf,MAAM,IAAI9rB,MAAM,gDAEjBwhC,YAAa,WACZ,MAAM,IAAIxhC,MAAM,kDAGlB,6BAA8B,GAC9B,kCAAmCyhC,GAEpCd,EAAIxrB,oBAAsB,IDtC1B,IAAMusB,GAAazqC,EAAAA,EAAAA,QAAOK,GAAM,SAAC8B,GAChC,OAAIA,EAAIxB,OAASrD,KACb6E,EAAIpB,SAAoD,SjF4BhC,sCAAc4T,EAAd,yBAAcA,EAAd,uBAC7BnM,EAAAA,EAAAA,KAAIyB,GAAAA,WAA2BvI,UAAU4V,EAAAA,EAAAA,MAAK3C,EAAM,MiF7BhC+1B,CAAe,QAASvoC,EAAIpB,aAGhD+G,QAAQ2D,IACP,iBACA,yHAEDzE,EAAYY,WAAWL,WAAWkjC,GAClCnuB,QAAQquB,YAAW13B,EAAAA,EAAAA,KAAIw3B,GAAY,SAACtoC,GAAD,O7D8E7B,SAAiB0P,EAAqBG,GAE5C,OAAOoK,GAAcvK,EADPG,EAAaE,eAAeL,I6D/EE+4B,CAAQzoC,EAAK6P,O3DPvD64B,CAAStB,EAAelwB,OAAOG,OAAOtZ,EAAAA,WAAuBG,U0DkBvD,W5DyEDic,QAAQwuB,UAAUrgC,MAAK,YAC7BsgC,EAAAA,EAAAA,QAAO7uB,IAAU,SAACkC,GACbA,EAAO4sB,YAAY5sB,EAAO4sB,WAAWC,YAAY7sB,Y4DxEpD,CAACtM,EAAaE,IAEhB,gBAACsN,GAAD,KACC,gBAAC,EAAA9M,gBAAD,KACC,gBAAC,EAAAD,aAAD,KACC,gBAAC,GAAD,CAA6BT,YAAaA,EAAaE,aAAcA,GACpE,gBAACq3B,GAAD,CAASv3B,YAAaA,IACtB,gBAACq3B,GAAD,MACA,gBAAC,GAAD,Y,gBGrDN,IAAIl2B,EAAM,CACT,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,MACX,aAAc,MACd,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,gBAAiB,MACjB,aAAc,MACd,gBAAiB,MACjB,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,MACX,aAAc,MACd,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,WAAY,MACZ,cAAe,MACf,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,YAAa,MACb,eAAgB,MAChB,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,QAAS,MACT,aAAc,MACd,gBAAiB,MACjB,WAAY,MACZ,UAAW,KACX,aAAc,KACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,YAAa,MACb,eAAgB,MAChB,UAAW,KACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,gBAAiB,MACjB,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,OAIf,SAASi4B,EAAeC,GACvB,IAAIprC,EAAKqrC,EAAsBD,GAC/B,OAAOE,EAAoBtrC,GAE5B,SAASqrC,EAAsBD,GAC9B,IAAIE,EAAoBC,EAAEr4B,EAAKk4B,GAAM,CACpC,IAAIj/B,EAAI,IAAInD,MAAM,uBAAyBoiC,EAAM,KAEjD,MADAj/B,EAAErD,KAAO,mBACHqD,EAEP,OAAO+G,EAAIk4B,GAEZD,EAAe5xB,KAAO,WACrB,OAAOD,OAAOC,KAAKrG,IAEpBi4B,EAAeJ,QAAUM,EACzBnpB,EAAOspB,QAAUL,EACjBA,EAAenrC,GAAK","sources":["webpack://@zextras/carbonio-shell-ui/./src/constants/index.ts","webpack://@zextras/carbonio-shell-ui/./src/store/app/utils.tsx","webpack://@zextras/carbonio-shell-ui/./src/store/app/store.ts","webpack://@zextras/carbonio-shell-ui/./src/store/app/hooks.ts","webpack://@zextras/carbonio-shell-ui/./src/network/go-to-login.ts","webpack://@zextras/carbonio-shell-ui/./src/multimode/components.tsx","webpack://@zextras/carbonio-shell-ui/./src/multimode/functions.ts","webpack://@zextras/carbonio-shell-ui/./src/network/get-info.ts","webpack://@zextras/carbonio-shell-ui/./src/network/user-agent.ts","webpack://@zextras/carbonio-shell-ui/./types/exports/index.d.ts","webpack://@zextras/carbonio-shell-ui/./src/reporting/store.ts","webpack://@zextras/carbonio-shell-ui/./src/reporting/functions.ts","webpack://@zextras/carbonio-shell-ui/./src/network/fetch.ts","webpack://@zextras/carbonio-shell-ui/./src/network/noOp.ts","webpack://@zextras/carbonio-shell-ui/./src/store/account/store.ts","webpack://@zextras/carbonio-shell-ui/./src/store/account/normalization.ts","webpack://@zextras/carbonio-shell-ui/./src/store/account/hooks.ts","webpack://@zextras/carbonio-shell-ui/./src/store/context-bridge.ts","webpack://@zextras/carbonio-shell-ui/./src/store/integrations/composer.tsx","webpack://@zextras/carbonio-shell-ui/./src/store/integrations/store.ts","webpack://@zextras/carbonio-shell-ui/./src/boot/bootstrapper-context.ts","webpack://@zextras/carbonio-shell-ui/./src/boot/app/app-error-catcher.tsx","webpack://@zextras/carbonio-shell-ui/./src/boot/app/app-context-provider.tsx","webpack://@zextras/carbonio-shell-ui/./src/store/integrations/getters.tsx","webpack://@zextras/carbonio-shell-ui/./src/shell/shell-context.js","webpack://@zextras/carbonio-shell-ui/./src/shell/hooks.ts","webpack://@zextras/carbonio-shell-ui/./src/store/integrations/hooks.tsx","webpack://@zextras/carbonio-shell-ui/./src/history/hooks.ts","webpack://@zextras/carbonio-shell-ui/./src/shell/boards/board-context.js","webpack://@zextras/carbonio-shell-ui/./src/shell/boards/board-hooks.ts","webpack://@zextras/carbonio-shell-ui/./src/boot/app/app-loader-functions.ts","webpack://@zextras/carbonio-shell-ui/./src/ui-extras/spinner.tsx","webpack://@zextras/carbonio-shell-ui/./src/ui-extras/app-link.tsx","webpack://@zextras/carbonio-shell-ui/./src/network/edit-settings.ts","webpack://@zextras/carbonio-shell-ui/./src/ui-extras/nav-guard.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/components/settings-header.tsx","webpack://@zextras/carbonio-shell-ui/./src/boot/app/load-app.ts","webpack://@zextras/carbonio-shell-ui/./src/boot/app/app-loader-setters.ts","webpack://@zextras/carbonio-shell-ui/./src/boot/init.ts","webpack://@zextras/carbonio-shell-ui/./src/boot/theme-provider.tsx","webpack://@zextras/carbonio-shell-ui/./src/boot/app/app-loader-mounter.tsx","webpack://@zextras/carbonio-shell-ui/./src/shell/app-view-container.jsx","webpack://@zextras/carbonio-shell-ui/./src/shell/shell-context-provider.jsx","webpack://@zextras/carbonio-shell-ui/./src/search/search-store.tsx","webpack://@zextras/carbonio-shell-ui/./src/search/search-bar.tsx","webpack://@zextras/carbonio-shell-ui/./src/shell/creation-button.tsx","webpack://@zextras/carbonio-shell-ui/./src/shell/shell-header.tsx","webpack://@zextras/carbonio-shell-ui/./src/shell/badge-wrap.tsx","webpack://@zextras/carbonio-shell-ui/./src/utility-bar/utils.ts","webpack://@zextras/carbonio-shell-ui/./src/shell/shell-primary-bar.tsx","webpack://@zextras/carbonio-shell-ui/./src/shell/collapser.tsx","webpack://@zextras/carbonio-shell-ui/./src/utility-bar/store.ts","webpack://@zextras/carbonio-shell-ui/./src/network/logout.ts","webpack://@zextras/carbonio-shell-ui/./src/utility-bar/bar.tsx","webpack://@zextras/carbonio-shell-ui/./src/utility-bar/panel.tsx","webpack://@zextras/carbonio-shell-ui/./src/shell/shell-secondary-bar.tsx","webpack://@zextras/carbonio-shell-ui/./src/shell/shell-mobile-nav.jsx","webpack://@zextras/carbonio-shell-ui/./src/shell/shell-navigation-bar.jsx","webpack://@zextras/carbonio-shell-ui/./src/shell/boards/app-board-tab.jsx","webpack://@zextras/carbonio-shell-ui/./src/shell/boards/app-board.jsx","webpack://@zextras/carbonio-shell-ui/./src/shell/boards/app-board-window.jsx","webpack://@zextras/carbonio-shell-ui/./src/shell/shell-view.jsx","webpack://@zextras/carbonio-shell-ui/./src/boot/bootstrapper-router.tsx","webpack://@zextras/carbonio-shell-ui/./src/shell/boards/board-context-provider.jsx","webpack://@zextras/carbonio-shell-ui/./src/boot/bootstrapper-provider.tsx","webpack://@zextras/carbonio-shell-ui/./src/i18n/i18n-factory.ts","webpack://@zextras/carbonio-shell-ui/./src/redux/store-factory.ts","webpack://@zextras/carbonio-shell-ui/./src/search/search-app-view.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/settings-sidebar.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/general-settings-sub-sections.ts","webpack://@zextras/carbonio-shell-ui/./src/settings/components/general-settings/logout.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/components/general-settings/appearance-settings.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/components/general-settings/module-version-settings.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/components/settings-heading.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/components/date-picker-style.jsx","webpack://@zextras/carbonio-shell-ui/./src/settings/components/utils.ts","webpack://@zextras/carbonio-shell-ui/./src/settings/components/date-time-select-view.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/components/general-settings/out-of-office-view.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/components/general-settings/user-quota.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/language-and-timezone-settings.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/search-settings-view.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/general-settings.tsx","webpack://@zextras/carbonio-shell-ui/./src/reporting/feedback.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/components/account-settings/accounts-list.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/components/account-settings/primary-account-settings.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/components/account-settings/settings-sent-messages.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/components/account-settings/password-recovery-settings.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/components/account-settings/delegates.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/components/account-settings/persona-settings.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/components/account-settings/persona-use-section.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/accounts-settings.tsx","webpack://@zextras/carbonio-shell-ui/./src/settings/account-wrapper.tsx","webpack://@zextras/carbonio-shell-ui/./src/boot/app/default-views.ts","webpack://@zextras/carbonio-shell-ui/./src/settings/settings-app-view.tsx","webpack://@zextras/carbonio-shell-ui/./src/dev/dev-board.tsx","webpack://@zextras/carbonio-shell-ui/./src/dev/dev-board-trigger.tsx","webpack://@zextras/carbonio-shell-ui/./src/boot/bootstrapper.tsx","webpack://@zextras/carbonio-shell-ui/./src/boot/app/load-apps.ts","webpack://@zextras/carbonio-shell-ui/./src/boot/app/shared-libraries.ts","webpack://@zextras/carbonio-shell-ui//tmp/workspace/extras_carbonio-shell-ui_release/node_modules/moment/locale|sync|/^\\.\\/.*$/"],"sourcesContent":["/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\nimport { DynamicThemeFix } from 'darkreader';\nimport { ShellModes } from '../../types';\n\n/*\n\treference: https://zextras.atlassian.net/wiki/spaces/IRIS/pages/223215854/UI+Guidelines+and+theming\n*/\nexport const ZIMBRA_STANDARD_COLORS = [\n\t{ zValue: 0, hex: '#000000', zLabel: 'black' },\n\t{ zValue: 1, hex: '#2b73d2', zLabel: 'blue' },\n\t{ zValue: 2, hex: '#2196d3', zLabel: 'cyan' },\n\t{ zValue: 3, hex: '#639030', zLabel: 'green' },\n\t{ zValue: 4, hex: '#1a75a7', zLabel: 'purple' },\n\t{ zValue: 5, hex: '#d74942', zLabel: 'red' },\n\t{ zValue: 6, hex: '#ffc107', zLabel: 'yellow' },\n\t{ zValue: 7, hex: '#edaeab', zLabel: 'pink' },\n\t{ zValue: 8, hex: '#828282', zLabel: 'gray' },\n\t{ zValue: 9, hex: '#ba8b00', zLabel: 'orange' }\n];\n\nexport const FOLDERS = {\n\tUSER_ROOT: '1',\n\tINBOX: '2',\n\tTRASH: '3',\n\tSPAM: '4',\n\tSENT: '5',\n\tDRAFTS: '6',\n\tCONTACTS: '7',\n\tTAGS: '8',\n\tCONVERSATIONS: '9',\n\tCALENDAR: '10',\n\tROOT: '11',\n\tNOTEBOOK: '12', // no longer created in new mailboxes since Helix (bug 39647). old mailboxes may still contain a system folder with id 12\n\tAUTO_CONTACTS: '13',\n\tIM_LOGS: '14',\n\tTASKS: '15',\n\tBRIEFCASE: '16'\n};\n\nexport const SHELL_APP_ID = 'carbonio-shell-ui';\nexport const SETTINGS_APP_ID = 'settings';\nexport const ACCOUNTS_APP_ID = 'accounts';\nexport const SEARCH_APP_ID = 'search';\nexport const ACTION_TYPES = {\n\tCONVERSATION: 'conversation',\n\tCONVERSATION_lIST: 'conversation_list',\n\tMESSAGE: 'message',\n\tMESSAGE_lIST: 'message_list',\n\tCONTACT: 'contact',\n\tCONTACT_lIST: 'contact_list',\n\tINVITE: 'invite',\n\tINVITE_lIST: 'invite_list',\n\tAPPOINTMENT: 'appointment',\n\tAPPOINTMENT_lIST: 'appointment_list',\n\tFOLDER: 'folder',\n\tFOLDER_lIST: 'folder_list',\n\tCALENDAR: 'calendar',\n\tCALENDAR_lIST: 'calendar_list',\n\tNEW: 'new'\n};\n\nexport const darkReaderDynamicThemeFixes: DynamicThemeFix = {\n\tignoreImageAnalysis: ['.no-dr-invert *'],\n\tinvert: [],\n\tcss: `\n\t\t.tox, .force-white-bg, .tox-swatches-menu, .tox .tox-edit-area__iframe {\n\t\t\tbackground-color: #fff !important;\n\t\t\tbackground: #fff !important;\n\t\t}\n\t`,\n\tignoreInlineStyle: ['.tox-menu *'],\n\tdisableStyleSheetsProxy: false\n};\n\nexport const SHELL_MODES: Record<string, ShellModes> = {\n\tCARBONIO: 'carbonio',\n\tSTANDALONE: 'carbonioStandalone',\n\tADMIN: 'carbonioAdmin'\n};\n\nexport const BASENAME = `/${__SHELL_ENV__}/`;\nexport const EMAIL_VALIDATION_REGEX =\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars, max-len, no-control-regex\n\t/(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])/;\n","/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport { trim } from 'lodash';\nimport React, { FC } from 'react';\nimport {\n\tAppRouteDescriptor,\n\tBadgeInfo,\n\tBoardView,\n\tCarbonioModule,\n\tPrimaryAccessoryView,\n\tSearchView,\n\tSecondaryAccessoryView,\n\tSettingsView,\n\tUtilityView\n} from '../../../types';\n\nexport const normalizeApp = (app: Partial<CarbonioModule>): CarbonioModule => ({\n\tcommit: app.commit ?? '',\n\tdescription: app.description ?? 'A carbonio Module',\n\t// eslint-disable-next-line camelcase\n\tjs_entrypoint: app.js_entrypoint ?? '',\n\tname: app.name ?? 'module',\n\tpriority: app.priority ?? 99,\n\tversion: app.version ?? '',\n\ttype: app.type ?? 'carbonio',\n\tattrKey: app.attrKey,\n\ticon: app.icon ?? 'Cube',\n\tdisplay: app.display ?? 'Module',\n\tsentryDsn: app.sentryDsn\n});\n\nconst FallbackView: FC = () => <p>Missing Component</p>;\n\nexport const normalizeBadgeInfo = (badge: Partial<BadgeInfo>): BadgeInfo => ({\n\tshow: badge.show ?? false,\n\tcount: badge.count ?? 0,\n\tshowCount: badge.showCount ?? false,\n\tcolor: badge.color ?? 'primary'\n});\n\nexport const normalizeRoute = (\n\tdata: Partial<AppRouteDescriptor>,\n\tapp: CarbonioModule\n): AppRouteDescriptor => {\n\tconst route = trim(data.route ?? app.name, '/');\n\treturn {\n\t\tapp: app.name,\n\t\troute,\n\t\tid: data.id ?? route,\n\t\tbadge: normalizeBadgeInfo(data?.badge ?? {}),\n\t\tposition: data?.position ?? app.priority,\n\t\tvisible: data?.visible ?? true,\n\t\tlabel: data?.label ?? '',\n\t\tprimaryBar: data.primaryBar ?? app.icon ?? 'CubeOutline',\n\t\tsecondaryBar: data.secondaryBar,\n\t\tappView: data.appView ?? FallbackView\n\t};\n};\n\nexport const normalizeSettingsView = (\n\tdata: Partial<SettingsView>,\n\tapp: CarbonioModule\n): SettingsView => {\n\tconst route = trim(data.route ?? app.name, '/');\n\treturn {\n\t\tapp: app.name,\n\t\troute,\n\t\tid: data?.id ?? route,\n\t\tcomponent: data?.component ?? FallbackView,\n\t\tlabel: data.label ?? app.display,\n\t\ticon: data.icon ?? app.icon,\n\t\tposition: data.position ?? app.priority ?? 99,\n\t\tsubSections: data.subSections ?? []\n\t};\n};\nexport const normalizeSearchView = (data: Partial<SearchView>, app: CarbonioModule): SearchView => {\n\tconst route = trim(data.route ?? app.name, '/');\n\treturn {\n\t\tapp: app.name,\n\t\troute,\n\t\tid: data?.id ?? route,\n\t\tcomponent: data?.component ?? FallbackView,\n\t\tlabel: data.label ?? app.display,\n\t\ticon: data.icon ?? app.icon,\n\t\tposition: data.position ?? app.priority ?? 99\n\t};\n};\nexport const normalizeUtilityView = (\n\tdata: Partial<UtilityView>,\n\tapp: CarbonioModule\n): UtilityView => ({\n\tapp: app.name,\n\tid: data?.id ?? app.name,\n\twhitelistRoutes: data?.whitelistRoutes,\n\tblacklistRoutes: data?.blacklistRoutes,\n\tcomponent: data?.component ?? FallbackView,\n\tbutton: data?.button ?? 'Cube',\n\tbadge: normalizeBadgeInfo(data?.badge ?? {}),\n\tposition: data?.position ?? app.priority,\n\tlabel: data?.label ?? app.display\n});\nexport const normalizePrimaryAccessoryView = (\n\tdata: Partial<PrimaryAccessoryView>,\n\tapp: CarbonioModule\n): PrimaryAccessoryView => ({\n\tapp: app.name,\n\tonClick: data?.onClick,\n\tlabel: data?.label ?? app.display,\n\tposition: data?.position ?? app.priority,\n\twhitelistRoutes: data?.whitelistRoutes,\n\tblacklistRoutes: data?.blacklistRoutes,\n\tid: data?.id ?? app.name,\n\tcomponent: data?.component ?? FallbackView\n});\nexport const normalizeSecondaryAccessoryView = (\n\tdata: Partial<SecondaryAccessoryView>,\n\tapp: CarbonioModule\n): SecondaryAccessoryView => ({\n\tapp: app.name,\n\tposition: data?.position ?? app.priority,\n\twhitelistRoutes: data?.whitelistRoutes,\n\tblacklistRoutes: data?.blacklistRoutes,\n\tid: data?.id ?? app.name,\n\tcomponent: data?.component ?? FallbackView\n});\n\nexport const normalizeBoardView = (data: Partial<BoardView>, app: CarbonioModule): BoardView => {\n\tconst route = trim(data.route ?? app.name, '/');\n\treturn {\n\t\tapp: app.name,\n\t\troute,\n\t\tid: data?.id ?? route,\n\t\tcomponent: data?.component ?? FallbackView\n\t};\n};\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport produce from 'immer';\nimport { filter, find, findIndex, merge, omit, reduce, sortBy, unionBy, unionWith } from 'lodash';\nimport create, { StoreApi, UseBoundStore } from 'zustand';\nimport {\n\tAppRouteDescriptor,\n\tAppState,\n\tAppView,\n\tBadgeInfo,\n\tBoardView,\n\tCarbonioModule,\n\tPrimaryAccessoryView,\n\tPrimaryBarView,\n\tSearchView,\n\tSecondaryAccessoryView,\n\tSecondaryBarView,\n\tSettingsView,\n\tUtilityView\n} from '../../../types';\nimport { SHELL_APP_ID } from '../../constants';\nimport { normalizeApp } from './utils';\n\nconst filterById = <T extends { id: string }>(items: Array<T>, id: string): Array<T> =>\n\tfilter(items, (item) => item.id !== id);\n\nexport const useAppStore = create<AppState>((set) => ({\n\tapps: {},\n\tappContexts: {},\n\tshell: {\n\t\tcommit: '',\n\t\tdescription: '',\n\t\tjs_entrypoint: '',\n\t\tname: 'carbonio-shell-ui',\n\t\tpriority: -1,\n\t\tversion: '',\n\t\ttype: 'shell',\n\t\tattrKey: '',\n\t\ticon: '',\n\t\tdisplay: 'Shell'\n\t},\n\tentryPoints: {},\n\troutes: {},\n\tviews: {\n\t\tprimaryBar: [],\n\t\tsecondaryBar: [],\n\t\tappView: [],\n\t\tboard: [],\n\t\tutilityBar: [],\n\t\tsettings: [],\n\t\tsearch: [],\n\t\tprimaryBarAccessories: [],\n\t\tsecondaryBarAccessories: []\n\t},\n\tsetters: {\n\t\taddApps: (apps: Array<Partial<CarbonioModule>>): void => {\n\t\t\tset((state) => ({\n\t\t\t\tapps: reduce(\n\t\t\t\t\tapps,\n\t\t\t\t\t(acc, app) =>\n\t\t\t\t\t\tapp.name && app.name !== SHELL_APP_ID\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t...acc,\n\t\t\t\t\t\t\t\t\t[app.name]: normalizeApp(app)\n\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t: acc,\n\t\t\t\t\t{}\n\t\t\t\t),\n\t\t\t\tshell: {\n\t\t\t\t\t...state.shell,\n\t\t\t\t\t...(find(apps, (app) => app.name === SHELL_APP_ID) ?? {})\n\t\t\t\t},\n\t\t\t\tappContexts: reduce(apps, (acc, val) => (val.name ? { ...acc, [val.name]: {} } : acc), {})\n\t\t\t}));\n\t\t},\n\t\tsetAppContext:\n\t\t\t(app: string) =>\n\t\t\t(context: unknown): void => {\n\t\t\t\tset(\n\t\t\t\t\tproduce((state: AppState) => {\n\t\t\t\t\t\tstate.appContexts[app] = merge(state.appContexts[app], context);\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t},\n\t\t// add route (id route primaryBar secondaryBar app)\n\t\taddRoute: (routeData: AppRouteDescriptor): string => {\n\t\t\tset(\n\t\t\t\tproduce((state: AppState) => {\n\t\t\t\t\tstate.routes[routeData.id] = routeData;\n\t\t\t\t\tif (routeData.primaryBar) {\n\t\t\t\t\t\tstate.views.primaryBar = sortBy(\n\t\t\t\t\t\t\tunionWith<PrimaryBarView>(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tapp: routeData.app,\n\t\t\t\t\t\t\t\t\t\tid: routeData.id,\n\t\t\t\t\t\t\t\t\t\troute: routeData.route,\n\t\t\t\t\t\t\t\t\t\tcomponent: routeData.primaryBar,\n\t\t\t\t\t\t\t\t\t\tbadge: routeData.badge,\n\t\t\t\t\t\t\t\t\t\tposition: routeData.position,\n\t\t\t\t\t\t\t\t\t\tvisible: routeData.visible,\n\t\t\t\t\t\t\t\t\t\tlabel: routeData.label\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tstate.views.primaryBar,\n\t\t\t\t\t\t\t\t(a, b): boolean => a.id === b.id\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t'position'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif (routeData.secondaryBar) {\n\t\t\t\t\t\tstate.views.secondaryBar = unionWith<SecondaryBarView>(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tapp: routeData.app,\n\t\t\t\t\t\t\t\t\tid: routeData.id,\n\t\t\t\t\t\t\t\t\troute: routeData.route,\n\t\t\t\t\t\t\t\t\tcomponent: routeData.secondaryBar\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tstate.views.secondaryBar,\n\t\t\t\t\t\t\t(a, b): boolean => a.id === b.id\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif (routeData.appView) {\n\t\t\t\t\t\tstate.views.appView = unionWith<AppView>(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tapp: routeData.app,\n\t\t\t\t\t\t\t\t\tid: routeData.id,\n\t\t\t\t\t\t\t\t\troute: routeData.route,\n\t\t\t\t\t\t\t\t\tcomponent: routeData.appView\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tstate.views.appView,\n\t\t\t\t\t\t\t(a, b): boolean => a.id === b.id\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn routeData.id;\n\t\t},\n\t\tsetRouteVisibility: (id: string, visible: boolean): void => {\n\t\t\tset(\n\t\t\t\tproduce((state: AppState) => {\n\t\t\t\t\tconst idx = findIndex(state.views.primaryBar, (view) => view.id === id);\n\t\t\t\t\tif (idx >= 0) {\n\t\t\t\t\t\tstate.views.primaryBar[idx].visible = visible;\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t);\n\t\t},\n\n\t\t// remove route (id | route)\n\t\tremoveRoute: (id: string): void => {\n\t\t\tset(\n\t\t\t\tproduce((state: AppState) => {\n\t\t\t\t\tstate.routes = omit(state.routes, [id]);\n\t\t\t\t\tstate.views.primaryBar = filterById(state.views.primaryBar, id);\n\t\t\t\t\tstate.views.secondaryBar = filterById(state.views.secondaryBar, id);\n\t\t\t\t\tstate.views.appView = filterById(state.views.appView, id);\n\t\t\t\t})\n\t\t\t);\n\t\t},\n\t\t// add board\n\t\taddBoardView: (data: BoardView): string => {\n\t\t\tset(\n\t\t\t\tproduce((state: AppState) => {\n\t\t\t\t\tstate.views.board = unionBy([data], state.views.board, 'id');\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn data.id;\n\t\t},\n\n\t\t// remove board\n\t\tremoveBoardView: (id: string): void => {\n\t\t\tset(\n\t\t\t\tproduce((state: AppState) => {\n\t\t\t\t\tstate.views.board = filterById(state.views.board, id);\n\t\t\t\t})\n\t\t\t);\n\t\t},\n\n\t\t// add settings\n\t\taddSettingsView: (data: SettingsView): string => {\n\t\t\tset(\n\t\t\t\tproduce((state: AppState) => {\n\t\t\t\t\tstate.views.settings = sortBy(unionBy([data], state.views.settings, 'id'), 'position');\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn data.id;\n\t\t},\n\n\t\t// remove settings\n\t\tremoveSettingsView: (id: string): void => {\n\t\t\tset(\n\t\t\t\tproduce((state: AppState) => {\n\t\t\t\t\tstate.views.settings = filterById(state.views.settings, id);\n\t\t\t\t})\n\t\t\t);\n\t\t},\n\t\t//\n\t\t// add search\n\t\taddSearchView: (data: SearchView): string => {\n\t\t\tset(\n\t\t\t\tproduce((state: AppState) => {\n\t\t\t\t\tstate.views.search = sortBy(unionBy([data], state.views.search, 'id'), 'position');\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn data.id;\n\t\t},\n\t\t// remove search\n\t\tremoveSearchView: (id: string): void => {\n\t\t\tset(\n\t\t\t\tproduce((state: AppState) => {\n\t\t\t\t\tstate.views.search = filterById(state.views.search, id);\n\t\t\t\t})\n\t\t\t);\n\t\t},\n\t\t//\n\t\t// add utility\n\t\taddUtilityView: (data: UtilityView): string => {\n\t\t\tset(\n\t\t\t\tproduce((state: AppState) => {\n\t\t\t\t\tstate.views.utilityBar = sortBy(\n\t\t\t\t\t\tunionBy([data], state.views.utilityBar, 'id'),\n\t\t\t\t\t\t'position'\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn data.id;\n\t\t},\n\t\t// remove utility\n\t\tremoveUtilityView: (id: string): void => {\n\t\t\tset(\n\t\t\t\tproduce((state: AppState) => {\n\t\t\t\t\tstate.views.utilityBar = filterById(state.views.utilityBar, id);\n\t\t\t\t})\n\t\t\t);\n\t\t},\n\t\t//\n\t\t// add primaryAccessory\n\t\taddPrimaryAccessoryView: (data: PrimaryAccessoryView): string => {\n\t\t\tset(\n\t\t\t\tproduce((state: AppState) => {\n\t\t\t\t\tstate.views.primaryBarAccessories = unionBy(\n\t\t\t\t\t\t[data],\n\t\t\t\t\t\tstate.views.primaryBarAccessories,\n\t\t\t\t\t\t'id'\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn data.id;\n\t\t},\n\t\t// remove primaryAccessory\n\t\tremovePrimaryAccessoryView: (id: string): void => {\n\t\t\tset(\n\t\t\t\tproduce((state: AppState) => {\n\t\t\t\t\tstate.views.primaryBarAccessories = filterById(state.views.primaryBarAccessories, id);\n\t\t\t\t})\n\t\t\t);\n\t\t},\n\t\t//\n\t\t// add secondaryAccessory\n\t\taddSecondaryAccessoryView: (data: SecondaryAccessoryView): string => {\n\t\t\tset(\n\t\t\t\tproduce((state: AppState) => {\n\t\t\t\t\tstate.views.secondaryBarAccessories = unionBy(\n\t\t\t\t\t\t[data],\n\t\t\t\t\t\tstate.views.secondaryBarAccessories,\n\t\t\t\t\t\t'id'\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn data.id;\n\t\t},\n\t\t// remove secondaryAccessory\n\t\tremoveSecondaryAccessoryView: (id: string): void => {\n\t\t\tset(\n\t\t\t\tproduce((state: AppState) => {\n\t\t\t\t\tstate.views.secondaryBarAccessories = filterById(state.views.secondaryBarAccessories, id);\n\t\t\t\t})\n\t\t\t);\n\t\t},\n\t\tupdatePrimaryBadge: (badge: Partial<BadgeInfo>, id: string): void => {\n\t\t\tset(\n\t\t\t\tproduce((state: AppState) => {\n\t\t\t\t\tconst idx = findIndex(state.views.primaryBar, (bar) => bar.id === id);\n\t\t\t\t\tif (idx >= 0) {\n\t\t\t\t\t\tstate.views.primaryBar[idx].badge = {\n\t\t\t\t\t\t\t...state.views.primaryBar[idx].badge,\n\t\t\t\t\t\t\t...badge\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t);\n\t\t},\n\t\tupdateUtilityBadge: (badge: Partial<BadgeInfo>, id: string): void => {\n\t\t\tset(\n\t\t\t\tproduce((state: AppState) => {\n\t\t\t\t\tconst idx = findIndex(state.views.utilityBar, (bar) => bar.id === id);\n\t\t\t\t\tif (idx >= 0) {\n\t\t\t\t\t\tstate.views.utilityBar[idx].badge = {\n\t\t\t\t\t\t\t...state.views.utilityBar[idx].badge,\n\t\t\t\t\t\t\t...badge\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t}\n})) as UseBoundStore<AppState, StoreApi<AppState>>;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\n/* eslint-disable react-hooks/rules-of-hooks */\n/* THIS FILE CONTAINS HOOKS, BUT ESLINT IS DUMB */\n\nimport { sortBy } from 'lodash';\nimport { useMemo } from 'react';\nimport { useAppStore } from './store';\nimport { AppRoute, CarbonioModule } from '../../../types';\n\nexport const useApp = (appId: string) => (): CarbonioModule => useAppStore((s) => s.apps[appId]);\nexport const useApps = (): Record<string, CarbonioModule> => useAppStore((s) => s.apps);\nexport const useAppList = (): Array<CarbonioModule> => {\n\tconst apps = useApps();\n\treturn useMemo(() => sortBy(apps, (a) => a.priority), [apps]);\n};\nexport const getAppList = (): Array<CarbonioModule> =>\n\tsortBy(useAppStore.getState().apps, (a) => a.priority);\n\nexport const getApp = (appId: string) => (): CarbonioModule => useAppStore.getState().apps[appId];\nexport const getApps = (): Record<string, CarbonioModule> => useAppStore.getState().apps;\n\nexport const useAppContext = (appId: string) => (): unknown =>\n\tuseAppStore((s) => s.appContexts[appId]);\nexport const getAppContext = (appId: string) => (): unknown =>\n\tuseAppStore.getState().appContexts[appId];\nexport const getShell = (): CarbonioModule => useAppStore.getState().shell;\nexport const getRoutes = (): Record<string, AppRoute> => useAppStore.getState().routes;\nexport const useRoutes = (): Record<string, AppRoute> => useAppStore((s) => s.routes);\nexport const getRoute = (id: string): AppRoute => useAppStore.getState().routes[id];\nexport const useRoute = (id: string): AppRoute => useAppStore((s) => s.routes[id]);\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nexport const goToLogin: () => void = () => {\n\twindow?.location?.assign?.(`${window?.location?.origin}/static/login`);\n};\n","/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\nimport React, { FC, useMemo } from 'react';\nimport { ShellModes } from '../../types';\n\nexport const ShellMode: FC<{ include?: ShellModes[]; exclude?: ShellModes[] }> = ({\n\tinclude,\n\texclude,\n\tchildren\n}) => {\n\tconst pass = useMemo(() => {\n\t\tif (include) {\n\t\t\treturn include.includes(__SHELL_ENV__);\n\t\t}\n\t\tif (exclude) {\n\t\t\treturn !exclude.includes(__SHELL_ENV__);\n\t\t}\n\t\treturn false;\n\t}, [exclude, include]);\n\n\treturn pass ? <>{children}</> : null;\n};\n","import { SHELL_MODES } from '../constants';\n\n/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\nexport const isClient = (): boolean =>\n\t__SHELL_ENV__ === SHELL_MODES.CARBONIO || __SHELL_ENV__ === SHELL_MODES.STANDALONE;\nexport const isAdmin = (): boolean => __SHELL_ENV__ === SHELL_MODES.ADMIN;\nexport const isStandalone = (): boolean => __SHELL_ENV__ === SHELL_MODES.STANDALONE;\nexport const isFullClient = (): boolean => __SHELL_ENV__ === SHELL_MODES.CARBONIO;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport { GetState, SetState } from 'zustand';\nimport { filter } from 'lodash';\nimport { SHELL_APP_ID, SHELL_MODES } from '../constants';\nimport { useAppStore } from '../store/app';\nimport { normalizeAccount } from '../store/account/normalization';\nimport { AccountSettings, AccountState, GetInfoResponse, Tag, CarbonioModule } from '../../types';\nimport { goToLogin } from './go-to-login';\nimport { isAdmin, isFullClient, isStandalone } from '../multimode';\n\nconst parsePollingInterval = (settings: AccountSettings): number => {\n\tconst pollingPref = (settings.prefs?.zimbraPrefMailPollingInterval ?? '') as string;\n\tif (pollingPref === '500') {\n\t\treturn 500;\n\t}\n\tconst pollingValue = parseInt(pollingPref, 10);\n\tif (Number.isNaN(pollingValue)) {\n\t\treturn 30000;\n\t}\n\tif (pollingPref.includes('m')) {\n\t\treturn pollingValue * 60 * 1000;\n\t}\n\treturn pollingValue * 1000;\n};\nexport const getInfo = (set: SetState<AccountState>, get: GetState<AccountState>): Promise<void> =>\n\tget()\n\t\t.soapFetch(SHELL_APP_ID)<{ _jsns: string; rights: string }, GetInfoResponse>('GetInfo', {\n\t\t\t_jsns: 'urn:zimbraAccount',\n\t\t\trights: 'sendAs,sendAsDistList,viewFreeBusy,sendOnBehalfOf,sendOnBehalfOfDistList'\n\t\t})\n\t\t.then((res: any): void => {\n\t\t\tif (res) {\n\t\t\t\tconst { account, settings, version } = normalizeAccount(res);\n\t\t\t\tset({\n\t\t\t\t\taccount,\n\t\t\t\t\tsettings,\n\t\t\t\t\tpollingInterval: parsePollingInterval(settings),\n\t\t\t\t\tzimbraVersion: version\n\t\t\t\t});\n\t\t\t}\n\t\t})\n\t\t.then(() => fetch('/static/iris/components.json'))\n\t\t.then((r: any) => r.json())\n\t\t.then(({ components }: { components: Array<CarbonioModule> }) => {\n\t\t\tuseAppStore.getState().setters.addApps(\n\t\t\t\tfilter(components, ({ type, name }) => {\n\t\t\t\t\tif (type === 'shell') return true;\n\t\t\t\t\tif (isAdmin()) return type === SHELL_MODES.ADMIN;\n\t\t\t\t\tif (isFullClient()) return type === SHELL_MODES.CARBONIO;\n\t\t\t\t\tif (isStandalone()) return name === window.location.pathname.split('/')[2];\n\t\t\t\t\treturn false;\n\t\t\t\t})\n\t\t\t);\n\t\t})\n\t\t.catch((err: unknown) => {\n\t\t\tconsole.log('there was an error checking user data');\n\t\t\tconsole.error(err);\n\t\t\tgoToLogin();\n\t\t});\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport UAParser from 'ua-parser-js';\n\nconst { os, browser } = UAParser();\nexport const userAgent = `CarbonioWebClient - ${browser.name} ${browser.version} (${os.name})`;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n/* eslint-disable @typescript-eslint/ban-types */\n\nimport { ComponentType, FC } from 'react';\nimport { LinkProps } from 'react-router-dom';\nimport { Reducer, Store } from 'redux';\nimport { TFunction } from 'react-i18next';\nimport {\n\tAppRoute,\n\tAppRouteDescriptor,\n\tBadgeInfo,\n\tBoardView,\n\tCarbonioModule,\n\tPrimaryAccessoryView,\n\tSearchView,\n\tSecondaryAccessoryView,\n\tSettingsView,\n\tUtilityView\n} from '../apps';\nimport { ActionFactory, AnyFunction, CombinedActionFactory, Action } from '../integrations';\nimport {\n\tAccountSettings,\n\tTag,\n\tAccount,\n\tNotifyObject,\n\tAccountRights,\n\tAccountRightName,\n\tAccountRightTarget,\n\tSoapFetch\n} from '../account';\nimport { Mods } from '../network';\nimport { HistoryParams, ShellModes } from '../misc';\n\nexport const getBridgedFunctions: () => {\n\taddBoard: (path: string, context?: unknown | { app: string }) => void;\n\tcreateModal: (...params: any[]) => void;\n\tcreateSnackbar: (...params: any[]) => void;\n\tgetHistory: () => History;\n\tremoveBoard: (key: string) => void;\n\tremoveCurrentBoard: () => void;\n\tsetCurrentBoard: (key: string) => void;\n\tupdateBoard: (key: string, url: string, title: string) => void;\n\tupdateCurrentBoard: (url: string, title: string) => void;\n\tt: TFunction;\n\ttoggleMinimizedBoard: () => void;\n};\nexport const editSettings: (mods: Mods) => Promise<any>;\nexport const ZIMBRA_STANDARD_COLORS: Array<{ zValue: number; hex: string; zLabel: string }>;\nexport const FOLDERS: {\n\t[name: string]: string;\n};\nexport const SHELL_APP_ID = 'carbonio-shell-ui';\nexport const SETTINGS_APP_ID = 'settings';\nexport const SEARCH_APP_ID = 'search';\nexport const ACTION_TYPES: {\n\t[name: string]: string;\n};\nexport const SHELL_MODES: Record<string, ShellModes>;\nexport const BASENAME: string;\nexport const getIntegratedHook: (id: string) => [Function, boolean];\nexport const getIntegratedFunction: (id: string) => [Function, boolean];\nexport const getIntegratedComponent: (id: string) => [ComponentType<unknown>, boolean];\nexport const getActions: <T>(target: T, type: string) => Array<Action>;\nexport const getActionsFactory: (type: string) => <T>(target: T) => Array<Action>;\nexport const getAction: <T>(type: string, id: string, target?: T) => [Action | undefined, boolean];\nexport const getActionFactory: <T>(\n\ttype: string,\n\tid: string\n) => [ActionFactory<T> | undefined, boolean];\nexport const useIntegratedHook: (id: string) => [Function, boolean];\nexport const useIntegratedFunction: (id: string) => [Function, boolean];\nexport const useIntegratedComponent: (id: string) => [ComponentType<unknown>, boolean];\nexport const useActions: <T>(target: T, type: string) => Array<Action>;\nexport const useActionsFactory: <T>(type: string) => CombinedActionFactory<T>;\nexport const useAction: <T>(type: string, id: string, target?: T) => [Action | undefined, boolean];\nexport const useActionFactory: <T>(\n\ttype: string,\n\tid: string\n) => [ActionFactory<T> | undefined, boolean];\nexport const useApp: () => CarbonioModule;\nexport const getApp: () => CarbonioModule;\nexport const useAppContext: <T>() => T;\nexport const getAppContext: <T>() => T;\nexport const useUserAccount: () => Account;\nexport const useUserAccounts: () => Array<Account>;\nexport const useUserRights: () => AccountRights;\nexport const useUserRight: (right: AccountRightName) => Array<AccountRightTarget>;\nexport const getUserAccount: () => Account;\nexport const getUserAccounts: () => Array<Account>;\nexport const getUserRights: () => AccountRights;\nexport const getUserRight: (right: AccountRightName) => Array<AccountRightTarget>;\nexport const useTags: () => Array<Tag>;\nexport const getTags: () => Array<Tag>;\nexport const useUserSettings: () => AccountSettings;\nexport const useUserSetting: <T = void>(...path: Array<string>) => string | T;\nexport const getUserSettings: () => AccountSettings;\nexport const getUserSetting: <T = void>(...path: Array<string>) => string | T;\nexport const store: {\n\tstore: Store<any>;\n\tsetReducer(nextReducer: Reducer): void;\n};\nexport const useNotify: () => Array<NotifyObject>;\nexport const useRefresh: () => NotifyObject;\nexport const Applink: FC<LinkProps>;\nexport const Spinner: FC;\nexport const useAddBoardCallback: () => (\n\tpath: string,\n\tcontext?: { app?: string; title?: string }\n) => void;\nexport const useUpdateCurrentBoard: () => (url: string, title: string) => void;\nexport const useRemoveCurrentBoard: () => () => void;\nexport const useBoardConfig: <T>() => T;\n\nexport const useIsMobile: () => boolean;\nexport const soapFetch: SoapFetch;\nexport const xmlSoapFetch: SoapFetch;\nexport const report: (error: Error, hint?: unknown) => void;\nexport const setAppContext: <T>(obj: T) => void;\n\nexport const removeActions: (...ids: Array<string>) => void;\nexport const registerActions: (\n\t...items: Array<{ id: string; action: ActionFactory<unknown>; type: string }>\n) => void;\nexport const removeComponents: (...ids: Array<string>) => void;\nexport const registerComponents: (\n\t...items: Array<{ id: string; component: ComponentType }>\n) => void;\nexport const removeHooks: (...ids: Array<string>) => void;\nexport const registerHooks: (...items: Array<{ id: string; hook: AnyFunction }>) => void;\nexport const removeFunctions: (...ids: Array<string>) => void;\nexport const registerFunctions: (...items: Array<{ id: string; fn: AnyFunction }>) => void;\n// add route (id route primaryBar secondaryBar app)\nexport const addRoute: (routeData: Partial<AppRouteDescriptor>) => string;\nexport const setRouteVisibility: (id: string, visible: boolean) => void;\n// remove route (id | route)\nexport const removeRoute: (id: string) => void;\n//\n// update primaryBar\nexport const updatePrimaryBadge: (badge: Partial<BadgeInfo>, id: string) => void;\nexport const updateUtilityBadge: (badge: Partial<BadgeInfo>, id: string) => void;\n//\n// add board\nexport const addBoardView: (data: Object & Partial<BoardView>) => string;\n// remove board\nexport const removeBoardView: (id: string) => void;\n//\n// add settings\nexport const addSettingsView: (data: Partial<SettingsView>) => string;\n// remove settings\nexport const removeSettingsView: (id: string) => void;\n//\n// add search\nexport const addSearchView: (data: Partial<SearchView>) => string;\n// remove search\nexport const removeSearchView: (id: string) => void;\n//\n// add utility\nexport const addUtilityView: (data: Partial<UtilityView>) => string;\n// remove utility\nexport const removeUtilityView: (id: string) => void;\n//\n// add primaryAccessory\nexport const addPrimaryAccessoryView: (data: Partial<PrimaryAccessoryView>) => string;\n// remove primaryAccessory\nexport const removePrimaryAccessoryView: (id: string) => void;\n//\n// add secondaryAccessory\nexport const addSecondaryAccessoryView: (data: Partial<SecondaryAccessoryView>) => string;\n// remove secondaryAccessory\nexport const removeSecondaryAccessoryView: (id: string) => void;\nexport const usePushHistoryCallback: () => (params: HistoryParams) => void;\nexport const useReplaceHistoryCallback: () => (params: HistoryParams) => void;\nexport const useGoBackHistoryCallback: () => () => void;\nexport const pushHistory: (params: HistoryParams) => void;\nexport const replaceHistory: (params: HistoryParams) => void;\nexport const goBackHistory: () => void;\nexport const useCurrentRoute: () => AppRoute | undefined;\nexport const getCurrentRoute: () => AppRoute | undefined;\n","/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport create, { StoreApi, UseBoundStore } from 'zustand';\nimport { BrowserClient, Hub } from '@sentry/browser';\nimport { reduce } from 'lodash';\nimport { CarbonioModule, SHELL_APP_ID } from '../../types';\n\ntype ReporterState = {\n\tclients: Record<string, Hub>;\n\tsetClients: (apps: Array<CarbonioModule>) => void;\n};\n\nexport const useReporter = create<ReporterState>((set) => ({\n\tclients: {\n\t\t[SHELL_APP_ID]: new Hub(\n\t\t\tnew BrowserClient({\n\t\t\t\tdsn: 'https://0ce2448c05b94f0182c47ae52c7ff52c@feedback.zextras.tools/6',\n\t\t\t\trelease: '0',\n\t\t\t\tmaxValueLength: 500\n\t\t\t})\n\t\t),\n\t\tfeedbacks: new Hub(\n\t\t\tnew BrowserClient({\n\t\t\t\tdsn: 'https://1b6b3e2bbdc64a73bf45c72b725c56b4@feedback.zextras.tools/8',\n\t\t\t\trelease: '0',\n\t\t\t\tmaxValueLength: 500\n\t\t\t})\n\t\t)\n\t},\n\tsetClients: (apps): void => {\n\t\tset((s) => ({\n\t\t\tclients: reduce(\n\t\t\t\tapps,\n\t\t\t\t(acc, app) => {\n\t\t\t\t\tif (app.sentryDsn) {\n\t\t\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\t\t\ts.clients[app.name] = new Hub(\n\t\t\t\t\t\t\tnew BrowserClient({\n\t\t\t\t\t\t\t\tdsn: app.sentryDsn,\n\t\t\t\t\t\t\t\trelease: app.version,\n\t\t\t\t\t\t\t\tmaxValueLength: 500\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn acc;\n\t\t\t\t},\n\t\t\t\ts.clients\n\t\t\t)\n\t\t}));\n\t}\n})) as UseBoundStore<ReporterState, StoreApi<ReporterState>>;\n","/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\nimport { Event, EventHint, Severity } from '@sentry/browser';\nimport { useReporter } from './store';\n\nexport const report =\n\t(appId: string) =>\n\t(error: Event, hint?: EventHint): string => {\n\t\tconst reporter = useReporter.getState();\n\t\tconst eventId = reporter.clients[appId]?.captureException(error, { ...hint });\n\t\tif (eventId) {\n\t\t\tconsole.info('Reported event ', eventId);\n\t\t}\n\t\treturn eventId;\n\t};\n\nexport const feedback = (message: Event): string => {\n\tconst reporter = useReporter.getState();\n\tconst eventId = reporter.clients.feedbacks.captureEvent({ ...message, level: Severity.Info });\n\tif (eventId) {\n\t\tconsole.info('Feedback ', eventId, ' sent, Thank you');\n\t}\n\treturn eventId;\n};\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport { GetState, SetState } from 'zustand';\nimport { find } from 'lodash';\nimport { goToLogin } from './go-to-login';\nimport {\n\tAccount,\n\tAccountState,\n\tErrorSoapResponse,\n\tSoapResponse,\n\tSuccessSoapResponse,\n\tTag\n} from '../../types';\nimport { userAgent } from './user-agent';\nimport { noOp } from './noOp';\nimport { report } from '../reporting';\n\nconst getAccount = (\n\tacc?: Account,\n\totherAccount?: string\n): { by: string; _content: string } | undefined => {\n\tif (otherAccount) {\n\t\treturn {\n\t\t\tby: 'name',\n\t\t\t_content: otherAccount\n\t\t};\n\t}\n\tif (acc) {\n\t\tif (acc.name) {\n\t\t\treturn {\n\t\t\t\tby: 'name',\n\t\t\t\t_content: acc.name\n\t\t\t};\n\t\t}\n\t\tif (acc.id) {\n\t\t\treturn {\n\t\t\t\tby: 'id',\n\t\t\t\t_content: acc.id\n\t\t\t};\n\t\t}\n\t}\n\treturn undefined;\n};\n\nconst getXmlAccount = (acc?: Account, otherAccount?: string): string => {\n\tif (otherAccount) {\n\t\treturn `<account by=\"name\">${otherAccount}</account>`;\n\t}\n\tif (acc) {\n\t\tif (acc.name) {\n\t\t\treturn `<account by=\"name\">${acc.name}</account>`;\n\t\t}\n\t\tif (acc.id) {\n\t\t\treturn `<account by=\"id\">${acc.id}</account>`;\n\t\t}\n\t}\n\treturn '';\n};\n\nconst getXmlSession = (context?: any): string => {\n\tif (context?.session?.id) {\n\t\treturn `<session id=\"${context?.session?.id}\"/>`;\n\t}\n\treturn '';\n};\n\nconst handleResponse = <R>(\n\tapi: string,\n\tres: SoapResponse<R>,\n\tset: SetState<AccountState>,\n\tget: GetState<AccountState>\n): R => {\n\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t// @ts-ignore\n\tclearTimeout(get().noOpTimeout);\n\tif (res?.Body?.Fault) {\n\t\tif (\n\t\t\tfind(\n\t\t\t\t['service.AUTH_REQUIRED', 'service.AUTH_EXPIRED'],\n\t\t\t\t(code) => code === (<ErrorSoapResponse>res).Body.Fault.Detail?.Error?.Code\n\t\t\t)\n\t\t) {\n\t\t\tgoToLogin();\n\t\t}\n\t\tthrow new Error(\n\t\t\t`${(<ErrorSoapResponse>res)?.Body.Fault.Detail?.Error?.Detail}: ${\n\t\t\t\t(<ErrorSoapResponse>res).Body.Fault.Reason?.Text\n\t\t\t}`\n\t\t);\n\t}\n\tif (res?.Header?.context) {\n\t\tconst usedQuota =\n\t\t\tres.Header.context?.refresh?.mbx?.[0]?.s ?? res.Header.context?.notify?.[0]?.mbx?.[0]?.s;\n\t\tconst tags = res.Header.context?.refresh?.tags?.tag as Array<Tag>;\n\t\tset({\n\t\t\tnoOpTimeout: setTimeout(() => noOp(get), get().pollingInterval),\n\t\t\ttags: tags ?? get().tags,\n\t\t\tusedQuota: usedQuota ?? get().usedQuota,\n\t\t\tcontext: {\n\t\t\t\t...get().context,\n\t\t\t\t...res?.Header?.context\n\t\t\t}\n\t\t});\n\t}\n\treturn (<SuccessSoapResponse<R>>res).Body[`${api}Response`] as R;\n};\nexport const getSoapFetch =\n\t(app: string, set: SetState<AccountState>, get: GetState<AccountState>) =>\n\t<Request, Response>(api: string, body: Request, otherAccount?: string): Promise<Response> =>\n\t\tfetch(`/service/soap/${api}Request`, {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/json'\n\t\t\t},\n\t\t\tbody: JSON.stringify({\n\t\t\t\tBody: {\n\t\t\t\t\t[`${api}Request`]: body\n\t\t\t\t},\n\t\t\t\tHeader: {\n\t\t\t\t\tcontext: {\n\t\t\t\t\t\t_jsns: 'urn:zimbra',\n\t\t\t\t\t\tnotify: get().context?.notify?.[0]?.seq\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\tseq: get().context?.notify?.[0]?.seq\n\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\tsession: get().context?.session ?? {},\n\t\t\t\t\t\taccount: getAccount(get().account as Account, otherAccount),\n\t\t\t\t\t\tuserAgent: {\n\t\t\t\t\t\t\tname: userAgent,\n\t\t\t\t\t\t\tversion: get().zimbraVersion\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t}) // TODO proper error handling\n\t\t\t.then((res) => res?.json())\n\t\t\t.then((res: SoapResponse<Response>) => handleResponse(api, res, set, get))\n\t\t\t.catch((e) => {\n\t\t\t\treport(app)(e);\n\t\t\t\tthrow e;\n\t\t\t}) as Promise<Response>;\n\nexport const getXmlSoapFetch =\n\t(app: string, set: SetState<AccountState>, get: GetState<AccountState>) =>\n\t<Request, Response>(api: string, body: Request, otherAccount?: string): Promise<Response> =>\n\t\tfetch(`/service/soap/${api}Request`, {\n\t\t\tmethod: 'POST',\n\t\t\theaders: {\n\t\t\t\t'content-type': 'application/soap+xml'\n\t\t\t},\n\t\t\tbody: `<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\t\t<soap:Envelope xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\">\n\t\t\t<soap:Header><context xmlns=\"urn:zimbra\"><userAgent name=\"${userAgent}\" version=\"${\n\t\t\t\tget().zimbraVersion\n\t\t\t}\"/>${getXmlSession(get().context)}${getXmlAccount(\n\t\t\t\tget().account,\n\t\t\t\totherAccount\n\t\t\t)}<format type=\"js\"/></context></soap:Header>\n\t\t\t<soap:Body>${body}</soap:Body>\n\t\t</soap:Envelope>`\n\t\t}) // TODO proper error handling\n\t\t\t.then((res) => res?.json())\n\t\t\t.then((res: SoapResponse<Response>) => handleResponse(api, res, set, get))\n\t\t\t.catch((e) => {\n\t\t\t\treport(app)(e);\n\t\t\t\tthrow e;\n\t\t\t}) as Promise<Response>;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport { GetState } from 'zustand';\nimport { AccountState } from '../../types';\nimport { SHELL_APP_ID } from '../constants';\n\nexport const noOp = (get: GetState<AccountState>): void => {\n\tget().soapFetch(SHELL_APP_ID)(\n\t\t'NoOp',\n\t\tget().pollingInterval === 500\n\t\t\t? { _jsns: 'urn:zimbraMail', limitToOneBlocked: 1, wait: 1 }\n\t\t\t: { _jsns: 'urn:zimbraMail' }\n\t);\n};\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport create, { StoreApi, UseBoundStore } from 'zustand';\nimport { AccountContext, AccountState, SoapFetch } from '../../../types';\nimport { getInfo } from '../../network/get-info';\nimport { getSoapFetch, getXmlSoapFetch } from '../../network/fetch';\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nexport const useAccountStore = create<AccountState>((set, get) => ({\n\taccount: undefined,\n\tversion: '',\n\tsettings: {\n\t\tprefs: {},\n\t\tattrs: {},\n\t\tprops: []\n\t},\n\tcontext: {},\n\tsetContext: (context: AccountContext): void => set({ context }),\n\tinit: (): Promise<void> => getInfo(set, get),\n\tsoapFetch: (app: string): SoapFetch => getSoapFetch(app, set, get),\n\txmlSoapFetch: (app: string): SoapFetch => getXmlSoapFetch(app, set, get),\n\tusedQuota: 0,\n\tlastNotificationTime: Date.now(),\n\tpollingInterval: 30000\n})) as UseBoundStore<AccountState, StoreApi<AccountState>>;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport { GetInfoResponse, Account, AccountSettings } from '../../../types';\n\nconst normalizeSettings = (\n\tsettings: Pick<GetInfoResponse, 'attrs' | 'prefs' | 'props'>\n): AccountSettings => ({\n\tattrs: settings.attrs._attrs,\n\tprefs: settings.prefs._attrs,\n\tprops: settings.props.prop ?? []\n});\n\nexport const normalizeAccount = ({\n\tid,\n\tname,\n\tattrs,\n\tprefs,\n\tidentities,\n\tsignatures,\n\tprops,\n\tversion,\n\trights\n}: GetInfoResponse): {\n\taccount: Account;\n\tsettings: AccountSettings;\n\tversion: string;\n} => {\n\tconst settings = normalizeSettings({ attrs, prefs, props });\n\treturn {\n\t\taccount: {\n\t\t\tid,\n\t\t\tname,\n\t\t\tdisplayName: attrs._attrs.displayName,\n\t\t\tidentities,\n\t\t\tsignatures,\n\t\t\trights\n\t\t},\n\t\tsettings,\n\t\tversion\n\t};\n};\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport { find, get, join } from 'lodash';\nimport { useMemo } from 'react';\nimport {\n\tAccount,\n\tAccountRightName,\n\tAccountRights,\n\tAccountRightTarget,\n\tAccountSettings,\n\tNotifyObject,\n\tTag\n} from '../../../types';\nimport { useAccountStore } from './store';\n\nexport const useUserAccount = (): Account => useAccountStore((s) => s.account as Account);\nexport const useUserAccounts = (): Array<Account> => {\n\tconst acct = useAccountStore((s) => s.account);\n\treturn useMemo(() => (acct ? [acct as Account] : []), [acct]);\n};\n\nexport const useUserRights = (): AccountRights =>\n\tuseAccountStore((s) => s.account?.rights ?? { targets: [] });\n\nexport const useUserRight = (right: AccountRightName): Array<AccountRightTarget> => {\n\tconst { targets } = useUserRights();\n\treturn useMemo(\n\t\t() => find(targets, ['right', right])?.target ?? ([] as Array<AccountRightTarget>),\n\t\t[right, targets]\n\t);\n};\nexport const useUserSettings = (): AccountSettings => useAccountStore((s) => s.settings);\nexport const useUserSetting = <T = void>(...path: Array<string>): string | T =>\n\tuseAccountStore((s) => get(s.settings, join(path, '.')));\nexport const useTags = (): Array<Tag> => useAccountStore((s) => s.tags);\n\nexport const useNotify = (): NotifyObject[] => {\n\tconst notify = useAccountStore((s) => s.context.notify ?? []);\n\treturn notify;\n};\nexport const useRefresh = (): NotifyObject => useAccountStore((s) => s.context.refresh ?? {});\n\nexport const getUserAccount = (): Account => useAccountStore.getState().account as Account;\nexport const getUserAccounts = (): Array<Account> => [\n\tuseAccountStore.getState().account as Account\n];\nexport const getUserSettings = (): AccountSettings => useAccountStore.getState().settings;\nexport const getUserSetting = <T = void>(...path: Array<string>): string | T =>\n\tget(useAccountStore.getState().settings, join(path, '.'));\nexport const getTags = (): Array<Tag> => useAccountStore.getState().tags;\n\nexport const getUserRights = (): AccountRights =>\n\tuseAccountStore.getState().account?.rights ?? { targets: [] };\n\nexport const getUserRight = (right: AccountRightName): Array<AccountRightTarget> =>\n\tfind(getUserRights().targets, ['right', right])?.target ?? ([] as Array<AccountRightTarget>);\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\n/* eslint-disable @typescript-eslint/ban-types */\nimport create, { UseBoundStore, StoreApi } from 'zustand';\nimport { reduce } from 'lodash';\nimport { useEffect } from 'react';\nimport { ContextBridgeState } from '../../types';\n\nexport const useContextBridge = create<ContextBridgeState>((set) => ({\n\tpackageDependentFunctions: {},\n\tfunctions: {},\n\tadd: ({ packageDependentFunctions, functions }): void => {\n\t\tset((s) => ({\n\t\t\tpackageDependentFunctions: reduce(\n\t\t\t\tpackageDependentFunctions ?? {},\n\t\t\t\t(acc, f, key) => {\n\t\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\t\tacc[key] = f;\n\t\t\t\t\treturn acc;\n\t\t\t\t},\n\t\t\t\ts.packageDependentFunctions\n\t\t\t),\n\t\t\tfunctions: reduce(\n\t\t\t\tfunctions ?? {},\n\t\t\t\t(acc, f, key) => {\n\t\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\t\tacc[key] = f;\n\t\t\t\t\treturn acc;\n\t\t\t\t},\n\t\t\t\ts.functions\n\t\t\t)\n\t\t}));\n\t}\n})) as UseBoundStore<ContextBridgeState, StoreApi<ContextBridgeState>>;\n\nexport const useBridge = (content: Partial<Omit<ContextBridgeState, 'add'>>): void => {\n\tconst addFunctions = useContextBridge(({ add }) => add);\n\tuseEffect(() => {\n\t\taddFunctions(content);\n\t}, [content, addFunctions]);\n};\n","/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\nimport React, { FC, useCallback, useEffect, useState } from 'react';\nimport { Container } from '@zextras/carbonio-design-system';\n// TinyMCE so the global var exists\n// eslint-disable-next-line no-unused-vars\nimport tinymce from 'tinymce/tinymce';\n// this 'expression' prevents webpack from stripping it, maybe there's a better way\ntinymce;\n\n// Theme\nimport 'tinymce/themes/silver';\n// Toolbar icons\nimport 'tinymce/icons/default';\n// Editor styles\nimport 'tinymce/skins/ui/oxide/skin.min.css';\n\n// importing the plugin js.\nimport 'tinymce/plugins/advlist';\nimport 'tinymce/plugins/autolink';\nimport 'tinymce/plugins/lists';\nimport 'tinymce/plugins/link';\nimport 'tinymce/plugins/image';\nimport 'tinymce/plugins/charmap';\nimport 'tinymce/plugins/code';\nimport 'tinymce/plugins/print';\nimport 'tinymce/plugins/preview';\nimport 'tinymce/plugins/anchor';\nimport 'tinymce/plugins/searchreplace';\nimport 'tinymce/plugins/visualblocks';\nimport 'tinymce/plugins/fullscreen';\nimport 'tinymce/plugins/insertdatetime';\nimport 'tinymce/plugins/media';\nimport 'tinymce/plugins/table';\nimport 'tinymce/plugins/paste';\nimport 'tinymce/plugins/help';\nimport 'tinymce/plugins/wordcount';\nimport 'tinymce/plugins/quickbars';\nimport 'tinymce/plugins/directionality';\nimport 'tinymce/plugins/autoresize';\n\nimport { Editor } from '@tinymce/tinymce-react';\n\ntype ComposerProps = {\n\t/** The callback invoked when an edit is performed into the editor. `([text, html]) => {}` */\n\tonEditorChange?: (values: [string, string]) => void;\n\t/** Enable the distraction-free mode */\n\tinline?: boolean;\n\t/** The initial content of the editor */\n\tinitialValue?: string;\n\t/** The content of the editor (controlled mode) */\n\tvalue?: string;\n\t/** The base url to append to the resource urls */\n\tbaseAssetsUrl?: string;\n};\n\nconst Composer: FC<ComposerProps> = ({\n\tonEditorChange,\n\tinline = false,\n\tvalue,\n\tbaseAssetsUrl,\n\tinitialValue,\n\t...rest\n}) => {\n\tconst [content, setContent] = useState(initialValue);\n\n\tconst _onEditorChange = useCallback(\n\t\t(newContent, editor) => {\n\t\t\tsetContent(newContent);\n\t\t\tonEditorChange?.([\n\t\t\t\teditor.getContent({ format: 'text' }),\n\t\t\t\teditor.getContent({ format: 'html' })\n\t\t\t]);\n\t\t},\n\t\t[setContent, onEditorChange]\n\t);\n\n\tuseEffect(() => setContent(value), [value]);\n\n\treturn (\n\t\t<Container\n\t\t\theight=\"100%\"\n\t\t\tcrossAlignment=\"baseline\"\n\t\t\tmainAlignment=\"flex-start \"\n\t\t\tstyle={{ overflowY: 'hidden' }}\n\t\t>\n\t\t\t<Editor\n\t\t\t\tvalue={content}\n\t\t\t\tinit={{\n\t\t\t\t\tskin_url: `${baseAssetsUrl}/tinymce/skins/ui/oxide`,\n\t\t\t\t\tcontent_css: `${baseAssetsUrl}/tinymce/skins/content/default/content.css`,\n\t\t\t\t\tmin_height: 350,\n\t\t\t\t\tmenubar: false,\n\t\t\t\t\tstatusbar: false,\n\t\t\t\t\tbranding: false,\n\t\t\t\t\tresize: true,\n\t\t\t\t\tinline,\n\t\t\t\t\tplugins: [\n\t\t\t\t\t\t'advlist',\n\t\t\t\t\t\t'autolink',\n\t\t\t\t\t\t'lists',\n\t\t\t\t\t\t'link',\n\t\t\t\t\t\t'image',\n\t\t\t\t\t\t'charmap',\n\t\t\t\t\t\t'print',\n\t\t\t\t\t\t'preview',\n\t\t\t\t\t\t'anchor',\n\t\t\t\t\t\t'searchreplace',\n\t\t\t\t\t\t'code',\n\t\t\t\t\t\t'fullscreen',\n\t\t\t\t\t\t'insertdatetime',\n\t\t\t\t\t\t'media',\n\t\t\t\t\t\t'table',\n\t\t\t\t\t\t'paste',\n\t\t\t\t\t\t'code',\n\t\t\t\t\t\t'help',\n\t\t\t\t\t\t'quickbars',\n\t\t\t\t\t\t'directionality',\n\t\t\t\t\t\t'autoresize'\n\t\t\t\t\t],\n\t\t\t\t\ttoolbar: inline\n\t\t\t\t\t\t? false\n\t\t\t\t\t\t: // eslint-disable-next-line max-len\n\t\t\t\t\t\t 'fontselect fontsizeselect formatselect | bold italic underline strikethrough | removeformat code | alignleft aligncenter alignright alignjustify | forecolor backcolor | bullist numlist outdent indent | ltr rtl',\n\t\t\t\t\tquickbars_insert_toolbar: inline ? 'bullist numlist' : '',\n\t\t\t\t\tquickbars_selection_toolbar: inline\n\t\t\t\t\t\t? 'bold italic underline | forecolor backcolor | removeformat | quicklink'\n\t\t\t\t\t\t: 'quicklink',\n\t\t\t\t\tcontextmenu: inline ? '' : '',\n\t\t\t\t\ttoolbar_mode: 'wrap'\n\t\t\t\t}}\n\t\t\t\tonEditorChange={_onEditorChange}\n\t\t\t\t{...rest}\n\t\t\t/>\n\t\t</Container>\n\t);\n};\n\nexport default Composer;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport produce from 'immer';\nimport create from 'zustand';\nimport { forEach, omit, reduce } from 'lodash';\nimport { ComponentType } from 'react';\nimport { ActionFactory, AnyFunction, IntegrationsState, SHELL_APP_ID } from '../../../types';\nimport Composer from './composer';\n\nexport const useIntegrationsStore = create<IntegrationsState>((set) => ({\n\tactions: {},\n\tcomponents: {\n\t\tcomposer: {\n\t\t\titem: Composer,\n\t\t\tapp: SHELL_APP_ID\n\t\t}\n\t},\n\thooks: {},\n\tfunctions: {},\n\tregisterActions: <T>(\n\t\t...items: Array<{ id: string; action: ActionFactory<T>; type: string }>\n\t): void =>\n\t\tset(\n\t\t\tproduce((state) => {\n\t\t\t\tforEach(items, ({ id, action, type }) => {\n\t\t\t\t\tif (!state.actions[type]) state.actions[type] = {};\n\t\t\t\t\tstate.actions[type][id] = action;\n\t\t\t\t});\n\t\t\t})\n\t\t),\n\tregisterComponents:\n\t\t(app: string) =>\n\t\t(...items: Array<{ id: string; component: ComponentType }>): void =>\n\t\t\tset(\n\t\t\t\tproduce((state) => {\n\t\t\t\t\tforEach(items, ({ id, component }) => {\n\t\t\t\t\t\tstate.components[id] = { app, item: component };\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t),\n\tregisterHooks: (...items: Array<{ id: string; hook: AnyFunction }>): void =>\n\t\tset(\n\t\t\tproduce((state) => {\n\t\t\t\tforEach(items, ({ id, hook }) => {\n\t\t\t\t\tstate.hooks[id] = hook;\n\t\t\t\t});\n\t\t\t})\n\t\t),\n\tregisterFunctions: (...items: Array<{ id: string; fn: AnyFunction }>): void =>\n\t\tset(\n\t\t\tproduce((state) => {\n\t\t\t\tforEach(items, ({ id, fn }) => {\n\t\t\t\t\tstate.functions[id] = fn;\n\t\t\t\t});\n\t\t\t})\n\t\t),\n\tremoveActions: (...ids: Array<string>): void =>\n\t\tset((s) => ({\n\t\t\t...s,\n\t\t\tactions: reduce(\n\t\t\t\ts.actions,\n\t\t\t\t(acc, actions, type) => ({ ...acc, [type]: omit(actions, ids) }),\n\t\t\t\t{}\n\t\t\t)\n\t\t})),\n\tremoveComponents: (...ids: Array<string>): void =>\n\t\tset((s) => ({\n\t\t\t...s,\n\t\t\tactions: omit(s.components, ids)\n\t\t})),\n\tremoveHooks: (...ids: Array<string>): void =>\n\t\tset((s) => ({\n\t\t\t...s,\n\t\t\tactions: omit(s.hooks, ids)\n\t\t})),\n\tremoveFunctions: (...ids: Array<string>): void =>\n\t\tset((s) => ({\n\t\t\t...s,\n\t\t\tactions: omit(s.functions, ids)\n\t\t}))\n}));\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport { createContext, useContext } from 'react';\n\nexport const BootstrapperContext = createContext<any>({});\n\nexport function useI18nFactory(): any {\n\tconst { i18nFactory } = useContext(BootstrapperContext);\n\treturn i18nFactory;\n}\n\nexport function useStoreFactory(): any {\n\tconst { storeFactory } = useContext(BootstrapperContext);\n\treturn storeFactory;\n}\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { FC, useCallback } from 'react';\nimport { Catcher } from '@zextras/carbonio-design-system';\n\nconst AppErrorCatcher: FC = ({ children }) => {\n\tconst onError = useCallback((error) => {\n\t\tconsole.error(error);\n\t\t// ({event: 'report-exception',data: { exception: error }});\n\t}, []);\n\treturn <Catcher onError={onError}>{children}</Catcher>;\n};\nexport default AppErrorCatcher;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { FC, useMemo } from 'react';\nimport { Provider } from 'react-redux';\nimport { I18nextProvider } from 'react-i18next';\nimport { ModalManager, SnackbarManager } from '@zextras/carbonio-design-system';\nimport { useStoreFactory, useI18nFactory } from '../bootstrapper-context';\nimport AppErrorCatcher from './app-error-catcher';\nimport { getApp, getShell } from '../../store/app';\n\nconst AppContextProvider: FC<{ pkg: string }> = ({ pkg, children }) => {\n\tconst i18nFactory = useI18nFactory();\n\tconst storeFactory = useStoreFactory();\n\tconst app = useMemo(() => getApp(pkg)() ?? getShell(), [pkg]);\n\tconst store = useMemo(() => storeFactory.getStoreForApp(app), [app, storeFactory]);\n\tconst i18n = useMemo(() => i18nFactory.getAppI18n(app), [i18nFactory, app]);\n\treturn (\n\t\t<Provider store={store}>\n\t\t\t<I18nextProvider i18n={i18n}>\n\t\t\t\t<ModalManager>\n\t\t\t\t\t<SnackbarManager>\n\t\t\t\t\t\t<AppErrorCatcher>{children}</AppErrorCatcher>\n\t\t\t\t\t</SnackbarManager>\n\t\t\t\t</ModalManager>\n\t\t\t</I18nextProvider>\n\t\t</Provider>\n\t);\n};\n\nexport default AppContextProvider;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\n/* eslint-disable react-hooks/rules-of-hooks */\n/* THIS FILE CONTAINS HOOKS, BUT ESLINT IS DUMB */\n\nimport { compact, map } from 'lodash';\nimport React, { FC, FunctionComponent } from 'react';\nimport { useIntegrationsStore } from './store';\nimport { Action, ActionFactory } from '../../../types';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport AppContextProvider from '../../boot/app/app-context-provider';\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const getIntegratedHook = (id: string): [Function, boolean] => {\n\tconst integration = useIntegrationsStore.getState().hooks?.[id];\n\t// eslint-disable-next-line @typescript-eslint/no-empty-function\n\treturn integration ? [integration, true] : [(): void => {}, false];\n};\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const getIntegratedFunction = (id: string): [Function, boolean] => {\n\tconst integration = useIntegrationsStore.getState().functions?.[id];\n\t// eslint-disable-next-line @typescript-eslint/no-empty-function\n\treturn integration ? [integration, true] : [(): void => {}, false];\n};\n\nexport const getIntegratedComponent = (id: string): [FunctionComponent<unknown>, boolean] => {\n\tconst Integration = useIntegrationsStore.getState().components?.[id];\n\tif (Integration) {\n\t\tconst C: FC = (props: unknown) => (\n\t\t\t<AppContextProvider pkg={Integration.app}>\n\t\t\t\t{/* eslint-disable-next-line @typescript-eslint/ban-ts-comment */}\n\t\t\t\t{/* @ts-ignore */}\n\t\t\t\t<Integration.item {...props} />\n\t\t\t</AppContextProvider>\n\t\t);\n\t\treturn [C, true];\n\t}\n\treturn [(): null => null, false];\n};\n\nexport const getActions = <T,>(target: T, type: string): Array<Action> => {\n\tconst factories = useIntegrationsStore.getState().actions[type];\n\treturn compact(\n\t\tmap(factories, (f) => {\n\t\t\ttry {\n\t\t\t\tconst action = f(target);\n\t\t\t\treturn action;\n\t\t\t} catch (e) {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.error(e);\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t})\n\t);\n};\n\nexport const getActionsFactory = (type: string): (<T>(target: T) => Array<Action>) => {\n\tconst factories = useIntegrationsStore.getState().actions[type];\n\treturn <T,>(target: T): Array<Action> =>\n\t\tcompact(\n\t\t\tmap(factories, (f) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst action = f(target);\n\t\t\t\t\treturn action;\n\t\t\t\t} catch (e) {\n\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\tconsole.error(e);\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t})\n\t\t);\n};\n\nexport const getAction = <T,>(\n\ttype: string,\n\tid: string,\n\ttarget?: T\n): [Action | undefined, boolean] => {\n\tconst factory = useIntegrationsStore.getState().actions[type]?.[id];\n\tconst action = factory?.(target);\n\treturn [action, !!action];\n};\n\nexport const getActionFactory = <T,>(\n\ttype: string,\n\tid: string\n): [ActionFactory<T> | undefined, boolean] => {\n\tconst factory = useIntegrationsStore.getState().actions[type]?.[id];\n\treturn [factory, !!factory];\n};\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport { createContext } from 'react';\n\nconst ShellContext = createContext({ isMobile: true });\n\nexport default ShellContext;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\n/* eslint-disable react-hooks/rules-of-hooks */\n\nimport { useContext, useState } from 'react';\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport ShellContext from './shell-context';\n\nexport function useIsMobile(): boolean {\n\tconst { isMobile } = useContext(ShellContext);\n\treturn isMobile;\n}\n\nexport function useLocalStorage<T>(key: string, initialValue: T): any {\n\tconst [storedValue, setStoredValue] = useState<T>(() => {\n\t\ttry {\n\t\t\tconst item = window.localStorage.getItem(key);\n\t\t\treturn item ? JSON.parse(item) : initialValue;\n\t\t} catch (error) {\n\t\t\tconsole.error(error);\n\t\t\treturn initialValue;\n\t\t}\n\t});\n\tconst setValue = (value: T | ((val: T) => T)): any => {\n\t\ttry {\n\t\t\tconst valueToStore = value instanceof Function ? value(storedValue) : value;\n\t\t\tsetStoredValue(valueToStore);\n\t\t\tlocalStorage.setItem(key, JSON.stringify(valueToStore));\n\t\t} catch (error) {\n\t\t\tconsole.error(error);\n\t\t}\n\t};\n\treturn [storedValue, setValue] as const;\n}\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\n/* eslint-disable react-hooks/rules-of-hooks */\n/* THIS FILE CONTAINS HOOKS, BUT ESLINT IS DUMB */\n\nimport { compact, map } from 'lodash';\nimport React, { useMemo, FC, FunctionComponent, useCallback } from 'react';\nimport { useIntegrationsStore } from './store';\nimport { Action, ActionFactory, CombinedActionFactory } from '../../../types';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport AppContextProvider from '../../boot/app/app-context-provider';\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const useIntegratedHook = (id: string): [Function, boolean] => {\n\tconst integration = useIntegrationsStore((s) => s.hooks?.[id]);\n\t// eslint-disable-next-line @typescript-eslint/no-empty-function\n\treturn integration ? [integration, true] : [(): void => {}, false];\n};\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const useIntegratedFunction = (id: string): [Function, boolean] => {\n\tconst integration = useIntegrationsStore((s) => s.functions?.[id]);\n\t// eslint-disable-next-line @typescript-eslint/no-empty-function\n\treturn integration ? [integration, true] : [(): void => {}, false];\n};\n\nexport const useIntegratedComponent = (id: string): [FunctionComponent<unknown>, boolean] => {\n\tconst Integration = useIntegrationsStore((s) => s.components?.[id]);\n\treturn useMemo(() => {\n\t\tif (Integration) {\n\t\t\tconst C: FC = (props: unknown) => (\n\t\t\t\t<AppContextProvider pkg={Integration.app}>\n\t\t\t\t\t{/* eslint-disable-next-line @typescript-eslint/ban-ts-comment */}\n\t\t\t\t\t{/* @ts-ignore */}\n\t\t\t\t\t<Integration.item {...props} />\n\t\t\t\t</AppContextProvider>\n\t\t\t);\n\t\t\treturn [C, true];\n\t\t}\n\t\treturn [(): null => null, false];\n\t}, [Integration]);\n};\n\nexport const useActions = <T,>(target: T, type: string): Array<Action> => {\n\tconst factories = useIntegrationsStore((s) => s.actions[type]);\n\tconst actions = useMemo(\n\t\t() =>\n\t\t\tcompact(\n\t\t\t\tmap(factories, (f) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst action = f(target);\n\t\t\t\t\t\treturn action;\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\t\tconsole.error(e);\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t) ?? [],\n\t\t[factories, target]\n\t);\n\treturn actions;\n};\n\nexport const useActionsFactory = <T,>(type: string): CombinedActionFactory<T> => {\n\tconst factories = useIntegrationsStore((s) => s.actions[type]);\n\tconst combinedFactory = useCallback(\n\t\t(target: unknown) =>\n\t\t\tcompact(\n\t\t\t\tmap(factories, (f) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst action = f(target);\n\t\t\t\t\t\treturn action;\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\t\tconsole.error(e);\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t),\n\t\t[factories]\n\t);\n\treturn combinedFactory;\n};\n\nexport const useAction = <T,>(\n\ttype: string,\n\tid: string,\n\ttarget?: T\n): [Action | undefined, boolean] => {\n\tconst factory = useIntegrationsStore((s) => s.actions[type][id]);\n\tconst action = useMemo(() => {\n\t\ttry {\n\t\t\treturn factory?.(target);\n\t\t} catch (e) {\n\t\t\treturn undefined;\n\t\t}\n\t}, [factory, target]);\n\treturn [action, !!action];\n};\n\nexport const useActionFactory = <T,>(\n\ttype: string,\n\tid: string\n): [ActionFactory<T> | undefined, boolean] => {\n\tconst factory = useIntegrationsStore((s) => s.actions[type][id]);\n\treturn [factory, !!factory];\n};\n","/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport { To } from 'history';\nimport { find, startsWith, replace, trim } from 'lodash';\nimport { useMemo, useCallback } from 'react';\nimport { useLocation, useHistory } from 'react-router-dom';\nimport { AppRoute, HistoryParams } from '../../types';\nimport { useRoutes, getRoutes } from '../store/app';\nimport { useContextBridge } from '../store/context-bridge';\n\nexport const useCurrentRoute = (): AppRoute | undefined => {\n\tconst location = useLocation();\n\tconst routes = useRoutes();\n\treturn useMemo(\n\t\t() => find(routes, (r) => startsWith(trim(location.pathname, '/'), r.route)),\n\t\t[location.pathname, routes]\n\t);\n};\nexport const getCurrentRoute = (): AppRoute | undefined => {\n\tconst history = useContextBridge.getState().functions.getHistory?.();\n\tconst routes = getRoutes();\n\treturn find(routes, (r) => startsWith(trim(history.location.pathname, '/'), r.route));\n};\n\nexport const parseParams = (params: HistoryParams): To => {\n\tif (typeof params === 'string') {\n\t\treturn replace(`/${getCurrentRoute()?.route}/${params}`, '//', '/');\n\t}\n\tconst routeToApply = params.route\n\t\t? find(getRoutes(), (r) => r.id === params.route || r.route === params.route)\n\t\t: getCurrentRoute();\n\treturn typeof params.path === 'string'\n\t\t? replace(`/${routeToApply?.route}/${params.path}`, '//', '/')\n\t\t: {\n\t\t\t\tsearch: params.path.search,\n\t\t\t\thash: params.path.hash,\n\t\t\t\tpathname: replace(`/${routeToApply?.route}/${params.path.pathname}`, '//', '/')\n\t\t };\n};\n\nexport const usePushHistoryCallback = (): ((params: HistoryParams) => void) => {\n\tconst history = useHistory();\n\tconst cb = useCallback(\n\t\t(params: HistoryParams): void => history.push(parseParams(params)),\n\t\t[history]\n\t);\n\treturn cb;\n};\n\nexport const useReplaceHistoryCallback = (): ((params: HistoryParams) => void) => {\n\tconst history = useHistory();\n\tconst cb = useCallback(\n\t\t(params: HistoryParams): void => history.replace(parseParams(params)),\n\t\t[history]\n\t);\n\treturn cb;\n};\n\nexport function useGoBackHistoryCallback(): () => void {\n\tconst history = useHistory();\n\treturn history.goBack;\n}\n\nexport const pushHistory = (params: HistoryParams): void => {\n\tconst history = useContextBridge.getState().functions.getHistory?.();\n\thistory.push(parseParams(params));\n};\n\nexport const replaceHistory = (params: HistoryParams): void => {\n\tconst history = useContextBridge.getState().functions.getHistory?.();\n\thistory.replace(parseParams(params));\n};\n\nexport const goBackHistory = (): void =>\n\tuseContextBridge.getState().functions.getHistory?.().goBack();\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport { createContext } from 'react';\n\nconst BoardValueContext = createContext({\n\tboards: {},\n\tcurrentBoard: 0,\n\tlargeView: false,\n\tminimized: false\n});\nconst BoardSetterContext = createContext({\n\taddBoard: (url, title, context) => undefined,\n\tremoveBoard: (key) => undefined,\n\tremoveCurrentBoard: () => undefined,\n\tremoveAllBoards: () => undefined,\n\tupdateBoard: (key, url, title) => undefined,\n\tsetCurrentBoard: (key) => undefined,\n\tupdateCurrentBoard: (url, title) => undefined,\n\ttoggleLargeView: () => undefined,\n\ttoggleMinimized: () => undefined\n});\n\nexport { BoardValueContext, BoardSetterContext };\n","/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\nimport { useContext, useCallback } from 'react';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { BoardSetterContext, BoardValueContext } from './board-context';\n\nexport const getUseAddBoardCallback =\n\t(appId: string) => (): ((path: string, context?: unknown | { app: string }) => void) => {\n\t\tconst { addBoard } = useContext(BoardSetterContext);\n\t\tconst callback = useCallback(\n\t\t\t(path: string, context?: unknown | { app?: string }) => {\n\t\t\t\taddBoard(path, context, (context as { app?: string })?.app ?? appId);\n\t\t\t},\n\t\t\t[addBoard]\n\t\t);\n\t\treturn callback;\n\t};\n\nexport function useUpdateCurrentBoard(): (url: string, title: string) => void {\n\tconst { updateCurrentBoard } = useContext(BoardSetterContext);\n\treturn updateCurrentBoard;\n}\n\nexport function useRemoveCurrentBoard(): () => void {\n\tconst { removeCurrentBoard } = useContext(BoardSetterContext);\n\treturn removeCurrentBoard;\n}\n\nexport function useBoardConfig(): unknown {\n\tconst context: any = useContext(BoardValueContext);\n\tif (context) {\n\t\treturn context.boards?.[context.currentBoard]?.context;\n\t}\n\treturn undefined;\n}\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n// The 'useXXX' functions actually return hooks\n/* eslint-disable react-hooks/rules-of-hooks */\n\nimport { reduce } from 'lodash';\nimport { getApp, getAppContext, useApp, useAppContext } from '../../store/app';\nimport { useContextBridge } from '../../store/context-bridge';\nimport {\n\tgetAction,\n\tgetActions,\n\tgetActionsFactory,\n\tgetActionFactory,\n\tgetIntegratedComponent,\n\tgetIntegratedFunction,\n\tgetIntegratedHook\n} from '../../store/integrations/getters';\nimport {\n\tgetUserAccount,\n\tgetUserAccounts,\n\tgetUserSettings,\n\tgetTags,\n\tuseUserAccount,\n\tuseUserAccounts,\n\tuseUserSettings,\n\tuseTags,\n\tuseNotify,\n\tuseRefresh,\n\tuseUserRight,\n\tuseUserRights,\n\tgetUserRight,\n\tgetUserRights,\n\tuseAccountStore\n} from '../../store/account';\nimport { useIsMobile } from '../../shell/hooks';\nimport {\n\tuseAction,\n\tuseActions,\n\tuseActionsFactory,\n\tuseActionFactory,\n\tuseIntegratedComponent,\n\tuseIntegratedFunction,\n\tuseIntegratedHook\n} from '../../store/integrations/hooks';\nimport { CarbonioModule } from '../../../types';\nimport { getEditSettingsForApp } from '../../network/edit-settings';\nimport {\n\tusePushHistoryCallback,\n\tuseGoBackHistoryCallback,\n\tuseReplaceHistoryCallback,\n\tgetCurrentRoute,\n\tuseCurrentRoute,\n\treplaceHistory,\n\tgoBackHistory,\n\tpushHistory\n} from '../../history/hooks';\nimport {\n\tgetUseAddBoardCallback,\n\tuseBoardConfig,\n\tuseRemoveCurrentBoard,\n\tuseUpdateCurrentBoard\n} from '../../shell/boards/board-hooks';\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const getAppFunctions = (pkg: CarbonioModule): Record<string, Function> => ({\n\tsoapFetch: useAccountStore.getState().soapFetch(pkg.name),\n\txmlSoapFetch: useAccountStore.getState().xmlSoapFetch(pkg.name),\n\n\t// APP STORE FUNCTIONS\n\tuseAppContext: useAppContext(pkg.name),\n\tgetAppContext: getAppContext(pkg.name),\n\tuseApp: useApp(pkg.name),\n\tgetApp: getApp(pkg.name),\n\n\t// INTEGRATIONS\n\tuseIntegratedHook,\n\tgetIntegratedHook,\n\tuseIntegratedFunction,\n\tgetIntegratedFunction,\n\tuseIntegratedComponent,\n\tgetIntegratedComponent,\n\tuseAction,\n\tgetAction,\n\tuseActions,\n\tgetActions,\n\tuseActionsFactory,\n\tgetActionsFactory,\n\tuseActionFactory,\n\tgetActionFactory,\n\t// ACCOUNTS\n\tuseUserAccount,\n\tgetUserAccount,\n\tuseUserAccounts,\n\tgetUserAccounts,\n\tuseUserSettings,\n\tgetUserSettings,\n\tuseUserRight,\n\tuseUserRights,\n\tgetUserRight,\n\tgetUserRights,\n\tuseTags,\n\tgetTags,\n\tuseNotify,\n\tuseRefresh,\n\t// BOARDS\n\tuseAddBoardCallback: getUseAddBoardCallback(pkg.name),\n\tuseUpdateCurrentBoard,\n\tuseRemoveCurrentBoard,\n\tuseBoardConfig,\n\t// HISTORY\n\tusePushHistoryCallback,\n\tuseGoBackHistoryCallback,\n\tuseReplaceHistoryCallback,\n\tuseCurrentRoute,\n\tgetCurrentRoute,\n\tpushHistory,\n\tgoBackHistory,\n\treplaceHistory,\n\t// STUFF\n\tuseIsMobile,\n\tgetBridgedFunctions: (): unknown => {\n\t\tconst { packageDependentFunctions, functions } = useContextBridge.getState();\n\t\treturn {\n\t\t\t...functions,\n\t\t\t...reduce(packageDependentFunctions, (acc, f, name) => ({ ...acc, [name]: f(pkg.name) }), {})\n\t\t};\n\t}\n});\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { FC } from 'react';\nimport { Button, Container } from '@zextras/carbonio-design-system';\n\nexport const Spinner: FC = () => (\n\t<Container width=\"fill\" height=\"fill\" mainAlignment=\"center\" crossAlignment=\"center\">\n\t\t<Button type=\"ghost\" label=\"Button\" color=\"primary\" loading />\n\t</Container>\n);\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { FC, useMemo } from 'react';\nimport { Link as RRLink, LinkProps } from 'react-router-dom';\nimport { parseParams } from '../history/hooks';\n\ntype AppLinkProps = LinkProps & {\n\troute?: string;\n};\nexport const AppLink: FC<AppLinkProps> = ({ to, route, ...rest }) => {\n\tconst _to = useMemo(() => parseParams({ path: to, route }), [route, to]);\n\treturn <RRLink style={{ textDecoration: 'none' }} to={_to} {...rest} />;\n};\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport { filter, find, findIndex, forEach, map, reduce } from 'lodash';\nimport { SHELL_APP_ID } from '../constants';\nimport { useAccountStore } from '../store/account/store';\nimport { AccountState, Mods, Account } from '../../types';\n\nexport const editSettings = (mods: Mods, appId: string = SHELL_APP_ID): Promise<any> =>\n\tuseAccountStore\n\t\t.getState()\n\t\t.xmlSoapFetch(SHELL_APP_ID)(\n\t\t\t'Batch',\n\t\t\t`<BatchRequest xmlns=\"urn:zimbra\" onerror=\"stop\">${\n\t\t\t\tmods.props\n\t\t\t\t\t? `<ModifyPropertiesRequest xmlns=\"urn:zimbraAccount\">${map(\n\t\t\t\t\t\t\tmods.props,\n\t\t\t\t\t\t\t(prop, key) =>\n\t\t\t\t\t\t\t\t`<prop name=\"${key}\" zimlet=\"${prop.app ?? appId}\">${prop.value}</prop>`\n\t\t\t\t\t )}</ModifyPropertiesRequest>`\n\t\t\t\t\t: ''\n\t\t\t}${\n\t\t\t\tmods.prefs\n\t\t\t\t\t? `<ModifyPrefsRequest xmlns=\"urn:zimbraAccount\">${map(\n\t\t\t\t\t\t\tmods.prefs,\n\t\t\t\t\t\t\t(pref, key) => `<pref name=\"${key}\">${pref}</pref>`\n\t\t\t\t\t ).join('')}</ModifyPrefsRequest>`\n\t\t\t\t\t: ''\n\t\t\t}${\n\t\t\t\tmods.identity?.modifyList\n\t\t\t\t\t? map(\n\t\t\t\t\t\t\tmods.identity.modifyList,\n\t\t\t\t\t\t\t(item) =>\n\t\t\t\t\t\t\t\t`<ModifyIdentityRequest xmlns=\"urn:zimbraAccount\" requestId=\"0\"><identity id=\"${\n\t\t\t\t\t\t\t\t\titem.id\n\t\t\t\t\t\t\t\t}\">${map(item.prefs, (value, key) => `<a name=\"${key}\">${value}</a>`).join(\n\t\t\t\t\t\t\t\t\t''\n\t\t\t\t\t\t\t\t)}<a name=\"zimbraPrefFromAddressType\">sendAs</a></identity></ModifyIdentityRequest>`\n\t\t\t\t\t ).join('')\n\t\t\t\t\t: ''\n\t\t\t}${\n\t\t\t\tmods.identity?.deleteList\n\t\t\t\t\t? map(\n\t\t\t\t\t\t\tmods.identity.deleteList,\n\t\t\t\t\t\t\t(item) =>\n\t\t\t\t\t\t\t\t`<DeleteIdentityRequest xmlns=\"urn:zimbraAccount\" requestId=\"0\"><identity id=\"${item}\"/></DeleteIdentityRequest>`\n\t\t\t\t\t ).join('')\n\t\t\t\t\t: ''\n\t\t\t}${\n\t\t\t\tmods.identity?.createList\n\t\t\t\t\t? map(\n\t\t\t\t\t\t\tmods.identity.createList,\n\t\t\t\t\t\t\t(item) =>\n\t\t\t\t\t\t\t\t`<CreateIdentityRequest xmlns=\"urn:zimbraAccount\" requestId=\"${item.prefs.requestId}\"><identity name=\"${item.prefs.zimbraPrefIdentityName}\"><a name=\"zimbraPrefIdentityName\">${item.prefs.zimbraPrefIdentityName}</a><a name=\"zimbraPrefFromDisplay\">${item.prefs.zimbraPrefFromDisplay}</a><a name=\"zimbraPrefFromAddress\">${item.prefs.zimbraPrefFromAddress}</a><a name=\"zimbraPrefFromAddressType\">sendAs</a><a name=\"zimbraPrefReplyToEnabled\">${item.prefs.zimbraPrefReplyToEnabled}</a><a name=\"zimbraPrefReplyToDisplay\">${item.prefs.zimbraPrefReplyToDisplay}</a><a name=\"zimbraPrefReplyToAddress\">${item.prefs.zimbraPrefReplyToAddress}</a><a name=\"zimbraPrefDefaultSignatureId\">${item.prefs.zimbraPrefDefaultSignatureId}</a><a name=\"zimbraPrefForwardReplySignatureId\">${item.prefs.zimbraPrefForwardReplySignatureId}</a><a name=\"zimbraPrefWhenSentToEnabled\">${item.prefs.zimbraPrefWhenSentToEnabled}</a><a name=\"zimbraPrefWhenInFoldersEnabled\">${item.prefs.zimbraPrefWhenInFoldersEnabled}</a></identity></CreateIdentityRequest>`\n\t\t\t\t\t ).join('')\n\t\t\t\t\t: ''\n\t\t\t}${\n\t\t\t\tmods.permissions\n\t\t\t\t\t? `<RevokeRightsRequest xmlns=\"urn:zimbraAccount\" requestId=\"0\">${\n\t\t\t\t\t\t\tmods.permissions.freeBusy\n\t\t\t\t\t\t\t\t? map(mods.permissions.freeBusy.current, (right) => {\n\t\t\t\t\t\t\t\t\t\tif (right.gt === 'dom')\n\t\t\t\t\t\t\t\t\t\t\treturn `<ace right=\"viewFreeBusy\" gt=\"${right.gt}\" zid=\"${right.zid}\" d=\"zextras.com\"/>`;\n\t\t\t\t\t\t\t\t\t\tif (right.gt === 'all' && right.deny)\n\t\t\t\t\t\t\t\t\t\t\treturn `<ace right=\"viewFreeBusy\" gt=\"${right.gt}\" zid=\"${right.zid}\" deny=\"1\"/>`;\n\t\t\t\t\t\t\t\t\t\tif (right.gt === 'usr')\n\t\t\t\t\t\t\t\t\t\t\treturn `<ace right=\"viewFreeBusy\" gt=\"${right.gt}\" zid=\"${right.zid}\" d=\"${right.d}\"/>`;\n\t\t\t\t\t\t\t\t\t\treturn `<ace right=\"viewFreeBusy\" gt=\"${right.gt}\" zid=\"${right.zid}\" />`;\n\t\t\t\t\t\t\t\t }).join('')\n\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t }${\n\t\t\t\t\t\t\tmods.permissions.inviteRight\n\t\t\t\t\t\t\t\t? map(mods.permissions.inviteRight.current, (right) => {\n\t\t\t\t\t\t\t\t\t\tif (right.gt === 'all' && right.deny)\n\t\t\t\t\t\t\t\t\t\t\treturn `<ace right=\"invite\" gt=\"${right.gt}\" zid=\"${right.zid}\" deny=\"1\"/>`;\n\t\t\t\t\t\t\t\t\t\tif (right.gt === 'usr')\n\t\t\t\t\t\t\t\t\t\t\treturn `<ace right=\"invite\" gt=\"${right.gt}\" zid=\"${right.zid}\" d=\"${right.d}\"/>`;\n\t\t\t\t\t\t\t\t\t\treturn `<ace right=\"invite\" gt=\"${right.gt}\" zid=\"${right.zid}\" />`;\n\t\t\t\t\t\t\t\t }).join('')\n\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t }</RevokeRightsRequest><GrantRightsRequest xmlns=\"urn:zimbraAccount\" requestId=\"1\">${\n\t\t\t\t\t\t\tmods.permissions.freeBusy\n\t\t\t\t\t\t\t\t? `${((): string => {\n\t\t\t\t\t\t\t\t\t\tif (mods.permissions.freeBusy.new.gt === 'dom') {\n\t\t\t\t\t\t\t\t\t\t\treturn `<ace right=\"viewFreeBusy\" gt=\"${mods.permissions.freeBusy.new.gt}\" d=\"zextras.com\"/>`;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\tmods.permissions.freeBusy.new.gt === 'all' &&\n\t\t\t\t\t\t\t\t\t\t\tmods.permissions.freeBusy.new.deny\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\treturn `<ace right=\"viewFreeBusy\" gt=\"${mods.permissions.freeBusy.new.gt}\" deny=\"1\"/>`;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (mods.permissions.freeBusy.new.gt === 'usr') {\n\t\t\t\t\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t\t\t\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\t\t\t\t\treturn map(\n\t\t\t\t\t\t\t\t\t\t\t\tmods.permissions.freeBusy.new.d,\n\t\t\t\t\t\t\t\t\t\t\t\t(u) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t`<ace right=\"viewFreeBusy\" gt=\"${mods.permissions?.freeBusy.new.gt}\" d=\"${u.email}\"/>`\n\t\t\t\t\t\t\t\t\t\t\t).join('');\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn `<ace right=\"viewFreeBusy\" gt=\"${mods.permissions.freeBusy.new.gt}\" />`;\n\t\t\t\t\t\t\t\t })()}`\n\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t }${\n\t\t\t\t\t\t\tmods.permissions.inviteRight\n\t\t\t\t\t\t\t\t? `${((): string => {\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\tmods.permissions.inviteRight.new.gt === 'all' &&\n\t\t\t\t\t\t\t\t\t\t\tmods.permissions.inviteRight.new.deny\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\treturn `<ace right=\"invite\" gt=\"${mods.permissions.inviteRight.new.gt}\" deny=\"1\"/>`;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (mods.permissions.inviteRight.new.gt === 'usr') {\n\t\t\t\t\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t\t\t\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\t\t\t\t\treturn map(\n\t\t\t\t\t\t\t\t\t\t\t\tmods.permissions.inviteRight.new.d,\n\t\t\t\t\t\t\t\t\t\t\t\t(u) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t`<ace right=\"invite\" gt=\"${mods.permissions?.inviteRight.new.gt}\" d=\"${u.email}\"/>`\n\t\t\t\t\t\t\t\t\t\t\t).join('');\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn `<ace right=\"invite\" gt=\"${mods.permissions?.inviteRight.new.gt}\" />`;\n\t\t\t\t\t\t\t\t })()}`\n\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t }\n\t</GrantRightsRequest>`\n\t\t\t\t\t: ''\n\t\t\t}</BatchRequest>`\n\t\t)\n\t\t.then((r: any) => {\n\t\t\tuseAccountStore.setState((s: AccountState) => ({\n\t\t\t\tsettings: {\n\t\t\t\t\t...s.settings,\n\t\t\t\t\tprefs: reduce(\n\t\t\t\t\t\tmods.prefs,\n\t\t\t\t\t\t(acc, pref, key) => ({\n\t\t\t\t\t\t\t...acc,\n\t\t\t\t\t\t\t[key]: pref as string\n\t\t\t\t\t\t}),\n\t\t\t\t\t\ts.settings.prefs\n\t\t\t\t\t),\n\t\t\t\t\tprops: reduce(\n\t\t\t\t\t\tmods.props,\n\t\t\t\t\t\t(acc, { app, value }, key) => {\n\t\t\t\t\t\t\tconst propIndex = findIndex(acc, (p) => p.name === key && p.zimlet === app);\n\t\t\t\t\t\t\tif (propIndex >= 0) {\n\t\t\t\t\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\t\t\t\t\tacc[propIndex] = {\n\t\t\t\t\t\t\t\t\tname: key,\n\t\t\t\t\t\t\t\t\tzimlet: app,\n\t\t\t\t\t\t\t\t\t_content: value as string\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tacc.push({\n\t\t\t\t\t\t\t\t\tname: key,\n\t\t\t\t\t\t\t\t\tzimlet: app,\n\t\t\t\t\t\t\t\t\t_content: value as string\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn acc;\n\t\t\t\t\t\t},\n\t\t\t\t\t\ts.settings.props\n\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t\taccount: {\n\t\t\t\t\t...s.account,\n\t\t\t\t\tdisplayName:\n\t\t\t\t\t\tfind(mods?.identity?.modifyList, (item) => item.id === s?.account?.id)?.prefs\n\t\t\t\t\t\t\t.zimbraPrefIdentityName || s.account?.displayName,\n\t\t\t\t\tname:\n\t\t\t\t\t\tfind(mods?.identity?.modifyList, (item) => item.id === s?.account?.id)?.prefs\n\t\t\t\t\t\t\t.zimbraPrefFromAddress || s.account?.name,\n\t\t\t\t\tidentities: {\n\t\t\t\t\t\tidentity:\n\t\t\t\t\t\t\ttypeof s.account !== 'undefined'\n\t\t\t\t\t\t\t\t? reduce(\n\t\t\t\t\t\t\t\t\t\tmods?.identity?.modifyList,\n\t\t\t\t\t\t\t\t\t\t(acc, { id, prefs }) => {\n\t\t\t\t\t\t\t\t\t\t\tconst tempResult = [];\n\t\t\t\t\t\t\t\t\t\t\tconst propIndex = findIndex(\n\t\t\t\t\t\t\t\t\t\t\t\tacc,\n\t\t\t\t\t\t\t\t\t\t\t\t(itemMods, indexAccount) => acc[indexAccount].id === id\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\tif (propIndex > -1) {\n\t\t\t\t\t\t\t\t\t\t\t\tforEach(Object.keys(prefs), (item, _index) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\t\t\t\t\t\t\t\t\t\tacc[propIndex]._attrs[item] = Object.values(prefs)[_index];\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\titem === 'zimbraPrefIdentityName' &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tacc[propIndex].name !== 'DEFAULT'\n\t\t\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tacc[propIndex].name = Object.values(prefs)[_index];\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\ttempResult.push(prefs);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\treturn acc;\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t...filter(\n\t\t\t\t\t\t\t\t\t\t\t\ts.account.identities.identity,\n\t\t\t\t\t\t\t\t\t\t\t\t(item) => !mods?.identity?.deleteList?.includes(item.id)\n\t\t\t\t\t\t\t\t\t\t\t).filter((i) => i.name !== 'DEFAULT'),\n\t\t\t\t\t\t\t\t\t\t\t...map(r?.CreateIdentityResponse, (item) => item.identity[0]),\n\t\t\t\t\t\t\t\t\t\t\t...filter(\n\t\t\t\t\t\t\t\t\t\t\t\ts.account.identities.identity,\n\t\t\t\t\t\t\t\t\t\t\t\t(item) => !mods?.identity?.deleteList?.includes(item.id)\n\t\t\t\t\t\t\t\t\t\t\t).filter((i) => i.name === 'DEFAULT')\n\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t} as Account\n\t\t\t}));\n\t\t\treturn r;\n\t\t});\n\nexport const getEditSettingsForApp =\n\t(app: string) =>\n\t(mods: Mods): Promise<any> =>\n\t\teditSettings(mods, app).then((r) => {\n\t\t\tr.type = 'fulfilled';\n\t\t\treturn r;\n\t\t});\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useEffect, useState, FC, useMemo } from 'react';\nimport { Location } from 'history';\nimport { Prompt, useHistory } from 'react-router-dom';\nimport { Modal } from '@zextras/carbonio-design-system';\nimport { useTranslation } from 'react-i18next';\n\nexport const RouteLeavingGuard: FC<{\n\twhen?: boolean;\n\tonSave: () => void;\n}> = ({ children, when, onSave }) => {\n\tconst history = useHistory();\n\tconst lastLocationInitial = useMemo(() => history.location.pathname, [history]);\n\tconst [modalVisible, setModalVisible] = useState(false);\n\tconst [lastLocation, setLastLocation] = useState<Location>(lastLocationInitial);\n\tconst [confirmedNavigation, setConfirmedNavigation] = useState(false);\n\tconst [t] = useTranslation();\n\tconst onClose = (): void => {\n\t\tsetModalVisible(false);\n\t\tsetConfirmedNavigation(true);\n\t};\n\tconst handleBlockedNavigation = (nextLocation: Location): boolean => {\n\t\tif (\n\t\t\t!confirmedNavigation &&\n\t\t\tnextLocation.pathname !== (lastLocation?.pathname || lastLocationInitial)\n\t\t) {\n\t\t\tsetModalVisible(true);\n\t\t\tsetLastLocation(nextLocation);\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t};\n\tconst onConfirm = (): void => {\n\t\tsetModalVisible(false);\n\t\tonSave();\n\t\tsetConfirmedNavigation(true);\n\t};\n\tuseEffect(() => {\n\t\tif (confirmedNavigation && lastLocation) {\n\t\t\t// Navigate to the previous blocked location with your navigate function\n\t\t\thistory.push(lastLocation.pathname);\n\t\t}\n\t}, [confirmedNavigation, history, lastLocation]);\n\treturn (\n\t\t<>\n\t\t\t<Prompt when={when} message={handleBlockedNavigation} />\n\t\t\t{/* Your own alert/dialog/modal component */}\n\t\t\t<Modal\n\t\t\t\topen={modalVisible}\n\t\t\t\tonClose={onClose}\n\t\t\t\tonConfirm={onConfirm}\n\t\t\t\ttitle={t('label.unsaved_changes', 'You have unsaved changes')}\n\t\t\t\tdismissLabel={t('label.leave_anyway', 'Leave anyway')}\n\t\t\t\tconfirmLabel={t('label.save_and_leave', 'Save and leave')}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</Modal>\n\t\t</>\n\t);\n};\nexport default RouteLeavingGuard;\n","/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { FC, useEffect } from 'react';\nimport {\n\tPadding,\n\tRow,\n\tText,\n\tContainer,\n\tButton,\n\tDivider,\n\tBreadcrumbs\n} from '@zextras/carbonio-design-system';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory, useParams } from 'react-router-dom';\nimport { SETTINGS_APP_ID } from '../../constants';\nimport { RouteLeavingGuard } from '../../ui-extras/nav-guard';\n\ntype SettingsHeaderProps = {\n\ttitle: string;\n\tonSave: () => void;\n\tonCancel: () => void;\n\tisDirty: boolean;\n};\n\nconst SettingsHeader: FC<SettingsHeaderProps> = ({ onSave, onCancel, isDirty, title }) => {\n\tconst [t] = useTranslation();\n\tconst history = useHistory();\n\tconst useparam = useParams();\n\tconst crumbs = [\n\t\t{\n\t\t\tid: 'settings',\n\t\t\tlabel: t('settings.app', 'Settings'),\n\t\t\tclick: (): void => history.push(`/${SETTINGS_APP_ID}/`)\n\t\t},\n\t\t{\n\t\t\tid: 'general',\n\t\t\tlabel: title,\n\t\t\tclick: (): void => history.push(`/${SETTINGS_APP_ID}/`)\n\t\t}\n\t];\n\tconst search = history.location?.search;\n\tuseEffect(() => {\n\t\tif (search) {\n\t\t\tsetTimeout(\n\t\t\t\t() =>\n\t\t\t\t\tdocument\n\t\t\t\t\t\t.querySelector(`#${history.location.search}`.replace('?section=', ''))\n\t\t\t\t\t\t?.scrollIntoView(),\n\t\t\t\t1\n\t\t\t);\n\t\t}\n\t}, [history, history.location, history.location.search, search, useparam]);\n\treturn (\n\t\t<>\n\t\t\t<RouteLeavingGuard when={isDirty} onSave={onSave}>\n\t\t\t\t<Text>\n\t\t\t\t\t{t(\n\t\t\t\t\t\t'label.unsaved_changes_line1',\n\t\t\t\t\t\t'Are you sure you want to leave this page without saving?'\n\t\t\t\t\t)}\n\t\t\t\t</Text>\n\t\t\t\t<Text>{t('label.unsaved_changes_line2', 'All your unsaved changes will be lost')}</Text>\n\t\t\t</RouteLeavingGuard>\n\t\t\t<Container\n\t\t\t\torientation=\"vertical\"\n\t\t\t\tmainAlignment=\"space-around\"\n\t\t\t\tbackground=\"gray5\"\n\t\t\t\theight=\"fit\"\n\t\t\t>\n\t\t\t\t<Row orientation=\"horizontal\" width=\"100%\">\n\t\t\t\t\t<Row\n\t\t\t\t\t\tpadding={{ all: 'small' }}\n\t\t\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t\t\t\twidth=\"50%\"\n\t\t\t\t\t\tcrossAlignment=\"flex-start\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<Breadcrumbs crumbs={crumbs} />\n\t\t\t\t\t</Row>\n\t\t\t\t\t<Row\n\t\t\t\t\t\tpadding={{ all: 'small' }}\n\t\t\t\t\t\twidth=\"50%\"\n\t\t\t\t\t\tmainAlignment=\"flex-end\"\n\t\t\t\t\t\tcrossAlignment=\"flex-end\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<Padding right=\"small\">\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tlabel={t('label.discard_changes', 'DISCARD CHANGES')}\n\t\t\t\t\t\t\t\tonClick={onCancel}\n\t\t\t\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\t\t\t\tdisabled={!isDirty}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Padding>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tlabel={t('label.save', 'Save')}\n\t\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\t\tonClick={onSave}\n\t\t\t\t\t\t\tdisabled={!isDirty}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Row>\n\t\t\t\t</Row>\n\t\t\t</Container>\n\t\t\t<Divider />\n\t\t</>\n\t);\n};\n\nexport default SettingsHeader;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\n/* eslint-disable import/no-duplicates */\n/* eslint-disable import/no-named-default */\nimport { forOwn } from 'lodash';\nimport { ComponentType } from 'react';\nimport { Reducer, Store } from '@reduxjs/toolkit';\nimport StoreFactory from '../../redux/store-factory';\n\nimport { useAppStore } from '../../store/app';\nimport { getAppFunctions } from './app-loader-functions';\nimport { Spinner } from '../../ui-extras/spinner';\nimport { AppLink } from '../../ui-extras/app-link';\nimport * as CONSTANTS from '../../constants';\nimport { IShellWindow, CarbonioModule } from '../../../types';\nimport { getAppSetters } from './app-loader-setters';\nimport { report } from '../../reporting';\nimport SettingsHeader from '../../settings/components/settings-header';\n\nexport const _scripts: { [pkgName: string]: HTMLScriptElement } = {};\nlet _scriptId = 0;\n// const _revertableActions: { [pkgName: string]: RevertableActionCollection } = {};\n\n// export function updateAppHandlers(appPkg: CarbonioModule, handlers: RequestHandlersList): void {\n// \tif (FLAVOR === 'NPM' && typeof devUtils !== 'undefined') {\n// \t\tconst worker = devUtils.getMSWorker<SetupWorkerApi>();\n// \t\tif (worker) {\n// \t\t\tworker.resetHandlers();\n// \t\t\tforEach(handlers, (h) => worker.use(h));\n// \t\t}\n// \t}\n// }\n\nfunction loadAppModule(appPkg: CarbonioModule, store: Store<any>): Promise<CarbonioModule> {\n\treturn new Promise((_resolve, _reject) => {\n\t\tlet resolved = false;\n\t\tconst resolve: (...args: any[]) => void = (...args) => {\n\t\t\tif (!resolved) {\n\t\t\t\tresolved = true;\n\t\t\t\t_resolve(appPkg);\n\t\t\t}\n\t\t};\n\t\tconst reject: (e: Error) => void = (e) => {\n\t\t\tif (!resolved) {\n\t\t\t\tresolved = true;\n\t\t\t\t_reject(e);\n\t\t\t}\n\t\t};\n\t\ttry {\n\t\t\t(window as unknown as IShellWindow).__ZAPP_SHARED_LIBRARIES__['@zextras/carbonio-shell-ui'][\n\t\t\t\tappPkg.name\n\t\t\t] = {\n\t\t\t\tstore: {\n\t\t\t\t\tstore,\n\t\t\t\t\tsetReducer: (reducer: Reducer): void => store.replaceReducer(reducer)\n\t\t\t\t},\n\t\t\t\treport: report(appPkg.name),\n\t\t\t\tAppLink,\n\t\t\t\tSpinner,\n\t\t\t\tSettingsHeader,\n\t\t\t\t...getAppSetters(appPkg),\n\t\t\t\t...getAppFunctions(appPkg),\n\t\t\t\t...CONSTANTS\n\t\t\t};\n\n\t\t\t(window as unknown as IShellWindow).__ZAPP_HMR_EXPORT__[appPkg.name] = (\n\t\t\t\tappComponent: ComponentType\n\t\t\t): void => {\n\t\t\t\tuseAppStore.setState((state) => ({\n\t\t\t\t\tentryPoints: {\n\t\t\t\t\t\t...state.entryPoints,\n\t\t\t\t\t\t[appPkg.name]: appComponent\n\t\t\t\t\t}\n\t\t\t\t}));\n\t\t\t\tconsole.info(\n\t\t\t\t\t`%c loaded ${appPkg.name}`,\n\t\t\t\t\t'color: white; background: #539507;padding: 4px 8px 2px 4px; font-family: sans-serif; border-radius: 12px; width: 100%'\n\t\t\t\t);\n\t\t\t\tresolve(appPkg);\n\t\t\t};\n\n\t\t\t// if (FLAVOR === 'NPM' && typeof cliSettings !== 'undefined' && cliSettings.hasHandlers) {\n\t\t\t// eslint-disable-next-line max-len\n\t\t\t// (\n\t\t\t// \twindow as unknown as IShellWindow<SharedLibrariesAppsMap, ComponentClass>\n\t\t\t// ).__ZAPP_HMR_HANDLERS__[appPkg.name] = (handlers: RequestHandlersList): void =>\n\t\t\t// \tupdateAppHandlers(appPkg, handlers);\n\t\t\t// }\n\t\t\tconst script: HTMLScriptElement = document.createElement('script');\n\t\t\tscript.setAttribute('type', 'text/javascript');\n\t\t\tscript.setAttribute('data-pkg_name', appPkg.name);\n\t\t\tscript.setAttribute('data-pkg_version', appPkg.version);\n\t\t\tscript.setAttribute('data-is_app', 'true');\n\t\t\tscript.setAttribute('src', `${appPkg.js_entrypoint}`);\n\t\t\tdocument.body.appendChild(script);\n\t\t\t_scripts[`${appPkg.name}-loader-${(_scriptId += 1)}`] = script;\n\t\t} catch (err) {\n\t\t\tconsole.error(err);\n\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t\t// @ts-ignore\n\t\t\treject(err);\n\t\t}\n\t});\n}\n\nexport function loadApp(pkg: CarbonioModule, storeFactory: StoreFactory): Promise<CarbonioModule> {\n\tconst store = storeFactory.getStoreForApp(pkg);\n\treturn loadAppModule(pkg, store);\n}\n\nexport function unloadApps(): Promise<void> {\n\treturn Promise.resolve().then(() => {\n\t\tforOwn(_scripts, (script) => {\n\t\t\tif (script.parentNode) script.parentNode.removeChild(script);\n\t\t});\n\t});\n}\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n// The 'useXXX' functions actually return hooks\n/* eslint-disable react-hooks/rules-of-hooks */\n\nimport {\n\tAppRouteDescriptor,\n\tBoardView,\n\tCarbonioModule,\n\tPrimaryAccessoryView,\n\tSearchView,\n\tSecondaryAccessoryView,\n\tSettingsView,\n\tUtilityView\n} from '../../../types';\nimport { getEditSettingsForApp } from '../../network/edit-settings';\nimport { useAppStore } from '../../store/app';\nimport {\n\tnormalizeRoute,\n\tnormalizeSettingsView,\n\tnormalizeSearchView,\n\tnormalizeUtilityView,\n\tnormalizePrimaryAccessoryView,\n\tnormalizeSecondaryAccessoryView,\n\tnormalizeBoardView\n} from '../../store/app/utils';\nimport { useIntegrationsStore } from '../../store/integrations/store';\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const getAppSetters = (pkg: CarbonioModule): Record<string, Function> => {\n\tconst appSetters = useAppStore.getState().setters;\n\tconst integrations = useIntegrationsStore.getState();\n\treturn {\n\t\tupdatePrimaryBadge: appSetters.updatePrimaryBadge,\n\t\tupdateUtilityBadge: appSetters.updateUtilityBadge,\n\t\tsetAppContext: appSetters.setAppContext(pkg.name),\n\t\taddRoute: (route: Partial<AppRouteDescriptor>) =>\n\t\t\tappSetters.addRoute(normalizeRoute(route, pkg)),\n\t\tsetRouteVisibility: (routeId: string, visible: boolean) =>\n\t\t\tappSetters.setRouteVisibility(routeId, visible),\n\t\tremoveRoute: (routeId: string) => appSetters.removeRoute(routeId),\n\t\t// add board\n\t\taddBoardView: (data: Partial<BoardView>) =>\n\t\t\tappSetters.addBoardView(normalizeBoardView(data, pkg)),\n\t\t// remove board\n\t\tremoveBoardView: appSetters.removeBoardView,\n\t\t//\n\t\t// add settings\n\t\taddSettingsView: (data: Partial<SettingsView>) =>\n\t\t\tappSetters.addSettingsView(normalizeSettingsView(data, pkg)),\n\t\t// remove settings\n\t\tremoveSettingsView: appSetters.removeSettingsView,\n\t\t//\n\t\t// add search\n\t\taddSearchView: (data: Partial<SearchView>) =>\n\t\t\tappSetters.addSearchView(normalizeSearchView(data, pkg)),\n\t\t// remove search\n\t\tremoveSearchView: appSetters.removeSearchView,\n\t\t//\n\t\t// add utility\n\t\taddUtilityView: (data: Partial<UtilityView>) =>\n\t\t\tappSetters.addUtilityView(normalizeUtilityView(data, pkg)),\n\t\t// remove utility\n\t\tremoveUtilityView: appSetters.removeUtilityView,\n\t\t//\n\t\t// add primaryAccessory\n\t\taddPrimaryAccessoryView: (data: Partial<PrimaryAccessoryView>) =>\n\t\t\tappSetters.addPrimaryAccessoryView(normalizePrimaryAccessoryView(data, pkg)),\n\t\t// remove primaryAccessory\n\t\tremovePrimaryAccessoryView: appSetters.removePrimaryAccessoryView,\n\t\t//\n\t\t// add secondaryAccessory\n\t\taddSecondaryAccessoryView: (data: Partial<SecondaryAccessoryView>) =>\n\t\t\tappSetters.addSecondaryAccessoryView(normalizeSecondaryAccessoryView(data, pkg)),\n\t\t// remove secondaryAccessory\n\t\tremoveSecondaryAccessoryView: appSetters.removeSecondaryAccessoryView,\n\t\tregisterHooks: integrations.registerHooks,\n\t\tremoveHooks: integrations.removeHooks,\n\t\tregisterFunctions: integrations.registerFunctions,\n\t\tremoveFunctions: integrations.removeFunctions,\n\t\tregisterActions: integrations.registerActions,\n\t\tremoveActions: integrations.removeActions,\n\t\tregisterComponents: integrations.registerComponents(pkg.name),\n\t\tremoveComponents: integrations.removeComponents,\n\t\teditSettings: getEditSettingsForApp(pkg.name)\n\t};\n};\n","/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport { useAccountStore } from '../store/account';\nimport { useAppStore } from '../store/app';\nimport { registerDefaultViews } from './app/default-views';\nimport { loadApps } from './app/load-apps';\nimport I18nFactory from '../i18n/i18n-factory';\nimport StoreFactory from '../redux/store-factory';\n\nexport const init = (_i18nFactory: I18nFactory, _storeFactory: StoreFactory): void => {\n\tuseAccountStore\n\t\t.getState()\n\t\t.init()\n\t\t.then(() => {\n\t\t\t_i18nFactory.setLocale(\n\t\t\t\t(\n\t\t\t\t\t(useAccountStore.getState().settings?.prefs?.zimbraPrefLocale as string) ??\n\t\t\t\t\t(useAccountStore.getState().settings?.attrs?.zimbraLocale as string)\n\t\t\t\t)?.split?.('_')?.[0] ?? 'en'\n\t\t\t);\n\t\t\tloadApps(_storeFactory, Object.values(useAppStore.getState().apps));\n\t\t});\n};\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { createContext, FC, useCallback, useEffect, useState } from 'react';\nimport { ThemeProvider as UIThemeProvider } from '@zextras/carbonio-design-system';\nimport { enable, disable, auto, setFetchMethod } from 'darkreader';\nimport { reduce } from 'lodash';\nimport { useAccountStore } from '../store/account';\nimport { ThemeExtension, ThemeExtensionMap } from '../../types';\nimport { darkReaderDynamicThemeFixes } from '../constants';\n\nsetFetchMethod(window.fetch);\n\nexport const ThemeCallbacksContext = createContext<{\n\taddExtension: (newExtension: ThemeExtension, id: string) => void;\n\tsetDarkReaderState: (newState: 'auto' | 'enabled' | 'disabled') => void;\n}>({\n\t// eslint-disable-next-line @typescript-eslint/no-empty-function\n\taddExtension: (newExtension: ThemeExtension, id: string) => {},\n\t// eslint-disable-next-line @typescript-eslint/no-empty-function\n\tsetDarkReaderState: (newState: 'auto' | 'enabled' | 'disabled') => {}\n});\n\nconst themeSizes = (\n\tsize: 'small' | 'normal' | 'large' | 'larger' | 'default' | string\n): ThemeExtension => {\n\tswitch (size) {\n\t\tcase 'small': {\n\t\t\treturn (t: any): any => {\n\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\tt.sizes.font = {\n\t\t\t\t\textrasmall: '10px',\n\t\t\t\t\tsmall: '12px',\n\t\t\t\t\tmedium: '14px',\n\t\t\t\t\tlarge: '16px'\n\t\t\t\t};\n\t\t\t\treturn t;\n\t\t\t};\n\t\t}\n\t\tcase 'large': {\n\t\t\treturn (t: any): any => {\n\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\tt.sizes.font = {\n\t\t\t\t\textrasmall: '14px',\n\t\t\t\t\tsmall: '16px',\n\t\t\t\t\tmedium: '18px',\n\t\t\t\t\tlarge: '20px'\n\t\t\t\t};\n\t\t\t\treturn t;\n\t\t\t};\n\t\t}\n\t\tcase 'larger': {\n\t\t\treturn (t: any): any => {\n\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\tt.sizes.font = {\n\t\t\t\t\textrasmall: '16px',\n\t\t\t\t\tsmall: '18px',\n\t\t\t\t\tmedium: '20px',\n\t\t\t\t\tlarge: '22px'\n\t\t\t\t};\n\t\t\t\treturn t;\n\t\t\t};\n\t\t}\n\t\tcase 'default':\n\t\tcase 'normal':\n\t\tdefault: {\n\t\t\treturn (t: any): any => {\n\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\tt.sizes.font = {\n\t\t\t\t\textrasmall: '12px',\n\t\t\t\t\tsmall: '14px',\n\t\t\t\t\tmedium: '16px',\n\t\t\t\t\tlarge: '18px'\n\t\t\t\t};\n\t\t\t\treturn t;\n\t\t\t};\n\t\t}\n\t}\n};\n\nexport const ThemeProvider: FC = ({ children }) => {\n\tconst zimbraPrefFontSize = useAccountStore((s) => s.settings.prefs?.zimbraPrefFontSize as string);\n\t// TODO: update when the DS is fully typed :D\n\tconst [extensions, setExtensions] = useState<ThemeExtensionMap>({\n\t\tfonts: (theme) => {\n\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\ttheme.sizes.font = {\n\t\t\t\textrasmall: '12px',\n\t\t\t\tsmall: '14px',\n\t\t\t\tmedium: '16px',\n\t\t\t\tlarge: '18px'\n\t\t\t};\n\t\t\treturn theme;\n\t\t}\n\t});\n\tuseEffect(() => {\n\t\tsetExtensions((e) => ({\n\t\t\t...e,\n\t\t\tfonts: themeSizes(zimbraPrefFontSize)\n\t\t}));\n\t}, [zimbraPrefFontSize]);\n\tconst [darkReaderState, setDarkReaderState] = useState<'auto' | 'disabled' | 'enabled'>('auto');\n\tuseEffect(() => {\n\t\tswitch (darkReaderState) {\n\t\t\tcase 'disabled':\n\t\t\t\tdisable();\n\t\t\t\tbreak;\n\t\t\tcase 'enabled':\n\t\t\t\tenable(\n\t\t\t\t\t{\n\t\t\t\t\t\tsepia: -50\n\t\t\t\t\t},\n\t\t\t\t\tdarkReaderDynamicThemeFixes\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase 'auto':\n\t\t\tdefault:\n\t\t\t\tauto(\n\t\t\t\t\t{\n\t\t\t\t\t\tsepia: -50\n\t\t\t\t\t},\n\t\t\t\t\tdarkReaderDynamicThemeFixes\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t}\n\t}, [darkReaderState]);\n\tconst aggregatedExtensions = useCallback(\n\t\t(theme: any) => reduce(extensions, (acc, val) => val(acc), theme),\n\t\t[extensions]\n\t);\n\tconst addExtension = useCallback((newExtension: ThemeExtension, id: string) => {\n\t\tsetExtensions((ext) => ({ ...ext, [id]: newExtension }));\n\t}, []);\n\treturn (\n\t\t<UIThemeProvider extension={aggregatedExtensions}>\n\t\t\t<ThemeCallbacksContext.Provider value={{ addExtension, setDarkReaderState }}>\n\t\t\t\t{children}\n\t\t\t</ThemeCallbacksContext.Provider>\n\t\t</UIThemeProvider>\n\t);\n};\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { FC, memo, Suspense, useMemo } from 'react';\nimport { isEmpty, map } from 'lodash';\nimport { useAppStore } from '../../store/app';\nimport AppContextProvider from './app-context-provider';\n\nconst Mounter: FC<{ appId: string }> = ({ children, appId }) => (\n\t<div key={appId} id={appId}>\n\t\t<AppContextProvider key={appId} pkg={appId}>\n\t\t\t<Suspense fallback={''}>{children}</Suspense>\n\t\t</AppContextProvider>\n\t</div>\n);\n\nconst AppLoaderMounter: FC = () => {\n\tconst entryPoints = useAppStore((s) => s.entryPoints);\n\tconst entries = useMemo(\n\t\t() =>\n\t\t\tisEmpty(entryPoints)\n\t\t\t\t? null\n\t\t\t\t: map(entryPoints, (Comp, appId) => {\n\t\t\t\t\t\tconst MemoComp = memo(Comp);\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Mounter key={appId} appId={appId}>\n\t\t\t\t\t\t\t\t<MemoComp />\n\t\t\t\t\t\t\t</Mounter>\n\t\t\t\t\t\t);\n\t\t\t\t }),\n\t\t[entryPoints]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tdata-testid=\"app-mounter\"\n\t\t\tkey=\"app-mounter\"\n\t\t\thidden\n\t\t\tstyle={{ height: 0, overflow: 'hidden' }}\n\t\t>\n\t\t\t{entries}\n\t\t</div>\n\t);\n};\n\nexport default AppLoaderMounter;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useMemo } from 'react';\nimport { Redirect, Route, Switch, useLocation } from 'react-router-dom';\nimport styled from 'styled-components';\nimport { map, find } from 'lodash';\nimport { Container } from '@zextras/carbonio-design-system';\nimport AppContextProvider from '../boot/app/app-context-provider';\nimport { useAppList, useAppStore, useRoutes } from '../store/app';\n\nconst _BoardsRouterContainer = styled(Container)`\n\tflex-grow: 1;\n\tflex-basis: 0;\n\tmin-width: 1px;\n\tmax-height: calc(100vh - 60px);\n\toverflow-y: auto;\n`;\n\nconst FirstAppRedirect = () => {\n\tconst apps = useAppList();\n\tconst routes = useRoutes();\n\tconst location = useLocation();\n\tconst mainRoute = useMemo(\n\t\t() => find(routes, (r) => apps[0]?.name === r.app)?.route,\n\t\t[apps, routes]\n\t);\n\treturn mainRoute && location?.pathname === '/' ? (\n\t\t<Redirect exact strict from=\"/\" to={`/${mainRoute}`} />\n\t) : null;\n};\n\nexport default function AppViewContainer() {\n\tconst appViews = useAppStore((s) => s.views.appView);\n\tconst routes = useMemo(\n\t\t() => [\n\t\t\t...map(appViews, (view) => (\n\t\t\t\t<Route key={view.id} path={`/${view.route}`}>\n\t\t\t\t\t<AppContextProvider key={view.app} pkg={view.app}>\n\t\t\t\t\t\t<view.component />\n\t\t\t\t\t</AppContextProvider>\n\t\t\t\t</Route>\n\t\t\t))\n\t\t],\n\t\t[appViews]\n\t);\n\n\treturn (\n\t\t<_BoardsRouterContainer>\n\t\t\t<Container mainAlignment=\"flex-start\">\n\t\t\t\t<Switch>{routes}</Switch>\n\t\t\t\t<FirstAppRedirect />\n\t\t\t</Container>\n\t\t</_BoardsRouterContainer>\n\t);\n}\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useMemo } from 'react';\nimport { useScreenMode } from '@zextras/carbonio-design-system';\nimport ShellContext from './shell-context';\n\nexport default function ShellContextProvider({ children }) {\n\tconst screenMode = useScreenMode();\n\n\tconst value = useMemo(\n\t\t() => ({\n\t\t\tisMobile: screenMode === 'mobile'\n\t\t}),\n\t\t[screenMode]\n\t);\n\n\treturn <ShellContext.Provider value={value}>{children}</ShellContext.Provider>;\n}\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport { isFunction } from 'lodash';\nimport create from 'zustand';\nimport { QueryChip, SearchState } from '../../types';\n\nexport const useSearchStore = create<SearchState>((set, get) => ({\n\tquery: [],\n\tsearchDisabled: false,\n\tsetSearchDisabled: (searchDisabled: boolean): void => set({ searchDisabled }),\n\tupdateQuery: (query: Array<QueryChip> | ((q: Array<QueryChip>) => Array<QueryChip>)): void =>\n\t\tset({ query: isFunction(query) ? query(get().query) : query }),\n\tupdateModule: (module: string): void => set({ module })\n}));\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\n/* eslint-disable @typescript-eslint/ban-ts-comment */\n\nimport React, { useContext, useState, useCallback, useEffect, useMemo, FC, useRef } from 'react';\nimport {\n\tChipInput,\n\tContainer,\n\tIconButton,\n\tTooltip,\n\tThemeContext,\n\tSelect,\n\tRow,\n\tIcon,\n\tText,\n\tPadding\n} from '@zextras/carbonio-design-system';\nimport { useTranslation } from 'react-i18next';\nimport { filter, find, map, reduce } from 'lodash';\nimport styled from 'styled-components';\nimport { useHistory } from 'react-router-dom';\nimport { useLocalStorage } from '../shell/hooks';\nimport { SEARCH_APP_ID } from '../constants';\nimport { useApps, useAppStore } from '../store/app';\nimport { useSearchStore } from './search-store';\nimport { QueryChip, SearchBarProps, SelectLabelFactoryProps } from '../../types';\nimport { handleKeyboardShortcuts } from '../keyboard-shortcuts/keyboard-shortcuts';\n\nconst OutlinedIconButton = styled(IconButton)`\n\tborder: 1px solid\n\t\t${({ theme, disabled }): string =>\n\t\t\tdisabled ? theme.palette.primary.disabled : theme.palette.primary.regular};\n\tdisplay: 'block';\n\t& svg {\n\t\tborder: none;\n\t}\n`;\n\nconst StyledChipInput = styled(ChipInput)`\n\t&:hover {\n\t\toutline: none;\n\t\tbackground: ${({ theme, disabled }): string =>\n\t\t\tdisabled ? 'gray5' : theme.palette.gray5.hover};\n\t}\n`;\n\nconst StyledContainer = styled(Container)`\n\theight: 42px;\n\toverflow-y: hidden;\n\t&:first-child {\n\t\ttransform: translateY(-2px);\n\t}\n`;\n\nconst SelectLabelFactory: FC<SelectLabelFactoryProps> = ({ selected, open, focus, disabled }) => {\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tconst theme: any = useContext(ThemeContext);\n\tconst color = useMemo(\n\t\t// eslint-disable-next-line no-nested-ternary\n\t\t() => (disabled ? '#CCCCCC' : open || focus ? 'primary' : 'text'),\n\t\t[disabled, open, focus]\n\t);\n\treturn (\n\t\t<Container\n\t\t\torientation=\"horizontal\"\n\t\t\tbackground={disabled ? 'gray5' : 'gray6'}\n\t\t\theight={42}\n\t\t\twidth=\"fit\"\n\t\t\tminWidth=\"150px\"\n\t\t\tcrossAlignment=\"center\"\n\t\t\tmainAlignment=\"space-between\"\n\t\t\tborderRadius=\"half\"\n\t\t\tstyle={{\n\t\t\t\tborderRight: `1px solid ${theme.palette.gray4.regular}`,\n\t\t\t\tcursor: disabled ? 'default' : 'pointer'\n\t\t\t}}\n\t\t>\n\t\t\t<Row takeAvailableSpace mainAlignment=\"unset\" padding={{ left: 'small' }}>\n\t\t\t\t<Text size=\"small\" color={color}>\n\t\t\t\t\t{selected[0]?.label}\n\t\t\t\t</Text>\n\t\t\t</Row>\n\t\t\t<Icon\n\t\t\t\tsize=\"large\"\n\t\t\t\ticon={open ? 'ChevronUpOutline' : 'ChevronDownOutline'}\n\t\t\t\tcolor={color}\n\t\t\t\tstyle={{ alignSelf: 'center' }}\n\t\t\t/>\n\t\t</Container>\n\t);\n};\n\nexport const SearchBar: FC<SearchBarProps> = ({\n\tactiveRoute\n\t// primaryAction,\n\t// secondaryActions\n}) => {\n\tconst searchViews = useAppStore((s) => s.views.search);\n\n\tconst [searchIsEnabled, setSearchIsEnabled] = useState(false);\n\tconst inputRef = useRef<HTMLInputElement>();\n\tconst [t] = useTranslation();\n\tconst [storedValue, setStoredValue] = useLocalStorage('search_suggestions', []);\n\tconst [inputTyped, setInputTyped] = useState('');\n\tconst history = useHistory();\n\tconst { updateQuery, module, updateModule, query, searchDisabled, setSearchDisabled } =\n\t\tuseSearchStore();\n\tconst [moduleSelection, setModuleSelection] = useState<{\n\t\tvalue: string;\n\t\tlabel: string;\n\t}>();\n\tconst [isTyping, setIsTyping] = useState(false);\n\t// const [changedBySearchBar, setChangedBySearchBar] = useState(false);\n\n\tconst moduleSelectorItems = useMemo<\n\t\tArray<{ label: string; value: string; customComponent: JSX.Element }>\n\t>(\n\t\t() =>\n\t\t\tmap(searchViews, (view) => ({\n\t\t\t\tcustomComponent: (\n\t\t\t\t\t<Container mainAlignment=\"flex-start\" orientation=\"horizontal\">\n\t\t\t\t\t\t<Padding horizontal=\"extrasmall\">\n\t\t\t\t\t\t\t<Icon icon={view.icon} />\n\t\t\t\t\t\t</Padding>\n\t\t\t\t\t\t<Text>{view.label}</Text>\n\t\t\t\t\t</Container>\n\t\t\t\t),\n\t\t\t\tlabel: view.label,\n\t\t\t\tvalue: view.route\n\t\t\t})),\n\t\t[searchViews]\n\t);\n\n\tconst [options, setOptions] = useState<Array<{ label: string; hasAvatar: false }>>([]);\n\n\t// 1 - update moduleSelection when route changes\n\tuseEffect(() => {\n\t\tif (activeRoute) {\n\t\t\tsetModuleSelection((selection) =>\n\t\t\t\tactiveRoute.route !== selection?.value\n\t\t\t\t\t? find(moduleSelectorItems, (i) => i.value === activeRoute.route) ??\n\t\t\t\t\t moduleSelectorItems?.[0]\n\t\t\t\t\t: moduleSelectorItems?.[0]\n\t\t\t);\n\t\t} else {\n\t\t\tsetModuleSelection(moduleSelectorItems?.[0]);\n\t\t}\n\t}, [activeRoute, moduleSelectorItems]);\n\t// 2 - update module when moduleSelection changes\n\tuseEffect(() => {\n\t\tif (moduleSelection && module !== moduleSelection.value) updateModule(moduleSelection.value);\n\t}, [module, moduleSelection, updateModule]);\n\tconst [inputHasFocus, setInputHasFocus] = useState(false);\n\n\tconst [inputState, setInputState] = useState(query);\n\tconst showClear = useMemo(\n\t\t() =>\n\t\t\tinputState.length > 0 ||\n\t\t\t(inputRef.current?.textContent && inputRef.current?.textContent?.length > 0),\n\t\t[inputState.length]\n\t);\n\tconst clearSearch = useCallback((): void => {\n\t\tif (inputRef.current) {\n\t\t\tinputRef.current.innerText = '';\n\t\t\tinputRef.current?.focus();\n\t\t}\n\t\tsetIsTyping(false);\n\t\tsetInputState([]);\n\t\tsetSearchDisabled(false);\n\t\tupdateQuery([]);\n\t\tsetInputTyped('');\n\t}, [setSearchDisabled, updateQuery]);\n\n\tconst onSearch = useCallback(() => {\n\t\tupdateQuery((currentQuery) => {\n\t\t\tconst ref = inputRef?.current;\n\n\t\t\tif (ref) ref.innerText = '';\n\t\t\tif (inputTyped.length > 0) {\n\t\t\t\tconst newInputState = [\n\t\t\t\t\t...inputState,\n\t\t\t\t\t...map(inputTyped?.split(' '), (item) => ({ label: item, hasAvatar: false }))\n\t\t\t\t];\n\t\t\t\tsetInputState(newInputState);\n\t\t\t\tsetInputTyped('');\n\t\t\t\treturn reduce(\n\t\t\t\t\tnewInputState,\n\t\t\t\t\t(acc, chip) => {\n\t\t\t\t\t\tif (!find(currentQuery, (c: QueryChip): boolean => c.label === chip.label)) {\n\t\t\t\t\t\t\tacc.push(chip);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn acc;\n\t\t\t\t\t},\n\t\t\t\t\tfilter(\n\t\t\t\t\t\tcurrentQuery,\n\t\t\t\t\t\t(qchip: QueryChip): boolean =>\n\t\t\t\t\t\t\tqchip.isQueryFilter ||\n\t\t\t\t\t\t\t!!find(inputState, (c: QueryChip): boolean => c.label === qchip.label)\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\t\t\tsetInputTyped('');\n\t\t\treturn reduce(\n\t\t\t\tinputState,\n\t\t\t\t(acc, chip) => {\n\t\t\t\t\tif (!find(currentQuery, (c: QueryChip): boolean => c.label === chip.label)) {\n\t\t\t\t\t\tacc.push(chip);\n\t\t\t\t\t}\n\t\t\t\t\treturn acc;\n\t\t\t\t},\n\t\t\t\tfilter(\n\t\t\t\t\tcurrentQuery,\n\t\t\t\t\t(qchip: QueryChip): boolean =>\n\t\t\t\t\t\tqchip.isQueryFilter ||\n\t\t\t\t\t\t!!find(inputState, (c: QueryChip): boolean => c.label === qchip.label)\n\t\t\t\t)\n\t\t\t);\n\t\t});\n\t\tif (activeRoute?.app !== SEARCH_APP_ID) {\n\t\t\thistory.push(`/${SEARCH_APP_ID}/${moduleSelection?.value}`);\n\t\t}\n\t\tsetSearchIsEnabled(false);\n\t\t// setChangedBySearchBar(true);\n\t}, [updateQuery, activeRoute?.app, inputTyped, inputState, history, moduleSelection?.value]);\n\n\tconst appSuggestions = useMemo<Array<QueryChip & { hasAvatar: false }>>(\n\t\t() =>\n\t\t\tfilter(storedValue, (v) => v.app === moduleSelection?.value)\n\t\t\t\t.reverse()\n\t\t\t\t.map((item: QueryChip) => ({\n\t\t\t\t\t...item,\n\t\t\t\t\thasAvatar: false,\n\t\t\t\t\tdisabled: searchDisabled,\n\t\t\t\t\tclick: (): void => {\n\t\t\t\t\t\tsetInputState((q: Array<QueryChip>) => [...q, { ...item, hasAvatar: false }]);\n\t\t\t\t\t}\n\t\t\t\t})),\n\t\t[moduleSelection?.value, storedValue, setInputState, searchDisabled]\n\t);\n\n\tconst updateOptions = useCallback(\n\t\t(target: HTMLInputElement, q: Array<any>): void => {\n\t\t\tif (target.textContent && target.textContent.length > 0) {\n\t\t\t\tsetOptions(\n\t\t\t\t\tappSuggestions\n\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t(v: QueryChip): boolean =>\n\t\t\t\t\t\t\t\tv.label?.indexOf(target.textContent as string) !== -1 &&\n\t\t\t\t\t\t\t\t!find(q, (i) => i.value === v.label)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.slice(0, 5)\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tsetOptions(appSuggestions.slice(0, 5));\n\t\t\t}\n\t\t},\n\t\t[appSuggestions]\n\t);\n\n\tconst onQueryChange = useCallback(\n\t\t(newQuery) => {\n\t\t\tif (\n\t\t\t\tnewQuery[newQuery.length - 1]?.label &&\n\t\t\t\tmoduleSelection?.value &&\n\t\t\t\t!find(appSuggestions, (v) => v.label === newQuery[newQuery.length - 1]?.label)\n\t\t\t) {\n\t\t\t\tsetStoredValue(\n\t\t\t\t\t(\n\t\t\t\t\t\tvalue: Array<{ value: string; label: string; icon: string; app: string; id: string }>\n\t\t\t\t\t) => [\n\t\t\t\t\t\t...value,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: newQuery[newQuery.length - 1].label,\n\t\t\t\t\t\t\tlabel: newQuery[newQuery.length - 1].label,\n\t\t\t\t\t\t\ticon: 'ClockOutline',\n\t\t\t\t\t\t\tapp: moduleSelection.value,\n\t\t\t\t\t\t\tid: `${value.length}`,\n\t\t\t\t\t\t\thasAvatar: false\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t);\n\t\t\t}\n\t\t\t/** Commented for future reference */\n\t\t\t// if (inputRef.current) {\n\t\t\t// \tupdateOptions(inputRef.current, newQuery);\n\t\t\t// }\n\t\t\tsetInputState(newQuery);\n\t\t\tsetSearchIsEnabled(true);\n\t\t},\n\t\t[appSuggestions, moduleSelection?.value, setStoredValue]\n\t);\n\n\tconst onInputType = useCallback(\n\t\t(ev) => {\n\t\t\tif (ev.target.textContent === '') {\n\t\t\t\tsetIsTyping(false);\n\t\t\t} else if (!isTyping) {\n\t\t\t\tsetIsTyping(true);\n\t\t\t}\n\t\t\tsetInputTyped(ev.target.textContent);\n\t\t\tupdateOptions(ev.target, query);\n\t\t},\n\t\t[query, updateOptions, isTyping]\n\t);\n\n\tuseEffect(() => {\n\t\tif (moduleSelection?.value) {\n\t\t\tconst suggestions = filter(\n\t\t\t\tappSuggestions,\n\t\t\t\t(suggestion) => suggestion?.app === moduleSelection.value\n\t\t\t).slice(0, 5);\n\n\t\t\tsetOptions(suggestions);\n\t\t}\n\t}, [appSuggestions, moduleSelection?.value]);\n\n\tconst onSelectionChange = useCallback(\n\t\t(newVal) => {\n\t\t\tsetModuleSelection(find(moduleSelectorItems, (item) => item.value === newVal));\n\t\t\t// setInputState([]);\n\t\t\t// updateQuery([]);\n\t\t\tif (activeRoute?.app === SEARCH_APP_ID) {\n\t\t\t\thistory.push(`/${SEARCH_APP_ID}/${newVal}`);\n\t\t\t}\n\t\t},\n\t\t[activeRoute?.app, history, moduleSelectorItems]\n\t);\n\tconst [triggerSearch, setTriggerSearch] = useState(false);\n\tconst containerRef = useRef<HTMLDivElement>();\n\n\t// useEffect(() => {\n\t// \tconst handler = (event: KeyboardEvent): unknown =>\n\t// \t\thandleKeyboardShortcuts({\n\t// \t\t\tevent,\n\t// \t\t\tinputRef,\n\t// \t\t\tprimaryAction,\n\t// \t\t\tsecondaryActions,\n\t// \t\t\tcurrentApp\n\t// \t\t});\n\t// \tdocument.addEventListener('keydown', handler);\n\t// \treturn (): void => {\n\t// \t\tdocument.removeEventListener('keydown', handler);\n\t// \t};\n\t// }, [currentApp, inputRef, primaryAction, secondaryActions]);\n\n\tuseEffect(() => {\n\t\tconst ref = inputRef.current;\n\t\tconst searchCb = (ev: any): void => {\n\t\t\tif (ev.key === 'Enter') {\n\t\t\t\tsetTimeout(() => setTriggerSearch(true), 0);\n\t\t\t}\n\t\t};\n\t\tif (ref) {\n\t\t\tref.addEventListener('keyup', searchCb);\n\t\t}\n\t\treturn (): void => {\n\t\t\tif (ref) {\n\t\t\t\tref.removeEventListener('keyup', searchCb);\n\t\t\t}\n\t\t};\n\t}, [onSearch]);\n\n\tuseEffect(() => {\n\t\tif (triggerSearch) {\n\t\t\tonSearch();\n\t\t\tsetTriggerSearch(false);\n\t\t}\n\t}, [onSearch, triggerSearch]);\n\n\t// useEffect(() => {\n\t// \tsetChangedBySearchBar((value) => {\n\t// \t\tif (!value) {\n\t// \t\t\tsetInputState(filter(query, (q) => !q.isQueryFilter));\n\t// \t\t}\n\t// \t\treturn false;\n\t// \t});\n\t// }, [query]);\n\n\tconst disableOptions = useMemo(() => !(options.length > 0) || isTyping, [options, isTyping]);\n\n\tconst placeholder = useMemo(\n\t\t() =>\n\t\t\tinputHasFocus && moduleSelection\n\t\t\t\t? t('search.active_input_label', 'Separate your keywords by a comma or pressing TAB')\n\t\t\t\t: t('search.idle_input_label', 'Search in {{module}}', {\n\t\t\t\t\t\tmodule: moduleSelection?.label\n\t\t\t\t }),\n\t\t[t, moduleSelection, inputHasFocus]\n\t);\n\n\tconst clearButtonPlaceholder = useMemo(\n\t\t() =>\n\t\t\tshowClear || isTyping\n\t\t\t\t? t('search.clear', 'Clear search input')\n\t\t\t\t: t('search.already_clear', 'Search input is already clear'),\n\t\t[showClear, t, isTyping]\n\t);\n\tconst searchBtnTooltipLabel = useMemo(() => {\n\t\tif (searchIsEnabled && inputState.length > 0) {\n\t\t\treturn t('search.start', 'Start search');\n\t\t}\n\t\tif (inputHasFocus) {\n\t\t\treturn t(\n\t\t\t\t'search.type_or_choose_suggestion',\n\t\t\t\t'Type or choose some keywords to start a search'\n\t\t\t);\n\t\t}\n\t\tif (query.length > 0) {\n\t\t\treturn t('label.edit_to_start_search', 'Edit your search to start a new one');\n\t\t}\n\t\treturn t('search.type_to_start_search', 'Type some keywords to start a search');\n\t}, [t, searchIsEnabled, inputState.length, inputHasFocus, query.length]);\n\n\tconst onChipAdd = useCallback(\n\t\t(newChip: string) => {\n\t\t\tsetIsTyping(false);\n\t\t\tsetInputTyped('');\n\t\t\tif (moduleSelection?.value) {\n\t\t\t\tconst suggestions = filter(\n\t\t\t\t\tappSuggestions,\n\t\t\t\t\t(suggestion) => suggestion?.app === moduleSelection?.value\n\t\t\t\t).slice(0, 5);\n\n\t\t\t\tsetOptions(suggestions);\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tlabel: newChip.trim(),\n\t\t\t\thasAvatar: false,\n\t\t\t\tavatarLabel: ''\n\t\t\t};\n\t\t},\n\t\t[appSuggestions, moduleSelection?.value]\n\t);\n\n\tuseEffect(() => {\n\t\tsetInputState(map(query, (q) => ({ ...q, disabled: searchDisabled })));\n\t}, [searchDisabled, query]);\n\n\tconst addFocus = useCallback(() => setInputHasFocus(true), []);\n\tconst removeFocus = useCallback(() => setInputHasFocus(false), []);\n\tconst disableClearButton = useMemo(() => (isTyping ? false : !showClear), [showClear, isTyping]);\n\n\treturn (\n\t\t<Container orientation=\"horizontal\" minWidth=\"0\" ref={containerRef}>\n\t\t\t<Tooltip\n\t\t\t\tdisabled={!searchDisabled}\n\t\t\t\tmaxWidth=\"100%\"\n\t\t\t\tlabel={t(\n\t\t\t\t\t'search.unable_to_parse_query',\n\t\t\t\t\t'Unable to complete the search, clear it and retry'\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<Container orientation=\"horizontal\" width=\"fill\">\n\t\t\t\t\t<Container minWidth=\"512px\" width=\"fill\">\n\t\t\t\t\t\t<Container orientation=\"horizontal\" width=\"fill\">\n\t\t\t\t\t\t\t<Container width=\"fit\">\n\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\tdisabled={searchDisabled}\n\t\t\t\t\t\t\t\t\titems={moduleSelectorItems}\n\t\t\t\t\t\t\t\t\tbackground=\"gray6\"\n\t\t\t\t\t\t\t\t\tselectedBackgroundColor=\"highlight\"\n\t\t\t\t\t\t\t\t\tlabel={t('search.module', 'Module')}\n\t\t\t\t\t\t\t\t\tselection={moduleSelection}\n\t\t\t\t\t\t\t\t\tonChange={onSelectionChange}\n\t\t\t\t\t\t\t\t\tLabelFactory={SelectLabelFactory}\n\t\t\t\t\t\t\t\t\tstyle={{ fontSize: '14px' }}\n\t\t\t\t\t\t\t\t\tcolor=\"text\"\n\t\t\t\t\t\t\t\t\tfontSize=\"small\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</Container>\n\t\t\t\t\t\t\t<StyledContainer orientation=\"horizontal\">\n\t\t\t\t\t\t\t\t<StyledChipInput\n\t\t\t\t\t\t\t\t\tdisabled={searchDisabled}\n\t\t\t\t\t\t\t\t\tinputRef={inputRef}\n\t\t\t\t\t\t\t\t\tvalue={inputState}\n\t\t\t\t\t\t\t\t\tonAdd={onChipAdd}\n\t\t\t\t\t\t\t\t\toptions={options}\n\t\t\t\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\t\t\t\tconfirmChipOnBlur={false}\n\t\t\t\t\t\t\t\t\tconfirmChipOnSpace={false}\n\t\t\t\t\t\t\t\t\tseparators={['Comma']}\n\t\t\t\t\t\t\t\t\tbackground={searchDisabled ? 'gray5' : 'gray6'}\n\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t\t\t\t\t\toverflowX: 'hidden'\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tonChange={onQueryChange}\n\t\t\t\t\t\t\t\t\tonInputType={onInputType}\n\t\t\t\t\t\t\t\t\tonInputTypeDebounce={0}\n\t\t\t\t\t\t\t\t\tonBlur={removeFocus}\n\t\t\t\t\t\t\t\t\tonFocus={addFocus}\n\t\t\t\t\t\t\t\t\tdisableOptions={disableOptions}\n\t\t\t\t\t\t\t\t\trequireUniqueChips={false}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</StyledContainer>\n\t\t\t\t\t\t</Container>\n\t\t\t\t\t</Container>\n\n\t\t\t\t\t{!disableClearButton && (\n\t\t\t\t\t\t<Padding left=\"small\">\n\t\t\t\t\t\t\t<Tooltip label={clearButtonPlaceholder} placement=\"bottom\">\n\t\t\t\t\t\t\t\t<OutlinedIconButton\n\t\t\t\t\t\t\t\t\tdisabled={disableClearButton}\n\t\t\t\t\t\t\t\t\ticon=\"BackspaceOutline\"\n\t\t\t\t\t\t\t\t\ticonColor=\"primary\"\n\t\t\t\t\t\t\t\t\tonClick={clearSearch}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t</Padding>\n\t\t\t\t\t)}\n\n\t\t\t\t\t<Padding left=\"small\">\n\t\t\t\t\t\t<Tooltip\n\t\t\t\t\t\t\tmaxWidth=\"100%\"\n\t\t\t\t\t\t\tdisabled={searchDisabled}\n\t\t\t\t\t\t\tlabel={searchBtnTooltipLabel}\n\t\t\t\t\t\t\tplacement=\"bottom\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\ticon=\"Search\"\n\t\t\t\t\t\t\t\tdisabled={!(searchIsEnabled && inputState.length > 0)}\n\t\t\t\t\t\t\t\tbackgroundColor=\"primary\"\n\t\t\t\t\t\t\t\ticonColor=\"gray6\"\n\t\t\t\t\t\t\t\tonClick={onSearch}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t</Padding>\n\t\t\t\t</Container>\n\t\t\t</Tooltip>\n\t\t</Container>\n\t);\n};\n","/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { FC, useCallback, useMemo, useState } from 'react';\nimport { reduce, groupBy } from 'lodash';\nimport { MultiButton, Button, Dropdown } from '@zextras/carbonio-design-system';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation } from 'react-router-dom';\nimport { useActions } from '../store/integrations/hooks';\nimport { ACTION_TYPES } from '../constants';\nimport { Action, AppRoute } from '../../types';\nimport { useAppList } from '../store/app';\n\nconst useSecondaryActions = (\n\tactions: Array<Action>,\n\tactiveRoute?: AppRoute\n): Array<Action | { type: string; id: string }> => {\n\tconst apps = useAppList();\n\n\tconst byApp = useMemo(() => groupBy(actions, 'group'), [actions]);\n\treturn useMemo(\n\t\t() => [\n\t\t\t...(byApp[activeRoute?.app ?? ''] ?? []),\n\t\t\t...reduce(\n\t\t\t\tapps,\n\t\t\t\t(acc, app, i) => {\n\t\t\t\t\tif (app.name !== activeRoute?.app && byApp[app.name]?.length > 0) {\n\t\t\t\t\t\tacc.push({ type: 'divider', label: '', id: `divider-${i}` }, ...byApp[app.name]);\n\t\t\t\t\t}\n\t\t\t\t\treturn acc;\n\t\t\t\t},\n\t\t\t\t[] as Array<Action | { type: string; id: string }>\n\t\t\t)\n\t\t],\n\t\t[activeRoute?.app, apps, byApp]\n\t);\n};\n\nexport const CreationButton: FC<{ activeRoute?: AppRoute }> = ({ activeRoute }) => {\n\tconst [t] = useTranslation();\n\tconst location = useLocation();\n\tconst actions = useActions({ activeRoute, location }, ACTION_TYPES.NEW);\n\tconst [open, setOpen] = useState(false);\n\tconst primaryAction = useMemo(\n\t\t() =>\n\t\t\tactions?.find?.(\n\t\t\t\t(a) => (a.group === activeRoute?.id || a.group === activeRoute?.app) && a.primary\n\t\t\t),\n\t\t[actions, activeRoute?.app, activeRoute?.id]\n\t);\n\tconst secondaryActions = useSecondaryActions(actions, activeRoute);\n\n\tconst onClose = useCallback(() => {\n\t\tsetOpen(false);\n\t}, []);\n\tconst onOpen = useCallback(() => {\n\t\tsetOpen(true);\n\t}, []);\n\treturn primaryAction ? (\n\t\t<MultiButton\n\t\t\tstyle={{ height: '42px' }}\n\t\t\tbackground=\"primary\"\n\t\t\tlabel={primaryAction?.label ?? t('new', 'New')}\n\t\t\tonClick={primaryAction?.click}\n\t\t\titems={secondaryActions}\n\t\t\tdisabled={!primaryAction || primaryAction?.disabled}\n\t\t/>\n\t) : (\n\t\t<Dropdown items={secondaryActions} onClose={onClose} onOpen={onOpen}>\n\t\t\t<Button\n\t\t\t\tstyle={{ height: '42px' }}\n\t\t\t\tbackground=\"primary\"\n\t\t\t\titems={secondaryActions}\n\t\t\t\tlabel={t('new', 'New')}\n\t\t\t\ticon={open ? 'ChevronUp' : 'ChevronDown'}\n\t\t\t/>\n\t\t</Dropdown>\n\t);\n};\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { FC } from 'react';\nimport {\n\tContainer,\n\tIconButton,\n\tPadding,\n\tResponsive,\n\tuseScreenMode\n} from '@zextras/carbonio-design-system';\nimport Logo from '../svg/carbonio-beta.svg';\nimport LogoAdmin from '../svg/carbonio-admin-panel.svg';\nimport { SearchBar } from '../search/search-bar';\nimport { CreationButton } from './creation-button';\nimport { useAppStore } from '../store/app';\nimport { AppRoute } from '../../types';\nimport { ShellMode } from '../multimode';\nimport { SHELL_MODES } from '../constants';\n\nconst ShellHeader: FC<{\n\tactiveRoute: AppRoute;\n\tmobileNavIsOpen: boolean;\n\tonMobileMenuClick: () => void;\n}> = ({ activeRoute, mobileNavIsOpen, onMobileMenuClick, children }) => {\n\tconst screenMode = useScreenMode();\n\tconst searchEnabled = useAppStore((s) => s.views.search.length > 0);\n\treturn (\n\t\t<Container\n\t\t\torientation=\"horizontal\"\n\t\t\tbackground=\"gray3\"\n\t\t\twidth=\"fill\"\n\t\t\theight=\"60px\"\n\t\t\tminHeight=\"60px\"\n\t\t\tmaxHeight=\"60px\"\n\t\t\tmainAlignment=\"space-between\"\n\t\t\tpadding={{\n\t\t\t\thorizontal: screenMode === 'desktop' ? 'large' : 'extrasmall',\n\t\t\t\tvertical: 'small'\n\t\t\t}}\n\t\t>\n\t\t\t<Container orientation=\"horizontal\" width=\"75%\" maxWidth=\"75%\" mainAlignment=\"space-between\">\n\t\t\t\t<Responsive mode=\"mobile\">\n\t\t\t\t\t<Padding right=\"small\">\n\t\t\t\t\t\t<IconButton icon={mobileNavIsOpen ? 'Close' : 'Menu'} onClick={onMobileMenuClick} />\n\t\t\t\t\t</Padding>\n\t\t\t\t</Responsive>\n\t\t\t\t<Container width={320} height={32} crossAlignment=\"flex-start\">\n\t\t\t\t\t<ShellMode exclude={[SHELL_MODES.ADMIN]}>\n\t\t\t\t\t\t<Logo height=\"32px\" />\n\t\t\t\t\t</ShellMode>\n\t\t\t\t\t<ShellMode include={[SHELL_MODES.ADMIN]}>\n\t\t\t\t\t\t<LogoAdmin height=\"32px\" />\n\t\t\t\t\t</ShellMode>\n\t\t\t\t</Container>\n\t\t\t\t<ShellMode exclude={[SHELL_MODES.ADMIN]}>\n\t\t\t\t\t<Padding horizontal=\"large\">\n\t\t\t\t\t\t<CreationButton activeRoute={activeRoute} />\n\t\t\t\t\t</Padding>\n\t\t\t\t</ShellMode>\n\t\t\t\t<Responsive mode=\"desktop\">\n\t\t\t\t\t{searchEnabled && (\n\t\t\t\t\t\t<SearchBar\n\t\t\t\t\t\t\tactiveRoute={activeRoute}\n\t\t\t\t\t\t\t// primaryAction={primaryAction}\n\t\t\t\t\t\t\t// secondaryActions={secondaryActions}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</Responsive>\n\t\t\t</Container>\n\t\t\t<Container orientation=\"horizontal\" width=\"25%\" mainAlignment=\"flex-end\">\n\t\t\t\t<Responsive mode=\"desktop\">{children}</Responsive>\n\t\t\t\t<Responsive mode=\"mobile\">\n\t\t\t\t\t<Container\n\t\t\t\t\t\torientation=\"horizontal\"\n\t\t\t\t\t\tmainAlignment=\"flex-end\"\n\t\t\t\t\t\tpadding={{ right: 'extrasmall' }}\n\t\t\t\t\t>\n\t\t\t\t\t\t{/* <Dropdown items={secondaryActions} placement=\"bottom-start\">\n\t\t\t\t\t\t\t<IconButton icon=\"Plus\" />\n\t\t\t\t\t\t</Dropdown> */}\n\t\t\t\t\t</Container>\n\t\t\t\t</Responsive>\n\t\t\t</Container>\n\t\t</Container>\n\t);\n};\nexport default ShellHeader;\n","/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\nimport React, { FC, forwardRef } from 'react';\nimport { Container, Text } from '@zextras/carbonio-design-system';\nimport styled from 'styled-components';\nimport { BadgeInfo } from '../../types';\n\nconst MiniBadge = styled(Container)<{ badge: BadgeInfo }>`\n\tposition: absolute;\n\tbottom: 25%;\n\tright: 25%;\n\ttransform: translate(30%, 30%);\n\tbackground: ${({ badge, theme }): string => theme.palette[badge?.color ?? 'primary'].regular};\n\tmin-width: 12px;\n\tmin-height: 12px;\n\tline-height: 12px;\n\tborder-radius: 8px;\n\tuser-select: none;\n\tcursor: pointer;\n\tpointer-events: none;\n`;\n\n// eslint-disable-next-line react/display-name\nconst BadgeWrap: FC<{ badge: BadgeInfo }> = forwardRef(({ badge, children }, ref) => (\n\t<Container width={48} height={48} style={{ position: 'relative' }} ref={ref}>\n\t\t{badge.show && (\n\t\t\t<MiniBadge badge={badge} height=\"fit\" width=\"fit\">\n\t\t\t\t{badge.showCount ? (\n\t\t\t\t\t<Text size=\"extrasmall\" style={{ padding: '2px 4px', fontSize: '10px' }} color=\"gray6\">\n\t\t\t\t\t\t{badge.count ?? 0}\n\t\t\t\t\t</Text>\n\t\t\t\t) : null}\n\t\t\t</MiniBadge>\n\t\t)}\n\t\t{children}\n\t</Container>\n));\n\nexport default BadgeWrap;\n","/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport { filter, intersection } from 'lodash';\nimport { useMemo } from 'react';\nimport { AppRoute, PrimaryAccessoryView, SecondaryAccessoryView, UtilityView } from '../../types';\nimport { useCurrentRoute } from '../history/hooks';\nimport { useAppStore } from '../store/app';\n\nexport const checkList = (l1: Array<string>, l2?: Array<string>): boolean =>\n\tintersection(l1, l2).length > 0;\n\nexport const checkRoute = (\n\tview: UtilityView | PrimaryAccessoryView | SecondaryAccessoryView,\n\tactiveRoute?: AppRoute\n): boolean => {\n\tconst activeRouteValues = Object.values(activeRoute ?? {});\n\tif (view.blacklistRoutes) return !checkList(activeRouteValues, view.blacklistRoutes);\n\tif (view.whitelistRoutes) return checkList(activeRouteValues, view.whitelistRoutes);\n\treturn true;\n};\nexport const useUtilityViews = (): Array<UtilityView> => {\n\tconst utilityViews = useAppStore((s) => s.views.utilityBar);\n\n\tconst activeRoute = useCurrentRoute();\n\treturn useMemo(\n\t\t() => filter(utilityViews, (v) => checkRoute(v, activeRoute)),\n\t\t[activeRoute, utilityViews]\n\t);\n};\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport {\n\tContainer,\n\tIconButton,\n\tRow,\n\tTooltip,\n\tText,\n\tPadding,\n\tIcon\n} from '@zextras/carbonio-design-system';\nimport { map, isEmpty, trim, filter, sortBy } from 'lodash';\nimport React, { useContext, FC, useState, useEffect, useMemo } from 'react';\nimport styled from 'styled-components';\nimport { useHistory } from 'react-router-dom';\n// TODO: convert boards management to ts (and maybe a zustand store)\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { BoardValueContext, BoardSetterContext } from './boards/board-context';\nimport { useAppStore } from '../store/app';\nimport { AppRoute, PrimaryAccessoryView, PrimaryBarView } from '../../types';\nimport BadgeWrap from './badge-wrap';\nimport { isAdmin, ShellMode } from '../multimode';\nimport { SHELL_MODES } from '../constants';\nimport AppContextProvider from '../boot/app/app-context-provider';\nimport { checkRoute } from '../utility-bar/utils';\n\nconst PrimaryContainer = styled(Container)<{ active: boolean }>`\n\tbackground: ${({ theme, active }): string => theme.palette[active ? 'gray4' : 'gray6'].regular};\n\tcursor: pointer;\n\ttransition: background 0.2s ease-out;\n\t&:hover {\n\t\tbackground: ${({ theme, active }): string => theme.palette[active ? 'gray4' : 'gray6'].hover};\n\t}\n\t&:focus {\n\t\tbackground: ${({ theme, active }): string => theme.palette[active ? 'gray4' : 'gray6'].focus};\n\t}\n`;\n\nconst ContainerWithDivider = styled(Container)`\n\tborder-right: 1px solid ${({ theme }): string => theme.palette.gray3.regular};\n`;\n\nconst ToggleBoardIcon: FC = () => {\n\tconst { boards, minimized } = useContext(BoardValueContext);\n\tconst { toggleMinimized } = useContext(BoardSetterContext);\n\n\tif (isEmpty(boards)) return null;\n\treturn (\n\t\t<IconButton\n\t\t\ticonColor=\"primary\"\n\t\t\ticon={minimized ? 'BoardOpen' : 'BoardCollapse'}\n\t\t\tonClick={toggleMinimized}\n\t\t\tsize=\"large\"\n\t\t/>\n\t);\n};\n\ntype PrimaryBarItemProps = {\n\tview: PrimaryBarView;\n\tactive: boolean;\n\tonClick: () => void;\n};\n\ntype PrimaryBarAccessoryItemProps = {\n\tview: PrimaryAccessoryView;\n};\n\nconst AdminPrimaryBarElement: FC<PrimaryBarItemProps> = ({ view, active, onClick }) => (\n\t<PrimaryContainer\n\t\torientation=\"horizontal\"\n\t\tmainAlignment=\"flex-start\"\n\t\theight=\"48px\"\n\t\tonClick={onClick}\n\t>\n\t\t<BadgeWrap badge={view.badge}>\n\t\t\t{typeof view.component === 'string' ? (\n\t\t\t\t<Icon icon={view.component} color={active ? 'primary' : 'text'} size=\"large\" />\n\t\t\t) : (\n\t\t\t\t<view.component active={active} />\n\t\t\t)}\n\t\t</BadgeWrap>\n\t\t<Padding right=\"large\">\n\t\t\t<Text color={active ? 'primary' : 'text'}>{view.label}</Text>\n\t\t</Padding>\n\t</PrimaryContainer>\n);\n\nconst PrimaryBarElement: FC<PrimaryBarItemProps> = ({ view, active, onClick }) => (\n\t<Tooltip label={view.label} placement=\"right\" key={view.id}>\n\t\t<BadgeWrap badge={view.badge}>\n\t\t\t{typeof view.component === 'string' ? (\n\t\t\t\t<IconButton\n\t\t\t\t\ticon={view.component}\n\t\t\t\t\tbackgroundColor={active ? 'gray4' : 'gray6'}\n\t\t\t\t\ticonColor={active ? 'primary' : 'text'}\n\t\t\t\t\tonClick={onClick}\n\t\t\t\t\tsize=\"large\"\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<view.component active={active} />\n\t\t\t)}\n\t\t</BadgeWrap>\n\t</Tooltip>\n);\n\nconst PrimaryBarAccessoryElement: FC<PrimaryBarAccessoryItemProps> = ({ view }) =>\n\tisAdmin() ? (\n\t\t<AppContextProvider key={view.id} pkg={view.app}>\n\t\t\t<PrimaryContainer\n\t\t\t\torientation=\"horizontal\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t\theight=\"48px\"\n\t\t\t\tonClick={view.onClick}\n\t\t\t>\n\t\t\t\t<Container width={48} height={48} style={{ position: 'relative' }}>\n\t\t\t\t\t{typeof view.component === 'string' ? (\n\t\t\t\t\t\t<Icon icon={view.component} size=\"large\" />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<view.component />\n\t\t\t\t\t)}\n\t\t\t\t</Container>\n\t\t\t\t<Padding right=\"large\">\n\t\t\t\t\t<Text>{view.label}</Text>\n\t\t\t\t</Padding>\n\t\t\t</PrimaryContainer>\n\t\t</AppContextProvider>\n\t) : (\n\t\t<Tooltip label={view.label} placement=\"right\" key={view.id}>\n\t\t\t<AppContextProvider key={view.id} pkg={view.app}>\n\t\t\t\t{typeof view.component === 'string' ? (\n\t\t\t\t\t<IconButton\n\t\t\t\t\t\ticon={view.component}\n\t\t\t\t\t\tbackgroundColor=\"gray6\"\n\t\t\t\t\t\ticonColor=\"text\"\n\t\t\t\t\t\tonClick={view.onClick}\n\t\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t/>\n\t\t\t\t) : (\n\t\t\t\t\t<view.component />\n\t\t\t\t)}\n\t\t\t</AppContextProvider>\n\t\t</Tooltip>\n\t);\n\nconst ShellPrimaryBar: FC<{ activeRoute: AppRoute }> = ({ activeRoute }) => {\n\tconst primaryBarViews = useAppStore((s) => s.views.primaryBar);\n\n\tconst [routes, setRoutes] = useState<Record<string, string>>({});\n\tconst history = useHistory();\n\n\tuseEffect(() => {\n\t\tsetRoutes((r) =>\n\t\t\tprimaryBarViews.reduce((acc, v) => {\n\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\tif (!acc[v.id]) acc[v.id] = v.route;\n\t\t\t\treturn acc;\n\t\t\t}, r)\n\t\t);\n\t}, [primaryBarViews]);\n\tuseEffect(() => {\n\t\tif (activeRoute) {\n\t\t\tsetRoutes((r) => ({ ...r, [activeRoute.id]: trim(history.location.pathname, '/') }));\n\t\t}\n\t}, [activeRoute, history.location.pathname, primaryBarViews]);\n\tconst primaryBarAccessoryViews = useAppStore((s) => s.views.primaryBarAccessories);\n\tconst accessories = useMemo(\n\t\t() =>\n\t\t\tsortBy(\n\t\t\t\tfilter(primaryBarAccessoryViews, (v) => checkRoute(v, activeRoute)),\n\t\t\t\t'position'\n\t\t\t),\n\t\t[activeRoute, primaryBarAccessoryViews]\n\t);\n\treturn (\n\t\t<ContainerWithDivider\n\t\t\twidth={isAdmin() ? 'fit' : 49}\n\t\t\theight=\"fill\"\n\t\t\tbackground=\"gray6\"\n\t\t\torientation=\"vertical\"\n\t\t\tmainAlignment=\"flex-start\"\n\t\t\tcrossAlignment=\"flex-start\"\n\t\t>\n\t\t\t<Row\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t\tcrossAlignment=\"flex-start\"\n\t\t\t\torientation=\"vertical\"\n\t\t\t\ttakeAvailableSpace\n\t\t\t\twrap=\"nowrap\"\n\t\t\t\tstyle={{ minHeight: '1px', overflowY: 'overlay' }}\n\t\t\t>\n\t\t\t\t<ShellMode include={[SHELL_MODES.ADMIN]}>\n\t\t\t\t\t{map(primaryBarViews, (view) =>\n\t\t\t\t\t\t// eslint-disable-next-line no-nested-ternary\n\t\t\t\t\t\tview.visible ? (\n\t\t\t\t\t\t\t<AdminPrimaryBarElement\n\t\t\t\t\t\t\t\tkey={view.id}\n\t\t\t\t\t\t\t\tonClick={(): void => history.push(`/${routes[view.id]}`)}\n\t\t\t\t\t\t\t\tview={view}\n\t\t\t\t\t\t\t\tactive={activeRoute?.id === view.id}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : null\n\t\t\t\t\t)}\n\t\t\t\t</ShellMode>\n\t\t\t\t<ShellMode exclude={[SHELL_MODES.ADMIN]}>\n\t\t\t\t\t{map(primaryBarViews, (view) =>\n\t\t\t\t\t\t// eslint-disable-next-line no-nested-ternary\n\t\t\t\t\t\tview.visible ? (\n\t\t\t\t\t\t\t<PrimaryBarElement\n\t\t\t\t\t\t\t\tkey={view.id}\n\t\t\t\t\t\t\t\tonClick={(): void => history.push(`/${routes[view.id]}`)}\n\t\t\t\t\t\t\t\tview={view}\n\t\t\t\t\t\t\t\tactive={activeRoute?.id === view.id}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : null\n\t\t\t\t\t)}\n\t\t\t\t</ShellMode>\n\t\t\t</Row>\n\t\t\t<Row\n\t\t\t\tmainAlignment=\"flex-end\"\n\t\t\t\torientation=\"vertical\"\n\t\t\t\twrap=\"nowrap\"\n\t\t\t\tstyle={{ minHeight: '1px', overflowY: 'overlay' }}\n\t\t\t>\n\t\t\t\t{accessories.map((v) => (\n\t\t\t\t\t<PrimaryBarAccessoryElement view={v} key={v.id} />\n\t\t\t\t))}\n\t\t\t\t<ToggleBoardIcon />\n\t\t\t</Row>\n\t\t</ContainerWithDivider>\n\t);\n};\n\nexport default ShellPrimaryBar;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { FunctionComponent } from 'react';\nimport styled from 'styled-components';\nimport { Icon } from '@zextras/carbonio-design-system';\n\nconst VerticalDivider = styled.div`\n\tposition: relative;\n\toverflow: visible;\n\theight: 100%;\n\twidth: 1px;\n\tmax-width: 1px;\n\tmin-width: 1px;\n\tbackground-color: ${({ theme }): string => theme.palette.gray2.regular};\n\ttransition: background 0.2s;\n\t&:hover {\n\t\tbackground-color: ${({ theme }): string => theme.palette.gray2.hover};\n\t}\n`;\n\nconst Bubble = styled.div<{ open: boolean }>`\n\tcursor: pointer;\n\tz-index: 2;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tposition: absolute;\n\ttop: 50%;\n\tleft: -12px;\n\twidth: 24px;\n\theight: 24px;\n\tborder-radius: 50%;\n\tbackground-color: ${({ theme }): string => theme.palette.gray2.regular};\n\ttransition: background-color 0.2s, transform 0.2s;\n\ttransform: scaleX(${({ open }): number => (open ? 1 : -1)});\n\t&:hover {\n\t\tbackground-color: ${({ theme }): string => theme.palette.gray2.hover};\n\t}\n\t&:active {\n\t\tbackground-color: ${({ theme }): string => theme.palette.gray2.active};\n\t}\n`;\n\nexport const Collapser: FunctionComponent<{ open: boolean; onClick: () => void }> = ({\n\topen,\n\tonClick\n}) => (\n\t<VerticalDivider>\n\t\t<Bubble onClick={onClick} open={open}>\n\t\t\t<Icon size=\"medium\" icon=\"ChevronLeft\" />\n\t\t</Bubble>\n\t</VerticalDivider>\n);\n","/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\nimport create from 'zustand';\nimport { UtilityBarStore } from '../../types';\n\nexport const useUtilityBarStore = create<UtilityBarStore>((set) => ({\n\tmode: 'closed',\n\tcurrent: undefined,\n\tsecondaryBarState: true,\n\tsetMode: (mode): void =>\n\t\tset((s) => ({ mode, secondaryBarState: mode === 'open' ? false : s.secondaryBarState })),\n\tsetCurrent: (current): void => set({ current }),\n\tsetSecondaryBarState: (secondaryBarState: boolean): void => set({ secondaryBarState })\n}));\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport { SHELL_APP_ID } from '../constants';\nimport { useAccountStore } from '../store/account';\nimport { goToLogin } from './go-to-login';\n\nexport const logout = (): Promise<void> =>\n\tuseAccountStore\n\t\t.getState()\n\t\t.soapFetch(SHELL_APP_ID)('EndSession', {\n\t\t\t_jsns: 'urn:zimbraAccount'\n\t\t})\n\t\t.then(() => {\n\t\t\tfetch('/?loginOp=logout')\n\t\t\t\t.then((res) => res)\n\t\t\t\t.then(goToLogin);\n\t\t});\n","/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\nimport React, { FC, useCallback, useMemo } from 'react';\nimport { Container, Tooltip, IconButton, Dropdown } from '@zextras/carbonio-design-system';\nimport { map } from 'lodash';\nimport { useTranslation } from 'react-i18next';\nimport { useUtilityBarStore } from './store';\nimport { SHELL_APP_ID, UtilityView } from '../../types';\nimport { useUtilityViews } from './utils';\nimport { logout } from '../network/logout';\nimport { useContextBridge } from '../store/context-bridge';\nimport { useAccountStore } from '../store/account';\n\nconst UtilityBarItem: FC<{ view: UtilityView }> = ({ view }) => {\n\tconst { mode, setMode, current, setCurrent } = useUtilityBarStore();\n\tconst onClick = useCallback((): void => {\n\t\t// eslint-disable-next-line no-nested-ternary\n\t\tsetMode(current !== view.id ? 'open' : mode !== 'open' ? 'open' : 'closed');\n\t\tsetCurrent(view.id);\n\t}, [current, mode, setCurrent, setMode, view.id]);\n\tif (typeof view.button === 'string') {\n\t\treturn (\n\t\t\t<Tooltip label={view.label} placement=\"bottom-end\">\n\t\t\t\t<IconButton\n\t\t\t\t\ticon={view.button}\n\t\t\t\t\ticonColor={current === view.id ? 'primary' : 'text'}\n\t\t\t\t\tonClick={onClick}\n\t\t\t\t\tsize=\"large\"\n\t\t\t\t/>\n\t\t\t</Tooltip>\n\t\t);\n\t}\n\treturn <view.button mode={mode} setMode={setMode} />;\n};\n\nexport const ShellUtilityBar: FC = () => {\n\tconst views = useUtilityViews();\n\tconst [t] = useTranslation();\n\tconst accountItems = useMemo(\n\t\t() => [\n\t\t\t{\n\t\t\t\tid: 'feedback',\n\t\t\t\tlabel: t('label.feedback', 'Feedback'),\n\t\t\t\tclick: () =>\n\t\t\t\t\tuseContextBridge.getState().packageDependentFunctions?.addBoard(SHELL_APP_ID)(\n\t\t\t\t\t\t'/feedback/',\n\t\t\t\t\t\t{ title: t('label.feedback', 'Feedback') }\n\t\t\t\t\t),\n\t\t\t\ticon: 'MessageSquareOutline'\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'update',\n\t\t\t\tlabel: t('label.update_view', 'Update view'),\n\t\t\t\tclick: (): void => {\n\t\t\t\t\tuseAccountStore.getState().soapFetch(SHELL_APP_ID)<{ _jsns: string }, any>('NoOp', {\n\t\t\t\t\t\t_jsns: 'urn:zimbraMail'\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\ticon: 'Refresh'\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'docs',\n\t\t\t\tlabel: t('label.documentation', 'Documentation'),\n\t\t\t\t// TODO: Replace when the correct link is available\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-empty-function\n\t\t\t\tclick: (): void => {},\n\t\t\t\tdisabled: true,\n\t\t\t\ticon: 'InfoOutline'\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'logout',\n\t\t\t\tlabel: t('label.logout', 'Logout'),\n\t\t\t\tclick: logout,\n\t\t\t\ticon: 'LogOut'\n\t\t\t}\n\t\t],\n\t\t[t]\n\t);\n\treturn (\n\t\t<Container orientation=\"horizontal\" width=\"fit\">\n\t\t\t{map(views, (view) => (\n\t\t\t\t<UtilityBarItem view={view} key={view.id} />\n\t\t\t))}\n\t\t\t<Tooltip label={t('label.account_menu', 'Account menu')} placement=\"left-end\">\n\t\t\t\t<Dropdown items={accountItems}>\n\t\t\t\t\t<IconButton icon=\"PersonOutline\" size=\"large\" />\n\t\t\t\t</Dropdown>\n\t\t\t</Tooltip>\n\t\t</Container>\n\t);\n};\n","/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\nimport React, { FC, useEffect, useMemo } from 'react';\nimport { Container, Responsive } from '@zextras/carbonio-design-system';\nimport { find } from 'lodash';\nimport styled from 'styled-components';\nimport AppContextProvider from '../boot/app/app-context-provider';\nimport { useUtilityViews } from './utils';\nimport { useUtilityBarStore } from './store';\n\nconst Panel = styled(Container)`\n\twidth: ${({ mode }): number => (mode !== 'closed' ? 256 : 48)}px;\n\tborder-radius: 0;\n\theight: 100%;\n\tposition: absolute;\n\tright: 0;\n\ttop: 0;\n\tbottom: 0;\n\ttransition: width 0.2s;\n\tborder-left: 1px solid ${({ theme }): string => theme.palette.gray2.regular};\n`;\nconst Spacer = styled.div<{ mode: string }>`\n\tposition: relative;\n\twidth: ${({ mode }): number => (mode === 'open' ? 256 : 48)}px;\n\theight: 100%;\n\ttransition: width 0.2s;\n`;\n\nexport const ShellUtilityPanel: FC = () => {\n\tconst { mode, setMode, current, setCurrent } = useUtilityBarStore();\n\tconst views = useUtilityViews();\n\tconst currentPanel = useMemo(() => find(views, (view) => view.id === current), [current, views]);\n\tuseEffect(() => {\n\t\tif (!(current && currentPanel)) {\n\t\t\tsetCurrent(views[0]?.id);\n\t\t}\n\t}, [current, currentPanel, setCurrent, views]);\n\treturn currentPanel ? (\n\t\t<Responsive mode=\"desktop\">\n\t\t\t<Spacer mode={mode}>\n\t\t\t\t<Panel mode={mode} mainAlignment=\"flex-start\">\n\t\t\t\t\t{currentPanel && (\n\t\t\t\t\t\t<AppContextProvider pkg={currentPanel?.id}>\n\t\t\t\t\t\t\t<currentPanel.component mode={mode} setMode={setMode} />\n\t\t\t\t\t\t</AppContextProvider>\n\t\t\t\t\t)}\n\t\t\t\t</Panel>\n\t\t\t</Spacer>\n\t\t</Responsive>\n\t) : null;\n};\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { FC, useCallback, useMemo } from 'react';\nimport { filter, findIndex, map, sortBy } from 'lodash';\nimport styled from 'styled-components';\nimport { Route, Switch } from 'react-router-dom';\nimport { Container } from '@zextras/carbonio-design-system';\nimport AppContextProvider from '../boot/app/app-context-provider';\nimport { Collapser } from './collapser';\nimport { useAppStore } from '../store/app';\nimport { AppRoute } from '../../types';\nimport { useUtilityBarStore } from '../utility-bar';\nimport { checkRoute } from '../utility-bar/utils';\n\nconst SidebarContainer = styled(Container)`\n\tmin-width: 48px;\n\tmax-width: 314px;\n\twidth: ${({ sidebarIsOpen }): number => (sidebarIsOpen ? 314 : 48)}px;\n\ttransition: width 300ms;\n\toverflow-x: hidden;\n`;\n\ntype SecondaryBarProps = {\n\tactiveRoute: AppRoute;\n};\n\nconst ShellSecondaryBar: FC<SecondaryBarProps> = ({ activeRoute }) => {\n\tconst isOpen = useUtilityBarStore((s) => s.secondaryBarState);\n\tconst setIsOpen = useUtilityBarStore((s) => s.setSecondaryBarState);\n\tconst onCollapserClick = useCallback(() => setIsOpen(!isOpen), [isOpen, setIsOpen]);\n\tconst secondaryBarViews = useAppStore((s) => s.views.secondaryBar);\n\tconst secondaryBarAccessoryViews = useAppStore((s) => s.views.secondaryBarAccessories);\n\tconst accessories = useMemo(\n\t\t() =>\n\t\t\tsortBy(\n\t\t\t\tfilter(secondaryBarAccessoryViews, (v) => checkRoute(v, activeRoute)),\n\t\t\t\t'position'\n\t\t\t),\n\t\t[activeRoute, secondaryBarAccessoryViews]\n\t);\n\tconst disabled = useMemo(\n\t\t() => findIndex(secondaryBarViews, (view) => view.id === activeRoute?.id) < 0,\n\t\t[activeRoute?.id, secondaryBarViews]\n\t);\n\treturn disabled ? null : (\n\t\t<>\n\t\t\t<SidebarContainer\n\t\t\t\tsidebarIsOpen={isOpen}\n\t\t\t\trole=\"menu\"\n\t\t\t\theight=\"fill\"\n\t\t\t\torientation=\"vertical\"\n\t\t\t\tmainAlignment=\"space-between\"\n\t\t\t\tonClick={isOpen ? undefined : onCollapserClick}\n\t\t\t\tstyle={{\n\t\t\t\t\tmaxHeight: 'calc(100vh - 48px)',\n\t\t\t\t\toverflowY: 'auto'\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<Container mainAlignment=\"flex-start\">\n\t\t\t\t\t<Switch>\n\t\t\t\t\t\t{map(secondaryBarViews, (view) => (\n\t\t\t\t\t\t\t<Route key={view.id} path={`/${view.route}`}>\n\t\t\t\t\t\t\t\t<AppContextProvider pkg={view.app}>\n\t\t\t\t\t\t\t\t\t<view.component expanded={isOpen} />\n\t\t\t\t\t\t\t\t</AppContextProvider>\n\t\t\t\t\t\t\t</Route>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</Switch>\n\t\t\t\t</Container>\n\t\t\t\t<Container mainAlignment=\"flex-end\" height=\"fit\">\n\t\t\t\t\t{accessories.map((view) => (\n\t\t\t\t\t\t<AppContextProvider key={view.id} pkg={view.app}>\n\t\t\t\t\t\t\t<view.component expanded={isOpen} />\n\t\t\t\t\t\t</AppContextProvider>\n\t\t\t\t\t))}\n\t\t\t\t</Container>\n\t\t\t</SidebarContainer>\n\t\t\t<Collapser onClick={onCollapserClick} open={isOpen} />\n\t\t</>\n\t);\n};\n\nexport default ShellSecondaryBar;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React from 'react';\nimport { reduce, find } from 'lodash';\nimport { Accordion, Collapse, Container, Padding } from '@zextras/carbonio-design-system';\nimport { useHistory } from 'react-router-dom';\nimport { useAppStore } from '../store/app';\nimport AppContextProvider from '../boot/app/app-context-provider';\n\nconst SidebarComponent = ({ item }) =>\n\titem.secondary ? (\n\t\t<AppContextProvider pkg={item.id}>\n\t\t\t<item.secondary />\n\t\t</AppContextProvider>\n\t) : null;\n\nexport default function ShellMobileNav({ mobileNavIsOpen, menuTree }) {\n\tconst history = useHistory();\n\tconst views = useAppStore((s) =>\n\t\treduce(\n\t\t\ts.routes,\n\t\t\t(acc, val) => {\n\t\t\t\tconst primary = find(s.views.primaryBar, (item) => item.id === val.id);\n\t\t\t\tconst secondary = find(s.views.secondaryBar, (item) => item.id === val.id);\n\t\t\t\tif (primary && primary.visible) {\n\t\t\t\t\tacc.push({\n\t\t\t\t\t\tid: `${val.app}-wrap`,\n\t\t\t\t\t\tlabel: primary.label,\n\t\t\t\t\t\ticon: typeof primary.component === 'string' ? primary.component : 'Cube',\n\t\t\t\t\t\tonClick: () => history.push(`/${val.route}`),\n\t\t\t\t\t\titems: secondary\n\t\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: secondary.id,\n\t\t\t\t\t\t\t\t\t\tlabel: secondary.id,\n\t\t\t\t\t\t\t\t\t\ticon: 'Cube',\n\t\t\t\t\t\t\t\t\t\tsecondary: secondary.component,\n\t\t\t\t\t\t\t\t\t\tCustomComponent: SidebarComponent\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t ]\n\t\t\t\t\t\t\t: []\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn acc;\n\t\t\t},\n\t\t\t[]\n\t\t)\n\t);\n\n\treturn (\n\t\t<Container\n\t\t\theight=\"fill\"\n\t\t\twidth=\"fit\"\n\t\t\tbackground=\"gray5\"\n\t\t\tstyle={{\n\t\t\t\tposition: 'absolute',\n\t\t\t\tleft: 0,\n\t\t\t\ttop: 0,\n\t\t\t\tzIndex: 3\n\t\t\t}}\n\t\t>\n\t\t\t<Collapse orientation=\"horizontal\" open={mobileNavIsOpen} crossSize=\"100%\">\n\t\t\t\t<Container\n\t\t\t\t\twidth={256 + 48 + 12}\n\t\t\t\t\theight=\"fill\"\n\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\tmainAlignment=\"space-between\"\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tmaxHeight: 'calc(100vh - 48px)',\n\t\t\t\t\t\toverflowY: 'auto'\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<Container width=\"fill\" height=\"fit\" orientation=\"vertical\" mainAlignment=\"space-between\">\n\t\t\t\t\t\t<Accordion items={views} />\n\t\t\t\t\t</Container>\n\t\t\t\t\t<Container width=\"fill\" height=\"fit\" orientation=\"vertical\" mainAlignment=\"flex-end\">\n\t\t\t\t\t\t<Accordion items={menuTree} />\n\t\t\t\t\t\t<Padding vertical=\"medium\">{/* <UserQuota mobileView={true}/> */}</Padding>\n\t\t\t\t\t</Container>\n\t\t\t\t</Container>\n\t\t\t</Collapse>\n\t\t</Container>\n\t);\n}\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React from 'react';\nimport { Container, Responsive } from '@zextras/carbonio-design-system';\nimport ShellPrimaryBar from './shell-primary-bar';\nimport ShellSecondaryBar from './shell-secondary-bar';\nimport ShellMobileNav from './shell-mobile-nav';\n\nexport default function ShellNavigationBar({ mobileNavIsOpen, activeRoute }) {\n\treturn (\n\t\t<Container\n\t\t\torientation=\"horizontal\"\n\t\t\tbackground=\"gray5\"\n\t\t\twidth=\"fit\"\n\t\t\theight=\"fill\"\n\t\t\tmainAlignment=\"flex-start\"\n\t\t\tcrossAlignment=\"flex-start\"\n\t\t>\n\t\t\t<Responsive mode=\"desktop\">\n\t\t\t\t<ShellPrimaryBar activeRoute={activeRoute} />\n\t\t\t\t<ShellSecondaryBar activeRoute={activeRoute} />\n\t\t\t</Responsive>\n\t\t\t<Responsive mode=\"mobile\">\n\t\t\t\t<ShellMobileNav mobileNavIsOpen={mobileNavIsOpen} activeRoute={activeRoute} />\n\t\t\t</Responsive>\n\t\t</Container>\n\t);\n}\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useCallback, useContext } from 'react';\nimport styled from 'styled-components';\nimport { useTranslation } from 'react-i18next';\nimport {\n\tIconButton,\n\tText,\n\tRow,\n\tPadding,\n\tIcon,\n\tContainer,\n\tTooltip\n} from '@zextras/carbonio-design-system';\nimport { BoardValueContext, BoardSetterContext } from './board-context';\n\nconst TabContainer = styled(Row)`\n\tcursor: pointer;\n\theight: 28px;\n\twidth: fit-content;\n\tuser-select: none;\n\tbackground-color: ${({ theme, active }) =>\n\t\tactive ? theme.palette.gray3.regular : theme.palette.gray5.regular};\n\tborder-radius: 2px;\n\tpadding: 2px 4px;\n`;\n\nconst VerticalDivider = styled(Container)`\n\twidth: 1px;\n\theight: 100%;\n\tbackground: ${({ theme }) => theme.palette.gray3.regular};\n\tmargin: ${({ theme }) => theme.sizes.padding.extrasmall};\n`;\n\nexport default function AppBoardTab({ idx, icon, iconSize }) {\n\tconst { boards, currentBoard } = useContext(BoardValueContext);\n\tconst { removeBoard, setCurrentBoard } = useContext(BoardSetterContext);\n\tconst [t] = useTranslation();\n\tconst onClick = useCallback(() => setCurrentBoard(idx), [idx, setCurrentBoard]);\n\tconst onRemove = useCallback(\n\t\t(ev) => {\n\t\t\tev.stopPropagation();\n\t\t\tremoveBoard(idx);\n\t\t},\n\t\t[idx, removeBoard]\n\t);\n\n\treturn (\n\t\t<Container orientation=\"row\" width=\"fit\" maxWidth=\"100%\">\n\t\t\t{currentBoard !== idx ? <VerticalDivider /> : null}\n\t\t\t<TabContainer active={currentBoard === idx} padding={{ all: 'extrasmall' }}>\n\t\t\t\t<Row\n\t\t\t\t\theight=\"100%\"\n\t\t\t\t\tonClick={onClick}\n\t\t\t\t\ttakeAvailableSpace\n\t\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t\t\twrap=\"nowrap\"\n\t\t\t\t>\n\t\t\t\t\t<Icon icon={icon} size={iconSize} />\n\t\t\t\t\t<Padding right=\"small\" />\n\t\t\t\t\t<Tooltip label={boards[idx].title} placement=\"top\" maxWidth=\"700px\">\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\tsize=\"medium\"\n\t\t\t\t\t\t\tweight=\"regular\"\n\t\t\t\t\t\t\tcolor={currentBoard === idx ? 'text' : 'secondary'}\n\t\t\t\t\t\t\tpadding={{ right: 'small' }}\n\t\t\t\t\t\t\toverflow=\"ellipsis\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{boards[idx].title}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t</Row>\n\t\t\t\t<Padding right=\"small\" />\n\t\t\t\t<Tooltip label={t('board.close_tab', 'Close Tab')} placement=\"top\">\n\t\t\t\t\t<IconButton\n\t\t\t\t\t\ticonColor=\"secondary\"\n\t\t\t\t\t\ticon=\"Close\"\n\t\t\t\t\t\tonClick={onRemove}\n\t\t\t\t\t\tstyle={{ padding: '2px', width: '24px', height: '24px' }}\n\t\t\t\t\t/>\n\t\t\t\t</Tooltip>\n\t\t\t</TabContainer>\n\t\t</Container>\n\t);\n}\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useContext, useEffect, useMemo, useState } from 'react';\nimport { Route, Router, useHistory } from 'react-router-dom';\nimport styled from 'styled-components';\nimport { map } from 'lodash';\nimport { createMemoryHistory } from 'history';\nimport AppContextProvider from '../../boot/app/app-context-provider';\nimport { BoardValueContext, BoardSetterContext } from './board-context';\nimport { useAppStore } from '../../store/app';\n\nconst BoardContainer = styled.div`\n\tdisplay: ${(props) => (props.show ? 'block' : 'none')};\n\theight: 100%;\n\twidth: 100%;\n\toverflow-y: auto;\n`;\n\nexport default function AppBoard({ idx }) {\n\tconst { boards, currentBoard } = useContext(BoardValueContext);\n\tconst [history] = useState(() => createMemoryHistory({ initialEntries: [boards[idx].url] }));\n\tconst { updateBoard } = useContext(BoardSetterContext);\n\tconst boardViews = useAppStore((s) => s.views.board);\n\tconst windowHistory = useHistory();\n\tconst routes = useMemo(\n\t\t() =>\n\t\t\tmap(boardViews, (view) => (\n\t\t\t\t<Route key={view.id} path={`/${view.route}`}>\n\t\t\t\t\t<AppContextProvider key={view.id} pkg={view.app}>\n\t\t\t\t\t\t<view.component windowHistory={windowHistory} />\n\t\t\t\t\t</AppContextProvider>\n\t\t\t\t</Route>\n\t\t\t)),\n\t\t[boardViews, windowHistory]\n\t);\n\n\tuseEffect(() => {\n\t\tconst unlisten = history.listen(({ location }) => {\n\t\t\tif (`${location.pathname}${location.search}${location.hash}` !== boards[idx].url) {\n\t\t\t\tupdateBoard(idx, `${location.pathname}${location.search}${location.hash}`);\n\t\t\t}\n\t\t});\n\t\treturn () => {\n\t\t\tunlisten();\n\t\t};\n\t}, [boards, history, idx, updateBoard]);\n\n\tuseEffect(() => {\n\t\tconst l = history.location;\n\t\tif (`${l.pathname}${l.search}${l.hash}` !== boards[idx].url) {\n\t\t\thistory.push(boards[idx].url);\n\t\t}\n\t}, [idx, boards, history]);\n\n\treturn (\n\t\t<BoardContainer show={currentBoard === idx}>\n\t\t\t<Router history={history}>{routes}</Router>\n\t\t</BoardContainer>\n\t);\n}\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useContext, useRef, useMemo, useLayoutEffect } from 'react';\nimport styled, { css } from 'styled-components';\nimport { reduce, map, slice } from 'lodash';\nimport {\n\tContainer,\n\tDivider,\n\tIconButton,\n\tRow,\n\tPadding,\n\tDropdown,\n\tButton,\n\tuseHiddenCount,\n\tTooltip\n} from '@zextras/carbonio-design-system';\nimport { useTranslation } from 'react-i18next';\nimport AppBoardTab from './app-board-tab';\nimport AppBoard from './app-board';\nimport { BoardSetterContext, BoardValueContext } from './board-context';\nimport { useApps } from '../../store/app';\n\nfunction TabsList({ tabs, currentBoard, setCurrentBoard, largeView, t }) {\n\tconst apps = useApps();\n\tconst tabContainerRef = useRef();\n\tconst [hiddenTabsCount, recalculateHiddenTabs] = useHiddenCount(tabContainerRef, largeView);\n\n\tuseLayoutEffect(() => {\n\t\trecalculateHiddenTabs();\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [tabs, largeView, tabContainerRef.current]);\n\n\treturn (\n\t\t<Row wrap=\"nowrap\" height=\"100%\" mainAlignment=\"flex-start\" takeAvailableSpace>\n\t\t\t<Row\n\t\t\t\tref={tabContainerRef}\n\t\t\t\theight=\"48px\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t\tstyle={{ overflow: 'hidden' }}\n\t\t\t\twidth=\"calc(100% - 8px)\"\n\t\t\t>\n\t\t\t\t{tabs &&\n\t\t\t\t\tmap(tabs, (tab) => (\n\t\t\t\t\t\t<AppBoardTab\n\t\t\t\t\t\t\tkey={tab.key}\n\t\t\t\t\t\t\tidx={tab.key}\n\t\t\t\t\t\t\ticon={apps?.[tab.app]?.icon ?? 'Edit2Outline'}\n\t\t\t\t\t\t\ticonSize=\"large\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t</Row>\n\t\t\t{hiddenTabsCount > 0 && (\n\t\t\t\t<>\n\t\t\t\t\t<Container width=\"fit\" padding={{ horizontal: 'extrasmall', vertical: 'extrasmall' }}>\n\t\t\t\t\t\t<Container width=\"1px\" heigth=\"fill\" background=\"gray3\" />\n\t\t\t\t\t</Container>\n\t\t\t\t\t<Tooltip label={t('board.show_tabs', 'Show other tabs')} placement=\"top\">\n\t\t\t\t\t\t<Dropdown\n\t\t\t\t\t\t\twidth=\"fit\"\n\t\t\t\t\t\t\tstyle={{ flexGrow: '1' }}\n\t\t\t\t\t\t\titems={map(slice(tabs, -hiddenTabsCount), (tab) => ({\n\t\t\t\t\t\t\t\tid: tab.key,\n\t\t\t\t\t\t\t\tlabel: tab.title,\n\t\t\t\t\t\t\t\ticon: tab.icon,\n\t\t\t\t\t\t\t\tclick: () => setCurrentBoard(tab.key),\n\t\t\t\t\t\t\t\tselected: tab.key === currentBoard\n\t\t\t\t\t\t\t}))}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\ttype=\"ghost\"\n\t\t\t\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\t\t\t\tlabel={`+${hiddenTabsCount}`}\n\t\t\t\t\t\t\t\tpadding={{ all: 'extrasmall' }}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Dropdown>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t</>\n\t\t\t)}\n\t\t</Row>\n\t);\n}\n\nconst BoardContainer = styled.div`\n\tposition: fixed;\n\ttop: 60px;\n\tbottom: 0;\n\tleft: 48px;\n\tright: 0;\n\tbackground-color: rgba(0, 0, 0, 0);\n\tpointer-events: none;\n\tz-index: 10;\n\t${({ largeView }) =>\n\t\tlargeView &&\n\t\tcss`\n\t\t\tbackground-color: rgba(0, 0, 0, 0.5);\n\t\t\tpointer-events: auto;\n\t\t`}\n\t${({ minimized }) =>\n\t\tminimized &&\n\t\tcss`\n\t\t\tdisplay: none;\n\t\t`}\n`;\nconst Board = styled(Container)`\n\tz-index: 5;\n\tposition: absolute;\n\tleft: 24px;\n\tbottom: 0;\n\twidth: 700px;\n\theight: 70vh;\n\tmin-height: 400px;\n\tbox-shadow: 0 2px 5px 0 rgba(125, 125, 125, 0.5);\n\tpointer-events: auto;\n\t${({ largeView }) =>\n\t\tlargeView &&\n\t\tcss`\n\t\t\theight: calc(100% - 24px);\n\t\t\twidth: calc(100% - 24px * 2);\n\t\t\tmin-height: auto;\n\t\t`}\n`;\nconst BoardHeader = styled(Row)``;\nconst BoardDetailContainer = styled(Row)`\n\tmin-height: 0;\n`;\nconst BackButton = styled(IconButton)``;\nconst Actions = styled(Row)``;\n\nexport default function AppBoardWindow() {\n\tconst [t] = useTranslation();\n\tconst { boards: shellBoards, currentBoard, largeView, minimized } = useContext(BoardValueContext);\n\tconst { toggleLargeView, toggleMinimized, removeAllBoards, setCurrentBoard } =\n\t\tuseContext(BoardSetterContext);\n\n\tconst [tabs, boards] = useMemo(\n\t\t() =>\n\t\t\treduce(\n\t\t\t\tshellBoards,\n\t\t\t\t(acc, board, boardId) => {\n\t\t\t\t\tconst [_tabs, _boards] = acc;\n\t\t\t\t\t_tabs.push({ key: boardId, ...board });\n\t\t\t\t\t_boards.push(<AppBoard key={boardId} idx={boardId} />);\n\t\t\t\t\treturn acc;\n\t\t\t\t},\n\t\t\t\t[[], []]\n\t\t\t),\n\t\t[shellBoards]\n\t);\n\tif (!tabs.length) return null;\n\treturn (\n\t\t<BoardContainer largeView={largeView} minimized={minimized}>\n\t\t\t<Board background=\"gray6\" crossAlignment=\"unset\" largeView={largeView}>\n\t\t\t\t<BoardHeader background=\"gray5\">\n\t\t\t\t\t<Padding all=\"extrasmall\">\n\t\t\t\t\t\t<Tooltip label={t('board.hide', 'Hide board')} placement=\"top\">\n\t\t\t\t\t\t\t<BackButton icon=\"BoardCollapseOutline\" onClick={toggleMinimized} />\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t</Padding>\n\t\t\t\t\t<TabsList\n\t\t\t\t\t\ttabs={tabs}\n\t\t\t\t\t\tlargeView={largeView}\n\t\t\t\t\t\tcurrentBoard={currentBoard}\n\t\t\t\t\t\tsetCurrentBoard={setCurrentBoard}\n\t\t\t\t\t\tt={t}\n\t\t\t\t\t/>\n\t\t\t\t\t<Actions padding={{ all: 'extrasmall' }}>\n\t\t\t\t\t\t{boards[currentBoard]?.context?.onReturnToApp && (\n\t\t\t\t\t\t\t<Padding right=\"extrasmall\">\n\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\ticon={'DiagonalArrowRightUp'}\n\t\t\t\t\t\t\t\t\tonClick={boards[currentBoard]?.context?.onReturnToApp}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</Padding>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{/* <Padding right=\"extrasmall\">\n\t\t\t\t\t\t\t<Tooltip label={t('board.open_app', 'Open in app')} placement=\"top\">\n\t\t\t\t\t\t\t\t<IconButton icon=\"DiagonalArrowRightUpOutline\" onClick={toggleLargeView} />\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t</Padding> */}\n\t\t\t\t\t\t<Padding right=\"extrasmall\">\n\t\t\t\t\t\t\t<Tooltip\n\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\tlargeView\n\t\t\t\t\t\t\t\t\t\t? t('board.reduce', 'Reduce board')\n\t\t\t\t\t\t\t\t\t\t: t('board.enlarge', 'Enlarge board')\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tplacement=\"top\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\ticon={largeView ? 'CollapseOutline' : 'ExpandOutline'}\n\t\t\t\t\t\t\t\t\tonClick={toggleLargeView}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t</Padding>\n\t\t\t\t\t\t<Tooltip label={t('board.close_tabs', 'Close all your tabs')} placement=\"top\">\n\t\t\t\t\t\t\t<IconButton icon=\"CloseOutline\" onClick={removeAllBoards} />\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t</Actions>\n\t\t\t\t</BoardHeader>\n\t\t\t\t<Divider style={{ height: '2px' }} />\n\t\t\t\t<BoardDetailContainer takeAvailableSpace>{boards}</BoardDetailContainer>\n\t\t\t</Board>\n\t\t</BoardContainer>\n\t);\n}\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useEffect, useState, useContext } from 'react';\nimport { Row, Responsive, ModalManager, SnackbarManager } from '@zextras/carbonio-design-system';\nimport styled from 'styled-components';\nimport { find } from 'lodash';\nimport AppViewContainer from './app-view-container';\nimport ShellContextProvider from './shell-context-provider';\nimport ShellHeader from './shell-header';\nimport ShellNavigationBar from './shell-navigation-bar';\nimport AppBoardWindow from './boards/app-board-window';\nimport { ThemeCallbacksContext } from '../boot/theme-provider';\nimport { useUserSettings } from '../store/account';\nimport { ShellUtilityBar, ShellUtilityPanel } from '../utility-bar';\nimport { useCurrentRoute } from '../history/hooks';\n\nconst Background = styled.div`\n\tbackground: ${({ theme }) => theme.palette.gray6.regular};\n\tdisplay: flex;\n\tflex-direction: column;\n\theight: 100%;\n\tmin-height: 100%;\n\tmax-height: 100%;\n\twidth: 100%;\n\tmin-width: 100%;\n\tmax-width: 100%;\n`;\n\nfunction DarkReaderListener() {\n\tconst { setDarkReaderState } = useContext(ThemeCallbacksContext);\n\tconst settings = useUserSettings();\n\tuseEffect(() => {\n\t\tconst darkreaderState =\n\t\t\tfind(settings?.props ?? [], ['name', 'zappDarkreaderMode'])?._content ?? 'auto';\n\t\tsetDarkReaderState(darkreaderState);\n\t}, [setDarkReaderState, settings]);\n\treturn null;\n}\n\nexport function Shell() {\n\tconst [mobileNavOpen, setMobileNavOpen] = useState(false);\n\tconst activeRoute = useCurrentRoute();\n\n\treturn (\n\t\t<Background>\n\t\t\t<DarkReaderListener />\n\t\t\t{/* <MainAppRerouter /> */}\n\t\t\t<ShellHeader\n\t\t\t\tactiveRoute={activeRoute}\n\t\t\t\tmobileNavIsOpen={mobileNavOpen}\n\t\t\t\tonMobileMenuClick={() => setMobileNavOpen(!mobileNavOpen)}\n\t\t\t>\n\t\t\t\t<ShellUtilityBar />\n\t\t\t</ShellHeader>\n\t\t\t<Row crossAlignment=\"unset\" style={{ position: 'relative', flexGrow: '1' }}>\n\t\t\t\t<ShellNavigationBar activeRoute={activeRoute} mobileNavIsOpen={mobileNavOpen} />\n\t\t\t\t<AppViewContainer activeRoute={activeRoute} />\n\t\t\t\t<ShellUtilityPanel />\n\t\t\t</Row>\n\t\t\t<Responsive mode=\"desktop\">\n\t\t\t\t<AppBoardWindow />\n\t\t\t</Responsive>\n\t\t</Background>\n\t);\n}\n\nexport default function ShellView() {\n\treturn (\n\t\t<ShellContextProvider>\n\t\t\t<ModalManager>\n\t\t\t\t<SnackbarManager>\n\t\t\t\t\t<Shell />\n\t\t\t\t</SnackbarManager>\n\t\t\t</ModalManager>\n\t\t</ShellContextProvider>\n\t);\n}\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { FC, useContext } from 'react';\nimport { BrowserRouter, useHistory } from 'react-router-dom';\nimport { SnackbarManagerContext, ModalManagerContext } from '@zextras/carbonio-design-system';\nimport AppLoaderMounter from './app/app-loader-mounter';\nimport { useBridge } from '../store/context-bridge';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport ShellView from '../shell/shell-view';\nimport { BASENAME } from '../constants';\n\nconst ContextBridge: FC = () => {\n\tconst history = useHistory();\n\t// eslint-disable-next-line @typescript-eslint/ban-types\n\tconst createSnackbar = useContext(SnackbarManagerContext) as Function;\n\t// eslint-disable-next-line @typescript-eslint/ban-types\n\tconst createModal = useContext(ModalManagerContext) as Function;\n\tuseBridge({\n\t\tfunctions: {\n\t\t\tgetHistory: () => history,\n\t\t\tcreateSnackbar,\n\t\t\tcreateModal\n\t\t}\n\t});\n\treturn null;\n};\n\nconst BootstrapperRouter: FC = () => (\n\t<BrowserRouter basename={BASENAME}>\n\t\t<ContextBridge />\n\t\t<AppLoaderMounter />\n\t\t<ShellView />\n\t</BrowserRouter>\n);\n\nexport default BootstrapperRouter;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useCallback, useMemo, useReducer } from 'react';\nimport { pickBy, trim } from 'lodash';\nimport { useTranslation } from 'react-i18next';\nimport { BoardValueContext, BoardSetterContext } from './board-context';\nimport { useBridge } from '../../store/context-bridge';\n\nfunction getRandomKey() {\n\treturn String(Date.now() * (Math.floor(Math.random() * 1000) + 1));\n}\nconst reducer = (state, action) => {\n\tswitch (action.type) {\n\t\tcase 'ADD_BOARD': {\n\t\t\tconst returnValue = {\n\t\t\t\t...state,\n\t\t\t\tboards: {\n\t\t\t\t\t[action.payload.boardKey]: {\n\t\t\t\t\t\turl: action.payload.url,\n\t\t\t\t\t\ttitle: action.payload.title,\n\t\t\t\t\t\tcontext: action.payload.context,\n\t\t\t\t\t\tapp: action.payload.app\n\t\t\t\t\t},\n\t\t\t\t\t...state.boards\n\t\t\t\t},\n\t\t\t\tcurrentBoard: action.payload.boardKey,\n\t\t\t\tminimized: false\n\t\t\t};\n\t\t\treturn returnValue;\n\t\t}\n\t\tcase 'REMOVE_BOARD': {\n\t\t\tlet newCurrentBoard = state.currentBoard;\n\t\t\tconst boardKeys = Object.keys(state.boards);\n\t\t\tconst boardToRemove = (action.payload && action.payload.key) || state.currentBoard;\n\t\t\tif (state.currentBoard === boardToRemove) {\n\t\t\t\tconst removedBoardIndex = boardKeys.indexOf(boardToRemove);\n\t\t\t\tnewCurrentBoard = boardKeys[removedBoardIndex > 0 ? removedBoardIndex - 1 : 1];\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tboards: pickBy(state.boards, (board, key) => key !== boardToRemove),\n\t\t\t\tlargeView: boardKeys.length === 1 ? false : state.largeView,\n\t\t\t\tcurrentBoard: newCurrentBoard\n\t\t\t};\n\t\t}\n\t\tcase 'REMOVE_ALL_BOARDS': {\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tboards: {},\n\t\t\t\tlargeView: false\n\t\t\t};\n\t\t}\n\t\tcase 'UPDATE_BOARD': {\n\t\t\tif (!state.boards[action.payload.key]) return state;\n\t\t\tconst updatedBoards = { ...state.boards };\n\t\t\tif (action.payload.url) updatedBoards[action.payload.key].url = action.payload.url;\n\t\t\tif (action.payload.title) updatedBoards[action.payload.key].title = action.payload.title;\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tboards: updatedBoards\n\t\t\t};\n\t\t}\n\t\tcase 'UPDATE_CURRENT_BOARD': {\n\t\t\tconst updatedBoards = { ...state.boards };\n\t\t\tif (action.payload.url) updatedBoards[state.currentBoard].url = action.payload.url;\n\t\t\tif (action.payload.title) updatedBoards[state.currentBoard].title = action.payload.title;\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tboards: updatedBoards\n\t\t\t};\n\t\t}\n\t\tcase 'SET_CURRENT_BOARD': {\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tcurrentBoard: action.payload.key\n\t\t\t};\n\t\t}\n\t\tcase 'TOGGLE_LARGE_VIEW': {\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tlargeView: !state.largeView\n\t\t\t};\n\t\t}\n\t\tcase 'TOGGLE_MINIMIZED': {\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tminimized: !state.minimized\n\t\t\t};\n\t\t}\n\t\tdefault:\n\t\t\tconsole.warn('Unrecognized action type in BoardContext');\n\t\t\treturn state;\n\t}\n};\n\nexport default function BoardContextProvider({ children }) {\n\tconst [t] = useTranslation();\n\tconst [boardState, dispatch] = useReducer(reducer, {\n\t\tboards: {},\n\t\tcurrentBoard: 0,\n\t\tlargeView: false,\n\t\tminimized: false\n\t});\n\n\tconst addBoard = useCallback(\n\t\t(url, context, app) => {\n\t\t\tconst boardKey = getRandomKey();\n\t\t\tdispatch({\n\t\t\t\ttype: 'ADD_BOARD',\n\t\t\t\tpayload: {\n\t\t\t\t\turl: `/${trim(url, '/')}`,\n\t\t\t\t\ttitle: context?.title ?? t('new_tab', 'New Tab'),\n\t\t\t\t\tcontext,\n\t\t\t\t\tboardKey,\n\t\t\t\t\tapp\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn boardKey;\n\t\t},\n\t\t[t]\n\t);\n\tconst removeBoard = useCallback((key) => {\n\t\tdispatch({ type: 'REMOVE_BOARD', payload: { key } });\n\t}, []);\n\tconst removeCurrentBoard = useCallback(() => {\n\t\tdispatch({ type: 'REMOVE_BOARD' });\n\t}, []);\n\tconst removeAllBoards = useCallback(() => {\n\t\tdispatch({ type: 'REMOVE_ALL_BOARDS' });\n\t}, []);\n\tconst updateBoard = useCallback((key, url, title) => {\n\t\tdispatch({ type: 'UPDATE_BOARD', payload: { key, url, title } });\n\t}, []);\n\tconst updateCurrentBoard = useCallback((url, title) => {\n\t\tdispatch({ type: 'UPDATE_CURRENT_BOARD', payload: { url, title } });\n\t}, []);\n\tconst setCurrentBoard = useCallback((key) => {\n\t\tdispatch({ type: 'SET_CURRENT_BOARD', payload: { key } });\n\t}, []);\n\tconst toggleLargeView = useCallback(() => {\n\t\tdispatch({ type: 'TOGGLE_LARGE_VIEW' });\n\t}, []);\n\tconst toggleMinimized = useCallback(() => {\n\t\tdispatch({ type: 'TOGGLE_MINIMIZED' });\n\t}, []);\n\n\tconst boardSetters = useMemo(\n\t\t() => ({\n\t\t\taddBoard,\n\t\t\tremoveBoard,\n\t\t\tremoveCurrentBoard,\n\t\t\tremoveAllBoards,\n\t\t\tupdateBoard,\n\t\t\tsetCurrentBoard,\n\t\t\ttoggleLargeView,\n\t\t\ttoggleMinimized,\n\t\t\tupdateCurrentBoard\n\t\t}),\n\t\t[\n\t\t\taddBoard,\n\t\t\tremoveAllBoards,\n\t\t\tremoveBoard,\n\t\t\tremoveCurrentBoard,\n\t\t\tsetCurrentBoard,\n\t\t\ttoggleLargeView,\n\t\t\ttoggleMinimized,\n\t\t\tupdateBoard,\n\t\t\tupdateCurrentBoard\n\t\t]\n\t);\n\n\tconst cbFunctions = useMemo(\n\t\t() => ({\n\t\t\tpackageDependentFunctions: {\n\t\t\t\taddBoard: (pkg) => (path, context) => {\n\t\t\t\t\taddBoard(path, context, context?.app ?? pkg);\n\t\t\t\t}\n\t\t\t},\n\t\t\tfunctions: {\n\t\t\t\tremoveBoard,\n\t\t\t\tremoveCurrentBoard,\n\t\t\t\tupdateBoard,\n\t\t\t\tsetCurrentBoard,\n\t\t\t\tupdateCurrentBoard,\n\t\t\t\ttoggleMinimizedBoard: toggleMinimized\n\t\t\t}\n\t\t}),\n\t\t[\n\t\t\taddBoard,\n\t\t\tremoveBoard,\n\t\t\tremoveCurrentBoard,\n\t\t\tsetCurrentBoard,\n\t\t\ttoggleMinimized,\n\t\t\tupdateBoard,\n\t\t\tupdateCurrentBoard\n\t\t]\n\t);\n\tuseBridge(cbFunctions);\n\n\treturn (\n\t\t<BoardValueContext.Provider value={boardState}>\n\t\t\t<BoardSetterContext.Provider value={boardSetters}>{children}</BoardSetterContext.Provider>\n\t\t</BoardValueContext.Provider>\n\t);\n}\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { FC } from 'react';\nimport { I18nextProvider } from 'react-i18next';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport BoardContextProvider from '../shell/boards/board-context-provider';\nimport { BootstrapperContext } from './bootstrapper-context';\nimport I18nFactory from '../i18n/i18n-factory';\nimport StoreFactory from '../redux/store-factory';\n\nconst BootstrapperContextProvider: FC<{ i18nFactory: I18nFactory; storeFactory: StoreFactory }> = ({\n\tchildren,\n\ti18nFactory,\n\tstoreFactory\n}) => (\n\t<BootstrapperContext.Provider\n\t\tvalue={{\n\t\t\tstoreFactory,\n\t\t\ti18nFactory\n\t\t}}\n\t>\n\t\t<I18nextProvider i18n={i18nFactory.getShellI18n()}>\n\t\t\t<BoardContextProvider>{children}</BoardContextProvider>\n\t\t</I18nextProvider>\n\t</BootstrapperContext.Provider>\n);\nexport default BootstrapperContextProvider;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport i18next, { i18n } from 'i18next';\nimport Backend from 'i18next-http-backend';\n// import LanguageDetector from 'i18next-browser-languagedetector';\nimport { dropRight, forEach } from 'lodash';\nimport { II18nFactory, CarbonioModule } from '../../types';\nimport { getShell } from '../store/app';\nimport { SHELL_APP_ID } from '../constants';\n\nexport default class I18nFactory implements II18nFactory {\n\t_cache: { [pkg: string]: i18n } = {};\n\n\tlocale = 'en';\n\n\tpublic getShellI18n(): i18n {\n\t\treturn this.getAppI18n(getShell() ?? { name: SHELL_APP_ID });\n\t}\n\n\tpublic setLocale(locale: string): void {\n\t\tif (this.locale !== locale) {\n\t\t\tthis.locale = locale;\n\t\t\tforEach(this._cache, (appI18n) => {\n\t\t\t\tappI18n.changeLanguage(locale);\n\t\t\t});\n\t\t}\n\t}\n\n\t// eslint-disable-next-line class-methods-use-this\n\tpublic getAppI18n(appPkgDescription: CarbonioModule | { name: string }): i18n {\n\t\tif (this._cache[appPkgDescription.name]) {\n\t\t\treturn this._cache[appPkgDescription.name];\n\t\t}\n\t\tconst newI18n = i18next.createInstance();\n\t\tconst baseI18nPath =\n\t\t\tappPkgDescription.name === SHELL_APP_ID\n\t\t\t\t? BASE_PATH\n\t\t\t\t: dropRight((appPkgDescription as CarbonioModule).js_entrypoint.split('/')).join('/');\n\t\tnewI18n\n\t\t\t// load translation using http -> see /public/locales (i.e. https://github.com/i18next/react-i18next/tree/master/example/react/public/locales)\n\t\t\t// learn more: https://github.com/i18next/i18next-http-backend\n\t\t\t.use(Backend)\n\t\t\t// detect user language\n\t\t\t// learn more: https://github.com/i18next/i18next-browser-languageDetector\n\t\t\t// .use(LanguageDetector)\n\t\t\t// init i18next\n\t\t\t// for all options read: https://www.i18next.com/overview/configuration-options\n\t\t\t.init({\n\t\t\t\tlng: this.locale,\n\t\t\t\tfallbackLng: 'en',\n\t\t\t\tdebug: false,\n\t\t\t\tinterpolation: {\n\t\t\t\t\tescapeValue: false // not needed for react as it escapes by default\n\t\t\t\t},\n\t\t\t\tmissingKeyHandler: (lng, ns, key, fallbackValue) => {\n\t\t\t\t\tconsole.warn(`Missing translation with key '${key}'`);\n\t\t\t\t},\n\t\t\t\tbackend: {\n\t\t\t\t\tloadPath: `${baseI18nPath}/i18n/{{lng}}.json`\n\t\t\t\t}\n\t\t\t});\n\t\tthis._cache[appPkgDescription.name] = newI18n;\n\t\treturn newI18n;\n\t}\n}\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport { Store, configureStore, createSlice } from '@reduxjs/toolkit';\nimport logger from 'redux-logger';\nimport { CarbonioModule } from '../../types';\n\nconst _uselessSlice = createSlice({\n\tname: '_useless',\n\tinitialState: {},\n\treducers: {}\n});\n\nexport default class StoreFactory {\n\tprivate _cache: { [pkgName: string]: Store<any> } = {};\n\n\tgetStoreForApp(pkg: CarbonioModule): Store<any> {\n\t\tif (this._cache[pkg.name]) return this._cache[pkg?.name];\n\t\tconst store = configureStore({\n\t\t\tdevTools: __CARBONIO_DEV__\n\t\t\t\t? {\n\t\t\t\t\t\tname: pkg.name\n\t\t\t\t }\n\t\t\t\t: false,\n\t\t\tmiddleware: __CARBONIO_DEV__\n\t\t\t\t? // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n\t\t\t\t (getDefaultMiddleware) => getDefaultMiddleware().concat(logger)\n\t\t\t\t: // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n\t\t\t\t (getDefaultMiddleware) => getDefaultMiddleware(),\n\t\t\treducer: {\n\t\t\t\t_useless: _uselessSlice.reducer\n\t\t\t}\n\t\t});\n\t\tthis._cache[pkg?.name] = store;\n\t\treturn store;\n\t}\n}\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport { map } from 'lodash';\nimport React, { FC, useCallback, useMemo } from 'react';\nimport { Redirect, Route, Switch } from 'react-router-dom';\nimport { Container, Chip, Padding, Divider, Text, Button } from '@zextras/carbonio-design-system';\nimport { useTranslation } from 'react-i18next';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport AppContextProvider from '../boot/app/app-context-provider';\nimport { useSearchStore } from './search-store';\nimport { SEARCH_APP_ID } from '../constants';\nimport { useAppStore } from '../store/app';\nimport { QueryChip } from '../../types';\n// import { RouteLeavingGuard } from '../ui-extras/nav-guard';\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nconst useQuery = (): [Array<QueryChip>, Function] =>\n\tuseSearchStore((s) => [s.query, s.updateQuery]);\n// eslint-disable-next-line @typescript-eslint/ban-types\nconst useDisableSearch = (): [boolean, Function] =>\n\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\tuseSearchStore((s) => [s.searchDisabled, s.setSearchDisabled]);\nconst ResultsHeader: FC<{ label: string }> = ({ label }) => {\n\tconst [t] = useTranslation();\n\tconst [query, updateQuery] = useQuery();\n\tconst [disabled, setDisabled] = useDisableSearch();\n\n\tconst resetQuery = useCallback(() => {\n\t\tupdateQuery([]);\n\t\tsetDisabled(false);\n\t}, [updateQuery, setDisabled]);\n\treturn (\n\t\t<>\n\t\t\t<Container\n\t\t\t\torientation=\"horizontal\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t\twidth=\"100%\"\n\t\t\t\tbackground=\"gray5\"\n\t\t\t\theight=\"fit\"\n\t\t\t\tminHeight=\"48px\"\n\t\t\t\tmaxHeight=\"120px\"\n\t\t\t\tstyle={{ overflow: 'hidden' }}\n\t\t\t\tpadding={{ horizontal: 'large', vertical: 'medium' }}\n\t\t\t>\n\t\t\t\t<Container width=\"85%\" orientation=\"horizontal\" wrap=\"wrap\" mainAlignment=\"flex-start\">\n\t\t\t\t\t<Text color=\"secondary\">{label}</Text>\n\n\t\t\t\t\t{map(query, (q, i) => (\n\t\t\t\t\t\t<Padding key={`${i}${q.label}`} all=\"extrasmall\">\n\t\t\t\t\t\t\t<Chip {...q} background=\"gray2\" />\n\t\t\t\t\t\t</Padding>\n\t\t\t\t\t))}\n\t\t\t\t</Container>\n\t\t\t\t{query?.length > 0 && (\n\t\t\t\t\t<Container width=\"15%\" mainAlignment=\"flex-start\" crossAlignment=\"flex-start\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tlabel={t('label.clear_search_query', 'CLEAR SEARCH')}\n\t\t\t\t\t\t\ticon=\"CloseOutline\"\n\t\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t\t\ttype=\"ghost\"\n\t\t\t\t\t\t\tonClick={resetQuery}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Container>\n\t\t\t\t)}\n\t\t\t</Container>\n\t\t\t<Divider color=\"gray3\" />\n\t\t</>\n\t);\n};\n\nexport const SearchAppView: FC = () => {\n\tconst searchViews = useAppStore((s) => s.views.search);\n\tconst routes = useMemo(\n\t\t() =>\n\t\t\tmap(searchViews, (view) => (\n\t\t\t\t<Route key={`/${view.route}`} path={`/${SEARCH_APP_ID}/${view.route}`}>\n\t\t\t\t\t<AppContextProvider pkg={view.app}>\n\t\t\t\t\t\t<view.component\n\t\t\t\t\t\t\tuseQuery={useQuery}\n\t\t\t\t\t\t\tResultsHeader={ResultsHeader}\n\t\t\t\t\t\t\tuseDisableSearch={useDisableSearch}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</AppContextProvider>\n\t\t\t\t</Route>\n\t\t\t)),\n\t\t[searchViews]\n\t);\n\treturn (\n\t\t<>\n\t\t\t{/* <RouteLeavingGuard\n\t\t\t\twhen\n\t\t\t\ttitle={t('search.leave.title', 'Are you sure you want to leave this module?')}\n\t\t\t>\n\t\t\t\t<Text>{t('search.leave.warning', 'The current search results will be lost')}</Text>\n\t\t\t</RouteLeavingGuard> */}\n\t\t\t<Switch>\n\t\t\t\t{routes}\n\t\t\t\t<Redirect\n\t\t\t\t\texact\n\t\t\t\t\tstrict\n\t\t\t\t\tfrom={`/${SEARCH_APP_ID}`}\n\t\t\t\t\tto={`/${SEARCH_APP_ID}/${searchViews[0]?.route}`}\n\t\t\t\t/>\n\t\t\t</Switch>\n\t\t</>\n\t);\n};\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { FC, useMemo } from 'react';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport { Accordion, Tooltip, IconButton } from '@zextras/carbonio-design-system';\nimport { map, startsWith } from 'lodash';\nimport { SETTINGS_APP_ID } from '../constants';\nimport { useAppStore } from '../store/app';\n\nexport const SettingsSidebar: FC<{ expanded: boolean }> = ({ expanded }) => {\n\tconst settingsViews = useAppStore((s) => s.views.settings);\n\tconst history = useHistory();\n\tconst location = useLocation();\n\tconst items = useMemo(\n\t\t() =>\n\t\t\tsettingsViews.map((view) => ({\n\t\t\t\tid: view.route,\n\t\t\t\tlabel: view.label,\n\t\t\t\ticon: view.icon,\n\t\t\t\tactive: location.pathname === `/${SETTINGS_APP_ID}/${view.route}` && location.search === '',\n\t\t\t\tdisableHover:\n\t\t\t\t\tlocation.pathname === `/${SETTINGS_APP_ID}/${view.route}` && location.search === '',\n\t\t\t\tonClick: (e: MouseEvent): void => {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\thistory.push(`/${SETTINGS_APP_ID}/${view.route}`);\n\t\t\t\t},\n\t\t\t\titems: map(view.subSections, (item) => ({\n\t\t\t\t\t...item,\n\t\t\t\t\tactive: location.search === `?section=${item.id}`,\n\t\t\t\t\tdisableHover: location.search === `?section=${item.id}`,\n\t\t\t\t\tonClick: (e: MouseEvent): void => {\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\thistory.replace(`/${SETTINGS_APP_ID}/${view.route}?section=${item.id}`);\n\t\t\t\t\t}\n\t\t\t\t}))\n\t\t\t})),\n\t\t[history, location.pathname, location.search, settingsViews]\n\t);\n\tconst collapsedItems = useMemo(\n\t\t() =>\n\t\t\tsettingsViews.map((v) => (\n\t\t\t\t<Tooltip label={v.label} placement=\"right\" key={v.id}>\n\t\t\t\t\t<IconButton\n\t\t\t\t\t\ticon={v.icon}\n\t\t\t\t\t\tonClick={(): void => history.push(`/${SETTINGS_APP_ID}/${v.route}`)}\n\t\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t\ticonColor={startsWith(location.pathname, `/${SETTINGS_APP_ID}/${v.route}`)}\n\t\t\t\t\t/>\n\t\t\t\t</Tooltip>\n\t\t\t)),\n\t\t[history, location.pathname, settingsViews]\n\t);\n\treturn expanded ? <Accordion items={items} /> : <>{collapsedItems}</>;\n};\n","/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\nimport { TFunction } from 'react-i18next';\nimport { SettingsSubSection } from '../../types';\n\nexport const themeSubSection = (t: TFunction): SettingsSubSection => ({\n\tlabel: t('settings.general.theme_options', 'Theme Options'),\n\tid: 'theme_options'\n});\nexport const timezoneAndLanguageSubSection = (t: TFunction): SettingsSubSection => ({\n\tlabel: t('settings.timezone_and_language', 'Time Zone and Language'),\n\tid: 'timezone_and_language'\n});\nexport const outOfOfficeSubSection = (t: TFunction): SettingsSubSection => ({\n\tlabel: t('settings.out_of_office.headings.settings_label', 'Out of Office Settings'),\n\tid: 'out_of_office'\n});\nexport const searchPrefsSubSection = (t: TFunction): SettingsSubSection => ({\n\tlabel: t('search.app', 'Search'),\n\tid: 'search_prefs'\n});\nexport const versionsSubSection = (t: TFunction): SettingsSubSection => ({\n\tlabel: t('module.app.version', 'Application versions'),\n\tid: 'app_version'\n});\nexport const quotaSubSection = (t: TFunction): SettingsSubSection => ({\n\tlabel: t('user_quota.title', \"User's quota\"),\n\tid: 'user_quota'\n});\nexport const accountSubSection = (t: TFunction): SettingsSubSection => ({\n\tlabel: t('settings.general.account', 'Account'),\n\tid: 'account'\n});\n\nexport const settingsSubSections = (t: TFunction): Array<SettingsSubSection> => [\n\tthemeSubSection(t),\n\ttimezoneAndLanguageSubSection(t),\n\toutOfOfficeSubSection(t),\n\tsearchPrefsSubSection(t),\n\tversionsSubSection(t),\n\tquotaSubSection(t),\n\taccountSubSection(t)\n];\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { FC, useCallback, useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { FormSubSection, Button } from '@zextras/carbonio-design-system';\nimport { logout } from '../../../network/logout';\nimport { accountSubSection } from '../../general-settings-sub-sections';\n\nconst Logout: FC = () => {\n\tconst [t] = useTranslation();\n\tconst onClick = useCallback(() => {\n\t\tlogout();\n\t}, []);\n\tconst sectionTitle = useMemo(() => accountSubSection(t), [t]);\n\treturn (\n\t\t<FormSubSection\n\t\t\tlabel={sectionTitle.label}\n\t\t\tminWidth=\"calc(min(100%, 512px))\"\n\t\t\twidth=\"50%\"\n\t\t\tid={sectionTitle.id}\n\t\t>\n\t\t\t<Button label={t('settings.general.account_logout', 'Logout')} onClick={onClick} />\n\t\t</FormSubSection>\n\t);\n};\n\nexport default Logout;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { FC, useState, useMemo, useContext, useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { FormSubSection, Select } from '@zextras/carbonio-design-system';\nimport { find } from 'lodash';\nimport { ThemeCallbacksContext } from '../../../boot/theme-provider';\nimport { AccountSettings, DRPropValues } from '../../../../types';\nimport { SHELL_APP_ID } from '../../../constants';\nimport { themeSubSection } from '../../general-settings-sub-sections';\n\nconst AppearanceSettings: FC<{\n\tsettings: AccountSettings;\n\taddMod: (type: 'prefs' | 'props', key: string, value: { value: any; app: string }) => void;\n}> = ({ settings, addMod }) => {\n\tconst { setDarkReaderState } = useContext(ThemeCallbacksContext);\n\tconst [drMode, setDrMode] = useState<DRPropValues>(\n\t\t(find(settings.props, ['name', 'zappDarkreaderMode'])?._content as unknown as DRPropValues) ??\n\t\t\t'auto'\n\t);\n\tconst [t] = useTranslation();\n\tconst items = useMemo(\n\t\t() => [\n\t\t\t{\n\t\t\t\tlabel: t('settings.general.theme_auto', 'Auto'),\n\t\t\t\tvalue: 'auto'\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: t('settings.general.theme_enabled', 'Enabled'),\n\t\t\t\tvalue: 'enabled'\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: t('settings.general.theme_disabled', 'Disabled'),\n\t\t\t\tvalue: 'disabled'\n\t\t\t}\n\t\t],\n\t\t[t]\n\t);\n\tconst defaultSelection = useMemo(\n\t\t() => find(items, ['value', drMode]) ?? items[0],\n\t\t[drMode, items]\n\t);\n\tconst onSelectionChange = useCallback(\n\t\t(v) => {\n\t\t\tif (v !== drMode) {\n\t\t\t\tsetDrMode((old) => (v !== old ? v : old));\n\t\t\t\t// setDarkReaderState(v);\n\t\t\t\taddMod('props', 'zappDarkreaderMode', { app: SHELL_APP_ID, value: v });\n\t\t\t}\n\t\t},\n\t\t[addMod, drMode]\n\t);\n\t// useEffect(\n\t// \t() => (): void =>\n\t// \t\tsetDarkReaderState(\n\t// \t\t\t(find(settings.props, ['name', 'zappDarkreaderMode'])\n\t// \t\t\t\t?._content as unknown as DRPropValues) ?? 'auto'\n\t// \t\t),\n\t// \t[setDarkReaderState, settings.props]\n\t// );\n\tconst subSection = useMemo(() => themeSubSection(t), [t]);\n\treturn (\n\t\t<FormSubSection\n\t\t\tlabel={subSection.label}\n\t\t\tminWidth=\"calc(min(100%, 512px))\"\n\t\t\twidth=\"50%\"\n\t\t\tid={subSection.id}\n\t\t>\n\t\t\t<Select\n\t\t\t\titems={items}\n\t\t\t\tselection={defaultSelection}\n\t\t\t\tlabel={t('settings.general.dark_mode', 'Dark Mode')}\n\t\t\t\tonChange={onSelectionChange}\n\t\t\t/>\n\t\t</FormSubSection>\n\t);\n};\n\nexport default AppearanceSettings;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\n/* eslint-disable @typescript-eslint/ban-ts-comment */\n\nimport React, { FC, useContext, useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n\tFormSubSection,\n\tContainer,\n\tText,\n\tBadge,\n\tDivider,\n\tTooltip,\n\tThemeContext\n} from '@zextras/carbonio-design-system';\nimport { map } from 'lodash';\nimport { useAppList } from '../../../store/app/hooks';\n\nimport { SEARCH_APP_ID, SETTINGS_APP_ID } from '../../../constants/index';\nimport { CarbonioModule } from '../../../../types';\nimport { versionsSubSection } from '../../general-settings-sub-sections';\n\nconst ModuleVersionSettings: FC = () => {\n\tconst apps = useAppList();\n\tconst [t] = useTranslation();\n\tconst theme = useContext(ThemeContext);\n\n\tconst copyToClipboard: any = (e: any) => {\n\t\te.preventDefault();\n\t\tnavigator.clipboard.writeText(e.target.innerText);\n\t};\n\n\tconst filteredList = useMemo(\n\t\t() => apps.filter((app) => app.name !== SEARCH_APP_ID && app.name !== SETTINGS_APP_ID),\n\t\t[apps]\n\t);\n\tconst sectionTitle = useMemo(() => versionsSubSection(t), [t]);\n\treturn (\n\t\t<>\n\t\t\t<FormSubSection\n\t\t\t\tlabel={sectionTitle.label}\n\t\t\t\tminWidth=\"calc(min(100%, 512px))\"\n\t\t\t\twidth=\"50%\"\n\t\t\t\tid={sectionTitle.id}\n\t\t\t>\n\t\t\t\t{map(filteredList, (app: CarbonioModule) => (\n\t\t\t\t\t<Container key={app.name} padding={{ horizontal: 'large', vertical: 'small' }}>\n\t\t\t\t\t\t<Container orientation=\"horizontal\" mainAlignment=\"space-between\">\n\t\t\t\t\t\t\t<Text>\n\t\t\t\t\t\t\t\t{app.display} ({app.name})\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t<Tooltip placement=\"top\" label=\"Click to copy\">\n\t\t\t\t\t\t\t\t<Text style={{ cursor: 'pointer' }} onClick={(e: any): any => copyToClipboard(e)}>\n\t\t\t\t\t\t\t\t\tVersion: {app.version}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t</Container>\n\t\t\t\t\t\t<Container\n\t\t\t\t\t\t\torientation=\"horizontal\"\n\t\t\t\t\t\t\tmainAlignment=\"space-between\"\n\t\t\t\t\t\t\tpadding={{ top: 'extrasmall', bottom: 'medium' }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Text color=\"secondary\">{app.description}</Text>\n\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\tvalue=\"Active\"\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\t\t\tbackgroundColor: theme.palette.success.regular,\n\t\t\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\t\t\tcolor: theme.palette.gray6.regular\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t></Badge>\n\t\t\t\t\t\t</Container>\n\t\t\t\t\t\t<Divider color=\"gray2\" />\n\t\t\t\t\t</Container>\n\t\t\t\t))}\n\t\t\t</FormSubSection>\n\t\t</>\n\t);\n};\n\nexport default ModuleVersionSettings;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { FC } from 'react';\nimport { Padding, Row, Text } from '@zextras/carbonio-design-system';\n\nconst Heading: FC<{ title: string }> = ({ title }) => (\n\t<>\n\t\t<Row padding={{ all: 'small' }} mainAlignment=\"baseline\" crossAlignment=\"baseline\" width=\"100%\">\n\t\t\t<Text size=\"large\" weight=\"bold\">\n\t\t\t\t{title}\n\t\t\t</Text>\n\t\t</Row>\n\t\t<Padding veritcal=\"small\" />\n\t</>\n);\n\nexport default Heading;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport { Container } from '@zextras/carbonio-design-system';\nimport styled from 'styled-components';\n\nconst Styler = styled(Container)`\n\t.rw-btn,\n\t.rw-input-reset,\n\t.rw-input,\n\t.rw-dropdown-list-autofill,\n\t.rw-filter-input {\n\t\tcolor: inherit;\n\t\tpadding: 0;\n\t\tmargin: 0;\n\t\tborder: none;\n\t\tbox-shadow: none;\n\t\tbackground: none;\n\t\tbackground-image: none;\n\t\tfont-family: inherit;\n\t\tfont-size: inherit;\n\t\tline-height: inherit;\n\t\t-ms-touch-action: manipulation;\n\t\ttouch-action: manipulation;\n\t}\n\t.rw-btn::-moz-focus-inner {\n\t\tpadding: 0;\n\t\tborder: 0;\n\t}\n\tselect.rw-input {\n\t\ttext-transform: none;\n\t}\n\thtml input[type='button'].rw-input {\n\t\t-webkit-appearance: button;\n\t\tcursor: pointer;\n\t}\n\ttextarea.rw-input {\n\t\toverflow: auto;\n\t\tresize: vertical;\n\t}\n\tbutton[disabled].rw-input,\n\tfieldset[disabled] .rw-input,\n\thtml input[disabled].rw-input {\n\t\tcursor: not-allowed;\n\t}\n\tbutton.rw-input::-moz-focus-inner,\n\tinput.rw-input::-moz-focus-inner {\n\t\tborder: 0;\n\t\tpadding: 0;\n\t}\n\tinput[type='checkbox'],\n\tinput[type='radio'] {\n\t\tbox-sizing: border-box;\n\t\tpadding: 0;\n\t}\n\t${\n\t\t/* @font-face {\n\tfont-family: \"RwWidgets\";\n\tfont-weight: normal;\n\tfont-style: normal;\n\t${/* src: url(\"../fonts/rw-widgets.eot?v=4.1.0\");\n\tsrc: url(\"../fonts/rw-widgets.eot?#iefix&v=4.1.0\") format(\"embedded-opentype\"),\n\turl(\"../fonts/rw-widgets.woff?v=4.1.0\") format(\"woff\"),\n\turl(\"../fonts/rw-widgets.ttf?v=4.1.0\") format(\"truetype\"),\n\t\turl(\"../fonts/rw-widgets.svg?v=4.1.0#fontawesomeregular\") format(\"svg\"); */ ''\n\t};\n\t.rw-i {\n\t\tdisplay: inline-block;\n\t\tcolor: inherit;\n\t\t${/* font-family: RwWidgets; */ ''};\n\t\tfont-style: normal;\n\t\tfont-weight: normal;\n\t\tfont-variant: normal;\n\t\ttext-transform: none;\n\t\t-moz-osx-font-smoothing: grayscale;\n\t\t-webkit-font-smoothing: antialiased;\n\t}\n\t.rw-i-caret-down:before {\n\t\tcontent: '\\e803';\n\t}\n\t.rw-i-caret-up:before {\n\t\tcontent: '\\e800';\n\t}\n\t.rw-i-chevron-left:before {\n\t\tcontent: '\\f104';\n\t}\n\t.rw-i-chevron-right:before {\n\t\tcontent: '\\f105';\n\t}\n\t.rw-i-clock-o:before {\n\t\tcontent: '\\e805';\n\t}\n\t.rw-i-calendar:before {\n\t\tcontent: '\\e804';\n\t}\n\t.rw-i-search:before {\n\t\tcontent: '\\e801';\n\t}\n\t.rw-btn {\n\t\tposition: relative;\n\t\tcolor: #333;\n\t\tdisplay: inline-block;\n\t\ttext-align: center;\n\t\tvertical-align: middle;\n\t\tborder: 1px solid transparent;\n\t\tcursor: pointer;\n\t\toutline: none;\n\t}\n\t.rw-state-readonly .rw-btn,\n\t.rw-state-disabled .rw-btn {\n\t\tcursor: not-allowed;\n\t}\n\t.rw-btn-select {\n\t\topacity: 0.75;\n\t\ttransition: opacity 150ms ease-in;\n\t}\n\t.rw-btn-select:hover,\n\t.rw-state-focus .rw-btn-select,\n\t:hover > .rw-btn-select {\n\t\topacity: 1;\n\t}\n\t.rw-btn-primary {\n\t\twidth: 100%;\n\t\twhite-space: normal;\n\t\tline-height: 2em;\n\t}\n\t.rw-btn-primary:hover {\n\t\tbackground-color: #e6e6e6;\n\t}\n\t.rw-btn-select[disabled],\n\t.rw-btn-primary[disabled],\n\tfieldset[disabled] .rw-btn-select,\n\tfieldset[disabled] .rw-btn-primary {\n\t\tbox-shadow: none;\n\t\tcursor: not-allowed;\n\t\topacity: 0.65;\n\t\tpointer-events: none;\n\t}\n\t.rw-sr {\n\t\tposition: absolute;\n\t\twidth: 1px;\n\t\theight: 1px;\n\t\tmargin: -1px;\n\t\tpadding: 0;\n\t\toverflow: hidden;\n\t\tclip: rect(0, 0, 0, 0);\n\t\tborder: 0;\n\t}\n\t.rw-widget {\n\t\tbackground-clip: border-box;\n\t\tborder: none;\n\t\toutline: none;\n\t\tposition: relative;\n\t\tborder-radius: 2px 2px 0 0;\n\t\twidth: 100%;\n\t}\n\t.rw-widget,\n\t.rw-widget * {\n\t\tbox-sizing: border-box;\n\t}\n\t.rw-widget:before,\n\t.rw-widget *:before,\n\t.rw-widget:after,\n\t.rw-widget *:after {\n\t\tbox-sizing: border-box;\n\t}\n\t.rw-widget > .rw-widget-container {\n\t\twidth: 100%;\n\t\tmargin: 0;\n\t}\n\t.rw-widget-container {\n\t\tbackground-color: ${({ theme }) => theme.palette.gray5.regular};\n\t\tborder-bottom: ${({ theme }) => theme.palette.gray2.regular} 1px solid;\n\t}\n\t.rw-widget-container.rw-state-focus,\n\t.rw-state-focus > .rw-widget-container,\n\t.rw-widget-container.rw-state-focus:hover,\n\t.rw-state-focus > .rw-widget-container:hover {\n\t\tbackground-color: ${({ theme }) => theme.palette.gray5.focus};\n\t\tborder-bottom: ${({ theme }) => theme.palette.primary.regular} 1px solid;\n\t}\n\t.rw-widget-container.rw-state-readonly,\n\t.rw-state-readonly > .rw-widget-container {\n\t\tcursor: not-allowed;\n\t}\n\t.rw-widget-container.rw-state-disabled,\n\t.rw-state-disabled > .rw-widget-container,\n\tfieldset[disabled] .rw-widget-container,\n\t.rw-widget-container.rw-state-disabled:hover,\n\t.rw-state-disabled > .rw-widget-container:hover,\n\tfieldset[disabled] .rw-widget-container:hover,\n\t.rw-widget-container.rw-state-disabled:active,\n\t.rw-state-disabled > .rw-widget-container:active,\n\tfieldset[disabled] .rw-widget-container:active {\n\t\tbox-shadow: none;\n\t\tcursor: not-allowed;\n\t}\n\n\t.rw-datetime-picker {\n\t\theight: 42px;\n\t}\n\t.rw-widget-picker {\n\t\tposition: relative;\n\t\toverflow: hidden;\n\t\tborder-collapse: separate;\n\t\tdisplay: inline-table;\n\t\theight: 100%;\n\t}\n\t.rw-widget-picker > * {\n\t\tposition: relative;\n\t\tborder: none;\n\t\toutline: none;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: table-cell;\n\t}\n\t.rw-widget-picker > .rw-select {\n\t\twidth: ${({ allDay }) => (allDay ? '34px' : '68px')};\n\t\twhite-space: nowrap;\n\t}\n\t.rw-open > .rw-widget-picker {\n\t\tborder-bottom-right-radius: 0;\n\t\tborder-bottom-left-radius: 0;\n\t}\n\t.rw-open-up > .rw-widget-picker {\n\t\tborder-top-right-radius: 0;\n\t\tborder-top-left-radius: 0;\n\t}\n\tfieldset[disabled] .rw-widget-picker,\n\t.rw-state-disabled > .rw-widget-picker {\n\t\tbackground-color: #eee;\n\t}\n\t.rw-multiselect > .rw-widget-picker {\n\t\theight: auto;\n\t}\n\t.rw-select {\n\t\tcursor: pointer;\n\t}\n\t.rw-select > * {\n\t\twidth: 32px;\n\t\theight: 100%;\n\t}\n\t.rw-state-readonly .rw-select,\n\t.rw-state-disabled .rw-select {\n\t\tcursor: not-allowed;\n\t}\n\t.rw-select-bordered {\n\t\tcursor: pointer;\n\t\tborder: none;\n\t\tborder-left: #ccc 1px solid;\n\t}\n\t.rw-select-bordered:hover,\n\t.rw-select-bordered:active {\n\t\tbackground-color: #e6e6e6;\n\t}\n\t.rw-select-bordered:active {\n\t\tbox-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n\t}\n\t.rw-state-disabled .rw-select-bordered,\n\t.rw-state-readonly .rw-select-bordered,\n\tfieldset[disabled] .rw-select-bordered,\n\t.rw-state-disabled .rw-select-bordered:hover,\n\t.rw-state-readonly .rw-select-bordered:hover,\n\tfieldset[disabled] .rw-select-bordered:hover,\n\t.rw-state-disabled .rw-select-bordered:active,\n\t.rw-state-readonly .rw-select-bordered:active,\n\tfieldset[disabled] .rw-select-bordered:active {\n\t\tcursor: not-allowed;\n\t\tbackground-color: inherit;\n\t\tbackground-image: none;\n\t\tbox-shadow: none;\n\t}\n\t.rw-rtl .rw-select-bordered {\n\t\tborder-right: #ccc 1px solid;\n\t\tborder-left: none;\n\t}\n\t.rw-rtl {\n\t\tdirection: rtl;\n\t}\n\t.rw-input-reset,\n\t.rw-input,\n\t.rw-dropdown-list-autofill,\n\t.rw-filter-input {\n\t\toutline: 0;\n\t}\n\t.rw-input-reset::-moz-placeholder {\n\t\tcolor: #999;\n\t\topacity: 1;\n\t}\n\t.rw-input-reset:-ms-input-placeholder {\n\t\tcolor: #999;\n\t}\n\t.rw-input-reset::-webkit-input-placeholder {\n\t\tcolor: #999;\n\t}\n\t.rw-input,\n\t.rw-dropdown-list-autofill,\n\t.rw-filter-input {\n\t\tpadding: 0 0.857em;\n\t}\n\t.rw-input[type='text']::-ms-clear {\n\t\tdisplay: none;\n\t}\n\t.rw-input[disabled],\n\tfieldset[disabled] .rw-input {\n\t\tbox-shadow: none;\n\t\tcursor: not-allowed;\n\t\topacity: 1;\n\t\tbackground-color: #eee;\n\t\tborder-color: #ccc;\n\t}\n\t.rw-input[readonly] {\n\t\tcursor: not-allowed;\n\t}\n\t.rw-i.rw-loading {\n\t\tdisplay: block;\n\t\t${/* background: url(\"../img/loading.gif\") no-repeat center; */ ''};\n\t\tmin-width: 16px;\n\t\twidth: 1.9em;\n\t\theight: 16px;\n\t}\n\t.rw-i.rw-loading:before {\n\t\tcontent: '';\n\t}\n\t.rw-placeholder {\n\t\tcolor: #999;\n\t}\n\t.rw-detect-autofill:-webkit-autofill {\n\t\tanimation-name: react-widgets-autofill-start;\n\t\ttransition: background-color 50000s ease-in-out 0s;\n\t}\n\t.rw-detect-autofill:not(:-webkit-autofill) {\n\t\tanimation-name: react-widgets-autofill-cancel;\n\t}\n\t.rw-webkit-autofill .rw-widget-container,\n\t.rw-input:-webkit-autofill {\n\t\tbackground-color: #faffbd !important;\n\t\tbackground-image: none !important;\n\t\tcolor: #000 !important;\n\t}\n\t.rw-widget-input,\n\t.rw-filter-input {\n\t}\n\t.rw-widget-input.rw-state-focus {\n\t\tbox-shadow: 0 0 8px rgba(102, 175, 233, 0.6), inset 0 1px 1px rgba(0, 0, 0, 0.075);\n\t}\n\t.rw-list {\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\tlist-style: none;\n\t\tfont-size: 1em;\n\t\toutline: 0;\n\t\toverflow: auto;\n\t\tmax-height: 200px;\n\t}\n\t.rw-list-option {\n\t\t-ms-user-select: none;\n\t\tuser-select: none;\n\t\tcolor: #333;\n\t\tcursor: pointer;\n\t\tborder: 1px solid transparent;\n\t}\n\t.rw-list-option.rw-state-focus,\n\t.rw-list-option.rw-state-focus:hover {\n\t\tbackground-color: transparent;\n\t\tborder-color: #66afe9;\n\t\tcolor: #333;\n\t}\n\t.rw-list-option:hover,\n\t.rw-list-option:hover.rw-state-focus {\n\t\tbackground-color: #e6e6e6;\n\t\tborder-color: #e6e6e6;\n\t\tcolor: #333;\n\t}\n\t.rw-list-option.rw-state-selected,\n\t.rw-list-option.rw-state-selected:hover {\n\t\tbackground-color: #337ab7;\n\t\tborder-color: #337ab7;\n\t\tcolor: white;\n\t}\n\tfieldset[disabled] .rw-list-option,\n\t.rw-list-option.rw-state-disabled,\n\t.rw-list-option.rw-state-readonly {\n\t\tbox-shadow: none;\n\t\tcursor: not-allowed;\n\t\tcolor: #999;\n\t\topacity: 0.7;\n\t}\n\tfieldset[disabled] .rw-list-option:hover,\n\t.rw-list-option.rw-state-disabled:hover,\n\t.rw-list-option.rw-state-readonly:hover {\n\t\tbackground: none;\n\t\tborder-color: transparent;\n\t}\n\t.rw-list-empty,\n\t.rw-list-option,\n\t.rw-list-optgroup {\n\t\tpadding: 0.143em 0.75em;\n\t\toutline: 0;\n\t}\n\t.rw-list-optgroup {\n\t\tfont-weight: bold;\n\t\tpadding-top: 7px;\n\t}\n\t.rw-list-option-create {\n\t\tborder-top: 1px #ccc solid;\n\t}\n\t.rw-dropdown-list-autofill {\n\t\tpadding: 0;\n\t}\n\t.rw-dropdown-list-input {\n\t\tbackground-color: transparent;\n\t\tvertical-align: middle;\n\t\tpadding-right: 0;\n\t\tmax-width: 1px;\n\t\ttext-overflow: ellipsis;\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t}\n\t.rw-rtl .rw-dropdown-list-input {\n\t\tpadding-right: 0.857em;\n\t\tpadding-left: 0;\n\t}\n\t.rw-filter-input {\n\t\tposition: relative;\n\t\tmargin: 4px;\n\t\tpadding-right: 0;\n\t}\n\t.rw-filter-input .rw-rtl {\n\t\tpadding-right: 0.857em;\n\t\tpadding-left: 0;\n\t}\n\t.rw-filter-input .rw-select,\n\t.rw-filter-input .rw-btn {\n\t\topacity: 0.75;\n\t\tcursor: text;\n\t}\n\t.rw-filter-input > .rw-select,\n\t.rw-filter-input > .rw-select:active,\n\t.rw-filter-input > .rw-select:hover {\n\t\tbackground: none;\n\t\tcursor: initial;\n\t\tbox-shadow: none;\n\t}\n\n\t.rw-number-picker .rw-btn {\n\t\tcursor: pointer;\n\t\theight: calc(1.2145em - 1px);\n\t\t${\n\t\t\t/*\n\t\t margin-top: -1px\\9;\n\theight: 1.2145em\\9;\n*/ 'border: 2px solid red;'\n\t\t};\n\t\tline-height: 1.2145em;\n\t\tline-height: calc(1.2145em - 1px);\n\t\tdisplay: block;\n\t\tborder: none;\n\t}\n\n\t.rw-number-picker .rw-btn:hover,\n\t.rw-number-picker .rw-btn:active {\n\t\tbackground-color: #e6e6e6;\n\t}\n\t.rw-number-picker .rw-btn:active {\n\t\tbox-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n\t}\n\t.rw-state-disabled .rw-number-picker .rw-btn,\n\t.rw-state-readonly .rw-number-picker .rw-btn,\n\tfieldset[disabled] .rw-number-picker .rw-btn,\n\t.rw-state-disabled .rw-number-picker .rw-btn:hover,\n\t.rw-state-readonly .rw-number-picker .rw-btn:hover,\n\tfieldset[disabled] .rw-number-picker .rw-btn:hover,\n\t.rw-state-disabled .rw-number-picker .rw-btn:active,\n\t.rw-state-readonly .rw-number-picker .rw-btn:active,\n\tfieldset[disabled] .rw-number-picker .rw-btn:active {\n\t\tcursor: not-allowed;\n\t\tbackground-color: inherit;\n\t\tbackground-image: none;\n\t\tbox-shadow: none;\n\t}\n\t.rw-number-picker .rw-select {\n\t\tvertical-align: middle;\n\t}\n\t.rw-number-picker .rw-select,\n\t.rw-number-picker .rw-select:hover,\n\t.rw-number-picker .rw-select:active {\n\t\tbox-shadow: none;\n\t}\n\t.rw-calendar-popup {\n\t\tright: auto;\n\t\tmin-width: 0;\n\t\twidth: 18em;\n\t}\n\t.rw-calendar {\n\t\tborder-radius: 4px;\n\t\tbackground-color: #fff;\n\t\tborder: #ccc 1px solid;\n\t\toverflow: hidden;\n\t}\n\t.rw-calendar.rw-popup {\n\t\tborder-color: #ccc;\n\t}\n\t.rw-calendar-now {\n\t\tfont-weight: bold;\n\t}\n\t.rw-calendar-btn-left,\n\t.rw-calendar-btn-right {\n\t\twidth: 12.5%;\n\t}\n\t.rw-calendar-btn-view {\n\t\twidth: 75%;\n\t}\n\t.rw-calendar-footer {\n\t\tborder-top: 1px solid #ccc;\n\t}\n\t.rw-calendar-grid {\n\t\toutline: none;\n\t\theight: 14.28571429em;\n\t\ttable-layout: fixed;\n\t\tborder-collapse: separate;\n\t\tborder-spacing: 0;\n\t\twidth: 100%;\n\t\tbackground-color: #fff;\n\t}\n\t.rw-head-cell {\n\t\ttext-align: center;\n\t\tborder-bottom: 1px solid #ccc;\n\t\tpadding: 0.25em;\n\t}\n\t.rw-cell {\n\t\tcolor: #333;\n\t\tborder-radius: 4px;\n\t\tcursor: pointer;\n\t\tline-height: normal;\n\t\ttext-align: center;\n\t\tborder: 1px solid transparent;\n\t\tpadding: 0.25em;\n\t}\n\t.rw-cell:hover {\n\t\tbackground-color: #e6e6e6;\n\t\tborder-color: #e6e6e6;\n\t\tcolor: #333;\n\t}\n\t.rw-cell.rw-state-focus,\n\t.rw-cell.rw-state-focus:hover {\n\t\tbackground-color: transparent;\n\t\tborder-color: #66afe9;\n\t\tcolor: #333;\n\t}\n\t.rw-cell.rw-state-selected,\n\t.rw-cell.rw-state-selected:hover {\n\t\tbackground-color: #337ab7;\n\t\tborder-color: #337ab7;\n\t\tcolor: white;\n\t}\n\t.rw-cell.rw-state-disabled {\n\t\tcolor: #999;\n\t\topacity: 0.7;\n\t}\n\t.rw-cell.rw-state-disabled:hover {\n\t\tbackground: none;\n\t\tborder-color: transparent;\n\t}\n\t.rw-calendar-month .rw-cell {\n\t\ttext-align: center;\n\t}\n\t.rw-cell-off-range {\n\t\tcolor: #999;\n\t}\n\t.rw-calendar-transition-group {\n\t\tposition: relative;\n\t}\n\t.rw-calendar-transition {\n\t\ttransition: transform 300ms;\n\t\toverflow: hidden;\n\t}\n\t.rw-calendar-transition-top {\n\t\t-ms-transform: translateY(-100%);\n\t\ttransform: translateY(-100%);\n\t}\n\t.rw-calendar-transition-bottom {\n\t\t-ms-transform: translateY(100%);\n\t\ttransform: translateY(100%);\n\t}\n\t.rw-calendar-transition-right {\n\t\t-ms-transform: translateX(-100%);\n\t\ttransform: translateX(-100%);\n\t}\n\t.rw-calendar-transition-left {\n\t\t-ms-transform: translateX(100%);\n\t\ttransform: translateX(100%);\n\t}\n\t.rw-calendar-transition-entering.rw-calendar-transition-top,\n\t.rw-calendar-transition-entered.rw-calendar-transition-top,\n\t.rw-calendar-transition-entering.rw-calendar-transition-bottom,\n\t.rw-calendar-transition-entered.rw-calendar-transition-bottom {\n\t\t-ms-transform: translateY(0);\n\t\ttransform: translateY(0);\n\t}\n\t.rw-calendar-transition-entering.rw-calendar-transition-right,\n\t.rw-calendar-transition-entered.rw-calendar-transition-right,\n\t.rw-calendar-transition-entering.rw-calendar-transition-left,\n\t.rw-calendar-transition-entered.rw-calendar-transition-left {\n\t\t-ms-transform: translateX(0);\n\t\ttransform: translateX(0);\n\t}\n\t.rw-calendar-transition-exiting.rw-calendar-transition-top {\n\t\t-ms-transform: translateY(100%);\n\t\ttransform: translateY(100%);\n\t}\n\t.rw-calendar-transition-exiting.rw-calendar-transition-bottom {\n\t\t-ms-transform: translateY(-100%);\n\t\ttransform: translateY(-100%);\n\t}\n\t.rw-calendar-transition-exiting.rw-calendar-transition-right {\n\t\t-ms-transform: translateX(100%);\n\t\ttransform: translateX(100%);\n\t}\n\t.rw-calendar-transition-exiting.rw-calendar-transition-left {\n\t\t-ms-transform: translateX(-100%);\n\t\ttransform: translateX(-100%);\n\t}\n\t.rw-select-list {\n\t\toverflow: auto;\n\t\tposition: relative;\n\t}\n\t.rw-select-list .rw-list {\n\t\tmax-height: none;\n\t\tfont-size: 1em;\n\t}\n\t.rw-select-list-label {\n\t\tdisplay: block;\n\t\tposition: relative;\n\t\tfont-weight: normal;\n\t\tcursor: inherit;\n\t\tpadding-left: 20px;\n\t\tmargin: 0;\n\t}\n\t.rw-rtl .rw-select-list-label {\n\t\tpadding-left: 0;\n\t\tpadding-right: 20px;\n\t}\n\tinput.rw-select-list-input {\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\ttop: 50%;\n\t\t-ms-transform: translateY(-50%);\n\t\ttransform: translateY(-50%);\n\t\t${/* top: 0.1em\\9; */ ''};\n\t\tmargin: 0;\n\t\tline-height: normal;\n\t\tcursor: inherit;\n\t}\n\t.rw-rtl input.rw-select-list-input {\n\t\tleft: auto;\n\t\tright: 0;\n\t}\n\t.rw-loading-mask {\n\t\tcontent: '';\n\t\t${/* background: url(\"../img/loader-big.gif\") no-repeat center; */ ''};\n\t\tposition: absolute;\n\t\tbackground-color: #fff;\n\t\tborder-radius: 4px;\n\t\topacity: 0.7;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\theight: 100%;\n\t\twidth: 100%;\n\t}\n\t.rw-multiselect {\n\t\tcursor: text;\n\t}\n\t.rw-multiselect .rw-input-reset {\n\t\theight: calc(2.429em - 2px);\n\t\t${\n\t\t\t/* margin-top: -2px\\9;\n\theight: 2.429em\\9; */ ''\n\t\t};\n\t\tborder-width: 0;\n\t\twidth: auto;\n\t\tmax-width: 100%;\n\t\tpadding: 0 0.857em;\n\t}\n\t.rw-multiselect .rw-select {\n\t\tvertical-align: middle;\n\t}\n\t.rw-multiselect .rw-select,\n\t.rw-multiselect .rw-select:hover,\n\t.rw-multiselect .rw-select:active {\n\t\tbox-shadow: none;\n\t\tbackground: none;\n\t}\n\t.rw-multiselect-taglist {\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\tlist-style: none;\n\t\tdisplay: inline-block;\n\t\tvertical-align: 0;\n\t\toutline: none;\n\t}\n\t.rw-multiselect-tag {\n\t\tdisplay: inline-table;\n\t\tcolor: inherit;\n\t\tpadding: 0 0.35em 0 0.35em;\n\t\tmargin-left: calc(0.279335em - 1px);\n\t\tmargin-top: 0.279335em;\n\t\tmargin-top: calc(0.279335em - 1px);\n\t\theight: 1.87033em;\n\t\tborder-radius: 3px;\n\t\tbackground-color: #eee;\n\t\tborder: 1px solid #ccc;\n\t\tcursor: default;\n\t\tvertical-align: top;\n\t\ttext-align: center;\n\t\toverflow: hidden;\n\t\tmax-width: 100%;\n\t}\n\t.rw-multiselect-tag > * {\n\t\tdisplay: table-cell;\n\t\tvertical-align: middle;\n\t\theight: 100%;\n\t}\n\t.rw-rtl .rw-multiselect-tag {\n\t\tmargin-left: 0;\n\t\tmargin-right: calc(0.279335em - 1px);\n\t\tpadding: 0 0.35em 0 0.35em;\n\t}\n\t.rw-multiselect-tag.rw-state-focus,\n\t.rw-multiselect-tag.rw-state-focus:hover {\n\t\tbackground-color: transparent;\n\t\tborder-color: #66afe9;\n\t\tcolor: #333;\n\t}\n\t.rw-multiselect-tag.rw-state-readonly,\n\t.rw-multiselect-tag.rw-state-disabled,\n\t.rw-state-readonly .rw-multiselect-tag,\n\t.rw-state-disabled .rw-multiselect-tag,\n\tfieldset[disabled] .rw-multiselect-tag {\n\t\tcursor: not-allowed;\n\t}\n\t.rw-multiselect-tag.rw-state-disabled,\n\t.rw-state-disabled .rw-multiselect-tag,\n\tfieldset[disabled] .rw-multiselect-tag {\n\t\topacity: 0.65;\n\t}\n\tfieldset[disabled] .rw-multiselect-tag {\n\t\tbox-shadow: none;\n\t\tcursor: not-allowed;\n\t}\n\t.rw-multiselect-tag-btn {\n\t\tcolor: inherit;\n\t\tmargin-left: 0.25em;\n\t}\n\t.rw-rtl .rw-multiselect-tag-btn {\n\t\tmargin-left: 0;\n\t\tmargin-right: 0.25em;\n\t}\n\t.rw-autocomplete .rw-select {\n\t\tposition: absolute;\n\t\tdisplay: block;\n\t\twidth: auto;\n\t\ttop: 0;\n\t\tbottom: 0;\n\t\tright: 0;\n\t}\n\t.rw-popup-container {\n\t\tposition: absolute;\n\t\tz-index: 1005;\n\t\ttop: 100%;\n\t\tleft: -6px;\n\t\tright: -6px;\n\t}\n\t.rw-popup-container.rw-dropup {\n\t\ttop: auto;\n\t\tbottom: 100%;\n\t}\n\t.rw-state-focus .rw-popup-container {\n\t\tz-index: 1006;\n\t}\n\t.rw-popup-transition {\n\t\twidth: 100%;\n\t\tmargin-bottom: 6px;\n\t\tpadding: 0 6px;\n\t}\n\t.rw-dropup > .rw-popup-transition {\n\t\tmargin-bottom: 0;\n\t\tmargin-top: 6px;\n\t}\n\t.rw-popup {\n\t\tborder-top-right-radius: 0;\n\t\tborder-top-left-radius: 0;\n\t\tborder-bottom-right-radius: 3px;\n\t\tborder-bottom-left-radius: 3px;\n\t\tbox-shadow: 0 5px 6px rgba(0, 0, 0, 0.2);\n\t\tborder: #ccc 1px solid;\n\t\tbackground: #fff;\n\t}\n\t.rw-dropup .rw-popup {\n\t\tborder-bottom-right-radius: 0;\n\t\tborder-bottom-left-radius: 0;\n\t\tborder-top-right-radius: 3px;\n\t\tborder-top-left-radius: 3px;\n\t\tbox-shadow: 0 -2px 6px rgba(0, 0, 0, 0.2);\n\t}\n\t.rw-popup-transition {\n\t\ttransition: transform 200ms;\n\t}\n\t.rw-popup-transition-entering {\n\t\toverflow: hidden;\n\t}\n\t.rw-popup-transition-entering .rw-popup-transition {\n\t\t-ms-transform: translateY(0);\n\t\ttransform: translateY(0);\n\t\ttransition-timing-function: ease-out;\n\t}\n\t.rw-popup-transition-exiting .rw-popup-transition {\n\t\ttransition-timing-function: ease-in;\n\t}\n\t.rw-popup-transition-exiting,\n\t.rw-popup-transition-exited {\n\t\toverflow: hidden;\n\t}\n\t.rw-popup-transition-exiting .rw-popup-transition,\n\t.rw-popup-transition-exited .rw-popup-transition {\n\t\t-ms-transform: translateY(-100%);\n\t\ttransform: translateY(-100%);\n\t}\n\t.rw-popup-transition-exiting.rw-dropup .rw-popup-transition,\n\t.rw-popup-transition-exited.rw-dropup .rw-popup-transition {\n\t\t-ms-transform: translateY(100%);\n\t\ttransform: translateY(100%);\n\t}\n\t.rw-popup-transition-exited {\n\t\tdisplay: none;\n\t}\n\t.rw-state-disabled {\n\t\tbox-shadow: none;\n\t\tcursor: not-allowed;\n\t}\n\n\tcolor: ${({ theme }) => theme.palette.text.regular};\n\tfont-family: ${({ theme }) => theme.fonts.default};\n\tfont-size: ${({ theme }) => theme.sizes.font.medium};\n\tfont-weight: ${({ theme }) => theme.fonts.weight.regular};\n`;\n\nexport default Styler;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport moment from 'moment';\nimport { TFunction } from 'i18next';\nimport { AccountSettings } from '../../../types';\n\n// const [t] = useTranslation();\n\nexport const ItemsSendAutoReplies = (t: TFunction): any => [\n\t{\n\t\tlabel: t('settings.out_of_office.send_auto_replies', 'Send auto-replies'),\n\t\tvalue: 'TRUE'\n\t},\n\t{\n\t\tlabel: t('settings.out_of_office.do_not_send_auto_replies', 'Do not send auto-replies'),\n\t\tvalue: 'FALSE'\n\t}\n];\n\nexport const ItemsExternalSenders = (t: TFunction): any => [\n\t{\n\t\tlabel: t(\n\t\t\t'settings.out_of_office.external_senders.send_standard_auto_reply',\n\t\t\t'Send standard auto-reply message'\n\t\t),\n\t\tvalue: 'SEND_AUTO_REPLY'\n\t},\n\t{\n\t\tlabel: t(\n\t\t\t'settings.out_of_office.external_senders.send_custom_in_organisation',\n\t\t\t'Send custom message to those who are not in my organization'\n\t\t),\n\t\tvalue: 'SHOW_EXTERNAL_INPUT'\n\t},\n\t{\n\t\tlabel: t(\n\t\t\t'settings.out_of_office.external_senders.send_custom_not_in_organisation',\n\t\t\t'Send custom message to those who are not in my organization or address book'\n\t\t),\n\t\tvalue: 'SEND_NOT_IN_ORG'\n\t},\n\t{\n\t\tlabel: t(\n\t\t\t'settings.out_of_office.external_senders.do_not_send_to_external',\n\t\t\t'Don’t send an auto-reply message to external sender'\n\t\t),\n\t\tvalue: 'SUPPRESS_EXTERNAL'\n\t}\n];\n\nexport const ItemsOutOfOfficeStatus = (t: TFunction): any => [\n\t{\n\t\tlabel: t('label.out_of_office', 'Out of Office'),\n\t\tvalue: 'OUTOFOFFICE'\n\t},\n\t{\n\t\tlabel: t('settings.out_of_office.status.busy', 'Busy'),\n\t\tvalue: 'BUSY'\n\t}\n];\n\nexport const getExternalSendersPrefsData = (\n\tsettings: AccountSettings,\n\tret: string,\n\tt: TFunction\n): string => {\n\tlet item;\n\tconst itemsExternalSenders = ItemsExternalSenders(t);\n\tif (\n\t\tsettings.prefs.zimbraPrefOutOfOfficeSuppressExternalReply === 'FALSE' &&\n\t\tsettings.prefs.zimbraPrefOutOfOfficeExternalReplyEnabled === 'FALSE'\n\t) {\n\t\titem = { ...itemsExternalSenders[0] };\n\t} else if (\n\t\tsettings.prefs.zimbraPrefExternalSendersType === 'ALL' &&\n\t\tsettings.prefs.zimbraPrefOutOfOfficeExternalReplyEnabled === 'TRUE'\n\t) {\n\t\titem = { ...itemsExternalSenders[1] };\n\t} else if (\n\t\tsettings.prefs.zimbraPrefExternalSendersType === 'ALLNOTINAB' &&\n\t\tsettings.prefs.zimbraPrefOutOfOfficeExternalReplyEnabled === 'TRUE'\n\t) {\n\t\titem = { ...itemsExternalSenders[2] };\n\t} else {\n\t\titem = { ...itemsExternalSenders[3] };\n\t}\n\treturn String(item[ret]);\n};\n\nexport const getOutOfOfficeStatusPrefsData = (\n\tsettings: AccountSettings,\n\tret: string,\n\tt: TFunction\n): string => {\n\tlet item;\n\tconst itemsOutOfOfficeStatus = ItemsOutOfOfficeStatus(t);\n\tif (settings.prefs.zimbraPrefOutOfOfficeFreeBusyStatus === 'BUSY') {\n\t\titem = { ...itemsOutOfOfficeStatus[1] };\n\t} else {\n\t\titem = { ...itemsOutOfOfficeStatus[0] };\n\t}\n\n\treturn String(item[ret]);\n};\n\nexport const changeDateEvent = (date: string | Date): string =>\n\tmoment(moment(date, 'YYYYMMDDHHmmss[Z]').utc()).format('YYYYMMDDHHmmss[Z]');\n\nexport const getDateEvent = (date: string): Date =>\n\tnew Date(moment.utc(date, 'YYYYMMDDHHmmss[Z]').local().valueOf());\n\nexport const startOfDate = (date: string): string =>\n\tmoment.utc(date, 'YYYYMMDDHHmmss[Z]').local().startOf('day').utc().format('YYYYMMDDHHmmss[Z]');\n\nexport const endOfDate = (date: string): string =>\n\tmoment.utc(date, 'YYYYMMDDHHmmss[Z]').local().endOf('day').utc().format('YYYYMMDDHHmmss[Z]');\n\nexport const localeList = (\n\tt: TFunction\n): Array<{ id: string; name: string; localName: string; value: string; label: string }> => [\n\t{\n\t\tid: 'zh_CN',\n\t\tname: '中文 (中国)',\n\t\tlocalName: t('locale.chinese_china', 'Chinese (China)'),\n\t\tlabel: t('locale.label_chinese', {\n\t\t\tvalue: '中文 (中国)',\n\t\t\tdefaultValue: 'Chinese (China) - {{value}}'\n\t\t}),\n\t\tvalue: 'zh_CN'\n\t},\n\t{\n\t\tid: 'nl',\n\t\tname: 'Nederlands',\n\t\tlocalName: t('locale.dutch', 'Dutch'),\n\t\tlabel: t('locale.label_dutch', { value: 'Nederlands', defaultValue: 'Dutch - {{value}}' }),\n\t\tvalue: 'nl'\n\t},\n\t{\n\t\tid: 'en',\n\t\tname: 'English',\n\t\tlocalName: t('locale.English', 'English'),\n\t\tlabel: t('locale.label_english', { value: 'English', defaultValue: 'English - {{value}}' }),\n\t\tvalue: 'en'\n\t},\n\t{\n\t\tid: 'de',\n\t\tname: 'Deutsch',\n\t\tlocalName: t('locale.german', 'German'),\n\t\tlabel: t('locale.label_german', { value: 'Deutsch', defaultValue: 'German - {{value}}' }),\n\t\tvalue: 'de'\n\t},\n\t{\n\t\tid: 'hi',\n\t\tname: 'हिंदी',\n\t\tlocalName: t('locale.hindi', 'Hindi'),\n\t\tlabel: t('locale.label_hindi', { value: 'हिंदी', defaultValue: 'Hindi - {{value}}' }),\n\t\tvalue: 'hi'\n\t},\n\t{\n\t\tid: 'it',\n\t\tname: 'italiano',\n\t\tlocalName: t('locale.italian', 'Italian'),\n\t\tlabel: t('locale.label_italian', { value: 'italiano', defaultValue: 'Italian - {{value}}' }),\n\t\tvalue: 'it'\n\t},\n\t{\n\t\tid: 'ja',\n\t\tname: '日本語',\n\t\tlocalName: t('locale.japanese', 'Japanese'),\n\t\tlabel: t('locale.label_japanese', { value: '日本語', defaultValue: 'Japanese - {{value}}' }),\n\t\tvalue: 'ja'\n\t},\n\n\t{\n\t\tid: 'pt',\n\t\tname: 'português',\n\t\tlocalName: t('locale.portuguese', 'Portuguese'),\n\t\tlabel: t('locale.label_portuguese', {\n\t\t\tvalue: 'português',\n\t\t\tdefaultValue: 'Portuguese - {{value}}'\n\t\t}),\n\t\tvalue: 'pt'\n\t},\n\t{\n\t\tid: 'pt_BR',\n\t\tname: 'português (Brasil)',\n\t\tlocalName: t('locale.portuguese_brazil', 'Portuguese (Brazil)'),\n\t\tlabel: t('locale.label_portuguese_brazil', {\n\t\t\tvalue: 'português (Brasil)',\n\t\t\tdefaultValue: 'Portuguese - {{value}}'\n\t\t}),\n\t\tvalue: 'pt_BR'\n\t},\n\n\t{\n\t\tid: 'ro',\n\t\tname: 'română',\n\t\tlocalName: t('locale.romanian', 'Romanian'),\n\t\tlabel: t('locale.label_romanian', { value: 'română', defaultValue: 'Romanian - {{value}}' }),\n\t\tvalue: 'ro'\n\t},\n\t{\n\t\tid: 'ru',\n\t\tname: 'русский',\n\t\tlocalName: t('locale.russian', 'Russian'),\n\t\tlabel: t('locale.label_russian', { value: 'русский', defaultValue: 'Russian - {{value}}' }),\n\t\tvalue: 'ru'\n\t},\n\n\t{\n\t\tid: 'es',\n\t\tname: 'español',\n\t\tlocalName: t('locale.spanish', 'Spanish'),\n\t\tlabel: t('locale.label_spanish', { value: 'español', defaultValue: 'Spanish - {{value}}' }),\n\t\tvalue: 'es'\n\t},\n\n\t{\n\t\tid: 'th',\n\t\tname: 'ไทย',\n\t\tlocalName: t('locale.thai', 'Thai'),\n\t\tlabel: t('locale.label_thai', { value: 'ไทย', defaultValue: 'Thai - {{value}}' }),\n\t\tvalue: 'th'\n\t},\n\t{\n\t\tid: 'tr',\n\t\tname: 'Türkçe',\n\t\tlocalName: t('locale.turkish', 'Turkish'),\n\t\tlabel: t('locale.label_turkish', { value: 'Türkçe', defaultValue: 'Turkish - {{value}}' }),\n\t\tvalue: 'tr'\n\t},\n\t{\n\t\tid: 'fr',\n\t\tname: 'français',\n\t\tlocalName: t('locale.french', 'French'),\n\t\tlabel: t('locale.label_french', { value: 'français', defaultValue: 'French - {{value}}' }),\n\t\tvalue: 'fr'\n\t}\n];\n// TODO: For future languages\n// export const localeList = (t: TFunction): any => [\n// \t{\n// \t\tid: 'ar',\n// \t\tname: 'العربية',\n// \t\tlocalName: t('locale.arabic', 'Arabic'),\n// \t\tlabel: t('locale.label_arabic', { value: 'لعربية', defaultValue: 'Arabic - {{value}}' }),\n// \t\tvalue: 'ar'\n// \t},\n// \t{\n// \t\tid: 'eu',\n// \t\tname: 'Euskara',\n// \t\tlocalName: t('locale.basque', 'Basque'),\n// \t\tlabel: t('locale.label_basque', { value: 'Euskara', defaultValue: 'Basque - {{value}}' }),\n// \t\tvalue: 'eu'\n// \t},\n// \t{\n// \t\tid: 'bg',\n// \t\tname: 'български',\n// \t\tlocalName: t('locale.bulgarian', 'Bulgarian'),\n// \t\tlabel: t('locale.label_bulgarian', {\n// \t\t\tvalue: 'български',\n// \t\t\tdefaultValue: 'Bulgarian - {{value}}'\n// \t\t}),\n// \t\tvalue: 'bg'\n// \t},\n// \t{\n// \t\tid: 'ca',\n// \t\tname: 'català',\n// \t\tlocalName: t('locale.catalan', 'Catalan'),\n// \t\tlabel: 'Catalan - català',\n// \t\tvalue: 'ca'\n// \t},\n// \t{\n// \t\tid: 'zh',\n// \t\tname: '中文',\n// \t\tlocalName: t('locale.chinese', 'Chinese'),\n// \t\tlabel: 'Chinese - 中文',\n// \t\tvalue: 'zh'\n// \t},\n// \t{\n// \t\tid: 'zh_CN',\n// \t\tname: '中文 (中国)',\n// \t\tlocalName: t('locale.chinese_china', 'Chinese (China)'),\n// \t\tlabel: 'Chinese (China) - 中文 (中国)',\n// \t\tvalue: 'zh_CN'\n// \t},\n// \t{\n// \t\tid: 'zh_HK',\n// \t\tname: '中文 (香港)',\n// \t\tlocalName: t('locale.chinese_hong_kong', 'Chinese (Hong Kong SAR China)'),\n// \t\tlabel: 'Chinese (Hong Kong SAR China) - 中文 (香港)',\n// \t\tvalue: 'zh_HK'\n// \t},\n// \t{\n// \t\tid: 'zh_TW',\n// \t\tname: '中文 (台灣)',\n// \t\tlocalName: t('locale.chinese_taiwan', 'Chinese (Taiwan)'),\n// \t\tlabel: 'Chinese (Taiwan) - 中文 (台灣)',\n// \t\tvalue: 'zh_TW'\n// \t},\n// \t{\n// \t\tid: 'hr',\n// \t\tname: 'hrvatski',\n// \t\tlocalName: t('locale.croatian', 'Croatian'),\n// \t\tlabel: 'Croatian - hrvatski',\n// \t\tvalue: 'hr'\n// \t},\n// \t{\n// \t\tid: 'da',\n// \t\tname: 'Dansk',\n// \t\tlocalName: t('locale.danish', 'Danish'),\n// \t\tlabel: 'Danish - Dansk',\n// \t\tvalue: 'da'\n// \t},\n\n// \t{\n// \t\tid: 'en_AU',\n// \t\tname: 'English (Australia)',\n// \t\tlocalName: t('locale.english_australia', 'English (Australia)'),\n// \t\tlabel: 'English (Australia) - English (Australia)',\n// \t\tvalue: 'en_AU'\n// \t},\n// \t{\n// \t\tid: 'en_GB',\n// \t\tname: 'English (United Kingdom)',\n// \t\tlocalName: t('locale.english_united_kingdom', 'English (United Kingdom)'),\n// \t\tlabel: 'English (United Kingdom) - English (United Kingdom)',\n// \t\tvalue: 'en_GB'\n// \t},\n// \t{\n// \t\tid: 'en_US',\n// \t\tname: 'English (United States)',\n// \t\tlocalName: t('locale.english_united_states', 'English (United States)'),\n// \t\tlabel: 'English (United States) - English (United States)',\n// \t\tvalue: 'en_US'\n// \t},\n// \t{\n// \t\tid: 'fr',\n// \t\tname: 'français',\n// \t\tlocalName: t('locale.french', 'French'),\n// \t\tlabel: 'French - français',\n// \t\tvalue: 'fr'\n// \t},\n// \t{\n// \t\tid: 'fr_CA',\n// \t\tname: 'français (Canada)',\n// \t\tlocalName: t('locale.french_canada', 'French (Canada)'),\n// \t\tlabel: 'French (Canada) - français (Canada)',\n// \t\tvalue: 'fr_CA'\n// \t},\n// \t{\n// \t\tid: 'fr_FR',\n// \t\tname: 'français (France)',\n// \t\tlocalName: t('locale.french_france', 'French (France)'),\n// \t\tlabel: 'French (France) - français (France)',\n// \t\tvalue: 'fr_FR'\n// \t},\n\n// \t{\n// \t\tid: 'iw',\n// \t\tname: 'עברית',\n// \t\tlocalName: t('locale.hebrew', 'Hebrew'),\n// \t\tlabel: 'Hebrew - עברית',\n// \t\tvalue: 'iw'\n// \t},\n\n// \t{\n// \t\tid: 'hu',\n// \t\tname: 'magyar',\n// \t\tlocalName: t('locale.hungarian', 'Hungarian'),\n// \t\tlabel: 'Hungarian - magyar',\n// \t\tvalue: 'hu'\n// \t},\n// \t{\n// \t\tid: 'in',\n// \t\tname: 'Bahasa Indonesia',\n// \t\tlocalName: t('locale.indonesian', 'Indonesian'),\n// \t\tlabel: 'Indonesian - Bahasa Indonesia',\n// \t\tvalue: 'in'\n// \t},\n\n// \t{\n// \t\tid: 'ko',\n// \t\tname: '한국어',\n// \t\tlocalName: t('locale.korean', 'Korean'),\n// \t\tlabel: 'Korean - 한국어',\n// \t\tvalue: 'ko'\n// \t},\n// \t{\n// \t\tid: 'lo',\n// eslint-disable-next-line no-irregular-whitespace\n// \t\tname: 'ພາສາລາວ',\n// \t\tlocalName: t('locale.lao', 'Lao'),\n// eslint-disable-next-line no-irregular-whitespace\n// \t\tlabel: 'Lao - ພາສາລາວ',\n// \t\tvalue: 'lo'\n// \t},\n// \t{\n// \t\tid: 'ms',\n// \t\tname: 'Bahasa Melayu',\n// \t\tlocalName: t('locale.malay', 'Malay'),\n// \t\tlabel: 'Malay - Bahasa Melayu',\n// \t\tvalue: 'ms'\n// \t},\n// \t{\n// \t\tid: 'no',\n// \t\tname: 'norsk',\n// \t\tlocalName: t('locale.norwegian', 'Norwegian'),\n// \t\tlabel: 'Norwegian - norsk',\n// \t\tvalue: 'no'\n// \t},\n// \t{\n// \t\tid: 'pl',\n// \t\tname: 'polski',\n// \t\tlocalName: t('locale.polish', 'Polish'),\n// \t\tlabel: 'Polish - polski',\n// \t\tvalue: 'pl'\n// \t},\n\n// \t{\n// \t\tid: 'pt_PT',\n// \t\tname: 'português (Portugal)',\n// \t\tlocalName: t('locale.potuguese_portugal', 'Portuguese (Portugal)'),\n// \t\tlabel: 'Portuguese (Portugal) - português (Portugal)',\n// \t\tvalue: 'pt_PT'\n// \t},\n\n// \t{\n// \t\tid: 'sl',\n// \t\tname: 'Slovenščina',\n// \t\tlocalName: t('locale.slovenian', 'Slovenian'),\n// \t\tlabel: 'Slovenian - Slovenščina',\n// \t\tvalue: 'sl'\n// \t},\n\n// \t{\n// \t\tid: 'sv',\n// \t\tname: 'svenska',\n// \t\tlocalName: t('locale.swedish', 'Swedish'),\n// \t\tlabel: 'Swedish - svenska',\n// \t\tvalue: 'sv'\n// \t},\n// \t{\n// \t\tid: 'ta',\n// \t\tname: 'தமிழ்',\n// \t\tlocalName: t('locale.tamil', 'Tamil'),\n// \t\tlabel: 'Tamil - தமிழ்',\n// \t\tvalue: 'ta'\n// \t},\n\n// \t{\n// \t\tid: 'uk',\n// \t\tname: 'українська',\n// \t\tlocalName: t('locale.ukrainian', 'Ukrainian'),\n// \t\tlabel: 'Ukrainian - українська',\n// \t\tvalue: 'uk'\n// \t},\n// \t{\n// \t\tid: 'vi',\n// \t\tname: 'Tiếng Việt',\n// \t\tlocalName: t('locale.vietnamese', 'Vietnamese'),\n// \t\tlabel: 'Vietnamese - Tiếng Việt',\n// \t\tvalue: 'vi'\n// \t}\n// ];\n\nexport const timeZoneList = (\n\tt: TFunction\n): Array<{ value?: string; label: string; offSet?: string }> => [\n\t{\n\t\tvalue: 'Etc/GMT+12',\n\t\tlabel: t('timezone.dateline', { value: 'GMT -12:00 ', defaultValue: '{{value}} Dateline' })\n\t},\n\t{\n\t\tvalue: 'Pacific/Midway',\n\t\tlabel: t('timezone.samoa', { value: 'GMT -11:00', defaultValue: '{{value}} Samoa' })\n\t},\n\t{\n\t\tvalue: 'Etc/GMT+11',\n\t\tlabel: t('timezone.gmt_11', { value: 'GMT -11:00', defaultValue: '{{value}} GMT-11' })\n\t},\n\t{\n\t\tvalue: 'Pacific/Honolulu',\n\t\tlabel: t('timezone.hawaii', { value: 'GMT -10:00', defaultValue: '{{value}} Hawaii' })\n\t},\n\t{\n\t\tvalue: 'America/Anchorage',\n\t\tlabel: t('timezone.alaska', { value: 'GMT -09:00', defaultValue: '{{value}} Alaska' })\n\t},\n\t{\n\t\tvalue: 'America/Los_Angeles',\n\t\tlabel: t('timezone.us_canada_pacific', {\n\t\t\tvalue: 'GMT -08:00',\n\t\t\tdefaultValue: '{{value}} US/Canada Pacific'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'America/Tijuana',\n\t\tlabel: t('timezone.baja_california', {\n\t\t\tvalue: 'GMT -08:00',\n\t\t\tdefaultValue: '{{value}} Baja California'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'America/Denver',\n\t\tlabel: t('timezone.us_canada_mountain', {\n\t\t\tvalue: 'GMT -07:00',\n\t\t\tdefaultValue: '{{value}} US/Canada Mountain'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'America/Chihuahua',\n\t\tlabel: t('timezone.chihuahua_la_paz_mazatlan', {\n\t\t\tvalue: 'GMT -07:00',\n\t\t\tdefaultValue: '{{value}} Chihuahua, La Paz, Mazatlan'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'America/Phoenix',\n\t\tlabel: t('timezone.arizona', { value: 'GMT -07:00', defaultValue: '{{value}} Arizona' })\n\t},\n\t{\n\t\tvalue: 'America/Chicago',\n\t\tlabel: t('timezone.us_canada_central', {\n\t\t\tvalue: 'GMT -06:00',\n\t\t\tdefaultValue: '{{value}} US/Canada Central'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'America/Regina',\n\t\tlabel: t('timezone.saskatchewan', {\n\t\t\tvalue: 'GMT -06:00',\n\t\t\tdefaultValue: '{{value}} Saskatchewan'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'America/Mexico_City',\n\t\tlabel: t('timezone.guadalajara_mexico_city_monterrey ', {\n\t\t\tvalue: 'GMT -06:00 ',\n\t\t\tdefaultValue: '{{value}} Guadalajara, Mexico City, Monterrey '\n\t\t})\n\t},\n\t{\n\t\tvalue: 'America/Guatemala',\n\t\tlabel: t('timezone.central_america', {\n\t\t\tvalue: 'GMT -06:00',\n\t\t\tdefaultValue: '{{value}} Central America'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'America/New_York',\n\t\tlabel: t('timezone.us_canada_eastern', {\n\t\t\tvalue: 'GMT -05:00',\n\t\t\tdefaultValue: '{{value}} US/Canada Eastern'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'America/Indiana/Indianapolis',\n\t\tlabel: t('timezone.indiana_east', {\n\t\t\tvalue: 'GMT -05:00',\n\t\t\tdefaultValue: '{{value}} Indiana (East)'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'America/Bogota',\n\t\tlabel: t('timezone.colombia', { value: 'GMT -05:00', defaultValue: '{{value}} Colombia' })\n\t},\n\t{\n\t\tvalue: 'America/Caracas',\n\t\tlabel: t('timezone.caracas', { value: 'GMT -04:30', defaultValue: '{{value}} Caracas' })\n\t},\n\t{\n\t\tvalue: 'America/Santiago',\n\t\tlabel: t('timezone.pacific_south_america', {\n\t\t\tvalue: 'GMT -04:00',\n\t\t\tdefaultValue: '{{value}} Pacific South America'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'America/Manaus',\n\t\tlabel: t('timezone.manaus', { value: 'GMT -04:00', defaultValue: '{{value}} Manaus' })\n\t},\n\t{\n\t\tvalue: 'America/La_Paz',\n\t\tlabel: t('timezone.la_paz', { value: 'GMT -04:00', defaultValue: '{{value}} La Paz' })\n\t},\n\t{\n\t\tvalue: 'America/Guyana',\n\t\tlabel: t('timezone.georgetown_la_paz_manaus_san_juan', {\n\t\t\tvalue: 'GMT -04:00',\n\t\t\tdefaultValue: '{{value}} Georgetown, La Paz, Manaus, San Juan'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'America/Cuiaba',\n\t\tlabel: t('timezone.cuiaba', { value: 'GMT -04:00', defaultValue: '{{value}} Cuiaba' })\n\t},\n\t{\n\t\tvalue: 'America/Halifax',\n\t\tlabel: t('timezone.atlantic_time_canada', {\n\t\t\tvalue: 'GMT -04:00',\n\t\t\tdefaultValue: '{{value}} Atlantic Time (Canada)'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'America/Asuncion',\n\t\tlabel: t('timezone.asuncion', { value: 'GMT -04:00 ', defaultValue: '{{value}} Asuncion' })\n\t},\n\t{\n\t\tvalue: 'America/St_Johns',\n\t\tlabel: t('timezone.newfoundland', {\n\t\t\tvalue: 'GMT -03:30',\n\t\t\tdefaultValue: '{{value}} Newfoundland'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'America/Montevideo',\n\t\tlabel: t('timezone.montevideo', { value: 'GMT -03:00', defaultValue: '{{value}} Montevideo' })\n\t},\n\t{\n\t\tvalue: 'America/Godthab',\n\t\tlabel: t('timezone.greenland', { value: 'GMT -03:00', defaultValue: '{{value}} Greenland' })\n\t},\n\t{\n\t\tvalue: 'America/Cayenne',\n\t\tlabel: t('timezone.cayenne_fortaleza', {\n\t\t\tvalue: 'GMT -03:00',\n\t\t\tdefaultValue: '{{value}} Cayenne, Fortaleza'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'America/Sao_Paulo',\n\t\tlabel: t('timezone.brasilia', { value: 'GMT -03:00', defaultValue: '{{value}} Brasilia' })\n\t},\n\t{\n\t\tvalue: 'America/Argentina/Buenos_Aires',\n\t\tlabel: t('timezone.argentina', { value: 'GMT -03:00', defaultValue: '{{value}} Argentina' })\n\t},\n\t{\n\t\tvalue: 'Atlantic/South_Georgia',\n\t\tlabel: t('timezone.mid_atlantic', {\n\t\t\tvalue: 'GMT -02:00',\n\t\t\tdefaultValue: '{{value}} Mid-Atlantic'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Etc/GMT+2',\n\t\tlabel: t('timezone.gmt_02', { value: 'GMT -02:00', defaultValue: '{{value}} GMT-02' })\n\t},\n\t{\n\t\tvalue: 'Atlantic/Cape_Verde',\n\t\tlabel: t('timezone.cape_verde_is', {\n\t\t\tvalue: 'GMT -01:00',\n\t\t\tdefaultValue: '{{value}} Cape Verde Is.'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Atlantic/Azores',\n\t\tlabel: t('timezone.azores', { value: 'GMT -01:00', defaultValue: '{{value}} Azores' })\n\t},\n\t{\n\t\tvalue: 'UTC',\n\t\tlabel: t('timezone.coordinated_universal_time', {\n\t\t\tvalue: 'GMT/UTC',\n\t\t\tdefaultValue: '{{value}} Coordinated Universal Time'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Europe/London',\n\t\tlabel: t('timezone.britain_ireland_portugal', {\n\t\t\tvalue: 'GMT +00:00',\n\t\t\tdefaultValue: '{{value}} Britain, Ireland, Portugal'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Africa/Casablanca',\n\t\tlabel: t('timezone.casablanca', { value: 'GMT +00:00', defaultValue: '{{value}} Casablanca' })\n\t},\n\t{\n\t\tvalue: 'Africa/Monrovia',\n\t\tlabel: t('timezone.monrovia', { value: 'GMT +00:00', defaultValue: '{{value}} Monrovia' })\n\t},\n\t{\n\t\tvalue: 'Europe/Berlin',\n\t\tlabel: t('timezone.amsterdam_berlin_bern_rome_stockholm_vienna', {\n\t\t\tvalue: 'GMT +01:00',\n\t\t\tdefaultValue: '{{value}} Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Europe/Belgrade',\n\t\tlabel: t('timezone.belgrade_bratislava_budapest_ljubljana_prague', {\n\t\t\tvalue: 'GMT +01:00',\n\t\t\tdefaultValue: '{{value}} Belgrade, Bratislava, Budapest, Ljubljana, Prague'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Europe/Brussels',\n\t\tlabel: t('timezone.brussels_copenhagen_madrid_paris ', {\n\t\t\tvalue: 'GMT +01:00 ',\n\t\t\tdefaultValue: '{{value}} Brussels, Copenhagen, Madrid, Paris '\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Africa/Windhoek',\n\t\tlabel: t('timezone.namibia', { value: 'GMT +01:00', defaultValue: '{{value}} Namibia' })\n\t},\n\t{\n\t\tvalue: 'Europe/Warsaw',\n\t\tlabel: t('timezone.sarajevo_skopje_warsaw_zagreb', {\n\t\t\tvalue: 'GMT +01:00',\n\t\t\tdefaultValue: '{{value}} Sarajevo, Skopje, Warsaw, Zagreb'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Africa/Algiers',\n\t\tlabel: t('timezone.west_central_africa', {\n\t\t\tvalue: 'GMT +01:00',\n\t\t\tdefaultValue: '{{value}} West Central Africa'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Europe/Athens',\n\t\tlabel: t('timezone.athens_beirut_bucharest_istanbul', {\n\t\t\tvalue: 'GMT +02:00',\n\t\t\tdefaultValue: '{{value}} Athens, Beirut, Bucharest, Istanbul'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Asia/Beirut',\n\t\tlabel: t('timezone.beirut', { value: 'GMT +02:00', defaultValue: '{{value}} Beirut' })\n\t},\n\t{\n\t\tvalue: 'Asia/Damascus',\n\t\tlabel: t('timezone.damascus', { value: 'GMT +02:00', defaultValue: '{{value}} Damascus' })\n\t},\n\t{\n\t\tvalue: 'Africa/Cairo',\n\t\tlabel: t('timezone.egypt', { value: 'GMT +02:00', defaultValue: '{{value}} Egypt' })\n\t},\n\t{\n\t\tvalue: 'Africa/Harare',\n\t\tlabel: t('timezone.harare_pretoria', {\n\t\t\tvalue: 'GMT +02:00',\n\t\t\tdefaultValue: '{{value}} Harare, Pretoria'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Europe/Helsinki',\n\t\tlabel: t('timezone.helsinki_kyiv_riga_sofia_tallinn_vilnius', {\n\t\t\tvalue: 'GMT +02:00',\n\t\t\tdefaultValue: '{{value}} Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Europe/Istanbul',\n\t\tlabel: t('timezone.istanbul', { value: 'GMT +02:00', defaultValue: '{{value}} Istanbul' })\n\t},\n\t{\n\t\tvalue: 'Asia/Jerusalem',\n\t\tlabel: t('timezone.jerusalem', { value: 'GMT +02:00', defaultValue: '{{value}} Jerusalem' })\n\t},\n\t{\n\t\tvalue: 'Asia/Amman',\n\t\tlabel: t('timezone.jordan', { value: 'GMT +02:00', defaultValue: '{{value}} Jordan' })\n\t},\n\t{\n\t\tvalue: 'Europe/Kaliningrad',\n\t\tlabel: t('timezone.kaliningrad_rtz_1', {\n\t\t\tvalue: 'GMT +02:00',\n\t\t\tdefaultValue: '{{value}} Kaliningrad (RTZ 1)'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Asia/Baghdad',\n\t\tlabel: t('timezone.iraq', { value: 'GMT +03:00', defaultValue: '{{value}} Iraq' })\n\t},\n\t{\n\t\tvalue: 'Asia/Kuwait',\n\t\tlabel: t('timezone.kuwait_riyadh', {\n\t\t\tvalue: 'GMT +03:00',\n\t\t\tdefaultValue: '{{value}} Kuwait, Riyadh'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Europe/Minsk',\n\t\tlabel: t('timezone.minsk', { value: 'GMT +03:00', defaultValue: '{{value}} Minsk' })\n\t},\n\t{\n\t\tvalue: 'Europe/Moscow',\n\t\tlabel: t('timezone.moscow_st_petersburg_volgograd_rtz_2', {\n\t\t\tvalue: 'GMT +03:00',\n\t\t\tdefaultValue: '{{value}} Moscow, St. Petersburg, Volgograd (RTZ 2)'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Africa/Nairobi',\n\t\tlabel: t('timezone.nairobi', { value: 'GMT +03:00', defaultValue: '{{value}} Nairobi' })\n\t},\n\t{\n\t\tvalue: 'Asia/Tehran',\n\t\tlabel: t('timezone.tehran', { value: 'GMT +03:30', defaultValue: '{{value}} Tehran' })\n\t},\n\t{\n\t\tvalue: 'Asia/Muscat',\n\t\tlabel: t('timezone.abu_dhabi_muscat', {\n\t\t\tvalue: 'GMT +04:00',\n\t\t\tdefaultValue: '{{value}} Abu Dhabi, Muscat'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Asia/Baku',\n\t\tlabel: t('timezone.baku', { value: 'GMT +04:00', defaultValue: '{{value}} Baku' })\n\t},\n\t{\n\t\tvalue: 'Indian/Mauritius',\n\t\tlabel: t('timezone.port_louis', { value: 'GMT +04:00', defaultValue: '{{value}} Port Louis' })\n\t},\n\t{\n\t\tvalue: 'Asia/Tbilisi',\n\t\tlabel: t('timezone.tbilisi', { value: 'GMT +04:00', defaultValue: '{{value}} Tbilisi' })\n\t},\n\t{\n\t\tvalue: 'Asia/Yerevan',\n\t\tlabel: t('timezone.yerevan', { value: 'GMT +04:00', defaultValue: '{{value}} Yerevan' })\n\t},\n\t{\n\t\tvalue: 'Asia/Kabul',\n\t\tlabel: t('timezone.kabul', { value: 'GMT +04:30', defaultValue: '{{value}} Kabul' })\n\t},\n\t{\n\t\tvalue: 'Asia/Yekaterinburg',\n\t\tlabel: t('timezone.ekaterinburg_rtz_4', {\n\t\t\tvalue: 'GMT +05:00',\n\t\t\tdefaultValue: '{{value}} Ekaterinburg (RTZ 4)'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Asia/Colombo',\n\t\tlabel: t('timezone.sri_jayawardenepura_kotte', {\n\t\t\tvalue: 'GMT +05:30',\n\t\t\tdefaultValue: '{{value}} Sri Jayawardenepura Kotte'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Asia/Kolkata',\n\t\tlabel: t('timezone.chennai_kolkata_mumbai_new_delhi', {\n\t\t\tvalue: 'GMT +05:30',\n\t\t\tdefaultValue: '{{value}} Chennai, Kolkata, Mumbai, New Delhi'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Asia/Kathmandu',\n\t\tlabel: t('timezone.kathmandu', { value: 'GMT +05:45', defaultValue: '{{value}} Kathmandu' })\n\t},\n\t{\n\t\tvalue: 'Asia/Dhaka',\n\t\tlabel: t('timezone.dhaka', { value: 'GMT +06:00', defaultValue: '{{value}} Dhaka' })\n\t},\n\t{\n\t\tvalue: 'Asia/Yangon',\n\t\tlabel: t('timezone.yangon', { value: 'GMT +06:30 ', defaultValue: '{{value}} Yangon' })\n\t},\n\t{\n\t\tvalue: 'Asia/Bangkok',\n\t\tlabel: t('timezone.bangkok_hanoi_jakarta', {\n\t\t\tvalue: 'GMT +07:00',\n\t\t\tdefaultValue: '{{value}} Bangkok, Hanoi, Jakarta'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Asia/Krasnoyarsk',\n\t\tlabel: t('timezone.krasnoyarsk_rtz_6', {\n\t\t\tvalue: 'GMT +07:00',\n\t\t\tdefaultValue: '{{value}} Krasnoyarsk (RTZ 6)'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Asia/Hong_Kong',\n\t\tlabel: t('timezone.beijing_chongqing_hong_kong_urumqi', {\n\t\t\tvalue: 'GMT +08:00',\n\t\t\tdefaultValue: '{{value}} Beijing, Chongqing, Hong Kong, Urumqi'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Asia/Irkutsk',\n\t\tlabel: t('timezone.irkutsk_rtz_7', {\n\t\t\tvalue: 'GMT +08:00',\n\t\t\tdefaultValue: '{{value}} Irkutsk (RTZ 7)'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Australia/Eucla',\n\t\tlabel: t('timezone.eucla', { value: 'GMT +08:45', defaultValue: '{{value}} Eucla' })\n\t},\n\t{\n\t\tvalue: 'Asia/Chita',\n\t\tlabel: t('timezone.chita', { value: 'GMT +09:00', defaultValue: '{{value}} Chita' })\n\t},\n\t{\n\t\tvalue: 'Asia/Pyongyang',\n\t\tlabel: t('timezone.pyongyang', { value: 'GMT +08:30 ', defaultValue: '{{value}} Pyongyang' })\n\t},\n\t{\n\t\tvalue: 'Asia/Seoul',\n\t\tlabel: t('timezone.korea', { value: 'GMT +09:00 ', defaultValue: '{{value}} Korea' })\n\t},\n\t{\n\t\tvalue: 'Australia/Darwin',\n\t\tlabel: t('timezone.darwin', { value: 'GMT +09:30', defaultValue: '{{value}} Darwin' })\n\t},\n\t{\n\t\tvalue: 'Asia/Vladivostok',\n\t\tlabel: t('timezone.vladivostok_magadan', {\n\t\t\tvalue: 'GMT +10:00',\n\t\t\tdefaultValue: '{{value}} vladivostok_magadan_rtz_9'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Asia/Magadan',\n\t\tlabel: t('timezone.magadan', { value: 'GMT +11:00', defaultValue: '{{value}} Magadan' })\n\t},\n\t{\n\t\tvalue: 'Asia/Kamchatka',\n\t\tlabel: t('timezone.anadyr_petropavlovsk_kamchatsky_rtz11', {\n\t\t\tvalue: 'GMT +12:00',\n\t\t\tdefaultValue: '{{value}} Anadyr, Petropavlovsk-Kamchatsky (RTZ 11)'\n\t\t})\n\t},\n\t{\n\t\tvalue: 'Pacific/Tongatapu',\n\t\tlabel: t('timezone.nuku_alofa', { value: 'GMT +13:00', defaultValue: '{{value}} Nuku’alofa' })\n\t},\n\t{\n\t\tvalue: 'Pacific/Kiritimati',\n\t\tlabel: t('timezone.christmas_island', {\n\t\t\tvalue: 'GMT +14:00',\n\t\t\tdefaultValue: '{{value}} Christmas Island'\n\t\t})\n\t}\n];\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useState, useCallback, FC, useEffect, useMemo } from 'react';\nimport { Container, Checkbox, Text, Icon, Padding } from '@zextras/carbonio-design-system';\n\nimport moment from 'moment';\nimport DateTimePicker from 'react-widgets/lib/DateTimePicker';\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport momentLocalizer from 'react-widgets-moment';\nimport { useTranslation } from 'react-i18next';\nimport { AccountSettings } from '../../../types';\nimport Heading from './settings-heading';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport Styler from './date-picker-style';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { changeDateEvent, getDateEvent, startOfDate, endOfDate } from './utils';\n\nmomentLocalizer();\n\nconst DateTimeSelect: FC<{\n\tsettings: AccountSettings;\n\taddMod: (type: 'prefs' | 'props', key: string, value: { value: any; app: string }) => void;\n\tsendAutoReply: boolean;\n}> = ({ settings, addMod, sendAutoReply }) => {\n\tconst { t } = useTranslation();\n\tconst [dateDisabled, setDateDisabled] = useState<boolean>(false);\n\tconst [sendAutoReplyTimePeriod, setSendAutoReplyTimePeriod] = useState<boolean>(\n\t\t!!(\n\t\t\tsettings.prefs.zimbraPrefOutOfOfficeFromDate && settings.prefs.zimbraPrefOutOfOfficeUntilDate\n\t\t)\n\t);\n\n\tconst [dateZimbraPrefOutOfOfficeFromDate, setZimbraPrefOutOfOfficeFromDate] = useState<string>(\n\t\tsettings.prefs.zimbraPrefOutOfOfficeFromDate as string\n\t);\n\n\tconst [dateZimbraPrefOutOfOfficeUntilDate, setZimbraPrefOutOfOfficeUntilDate] = useState<string>(\n\t\tsettings.prefs.zimbraPrefOutOfOfficeUntilDate as string\n\t);\n\tconst [allDay, setAllDay] = useState<boolean>(false);\n\tconst [allDayDisabled, setAllDayDisabled] = useState<boolean>(false);\n\tconst [timeDisabled, setTimeDisabled] = useState<boolean>(false);\n\tconst updatePrefs = useCallback(\n\t\t(v, p) => {\n\t\t\taddMod('prefs', p, v);\n\t\t},\n\t\t[addMod]\n\t);\n\n\tuseEffect(() => {\n\t\tif (sendAutoReply) {\n\t\t\tif (sendAutoReplyTimePeriod) {\n\t\t\t\tsetTimeDisabled(false);\n\t\t\t\tsetAllDayDisabled(false);\n\t\t\t\tsetDateDisabled(false);\n\t\t\t} else {\n\t\t\t\tsetAllDayDisabled(true);\n\t\t\t\tsetTimeDisabled(true);\n\t\t\t\tsetDateDisabled(true);\n\t\t\t}\n\t\t\tif (allDay) {\n\t\t\t\tsetZimbraPrefOutOfOfficeFromDate(startOfDate(dateZimbraPrefOutOfOfficeFromDate));\n\t\t\t\tupdatePrefs(\n\t\t\t\t\tstartOfDate(dateZimbraPrefOutOfOfficeFromDate),\n\t\t\t\t\t'zimbraPrefOutOfOfficeFromDate'\n\t\t\t\t);\n\t\t\t\tsetZimbraPrefOutOfOfficeUntilDate(endOfDate(dateZimbraPrefOutOfOfficeUntilDate));\n\t\t\t\tupdatePrefs(\n\t\t\t\t\tendOfDate(dateZimbraPrefOutOfOfficeUntilDate),\n\t\t\t\t\t'zimbraPrefOutOfOfficeUntilDate'\n\t\t\t\t);\n\n\t\t\t\tsetTimeDisabled(true);\n\t\t\t}\n\t\t} else {\n\t\t\tsetDateDisabled(true);\n\t\t\tsetTimeDisabled(true);\n\t\t\tsetAllDay(false);\n\t\t\tsetAllDayDisabled(true);\n\t\t}\n\t}, [\n\t\tsettings.prefs.zimbraPrefOutOfOfficeFromDate,\n\t\tupdatePrefs,\n\t\tdateZimbraPrefOutOfOfficeFromDate,\n\t\tdateZimbraPrefOutOfOfficeUntilDate,\n\t\tallDay,\n\t\tsendAutoReply,\n\t\tsendAutoReplyTimePeriod\n\t]);\n\tconst toggleSendAutoReplyTimePeriod = (): void => {\n\t\tsetSendAutoReplyTimePeriod(!sendAutoReplyTimePeriod);\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<Heading title={t('settings.out_of_office.headings.time_period', 'Time Period')} />\n\t\t\t<Checkbox\n\t\t\t\tlabel={t(\n\t\t\t\t\t'settings.out_of_office.labels.send_auto_reply_period',\n\t\t\t\t\t'Send auto-replies during the following period:'\n\t\t\t\t)}\n\t\t\t\tvalue={sendAutoReplyTimePeriod}\n\t\t\t\tonClick={toggleSendAutoReplyTimePeriod}\n\t\t\t\tdisabled={!sendAutoReply}\n\t\t\t/>\n\t\t\t<Styler orientation=\"horizontal\" allDay height=\"fit\" mainAlignment=\"space-between\">\n\t\t\t\t<Container\n\t\t\t\t\tcrossAlignment=\"flex-start\"\n\t\t\t\t\tstyle={{ maxWidth: '50%' }}\n\t\t\t\t\tpadding={{ all: 'small' }}\n\t\t\t\t>\n\t\t\t\t\t<Padding bottom=\"extrasmall\">\n\t\t\t\t\t\t<Text size=\"small\">{t('settings.out_of_office.labels.start_date', 'Start Date')}</Text>\n\t\t\t\t\t</Padding>\n\t\t\t\t\t<DateTimePicker\n\t\t\t\t\t\tdisabled={dateDisabled}\n\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\tdateZimbraPrefOutOfOfficeFromDate\n\t\t\t\t\t\t\t\t? getDateEvent(dateZimbraPrefOutOfOfficeFromDate)\n\t\t\t\t\t\t\t\t: new Date()\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttime={false}\n\t\t\t\t\t\tonChange={(value: any): void => {\n\t\t\t\t\t\t\tsetZimbraPrefOutOfOfficeFromDate(changeDateEvent(value));\n\t\t\t\t\t\t\tupdatePrefs(changeDateEvent(value), 'zimbraPrefOutOfOfficeFromDate');\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tmoment(value).diff(getDateEvent(dateZimbraPrefOutOfOfficeUntilDate), 'minutes') >= 0\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tsetZimbraPrefOutOfOfficeUntilDate(\n\t\t\t\t\t\t\t\t\tchangeDateEvent(new Date(moment(value).add(1, 'd').valueOf()))\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tupdatePrefs(\n\t\t\t\t\t\t\t\t\tchangeDateEvent(new Date(moment(value).add(1, 'd').valueOf())),\n\t\t\t\t\t\t\t\t\t'zimbraPrefOutOfOfficeUntilDate'\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tdateIcon={\n\t\t\t\t\t\t\t<Padding all=\"small\">\n\t\t\t\t\t\t\t\t<Icon icon=\"CalendarOutline\" />\n\t\t\t\t\t\t\t</Padding>\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttimeIcon={\n\t\t\t\t\t\t\t<Padding all=\"small\">\n\t\t\t\t\t\t\t\t<Icon icon=\"ClockOutline\" />\n\t\t\t\t\t\t\t</Padding>\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</Container>\n\t\t\t\t<Container\n\t\t\t\t\tcrossAlignment=\"flex-start\"\n\t\t\t\t\tstyle={{ maxWidth: '50%' }}\n\t\t\t\t\tpadding={{ all: 'small' }}\n\t\t\t\t>\n\t\t\t\t\t<Padding bottom=\"extrasmall\">\n\t\t\t\t\t\t<Text size=\"small\">{t('settings.out_of_office.labels.end_date', 'End Date')}</Text>\n\t\t\t\t\t</Padding>\n\t\t\t\t\t<DateTimePicker\n\t\t\t\t\t\tdisabled={dateDisabled}\n\t\t\t\t\t\tinputProps={{ readOnly: true }}\n\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\tdateZimbraPrefOutOfOfficeUntilDate\n\t\t\t\t\t\t\t\t? getDateEvent(dateZimbraPrefOutOfOfficeUntilDate)\n\t\t\t\t\t\t\t\t: new Date()\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttime={false}\n\t\t\t\t\t\tonChange={(value: any): void => {\n\t\t\t\t\t\t\tsetZimbraPrefOutOfOfficeUntilDate(changeDateEvent(value));\n\t\t\t\t\t\t\tupdatePrefs(changeDateEvent(value), 'zimbraPrefOutOfOfficeUntilDate');\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tmoment(value).diff(getDateEvent(dateZimbraPrefOutOfOfficeFromDate), 'minutes') <= 0\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tsetZimbraPrefOutOfOfficeFromDate(\n\t\t\t\t\t\t\t\t\tchangeDateEvent(new Date(moment(value).subtract(1, 'd').valueOf()))\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tupdatePrefs(\n\t\t\t\t\t\t\t\t\tchangeDateEvent(new Date(moment(value).subtract(1, 'd').valueOf())),\n\t\t\t\t\t\t\t\t\t'zimbraPrefOutOfOfficeFromDate'\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tdateIcon={\n\t\t\t\t\t\t\t<Padding all=\"small\">\n\t\t\t\t\t\t\t\t<Icon icon=\"CalendarOutline\" />\n\t\t\t\t\t\t\t</Padding>\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttimeIcon={\n\t\t\t\t\t\t\t<Padding all=\"small\">\n\t\t\t\t\t\t\t\t<Icon icon=\"ClockOutline\" />\n\t\t\t\t\t\t\t</Padding>\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</Container>\n\t\t\t</Styler>\n\n\t\t\t<Container crossAlignment=\"flex-start\">\n\t\t\t\t<Checkbox\n\t\t\t\t\tdisabled={allDayDisabled}\n\t\t\t\t\tlabel={t('settings.out_of_office.labels.all_day', 'All Day:')}\n\t\t\t\t\tvalue={allDay}\n\t\t\t\t\tonClick={(): void => {\n\t\t\t\t\t\tsetAllDay(!allDay);\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t</Container>\n\t\t\t<Styler orientation=\"horizontal\" allDay height=\"fit\" mainAlignment=\"space-between\">\n\t\t\t\t<Container\n\t\t\t\t\tcrossAlignment=\"flex-start\"\n\t\t\t\t\tstyle={{ maxWidth: '50%' }}\n\t\t\t\t\tpadding={{ all: 'small' }}\n\t\t\t\t>\n\t\t\t\t\t<Padding bottom=\"extrasmall\">\n\t\t\t\t\t\t<Text size=\"small\">{t('settings.out_of_office.labels.start_time', 'Start Time:')}</Text>\n\t\t\t\t\t</Padding>\n\t\t\t\t\t<DateTimePicker\n\t\t\t\t\t\tdisabled={timeDisabled}\n\t\t\t\t\t\tdate={false}\n\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\tdateZimbraPrefOutOfOfficeFromDate\n\t\t\t\t\t\t\t\t? getDateEvent(dateZimbraPrefOutOfOfficeFromDate)\n\t\t\t\t\t\t\t\t: new Date()\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttime\n\t\t\t\t\t\tonChange={(value: any): void => {\n\t\t\t\t\t\t\tsetZimbraPrefOutOfOfficeFromDate(changeDateEvent(value));\n\t\t\t\t\t\t\tupdatePrefs(changeDateEvent(value), 'zimbraPrefOutOfOfficeFromDate');\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tmoment(value).diff(getDateEvent(dateZimbraPrefOutOfOfficeUntilDate), 'minutes') >= 0\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tsetZimbraPrefOutOfOfficeUntilDate(\n\t\t\t\t\t\t\t\t\tchangeDateEvent(new Date(moment(value).add(1, 'd').valueOf()))\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tupdatePrefs(\n\t\t\t\t\t\t\t\t\tchangeDateEvent(new Date(moment(value).add(1, 'd').valueOf())),\n\t\t\t\t\t\t\t\t\t'zimbraPrefOutOfOfficeUntilDate'\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tdateIcon={\n\t\t\t\t\t\t\t<Padding all=\"small\">\n\t\t\t\t\t\t\t\t<Icon icon=\"CalendarOutline\" />\n\t\t\t\t\t\t\t</Padding>\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttimeIcon={\n\t\t\t\t\t\t\t<Padding all=\"small\">\n\t\t\t\t\t\t\t\t<Icon icon=\"ClockOutline\" />\n\t\t\t\t\t\t\t</Padding>\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</Container>\n\t\t\t\t<Container\n\t\t\t\t\tcrossAlignment=\"flex-start\"\n\t\t\t\t\tstyle={{ maxWidth: '50%' }}\n\t\t\t\t\tpadding={{ all: 'small' }}\n\t\t\t\t>\n\t\t\t\t\t<Padding bottom=\"extrasmall\">\n\t\t\t\t\t\t<Text size=\"small\">{t('settings.out_of_office.labels.end_time', 'End Time:')}</Text>\n\t\t\t\t\t</Padding>\n\t\t\t\t\t<DateTimePicker\n\t\t\t\t\t\tdisabled={timeDisabled}\n\t\t\t\t\t\tdate={false}\n\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\tdateZimbraPrefOutOfOfficeUntilDate\n\t\t\t\t\t\t\t\t? getDateEvent(dateZimbraPrefOutOfOfficeUntilDate)\n\t\t\t\t\t\t\t\t: new Date()\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttime\n\t\t\t\t\t\tonChange={(value: any): void => {\n\t\t\t\t\t\t\tsetZimbraPrefOutOfOfficeUntilDate(changeDateEvent(value));\n\t\t\t\t\t\t\tupdatePrefs(changeDateEvent(value), 'zimbraPrefOutOfOfficeUntilDate');\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tmoment(value).diff(getDateEvent(dateZimbraPrefOutOfOfficeFromDate), 'minutes') <= 0\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tsetZimbraPrefOutOfOfficeFromDate(\n\t\t\t\t\t\t\t\t\tchangeDateEvent(new Date(moment(value).subtract(1, 'd').valueOf()))\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tupdatePrefs(\n\t\t\t\t\t\t\t\t\tchangeDateEvent(new Date(moment(value).subtract(1, 'd').valueOf())),\n\t\t\t\t\t\t\t\t\t'zimbraPrefOutOfOfficeFromDate'\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ttimeIcon={\n\t\t\t\t\t\t\t<Padding all=\"small\">\n\t\t\t\t\t\t\t\t<Icon icon=\"ClockOutline\" />\n\t\t\t\t\t\t\t</Padding>\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</Container>\n\t\t\t</Styler>\n\t\t</>\n\t);\n};\n\nexport default DateTimeSelect;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useState, useCallback, FC, useEffect, useMemo } from 'react';\nimport {\n\tContainer,\n\tFormSubSection,\n\tInput,\n\tCheckbox,\n\tSelect,\n\tPadding\n} from '@zextras/carbonio-design-system';\n\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport momentLocalizer from 'react-widgets-moment';\nimport { useTranslation } from 'react-i18next';\nimport { AccountSettings } from '../../../../types';\nimport Heading from '../settings-heading';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport DateTimeSelect from '../date-time-select-view';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport {\n\tItemsExternalSenders,\n\tgetExternalSendersPrefsData,\n\tItemsOutOfOfficeStatus,\n\tgetOutOfOfficeStatusPrefsData,\n\tItemsSendAutoReplies\n} from '../utils';\nimport { outOfOfficeSubSection } from '../../general-settings-sub-sections';\n\nmomentLocalizer();\n\nconst OutOfOfficeView: FC<{\n\tsettings: AccountSettings;\n\taddMod: (type: 'prefs' | 'props', key: string, value: { value: any; app: string }) => void;\n}> = ({ settings, addMod }) => {\n\tconst { t } = useTranslation();\n\tconst [sendAutoReply, setSendAutoReply] = useState<boolean>(\n\t\tsettings.prefs.zimbraPrefOutOfOfficeReplyEnabled === 'TRUE'\n\t);\n\tconst [inputZimbraPrefOutOfOfficeReply, setInputZimbraPrefOutOfOfficeReply] = useState<string>(\n\t\tsettings.prefs.zimbraPrefOutOfOfficeReply as string\n\t);\n\n\tconst [inputZimbraPrefOutOfOfficeExternalReply, setInputZimbraPrefOutOfOfficeExternalReply] =\n\t\tuseState<string>(settings.prefs.zimbraPrefOutOfOfficeExternalReply as string);\n\n\tconst [createAppointmentDisabled, setCreateAppointmentDisabled] = useState<boolean>(false);\n\tconst [externalReplyInput, setExternalReplyInput] = useState<boolean>(\n\t\tsettings.prefs.zimbraPrefOutOfOfficeExternalReplyEnabled === 'TRUE'\n\t);\n\n\tconst [createAppointment, setCreateAppointment] = useState<boolean>(true);\n\n\tconst updatePrefs = useCallback(\n\t\t(v, p) => {\n\t\t\taddMod('prefs', p, v);\n\t\t},\n\t\t[addMod]\n\t);\n\n\tuseEffect(() => {\n\t\tif (sendAutoReply) {\n\t\t\tsetCreateAppointmentDisabled(false);\n\t\t} else {\n\t\t\tsetCreateAppointmentDisabled(true);\n\t\t}\n\t}, [\n\t\tsendAutoReply,\n\t\tsettings.prefs.zimbraPrefOutOfOfficeFromDate,\n\t\tupdatePrefs,\n\t\tsetCreateAppointment,\n\t\tsetCreateAppointmentDisabled\n\t]);\n\n\tconst externalSendersHandler = (v: any): void => {\n\t\tsetExternalReplyInput(false);\n\n\t\tif (v === 'SEND_AUTO_REPLY') {\n\t\t\tupdatePrefs('FALSE', 'zimbraPrefOutOfOfficeSuppressExternalReply');\n\t\t\tupdatePrefs('FALSE', 'zimbraPrefOutOfOfficeExternalReplyEnabled');\n\t\t\tupdatePrefs('INSD', 'zimbraPrefExternalSendersType');\n\t\t} else if (v === 'SEND_NOT_IN_ORG') {\n\t\t\tupdatePrefs('ALLNOTINAB', 'zimbraPrefExternalSendersType');\n\t\t\tupdatePrefs('TRUE', 'zimbraPrefOutOfOfficeExternalReplyEnabled');\n\t\t\tupdatePrefs('FALSE', 'zimbraPrefOutOfOfficeSuppressExternalReply');\n\t\t\tsetExternalReplyInput(true);\n\t\t} else if (v === 'SHOW_EXTERNAL_INPUT') {\n\t\t\tupdatePrefs('ALL', 'zimbraPrefExternalSendersType');\n\t\t\tupdatePrefs('FALSE', 'zimbraPrefOutOfOfficeExternalReplyEnabled');\n\t\t\tupdatePrefs('INSD', 'zimbraPrefOutOfOfficeSuppressExternalReply');\n\t\t\tsetExternalReplyInput(true);\n\t\t} else {\n\t\t\tupdatePrefs('TRUE', 'zimbraPrefOutOfOfficeSuppressExternalReply');\n\t\t\tupdatePrefs('INAB', 'zimbraPrefExternalSendersType');\n\t\t\tupdatePrefs('FALSE', 'zimbraPrefOutOfOfficeExternalReplyEnabled');\n\t\t}\n\t};\n\n\tconst createAppointmentAsHandler = (v: any): void => {\n\t\tupdatePrefs(v, 'zimbraPrefOutOfOfficeFreeBusyStatus');\n\t};\n\n\tconst itemsSendAutoReplies = useMemo(() => ItemsSendAutoReplies(t), [t]);\n\tconst itemsExternalSenders = useMemo(() => ItemsExternalSenders(t), [t]);\n\tconst itemsOutOfOfficeStatus = useMemo(() => ItemsOutOfOfficeStatus(t), [t]);\n\tconst sectionTitle = useMemo(() => outOfOfficeSubSection(t), [t]);\n\treturn (\n\t\t<FormSubSection\n\t\t\tlabel={sectionTitle.label}\n\t\t\tminWidth=\"calc(min(100%, 512px))\"\n\t\t\twidth=\"50%\"\n\t\t\tid={sectionTitle.id}\n\t\t>\n\t\t\t<Container crossAlignment=\"baseline\" padding={{ all: 'small' }}>\n\t\t\t\t<Select\n\t\t\t\t\titems={itemsSendAutoReplies}\n\t\t\t\t\tbackground=\"gray5\"\n\t\t\t\t\tlabel={t('label.out_of_office', 'Out of Office')}\n\t\t\t\t\tonChange={(value: any): void => {\n\t\t\t\t\t\tupdatePrefs(value, 'zimbraPrefOutOfOfficeReplyEnabled');\n\t\t\t\t\t\tsetSendAutoReply(!sendAutoReply);\n\t\t\t\t\t}}\n\t\t\t\t\tdefaultSelection={\n\t\t\t\t\t\tsettings.prefs.zimbraPrefOutOfOfficeReplyEnabled === 'TRUE'\n\t\t\t\t\t\t\t? itemsSendAutoReplies[0]\n\t\t\t\t\t\t\t: itemsSendAutoReplies[1]\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t<Padding top=\"small\" width=\"100%\">\n\t\t\t\t\t<Input\n\t\t\t\t\t\tonChange={(e: React.ChangeEvent<HTMLInputElement>): void => {\n\t\t\t\t\t\t\tsetInputZimbraPrefOutOfOfficeReply(e.target.value);\n\t\t\t\t\t\t\tupdatePrefs(e.target.value, 'zimbraPrefOutOfOfficeReply');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tautoComplete=\"on\"\n\t\t\t\t\t\tlabel={t('settings.out_of_office.labels.auto_reply_message', 'Auto-Reply Message:')}\n\t\t\t\t\t\tbackgroundColor=\"gray5\"\n\t\t\t\t\t\tvalue={inputZimbraPrefOutOfOfficeReply || ''}\n\t\t\t\t\t\tdisabled={!sendAutoReply}\n\t\t\t\t\t/>\n\t\t\t\t</Padding>\n\t\t\t\t<Padding top=\"small\" width=\"100%\">\n\t\t\t\t\t<Select\n\t\t\t\t\t\tdisabled={!sendAutoReply}\n\t\t\t\t\t\titems={itemsExternalSenders}\n\t\t\t\t\t\tbackground=\"gray5\"\n\t\t\t\t\t\tlabel={t('settings.out_of_office.labels.external_senders', 'External Senders')}\n\t\t\t\t\t\tonChange={(value: unknown): void => {\n\t\t\t\t\t\t\texternalSendersHandler(value);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tdefaultSelection={{\n\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\tlabel: getExternalSendersPrefsData(settings, 'label', t),\n\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\tvalue: getExternalSendersPrefsData(settings, 'value', t)\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</Padding>\n\t\t\t\t{externalReplyInput && (\n\t\t\t\t\t<Padding top=\"small\" width=\"100%\">\n\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\tonChange={(e: React.ChangeEvent<HTMLInputElement>): void => {\n\t\t\t\t\t\t\t\tsetInputZimbraPrefOutOfOfficeExternalReply(e.target.value);\n\t\t\t\t\t\t\t\tupdatePrefs(e.target.value, 'zimbraPrefOutOfOfficeExternalReply');\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tautoComplete=\"on\"\n\t\t\t\t\t\t\tlabel={t(\n\t\t\t\t\t\t\t\t'settings.out_of_office.labels.auto_reply_message_external',\n\t\t\t\t\t\t\t\t'Auto-Reply Message for External senders:'\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\tbackgroundColor=\"gray5\"\n\t\t\t\t\t\t\tvalue={inputZimbraPrefOutOfOfficeExternalReply || ''}\n\t\t\t\t\t\t\tdisabled={!sendAutoReply}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Padding>\n\t\t\t\t)}\n\t\t\t</Container>\n\t\t\t<Container crossAlignment=\"baseline\" padding={{ all: 'small' }}>\n\t\t\t\t<DateTimeSelect settings={settings} addMod={addMod} sendAutoReply={sendAutoReply} />\n\t\t\t\t<Container crossAlignment=\"flex-start\">\n\t\t\t\t\t<Heading\n\t\t\t\t\t\ttitle={t('settings.out_of_office.headings.create_appointment', 'Calendar Appointment')}\n\t\t\t\t\t/>\n\t\t\t\t\t<Checkbox\n\t\t\t\t\t\tdisabled={createAppointmentDisabled}\n\t\t\t\t\t\tlabel={t('settings.out_of_office.labels.create_appointment', 'Create Appointment:')}\n\t\t\t\t\t\tvalue={createAppointment}\n\t\t\t\t\t\tonClick={(value: any): void => {\n\t\t\t\t\t\t\tsetCreateAppointment(!createAppointment);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</Container>\n\t\t\t\t<Container crossAlignment=\"baseline\" padding={{ all: 'small' }}>\n\t\t\t\t\t<Padding top=\"small\" width=\"50%\">\n\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\tdisabled={createAppointmentDisabled}\n\t\t\t\t\t\t\titems={itemsOutOfOfficeStatus}\n\t\t\t\t\t\t\tbackground=\"gray5\"\n\t\t\t\t\t\t\tlabel={t(\n\t\t\t\t\t\t\t\t'settings.out_of_office.labels.out_of_office_status',\n\t\t\t\t\t\t\t\t'Out Of Office Status:'\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\tonChange={(value: unknown): void => {\n\t\t\t\t\t\t\t\tcreateAppointmentAsHandler(value);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tdefaultSelection={{\n\t\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\t\tlabel: getOutOfOfficeStatusPrefsData(settings, 'label', t),\n\t\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\t\tvalue: getOutOfOfficeStatusPrefsData(settings, 'value', t)\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Padding>\n\t\t\t\t</Container>\n\t\t\t</Container>\n\t\t</FormSubSection>\n\t);\n};\n\nexport default OutOfOfficeView;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { FC, useMemo } from 'react';\nimport { Quota, Container, FormSubSection, Text, Tooltip } from '@zextras/carbonio-design-system';\nimport { useTranslation } from 'react-i18next';\nimport { useUserSettings } from '../../../store/account/hooks';\nimport { useAccountStore } from '../../../store/account/store';\nimport { quotaSubSection } from '../../general-settings-sub-sections';\n\ninterface UserQuotaProps {\n\tmobileView: boolean;\n}\n\nconst UserQuota: FC<UserQuotaProps> = ({ mobileView }) => {\n\tconst [t] = useTranslation();\n\n\tconst settings = useUserSettings();\n\tconst used = useAccountStore((s) => s.usedQuota);\n\tconst quota = useMemo(() => {\n\t\tconst userQuota = Number(settings?.attrs?.zimbraMailQuota);\n\t\tif (used && userQuota && userQuota > 0) {\n\t\t\treturn Math.round((used / userQuota) * 100);\n\t\t}\n\t\treturn -1;\n\t}, [settings?.attrs?.zimbraMailQuota, used]);\n\n\tconst description = useMemo(() => {\n\t\tswitch (true) {\n\t\t\tcase !quota || quota < 0:\n\t\t\t\treturn t('user_quota.unlimited', 'You have unlimited space available');\n\t\t\tcase quota === 100:\n\t\t\t\treturn t('user_quota.space_full', 'It seems that all available space is full');\n\t\t\tdefault:\n\t\t\t\treturn t('user_quota.limited', {\n\t\t\t\t\tdefaultValue: 'You have filled {{quota}}% of the available space',\n\t\t\t\t\tquota\n\t\t\t\t});\n\t\t}\n\t}, [quota, t]);\n\n\tconst fillBackground = useMemo(() => {\n\t\tswitch (true) {\n\t\t\tcase quota >= 95:\n\t\t\t\treturn 'error';\n\t\t\tcase quota >= 90:\n\t\t\t\treturn 'warning';\n\t\t\tcase quota === -1:\n\t\t\t\treturn 'gray4';\n\t\t\tdefault:\n\t\t\t\treturn 'primary';\n\t\t}\n\t}, [quota]);\n\tconst sectionTitle = useMemo(() => quotaSubSection(t), [t]);\n\treturn mobileView ? (\n\t\t<Container width=\"fit\" padding={{ right: 'medium' }}>\n\t\t\t<Tooltip label={description} placement=\"bottom\">\n\t\t\t\t<Quota fill={quota > 0 ? quota : 0} fillBackground={fillBackground} />\n\t\t\t</Tooltip>\n\t\t</Container>\n\t) : (\n\t\t<FormSubSection\n\t\t\tlabel={sectionTitle.label}\n\t\t\tminWidth=\"calc(min(100%, 512px))\"\n\t\t\twidth=\"50%\"\n\t\t\tid={sectionTitle.id}\n\t\t>\n\t\t\t<Container width=\"fill\" padding={{ vertical: 'medium' }}>\n\t\t\t\t<Container\n\t\t\t\t\torientation=\"horizontal\"\n\t\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t\t\ttakeAvailableSpace\n\t\t\t\t\tpadding={{ bottom: 'medium' }}\n\t\t\t\t>\n\t\t\t\t\t<Text orientation=\"left\">{description}</Text>\n\t\t\t\t</Container>\n\t\t\t\t<Quota fill={quota === -1 ? 100 : quota} fillBackground={fillBackground} />\n\t\t\t</Container>\n\t\t</FormSubSection>\n\t);\n};\n\nexport default UserQuota;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useCallback, FC, useMemo } from 'react';\nimport {\n\tContainer,\n\tFormSubSection,\n\tModal,\n\tSelect,\n\tText,\n\tPadding\n} from '@zextras/carbonio-design-system';\n\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport momentLocalizer from 'react-widgets-moment';\nimport { useTranslation } from 'react-i18next';\nimport { find } from 'lodash';\nimport { AccountSettings } from '../../types';\nimport { localeList, timeZoneList } from './components/utils';\nimport { timezoneAndLanguageSubSection } from './general-settings-sub-sections';\n\nmomentLocalizer();\n\nconst LanguageAndTimeZone: FC<{\n\tsettings: AccountSettings;\n\topen: boolean;\n\tsetOpen: (arg: boolean) => any;\n\taddMod: (type: 'prefs' | 'props', key: string, value: { value: any; app: string }) => void;\n}> = ({ settings, addMod, open, setOpen }) => {\n\tconst { t } = useTranslation();\n\tconst locales = useMemo(() => localeList(t), [t]);\n\tconst timezones = useMemo(() => timeZoneList(t), [t]);\n\tconst updatePrefs = useCallback(\n\t\t(v, p) => {\n\t\t\taddMod('prefs', p, v);\n\t\t},\n\t\t[addMod]\n\t);\n\n\tconst defaultSelection = useMemo(\n\t\t() =>\n\t\t\tsettings.prefs.zimbraPrefLocale && find(locales, { id: settings.prefs.zimbraPrefLocale })\n\t\t\t\t? find(locales, { id: settings.prefs.zimbraPrefLocale })\n\t\t\t\t: locales[5],\n\t\t[locales, settings.prefs.zimbraPrefLocale]\n\t);\n\n\tconst defaultTimeZone = useMemo(\n\t\t() =>\n\t\t\tsettings.prefs.zimbraPrefTimeZoneId &&\n\t\t\tfind(timezones, { value: settings.prefs.zimbraPrefTimeZoneId })\n\t\t\t\t? find(timezones, { value: settings.prefs.zimbraPrefTimeZoneId })\n\t\t\t\t: timezones[39],\n\t\t[timezones, settings.prefs.zimbraPrefTimeZoneId]\n\t);\n\tconst sectionTitle = useMemo(() => timezoneAndLanguageSubSection(t), [t]);\n\treturn (\n\t\t<FormSubSection\n\t\t\tlabel={sectionTitle.label}\n\t\t\tminWidth=\"calc(min(100%, 512px))\"\n\t\t\twidth=\"50%\"\n\t\t\tid={sectionTitle.id}\n\t\t>\n\t\t\t<Container crossAlignment=\"baseline\" padding={{ all: 'small' }}>\n\t\t\t\t{Object.keys(settings.prefs).length > 0 && (\n\t\t\t\t\t<Select\n\t\t\t\t\t\titems={locales}\n\t\t\t\t\t\tbackground=\"gray5\"\n\t\t\t\t\t\tlabel={t('label.language', 'Language')}\n\t\t\t\t\t\tonChange={(value: any): void => {\n\t\t\t\t\t\t\tupdatePrefs(value, 'zimbraPrefLocale');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tdefaultSelection={defaultSelection}\n\t\t\t\t\t\tshowCheckbox={false}\n\t\t\t\t\t\tdropdownMaxHeight=\"200px\"\n\t\t\t\t\t\tselectedBackgroundColor=\"highlight\"\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t<Padding top=\"small\" width=\"100%\">\n\t\t\t\t\t{Object.keys(settings.prefs).length > 0 && (\n\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\titems={timezones}\n\t\t\t\t\t\t\tbackground=\"gray5\"\n\t\t\t\t\t\t\tlabel={t('label.time_zone', 'Time Zone')}\n\t\t\t\t\t\t\tonChange={(value: any): void => {\n\t\t\t\t\t\t\t\tupdatePrefs(value, 'zimbraPrefTimeZoneId');\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tdefaultSelection={defaultTimeZone}\n\t\t\t\t\t\t\tshowCheckbox={false}\n\t\t\t\t\t\t\tdropdownMaxHeight=\"200px\"\n\t\t\t\t\t\t\tselectedBackgroundColor=\"highlight\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</Padding>\n\t\t\t\t<Modal\n\t\t\t\t\ttitle={t('label.reload', 'Reload')}\n\t\t\t\t\topen={open}\n\t\t\t\t\tdismissLabel={t('label.no', 'No')}\n\t\t\t\t\tonConfirm={(): void => window.location.reload()}\n\t\t\t\t\tconfirmLabel={t('label.reload', 'Reload')}\n\t\t\t\t\tonClose={(): void => setOpen(false)}\n\t\t\t\t>\n\t\t\t\t\t<Text overflow=\"break-word\">\n\t\t\t\t\t\t{t(\n\t\t\t\t\t\t\t'message.reload',\n\t\t\t\t\t\t\t`\tWould you like to reload the application now to show the new language?\n\t\t\t\t\t\t\t(Otherwise, the new language will appear the next time you sign in.)`\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Text>\n\t\t\t\t</Modal>\n\t\t\t</Container>\n\t\t</FormSubSection>\n\t);\n};\n\nexport default LanguageAndTimeZone;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useState, FC, useCallback, useEffect, useMemo } from 'react';\nimport { Container, FormSubSection, Checkbox } from '@zextras/carbonio-design-system';\nimport { useTranslation } from 'react-i18next';\nimport { AccountSettings } from '../../types';\nimport { searchPrefsSubSection } from './general-settings-sub-sections';\n\nconst SearchSettingsView: FC<{\n\tsettings: AccountSettings;\n\taddMod: (type: 'prefs' | 'props', key: string, value: { value: any; app: string }) => void;\n}> = ({ settings, addMod }) => {\n\tconst { t } = useTranslation();\n\tconst [searchInSpamFolder, setSearchInSpamFolder] = useState<boolean>(\n\t\tsettings.prefs.zimbraPrefIncludeSpamInSearch === 'TRUE'\n\t);\n\tconst [searchInTrashFolder, setSearchInTrashFolder] = useState<boolean>(\n\t\tsettings.prefs.zimbraPrefIncludeTrashInSearch === 'TRUE'\n\t);\n\tconst [searchInSharedFolder, setSearchInSharedFolder] = useState<boolean>(\n\t\tsettings.prefs.zimbraPrefIncludeSharedItemsInSearch === 'TRUE'\n\t);\n\tconst setMode = useCallback(\n\t\t(v, p) => {\n\t\t\tconst value: any = v ? 'TRUE' : 'FALSE';\n\t\t\taddMod('prefs', p, value);\n\t\t},\n\t\t[addMod]\n\t);\n\n\tuseEffect(() => {\n\t\tsetSearchInSpamFolder(settings.prefs.zimbraPrefIncludeSpamInSearch === 'TRUE');\n\t}, [settings.prefs.zimbraPrefIncludeSpamInSearch]);\n\tuseEffect(() => {\n\t\tsetSearchInTrashFolder(settings.prefs.zimbraPrefIncludeTrashInSearch === 'TRUE');\n\t}, [settings.prefs.zimbraPrefIncludeTrashInSearch]);\n\tuseEffect(() => {\n\t\tsetSearchInSharedFolder(settings.prefs.zimbraPrefIncludeSharedItemsInSearch === 'TRUE');\n\t}, [settings.prefs.zimbraPrefIncludeSharedItemsInSearch]);\n\n\tconst onClickSpam = useCallback(() => {\n\t\tsetSearchInSpamFolder(!searchInSpamFolder);\n\t\tsetMode(!searchInSpamFolder, 'zimbraPrefIncludeSpamInSearch');\n\t}, [searchInSpamFolder, setMode]);\n\tconst onClickTrash = useCallback(() => {\n\t\tsetSearchInTrashFolder(!searchInTrashFolder);\n\t\tsetMode(!searchInTrashFolder, 'zimbraPrefIncludeTrashInSearch');\n\t}, [searchInTrashFolder, setMode]);\n\tconst onClickShared = useCallback(() => {\n\t\tsetSearchInSharedFolder(!searchInSharedFolder);\n\t\tsetMode(!searchInSharedFolder, 'zimbraPrefIncludeSharedItemsInSearch');\n\t}, [searchInSharedFolder, setMode]);\n\tconst sectionTitle = useMemo(() => searchPrefsSubSection(t), [t]);\n\treturn (\n\t\t<FormSubSection\n\t\t\tlabel={sectionTitle.label}\n\t\t\tminWidth=\"calc(min(100%, 512px))\"\n\t\t\twidth=\"50%\"\n\t\t\tid={sectionTitle.id}\n\t\t>\n\t\t\t<Container crossAlignment=\"baseline\" padding={{ all: 'small' }}>\n\t\t\t\t<Checkbox\n\t\t\t\t\tlabel={t(\n\t\t\t\t\t\t'settings.search_settings.labels.include_search_in_spam_folder',\n\t\t\t\t\t\t'Include Spam Folder in Searches'\n\t\t\t\t\t)}\n\t\t\t\t\tvalue={searchInSpamFolder}\n\t\t\t\t\tonClick={onClickSpam}\n\t\t\t\t/>\n\t\t\t\t<Checkbox\n\t\t\t\t\tlabel={t(\n\t\t\t\t\t\t'settings.search_settings.labels.include_search_in_trash_folder',\n\t\t\t\t\t\t'Include Trash Folder in Searches'\n\t\t\t\t\t)}\n\t\t\t\t\tvalue={searchInTrashFolder}\n\t\t\t\t\tonClick={onClickTrash}\n\t\t\t\t/>\n\t\t\t\t<Checkbox\n\t\t\t\t\tlabel={t(\n\t\t\t\t\t\t'settings.search_settings.labels.include_search_in_shared_folder',\n\t\t\t\t\t\t'Include Shared Folder in Searches'\n\t\t\t\t\t)}\n\t\t\t\t\tvalue={searchInSharedFolder}\n\t\t\t\t\tonClick={onClickShared}\n\t\t\t\t/>\n\t\t\t</Container>\n\t\t</FormSubSection>\n\t);\n};\n\nexport default SearchSettingsView;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useCallback, useState, FC, useMemo } from 'react';\nimport { Container, useSnackbar } from '@zextras/carbonio-design-system';\nimport { useTranslation } from 'react-i18next';\nimport { includes, isEmpty } from 'lodash';\nimport { useUserSettings } from '../store/account';\nimport Logout from './components/general-settings/logout';\nimport AppearanceSettings from './components/general-settings/appearance-settings';\nimport ModuleVersionSettings from './components/general-settings/module-version-settings';\nimport OutOfOfficeSettings from './components/general-settings/out-of-office-view';\nimport UserQuota from './components/general-settings/user-quota';\nimport { editSettings } from '../network/edit-settings';\nimport { Mods } from '../../types';\nimport LanguageAndTimeZoneSettings from './language-and-timezone-settings';\nimport SearchSettingsView from './search-settings-view';\nimport SettingsHeader from './components/settings-header';\n\nconst GeneralSettings: FC = () => {\n\tconst [mods, setMods] = useState<Mods>({});\n\tconst [t] = useTranslation();\n\tconst settings = useUserSettings();\n\tconst [open, setOpen] = useState(false);\n\tconst addMod = useCallback((type: 'props' | 'prefs', key, value) => {\n\t\tsetMods((m) => ({\n\t\t\t...m,\n\t\t\t[type]: {\n\t\t\t\t...m?.[type],\n\t\t\t\t[key]: value\n\t\t\t}\n\t\t}));\n\t}, []);\n\tconst createSnackbar = useSnackbar();\n\n\tconst onSave = useCallback(() => {\n\t\teditSettings(mods)\n\t\t\t.then(() => {\n\t\t\t\tif (mods.prefs && includes(Object.keys(mods.prefs), 'zimbraPrefLocale')) {\n\t\t\t\t\tsetOpen(true);\n\t\t\t\t}\n\t\t\t\tcreateSnackbar({\n\t\t\t\t\tkey: `new`,\n\t\t\t\t\treplace: true,\n\t\t\t\t\ttype: 'info',\n\t\t\t\t\tlabel: t('message.snackbar.settings_saved', 'Edits saved correctly'),\n\t\t\t\t\tautoHideTimeout: 3000,\n\t\t\t\t\thideButton: true\n\t\t\t\t});\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\tcreateSnackbar({\n\t\t\t\t\tkey: `new`,\n\t\t\t\t\treplace: true,\n\t\t\t\t\ttype: 'error',\n\t\t\t\t\tlabel: t('snackbar.error', 'Something went wrong, please try again'),\n\t\t\t\t\tautoHideTimeout: 3000,\n\t\t\t\t\thideButton: true\n\t\t\t\t});\n\t\t\t});\n\t\tsetMods({});\n\t}, [createSnackbar, mods, t]);\n\tconst onCancel = useCallback(() => {\n\t\tsetMods({});\n\t}, []);\n\tconst isDirty = useMemo(() => !isEmpty(mods), [mods]);\n\tconst title = useMemo(() => t('settings.general.general', 'General Settings'), [t]);\n\n\treturn (\n\t\t<>\n\t\t\t<SettingsHeader title={title} onCancel={onCancel} onSave={onSave} isDirty={isDirty} />\n\t\t\t<Container\n\t\t\t\tbackground=\"gray5\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t\tpadding={{ all: 'medium' }}\n\t\t\t\tstyle={{ overflow: 'auto' }}\n\t\t\t>\n\t\t\t\t<AppearanceSettings settings={settings} addMod={addMod} />\n\t\t\t\t<LanguageAndTimeZoneSettings\n\t\t\t\t\tsettings={settings}\n\t\t\t\t\taddMod={addMod}\n\t\t\t\t\topen={open}\n\t\t\t\t\tsetOpen={setOpen}\n\t\t\t\t/>\n\n\t\t\t\t<OutOfOfficeSettings settings={settings} addMod={addMod} />\n\t\t\t\t<SearchSettingsView settings={settings} addMod={addMod} />\n\t\t\t\t<ModuleVersionSettings />\n\t\t\t\t<UserQuota mobileView={false} />\n\t\t\t\t<Logout />\n\t\t\t</Container>\n\t\t</>\n\t);\n};\n\nexport default GeneralSettings;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, {\n\tuseEffect,\n\tuseState,\n\tuseCallback,\n\tuseReducer,\n\tuseMemo,\n\tFC,\n\tuseContext\n} from 'react';\nimport {\n\tText,\n\tButton,\n\tSelect,\n\tContainer,\n\tRow,\n\tIcon,\n\tSnackbarManagerContext\n} from '@zextras/carbonio-design-system';\nimport { Severity, Event } from '@sentry/browser';\nimport { filter, find, map } from 'lodash';\nimport styled from 'styled-components';\nimport { TFunction, useTranslation } from 'react-i18next';\nimport { useUserAccount } from '../store/account';\nimport { useRemoveCurrentBoard } from '../shell/boards/board-hooks';\nimport { feedback } from './functions';\nimport { useAppList } from '../store/app';\n\nconst TextArea = styled.textarea<{ size?: string }>`\n\twidth: 100%;\n\tmin-height: 128px;\n\tbox-sizing: border-box;\n\toutline: none;\n\tborder: none;\n\tbackground: ${({ theme }): string => theme.palette.gray5.regular};\n\tresize: none;\n\ttransition: height 0.4s ease;\n\tcolor: ${({ theme }): string => theme.palette.text.regular};\n\tfont-family: ${({ theme }): string => theme.fonts.default};\n\tfont-size: ${({ theme, size }): string => theme.sizes.font[size ?? 'medium']};\n\t&:focus {\n\t\tbackground: ${({ theme }): string => theme.palette.gray4.regular};\n\t\toutline: none;\n\t}\n`;\n\nconst TextContainer = styled(Container)`\n\ttext-align: justify;\n\talign-items: left;\n\twidth: 80%;\n`;\n\nconst ButtonContainer = styled(Container)`\n\twidth: 20%;\n\tposition: relative;\n`;\n\nconst TAContainer = styled(Container)`\n\tbackground: ${({ theme }): string => theme.palette.gray5.regular};\n\tborder-radius: 2px 2px 0 0;\n\tpadding: 8px;\n\ttransition: height 0.4s ease;\n\theight: auto;\n\tmax-height: 50%;\n\t&:focus-within {\n\t\tbackground: ${({ theme }): string => theme.palette.gray4.regular};\n\t\toutline: none;\n\t\tborder-bottom: 1px solid ${({ theme }): string => theme.palette.primary.regular};\n\t}\n`;\n\nconst SubHeadingText = styled(Text)`\n\tborder-radius: 2px 2px 0 0;\n\tline-height: 21px;\n\tfont-size: 14px;\n\tfont-weight: 300;\n\tmargin-top: 10px;\n\tline-height: ${(props): string => props.lineHeight};\n`;\n\nconst LabelContainer = styled(Container)`\n\tborder-bottom: 1px solid ${(props): string => (props.disabled ? 'red' : '#cfd5dc')};\n`;\n\nconst emptyEvent: Event = {\n\tmessage: '',\n\tlevel: Severity.Info,\n\trelease: 'unknown',\n\textra: {\n\t\tapp: '0',\n\t\ttopic: '0'\n\t},\n\tuser: {}\n};\n\nfunction reducer(state: Event, { type, payload }: { type: string; payload: any }): Event {\n\tswitch (type) {\n\t\tcase 'set-user':\n\t\t\treturn { ...state, user: payload };\n\t\tcase 'reset':\n\t\t\treturn emptyEvent;\n\t\tcase 'set-message':\n\t\t\treturn { ...state, message: payload };\n\t\tcase 'select-app':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\trelease: payload.version,\n\t\t\t\textra: { ...state.extra, app: payload.app }\n\t\t\t};\n\t\tcase 'select-topic':\n\t\t\treturn { ...state, extra: { ...state.extra, topic: payload } };\n\t\tdefault:\n\t\t\treturn state;\n\t}\n}\n\nconst getTopics = (t: TFunction): Array<{ label: string; value: string }> => [\n\t{ label: t('feedback.user_interface', 'User interface'), value: 'UserInterface' },\n\t{ label: t('feedback.behaviors', 'Behaviors'), value: 'Behaviors' },\n\t{ label: t('feedback.missing_features', 'Missing features'), value: 'MissingFeatures' },\n\t{ label: t('feedback.other', 'Other'), value: 'Other' }\n];\n\nconst ModuleLabelFactory: FC<{\n\tselected: Array<{ label: string; value: string }>;\n\tlabel: string;\n\topen: boolean;\n\tfocus: boolean;\n}> = ({ selected, label, open, focus }) => (\n\t<LabelContainer\n\t\torientation=\"horizontal\"\n\t\twidth=\"fill\"\n\t\tcrossAlignment=\"center\"\n\t\tmainAlignment=\"space-between\"\n\t\tborderRadius=\"half\"\n\t\tbackground=\"gray5\"\n\t\tpadding={{\n\t\t\tall: 'small'\n\t\t}}\n\t>\n\t\t<Row takeAvailableSpace mainAlignment=\"unset\">\n\t\t\t<Text size=\"medium\" color={open || focus ? 'primary' : 'secondary'}>\n\t\t\t\t{selected.length > 0 ? selected[0].label : label}\n\t\t\t</Text>\n\t\t</Row>\n\t\t<Icon\n\t\t\tsize=\"large\"\n\t\t\ticon={open ? 'ChevronUpOutline' : 'ChevronDownOutline'}\n\t\t\tcolor={open || focus ? 'primary' : 'secondary'}\n\t\t\tstyle={{ alignSelf: 'center' }}\n\t\t/>\n\t</LabelContainer>\n);\n\nconst _LabelFactory: FC<{\n\tselected: Array<{ label: string; value: string }>;\n\tlabel: string;\n\topen: boolean;\n\tfocus: boolean;\n\tshowErr: boolean;\n}> = ({ selected, label, open, focus, showErr }) => (\n\t<LabelContainer\n\t\tdisabled={showErr}\n\t\torientation=\"horizontal\"\n\t\twidth=\"fill\"\n\t\tcrossAlignment=\"center\"\n\t\tmainAlignment=\"space-between\"\n\t\tborderRadius=\"half\"\n\t\tbackground=\"gray5\"\n\t\tpadding={{\n\t\t\tall: 'small'\n\t\t}}\n\t>\n\t\t<Row takeAvailableSpace mainAlignment=\"unset\">\n\t\t\t{showErr ? (\n\t\t\t\t<Text size=\"medium\" color={(open && showErr) || focus ? 'primary' : 'error'}>\n\t\t\t\t\t{' '}\n\t\t\t\t\t{selected.length > 0 ? selected[0].label : label}\n\t\t\t\t</Text>\n\t\t\t) : (\n\t\t\t\t<Text size=\"medium\" color={open || focus ? 'primary' : 'secondary'}>\n\t\t\t\t\t{selected.length > 0 ? selected[0].label : label}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t</Row>\n\n\t\t{showErr ? (\n\t\t\t<Icon\n\t\t\t\tsize=\"large\"\n\t\t\t\ticon={open ? 'ChevronUpOutline' : 'ChevronDownOutline'}\n\t\t\t\tcolor={(open && showErr) || focus ? 'primary' : 'error'}\n\t\t\t\tstyle={{ alignSelf: 'center' }}\n\t\t\t/>\n\t\t) : (\n\t\t\t<Icon\n\t\t\t\tsize=\"large\"\n\t\t\t\ticon={open ? 'ChevronUpOutline' : 'ChevronDownOutline'}\n\t\t\t\tcolor={open || focus ? 'primary' : 'secondary'}\n\t\t\t\tstyle={{ alignSelf: 'center' }}\n\t\t\t/>\n\t\t)}\n\t</LabelContainer>\n);\n\nconst Feedback: FC = () => {\n\tconst [t] = useTranslation();\n\tconst topics = useMemo(() => getTopics(t), [t]);\n\tconst allApps = useAppList();\n\tconst apps = useMemo(\n\t\t() => filter(allApps, (app) => !!app.sentryDsn),\n\n\t\t[allApps]\n\t);\n\tconst appItems = useMemo(\n\t\t() =>\n\t\t\tmap(apps, (app) => ({\n\t\t\t\tlabel: app.display,\n\t\t\t\tvalue: app.name\n\t\t\t})),\n\t\t[apps]\n\t);\n\tconst acct = useUserAccount();\n\tconst [event, dispatch] = useReducer(reducer, emptyEvent);\n\tconst [showErr, setShowErr] = useState(false);\n\tconst [limit, setLimit] = useState(0);\n\n\tconst onAppSelect = useCallback(\n\t\t(ev) =>\n\t\t\tdispatch({\n\t\t\t\ttype: 'select-app',\n\t\t\t\tpayload: {\n\t\t\t\t\tapp: ev,\n\t\t\t\t\tversion: find(apps, ['name', ev])?.version\n\t\t\t\t}\n\t\t\t}),\n\t\t[apps]\n\t);\n\n\tconst onTopicSelect = useCallback((ev) => {\n\t\tsetShowErr(false);\n\t\tdispatch({ type: 'select-topic', payload: ev });\n\t}, []);\n\n\tconst onInputChange = useCallback((ev) => {\n\t\t// eslint-disable-next-line no-param-reassign\n\t\tev.target.style.height = 'auto';\n\t\t// eslint-disable-next-line no-param-reassign\n\t\tev.target.style.height = `${25 + ev.target.scrollHeight}px`;\n\t\tif (ev.target.value.length <= 500) {\n\t\t\tsetLimit(ev.target.value.length);\n\t\t\tdispatch({ type: 'set-message', payload: ev.target.value });\n\t\t}\n\t}, []);\n\n\tconst checkTopicSelect = useCallback(\n\t\t(ev) => {\n\t\t\tif (event.extra?.topic === '0') setShowErr(true);\n\t\t\telse setShowErr(false);\n\t\t\tif (ev.keyCode === 8) {\n\t\t\t\tif (event.message?.length === 0) {\n\t\t\t\t\tsetShowErr(false);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[setShowErr, event]\n\t);\n\n\tconst closeBoard = useRemoveCurrentBoard();\n\n\tconst createSnackbar = useContext(SnackbarManagerContext) as (snackbar: any) => void;\n\n\tconst confirmHandler = useCallback(() => {\n\t\tconst feedbackId = feedback(event);\n\t\tcreateSnackbar(\n\t\t\tfeedbackId\n\t\t\t\t? { type: 'success', label: t('feedback.success', 'Thank you for your feedback') }\n\t\t\t\t: {\n\t\t\t\t\t\ttype: 'error',\n\t\t\t\t\t\tlabel: t('feedback.error', 'There was an error while sending your feedback')\n\t\t\t\t }\n\t\t);\n\t\tcloseBoard();\n\t}, [event, createSnackbar, t, closeBoard]);\n\n\tuseEffect(() => {\n\t\tdispatch({\n\t\t\ttype: 'set-user',\n\t\t\tpayload: { id: acct.id, name: acct.displayName ?? acct.name }\n\t\t});\n\t}, [acct]);\n\n\tconst disabledSend = useMemo(\n\t\t() =>\n\t\t\t(event?.message?.length ?? 0) <= 0 || event.extra?.topic === '0' || event.extra?.app === '0',\n\t\t[event.message, event.extra?.topic, event.extra?.app]\n\t);\n\n\tconst LabelFactory = useCallback(\n\t\t(props) => <_LabelFactory {...props} showErr={showErr} />,\n\t\t[showErr]\n\t);\n\n\treturn (\n\t\t<Container padding={{ all: 'large' }} mainAlignment=\"space-around\">\n\t\t\t<Container orientation=\"horizontal\" height=\"fit\">\n\t\t\t\t<TextContainer mainAlignment=\"flex-start\" crossAlignment=\"flex-start\">\n\t\t\t\t\t<Text weight=\"bold\" size=\"18px\">\n\t\t\t\t\t\t{t('feedback.report_something', 'Do you want to report something?')}\n\t\t\t\t\t</Text>\n\t\t\t\t\t<SubHeadingText overflow=\"break-word\" lineHeight=\"21px\">\n\t\t\t\t\t\t{t(\n\t\t\t\t\t\t\t'feedback.explanation',\n\t\t\t\t\t\t\t'Please send us your feedback about your new experience with Zextras Server. Your opinion is meaningful for us to improve our product. So tell us what’s on your mind.'\n\t\t\t\t\t\t)}\n\t\t\t\t\t</SubHeadingText>\n\t\t\t\t\t<SubHeadingText overflow=\"break-word\">\n\t\t\t\t\t\t{t(\n\t\t\t\t\t\t\t'feedback.hint',\n\t\t\t\t\t\t\t'Remember: define the topic using module and macro area selectors before write your feedback. Thanks for your help.'\n\t\t\t\t\t\t)}\n\t\t\t\t\t</SubHeadingText>\n\t\t\t\t</TextContainer>\n\n\t\t\t\t<ButtonContainer crossAlignment=\"flex-end\" mainAlignment=\"baseline\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\tlabel={t('feedback.send', 'SEND')}\n\t\t\t\t\t\tonClick={confirmHandler}\n\t\t\t\t\t\tdisabled={disabledSend}\n\t\t\t\t\t/>\n\t\t\t\t</ButtonContainer>\n\t\t\t</Container>\n\t\t\t<Container\n\t\t\t\tpadding={{ bottom: 'medium' }}\n\t\t\t\theight=\"fit\"\n\t\t\t\tmainAlignment=\"space-between\"\n\t\t\t\tcrossAlignment=\"flex-start\"\n\t\t\t\torientation=\"horizontal\"\n\t\t\t>\n\t\t\t\t<Container mainAlignment=\"space-between\" crossAlignment=\"flex-start\" maxWidth=\"305px\">\n\t\t\t\t\t<Row padding={{ vertical: 'large' }}>\n\t\t\t\t\t\t<Text weight=\"bold\" size=\"14px\">\n\t\t\t\t\t\t\tModule\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</Row>\n\t\t\t\t\t<Select\n\t\t\t\t\t\tlabel={t('feedback.select_a_module', 'Select a module')}\n\t\t\t\t\t\titems={appItems}\n\t\t\t\t\t\tonChange={onAppSelect}\n\t\t\t\t\t\tLabelFactory={ModuleLabelFactory}\n\t\t\t\t\t/>\n\t\t\t\t</Container>\n\t\t\t\t<Container mainAlignment=\"space-between\" crossAlignment=\"flex-start\" maxWidth=\"305px\">\n\t\t\t\t\t<Row padding={{ vertical: 'large' }}>\n\t\t\t\t\t\t<Text weight=\"bold\" size=\"14px\">\n\t\t\t\t\t\t\tTopic\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</Row>\n\t\t\t\t\t<Select\n\t\t\t\t\t\tlabel={t('feedback.select_a_topic', 'Select a topic')}\n\t\t\t\t\t\tselection={find(topics, ['value', event.extra?.topic])}\n\t\t\t\t\t\titems={topics}\n\t\t\t\t\t\tonChange={onTopicSelect}\n\t\t\t\t\t\tLabelFactory={LabelFactory}\n\t\t\t\t\t\tmultiple={false}\n\t\t\t\t\t/>\n\t\t\t\t</Container>\n\t\t\t</Container>\n\t\t\t<TAContainer crossAlignment=\"flex-end\">\n\t\t\t\t<TextArea\n\t\t\t\t\tvalue={event.message}\n\t\t\t\t\tonKeyUp={checkTopicSelect}\n\t\t\t\t\tonChange={onInputChange}\n\t\t\t\t\tplaceholder={t('feedback.write_here', 'Write your feedback here')}\n\t\t\t\t/>\n\t\t\t\t<Text size=\"medium\" color=\"secondary\">\n\t\t\t\t\t{limit}/500\n\t\t\t\t</Text>\n\t\t\t</TAContainer>\n\t\t</Container>\n\t);\n};\n\nexport default Feedback;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useCallback, ReactElement, useMemo, useState, useContext } from 'react';\nimport {\n\tContainer,\n\tText,\n\tList,\n\tDivider,\n\tRow,\n\tPadding,\n\tButton,\n\tIcon,\n\tModalManagerContext\n} from '@zextras/carbonio-design-system';\nimport { TFunction } from 'i18next';\nimport { map, filter, max } from 'lodash';\nimport { IdentityProps, CreateIdentityProps } from '../../../../types';\n\ntype AccountsListProps = {\n\tt: TFunction;\n\tidentities: IdentityProps[];\n\tsetIdentities: (identities: IdentityProps[]) => void;\n\tselectedIdentityId: number;\n\tsetSelectedIdentityId: (value: number) => void;\n\tdeleteIdentities: (deleteList: string[]) => void;\n\tcreateIdentities: (createList: { prefs: CreateIdentityProps }[]) => void;\n};\n\ntype ListItemProps = {\n\tactive: boolean;\n\titem: IdentityProps;\n\tselected: boolean;\n\tsetSelected: () => void;\n\tbackground: string;\n\tselectedBackground: string;\n\tactiveBackground: string;\n};\n\nconst AccountsList = ({\n\tt,\n\tselectedIdentityId,\n\tidentities,\n\tsetIdentities,\n\tsetSelectedIdentityId,\n\tdeleteIdentities,\n\tcreateIdentities\n}: AccountsListProps): ReactElement => {\n\tconst changeView = (value: number): void => setSelectedIdentityId(value);\n\n\tconst ListItem = ({ item }: ListItemProps): ReactElement => (\n\t\t<>\n\t\t\t<Container\n\t\t\t\tonClick={(): void => {\n\t\t\t\t\tchangeView(Number(item.id));\n\t\t\t\t}}\n\t\t\t\torientation=\"horizontal\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t\tpadding={{ all: 'small' }}\n\t\t\t>\n\t\t\t\t<Row width=\"fill\" mainAlignment=\"space-between\">\n\t\t\t\t\t<Container orientation=\"horizontal\" mainAlignment=\"flex-start\" width=\"fit\">\n\t\t\t\t\t\t<Padding right=\"small\">\n\t\t\t\t\t\t\t<Icon icon=\"CheckmarkCircle2Outline\" size=\"large\" color=\"primary\" />\n\t\t\t\t\t\t</Padding>\n\t\t\t\t\t\t<Padding right=\"small\">\n\t\t\t\t\t\t\t<Text weight=\"regular\" size=\"small\">\n\t\t\t\t\t\t\t\t{item.identityName}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</Padding>\n\t\t\t\t\t\t<Padding right=\"small\">\n\t\t\t\t\t\t\t<Text weight=\"regular\" size=\"small\" color=\"secondary\">\n\t\t\t\t\t\t\t\t({item.fromAddress})\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</Padding>\n\t\t\t\t\t</Container>\n\t\t\t\t\t<Container width=\"fit\" mainAlignment=\"flex-end\">\n\t\t\t\t\t\t<Text weight=\"regular\" size=\"small\">\n\t\t\t\t\t\t\t{item.type}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</Container>\n\t\t\t\t</Row>\n\n\t\t\t\t<Row width=\"fit\"></Row>\n\t\t\t</Container>\n\t\t\t<Divider />\n\t\t</>\n\t);\n\n\tconst createModal = useContext(ModalManagerContext);\n\n\tconst [createListrequestId, setCreateListrequestId] = useState(0);\n\tconst [createList, setCreateList] = useState<{ prefs: CreateIdentityProps }[]>([]);\n\tconst addNewPersona = useCallback(() => {\n\t\tconst newPersonaNextNumber =\n\t\t\tNumber(\n\t\t\t\tmax([\n\t\t\t\t\t...filter(\n\t\t\t\t\t\tmap(\n\t\t\t\t\t\t\tmap(\n\t\t\t\t\t\t\t\tfilter(identities, (item) => item.identityName?.includes('New Persona')),\n\t\t\t\t\t\t\t\t(item: IdentityProps) => item.identityName\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t(item: string) => parseFloat(item.replace('New Persona ', ''))\n\t\t\t\t\t\t),\n\t\t\t\t\t\t(item) => Number(item)\n\t\t\t\t\t)\n\t\t\t\t])\n\t\t\t) + 1;\n\t\tconst newPersonaName = `New Persona ${newPersonaNextNumber || 1}`;\n\t\tidentities.push({\n\t\t\tid: `${identities.length}`,\n\t\t\ttype: t('label.persona', 'Persona'),\n\t\t\tidentityId: createListrequestId,\n\t\t\tfromAddress: identities[0]?.fromAddress,\n\t\t\tidentityName: newPersonaName,\n\t\t\tfromDisplay: identities[0]?.fromDisplay,\n\t\t\treplyToDisplay: '',\n\t\t\treplyToAddress: '',\n\t\t\treplyToEnabled: 'FALSE',\n\t\t\tsaveToSent: '',\n\t\t\tsentMailFolder: '',\n\t\t\twhenInFoldersEnabled: '',\n\t\t\twhenSentToEnabled: ''\n\t\t});\n\t\tsetIdentities(identities);\n\t\tsetCreateListrequestId(createListrequestId + 1);\n\t\tsetCreateList((state) => {\n\t\t\tstate.push({\n\t\t\t\tprefs: {\n\t\t\t\t\trequestId: createListrequestId,\n\t\t\t\t\tzimbraPrefIdentityName: newPersonaName,\n\t\t\t\t\tzimbraPrefFromDisplay: identities[0]?.fromDisplay,\n\t\t\t\t\tzimbraPrefFromAddress: identities[0]?.fromAddress,\n\t\t\t\t\tzimbraPrefFromAddressType: 'sendAs',\n\t\t\t\t\tzimbraPrefReplyToEnabled: 'FALSE',\n\t\t\t\t\tzimbraPrefReplyToDisplay: '',\n\t\t\t\t\tzimbraPrefReplyToAddress: '',\n\t\t\t\t\tzimbraPrefDefaultSignatureId: '',\n\t\t\t\t\tzimbraPrefForwardReplySignatureId: '',\n\t\t\t\t\tzimbraPrefWhenSentToEnabled: 'FALSE',\n\t\t\t\t\tzimbraPrefWhenInFoldersEnabled: 'FALSE'\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn state;\n\t\t});\n\t\tcreateIdentities(createList);\n\t\tsetSelectedIdentityId(identities.length - 1);\n\t}, [\n\t\tidentities,\n\t\tsetIdentities,\n\t\tt,\n\t\tcreateIdentities,\n\t\tcreateListrequestId,\n\t\tcreateList,\n\t\tsetSelectedIdentityId\n\t]);\n\n\tconst [deleteList, setDeleteList] = useState<string[]>([]);\n\tconst onConfirmDelete = useCallback((): void => {\n\t\tconst newIdentities = map(\n\t\t\tfilter(\n\t\t\t\tidentities,\n\t\t\t\t(identity) => identity?.identityId !== identities[selectedIdentityId]?.identityId\n\t\t\t),\n\t\t\t(item: IdentityProps, index: number) => ({ ...item, id: index.toString() })\n\t\t);\n\t\tsetDeleteList((state) => {\n\t\t\tstate.push(identities[selectedIdentityId]?.identityId.toString());\n\t\t\treturn state;\n\t\t});\n\t\tsetIdentities(newIdentities);\n\t\tdeleteIdentities(deleteList);\n\t\tsetSelectedIdentityId(selectedIdentityId - 1);\n\t}, [\n\t\tidentities,\n\t\tsetIdentities,\n\t\tdeleteIdentities,\n\t\tdeleteList,\n\t\tsetSelectedIdentityId,\n\t\tselectedIdentityId\n\t]);\n\tconst onDelete = useCallback((): void => {\n\t\t// I'm disabling lint as the DS is not defining the type\n\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t// @ts-ignore\n\t\tconst closeModal = createModal({\n\t\t\ttitle: t('label.permanent_delete_title', 'Are you sure to permanently delete this Persona?'),\n\t\t\tonConfirm: () => {\n\t\t\t\tonConfirmDelete();\n\t\t\t\tcloseModal();\n\t\t\t},\n\t\t\tconfirmLabel: t('label.delete_permanently', 'Delete permanently'),\n\t\t\tconfirmColor: 'error',\n\t\t\tshowCloseIcon: true,\n\t\t\tonClose: () => closeModal(),\n\t\t\tchildren: (\n\t\t\t\t<Padding all=\"small\">\n\t\t\t\t\t<Text overflow=\"break-word\">\n\t\t\t\t\t\t{t(\n\t\t\t\t\t\t\t'messages.permanent_delete_body',\n\t\t\t\t\t\t\t'If you permanently delete this Persona you will not be able to recover it. Continue?'\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Text>\n\t\t\t\t</Padding>\n\t\t\t)\n\t\t});\n\t}, [createModal, t, onConfirmDelete]);\n\n\treturn (\n\t\t<>\n\t\t\t<Container\n\t\t\t\tminWidth=\"calc(min(100%, 512px))\"\n\t\t\t\twidth=\"fill\"\n\t\t\t\tpadding={{ all: 'large' }}\n\t\t\t\theight=\"fit\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t>\n\t\t\t\t<Padding horizontal=\"medium\" bottom=\"large\" width=\"100%\">\n\t\t\t\t\t<Text weight=\"bold\">{t('label.accounts_list', 'Accounts list')}</Text>\n\t\t\t\t</Padding>\n\t\t\t\t<List\n\t\t\t\t\titems={identities}\n\t\t\t\t\tItemComponent={ListItem}\n\t\t\t\t\tactive={identities[selectedIdentityId]?.id}\n\t\t\t\t\theight=\"fit\"\n\t\t\t\t\tselectedIdentityId={selectedIdentityId}\n\t\t\t\t\tsetSelectedIdentityId={setSelectedIdentityId}\n\t\t\t\t/>\n\t\t\t</Container>\n\t\t\t<Row\n\t\t\t\tpadding={{ horizontal: 'large', bottom: 'large' }}\n\t\t\t\twidth=\"fill\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t>\n\t\t\t\t<Padding right=\"small\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\tlabel={t('label.add_external_account', 'Add external account')}\n\t\t\t\t\t\t// onClick={(): void => setSelectedIdentity({ type: 'POP' })}\n\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\ttype=\"outlined\"\n\t\t\t\t\t\tdisabled\n\t\t\t\t\t/>\n\t\t\t\t</Padding>\n\t\t\t\t<Padding right=\"small\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\tlabel={t('label.add_persona', 'Add persona')}\n\t\t\t\t\t\tonClick={(): void => addNewPersona()}\n\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\ttype=\"outlined\"\n\t\t\t\t\t/>\n\t\t\t\t</Padding>\n\t\t\t\t<Button\n\t\t\t\t\tlabel={t('label.delete', 'Delete')}\n\t\t\t\t\tonClick={(): void => onDelete()}\n\t\t\t\t\tcolor=\"error\"\n\t\t\t\t\ttype=\"outlined\"\n\t\t\t\t\tdisabled={identities[selectedIdentityId]?.type === t('label.primary', 'Primary')}\n\t\t\t\t/>\n\t\t\t</Row>\n\t\t\t<Padding bottom=\"large\" />\n\t\t</>\n\t);\n};\n\nexport default AccountsList;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useMemo, useCallback, ReactElement, useState, useEffect } from 'react';\nimport { Container, Text, Padding, Input, Row } from '@zextras/carbonio-design-system';\nimport { TFunction } from 'i18next';\nimport { IdentityProps } from '../../../../types';\n\ninterface PrimaryAccountSettingsProps {\n\tt: TFunction;\n\titems: IdentityProps;\n\tupdateIdentities: (modifyList: {\n\t\tid: string | number;\n\t\tkey: string;\n\t\tvalue: string | boolean;\n\t}) => void;\n}\n\nconst PrimaryAccountSettings = ({\n\tt,\n\titems,\n\tupdateIdentities\n}: PrimaryAccountSettingsProps): ReactElement => {\n\tconst emailValue = useMemo(() => items?.fromAddress, [items]);\n\tconst emailLabel = useMemo(\n\t\t() => (emailValue ? '' : t('label.email_address', 'E-mail address')),\n\t\t[emailValue, t]\n\t);\n\tconst [accountNameValue, setAccountNameValue] = useState(items?.identityName);\n\n\tuseEffect(() => setAccountNameValue(items.identityName), [items.identityName]);\n\tconst accountLabel = useMemo(\n\t\t() => (accountNameValue ? '' : t('label.account_name', 'Account Name')),\n\t\t[accountNameValue, t]\n\t);\n\n\tconst onChangeDisabled = useCallback(() => null, []);\n\tconst onChange = useCallback(\n\t\t(\n\t\t\tev: MouseEvent & {\n\t\t\t\ttarget: HTMLButtonElement;\n\t\t\t}\n\t\t): void => {\n\t\t\tsetAccountNameValue(ev.target.value);\n\n\t\t\tconst modifyProp = {\n\t\t\t\tid: items.identityId,\n\t\t\t\tkey: 'zimbraPrefIdentityName',\n\t\t\t\tvalue: ev.target.value\n\t\t\t};\n\n\t\t\tupdateIdentities(modifyProp);\n\t\t},\n\t\t[updateIdentities, items.identityId]\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<Container\n\t\t\t\tminWidth=\"calc(min(100%, 512px))\"\n\t\t\t\twidth=\"fill\"\n\t\t\t\tpadding={{ all: 'large' }}\n\t\t\t\theight=\"fit\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t>\n\t\t\t\t<Padding horizontal=\"medium\" width=\"100%\">\n\t\t\t\t\t<Text weight=\"bold\">{t('primary_account.title', 'Primary Account Settings')}</Text>\n\t\t\t\t</Padding>\n\t\t\t</Container>\n\t\t\t<Row\n\t\t\t\twidth=\"fill\"\n\t\t\t\tpadding={{ horizontal: 'large', bottom: 'large' }}\n\t\t\t\theight=\"fit\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t>\n\t\t\t\t<Row width=\"50%\" padding={{ right: 'small' }}>\n\t\t\t\t\t<Input\n\t\t\t\t\t\tlabel={emailLabel}\n\t\t\t\t\t\tvalue={emailValue || ' '}\n\t\t\t\t\t\tbackground=\"gray5\"\n\t\t\t\t\t\tonChange={onChangeDisabled}\n\t\t\t\t\t/>\n\t\t\t\t</Row>\n\t\t\t\t<Row width=\"50%\">\n\t\t\t\t\t<Input\n\t\t\t\t\t\tlabel={accountLabel}\n\t\t\t\t\t\tvalue={accountNameValue || ' '}\n\t\t\t\t\t\tbackground=\"gray5\"\n\t\t\t\t\t\tonChange={(\n\t\t\t\t\t\t\tev: MouseEvent & {\n\t\t\t\t\t\t\t\ttarget: HTMLButtonElement;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t): void => onChange(ev)}\n\t\t\t\t\t/>\n\t\t\t\t</Row>\n\t\t\t</Row>\n\t\t\t<Padding bottom=\"large\" />\n\t\t</>\n\t);\n};\n\nexport default PrimaryAccountSettings;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useMemo, useCallback, ReactElement, useState, useEffect } from 'react';\nimport {\n\tContainer,\n\tText,\n\tPadding,\n\tInput,\n\tRow,\n\tSelect,\n\tCheckbox,\n\tDropdown,\n\tIcon\n} from '@zextras/carbonio-design-system';\nimport { TFunction } from 'i18next';\nimport { filter, find } from 'lodash';\nimport { IdentityProps, Mods } from '../../../../types';\nimport { EMAIL_VALIDATION_REGEX } from '../../../constants';\n\ntype SettingsSentMessagesProps = {\n\tt: TFunction;\n\titems: IdentityProps;\n\tisExternalAccount: boolean;\n\tupdateIdentities: (modifyList: {\n\t\tid: string | number;\n\t\tkey: string;\n\t\tvalue: string | boolean;\n\t}) => void;\n};\n\nconst SettingsSentMessages = ({\n\tt,\n\titems,\n\tisExternalAccount,\n\tupdateIdentities\n}: SettingsSentMessagesProps): ReactElement => {\n\tconst title = useMemo(() => t('label.settings_sent_messages', 'Settings for Sent Messages'), [t]);\n\tconst [replyToEnabledValue, setReplyToEnabledValue] = useState(items.replyToEnabled === 'TRUE');\n\tconst [replyToAddress, setReplyToAddress] = useState(items.replyToAddress);\n\tconst [dropdownOpen, setDropdownOpen] = useState(false);\n\tconst [fromDisplayValue, setFromDisplayValue] = useState(items.fromDisplay);\n\tconst [replyToDisplay, setReplyToDisplay] = useState(items?.replyToDisplay);\n\tconst fromAddressArray = useMemo(\n\t\t() => [{ value: items.fromAddress, label: items.fromAddress }],\n\t\t[items?.fromAddress]\n\t);\n\tconst [fromAddress, setFromAddress] = useState(() =>\n\t\tfind(fromAddressArray, (item) => item.value === items.fromAddress)\n\t);\n\n\tuseEffect(() => {\n\t\tsetReplyToEnabledValue(items.replyToEnabled === 'TRUE');\n\t}, [items.replyToEnabled]);\n\tuseEffect(() => {\n\t\tsetFromDisplayValue(items.fromDisplay);\n\t}, [items.fromDisplay]);\n\tuseEffect(() => {\n\t\tconst k = find(fromAddressArray, (item) => item.value === items.fromAddress);\n\t\tsetFromAddress(k);\n\t}, [fromAddressArray, items.fromAddress]);\n\tuseEffect(() => {\n\t\tsetReplyToDisplay(items?.replyToDisplay === undefined ? '' : items?.replyToDisplay);\n\t}, [items?.replyToDisplay]);\n\tuseEffect(() => {\n\t\tsetReplyToAddress(items.replyToAddress);\n\t}, [items.replyToAddress]);\n\n\tconst onClickReplyToEnabled = useCallback(() => {\n\t\tsetReplyToEnabledValue(!replyToEnabledValue);\n\t\tconst modifyProp = {\n\t\t\tid: items.identityId,\n\t\t\tkey: 'zimbraPrefReplyToEnabled',\n\t\t\tvalue: replyToEnabledValue ? 'FALSE' : 'TRUE'\n\t\t};\n\t\tupdateIdentities(modifyProp);\n\t}, [items.identityId, replyToEnabledValue, updateIdentities]);\n\n\tconst fromDisplayLabel = useMemo(\n\t\t() => (fromDisplayValue ? '' : t('label.from_name', 'From: \"Name\"')),\n\t\t[t, fromDisplayValue]\n\t);\n\tconst onChangeFromDisplayValue = (\n\t\tev: MouseEvent & {\n\t\t\ttarget: HTMLButtonElement;\n\t\t}\n\t): void => {\n\t\tsetFromDisplayValue(ev.target.value);\n\t\tconst modifyProp = {\n\t\t\tid: items.identityId,\n\t\t\tkey: 'zimbraPrefFromDisplay',\n\t\t\tvalue: ev.target.value\n\t\t};\n\t\tupdateIdentities(modifyProp);\n\t};\n\n\tconst fromAddressLabel = useMemo(\n\t\t() => (fromAddress ? '' : t('label.address', 'Address')),\n\t\t[fromAddress, t]\n\t);\n\n\tconst onChangeFromAddress = useCallback(\n\t\t(newVal) => {\n\t\t\tsetFromAddress(filter(fromAddressArray, (item) => item.value === newVal)[0]);\n\t\t\tconst modifyProp = {\n\t\t\t\tid: items.identityId,\n\t\t\t\tkey: 'zimbraPrefFromAddress',\n\t\t\t\tvalue: newVal\n\t\t\t};\n\t\t\tupdateIdentities(modifyProp);\n\t\t},\n\t\t[items.identityId, updateIdentities, fromAddressArray]\n\t);\n\n\tconst replyToEnabledLabel = useMemo(\n\t\t() => t('label.set_reply_to_field', 'Set the \"Reply-to\" field of e-mail message to:'),\n\t\t[t]\n\t);\n\n\tconst replyToDisplayLabel = useMemo(\n\t\t() => (replyToDisplay ? '' : t('label.reply_to_field_example', 'e.g. Bob Smith')),\n\t\t[t, replyToDisplay]\n\t);\n\tconst onChangePrefReplyToDisplay = useCallback(\n\t\t(\n\t\t\tev: MouseEvent & {\n\t\t\t\ttarget: HTMLButtonElement;\n\t\t\t}\n\t\t): void => {\n\t\t\tsetReplyToDisplay(ev.target.value);\n\t\t\tconst modifyProp = {\n\t\t\t\tid: items.identityId,\n\t\t\t\tkey: 'zimbraPrefReplyToDisplay',\n\t\t\t\tvalue: ev.target.value\n\t\t\t};\n\t\t\tupdateIdentities(modifyProp);\n\t\t},\n\t\t[updateIdentities, items.identityId]\n\t);\n\n\tconst replyToAddressLabel = useMemo(\n\t\t() => (replyToAddress ? '' : t('label.choose_account', 'Choose an account')),\n\t\t[t, replyToAddress]\n\t);\n\n\tconst replyToAddressArray = useMemo(\n\t\t() => [\n\t\t\t{\n\t\t\t\tid: '0',\n\t\t\t\tlabel: items.fromAddress,\n\t\t\t\tclick: (ev: MouseEvent & { target: string & { textContent: string } }): void => {\n\t\t\t\t\tsetReplyToAddress(ev.target.textContent);\n\t\t\t\t\tconst modifyProp = {\n\t\t\t\t\t\tid: items.identityId,\n\t\t\t\t\t\tkey: 'zimbraPrefReplyToAddress',\n\t\t\t\t\t\tvalue: ev.target.textContent\n\t\t\t\t\t};\n\t\t\t\t\tupdateIdentities(modifyProp);\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\t[items.fromAddress, items.identityId, updateIdentities]\n\t);\n\n\tconst onChangeReplyToAddress = useCallback(\n\t\t(ev) => {\n\t\t\tsetReplyToAddress(ev.target.value);\n\t\t\tconst modifyProp = {\n\t\t\t\tid: items.identityId,\n\t\t\t\tkey: 'zimbraPrefReplyToAddress',\n\t\t\t\tvalue: ev.target.value\n\t\t\t};\n\t\t\tupdateIdentities(modifyProp);\n\t\t},\n\t\t[updateIdentities, items.identityId]\n\t);\n\n\tconst isValidEmail = useMemo(\n\t\t() => replyToEnabledValue && !EMAIL_VALIDATION_REGEX.test(replyToAddress || ''),\n\t\t[replyToEnabledValue, replyToAddress]\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<Container\n\t\t\t\tminWidth=\"calc(min(100%, 512px))\"\n\t\t\t\twidth=\"fill\"\n\t\t\t\tpadding={{ all: 'large' }}\n\t\t\t\theight=\"fit\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t>\n\t\t\t\t<Padding horizontal=\"medium\" width=\"100%\">\n\t\t\t\t\t<Text weight=\"bold\">{title}</Text>\n\t\t\t\t</Padding>\n\t\t\t</Container>\n\t\t\t<Row\n\t\t\t\twidth=\"fill\"\n\t\t\t\tpadding={{ horizontal: 'large', bottom: 'large' }}\n\t\t\t\theight=\"fit\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t>\n\t\t\t\t<Row\n\t\t\t\t\twidth={isExternalAccount ? '100%' : '50%'}\n\t\t\t\t\tpadding={{ right: isExternalAccount ? '' : 'small' }}\n\t\t\t\t>\n\t\t\t\t\t<Input\n\t\t\t\t\t\tlabel={fromDisplayLabel}\n\t\t\t\t\t\tvalue={fromDisplayValue}\n\t\t\t\t\t\tonChange={(\n\t\t\t\t\t\t\tev: MouseEvent & {\n\t\t\t\t\t\t\t\ttarget: HTMLButtonElement;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t): void => onChangeFromDisplayValue(ev)}\n\t\t\t\t\t\tbackground=\"gray5\"\n\t\t\t\t\t/>\n\t\t\t\t</Row>\n\t\t\t\t{!isExternalAccount && (\n\t\t\t\t\t<Row width=\"50%\">\n\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\tlabel={fromAddressLabel}\n\t\t\t\t\t\t\tselection={fromAddress}\n\t\t\t\t\t\t\titems={fromAddressArray}\n\t\t\t\t\t\t\tshowCheckbox={false}\n\t\t\t\t\t\t\tbackground=\"gray5\"\n\t\t\t\t\t\t\tonChange={(): unknown => onChangeFromAddress}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Row>\n\t\t\t\t)}\n\t\t\t</Row>\n\t\t\t<Row\n\t\t\t\twidth=\"fill\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t\tpadding={{ horizontal: 'large', bottom: 'large' }}\n\t\t\t>\n\t\t\t\t<Checkbox\n\t\t\t\t\tlabel={replyToEnabledLabel}\n\t\t\t\t\tvalue={replyToEnabledValue}\n\t\t\t\t\tonClick={(): void => onClickReplyToEnabled()}\n\t\t\t\t/>\n\t\t\t</Row>\n\t\t\t<Row\n\t\t\t\twidth=\"fill\"\n\t\t\t\tpadding={{ horizontal: 'large', bottom: 'large' }}\n\t\t\t\theight=\"fit\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t>\n\t\t\t\t<Row width=\"50%\" padding={{ right: 'small' }}>\n\t\t\t\t\t<Input\n\t\t\t\t\t\tlabel={replyToDisplayLabel}\n\t\t\t\t\t\tvalue={replyToDisplay}\n\t\t\t\t\t\tbackground=\"gray5\"\n\t\t\t\t\t\tdisabled={!replyToEnabledValue}\n\t\t\t\t\t\tonChange={(\n\t\t\t\t\t\t\tev: MouseEvent & {\n\t\t\t\t\t\t\t\ttarget: HTMLButtonElement;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t): void => onChangePrefReplyToDisplay(ev)}\n\t\t\t\t\t/>\n\t\t\t\t</Row>\n\t\t\t\t<Row width=\"50%\">\n\t\t\t\t\t<Dropdown\n\t\t\t\t\t\titems={replyToAddressArray}\n\t\t\t\t\t\tplacement=\"bottom-start\"\n\t\t\t\t\t\tstyle={{ flexGrow: '1' }}\n\t\t\t\t\t\tonClose={(): void => setDropdownOpen(false)}\n\t\t\t\t\t\tonOpen={(): void => setDropdownOpen(true)}\n\t\t\t\t\t\tdisabled={!replyToEnabledValue}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\tlabel={replyToAddressLabel}\n\t\t\t\t\t\t\tvalue={replyToAddress}\n\t\t\t\t\t\t\tonChange={(\n\t\t\t\t\t\t\t\tev: MouseEvent & {\n\t\t\t\t\t\t\t\t\ttarget: HTMLButtonElement;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t): void => onChangeReplyToAddress(ev)}\n\t\t\t\t\t\t\tbackground=\"gray5\"\n\t\t\t\t\t\t\thasError={isValidEmail}\n\t\t\t\t\t\t\tCustomIcon={(): ReactElement => (\n\t\t\t\t\t\t\t\t<Icon icon={dropdownOpen ? 'ArrowUp' : 'ArrowDown'} />\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\tdisabled={!replyToEnabledValue}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Dropdown>\n\t\t\t\t</Row>\n\t\t\t</Row>\n\t\t\t<Padding bottom=\"large\" />\n\t\t</>\n\t);\n};\n\nexport default SettingsSentMessages;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useMemo, useCallback, ReactElement, useState } from 'react';\nimport {\n\tContainer,\n\tText,\n\tPadding,\n\tInput,\n\tRow,\n\tButton,\n\tDivider\n} from '@zextras/carbonio-design-system';\nimport { TFunction } from 'i18next';\nimport { SHELL_APP_ID, EMAIL_VALIDATION_REGEX } from '../../../constants';\nimport { IdentityProps } from '../../../../types';\nimport { useAccountStore } from '../../../store/account/store';\n\ninterface PasswordRecoverySettingsProps {\n\tt: TFunction;\n\titems: IdentityProps;\n\tcreateSnackbar: (arg: {\n\t\tkey: string;\n\t\treplace: boolean;\n\t\ttype: string;\n\t\tlabel: string;\n\t\tautoHideTimeout: number;\n\t\thideButton: boolean;\n\t}) => void;\n}\nconst PasswordRecoverySettings = ({\n\tt,\n\titems,\n\tcreateSnackbar\n}: PasswordRecoverySettingsProps): ReactElement => {\n\tconst title = useMemo(\n\t\t() => t('label.passwords_recovery_settings', 'Password Recovery Account Settings'),\n\t\t[t]\n\t);\n\n\tconst recoveryEmail = useMemo(\n\t\t() => items.recoveryAccount || t('label.no_results', 'No results found'),\n\t\t[t, items.recoveryAccount]\n\t);\n\tconst [emailValue, setEmailValue] = useState('');\n\tconst [isValidEmail, setIsValidEmail] = useState(false);\n\tconst inputLabel = useMemo(\n\t\t() => (emailValue ? '' : t('label.add_new_email', 'Add new e-mail address')),\n\t\t[emailValue, t]\n\t);\n\n\tconst onChange = useCallback(\n\t\t(\n\t\t\tev: MouseEvent & {\n\t\t\t\ttarget: HTMLButtonElement;\n\t\t\t}\n\t\t): void => {\n\t\t\tsetEmailValue(ev.target.value);\n\t\t\tsetIsValidEmail(EMAIL_VALIDATION_REGEX.test(ev.target.value));\n\t\t},\n\t\t[setEmailValue, setIsValidEmail]\n\t);\n\n\tconst onSubmit = useCallback(() => {\n\t\tuseAccountStore\n\t\t\t.getState()\n\t\t\t.xmlSoapFetch(SHELL_APP_ID)(\n\t\t\t\t'SetRecoveryAccount',\n\t\t\t\t`<SetRecoveryAccountRequest xmlns=\"urn:zimbraMail\" op=\"sendCode\" recoveryAccount=\"${emailValue}\"/>`\n\t\t\t)\n\t\t\t.catch(() => {\n\t\t\t\tcreateSnackbar({\n\t\t\t\t\tkey: `new`,\n\t\t\t\t\treplace: true,\n\t\t\t\t\ttype: 'error',\n\t\t\t\t\tlabel: t('snackbar.error', 'Something went wrong, please try again'),\n\t\t\t\t\tautoHideTimeout: 3000,\n\t\t\t\t\thideButton: true\n\t\t\t\t});\n\t\t\t});\n\t}, [createSnackbar, emailValue, t]);\n\n\treturn (\n\t\t<>\n\t\t\t<Container\n\t\t\t\tminWidth=\"calc(min(100%, 512px))\"\n\t\t\t\twidth=\"fill\"\n\t\t\t\tpadding={{ all: 'large' }}\n\t\t\t\theight=\"fit\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t>\n\t\t\t\t<Padding horizontal=\"medium\" width=\"100%\">\n\t\t\t\t\t<Text weight=\"bold\">{title} </Text>\n\t\t\t\t</Padding>\n\t\t\t</Container>\n\t\t\t<Row\n\t\t\t\twidth=\"fill\"\n\t\t\t\tpadding={{ horizontal: 'large', bottom: 'large' }}\n\t\t\t\theight=\"fit\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t>\n\t\t\t\t<Row width=\"fill\" padding={{ bottom: 'medium' }}>\n\t\t\t\t\t<Text background=\"gray6\" color=\"secondary\">\n\t\t\t\t\t\t{recoveryEmail}\n\t\t\t\t\t</Text>\n\t\t\t\t</Row>\n\t\t\t\t<Divider />\n\t\t\t</Row>\n\t\t\t<Row\n\t\t\t\twidth=\"fill\"\n\t\t\t\tpadding={{ horizontal: 'large', bottom: 'large' }}\n\t\t\t\theight=\"fit\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t>\n\t\t\t\t<Row takeAvailableSpace padding={{ right: 'small' }}>\n\t\t\t\t\t<Input\n\t\t\t\t\t\tlabel={inputLabel}\n\t\t\t\t\t\tvalue={emailValue}\n\t\t\t\t\t\tbackground=\"gray5\"\n\t\t\t\t\t\tonChange={onChange}\n\t\t\t\t\t\thasError={emailValue !== '' && !isValidEmail}\n\t\t\t\t\t/>\n\t\t\t\t</Row>\n\t\t\t\t<Row width=\"fit\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\tlabel={t('label.add_recovery_email', 'Add recovery e-mail')}\n\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\ttype=\"outlined\"\n\t\t\t\t\t\tdisabled={!isValidEmail}\n\t\t\t\t\t\tonClick={onSubmit}\n\t\t\t\t\t/>\n\t\t\t\t</Row>\n\t\t\t</Row>\n\n\t\t\t<Padding bottom=\"large\" />\n\t\t</>\n\t);\n};\n\nexport default PasswordRecoverySettings;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { ReactElement, useState } from 'react';\nimport {\n\tContainer,\n\tText,\n\tList,\n\tDivider,\n\tRow,\n\tPadding,\n\tButton,\n\tRadio,\n\tRadioGroup\n} from '@zextras/carbonio-design-system';\nimport { TFunction } from 'i18next';\n\ntype DelegatesProps = {\n\tt: TFunction;\n\titems: { email: string; right: string; id: string }[];\n\tactiveDelegateView: string;\n\tsetActiveDelegateView: (value: string) => void;\n};\n\ntype ListItemProps = {\n\tactive: string;\n\titem: { id: string; label: string; email: string; right: string };\n\tselected: boolean;\n\tsetSelected: () => void;\n\tbackground: string;\n\tselectedBackground: string;\n\tactiveBackground: string;\n};\n\nconst Delegates = ({\n\tt,\n\titems,\n\tactiveDelegateView,\n\tsetActiveDelegateView\n}: DelegatesProps): ReactElement => {\n\tconst [activeValue, setActiveValue] = useState('1');\n\n\tconst changeView = (value: string): void => setActiveDelegateView(value);\n\n\tconst ListItem = ({ item }: ListItemProps): ReactElement => (\n\t\t<>\n\t\t\t<Container\n\t\t\t\tonClick={(): void => changeView(item.id)}\n\t\t\t\torientation=\"horizontal\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t\tpadding={{ all: 'small' }}\n\t\t\t>\n\t\t\t\t<Row width=\"fill\" mainAlignment=\"space-between\">\n\t\t\t\t\t<Container orientation=\"horizontal\" mainAlignment=\"flex-start\" width=\"fit\">\n\t\t\t\t\t\t<Padding right=\"small\">\n\t\t\t\t\t\t\t<Text weight=\"regular\" size=\"small\">\n\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</Padding>\n\t\t\t\t\t\t<Padding right=\"small\">\n\t\t\t\t\t\t\t<Text weight=\"regular\" size=\"small\" color=\"secondary\">\n\t\t\t\t\t\t\t\t{item.email}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</Padding>\n\t\t\t\t\t</Container>\n\t\t\t\t\t<Container width=\"fit\" mainAlignment=\"flex-end\">\n\t\t\t\t\t\t<Text weight=\"regular\" size=\"small\">\n\t\t\t\t\t\t\t{item.right}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</Container>\n\t\t\t\t</Row>\n\n\t\t\t\t<Row width=\"fit\"></Row>\n\t\t\t</Container>\n\t\t\t<Divider />\n\t\t</>\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<Container\n\t\t\t\tminWidth=\"calc(min(100%, 512px))\"\n\t\t\t\twidth=\"fill\"\n\t\t\t\tpadding={{ all: 'large' }}\n\t\t\t\theight=\"fit\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t>\n\t\t\t\t<Padding horizontal=\"medium\" bottom=\"large\" width=\"100%\">\n\t\t\t\t\t<Text weight=\"bold\">{t('label.delegates', 'Delegates')}</Text>\n\t\t\t\t</Padding>\n\t\t\t\t<List\n\t\t\t\t\titems={items}\n\t\t\t\t\tItemComponent={ListItem}\n\t\t\t\t\tactive={activeDelegateView}\n\t\t\t\t\theight=\"fit\"\n\t\t\t\t\tactiveView={activeDelegateView}\n\t\t\t\t\tsetActiveView={setActiveDelegateView}\n\t\t\t\t/>\n\t\t\t</Container>\n\t\t\t<Row\n\t\t\t\tpadding={{ horizontal: 'large' }}\n\t\t\t\twidth=\"fill\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t>\n\t\t\t\t<Padding right=\"small\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\tlabel={t('label.add_delegate', 'Add delegate')}\n\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\ttype=\"outlined\"\n\t\t\t\t\t\tdisabled\n\t\t\t\t\t/>\n\t\t\t\t</Padding>\n\t\t\t\t<Padding right=\"small\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\tlabel={t('label.edit_permissions', 'Edit permissions')}\n\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\ttype=\"outlined\"\n\t\t\t\t\t\tdisabled\n\t\t\t\t\t/>\n\t\t\t\t</Padding>\n\t\t\t\t<Button label={t('label.remove', 'remove')} color=\"error\" type=\"outlined\" disabled />\n\t\t\t</Row>\n\t\t\t<Container\n\t\t\t\tminWidth=\"calc(min(100%, 512px))\"\n\t\t\t\twidth=\"100%\"\n\t\t\t\tpadding={{ all: 'large' }}\n\t\t\t\theight=\"fit\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t>\n\t\t\t\t<RadioGroup\n\t\t\t\t\tstyle={{ width: '100%' }}\n\t\t\t\t\tvalue={activeValue}\n\t\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t\t\tonChange={(newValue: string): void => setActiveValue(newValue)}\n\t\t\t\t>\n\t\t\t\t\t<Radio\n\t\t\t\t\t\twidth=\"100%\"\n\t\t\t\t\t\tlabel={t(\n\t\t\t\t\t\t\t'label.save_to_my_sent_folder',\n\t\t\t\t\t\t\t'Save a copy of sent messages to my Sent folder'\n\t\t\t\t\t\t)}\n\t\t\t\t\t\tvalue=\"1\"\n\t\t\t\t\t/>\n\t\t\t\t\t<Radio\n\t\t\t\t\t\tlabel={t(\n\t\t\t\t\t\t\t'label.save_delegate_folder',\n\t\t\t\t\t\t\t'Save a copy of sent messages to delegate’s Sent folder'\n\t\t\t\t\t\t)}\n\t\t\t\t\t\tvalue=\"2\"\n\t\t\t\t\t/>\n\t\t\t\t\t<Radio\n\t\t\t\t\t\tlabel={t(\n\t\t\t\t\t\t\t'label.save_both_folders',\n\t\t\t\t\t\t\t'Save a copy of sent messages to my Sent folder and delegate’s folder'\n\t\t\t\t\t\t)}\n\t\t\t\t\t\tvalue=\"3\"\n\t\t\t\t\t/>\n\t\t\t\t\t<Radio label={t('label.dont_save', 'Don’t save a copy of sent messages')} value=\"4\" />\n\t\t\t\t</RadioGroup>\n\t\t\t\t<Padding bottom=\"large\" />\n\t\t\t</Container>\n\t\t</>\n\t);\n};\n\nexport default Delegates;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useState, useCallback, ReactElement, useEffect, useMemo } from 'react';\nimport { Container, Text, Padding, Input, Row } from '@zextras/carbonio-design-system';\nimport { TFunction } from 'i18next';\nimport { IdentityProps } from '../../../../types';\n\ninterface PersonaSettingsProps {\n\tt: TFunction;\n\titems: IdentityProps;\n\tupdateIdentities: (modifyList: {\n\t\tid: string | number;\n\t\tkey: string;\n\t\tvalue: string | boolean;\n\t}) => void;\n}\n\nconst PersonaSettings = ({ t, items, updateIdentities }: PersonaSettingsProps): ReactElement => {\n\tconst [personaValue, setPersonaValue] = useState(items.identityName);\n\tconst personaLabel = useMemo(\n\t\t() => (personaValue ? '' : t('label.persona_name', 'Persona Name')),\n\t\t[personaValue, t]\n\t);\n\tuseEffect(() => {\n\t\tsetPersonaValue(items.identityName);\n\t}, [items.identityName]);\n\n\tconst onChange = useCallback(\n\t\t(ev) => {\n\t\t\tsetPersonaValue(ev.target.value);\n\t\t\tconst modifyProp = {\n\t\t\t\tid: items.identityId,\n\t\t\t\tkey: 'zimbraPrefIdentityName',\n\t\t\t\tvalue: ev.target.value\n\t\t\t};\n\n\t\t\tupdateIdentities(modifyProp);\n\t\t},\n\t\t[updateIdentities, items.identityId, setPersonaValue]\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<Container\n\t\t\t\tminWidth=\"calc(min(100%, 512px))\"\n\t\t\t\twidth=\"fill\"\n\t\t\t\tpadding={{ all: 'large' }}\n\t\t\t\theight=\"fit\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t>\n\t\t\t\t<Padding horizontal=\"medium\" width=\"100%\">\n\t\t\t\t\t<Text weight=\"bold\">{t('label.persona_settings', 'Persona Settings')}</Text>\n\t\t\t\t</Padding>\n\t\t\t</Container>\n\t\t\t<Row\n\t\t\t\twidth=\"fill\"\n\t\t\t\tpadding={{ horizontal: 'large', bottom: 'large' }}\n\t\t\t\theight=\"fit\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t>\n\t\t\t\t<Row orientation=\"vertical\" mainAlignment=\"flex-start\" width=\"fill\">\n\t\t\t\t\t<Row orientation=\"horizontal\" width=\"100%\" mainAlignment=\"flex-start\">\n\t\t\t\t\t\t<Text background=\"gray6\" color=\"secondary\" width=\"fill\">\n\t\t\t\t\t\t\t{t(\n\t\t\t\t\t\t\t\t'label.use_personas_line1',\n\t\t\t\t\t\t\t\t'Use personas to quickly change many settings when sending e-mail messages.'\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</Row>\n\t\t\t\t\t<Row orientation=\"horizontal\" width=\"100%\" mainAlignment=\"flex-start\">\n\t\t\t\t\t\t<Text background=\"gray6\" color=\"secondary\">\n\t\t\t\t\t\t\t{t(\n\t\t\t\t\t\t\t\t'label.use_personas_line2',\n\t\t\t\t\t\t\t\t'For example, if you sometimes send e-mails in a particular role at work, create a persona for that.'\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</Row>\n\t\t\t\t</Row>\n\t\t\t</Row>\n\t\t\t<Row\n\t\t\t\twidth=\"fill\"\n\t\t\t\tpadding={{ horizontal: 'large', bottom: 'large' }}\n\t\t\t\theight=\"fit\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t>\n\t\t\t\t<Row takeAvailableSpace>\n\t\t\t\t\t<Input label={personaLabel} value={personaValue} background=\"gray5\" onChange={onChange} />\n\t\t\t\t</Row>\n\t\t\t</Row>\n\n\t\t\t<Padding bottom=\"large\" />\n\t\t</>\n\t);\n};\n\nexport default PersonaSettings;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useMemo, useEffect, ReactElement, useState, useCallback } from 'react';\nimport { Container, Text, Padding, Input, Row, Checkbox } from '@zextras/carbonio-design-system';\nimport { TFunction } from 'i18next';\nimport { IdentityProps } from '../../../../types';\nimport { EMAIL_VALIDATION_REGEX } from '../../../constants';\n\ntype PersonaUseSectionProps = {\n\tt: TFunction;\n\titems: IdentityProps;\n\tupdateIdentities: (modifyList: {\n\t\tid: string | number;\n\t\tkey: string;\n\t\tvalue: string | boolean;\n\t}) => void;\n};\n\nconst PersonaUseSection = ({\n\tt,\n\titems,\n\tupdateIdentities\n}: PersonaUseSectionProps): ReactElement => {\n\tconst title = useMemo(() => t('label.use_persona', 'Use this persona'), [t]);\n\tconst whenSentToLabel = useMemo(\n\t\t() => t('label.when_replying', 'When replying or forwarding messages sent to:'),\n\t\t[t]\n\t);\n\t// this code is work in progress for when the mails sync is implemented\n\t// const [open, setOpen] = useState(false);\n\t// const onClose = useCallback(() => setOpen(false), []);\n\n\tconst [whenInFoldersEnabled, setWhenInFoldersEnabled] = useState(\n\t\titems.whenInFoldersEnabled === 'TRUE'\n\t);\n\tconst [whenSentToEnabled, setWhenSentToEnabled] = useState(items.whenSentToEnabled === 'TRUE');\n\tconst [whenSentToAddresses, setWhenSentToAddresses] = useState(items.whenSentToAddresses);\n\n\tuseEffect(() => {\n\t\tsetWhenSentToEnabled(items.whenSentToEnabled === 'TRUE');\n\t}, [items.whenSentToEnabled]);\n\tuseEffect(() => {\n\t\tsetWhenSentToAddresses(items.whenSentToAddresses);\n\t}, [items.whenSentToAddresses]);\n\tuseEffect(() => {\n\t\tsetWhenInFoldersEnabled(items.whenInFoldersEnabled === 'TRUE');\n\t}, [items.whenInFoldersEnabled]);\n\n\tconst whenSentToAddressesLabel = useMemo(\n\t\t() => (whenSentToAddresses ? '' : t('label.recipents', 'Recipients')),\n\t\t[t, whenSentToAddresses]\n\t);\n\tconst onClickWhenSentToEnabled = useCallback(() => {\n\t\tsetWhenSentToEnabled(!whenSentToEnabled);\n\t\tconst modifyProp = {\n\t\t\tid: items.identityId,\n\t\t\tkey: 'zimbraPrefWhenSentToEnabled',\n\t\t\tvalue: whenSentToEnabled ? 'FALSE' : 'TRUE'\n\t\t};\n\t\tupdateIdentities(modifyProp);\n\t}, [items.identityId, updateIdentities, whenSentToEnabled]);\n\n\tconst isValidEmail = useMemo(\n\t\t() => whenSentToEnabled && !EMAIL_VALIDATION_REGEX.test(whenSentToAddresses || ''),\n\t\t[whenSentToAddresses, whenSentToEnabled]\n\t);\n\n\tconst onChangeWhenSentToAddresses = useCallback(\n\t\t(ev) => {\n\t\t\tsetWhenSentToAddresses(ev.target.value);\n\t\t\tconst modifyProp = {\n\t\t\t\tid: items.identityId,\n\t\t\t\tkey: 'zimbraPrefWhenSentToAddresses',\n\t\t\t\tvalue: ev.target.value\n\t\t\t};\n\n\t\t\tupdateIdentities(modifyProp);\n\t\t},\n\t\t[updateIdentities, items.identityId]\n\t);\n\n\t// this function is work in progress for when the mails sync is implemented\n\t// const onClickWhenInFoldersEnabled = useCallback(() => {\n\t// \tsetWhenInFoldersEnabled(!whenInFoldersEnabled);\n\t// \tif (!whenInFoldersEnabled === (items.whenInFoldersEnabled === 'TRUE')) {\n\t// \t\tsetMods({});\n\t// \t} else {\n\t// \t\tupdateIdentities(\n\t// \t\t\titems.identityId,\n\t// \t\t\t'zimbraPrefWhenInFoldersEnabled',\n\t// \t\t\titems.whenInFoldersEnabled ? 'TRUE' : 'FALSE'\n\t// \t\t);\n\t// \t}\n\t// }, [\n\t// \titems.whenInFoldersEnabled,\n\t// \twhenInFoldersEnabled,\n\t// \tsetMods,\n\t// \tupdateIdentities,\n\t// \titems.identityId\n\t// ]);\n\t// const modalProps = useMemo(\n\t// \t() => ({\n\t// \t\topen,\n\t// \t\tonClose,\n\t// \t\tsetFolder,\n\t// \t\tt\n\t// \t}),\n\t// \t[open, onClose, setFolder, t]\n\t// );\n\n\treturn (\n\t\t<>\n\t\t\t<Container\n\t\t\t\tminWidth=\"calc(min(100%, 512px))\"\n\t\t\t\twidth=\"fill\"\n\t\t\t\tpadding={{ all: 'large' }}\n\t\t\t\theight=\"fit\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t>\n\t\t\t\t<Padding horizontal=\"medium\" width=\"100%\">\n\t\t\t\t\t<Text weight=\"bold\">{title}</Text>\n\t\t\t\t</Padding>\n\t\t\t</Container>\n\t\t\t<Row\n\t\t\t\twidth=\"fill\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t\tpadding={{ horizontal: 'large', bottom: 'large' }}\n\t\t\t>\n\t\t\t\t<Checkbox\n\t\t\t\t\tlabel={whenSentToLabel}\n\t\t\t\t\tvalue={whenSentToEnabled}\n\t\t\t\t\tonClick={onClickWhenSentToEnabled}\n\t\t\t\t/>\n\t\t\t</Row>\n\t\t\t<Row\n\t\t\t\twidth=\"fill\"\n\t\t\t\tpadding={{ horizontal: 'large', bottom: 'large' }}\n\t\t\t\theight=\"fit\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t>\n\t\t\t\t<Row width=\"50%\" padding={{ right: 'small' }}>\n\t\t\t\t\t<Input\n\t\t\t\t\t\tlabel={whenSentToAddressesLabel}\n\t\t\t\t\t\tvalue={whenSentToAddresses}\n\t\t\t\t\t\tbackground=\"gray5\"\n\t\t\t\t\t\tdisabled={!whenSentToEnabled}\n\t\t\t\t\t\thasError={isValidEmail}\n\t\t\t\t\t\tonChange={(\n\t\t\t\t\t\t\tev: MouseEvent & {\n\t\t\t\t\t\t\t\ttarget: HTMLButtonElement;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t): void => onChangeWhenSentToAddresses(ev)}\n\t\t\t\t\t/>\n\t\t\t\t</Row>\n\t\t\t</Row>\n\t\t\t{/* <Row\n\t\t\t\twidth=\"fill\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t\tpadding={{ horizontal: 'large', bottom: 'large' }}\n\t\t\t>\n\t\t\t\t<Checkbox\n\t\t\t\t\tlabel={t(\n\t\t\t\t\t\t'label.when_composing',\n\t\t\t\t\t\t'When composing, replying to or forwarding messages in folder(s):'\n\t\t\t\t\t)}\n\t\t\t\t\tvalue={whenInFoldersEnabled}\n\t\t\t\t\tonClick={(): void => onClickWhenInFoldersEnabled()}\n\t\t\t\t/>\n\t\t\t</Row>\n\t\t\t<Row\n\t\t\t\twidth=\"fill\"\n\t\t\t\tpadding={{ horizontal: 'large', bottom: 'large' }}\n\t\t\t\theight=\"fit\"\n\t\t\t\tbackground=\"gray6\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t>\n\t\t\t\t<Row width=\"50%\" padding={{ right: 'small' }}>\n\t\t\t\t\t<ChipInput\n\t\t\t\t\t\tlabel=\"e.g. Bob Smith\"\n\t\t\t\t\t\tvalue=\"\"\n\t\t\t\t\t\tplaceholder={t('label.folders', 'Folders')}\n\t\t\t\t\t\tbackground=\"gray5\"\n\t\t\t\t\t\ticon=\"FolderOutline\"\n\t\t\t\t\t\tdisabled={!whenInFoldersEnabled}\n\t\t\t\t\t\ticonAction={openFolderModal}\n\t\t\t\t\t/>\n\t\t\t\t</Row>\n\t\t\t</Row> */}\n\n\t\t\t<Padding bottom=\"large\" />\n\t\t\t{/* <FolderSelectModal compProps={modalProps} /> */}\n\t\t</>\n\t);\n};\n\nexport default PersonaUseSection;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useCallback, useMemo, useState, useEffect, ReactElement } from 'react';\nimport { Container, useSnackbar } from '@zextras/carbonio-design-system';\nimport { TFunction } from 'react-i18next';\nimport { map, includes, findIndex, reduce, find, replace, lowerFirst, isEmpty } from 'lodash';\nimport { useUserSettings } from '../store/account/hooks';\nimport { editSettings } from '../network/edit-settings';\nimport { SHELL_APP_ID } from '../constants';\nimport { Mods, IdentityProps, CreateIdentityProps } from '../../types';\nimport { useAccountStore } from '../store/account/store';\nimport AccountsList from './components/account-settings/accounts-list';\nimport PrimaryAccountSettings from './components/account-settings/primary-account-settings';\nimport SettingsSentMessages from './components/account-settings/settings-sent-messages';\nimport PasswordRecoverySettings from './components/account-settings/password-recovery-settings';\nimport Delegates from './components/account-settings/delegates';\nimport PersonaSettings from './components/account-settings/persona-settings';\nimport PersonaUseSection from './components/account-settings/persona-use-section';\nimport SettingsHeader from './components/settings-header';\n\n// external accounts not yet activated, graphical part is complete\n// import ExternalAccount from './components/account-settings/external-account-settings';\n// import AdvancedSettings from './components/account-settings/advanced-settings';\n// import DownloadMessages from './components/account-settings/download-messages';\n\ntype ModifyProps = { id: string | number; key: string; value: string | boolean } | undefined;\ntype AddModProps = {\n\ttype: string;\n\tmodifyProp?: ModifyProps;\n\tdeleteList?: string[];\n\tcreateList?: { prefs: CreateIdentityProps }[];\n};\ntype AccountSettingsProps = {\n\tidentitiesDefault: IdentityProps[];\n\tt: TFunction;\n};\n\ntype UserRightsProps = { email: string; right: string };\n\ntype DelegateProps = {\n\tid: string;\n\temail: string;\n\tright: string;\n};\n\nexport const AccountsSettings = ({ identitiesDefault, t }: AccountSettingsProps): ReactElement => {\n\tconst [mods, setMods] = useState<Mods>({});\n\tconst [activeDelegateView, setActiveDelegateView] = useState('0');\n\tconst [selectedIdentityId, setSelectedIdentityId] = useState(0);\n\tconst [identities, setIdentities] = useState<IdentityProps[]>(identitiesDefault);\n\tconst [delegates, setDelegates] = useState<DelegateProps[]>([]);\n\n\tconst maxIdentities = useUserSettings().attrs.zimbraIdentityMaxNumEntries;\n\tconst addMod = useCallback(\n\t\t(arg: AddModProps) => {\n\t\t\tconst { type, modifyProp, deleteList, createList } = arg;\n\t\t\tsetMods((prevState) => {\n\t\t\t\tconst prevRecord = find(\n\t\t\t\t\tprevState?.identity?.modifyList,\n\t\t\t\t\t(item) => item.id === modifyProp?.id\n\t\t\t\t)?.prefs;\n\t\t\t\tconst modifyList =\n\t\t\t\t\ttypeof modifyProp !== 'undefined'\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t...prevState.identity?.modifyList,\n\t\t\t\t\t\t\t\t[modifyProp.id]: {\n\t\t\t\t\t\t\t\t\tid: modifyProp.id,\n\t\t\t\t\t\t\t\t\tprefs: { ...prevRecord, [modifyProp.key]: modifyProp.value }\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t }\n\t\t\t\t\t\t: prevState.identity?.modifyList;\n\t\t\t\tconst newCreateList = prevState.identity?.createList || createList;\n\t\t\t\tconst newDeleteList = prevState.identity?.deleteList || deleteList;\n\t\t\t\treturn {\n\t\t\t\t\t...prevState,\n\n\t\t\t\t\t[type]: {\n\t\t\t\t\t\tdeleteList: newDeleteList,\n\t\t\t\t\t\tcreateList: newCreateList,\n\t\t\t\t\t\tmodifyList\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t});\n\t\t},\n\t\t[setMods]\n\t);\n\n\tconst modifyCreateList = useCallback((arg: AddModProps) => {\n\t\tconst { type, modifyProp } = arg;\n\t\tsetMods((prevState) => {\n\t\t\tconst prevRecord = find(\n\t\t\t\tprevState?.identity?.createList,\n\t\t\t\t(item) => item.prefs.requestId === modifyProp?.id\n\t\t\t)?.prefs;\n\t\t\tconst modifiedCreateList =\n\t\t\t\ttypeof modifyProp !== 'undefined'\n\t\t\t\t\t? {\n\t\t\t\t\t\t\t...prevState.identity?.createList,\n\t\t\t\t\t\t\t[modifyProp.id]: {\n\t\t\t\t\t\t\t\tprefs: { ...prevRecord, [modifyProp.key]: modifyProp.value }\n\t\t\t\t\t\t\t}\n\t\t\t\t\t }\n\t\t\t\t\t: undefined;\n\t\t\treturn {\n\t\t\t\t...prevState,\n\n\t\t\t\t[type]: {\n\t\t\t\t\tcreateList: modifiedCreateList,\n\t\t\t\t\tdeleteList: prevState.identity?.deleteList,\n\t\t\t\t\tmodifyList: prevState.identity?.modifyList\n\t\t\t\t}\n\t\t\t};\n\t\t});\n\t}, []);\n\tconst createIdentities = useCallback(\n\t\t(createList: { prefs: CreateIdentityProps }[]) => {\n\t\t\tconst arg = {\n\t\t\t\ttype: 'identity',\n\t\t\t\tcreateList\n\t\t\t};\n\t\t\taddMod(arg);\n\t\t},\n\t\t[addMod]\n\t);\n\n\tconst updateIdentities = useCallback(\n\t\t(modifyProp: { id: string | number; key: string; value: string | boolean }) => {\n\t\t\tconst arg = {\n\t\t\t\ttype: 'identity',\n\t\t\t\tmodifyProp: { id: modifyProp.id, key: modifyProp.key, value: modifyProp.value }\n\t\t\t};\n\t\t\tif (typeof modifyProp.id === 'string') {\n\t\t\t\taddMod(arg);\n\t\t\t} else if (typeof modifyProp.id === 'number') {\n\t\t\t\tmodifyCreateList(arg);\n\t\t\t}\n\t\t\tconst updatedIdentityKey = lowerFirst(replace(modifyProp.key, 'zimbraPref', ''));\n\t\t\tsetIdentities(\n\t\t\t\tmap(identities, (item) =>\n\t\t\t\t\titem.identityId === modifyProp.id\n\t\t\t\t\t\t? { ...item, [updatedIdentityKey]: modifyProp.value }\n\t\t\t\t\t\t: item\n\t\t\t\t)\n\t\t\t);\n\t\t},\n\t\t[addMod, identities, modifyCreateList]\n\t);\n\n\tconst deleteIdentities = useCallback(\n\t\t(deleteList: string[]) => {\n\t\t\tconst arg = {\n\t\t\t\ttype: 'identity',\n\t\t\t\tdeleteList\n\t\t\t};\n\t\t\taddMod(arg);\n\t\t},\n\t\t[addMod]\n\t);\n\n\tconst createSnackbar = useSnackbar();\n\n\tuseEffect(() => {\n\t\tuseAccountStore\n\t\t\t.getState()\n\t\t\t.xmlSoapFetch(SHELL_APP_ID)(\n\t\t\t\t'GetRights',\n\t\t\t\t`<GetRightsRequest xmlns=\"urn:zimbraAccount\"></GetRightsRequest>`\n\t\t\t)\n\t\t\t.then((res: any) => {\n\t\t\t\tif (res.ace) {\n\t\t\t\t\tconst tempResult: UserRightsProps[] = map(res.ace, (item) => ({\n\t\t\t\t\t\temail: item.d,\n\t\t\t\t\t\tright: item.right\n\t\t\t\t\t}));\n\t\t\t\t\tconst resultReduced = reduce(\n\t\t\t\t\t\ttempResult,\n\t\t\t\t\t\t(result: UserRightsProps[], item) => {\n\t\t\t\t\t\t\tconst index = findIndex(result, { email: item.email });\n\t\t\t\t\t\t\tif (index === -1) {\n\t\t\t\t\t\t\t\tresult.push({ email: item.email, right: item.right });\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tresult.push({\n\t\t\t\t\t\t\t\t\temail: item.email,\n\t\t\t\t\t\t\t\t\tright: `${item.right} and ${result[index].right}`\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tresult.splice(index, 1);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t},\n\t\t\t\t\t\t[]\n\t\t\t\t\t);\n\t\t\t\t\tconst result = map(resultReduced, (item: UserRightsProps, index) => ({\n\t\t\t\t\t\t...item,\n\t\t\t\t\t\tid: index.toString()\n\t\t\t\t\t}));\n\t\t\t\t\tsetDelegates(result);\n\t\t\t\t}\n\t\t\t});\n\t}, []);\n\n\tuseEffect(() => {\n\t\tsetIdentities(identitiesDefault);\n\t\tsetMods({});\n\t}, [identitiesDefault]);\n\n\tconst onSave = useCallback(() => {\n\t\tif (\n\t\t\tidentitiesDefault.length +\n\t\t\t\t(mods.identity?.createList?.length || 0) -\n\t\t\t\t(mods?.identity?.deleteList?.length || 0) >\n\t\t\tmaxIdentities\n\t\t) {\n\t\t\tcreateSnackbar({\n\t\t\t\tkey: `new`,\n\t\t\t\treplace: true,\n\t\t\t\ttype: 'error',\n\t\t\t\tlabel: t(\n\t\t\t\t\t'message.snackbar.identities_quota_exceeded',\n\t\t\t\t\t'The identitity could not be created because you have exceeded your identity quota'\n\t\t\t\t),\n\t\t\t\tautoHideTimeout: 5000,\n\t\t\t\thideButton: true\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\teditSettings(mods)\n\t\t\t.then(() => {\n\t\t\t\tcreateSnackbar({\n\t\t\t\t\tkey: `new`,\n\t\t\t\t\treplace: true,\n\t\t\t\t\ttype: 'info',\n\t\t\t\t\tlabel: t('message.snackbar.settings_saved', 'Edits saved correctly'),\n\t\t\t\t\tautoHideTimeout: 3000,\n\t\t\t\t\thideButton: true\n\t\t\t\t});\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\tcreateSnackbar({\n\t\t\t\t\tkey: `new`,\n\t\t\t\t\treplace: true,\n\t\t\t\t\ttype: 'error',\n\t\t\t\t\tlabel: t('snackbar.error', 'Something went wrong, please try again'),\n\t\t\t\t\tautoHideTimeout: 3000,\n\t\t\t\t\thideButton: true\n\t\t\t\t});\n\t\t\t});\n\t\tsetMods({});\n\t}, [identitiesDefault.length, mods, maxIdentities, createSnackbar, t]);\n\n\tconst onCancel = useCallback(() => setMods({}), []);\n\tconst title: string = useMemo(() => t('label.accounts', 'Accounts'), [t]);\n\tconst isDirty = useMemo(() => !isEmpty(mods), [mods]);\n\treturn (\n\t\t<>\n\t\t\t<SettingsHeader onSave={onSave} onCancel={onCancel} isDirty={isDirty} title={title} />\n\t\t\t<Container background=\"gray5\" padding={{ top: 'large' }} height=\"fit\" />\n\t\t\t<Container\n\t\t\t\tbackground=\"gray5\"\n\t\t\t\tmainAlignment=\"flex-start\"\n\t\t\t\tpadding={{ all: 'large' }}\n\t\t\t\tstyle={{ overflow: 'auto' }}\n\t\t\t>\n\t\t\t\t<AccountsList\n\t\t\t\t\tt={t}\n\t\t\t\t\tidentities={identities}\n\t\t\t\t\tsetIdentities={setIdentities}\n\t\t\t\t\tselectedIdentityId={selectedIdentityId}\n\t\t\t\t\tsetSelectedIdentityId={setSelectedIdentityId}\n\t\t\t\t\tdeleteIdentities={deleteIdentities}\n\t\t\t\t\tcreateIdentities={createIdentities}\n\t\t\t\t/>\n\t\t\t\t{identities[selectedIdentityId]?.type === t('label.primary', 'Primary') && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<PrimaryAccountSettings\n\t\t\t\t\t\t\tt={t}\n\t\t\t\t\t\t\titems={identities[0]}\n\t\t\t\t\t\t\tupdateIdentities={updateIdentities}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<SettingsSentMessages\n\t\t\t\t\t\t\tt={t}\n\t\t\t\t\t\t\titems={identities[selectedIdentityId]}\n\t\t\t\t\t\t\tisExternalAccount={false}\n\t\t\t\t\t\t\tupdateIdentities={updateIdentities}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<PasswordRecoverySettings\n\t\t\t\t\t\t\tt={t}\n\t\t\t\t\t\t\titems={identities[selectedIdentityId]}\n\t\t\t\t\t\t\tcreateSnackbar={createSnackbar}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Delegates\n\t\t\t\t\t\t\tt={t}\n\t\t\t\t\t\t\titems={delegates}\n\t\t\t\t\t\t\tactiveDelegateView={activeDelegateView}\n\t\t\t\t\t\t\tsetActiveDelegateView={setActiveDelegateView}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t\t{identities[selectedIdentityId]?.type === t('label.persona', 'Persona') && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<PersonaSettings\n\t\t\t\t\t\t\tt={t}\n\t\t\t\t\t\t\titems={identities[selectedIdentityId]}\n\t\t\t\t\t\t\tupdateIdentities={updateIdentities}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<SettingsSentMessages\n\t\t\t\t\t\t\tt={t}\n\t\t\t\t\t\t\titems={identities[selectedIdentityId]}\n\t\t\t\t\t\t\tisExternalAccount={false}\n\t\t\t\t\t\t\tupdateIdentities={updateIdentities}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<PersonaUseSection\n\t\t\t\t\t\t\tt={t}\n\t\t\t\t\t\t\titems={identities[selectedIdentityId]}\n\t\t\t\t\t\t\tupdateIdentities={updateIdentities}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t\t{includes(['IMAP', 'POP'], identities[selectedIdentityId]?.type) && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{/* <ExternalAccount t={t} items={identities} />\n\t\t\t\t\t\t<AdvancedSettings t={t} items={identities} />\n\t\t\t\t\t\t<DownloadMessages t={t} items={identities} />\n\t\t\t\t\t\t<SettingsSentMessages\n\t\t\t\t\t\t\tt={t}\n\t\t\t\t\t\t\titems={identities[selectedIdentityId]}\n\t\t\t\t\t\t\tisExternalAccount\n\t\t\t\t\t\t\tupdateIdentities={updateIdentities}\n\t\t\t\t\t\t\tsetMods={setMods}\n\t\t\t\t\t\t/> */}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</Container>\n\t\t</>\n\t);\n};\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { useMemo } from 'react';\nimport { map } from 'lodash';\nimport { useTranslation } from 'react-i18next';\nimport { AccountsSettings } from './accounts-settings';\nimport { useUserAccount } from '../store/account';\n\nconst AccountWrapper = (): React.ReactElement | null => {\n\tconst accountSettings = useUserAccount();\n\tconst [t] = useTranslation();\n\tconst identitiesDefault = useMemo(() => {\n\t\tconst temp = map(accountSettings?.identities.identity, (item, index) => ({\n\t\t\tid: item.name === 'DEFAULT' ? '0' : (index + 1).toString(),\n\t\t\ttype: item.name === 'DEFAULT' ? t('label.primary', 'Primary') : t('label.persona', 'Persona'),\n\t\t\tidentityId: item._attrs.zimbraPrefIdentityId || '',\n\t\t\tfromAddress: item._attrs.zimbraPrefFromAddress || '',\n\t\t\tidentityName: item._attrs.zimbraPrefIdentityName || '',\n\t\t\tfromDisplay: item._attrs.zimbraPrefFromDisplay || '',\n\t\t\trecoveryAccount: item._attrs.zimbraRecoveryAccount || '',\n\t\t\treplyToDisplay: item._attrs.zimbraPrefReplyToDisplay || '',\n\t\t\treplyToAddress: item._attrs.zimbraPrefReplyToAddress || '',\n\t\t\treplyToEnabled: item._attrs.zimbraPrefReplyToEnabled || '',\n\t\t\tsaveToSent: item._attrs.zimbraPrefSaveToSent || '',\n\t\t\tsentMailFolder: item._attrs.zimbraPrefSentMailFolder || '',\n\t\t\twhenInFoldersEnabled: item._attrs.zimbraPrefWhenInFoldersEnabled || '',\n\t\t\twhenSentToEnabled: item._attrs.zimbraPrefWhenSentToEnabled || '',\n\t\t\twhenSentToAddresses: item._attrs.zimbraPrefWhenSentToAddresses || ''\n\t\t}));\n\t\tconst result = [temp[temp.length - 1], ...temp];\n\t\tresult.pop();\n\t\treturn result;\n\t}, [accountSettings, t]);\n\n\treturn identitiesDefault.length > 0 ? (\n\t\t<AccountsSettings identitiesDefault={identitiesDefault} t={t} />\n\t) : null;\n};\n\nexport default AccountWrapper;\n","/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n/* eslint-disable no-param-reassign */\n\nimport produce from 'immer';\nimport { TFunction } from 'i18next';\nimport { useAppStore } from '../../store/app';\nimport { SearchAppView } from '../../search/search-app-view';\nimport { SettingsAppView } from '../../settings/settings-app-view';\nimport { SettingsSidebar } from '../../settings/settings-sidebar';\nimport { AppState, PrimaryBarView, SettingsView } from '../../../types';\nimport GeneralSettings from '../../settings/general-settings';\nimport { isAdmin, isClient } from '../../multimode';\nimport Feedback from '../../reporting/feedback';\nimport DevBoard from '../../dev/dev-board';\nimport DevBoardTrigger from '../../dev/dev-board-trigger';\nimport { SEARCH_APP_ID, SETTINGS_APP_ID, SHELL_APP_ID } from '../../constants';\nimport AccountWrapper from '../../settings/account-wrapper';\nimport { settingsSubSections } from '../../settings/general-settings-sub-sections';\n\nconst settingsRoute = {\n\troute: SETTINGS_APP_ID,\n\tid: SETTINGS_APP_ID,\n\tapp: SETTINGS_APP_ID\n};\nconst settingsPrimaryBar = (t: TFunction): PrimaryBarView => ({\n\tid: SETTINGS_APP_ID,\n\tapp: SETTINGS_APP_ID,\n\troute: SETTINGS_APP_ID,\n\tcomponent: 'SettingsModOutline',\n\tposition: 16,\n\tvisible: true,\n\tlabel: t('settings.app', 'Settings'),\n\tbadge: {\n\t\tshow: false\n\t}\n});\nconst settingsSecondaryBar = {\n\tid: SETTINGS_APP_ID,\n\tapp: SETTINGS_APP_ID,\n\troute: SETTINGS_APP_ID,\n\tcomponent: SettingsSidebar\n};\n\nconst settingsAppView = {\n\tid: SETTINGS_APP_ID,\n\tapp: SETTINGS_APP_ID,\n\troute: SETTINGS_APP_ID,\n\tcomponent: SettingsAppView\n};\nconst settingsGeneralView = (t: TFunction): SettingsView => ({\n\tid: 'general',\n\troute: 'general',\n\tapp: SHELL_APP_ID,\n\tcomponent: GeneralSettings,\n\ticon: 'SettingsModOutline',\n\tlabel: t('settings.general.general', 'General'),\n\tposition: 1,\n\tsubSections: settingsSubSections(t)\n});\n\nconst settingsAccountsView = (t: TFunction): SettingsView => ({\n\tid: 'accounts',\n\troute: 'accounts',\n\tapp: SHELL_APP_ID,\n\tcomponent: AccountWrapper,\n\ticon: 'PersonOutline',\n\tlabel: t('settings.accounts', 'Accounts'),\n\tposition: 1\n});\n\nconst searchRoute = {\n\troute: SEARCH_APP_ID,\n\tid: SEARCH_APP_ID,\n\tapp: SEARCH_APP_ID\n};\nconst searchPrimaryBar = (t: TFunction): PrimaryBarView => ({\n\tid: SEARCH_APP_ID,\n\tapp: SEARCH_APP_ID,\n\troute: SEARCH_APP_ID,\n\tcomponent: 'SearchModOutline',\n\tposition: 15,\n\tvisible: true,\n\tlabel: t('search.app', 'Search'),\n\tbadge: {\n\t\tshow: false\n\t}\n});\nconst searchAppView = {\n\tid: SEARCH_APP_ID,\n\tapp: SEARCH_APP_ID,\n\troute: SEARCH_APP_ID,\n\tcomponent: SearchAppView\n};\n\nconst feedbackBoardView = {\n\tid: 'feedback',\n\tapp: SHELL_APP_ID,\n\tcomponent: Feedback,\n\troute: 'feedback'\n};\nconst devModeBoardView = {\n\tid: 'dev-mode',\n\tapp: SHELL_APP_ID,\n\tcomponent: DevBoard,\n\troute: 'devtools'\n};\nconst devModeTrigger = {\n\tid: 'dev-mode-t',\n\tcomponent: DevBoardTrigger,\n\tlabel: 'Dev Tools',\n\tapp: SHELL_APP_ID,\n\tposition: 100\n};\nexport const registerDefaultViews = (t: TFunction): void => {\n\tuseAppStore.setState(\n\t\tproduce((s: AppState) => {\n\t\t\tif (isAdmin()) {\n\t\t\t\ts.routes = {\n\t\t\t\t\t[SETTINGS_APP_ID]: settingsRoute\n\t\t\t\t};\n\t\t\t\ts.views.primaryBar = [settingsPrimaryBar(t)];\n\t\t\t\ts.views.secondaryBar = [settingsSecondaryBar];\n\t\t\t\ts.views.appView = [settingsAppView];\n\t\t\t}\n\t\t\tif (isClient()) {\n\t\t\t\ts.routes = {\n\t\t\t\t\t[SEARCH_APP_ID]: searchRoute,\n\t\t\t\t\t[SETTINGS_APP_ID]: settingsRoute\n\t\t\t\t};\n\t\t\t\ts.views.primaryBar = [searchPrimaryBar(t), settingsPrimaryBar(t)];\n\t\t\t\ts.views.secondaryBar = [settingsSecondaryBar];\n\t\t\t\ts.views.appView = [searchAppView, settingsAppView];\n\t\t\t\ts.views.settings = [settingsGeneralView(t), settingsAccountsView(t)];\n\t\t\t}\n\t\t\ts.views.board = [feedbackBoardView];\n\t\t\tif (__CARBONIO_DEV__) {\n\t\t\t\ts.views.board.push(devModeBoardView);\n\t\t\t\ts.views.primaryBarAccessories.push(devModeTrigger);\n\t\t\t}\n\t\t})\n\t);\n};\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { FC, useMemo } from 'react';\nimport { Redirect, Route, Switch } from 'react-router-dom';\nimport { map } from 'lodash';\nimport { SETTINGS_APP_ID } from '../constants';\nimport AppContextProvider from '../boot/app/app-context-provider';\nimport { useAppStore } from '../store/app';\n\nexport const SettingsAppView: FC = () => {\n\tconst settingsViews = useAppStore((s) => s.views.settings);\n\tconst routes = useMemo(\n\t\t() =>\n\t\t\tmap(settingsViews, (view) => (\n\t\t\t\t<Route key={view.route} exact path={`/${SETTINGS_APP_ID}/${view.route}`}>\n\t\t\t\t\t<AppContextProvider pkg={view.app}>\n\t\t\t\t\t\t<view.component />\n\t\t\t\t\t</AppContextProvider>\n\t\t\t\t</Route>\n\t\t\t)),\n\t\t[settingsViews]\n\t);\n\treturn (\n\t\t<Switch>\n\t\t\t{routes}\n\t\t\t<Redirect from={`/${SETTINGS_APP_ID}`} exact strict to={`/${SETTINGS_APP_ID}/general`} />\n\t\t</Switch>\n\t);\n};\n","/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\nimport React, { FC } from 'react';\n\nconst DevBoard: FC = () => <p>Test</p>;\n\nexport default DevBoard;\n","/*\n * SPDX-FileCopyrightText: 2022 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\nimport React, { FC } from 'react';\nimport { IconButton } from '@zextras/carbonio-design-system';\nimport { useContextBridge } from '../store/context-bridge';\nimport { SHELL_APP_ID } from '../../types';\n\nconst DevBoardTrigger: FC = () => (\n\t<IconButton\n\t\ticon=\"Code\"\n\t\tsize=\"large\"\n\t\tonClick={(): void =>\n\t\t\tuseContextBridge.getState().packageDependentFunctions?.addBoard(SHELL_APP_ID)('/devtools/', {\n\t\t\t\ttitle: 'Dev Tools'\n\t\t\t})\n\t\t}\n\t/>\n);\n\nexport default DevBoardTrigger;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\nimport React, { FC, useEffect, useMemo } from 'react';\nimport { SnackbarManager, ModalManager } from '@zextras/carbonio-design-system';\nimport { useTranslation } from 'react-i18next';\nimport { init } from './init';\nimport { ThemeProvider } from './theme-provider';\nimport BootstrapperRouter from './bootstrapper-router';\nimport BootstrapperContextProvider from './bootstrapper-provider';\nimport I18nFactory from '../i18n/i18n-factory';\nimport StoreFactory from '../redux/store-factory';\nimport { unloadAllApps } from './app/load-apps';\nimport { registerDefaultViews } from './app/default-views';\nimport { useBridge } from '../store/context-bridge';\n\nconst DefaultViewsRegister: FC = () => {\n\tconst [t] = useTranslation();\n\tuseEffect(() => {\n\t\tregisterDefaultViews(t);\n\t}, [t]);\n\treturn null;\n};\n\nconst TBridge: FC<{ i18nFactory: I18nFactory }> = ({ i18nFactory }) => {\n\tuseBridge({\n\t\tfunctions: {},\n\t\tpackageDependentFunctions: {\n\t\t\tt: (app) => i18nFactory.getAppI18n({ name: app }).t\n\t\t}\n\t});\n\treturn null;\n};\n\nconst Bootstrapper: FC = () => {\n\tconst i18nFactory = useMemo(() => new I18nFactory(), []);\n\tconst storeFactory = useMemo(() => new StoreFactory(), []);\n\tuseEffect(() => {\n\t\tinit(i18nFactory, storeFactory);\n\t\treturn () => {\n\t\t\tunloadAllApps();\n\t\t};\n\t}, [i18nFactory, storeFactory]);\n\treturn (\n\t\t<ThemeProvider>\n\t\t\t<SnackbarManager>\n\t\t\t\t<ModalManager>\n\t\t\t\t\t<BootstrapperContextProvider i18nFactory={i18nFactory} storeFactory={storeFactory}>\n\t\t\t\t\t\t<TBridge i18nFactory={i18nFactory} />\n\t\t\t\t\t\t<DefaultViewsRegister />\n\t\t\t\t\t\t<BootstrapperRouter />\n\t\t\t\t\t</BootstrapperContextProvider>\n\t\t\t\t</ModalManager>\n\t\t\t</SnackbarManager>\n\t\t</ThemeProvider>\n\t);\n};\n\nexport default Bootstrapper;\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\n/* eslint-disable import/no-duplicates */\n/* eslint-disable import/no-named-default */\nimport { filter, map } from 'lodash';\n\nimport StoreFactory from '../../redux/store-factory';\n\nimport { loadApp, unloadApps } from './load-app';\nimport { CarbonioModule } from '../../../types';\nimport { injectSharedLibraries } from './shared-libraries';\nimport { getUserSetting } from '../../store/account';\nimport { useReporter } from '../../reporting';\nimport { SHELL_APP_ID } from '../../constants';\n\nexport function loadApps(storeFactory: StoreFactory, apps: Array<CarbonioModule>): void {\n\tinjectSharedLibraries();\n\tconst appsToLoad = filter(apps, (app) => {\n\t\tif (app.name === SHELL_APP_ID) return false;\n\t\tif (app.attrKey && getUserSetting('attrs', app.attrKey) !== 'TRUE') return false;\n\t\treturn true;\n\t});\n\tconsole.log(\n\t\t'%cLOADING APPS',\n\t\t'color: white; background: #2b73d2;padding: 4px 8px 2px 4px; font-family: sans-serif; border-radius: 12px; width: 100%'\n\t);\n\tuseReporter.getState().setClients(appsToLoad);\n\tPromise.allSettled(map(appsToLoad, (app) => loadApp(app, storeFactory)));\n}\n\nexport function unloadAllApps(): Promise<void> {\n\treturn unloadApps();\n}\n","/*\n * SPDX-FileCopyrightText: 2021 Zextras <https://www.zextras.com>\n *\n * SPDX-License-Identifier: AGPL-3.0-only\n */\n\n/* eslint-disable import/no-duplicates */\n/* eslint-disable import/no-named-default */\n\nimport React, { ComponentClass } from 'react';\nimport * as PropTypes from 'prop-types';\nimport * as ReactDOM from 'react-dom';\nimport * as Lodash from 'lodash';\nimport * as ReactRouterDom from 'react-router-dom';\nimport * as Moment from 'moment';\nimport * as ReactI18n from 'react-i18next';\n// import * as Msw from 'msw';\n// import * as Faker from 'faker';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport * as ReactRedux from 'react-redux';\nimport * as ReduxJSToolkit from '@reduxjs/toolkit';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport * as ZappUI from '@zextras/carbonio-design-system';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport * as StyledComponents from 'styled-components';\n\nimport { IShellWindow } from '../../../types';\n\nexport function injectSharedLibraries(): void {\n\t// eslint-disable-next-line max-len\n\tconst wnd: IShellWindow = window as unknown as IShellWindow;\n\tif (wnd.__ZAPP_SHARED_LIBRARIES__) {\n\t\treturn;\n\t}\n\twnd.__ZAPP_SHARED_LIBRARIES__ = {\n\t\t'prop-types': PropTypes,\n\t\treact: React,\n\t\t'react-dom': ReactDOM,\n\t\t'react-i18next': ReactI18n,\n\t\t'react-redux': ReactRedux,\n\t\tlodash: Lodash,\n\t\t'react-router-dom': ReactRouterDom,\n\t\tmoment: Moment,\n\t\t'styled-components': StyledComponents,\n\t\t'@reduxjs/toolkit': {\n\t\t\t...ReduxJSToolkit,\n\t\t\tconfigureStore: (): void => {\n\t\t\t\tthrow new Error('Apps must use the store given by the Shell.');\n\t\t\t},\n\t\t\tcreateStore: (): void => {\n\t\t\t\tthrow new Error('Apps must use the store given by the Shell.');\n\t\t\t}\n\t\t},\n\t\t'@zextras/carbonio-shell-ui': {},\n\t\t'@zextras/carbonio-design-system': ZappUI\n\t};\n\twnd.__ZAPP_HMR_EXPORT__ = {};\n}\n","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;"],"names":["ZIMBRA_STANDARD_COLORS","zValue","hex","zLabel","FOLDERS","USER_ROOT","INBOX","TRASH","SPAM","SENT","DRAFTS","CONTACTS","TAGS","CONVERSATIONS","CALENDAR","ROOT","NOTEBOOK","AUTO_CONTACTS","IM_LOGS","TASKS","BRIEFCASE","SHELL_APP_ID","SETTINGS_APP_ID","ACCOUNTS_APP_ID","SEARCH_APP_ID","ACTION_TYPES","CONVERSATION","CONVERSATION_lIST","MESSAGE","MESSAGE_lIST","CONTACT","CONTACT_lIST","INVITE","INVITE_lIST","APPOINTMENT","APPOINTMENT_lIST","FOLDER","FOLDER_lIST","CALENDAR_lIST","NEW","darkReaderDynamicThemeFixes","ignoreImageAnalysis","invert","css","ignoreInlineStyle","disableStyleSheetsProxy","SHELL_MODES","CARBONIO","STANDALONE","ADMIN","BASENAME","__SHELL_ENV__","EMAIL_VALIDATION_REGEX","FallbackView","normalizeBadgeInfo","badge","show","count","showCount","color","filterById","items","id","filter","item","useAppStore","create","set","apps","appContexts","shell","commit","description","js_entrypoint","name","priority","version","type","attrKey","icon","display","entryPoints","routes","views","primaryBar","secondaryBar","appView","board","utilityBar","settings","search","primaryBarAccessories","secondaryBarAccessories","setters","addApps","state","reduce","acc","app","sentryDsn","normalizeApp","find","val","setAppContext","context","produce","merge","addRoute","routeData","sortBy","unionWith","route","component","position","visible","label","a","b","setRouteVisibility","idx","findIndex","view","removeRoute","omit","addBoardView","data","unionBy","removeBoardView","addSettingsView","removeSettingsView","addSearchView","removeSearchView","addUtilityView","removeUtilityView","addPrimaryAccessoryView","removePrimaryAccessoryView","addSecondaryAccessoryView","removeSecondaryAccessoryView","updatePrimaryBadge","bar","updateUtilityBadge","useApp","appId","s","useApps","useAppList","useMemo","getApp","getAppContext","getShell","getRoutes","useRoutes","goToLogin","window","location","assign","origin","ShellMode","include","exclude","children","includes","isAdmin","parsePollingInterval","pollingPref","prefs","zimbraPrefMailPollingInterval","pollingValue","parseInt","Number","isNaN","UAParser","os","browser","userAgent","useReporter","clients","Hub","BrowserClient","dsn","release","maxValueLength","setClients","report","error","hint","eventId","getState","captureException","console","info","getAccount","otherAccount","by","_content","getXmlAccount","handleResponse","api","res","get","clearTimeout","noOpTimeout","Body","Fault","code","Detail","Error","Code","Reason","Text","Header","usedQuota","refresh","mbx","notify","tags","tag","setTimeout","soapFetch","pollingInterval","_jsns","limitToOneBlocked","wait","noOp","useAccountStore","account","undefined","attrs","props","setContext","init","rights","then","identities","signatures","_attrs","prop","normalizeSettings","displayName","normalizeAccount","zimbraVersion","fetch","r","json","components","pathname","split","err","log","getInfo","body","method","headers","JSON","stringify","seq","session","e","getSoapFetch","xmlSoapFetch","getXmlSoapFetch","lastNotificationTime","Date","now","useUserAccount","useUserAccounts","acct","useUserRights","targets","useUserRight","right","target","useUserSettings","useTags","useNotify","useRefresh","getUserAccount","getUserAccounts","getUserSettings","getTags","getUserRights","getUserRight","useContextBridge","packageDependentFunctions","functions","add","f","key","useBridge","content","addFunctions","useEffect","tinymce","onEditorChange","inline","value","baseAssetsUrl","initialValue","rest","useState","setContent","_onEditorChange","useCallback","newContent","editor","getContent","format","Container","height","crossAlignment","mainAlignment","style","overflowY","skin_url","content_css","min_height","menubar","statusbar","branding","resize","plugins","toolbar","quickbars_insert_toolbar","quickbars_selection_toolbar","contextmenu","toolbar_mode","useIntegrationsStore","actions","composer","Composer","hooks","registerActions","forEach","action","registerComponents","registerHooks","hook","registerFunctions","fn","removeActions","ids","removeComponents","removeHooks","removeFunctions","BootstrapperContext","createContext","onError","Catcher","pkg","i18nFactory","useContext","storeFactory","store","getStoreForApp","i18n","getAppI18n","Provider","I18nextProvider","ModalManager","SnackbarManager","getIntegratedHook","integration","getIntegratedFunction","getIntegratedComponent","Integration","getActions","factories","compact","map","getActionsFactory","getAction","factory","getActionFactory","isMobile","useIsMobile","ShellContext","useIntegratedHook","useIntegratedFunction","useIntegratedComponent","useActions","useActionsFactory","useAction","useActionFactory","useCurrentRoute","useLocation","startsWith","trim","getCurrentRoute","history","getHistory","parseParams","params","replace","routeToApply","path","hash","usePushHistoryCallback","useHistory","push","useReplaceHistoryCallback","useGoBackHistoryCallback","goBack","pushHistory","replaceHistory","goBackHistory","BoardValueContext","boards","currentBoard","largeView","minimized","BoardSetterContext","addBoard","url","title","removeBoard","removeCurrentBoard","removeAllBoards","updateBoard","setCurrentBoard","updateCurrentBoard","toggleLargeView","toggleMinimized","getUseAddBoardCallback","useUpdateCurrentBoard","useRemoveCurrentBoard","useBoardConfig","Spinner","width","Button","loading","AppLink","to","_to","textDecoration","editSettings","mods","pref","join","identity","modifyList","deleteList","createList","requestId","zimbraPrefIdentityName","zimbraPrefFromDisplay","zimbraPrefFromAddress","zimbraPrefReplyToEnabled","zimbraPrefReplyToDisplay","zimbraPrefReplyToAddress","zimbraPrefDefaultSignatureId","zimbraPrefForwardReplySignatureId","zimbraPrefWhenSentToEnabled","zimbraPrefWhenInFoldersEnabled","permissions","freeBusy","current","gt","zid","deny","d","inviteRight","u","email","propIndex","p","zimlet","itemMods","indexAccount","Object","keys","_index","values","i","CreateIdentityResponse","RouteLeavingGuard","when","onSave","lastLocationInitial","modalVisible","setModalVisible","lastLocation","setLastLocation","confirmedNavigation","setConfirmedNavigation","useTranslation","t","message","nextLocation","Modal","open","onClose","onConfirm","dismissLabel","confirmLabel","onCancel","isDirty","useparam","useParams","crumbs","click","document","querySelector","scrollIntoView","orientation","background","Row","padding","all","Breadcrumbs","Padding","onClick","disabled","Divider","_scripts","_scriptId","loadAppModule","appPkg","Promise","_resolve","_reject","resolved","__ZAPP_SHARED_LIBRARIES__","setReducer","reducer","replaceReducer","SettingsHeader","appSetters","integrations","normalizeRoute","routeId","normalizeBoardView","subSections","normalizeSettingsView","normalizeSearchView","whitelistRoutes","blacklistRoutes","button","normalizeUtilityView","normalizePrimaryAccessoryView","normalizeSecondaryAccessoryView","getAppSetters","useAppContext","useAddBoardCallback","getBridgedFunctions","CONSTANTS","__ZAPP_HMR_EXPORT__","appComponent","script","createElement","setAttribute","appendChild","setFetchMethod","ThemeCallbacksContext","addExtension","newExtension","setDarkReaderState","newState","themeSizes","size","sizes","font","extrasmall","small","medium","large","ThemeProvider","zimbraPrefFontSize","fonts","theme","extensions","setExtensions","darkReaderState","disable","enable","sepia","auto","aggregatedExtensions","ext","extension","Mounter","Suspense","fallback","entries","isEmpty","Comp","MemoComp","memo","hidden","overflow","_BoardsRouterContainer","styled","FirstAppRedirect","mainRoute","exact","strict","from","AppViewContainer","appViews","ShellContextProvider","screenMode","useScreenMode","useSearchStore","query","searchDisabled","setSearchDisabled","updateQuery","isFunction","updateModule","module","OutlinedIconButton","IconButton","palette","primary","regular","StyledChipInput","ChipInput","gray5","hover","StyledContainer","SelectLabelFactory","selected","focus","ThemeContext","minWidth","borderRadius","borderRight","gray4","cursor","takeAvailableSpace","left","Icon","alignSelf","SearchBar","activeRoute","searchViews","searchIsEnabled","setSearchIsEnabled","inputRef","useRef","localStorage","getItem","parse","storedValue","setStoredValue","valueToStore","Function","setItem","useLocalStorage","inputTyped","setInputTyped","moduleSelection","setModuleSelection","isTyping","setIsTyping","moduleSelectorItems","customComponent","horizontal","options","setOptions","selection","inputHasFocus","setInputHasFocus","inputState","setInputState","showClear","length","textContent","clearSearch","innerText","onSearch","currentQuery","ref","newInputState","hasAvatar","chip","c","qchip","isQueryFilter","appSuggestions","v","reverse","q","updateOptions","indexOf","slice","onQueryChange","newQuery","onInputType","ev","suggestions","suggestion","onSelectionChange","newVal","triggerSearch","setTriggerSearch","containerRef","searchCb","addEventListener","removeEventListener","disableOptions","placeholder","clearButtonPlaceholder","searchBtnTooltipLabel","onChipAdd","newChip","avatarLabel","addFocus","removeFocus","disableClearButton","Tooltip","maxWidth","Select","selectedBackgroundColor","onChange","LabelFactory","fontSize","onAdd","confirmChipOnBlur","confirmChipOnSpace","separators","overflowX","onInputTypeDebounce","onBlur","onFocus","requireUniqueChips","placement","iconColor","backgroundColor","CreationButton","setOpen","primaryAction","group","secondaryActions","byApp","groupBy","useSecondaryActions","onOpen","MultiButton","Dropdown","mobileNavIsOpen","onMobileMenuClick","searchEnabled","minHeight","maxHeight","vertical","Responsive","mode","MiniBadge","forwardRef","checkList","l1","l2","intersection","checkRoute","activeRouteValues","useUtilityViews","utilityViews","PrimaryContainer","active","ContainerWithDivider","gray3","ToggleBoardIcon","AdminPrimaryBarElement","PrimaryBarElement","PrimaryBarAccessoryElement","primaryBarViews","setRoutes","primaryBarAccessoryViews","accessories","wrap","VerticalDivider","gray2","Bubble","Collapser","useUtilityBarStore","secondaryBarState","setMode","setCurrent","setSecondaryBarState","logout","UtilityBarItem","ShellUtilityBar","accountItems","Panel","Spacer","ShellUtilityPanel","currentPanel","SidebarContainer","sidebarIsOpen","isOpen","setIsOpen","onCollapserClick","secondaryBarViews","secondaryBarAccessoryViews","role","expanded","SidebarComponent","secondary","ShellMobileNav","menuTree","CustomComponent","top","zIndex","Collapse","crossSize","Accordion","ShellNavigationBar","TabContainer","AppBoardTab","iconSize","onRemove","stopPropagation","weight","BoardContainer","AppBoard","createMemoryHistory","initialEntries","boardViews","windowHistory","unlisten","listen","l","TabsList","tabs","tabContainerRef","useHiddenCount","hiddenTabsCount","recalculateHiddenTabs","useLayoutEffect","tab","heigth","flexGrow","Board","BoardHeader","BoardDetailContainer","BackButton","Actions","AppBoardWindow","shellBoards","boardId","_tabs","_boards","onReturnToApp","Background","gray6","DarkReaderListener","darkreaderState","Shell","mobileNavOpen","setMobileNavOpen","ShellView","ContextBridge","createSnackbar","SnackbarManagerContext","createModal","ModalManagerContext","BrowserRouter","basename","payload","boardKey","newCurrentBoard","boardKeys","boardToRemove","removedBoardIndex","pickBy","updatedBoards","warn","BoardContextProvider","useReducer","boardState","dispatch","String","Math","floor","random","boardSetters","cbFunctions","toggleMinimizedBoard","getShellI18n","I18nFactory","this","locale","_cache","appI18n","changeLanguage","appPkgDescription","newI18n","i18next","baseI18nPath","BASE_PATH","dropRight","use","Backend","lng","fallbackLng","debug","interpolation","escapeValue","missingKeyHandler","ns","fallbackValue","backend","loadPath","_uselessSlice","createSlice","initialState","reducers","StoreFactory","configureStore","devTools","__CARBONIO_DEV__","middleware","getDefaultMiddleware","concat","logger","_useless","useQuery","useDisableSearch","ResultsHeader","setDisabled","resetQuery","Chip","themeSubSection","timezoneAndLanguageSubSection","outOfOfficeSubSection","searchPrefsSubSection","versionsSubSection","quotaSubSection","accountSubSection","settingsSubSections","sectionTitle","FormSubSection","addMod","drMode","setDrMode","defaultSelection","old","subSection","filteredList","preventDefault","navigator","clipboard","writeText","copyToClipboard","bottom","Badge","success","veritcal","allDay","text","ItemsExternalSenders","ItemsOutOfOfficeStatus","getExternalSendersPrefsData","ret","itemsExternalSenders","zimbraPrefOutOfOfficeSuppressExternalReply","zimbraPrefOutOfOfficeExternalReplyEnabled","zimbraPrefExternalSendersType","getOutOfOfficeStatusPrefsData","itemsOutOfOfficeStatus","zimbraPrefOutOfOfficeFreeBusyStatus","changeDateEvent","date","moment","utc","getDateEvent","local","valueOf","startOfDate","startOf","endOfDate","endOf","momentLocalizer","sendAutoReply","dateDisabled","setDateDisabled","zimbraPrefOutOfOfficeFromDate","zimbraPrefOutOfOfficeUntilDate","sendAutoReplyTimePeriod","setSendAutoReplyTimePeriod","dateZimbraPrefOutOfOfficeFromDate","setZimbraPrefOutOfOfficeFromDate","dateZimbraPrefOutOfOfficeUntilDate","setZimbraPrefOutOfOfficeUntilDate","setAllDay","allDayDisabled","setAllDayDisabled","timeDisabled","setTimeDisabled","updatePrefs","Checkbox","time","diff","dateIcon","timeIcon","inputProps","readOnly","subtract","zimbraPrefOutOfOfficeReplyEnabled","setSendAutoReply","zimbraPrefOutOfOfficeReply","inputZimbraPrefOutOfOfficeReply","setInputZimbraPrefOutOfOfficeReply","zimbraPrefOutOfOfficeExternalReply","inputZimbraPrefOutOfOfficeExternalReply","setInputZimbraPrefOutOfOfficeExternalReply","createAppointmentDisabled","setCreateAppointmentDisabled","externalReplyInput","setExternalReplyInput","createAppointment","setCreateAppointment","itemsSendAutoReplies","ItemsSendAutoReplies","Input","autoComplete","mobileView","used","quota","userQuota","zimbraMailQuota","round","defaultValue","fillBackground","Quota","fill","locales","localName","localeList","timezones","timeZoneList","zimbraPrefLocale","defaultTimeZone","zimbraPrefTimeZoneId","showCheckbox","dropdownMaxHeight","reload","zimbraPrefIncludeSpamInSearch","searchInSpamFolder","setSearchInSpamFolder","zimbraPrefIncludeTrashInSearch","searchInTrashFolder","setSearchInTrashFolder","zimbraPrefIncludeSharedItemsInSearch","searchInSharedFolder","setSearchInSharedFolder","onClickSpam","onClickTrash","onClickShared","setMods","m","useSnackbar","autoHideTimeout","hideButton","TextArea","TextContainer","ButtonContainer","TAContainer","SubHeadingText","lineHeight","LabelContainer","emptyEvent","level","Severity","extra","topic","user","ModuleLabelFactory","_LabelFactory","showErr","selectedIdentityId","setIdentities","setSelectedIdentityId","deleteIdentities","createIdentities","createListrequestId","setCreateListrequestId","setCreateList","addNewPersona","newPersonaNextNumber","max","identityName","parseFloat","newPersonaName","identityId","fromAddress","fromDisplay","replyToDisplay","replyToAddress","replyToEnabled","saveToSent","sentMailFolder","whenInFoldersEnabled","whenSentToEnabled","zimbraPrefFromAddressType","setDeleteList","onConfirmDelete","newIdentities","index","toString","onDelete","closeModal","confirmColor","showCloseIcon","List","ItemComponent","updateIdentities","emailValue","emailLabel","accountNameValue","setAccountNameValue","accountLabel","onChangeDisabled","modifyProp","isExternalAccount","replyToEnabledValue","setReplyToEnabledValue","setReplyToAddress","dropdownOpen","setDropdownOpen","fromDisplayValue","setFromDisplayValue","setReplyToDisplay","fromAddressArray","setFromAddress","k","onClickReplyToEnabled","fromDisplayLabel","fromAddressLabel","onChangeFromAddress","replyToEnabledLabel","replyToDisplayLabel","onChangePrefReplyToDisplay","replyToAddressLabel","replyToAddressArray","onChangeReplyToAddress","isValidEmail","test","onChangeFromDisplayValue","hasError","CustomIcon","recoveryEmail","recoveryAccount","setEmailValue","setIsValidEmail","inputLabel","onSubmit","activeDelegateView","setActiveDelegateView","activeValue","setActiveValue","activeView","setActiveView","RadioGroup","newValue","Radio","personaValue","setPersonaValue","personaLabel","whenSentToLabel","setWhenInFoldersEnabled","setWhenSentToEnabled","whenSentToAddresses","setWhenSentToAddresses","whenSentToAddressesLabel","onClickWhenSentToEnabled","onChangeWhenSentToAddresses","AccountsSettings","identitiesDefault","delegates","setDelegates","maxIdentities","zimbraIdentityMaxNumEntries","arg","prevState","prevRecord","newCreateList","newDeleteList","modifyCreateList","modifiedCreateList","updatedIdentityKey","lowerFirst","ace","tempResult","resultReduced","result","splice","accountSettings","temp","zimbraPrefIdentityId","zimbraRecoveryAccount","zimbraPrefSaveToSent","zimbraPrefSentMailFolder","zimbraPrefWhenSentToAddresses","pop","settingsRoute","settingsPrimaryBar","settingsSecondaryBar","settingsViews","disableHover","collapsedItems","settingsAppView","settingsGeneralView","GeneralSettings","settingsAccountsView","AccountWrapper","searchRoute","searchPrimaryBar","searchAppView","feedbackBoardView","topics","getTopics","allApps","appItems","event","setShowErr","limit","setLimit","onAppSelect","onTopicSelect","onInputChange","scrollHeight","checkTopicSelect","keyCode","closeBoard","confirmHandler","feedbackId","feedbacks","captureEvent","disabledSend","multiple","onKeyUp","devModeBoardView","devModeTrigger","DefaultViewsRegister","registerDefaultViews","TBridge","_i18nFactory","_storeFactory","setLocale","zimbraLocale","wnd","PropTypes","react","React","ReactDOM","ReactI18n","ReactRedux","lodash","Lodash","ReactRouterDom","Moment","StyledComponents","ReduxJSToolkit","createStore","ZappUI","appsToLoad","getUserSetting","allSettled","loadApp","loadApps","resolve","forOwn","parentNode","removeChild","webpackContext","req","webpackContextResolve","__webpack_require__","o","exports"],"sourceRoot":""}
|