{"version":3,"file":"342.newron-client.js","mappings":"gHAAA,IAAMA,EAAa,yBAGnB,SAASC,IACP,IAAMC,EAAkCC,OAAeH,IAAe,CAAC,EACvE,MAAO,CACLI,WAAYF,EAAmB,YAAK,GACpCG,aAAcH,EAAqB,cAAK,GACxCI,sBAAuBJ,EAA8B,uBAAK,wBAC1DK,oBAAqBL,EAA4B,qBAAK,sBACtDM,iBAAkBN,EAAyB,kBAAK,eAChDO,kBAAmBP,EAA0B,mBAAK,iBAEtD,C,uQCFIQ,EAAU,CAAC,EAEfA,EAAQC,kBAAoB,IAC5BD,EAAQE,cAAgB,IAElBF,EAAQG,OAAS,SAAc,KAAM,QAE3CH,EAAQI,OAAS,IACjBJ,EAAQK,mBAAqB,IAEhB,IAAI,IAASL,GAKJ,KAAW,IAAQM,QAAS,IAAQA,O,iCCftD,EAAU,CAAC,EAEf,EAAQL,kBAAoB,IAC5B,EAAQC,cAAgB,IAElB,EAAQC,OAAS,SAAc,KAAM,QAE3C,EAAQC,OAAS,IACjB,EAAQC,mBAAqB,IAEhB,IAAI,IAAS,GAKJ,KAAW,IAAQC,QAAS,IAAQA,O,cCftD,EAAU,CAAC,EAEf,EAAQL,kBAAoB,IAC5B,EAAQC,cAAgB,IAElB,EAAQC,OAAS,SAAc,KAAM,QAE3C,EAAQC,OAAS,IACjB,EAAQC,mBAAqB,IAEhB,IAAI,IAAS,GAKJ,KAAW,IAAQC,QAAS,IAAQA,OCtBnD,IAAMC,EAAe,WAC1B,OACEC,EAAAA,QAAAA,cAAA,OAAKC,UAAU,sBACbD,EAAAA,QAAAA,cAAA,OAAKC,UAAU,wBACfD,EAAAA,QAAAA,cAAA,MAAIC,UAAU,0BAAyB,oBACvCD,EAAAA,QAAAA,cAAA,KAAGC,UAAU,2CAA0C,8HAM7D,ECfYC,EAAU,SAAVA,GAAU,OAAVA,EAAAA,EAAU,mCAAVA,EAAAA,EAAU,6CAAVA,CAAU,MASTC,EAAiB,SAACC,GAAoB,MAAc,CAC/DC,KAAMH,EAAWI,eACjBC,QAASH,EACV,EAMYI,EAAsB,SAACC,GAAoB,MAAc,CACpEJ,KAAMH,EAAWQ,oBACjBH,QAASE,EACV,ECjBYE,EAA+B,CAC1CP,aAAa,EACbQ,kBAAkB,GCDPC,EAAmBb,EAAAA,QAAAA,cAG7B,CACDc,MAAOH,EACPI,SAAU,WAAe,I,UCCvB,EAAU,CAAC,EAEf,EAAQtB,kBAAoB,IAC5B,EAAQC,cAAgB,IAElB,EAAQC,OAAS,SAAc,KAAM,QAE3C,EAAQC,OAAS,IACjB,EAAQC,mBAAqB,IAEhB,IAAI,IAAS,GAKJ,KAAW,IAAQC,QAAS,IAAQA,OCtBnD,IAAMkB,EAAe,WAC1B,OACEhB,EAAAA,QAAAA,cAAA,OAAKC,UAAU,sBACbD,EAAAA,QAAAA,cAAA,OAAKC,UAAU,gBACfD,EAAAA,QAAAA,cAAA,MAAIC,UAAU,+BAA8B,wBAC5CD,EAAAA,QAAAA,cAAA,KAAGC,UAAU,wCAAuC,2FAK1D,ECJagB,EAAa,WACxB,IAAAC,GAA4BC,EAAAA,EAAAA,YAAWN,GAA/BC,EAAKI,EAALJ,MAAOC,EAAQG,EAARH,SACfK,GAAkCC,EAAAA,EAAAA,UAAiB,GAAEC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA9CI,EAASF,EAAA,GAAEG,EAAYH,EAAA,GACtBI,EAAUC,EAAAA,SAAVD,MACAE,EAAaC,EAAAA,WAAbD,SACAE,EAASC,EAAAA,SAATD,KACAE,GAAUC,EAAAA,EAAAA,gBAAVD,MAEFE,EAAgBC,EAAAA,wBAAwBC,cAAcC,SAEtDC,EAASJ,aAAa,EAAbA,EACXK,MAAK,SAACC,EAAGC,GAAC,OAAKD,EAAEE,MAAQD,EAAEC,KAAK,IACjCC,QACC,SAACC,EAAGC,GAAoB,IAAhBC,EAASD,EAATC,UACN,OAAIC,MAAMC,QAAQF,GACT,GAAPG,QAAAC,EAAAA,EAAAA,GAAWN,IAAGM,EAAAA,EAAAA,GAAKJ,IAGdF,EAAIO,KAAKL,EAClB,GACA,CAAC9B,IAcL,OATAoC,EAAAA,EAAAA,YAAU,WACU,IAAd5B,GACFQ,EAAM,qBAAsB,CAC1BqB,MAAO,uBACPC,KAAM,GAGZ,GAAG,CAAC9B,EAAWQ,IAGbhC,EAAAA,QAAAA,cAAAA,EAAAA,QAAAA,SAAA,KACEA,EAAAA,QAAAA,cAAC0B,EAAK,CAAC6B,OAAQzC,EAAMF,iBAAkB4C,KAAK,MAC1CxD,EAAAA,QAAAA,cAAA,OAAKC,UAAU,kEACbD,EAAAA,QAAAA,cAAA,QAAMC,UAAU,WAAU,oBAC1BD,EAAAA,QAAAA,cAAA,UACEyD,QAAS,WACP1C,EAASP,GAAoB,IAC7BiB,EAAa,EACf,EACA,eAAa,kBAEbzB,EAAAA,QAAAA,cAAC8B,EAAI,CAAC4B,MAAM,SACV1D,EAAAA,QAAAA,cAAC8B,EAAK6B,MAAMC,MAAK,SAIR,IAAdpC,GA5BW,CAAC,CAAEqC,KAAM,uBAAwBP,KAAM,EAAGQ,OAAQ,gCA6BlDC,KAAI,SAAAC,GAAA,IAAGH,EAAIG,EAAJH,KAAMP,EAAIU,EAAJV,KAAMQ,EAAME,EAANF,OAAM,OACjC9D,EAAAA,QAAAA,cAAA,OACEiE,IAAKX,EACLY,KAAK,eACL,eAAcJ,EACdL,QAAS,WAAF,OAAQhC,EAAa6B,EAAK,EACjCrD,UAAU,8FAEVD,EAAAA,QAAAA,cAAA,YAAO6D,GACP7D,EAAAA,QAAAA,cAAC8B,EAAI,CAAC4B,MAAM,SACV1D,EAAAA,QAAAA,cAAC8B,EAAK6B,MAAMQ,aAAY,OAEtB,IAGK,IAAd3C,GACCxB,EAAAA,QAAAA,cAAA,OAAKC,UAAU,yCACbD,EAAAA,QAAAA,cAAC4B,EAAQ,CACPU,OAAQA,EAAOW,OAAOlD,GACtBqE,cAAe,SAAAC,GAAU,OACvBrC,EAAM,qBAAsB,CAC1BqB,MAAO,uBACPC,KAAMe,GACN,MAQlB,E,8BCpFM9E,GAAoBR,EAAAA,EAAAA,KAAYQ,kB,+kBCN/B,IAAM+E,EAAU,WAA0E,IAAzExD,EAAqByD,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG5D,EAAc+D,EAAcH,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAC1E,OAAQC,EAAOrE,MACb,KAAKH,EAAWI,eACd,OAAAqE,EAAAA,EAAA,GACK7D,GAAK,IACRV,YAAasE,EAAOnE,UAGxB,KAAKL,EAAWQ,oBACd,OAAAiE,EAAAA,EAAA,GACK7D,GAAK,IACRF,iBAAkB8D,EAAOnE,UAG7B,QACE,OAAOO,EAGb,ECNa8D,EAAW,WACtB,IAAQ9C,EAASC,EAAAA,SAATD,KACR+C,GAA0BC,EAAAA,EAAAA,YAAWR,EAAS3D,GAAaoE,GAAAxD,EAAAA,EAAAA,GAAAsD,EAAA,GAApD/D,EAAKiE,EAAA,GAAEhE,EAAQgE,EAAA,GACd/C,GAAUC,EAAAA,EAAAA,gBAAVD,MACRgD,EFJ+B,WAK/B,IAAQC,GAAmBC,EAAAA,EAAAA,qBAAnBD,eACR7D,GAA8BC,EAAAA,EAAAA,UAAwB,MAAKC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAApD+D,EAAO7D,EAAA,GAAE8D,EAAU9D,EAAA,GAC1B+D,GAA0BhE,EAAAA,EAAAA,UAAwB,MAAKiE,GAAA/D,EAAAA,EAAAA,GAAA8D,EAAA,GAAhDE,EAAKD,EAAA,GAAEE,EAAQF,EAAA,GAChBG,GAAiCC,EAAAA,EAAAA,cAAWC,EAAAA,EAAAA,GAAAC,mBAAAC,MAAC,SAAAC,IAAA,IAAAX,EAAAY,EAAAC,EAAA,OAAAJ,mBAAAK,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OAClC,OAAXjB,EAAU,EAACe,EAAAE,KAAA,GACeC,EAAAA,EAAAA,GAAiB,CAAC,SAAU,aAAY,OAAjD,OAAfN,EAAeG,EAAAI,KAAAJ,EAAAE,KAAG,GACMC,EAAAA,EAAAA,GAAiB,CAC7C,kBACA,2BACA,0BACA,kBACA,0BACA,OASD,OAfKL,EAAeE,EAAAI,KAQnBnB,EADEY,IAAoBC,EACZO,EAAAA,GAAWC,gBACXT,GAAmBC,EACnBO,EAAAA,GAAWE,aAIXF,EAAAA,GAAWC,eACtBN,EAAAQ,OAAA,SACMvB,GAAO,wBAAAe,EAAAS,OAAA,GAAAb,EAAA,KACb,KAEH1C,EAAAA,EAAAA,YAAU,WACR,IAAMwD,EAAY,eAAA5C,GAAA2B,EAAAA,EAAAA,GAAAC,mBAAAC,MAAG,SAAAgB,IAAA,IAAAC,EAAA,OAAAlB,mBAAAK,MAAA,SAAAc,GAAA,cAAAA,EAAAZ,KAAAY,EAAAX,MAAA,cAAAW,EAAAX,KAAA,EACFX,IAAgC,OAA3CqB,EAAEC,EAAAT,KACRlB,EAAW0B,GAAI,wBAAAC,EAAAJ,OAAA,GAAAE,EAAA,KAChB,kBAHiB,OAAA7C,EAAAgD,MAAA,KAAAzC,UAAA,KAIlBqC,GACF,GAAG,CAACnB,IAEJ,IAAMwB,GAAgBvB,EAAAA,EAAAA,cAAWC,EAAAA,EAAAA,GAAAC,mBAAAC,MAAC,SAAAqB,IAAA,IAAAC,EAAAC,EAAA,OAAAxB,mBAAAK,MAAA,SAAAoB,GAAA,cAAAA,EAAAlB,KAAAkB,EAAAjB,MAAA,cAAAiB,EAAAjB,KAAA,EACFnB,IAAgB,OAAzB,OAAfkC,EAAeE,EAAAf,KAAAe,EAAAlB,KAAG,EAAHkB,EAAAjB,KAAG,EAECkB,EAAAA,EAAMC,IAAG,GAAAtE,OAAiB1D,EAAiB,wBAAwB,CACxFiI,QAAS,CAAEC,cAAe,UAAFxE,OAAYkE,MACpC,OAFIC,EAAQC,EAAAf,KAGdd,EAAS4B,EAASM,KAAKnC,OAAO8B,EAAAjB,KAAA,iBAAAiB,EAAAlB,KAAA,GAAAkB,EAAAM,GAAAN,EAAA,SAE9BO,EAAAA,EAAOC,MAAKR,EAAAM,GAAM,CAAEG,QAAS,6CAAF7E,OAAAoE,EAAAM,MAAwD,yBAAAN,EAAAV,OAAA,GAAAO,EAAA,mBAEpF,CAACjC,IAMJ,OAJA7B,EAAAA,EAAAA,YAAU,WACR6D,GACF,GAAG,CAACA,IAEG,CACL1B,MAAAA,EACAJ,QAAAA,EACA8B,cAAAA,EAEJ,CEvD6Bc,GAAnBxC,EAAKP,EAALO,MAAOJ,EAAOH,EAAPG,QAET6C,GAAeC,EAAAA,EAAAA,UAAQ,iBAAO,CAAEnH,MAAAA,EAAOC,SAAAA,EAAU,GAAG,CAACD,EAAOC,IAE5DmH,EAAUlI,EAAAA,QAAAA,SACVmI,EAAqB,SAACC,GACtBF,EAAQG,UAAYH,EAAQG,QAAQC,SAASF,EAAMG,SACrDxH,EAASZ,GAAe,GAE5B,EACmBqI,GAAuBC,EAAAA,EAAAA,GAAwB,CAChEC,WAAY,WACZC,YAAa,oBAFPC,UAgBR,OALA5I,EAAAA,QAAAA,WAAgB,WAEd,OADA6I,SAASC,iBAAiB,QAASX,GAC5B,kBAAMU,SAASE,oBAAoB,QAASZ,EAAmB,CACxE,GAAG,IAGDnI,EAAAA,QAAAA,cAACa,EAAiBmI,SAAQ,CAACC,MAAOjB,GAChChI,EAAAA,QAAAA,cAAA,QAAMC,UAAU,6BAA6BiJ,IAAKhB,GAChDlI,EAAAA,QAAAA,cAAA,UACEyD,QAAS,WACP1C,EAASZ,GAAgBW,EAAMV,cAC/B4B,EAAM,qBAAsB,CAC1BmH,SAAU,oBAEd,EACAlJ,UAAU,mGACV,eAAa,aAEbD,EAAAA,QAAAA,cAAC8B,EAAI,CAAC4B,MAAM,wBACV1D,EAAAA,QAAAA,cAAC8B,EAAK6B,MAAMyF,YAAW,QAG1BtI,EAAMV,aACLJ,EAAAA,QAAAA,cAAA,OACEC,UAAU,qGACV,eAAa,mBAEbD,EAAAA,QAAAA,cAAA,MAAIC,UAAU,8EAA6E,sBAI3FD,EAAAA,QAAAA,cAAA,MAAIC,UAAU,kCACbuI,GACCxI,EAAAA,QAAAA,cAAA,UACEyD,QAAS,WACP1C,EAASP,GAAoB,IAC7BO,EAASZ,GAAe,IAzClCgF,GAAWI,GACbtG,OAAOoK,KAAK9C,EAAAA,GAAW+C,IAAMnE,EAAU,kBAAoBI,EAAO,UA0CtDvD,EAAM,kCACR,EACA/B,UAAU,qHACV,eAAa,YAEbD,EAAAA,QAAAA,cAAC8B,EAAI,CAAC4B,MAAM,wBACV1D,EAAAA,QAAAA,cAAC8B,EAAK6B,MAAM4F,WAAU,OAExBvJ,EAAAA,QAAAA,cAAA,QAAMC,UAAU,QAAO,oBAG3BD,EAAAA,QAAAA,cAAA,KACEwJ,KAAK,6BACLjB,OAAO,SACPkB,IAAI,sBACJxJ,UAAU,iJAEV,eAAa,kBAEbD,EAAAA,QAAAA,cAAC8B,EAAI,CAAC4B,MAAM,wBACV1D,EAAAA,QAAAA,cAAC8B,EAAK6B,MAAMyF,YAAW,OAEzBpJ,EAAAA,QAAAA,cAAA,QAAMC,UAAU,QAAO,gBAEzBD,EAAAA,QAAAA,cAAA,UACEyD,QAAS,WACP1C,EAASP,GAAoB,IAC7BO,EAASZ,GAAe,IACxB6B,EAAM,oCACR,EACA/B,UAAU,sHAEVD,EAAAA,QAAAA,cAAC8B,EAAI,CAAC4B,MAAM,wBACV1D,EAAAA,QAAAA,cAAC8B,EAAK6B,MAAM+F,OAAM,OAEpB1J,EAAAA,QAAAA,cAAA,QAAMC,UAAU,QAAO,oBAEzBD,EAAAA,QAAAA,cAAA,KACEwJ,KAAK,wDACLjB,OAAO,SACPkB,IAAI,sBACJxJ,UAAU,kJAGVD,EAAAA,QAAAA,cAAC8B,EAAI,CAAC4B,MAAM,wBACV1D,EAAAA,QAAAA,cAAC8B,EAAK6B,MAAMgG,MAAK,OAEnB3J,EAAAA,QAAAA,cAAA,QAAMC,UAAU,QAAO,yBAK/BD,EAAAA,QAAAA,cAACiB,EAAU,MAGjB,EChIQ2I,EAA4BC,EAAAA,OAA5BD,UAAWE,EAAiBD,EAAAA,OAAjBC,aAwCnB,QAhC8C,SAAHjH,GAAoD,IAA9CkH,EAAOlH,EAAPkH,QAASC,EAAcnH,EAAdmH,eAAgBC,EAAcpH,EAAdoH,eACxE7I,GAA4BC,EAAAA,EAAAA,UAAiB2I,EAAeE,YAAW5I,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAhE+I,EAAM7I,EAAA,GAAE8I,EAAS9I,EAAA,GAGlB+I,EAAkBN,EACrBxH,MAAK,SAACC,EAAGC,GAAC,OAAKD,EAAE0H,WAAWI,cAAc7H,EAAEyH,WAAW,IACvDK,QAAO,SAAAtB,GAAK,IAAAuB,EAAA,OAAoB,QAAhBA,EAAAvB,EAAMiB,kBAAU,IAAAM,OAAA,EAAhBA,EAAkBC,cAAcC,QAAQP,aAAM,EAANA,EAAQM,iBAAkB,CAAC,IACnF1G,KAAI,SAAA4G,GACH,MAAO,CACLC,MAAOD,EAAOT,WACdjB,MAAO0B,EAAOE,SAASC,WAE3B,IAEF,OACE9K,EAAAA,QAAAA,cAAA,OAAKC,UAAU,kEACbD,EAAAA,QAAAA,cAAA,OAAKC,UAAU,OACbD,EAAAA,QAAAA,cAAA,QAAMC,UAAU,aAAY,WAC5BD,EAAAA,QAAAA,cAAA,OAAKC,UAAU,QACbD,EAAAA,QAAAA,cAAC4J,EAAS,CAACX,MAAOkB,EAAQY,YAAY,gBAAgBC,SAAUZ,MAGpEpK,EAAAA,QAAAA,cAAA,OAAKC,UAAU,2DACbD,EAAAA,QAAAA,cAAC8J,EAAY,CACXtK,QAAS6K,EACTW,SAAU,SAAAH,GAAQ,OAAIZ,EAAeF,EAAQkB,MAAK,SAAAN,GAAM,OAAIA,EAAOE,SAASC,aAAeD,CAAQ,IAAE,KAK/G,E,eChCI,GAAU,CAAC,EAEf,GAAQpL,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCvBnD,IAAMoL,GAAkB,WAAH,OAC1BlL,EAAAA,QAAAA,cAAA,QAAMC,UAAU,2CACdD,EAAAA,QAAAA,cAAA,OACEC,UAAU,oBACVkL,MAAM,KACNC,OAAO,IACPC,QAAQ,WACRC,OAAO,OACPC,MAAM,8BAENvL,EAAAA,QAAAA,cAAA,QACEwL,SAAS,UACTC,SAAS,UACTC,EAAE,oNAGN1L,EAAAA,QAAAA,cAAA,OACEC,UAAU,mBACVkL,MAAM,KACNC,OAAO,KACPC,QAAQ,YACRC,OAAO,OACPC,MAAM,8BAENvL,EAAAA,QAAAA,cAAA,aAAO,iBACPA,EAAAA,QAAAA,cAAA,QACEwL,SAAS,UACTC,SAAS,UACTC,EAAE,yhFAGD,EC7BDC,GAA4B9B,EAAAA,OAA5B8B,SAAUC,GAAkB/B,EAAAA,OAAlB+B,cA4DlB,SAnDsD,SAAH/I,GAK7C,IAJJgJ,EAAUhJ,EAAVgJ,WACAC,EAAkBjJ,EAAlBiJ,mBACAC,EAASlJ,EAATkJ,UACAC,EAAiBnJ,EAAjBmJ,kBAEA,OACEhM,EAAAA,QAAAA,cAAA,OAAKC,UAAU,kEACbD,EAAAA,QAAAA,cAAA,OAAKC,UAAU,sBACbD,EAAAA,QAAAA,cAAA,SAAOC,UAAU,qCACfD,EAAAA,QAAAA,cAAC2L,GAAQ,CACPX,SAAUe,EACVjL,MACEgL,EAAmBtH,SAAWqH,EAAWrH,OACrCoH,GAAcK,QACgB,IAA9BH,EAAmBtH,OACnBoH,GAAcM,UACdN,GAAcO,gBAGrB,gBAGLnM,EAAAA,QAAAA,cAAA,OAAKC,UAAU,2DACU,IAAtB4L,EAAWrH,OACVxE,EAAAA,QAAAA,cAAA,OAAKC,UAAU,QAAO,wBAGtB4L,EACGtJ,MAAK,SAACC,EAAGC,GAAC,OAAKD,EAAE4J,cAAc9B,cAAc7H,EAAE2J,cAAc,IAC7DrI,KAAI,SAAAsI,GAAS,OACZrM,EAAAA,QAAAA,cAAA,OAAKiE,IAAKoI,EAAUC,YAAarM,UAAU,QACzCD,EAAAA,QAAAA,cAAA,SAAOC,UAAU,0CACfD,EAAAA,QAAAA,cAAC2L,GAAQ,CACP7K,MACEgL,EAAmBb,MAAK,SAAAsB,GAAE,OAAIA,EAAGD,cAAgBD,EAAUC,WAAW,IAClEV,GAAcK,QACdL,GAAcM,UAEpBlB,SAAU,SAAA/B,GAAK,OAAI+C,EAAkB/C,EAAOoD,EAAU,IAEvDA,EAAUD,eAET,KAMpB,EChCA,IAAMI,GAAkB,eAClBC,GAAa,gBAEbC,GAAoB,CAAC,kBAAmB,mBAExCC,GAAS,IAAIC,gBAEbC,GAAkC,CACtCC,GAAI,CACFC,aAAc,CAAC,SC9BnB,IAAQnB,GAAkB/B,EAAAA,OAAlB+B,cACAoB,GAAWC,EAAAA,QAAXD,OACAtL,GAAUC,EAAAA,SAAVD,MACAwL,GAAeC,EAAAA,SAAfD,WAEKE,GAAc,WACzB,IAAQC,GAASnI,EAAAA,EAAAA,qBAATmI,KACFC,GAAiBC,EAAAA,EAAAA,YAAWF,GAElCG,EDyBqB,SAACF,GACtB,IAAAlM,GAAgCC,EAAAA,EAAAA,WAAS,GAAKC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAvCqM,EAASnM,EAAA,GAAEoM,EAAUpM,EAAA,GACpB2D,GAAmBC,EAAAA,EAAAA,qBAAnBD,eACRI,GAA8BhE,EAAAA,EAAAA,YAAoBiE,GAAA/D,EAAAA,EAAAA,GAAA8D,EAAA,GAA3C0E,EAAOzE,EAAA,GAAEqI,EAAUrI,EAAA,IAE1BlC,EAAAA,EAAAA,YAAU,WACR,IAAMwK,EAAU,eAAA/K,GAAA8C,EAAAA,EAAAA,GAAAC,mBAAAC,MAAG,SAAAC,IAAA,IAAA+H,EAAAnG,EAAAoG,EAAA,OAAAlI,mBAAAK,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OAI6D,OAH9EyG,GAAgCC,GAAGC,aAAagB,SAAQ,SAAAC,GAAO,OAAIrB,GAAOsB,OAAO,eAAgBD,EAAQ,IACzGN,GAAW,GACLG,EAAc5I,IAAgBiB,EAAAyB,GACjBL,EAAAA,EAAKpB,EAAAgI,GAAA,GAAAjL,OAAuCuJ,GAAe,cAAAtG,EAAAiI,GAAA,UAAAjI,EAAAE,KAAA,EAClCyH,EAAW,OAC/C,OAD+C3H,EAAAkI,GAAAlI,EAAAI,KAAAJ,EAAAmI,GAAAnI,EAAAiI,GAAAlL,OAAAqL,KAAApI,EAAAiI,GAAAjI,EAAAkI,IAAAlI,EAAAqI,GAAA,CAA1C9G,cAAavB,EAAAmI,GAAiCG,OAAQ,oBAAkBtI,EAAAuI,GACnF9B,GAAMzG,EAAAwI,GAAA,CADNlH,QAAOtB,EAAAqI,GACP5B,OAAMzG,EAAAuI,IAAAvI,EAAAE,KAAA,GAAAF,EAAAyB,GAFiBJ,IAAG+G,KAAApI,EAAAyB,GAAAzB,EAAAgI,GAAAhI,EAAAwI,IAAA,QAAtBhH,EAAIxB,EAAAI,KAIJwH,EAAcpG,EAAKA,KAAK3D,KAAI,SAAA4K,GAAC,MAAK,CACtC9D,SAAU8D,EAAEC,UACZ1E,WAAYyE,EAAEE,YACdC,SAAUH,EAAEG,SACZC,cAAeJ,EAAEK,gBAClB,IACDrB,EAAWG,GACXJ,GAAW,GAAO,yBAAAxH,EAAAS,OAAA,GAAAb,EAAA,KACnB,kBAhBe,OAAAjD,EAAAmE,MAAA,KAAAzC,UAAA,KAkBhB+I,GAAkBM,GACpB,GAAG,CAAC3I,EAAgBqI,IAEpB,IAAM2B,EAAa,eAAAjL,GAAA2B,EAAAA,EAAAA,GAAAC,mBAAAC,MAAG,SAAAgB,EAAOqI,GAAoB,IAAArB,EAAAnG,EAAA,OAAA9B,mBAAAK,MAAA,SAAAc,GAAA,cAAAA,EAAAZ,KAAAY,EAAAX,MAAA,cAAAW,EAAAX,KAAA,EACrBnB,IAAgB,OAAzB,OAAX4I,EAAW9G,EAAAT,KAAAS,EAAAX,KAAG,EACDkB,EAAAA,EAAMC,IAAG,GAAAtE,OAAyBuJ,IAAevJ,OAAGiM,GAAgB,CACrF1H,QAAS,CAAEC,cAAe,UAAFxE,OAAY4K,GAAeW,OAAQ,oBAC3D7B,OAAAA,KACA,OAHQ,OAAJjF,EAAIX,EAAAT,KAAAS,EAAAL,OAAA,SAIHgB,EAAKA,KAAK3D,KAAI,SAAAoL,GAAI,MAAK,CAAE7C,YAAa6C,EAAKC,cAAehD,cAAe+C,EAAKE,gBAAiB,KAAE,wBAAAtI,EAAAJ,OAAA,GAAAE,EAAA,KACzG,gBAPkByI,GAAA,OAAAtL,EAAAgD,MAAA,KAAAzC,UAAA,KAiCnB,MAAO,CACLwF,QAAAA,EACAkF,cAAAA,EACAM,sBA3B4B,WAC5B,IAAMC,EAAUC,KAAKC,MAAMC,aAAaC,QAAQnD,KAAe,MAE/D,OAAK+C,EAAmB,WAAMA,EAA+B,sBAItD,CACL3E,SAAU2E,EAAmB,UAC7BK,mBAAoBL,EAA+B,uBAL5C,IAOX,EAiBEM,sBAf4B,SAACjF,EAAkBgF,GAC/C,IAAML,EAAUC,KAAKM,UAAU,CAAEnB,UAAW/D,EAAUmF,sBAAuBH,IAC7EF,aAAaM,QAAQxD,GAAY+C,EACnC,EAaEU,wBAX8B,WAEjBC,OAAOC,KAAKT,cAAcpF,QAAO,SAAAtG,GAAG,OAAIyI,GAAkB2D,MAAK,SAAAC,GAAM,OAAIrM,EAAIsM,WAAWD,EAAO,GAAC,IACxGvC,SAAQ,SAAA9J,GAAG,OAAI0L,aAAaa,WAAWvM,EAAI,GAClD,EAQEwJ,UAAAA,EAEJ,CCtFMgD,CAAenD,GAAeoD,EAAAlD,EANhCzD,QAAAA,OAAO,IAAA2G,EAAG,GAAEA,EACZjD,EAASD,EAATC,UACA8B,EAAqB/B,EAArB+B,sBACAO,EAAqBtC,EAArBsC,sBACAI,EAAuB1C,EAAvB0C,wBACAjB,EAAazB,EAAbyB,cAEF7N,GAAoCC,EAAAA,EAAAA,WAAS,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA5CuP,EAAWrP,EAAA,GAAEsP,EAAYtP,EAAA,GAChC+D,GAA4ChE,EAAAA,EAAAA,UAAiB,CAAC,GAAYiE,GAAA/D,EAAAA,EAAAA,GAAA8D,EAAA,GAAnE2E,EAAc1E,EAAA,GAAEuL,EAAiBvL,EAAA,GACxCwL,GAAoCzP,EAAAA,EAAAA,UAAsB,IAAG0P,GAAAxP,EAAAA,EAAAA,GAAAuP,EAAA,GAAtDjF,EAAUkF,EAAA,GAAEC,EAAaD,EAAA,GAChCE,GAAoD5P,EAAAA,EAAAA,UAAsB,IAAG6P,GAAA3P,EAAAA,EAAAA,GAAA0P,EAAA,GAAtEnF,EAAkBoF,EAAA,GAAEC,EAAqBD,EAAA,GAE1CE,EAAc,eAAAvO,GAAA8C,EAAAA,EAAAA,GAAAC,mBAAAC,MAAG,SAAAC,IAAA,IAAAuL,EAAAxG,EAAAgF,EAAAlF,EAAA2G,EAAAC,EAAA,OAAA3L,mBAAAK,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OAEoC,OAFpCiL,EACoB9B,IAAjC1E,EAAQwG,EAARxG,SAAUgF,EAAkBwB,EAAlBxB,mBACZlF,EAASZ,EAAQkB,MAAK,SAAAuG,GAAC,OAAIA,EAAE3G,WAAaA,CAAQ,IAAC3E,EAAAE,KAAA,EACpCqL,EAAgB9G,GAAO,OAAtC2G,EAAMpL,EAAAI,KACNiL,EAAqCD,EAAO/G,QAAO,SAAAmH,GAAC,OAAI7B,EAAmB8B,SAASD,EAAEpF,YAAY,IACxGuE,EAAkBlG,GAClBwG,EAAsBI,GAAoC,wBAAArL,EAAAS,OAAA,GAAAb,EAAA,KAC3D,kBAPmB,OAAAjD,EAAAmE,MAAA,KAAAzC,UAAA,KASdqN,EAAoB,eAAA5N,GAAA2B,EAAAA,EAAAA,GAAAC,mBAAAC,MAAG,SAAAgB,EAAO8D,GAAc,IAAA2G,EAAA,OAAA1L,mBAAAK,MAAA,SAAAc,GAAA,cAAAA,EAAAZ,KAAAY,EAAAX,MAAA,cAAAW,EAAAX,KAAA,EAC3B6I,EAActE,EAAOoE,eAAc,OAAlDuC,EAAMvK,EAAAT,KACZ6K,EAAsBG,GACtBxB,EACE/F,EAAQ,GAAGc,SACXyG,EAAOvN,KAAI,SAAA8N,GAAC,OAAIA,EAAEvF,WAAW,KAC7B,wBAAAvF,EAAAJ,OAAA,GAAAE,EAAA,KACH,gBAPyByI,GAAA,OAAAtL,EAAAgD,MAAA,KAAAzC,UAAA,KASpBkN,EAAe,eAAAK,GAAAnM,EAAAA,EAAAA,GAAAC,mBAAAC,MAAG,SAAAqB,EAAOyD,GAAc,IAAAoH,EAAA,OAAAnM,mBAAAK,MAAA,SAAAoB,GAAA,cAAAA,EAAAlB,KAAAkB,EAAAjB,MAAA,cAAAiB,EAAAjB,KAAA,EACV6I,EAActE,EAAOoE,eAAc,OAClC,OAD5BgD,EAAkB1K,EAAAf,KACxB0K,EAAce,GAAoB1K,EAAAX,OAAA,SAC3BqL,GAAkB,wBAAA1K,EAAAV,OAAA,GAAAO,EAAA,KAC1B,gBAJoB8K,GAAA,OAAAF,EAAA9K,MAAA,KAAAzC,UAAA,MAMrBnB,EAAAA,EAAAA,YAAU,YACHqK,GAAa1D,IAEAwF,IAEd6B,KAEAP,EAAkB9G,EAAQ,IAC1B6H,EAAqB7H,EAAQ,KAInC,GAAG,CAACA,EAAS0D,KAEbrK,EAAAA,EAAAA,YAAU,WAEJ4G,EAAe+E,eACjB0C,EAAgBzH,EAGpB,GAAG,CAACyF,KAAKM,UAAU/F,EAAe+E,iBAqClC,IAAKzB,EACH,OAAO,KAGT,IAAQxL,EAASC,EAAAA,SAATD,KAER,OACE9B,EAAAA,QAAAA,cAAA,OAAKC,UAAU,QACbD,EAAAA,QAAAA,cAAA,QAAMC,UAAU,8BACbwN,EACCzN,EAAAA,QAAAA,cAACkN,GAAU,MAEXlN,EAAAA,QAAAA,cAAA,UACEyD,QAAS,WAAF,OAAQmN,GAAcD,EAAY,EACzC1Q,UAAU,uFAEVD,EAAAA,QAAAA,cAAC8B,EAAI,CAAC4B,MAAM,wBACV1D,EAAAA,QAAAA,cAACkL,GAAe,SAKxBlL,EAAAA,QAAAA,cAAC0B,GAAK,CAAC8B,KAAK,KAAKD,OAAQoN,GACvB3Q,EAAAA,QAAAA,cAAC0B,GAAMuQ,OAAM,KAAC,sBACdjS,EAAAA,QAAAA,cAAC0B,GAAMwQ,KAAI,KACTlS,EAAAA,QAAAA,cAAA,OAAKC,UAAU,2BACbD,EAAAA,QAAAA,cAACmS,EAAU,CAACpI,QAASA,EAASC,eAAgBA,EAAgBC,eAnDjD,SAACU,GACtBkG,EAAkBlG,GAqBlBwG,EAAsB,GAnBxB,IAiDUnR,EAAAA,QAAAA,cAACoS,GAAc,CACbvG,WAAYA,EACZC,mBAAoBA,EACpBE,kBAlDc,SAAC/C,EAA6BoD,GAClDpD,IAAU2C,GAAcK,QAC1BkF,GAAsB,SAAAhL,GAAI,SAAAlD,QAAAC,EAAAA,EAAAA,GAAQiD,GAAI,CAAEkG,GAAS,IAEjD8E,EAAsBrF,EAAmBvB,QAAO,SAAA8H,GAAK,OAAIA,EAAM/F,cAAgBD,EAAUC,WAAW,IAExG,EA6CYP,UA3CM,WACZD,EAAmBtH,OAAS,EAC9B2M,EAAsB,IACiB,IAA9BrF,EAAmBtH,QAC5B2M,EAAsBtF,EAE1B,MAyCM7L,EAAAA,QAAAA,cAAC0B,GAAM4Q,OAAM,CAACC,MAAM,SAClBvS,EAAAA,QAAAA,cAACgN,GAAM,CAACwF,KAAK,YAAY/O,QAAS,WAAF,OAAQmN,GAAa,SAAAzK,GAAI,OAAKA,CAAI,GAAC,GAAE,UAGrEnG,EAAAA,QAAAA,cAACgN,GAAM,CAACwF,KAAK,UAAUC,UAAW3G,EAAmBtH,OAAQf,QA1ErD,WACd,GAAI6J,GAAkBtD,EAAea,SAAU,CAC7C,IAAM6H,EAAe5G,EAAmB/H,KAAI,SAAAsO,GAAK,OAAIA,EAAM/F,WAAW,IACtEwD,EAAsB9F,EAAea,SAAU6H,GAC/CxC,IACAU,GAAa,SAAAzK,GAAI,OAAKA,CAAI,IAC1BlH,OAAO0T,SAASC,QAClB,CACF,GAkEuF,WAOzF,EC7JMC,GAAc,sBAEPC,GAAmB,WAC9B,IAAMH,GAAWI,EAAAA,EAAAA,MACjB,OAAOC,QAAQL,EAASM,SAASC,MAAML,IACzC,E,WCPY3S,GAAU,SAAVA,GAAU,OAAVA,EAAAA,EAAU,mCAAVA,EAAAA,EAAU,+CAAVA,EAAAA,EAAU,2CAAVA,EAAAA,EAAU,uCAAVA,EAAAA,EAAU,mDAAVA,EAAAA,EAAU,6DAAVA,EAAAA,EAAU,mDAAVA,EAAAA,EAAU,qDAAVA,CAAU,MAeTC,GAAiB,SAACC,GAAoB,MAAc,CAC/DC,KAAMH,GAAWI,eACjBC,QAASH,EACV,EAMY+S,GAAuB,SAAC1S,GAAoB,MAAc,CACrEJ,KAAMH,GAAWkT,qBACjB7S,QAASE,EACV,EAMY4S,GAAqB,SAACC,GAAwB,MAAc,CACvEjT,KAAMH,GAAWqT,mBACjBhT,QAAS+S,EACV,EAiBYE,GAAyB,SAAC1M,GAAU,MAAc,CAC7DzG,KAAMH,GAAWuT,uBACjBlT,QAASuG,EACV,EAiBY4M,GAAyB,SAACzK,GAAa,MAAc,CAChE5I,KAAMH,GAAWyT,uBACjBpT,QAAS0I,EACV,EAOY2K,GAA0B,SAAC3K,GAAa,MAAc,CACjE5I,KAAMH,GAAW2T,wBACjBtT,QAAS0I,EACV,EC7EYtI,GAAuC,CAClDP,aAAa,EACbkT,iBAAiB,EACjBQ,mBAAmB,EACnBC,cAAe,GACfC,yBAA0B,EAC1BC,oBAAqB,EACrBC,qBAAsB,ICTXC,GAA2BnU,EAAAA,QAAAA,cAGrC,CACDc,MAAOH,GACPI,SAAU,WAAe,ICJrBqT,IAAmBrV,EAAAA,EAAAA,KAAYK,sBAExBiV,GAA8B,SAACtT,GAC1C,IAAQkE,GAAmBC,EAAAA,EAAAA,qBAAnBD,eAgBR,MAAO,CACLqP,YAfiB5O,EAAAA,EAAAA,cAAWC,EAAAA,EAAAA,GAAAC,mBAAAC,MAAC,SAAAC,IAAA,IAAAqB,EAAAC,EAAA,OAAAxB,mBAAAK,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EACCnB,IAAgB,OAAzB,OAAfkC,EAAejB,EAAAI,KAAAJ,EAAAC,KAAG,EAAHD,EAAAE,KAAG,EAECkB,EAAAA,EAAMC,IAAI,GAADtE,OAAImR,GAAgB,4BAA4B,CAC9E5M,QAAS,CACP,eAAgB,mBAChBC,cAAe,UAAFxE,OAAYkE,MAE3B,OALIC,EAAQlB,EAAAI,KAMdvF,GHyCsCwT,GGzCAnN,EAASM,KAAK6M,MHyCa,CACrElU,KAAMH,GAAWsU,4BACjBjU,QAASgU,KG3CuDrO,EAAAE,KAAA,iBAAAF,EAAAC,KAAA,GAAAD,EAAAyB,GAAAzB,EAAA,SAE5D0B,EAAAA,EAAOC,MAAK3B,EAAAyB,GAAM,CAAEG,QAAS,yCAAF7E,OAAAiD,EAAAyB,MAAoD,yBAAAzB,EAAAS,OHuC1C,IAAC4N,CGvCyC,GAAAzO,EAAA,mBAEhF,CAAC/E,EAAUkE,IAIhB,ECpBMmP,GAAmB,wBACZK,GAAuB,WAMlC,IAAAC,EAA0B1U,EAAAA,QAAAA,SAAe,MAAK2U,GAAApT,EAAAA,EAAAA,GAAAmT,EAAA,GAAvC7M,EAAK8M,EAAA,GAAEC,EAAQD,EAAA,GACd1P,GAAmBC,EAAAA,EAAAA,qBAAnBD,eACAlE,GAAaI,EAAAA,EAAAA,YAAWgT,IAAxBpT,SACAuT,EAAeD,GAA4BtT,GAA3CuT,WACAtS,GAAUC,EAAAA,EAAAA,gBAAVD,MAEF6S,GAAqBnP,EAAAA,EAAAA,cAAWC,EAAAA,EAAAA,GAAAC,mBAAAC,MAAC,SAAAC,IAAA,IAAAgP,EAAA1N,EAAA,OAAAxB,mBAAAK,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAC,KAAA,EAAAD,EAAAE,KAAA,EAEXnB,IAAgB,OAAzB,OAAT6P,EAAS5O,EAAAI,KAAAJ,EAAAE,KAAG,EACKkB,EAAAA,EAAMC,IAAI,GAADtE,OAAImR,GAAgB,+BAA+B,CACjF5M,QAAS,CACP,eAAgB,mBAChBC,cAAe,UAAFxE,OAAY6R,MAE3B,OALI1N,EAAQlB,EAAAI,KAMdsO,EAAS,MAET7T,GJS2BgT,EITD3M,EAASM,KJS0B,CACjErH,KAAMH,GAAW6U,iBACjBxU,QAASwT,KIXqC7N,EAAAE,KAAA,iBAAAF,EAAAC,KAAA,GAAAD,EAAAyB,GAAAzB,EAAA,SAE1C0O,EAAQ1O,EAAAyB,IACRC,EAAAA,EAAOC,MAAK3B,EAAAyB,GAAM,CAAEG,QAAS,iCAAF7E,OAAAiD,EAAAyB,MAA4C,yBAAAzB,EAAAS,OJM7C,IAACoN,CIN4C,GAAAjO,EAAA,mBAExE,CAAC/E,EAAUkE,IAER+P,EAAwB,eAAAhR,GAAA2B,EAAAA,EAAAA,GAAAC,mBAAAC,MAAG,SAAAgB,EAAOC,GAAU,IAAAgO,EAAA,OAAAlP,mBAAAK,MAAA,SAAAc,GAAA,cAAAA,EAAAZ,KAAAY,EAAAX,MAAA,cAAAW,EAAAZ,KAAA,EAAAY,EAAAX,KAAA,EAEtBnB,IAAgB,OAAzB,OAAT6P,EAAS/N,EAAAT,KAAAS,EAAAX,KAAG,EAEZkB,EAAAA,EAAM2N,MAAM,GAADhS,OAAImR,GAAgB,2BAAAnR,OAA0B6D,GAAM,KAAM,CACzEU,QAAS,CACPC,cAAe,UAAFxE,OAAY6R,MAE3B,OAOmC,OALrC9S,EAAM,uBAAwB,CAC5BkT,gBAAiB,eACjBC,YAAa,qBAGfpU,EAASyS,GAAuB1M,IAAKC,EAAAX,KAAA,GAE/BkO,IAAY,QAClBM,EAAS,MAAM7N,EAAAX,KAAA,iBAAAW,EAAAZ,KAAA,GAAAY,EAAAY,GAAAZ,EAAA,SAEf6N,EAAQ7N,EAAAY,IACRC,EAAAA,EAAOC,MAAKd,EAAAY,GAAM,CAAEG,QAAS,oCAAF7E,OAAA8D,EAAAY,MAA+C,yBAAAZ,EAAAJ,OAAA,GAAAE,EAAA,mBAE7E,gBAvB6ByI,GAAA,OAAAtL,EAAAgD,MAAA,KAAAzC,UAAA,KAyBxB6Q,EAAsB,eAAAtD,GAAAnM,EAAAA,EAAAA,GAAAC,mBAAAC,MAAG,SAAAqB,EAAOJ,GAAU,IAAAgO,EAAA,OAAAlP,mBAAAK,MAAA,SAAAoB,GAAA,cAAAA,EAAAlB,KAAAkB,EAAAjB,MAAA,cAAAiB,EAAAlB,KAAA,EAAAkB,EAAAjB,KAAA,EAEpBnB,IAAgB,OAAzB,OAAT6P,EAASzN,EAAAf,KAAAe,EAAAjB,KAAG,EACZkB,EAAAA,EAAK,OAAQ,GAADrE,OAAImR,GAAgB,sBAAAnR,OAAqB6D,GAAM,CAC/DU,QAAS,CACPC,cAAe,UAAFxE,OAAY6R,MAE3B,cAAAzN,EAAAjB,KAAA,EACIiP,QAAQC,WAAW,CAACT,IAAsBP,MAAc,OAC9DM,EAAS,MAAMvN,EAAAjB,KAAA,iBAAAiB,EAAAlB,KAAA,GAAAkB,EAAAM,GAAAN,EAAA,SAEfuN,EAAQvN,EAAAM,IACRC,EAAAA,EAAOC,MAAKR,EAAAM,GAAM,CAAEG,QAAS,mCAAF7E,OAAAoE,EAAAM,MAC3B5G,EAASsS,IAAmB,IAAO,yBAAAhM,EAAAV,OAAA,GAAAO,EAAA,mBAEtC,gBAf2B8K,GAAA,OAAAF,EAAA9K,MAAA,KAAAzC,UAAA,KAiB5B,MAAO,CAAEsD,MAAAA,EAAOgN,mBAAAA,EAAoBG,yBAAAA,EAA0BI,uBAAAA,EAChE,ECvEaG,GAAY,SAAH1S,GAA8C,IAAxCsM,EAAItM,EAAJsM,KAClBpO,GAAaI,EAAAA,EAAAA,YAAWgT,IAAxBpT,SACAiU,EAA6BP,KAA7BO,yBACAhT,GAAUC,EAAAA,EAAAA,gBAAVD,MAEFwT,EAAgB,eAAAxR,GAAA2B,EAAAA,EAAAA,GAAAC,mBAAAC,MAAG,SAAAC,EAAOgB,GAAU,OAAAlB,mBAAAK,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OACxCqP,YAAW,WACT1U,EAASZ,IAAe,IACxBY,EAAS2S,GAAuB5M,GAClC,GAAG,KAEHkO,EAAyBlO,GAEzB9E,EAAM,uBAAwB,CAC5BkT,gBAAiB,MACjBC,YAAa,4BACZ,wBAAAjP,EAAAS,OAAA,GAAAb,EAAA,KACJ,gBAZqBwJ,GAAA,OAAAtL,EAAAgD,MAAA,KAAAzC,UAAA,KActB,OACEvE,EAAAA,QAAAA,cAAA,OACEC,UAAU,yCACV,eAAa,aACbwD,QAAS,WAAF,OAAQ+R,EAAiBrG,EAAKrI,GAAG,EACxC5C,KAAK,gBAELlE,EAAAA,QAAAA,cAAA,OAAKC,UAAU,wCACbD,EAAAA,QAAAA,cAAA,QAAM,wBAAAiD,OAAuBkM,EAAK9O,OAAS8O,EAAKrH,QAAQ4N,cAIhE,EC/BMtB,IAAmBrV,EAAAA,EAAAA,KAAYK,sBCH/BgV,IAAmBrV,EAAAA,EAAAA,KAAYK,sBCFxBuW,GAAiC,WAC5C,IAAQjU,EAAUC,EAAAA,SAAVD,MACAsL,EAAWC,EAAAA,QAAXD,OACAlL,EAASC,EAAAA,SAATD,KACRZ,GAA4BC,EAAAA,EAAAA,YAAWgT,IAA/BrT,EAAKI,EAALJ,MAAOC,EAAQG,EAARH,SAEf6U,EDFwC,WAIxC,IAAQ3Q,GAAmBC,EAAAA,EAAAA,qBAAnBD,eACRyP,EAAkC1U,EAAAA,QAAAA,UAAe,GAAM2U,GAAApT,EAAAA,EAAAA,GAAAmT,EAAA,GAAhDjH,EAASkH,EAAA,GAAEkB,EAAYlB,EAAA,GACtB5T,GAAaI,EAAAA,EAAAA,YAAWgT,IAAxBpT,SAEF+U,EAAmB,eAAAjT,GAAA8C,EAAAA,EAAAA,GAAAC,mBAAAC,MAAG,SAAAC,IAAA,IAAAgP,EAAA,OAAAlP,mBAAAK,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OAEL,OAFKF,EAAAC,KAAA,EAExB0P,GAAa,GAAM3P,EAAAE,KAAA,EACKnB,IAAgB,OAAzB,OAAT6P,EAAS5O,EAAAI,KAAAJ,EAAAE,KAAG,EAEZkB,EAAAA,EAAK,OAAQ,GAADrE,OAAImR,GAAgB,4BAA4B,CAChE5M,QAAS,CACP,eAAgB,mBAChBC,cAAe,UAAFxE,OAAY6R,IAE3BnI,OAAQ,CACN4H,MAtBoB,OAwBtB,OAAArO,EAAAE,KAAA,gBAAAF,EAAAC,KAAA,EAAAD,EAAAyB,GAAAzB,EAAA,SAEFnF,EAASsS,IAAmB,IAC5BzL,EAAAA,EAAOC,MAAK3B,EAAAyB,GAAM,CAAEG,QAAS,+BAAF7E,OAAAiD,EAAAyB,MAA0C,QAEjD,OAFiDzB,EAAAC,KAAA,GAErE0P,GAAa,GAAO3P,EAAA6P,OAAA,6BAAA7P,EAAAS,OAAA,GAAAb,EAAA,wBAEvB,kBApBwB,OAAAjD,EAAAmE,MAAA,KAAAzC,UAAA,KAsBzB,MAAO,CAAEuR,oBAAAA,EAAqBrI,UAAAA,EAChC,CC7B6CuI,GAAnCF,EAAmBF,EAAnBE,oBAAqBrI,EAASmI,EAATnI,UAQ7B,OANArK,EAAAA,EAAAA,YAAU,WACJtC,EAAMwS,iBACRvS,EAASZ,IAAe,GAE5B,GAAG,CAACW,EAAMwS,gBAAiBvS,IAGzBf,EAAAA,QAAAA,cAAAA,EAAAA,QAAAA,SAAA,KACEA,EAAAA,QAAAA,cAAC0B,EAAK,CAAC6B,OAAQzC,EAAMgT,mBACnB9T,EAAAA,QAAAA,cAAA,OAAKC,UAAU,2EACbD,EAAAA,QAAAA,cAAA,QAAMC,UAAU,YAAW,4BAC3BD,EAAAA,QAAAA,cAAA,UAAQyD,QAAS,WAAF,OAAQ1C,EAASoS,IAAqB,GAAO,EAAE,eAAa,kBACzEnT,EAAAA,QAAAA,cAAC8B,EAAI,CAAC4B,MAAM,SACV1D,EAAAA,QAAAA,cAAC8B,EAAK6B,MAAMC,MAAK,SAIvB5D,EAAAA,QAAAA,cAAC0B,EAAMwQ,KAAI,KACTlS,EAAAA,QAAAA,cAAA,SAAG,iFAELA,EAAAA,QAAAA,cAAC0B,EAAM4Q,OAAM,KACXtS,EAAAA,QAAAA,cAACgN,EAAM,CAACvJ,QAAS,WAAF,OAAQ1C,EAASoS,IAAqB,GAAO,EAAEX,KAAK,YAAY1O,OAAQ,iBAAiB,UAGxG9D,EAAAA,QAAAA,cAACgN,EAAM,CACLvJ,SAAOkC,EAAAA,EAAAA,GAAAC,mBAAAC,MAAE,SAAAC,IAAA,OAAAF,mBAAAK,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EACD0P,IAAqB,OAC3B/U,EAASoS,IAAqB,IAAQ,wBAAAjN,EAAAS,OAAA,GAAAb,EAAA,KAExC0M,KAAK,UACL1O,OAAQ,gBAEP2J,GAAazN,EAAAA,QAAAA,cAACgN,EAAOiJ,OAAM,MAAI,WAO5C,E,WC5CI,GAAU,CAAC,EAEf,GAAQxW,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,O,eCmB7CoW,GAAiC,SAAHrT,GAAsE,IAxCjFsT,EAgBxBC,EACAC,EACAC,EACAC,EAEFC,EACEC,EACAC,EAiByC5O,EAAOjF,EAAPiF,QACvChG,EAASC,EAAAA,SAATD,KAEF6U,EAAwC,YAA5B7O,EAAQJ,KAAKkP,WAC/B,OACE5W,EAAAA,QAAAA,cAAA,OAAKC,UAAU,8DACbD,EAAAA,QAAAA,cAAA,KAAGC,UAAU,YAAY,eAAa,4CACpCD,EAAAA,QAAAA,cAAA,QAAMC,UAAU,QAAO,cACvBD,EAAAA,QAAAA,cAAA,QAAMC,UAAU,mCAAmC6H,EAAQJ,KAAKmP,iBAElE7W,EAAAA,QAAAA,cAAA,KACEC,UAAU,YACV,mDAAAgD,OAAkD0T,EAAY,aAAe,cAE7E3W,EAAAA,QAAAA,cAAA,QAAMC,UAAU,QAAQ0W,EAAY,UAAY,aAChD3W,EAAAA,QAAAA,cAAA,QAAMC,UAAU,oCAvDQkW,EAwDLQ,EAAY7O,EAAQJ,KAAKoP,UAAYhP,EAAQJ,KAAKqP,UAvCrEV,GADAD,EAAO,IAAIY,KAAKb,IACLc,UACXX,EAjBS,CACb,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,YAKmBF,EAAKc,YACpBX,EAAOH,EAAKe,cAEdX,EAAQJ,EAAKgB,WACXX,EAAUL,EAAKiB,aACfX,EAASF,GAAS,GAAK,OAAS,OAElCA,EAAQ,GACVA,GAAS,GACU,IAAVA,IACTA,EAAQ,IAGH,GAAPvT,OAAUoT,EAAG,KAAApT,OAAIqT,EAAK,KAAArT,OAAIsT,EAAI,KAAAtT,OAAIuT,EAAK,KAAAvT,OAAIwT,EAAQ3L,WAAWwM,SAAS,EAAG,KAAI,KAAArU,OAAIyT,OA4B5EC,GACA3W,EAAAA,QAAAA,cAAA,KAAGC,UAAU,YAAY,eAAa,4CACpCD,EAAAA,QAAAA,cAAA,QAAMC,UAAU,oBACdD,EAAAA,QAAAA,cAAA,QAAMC,UAAU,6BACdD,EAAAA,QAAAA,cAAC8B,EAAI,CAAC4B,MAAM,QAAQF,KAAK,MACvBxD,EAAAA,QAAAA,cAAC8B,EAAK6B,MAAM4T,MAAK,OACZ,UAIXvX,EAAAA,QAAAA,cAAA,QAAMC,UAAU,+CAA8C,kCAE5DD,EAAAA,QAAAA,cAAA,WAAM,sBAOlB,ECzEawX,GAA0C,SAAH3U,GAAmE,IAA7DiF,EAAOjF,EAAPiF,QACxD,OACE9H,EAAAA,QAAAA,cAAA,OAAKC,UAAU,4BAA4B,eAAa,8CACtDD,EAAAA,QAAAA,cAAA,KAAGC,UAAU,aACXD,EAAAA,QAAAA,cAAA,QAAMC,UAAU,QAAO,cACvBD,EAAAA,QAAAA,cAAA,QACEyX,MAAO3P,EAAQJ,KAAKmP,eACpB5W,UAAU,kCACV,eAAa,+BAEZ6H,EAAQJ,KAAKmP,iBAGlB7W,EAAAA,QAAAA,cAAA,KAAGC,UAAU,aACXD,EAAAA,QAAAA,cAAA,QAAMC,UAAU,QAAO,kBACvBD,EAAAA,QAAAA,cAAA,QAAMyX,MAAO3P,EAAQJ,KAAKgQ,WAAYzX,UAAU,kCAAkC,eAAa,eAC5F6H,EAAQJ,KAAKgQ,aAKxB,ECxBaC,GAA0B,SAAH9U,GAAyE,IAAnEmL,EAAOnL,EAAPmL,QAAS4J,EAAQ/U,EAAR+U,SACjD,OACE5X,EAAAA,QAAAA,cAAA,OAAKC,UAAU,uDACbD,EAAAA,QAAAA,cAAA,KAAGC,UAAU,YAAY,eAAa,qCACpCD,EAAAA,QAAAA,cAAA,QAAMC,UAAU,QAAO,WACvBD,EAAAA,QAAAA,cAAA,QAAMC,UAAU,mCAAmC+N,IAEpD4J,EAGP,ECNaC,GAA4B,SAAHhV,GAAiE,IAA3DiF,EAAOjF,EAAPiF,QAClC9F,GAAUC,EAAAA,EAAAA,gBAAVD,MAEF8V,EAAa/U,MAAMgV,KAAK,IAAIC,IAAIlQ,EAAQJ,KAAK3D,KAAI,SAACoL,GAAmB,OAAKA,EAAKiH,IAAI,MACnF6B,EAAkBnQ,EAAQJ,KAAKlD,OAE/B0T,EAAuBJ,EAC1B/T,KAAI,SAACoU,GACJ,MAAO,CACLA,UAAAA,EACAC,QAAStQ,EAAQJ,KAAK6C,QAAO,SAAAvG,GAAO,OAAAA,EAAJoS,OAAsC+B,CAAS,IAEnF,IACCE,SAAQ,SAAAF,GAAS,OAAIA,EAAUC,OAAO,IAEnCE,EAAwB,SAACC,GAAqB,OAAK,SAACnQ,GACxDpG,EAAM,uBAAwB,CAC5BkT,gBAAiB,MACjBC,YAAa,kCACbqD,KAAM,GAAFvV,OAAKiV,EAAqBxN,QAAQ6N,GAAU,EAAC,KAAAtV,OAAIgV,GACrDQ,UAAYrQ,EAAMG,OAA6BiB,KAC/CwE,QAASlG,EAAQ4Q,aAErB,CAAC,EAED,OACE1Y,EAAAA,QAAAA,cAAAA,EAAAA,QAAAA,SAAA,KACG8X,EAAW/T,KAAI,SAACoU,GACf,OACEnY,EAAAA,QAAAA,cAAA,OAAKiE,IAAKkU,GACRnY,EAAAA,QAAAA,cAAA,KAAGC,UAAU,YAAY,eAAa,iCACpCD,EAAAA,QAAAA,cAAA,QAAMC,UAAU,QAAO,aACvBD,EAAAA,QAAAA,cAAA,QAAMyX,MAAOU,EAAWlY,UAAU,oCAC/BkY,IAGLnY,EAAAA,QAAAA,cAAA,OAAKC,UAAU,YAAY,eAAa,+BACtCD,EAAAA,QAAAA,cAAA,QAAMC,UAAU,QAAO,WACvBD,EAAAA,QAAAA,cAAA,OAAKC,UAAU,4DACZ6H,EAAQJ,KACN6C,QAAO,SAACgO,GAAqB,OAAKA,EAAOnC,OAAS+B,CAAS,IAC3DpU,KAAI,SAACwU,GACJ,IAAQI,EAAyDJ,EAAzDI,UAAWC,EAA8CL,EAA9CK,cAAeC,EAA+BN,EAA/BM,YAAaC,EAAkBP,EAAlBO,QAAS1C,EAASmC,EAATnC,KAExD,OACEpW,EAAAA,QAAAA,cAAA,KACEyX,MAAK,GAAAxU,OAAK0V,EAAS,QAAA1V,OAAO6V,GAC1B7Y,UAAU,6CACVuJ,KAAI,4BAAAvG,OAA8B4V,EAAW,eAAA5V,OAAc2V,GAC3D3U,IAAG,GAAAhB,OAAK0V,EAAS,KAAA1V,OAAI6V,EAAO,KAAA7V,OAAImT,GAChC3S,QAAS6U,EAAsBC,IAAQ,GAAAtV,OAEnC0V,EAAS,QAAA1V,OAAO6V,GAG1B,MAKZ,IAGN,ECnDaC,GAA4B,SAAHlW,GAAiE,IAAAmW,EAA3DlR,EAAOjF,EAAPiF,QAClC9F,GAAUC,EAAAA,EAAAA,gBAAVD,MAEFiW,EAAkBnQ,EAAQJ,KAAKlD,OAC/ByU,EAfS,SAACC,GAChB,OAAQA,GACN,IAAK,2BACH,MAAO,eACT,IAAK,kBACH,MAAO,cACT,QACE,MAAO,GAEb,CAMgBC,CAAwB,QAAhBH,EAAClR,EAAQJ,KAAK,UAAE,IAAAsR,OAAA,EAAfA,EAAiBE,aAElCpB,EAAa/U,MAAMgV,KAAK,IAAIC,IAAIlQ,EAAQJ,KAAK3D,KAAI,SAACoL,GAAmB,OAAKA,EAAKiH,IAAI,MACnF8B,EAAuBJ,EAC1B/T,KAAI,SAACoU,GACJ,MAAO,CACLA,UAAAA,EACAC,QAAStQ,EAAQJ,KAAK6C,QAAO,SAAAvG,GAAO,OAAAA,EAAJoS,OAAsC+B,CAAS,IAEnF,IACCE,SAAQ,SAAAF,GAAS,OAAIA,EAAUC,OAAO,IAEnCgB,EAAwB,SAACb,GAAqB,OAAK,SAACnQ,GACxDpG,EAAM,uBAAwB,CAC5BkT,gBAAiB,MACjBC,YAAa,kCACbqD,KAAM,GAAFvV,OAAKiV,EAAqBxN,QAAQ6N,GAAU,EAAC,KAAAtV,OAAIgV,GACrDQ,UAAYrQ,EAAMG,OAA6BiB,KAC/CwE,QAASlG,EAAQ4Q,aAErB,CAAC,EAED,OACE1Y,EAAAA,QAAAA,cAAAA,EAAAA,QAAAA,SAAA,KACEA,EAAAA,QAAAA,cAAA,KAAGC,UAAU,YAAY,eAAa,iCACpCD,EAAAA,QAAAA,cAAA,QAAMC,UAAU,QAAO,SACvBD,EAAAA,QAAAA,cAAA,QAAMyX,MAAOwB,EAAOhZ,UAAU,oCAC3BgZ,IAGJnB,EAAW/T,KAAI,SAACoU,GACf,OACEnY,EAAAA,QAAAA,cAAA,OAAKiE,IAAKkU,GACRnY,EAAAA,QAAAA,cAAA,KAAGC,UAAU,YAAY,eAAa,iCACpCD,EAAAA,QAAAA,cAAA,QAAMC,UAAU,QAAO,aACvBD,EAAAA,QAAAA,cAAA,QAAMyX,MAAOU,EAAWlY,UAAU,oCAC/BkY,IAGLnY,EAAAA,QAAAA,cAAA,OAAKC,UAAU,YAAY,eAAa,+BACtCD,EAAAA,QAAAA,cAAA,QAAMC,UAAU,QAAO,WACvBD,EAAAA,QAAAA,cAAA,OAAKC,UAAU,4DACZ6H,EAAQJ,KACN6C,QAAO,SAACgO,GAAqB,OAAKA,EAAOnC,OAAS+B,CAAS,IAC3DpU,KAAI,SAACwU,GACJ,IAAQc,EAA0Cd,EAA1Cc,SAAUP,EAAgCP,EAAhCO,QAAS1C,EAAuBmC,EAAvBnC,KAAMkD,EAAiBf,EAAjBe,aAC3BC,EAAoC,6BAAvBhB,EAAOW,YAA6C,YAAc,GAE/EM,EAAeH,GAAYC,EAAe,IAAHrW,OAAOqW,GAAiB,IAAM,OAASR,EACpF,OACE9Y,EAAAA,QAAAA,cAAA,KACEyX,MAAO+B,EACPvZ,UAAU,6CACVuJ,KAAI,kBAAAvG,OAAoBsW,EAAU,YAClCtV,IAAG,GAAAhB,OAAKoW,EAAQ,KAAApW,OAAI6V,EAAO,KAAA7V,OAAImT,GAC/B3S,QAAS2V,EAAsBb,IAE9BiB,EAGP,MAKZ,IAGN,ECrFaC,GAA+B,SAAH5W,GAAoE,IAA9DiF,EAAOjF,EAAPiF,QAC7C,OACE9H,EAAAA,QAAAA,cAAA,OAAKC,UAAU,4BAA4B,eAAa,kCACtDD,EAAAA,QAAAA,cAAA,KAAGC,UAAU,aACXD,EAAAA,QAAAA,cAAA,QAAMC,UAAU,QAAO,cACvBD,EAAAA,QAAAA,cAAA,QACEyX,MAAO3P,EAAQJ,KAAKmP,eACpB5W,UAAU,kCACV,eAAa,0BAEZ6H,EAAQJ,KAAKmP,iBAGlB7W,EAAAA,QAAAA,cAAA,KAAGC,UAAU,aACXD,EAAAA,QAAAA,cAAA,QAAMC,UAAU,QAAO,aACvBD,EAAAA,QAAAA,cAAA,QAAMyX,MAAO3P,EAAQJ,KAAKgQ,WAAYzX,UAAU,kCAAkC,eAAa,eAC5F6H,EAAQJ,KAAKgQ,aAKxB,ECrBagC,GAA2B,SAAH7W,GAAgE,IAA1DiF,EAAOjF,EAAPiF,QACzC,OACE9H,EAAAA,QAAAA,cAAA,OAAKC,UAAU,4BAA4B,eAAa,8BACtDD,EAAAA,QAAAA,cAAA,KAAGC,UAAU,QACXD,EAAAA,QAAAA,cAAA,SAAI8H,EAAQJ,KAAKiS,YAAe,4BAIxC,ECRaC,GAA2B,SAAH/W,GAAgE,IAAAgX,EAAAC,EAAAC,EAAAC,EAA1DlS,EAAOjF,EAAPiF,QACnCmS,GAAwB,QAAZJ,EAAA/R,EAAQJ,YAAI,IAAAmS,OAAA,EAAZA,EAAclB,aAAyB,QAAhBmB,EAAIhS,EAAQJ,YAAI,IAAAoS,OAAA,EAAZA,EAAchB,SAC3D,OACE9Y,EAAAA,QAAAA,cAAA,OAAKC,UAAU,wDACbD,EAAAA,QAAAA,cAAA,KAAGC,UAAU,YAAY,eAAa,mCACpCD,EAAAA,QAAAA,cAAA,QAAMC,UAAU,QAAO,QACvBD,EAAAA,QAAAA,cAAA,QAAMyX,MAAO3P,EAAQJ,KAAKwS,KAAMja,UAAU,mCACvC6H,EAAQJ,KAAKwS,OAGlBla,EAAAA,QAAAA,cAAA,KAAGC,UAAU,YAAY,eAAa,mCACpCD,EAAAA,QAAAA,cAAA,QAAMC,UAAU,QAAO,QACvBD,EAAAA,QAAAA,cAAA,QAAMyX,MAAO3P,EAAQJ,KAAKgQ,WAAYzX,UAAU,oCAC7C6H,EAAQJ,KAAKgQ,aAGjBuC,GACCja,EAAAA,QAAAA,cAAA,KAAGC,UAAU,YAAY,eAAa,8BACpCD,EAAAA,QAAAA,cAAA,QAAMC,UAAU,QAAO,WACvBD,EAAAA,QAAAA,cAAA,QACEyX,MAAK,GAAAxU,OAAK6E,EAAQJ,KAAKiR,UAAS,QAAA1V,OAAmB,QAAnB8W,EAAOjS,EAAQJ,YAAI,IAAAqS,OAAA,EAAZA,EAAcjB,SACrD7Y,UAAU,oCAAkC,GAAAgD,OAExC6E,EAAQJ,KAAKiR,UAAS,QAAA1V,OAAmB,QAAnB+W,EAAOlS,EAAQJ,YAAI,IAAAsS,OAAA,EAAZA,EAAclB,WAM3D,ECvCYqB,GAAgB,SAAhBA,GAAgB,OAAhBA,EAAgB,4BAAhBA,EAAgB,8BAAhBA,EAAgB,8BAAhBA,EAAgB,0CAAhBA,EAAgB,wDAAhBA,EAAgB,wDAAhBA,EAAgB,oCAAhBA,EAAgB,0DAAhBA,EAAgB,4BAAhBA,CAAgB,MCiPtBC,GAAe,SAACpM,EAAiBqM,EAAsCC,GAC3E,IAAAC,EAA6Btb,OAAO0T,SAA5B6H,EAAMD,EAANC,OAAQvH,EAAQsH,EAARtH,SAEhB,OAAQjF,GACN,IAAK,SACH,MAAO,GAAP/K,OAAUuX,GAAMvX,OAAGgQ,EAAQ,aAAAhQ,OAAYoX,EAAWxB,YAAW,eAAA5V,OAAcoX,EAAWzB,eACxF,IAAK,cACH,OAAO0B,EAAgB,GAAHrX,OAAMuX,GAAMvX,OAAGgQ,GAAQ,GAAAhQ,OAAQuX,EAAM,OAC3D,QACE,MAAO,GAEb,E,WCjPI,GAAU,CAAC,EAEf,GAAQ/a,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCX1D,IAWa2a,GAAmB,SAAH5X,GAAwE,IFQhExC,EAC3B2B,EACF0Y,EACAJ,EEX2BnL,EAAItM,EAAJsM,KAAM1L,EAAOZ,EAAPY,QAASkX,EAAQ9X,EAAR8X,SAC1CC,GFO6Bva,EEnBT,SAAC8O,GAC3B,OAAIA,EAAK9O,OAAS8Z,GAAiBU,oBAC1B1L,EAAK9O,KAEuB,YAAjC8O,EAAKrH,QAAQJ,KAAKkP,WACbuD,GAAiBW,2BAEjBX,GAAiBY,0BAE5B,CAGuCC,CAAoB7L,GFQjDnN,GAAUC,EAAAA,EAAAA,gBAAVD,MACF0Y,GAAWO,EAAAA,EAAAA,MACXX,EAAgBxH,MAEmDoI,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACtEf,GAAiBgB,aAAe,CAC/BC,SAAU,WAAF,MAAQ,eAAe,EAC/BC,IAAK,CACHxX,KAAM,OACNyX,eAAgB,SAACnM,EAAoBpO,GACnC,IAAAwa,EAAyFpM,EAAKrH,QAAQJ,KAA9FoR,EAAOyC,EAAPzC,QAASD,EAAW0C,EAAX1C,YAAaF,EAAS4C,EAAT5C,UAAWC,EAAa2C,EAAb3C,cAAe4C,EAAQD,EAARC,SAAUxN,EAAOuN,EAAPvN,QAASyN,EAASF,EAATE,UACrE/S,EAsLM,SAACsF,EAAiByN,GAItC,MAAgB,WAAZzN,GAAsC,qBAAdyN,EACnB,mBACc,WAAZzN,EACF,SAEAA,CAEX,CAjM6B0N,CAAc1N,EAASyN,GACpCE,EAAqBC,EAAAA,0BAA0BxZ,cAAcyZ,sBAAsBnT,GACnFoT,EAAiB,CAAEhD,QAAAA,EAASD,YAAAA,EAAaF,UAAAA,EAAWC,cAAAA,EAAe4C,SAAAA,EAAUC,UAAAA,GACnFzZ,EAAM,uBAAwB,CAC5BkT,gBAAiB,MACjBC,YAAa,6BACbsD,UAAW2B,GAAapM,EAAS8N,EAAgBxB,KAEnDqB,SAAAA,EAAqBG,GACrB/a,EAASZ,IAAe,GAC1B,GAEF4b,iBAAkBnC,KAEnBO,GAAiB6B,cAAgB,CAChCZ,SAAU,WAAF,MAAQ,cAAc,EAC9BW,iBAAkB,SAAFlZ,GAAA,IAAKiF,EAAOjF,EAAPiF,QAAO,OAC1B9H,EAAAA,QAAAA,cAAC2X,GAAuB,CAAC3J,QAAS,oBAChChO,EAAAA,QAAAA,cAAC6X,GAAyB,CAAC/P,QAASA,IACZ,IAG7BqS,GAAiB8B,cAAgB,CAChCb,SAAU,WAAF,MAAQ,cAAc,EAC9BW,iBAAkB,SAAF/X,GAAA,IAAK8D,EAAO9D,EAAP8D,QAAO,OAC1B9H,EAAAA,QAAAA,cAAC2X,GAAuB,CAAC3J,QAAS,oBAChChO,EAAAA,QAAAA,cAAC+Y,GAAyB,CAACjR,QAASA,IACZ,IAG7BqS,GAAiBW,2BAA6B,CAC7CM,SAAU,WAAF,MAAQ,oBAAoB,EACpCC,IAAK,CACHxX,KAAM,WACAyX,eAAc,SAACnM,EAAoBpO,GAAkC,OAAA4E,EAAAA,EAAAA,GAAAC,mBAAAC,MAAA,SAAAC,IAAA,IAAAoW,EAAArF,EAAAC,EAAAqF,EAAAC,EAAAC,EAAAC,EAAAC,EAAAhX,EAAAiX,EAAApV,EAAAqV,EAAA,OAAA7W,mBAAAK,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OAEb,OAFa8V,EACjB/M,EAAKrH,QAAQJ,KAA7DmP,EAAcqF,EAAdrF,eAAgBC,EAASoF,EAATpF,UAAWqF,EAAgBD,EAAhBC,iBAC7BC,EAAY,IAAIpF,KAAKF,GAAW4F,UAAY1F,KAAK2F,MAAKzW,EAAAE,KAAA,GACnCwW,EAAAA,EAAAA,iBAAe,OAQrC,GARqCP,EAAAnW,EAAAI,KAAhCgW,EAAMD,EAANC,OAERta,EAAM,uBAAwB,CAC5Bsa,OAAAA,EACApH,gBAAiB,MACjB2H,YAAa,cACb1H,YAAa,8CACb0B,eAAAA,KAGEuF,EAAW,CAAFlW,EAAAE,KAAA,SACwF,OAAnGrF,EAAS6S,GAAwB,8CAAD3Q,OAA+C4T,EAAc,OAAM3Q,EAAAQ,OAAA,kBAI3D,OAApC6V,EAAkB,mBAAkBrW,EAAAE,KAAA,GACtB0W,EAAAA,eAAe7X,iBAAgB,QACiB,OAD9DM,EAAKW,EAAAI,KACLkW,EAA0BO,mBAAmBZ,GAAiBjW,EAAAC,KAAA,GAAAD,EAAAE,KAAA,GAE3CkB,EAAAA,EAAMC,IAAI,GAADtE,OAAIsZ,EAAe,iBAAAtZ,OAAgBuZ,GAA2B,CAC5FhV,QAAS,CACPC,cAAe,UAAFxE,OAAYsC,IAE3ByX,aAAc,gBACd,QALI5V,EAAQlB,EAAAI,KAMRmW,EAAO,CACXQ,QAAS7V,EAASM,KAClBwV,SAAU,GAAFja,OAAK4T,EAAc,UAE7B9V,EAASZ,IAAe,KACxBgd,EAAAA,EAAAA,cAAaV,GAAMvW,EAAAE,KAAA,iBAAAF,EAAAC,KAAA,GAAAD,EAAAyB,GAAAzB,EAAA,UAEnB0B,EAAAA,EAAOC,MAAK3B,EAAAyB,GAAM,CAAEG,QAAS,8BAAF7E,OAAAiD,EAAAyB,MAC3B5G,EACE6S,GAAwB,gDAAD3Q,OAC2B4T,EAAc,yBAEhE,yBAAA3Q,EAAAS,OAAA,GAAAb,EAAA,mBAxCqEH,EA0C3E,GAEFoW,iBAAkB7F,KAEnBiE,GAAiBY,2BAA6B,CAC7CK,SAAU,WAAF,MAAQ,oBAAoB,EACpCW,iBAAkB7F,GAClBmF,IAAK,CACHxX,KAAM,eACAyX,eAAc,SAACnM,EAAoBpO,GAAkC,OAAA4E,EAAAA,EAAAA,GAAAC,mBAAAC,MAAA,SAAAgB,IAAA,IAAAuW,EAAAC,EAAAxG,EAAAyG,EAAAhB,EAAA,OAAA1W,mBAAAK,MAAA,SAAAc,GAAA,cAAAA,EAAAZ,KAAAY,EAAAX,MAAA,OACnC,OADmCgX,EAC9BjO,EAAKrH,QAAQJ,KAAhD2V,EAAcD,EAAdC,eAAgBxG,EAAcuG,EAAdvG,eAAc9P,EAAAX,KAAA,GACbwW,EAAAA,EAAAA,iBAAe,OAAAU,EAAAvW,EAAAT,KAAhCgW,EAAMgB,EAANhB,OAERta,EAAM,uBAAwB,CAC5Bsa,OAAAA,EACApH,gBAAiB,MACjB2H,YAAa,cACb1H,YAAa,kDACb0B,eAAAA,IAGF9V,EAASZ,IAAe,IACxBua,EAAS2C,GAAgB,wBAAAtW,EAAAJ,OAAA,GAAAE,EAAA,IAbgDlB,EAc3E,KAGHwU,GAAiBoD,iBAAmB,CACnCnC,SAAU,WAAF,MAAQ,kCAAkC,EAClDC,IAAK,CACHxX,KAAM,OACAyX,eAAc,SAACnM,EAAsCpO,GAAkC,OAAA4E,EAAAA,EAAAA,GAAAC,mBAAAC,MAAA,SAAAqB,IAAA,IAAAsW,EAAAH,EAAAxG,EAAA4G,EAAAC,EAAAC,EAAArB,EAAAsB,EAAAC,EAAAC,EAAA,OAAAlY,mBAAAK,MAAA,SAAAoB,GAAA,cAAAA,EAAAlB,KAAAkB,EAAAjB,MAAA,OAC1B,OAD0BoX,EACrBrO,EAAKrH,QAAQJ,KAA3E2V,EAAcG,EAAdH,eAAgBxG,EAAc2G,EAAd3G,eAAgB4G,EAAYD,EAAZC,aAAcC,EAAWF,EAAXE,YAAWrW,EAAAjB,KAAA,GACxCwW,EAAAA,EAAAA,iBAAe,OAAAe,EAAAtW,EAAAf,KAAhCgW,EAAMqB,EAANrB,OAAMsB,GAAAG,EAAAA,GAAAA,GAEiBL,GAAxBG,EAAWD,EAAA,GAAKE,EAAIF,EAAAI,MAAA,GAE3Bhc,EAAM,uBAAwB,CAC5Bsa,OAAAA,EACAO,YAAa,cACb3H,gBAAiB,MACjBC,YAAa,uCACbsI,aAAAA,EACA5G,eAAAA,EACAoH,OAAQ,GAAFhb,OAAK4a,EAAYK,eAAajb,OAAG6a,EAAKK,KAAK,OAGnDpd,EAASZ,IAAe,IACxBua,EAAS2C,GAAgB,wBAAAhW,EAAAV,OAAA,GAAAO,EAAA,IAjBkEvB,EAkB7F,GAEFoW,iBAAkBtC,KAEnBU,GAAiBiE,aAAe,CAC/BhD,SAAU,SAACjM,GAAgC,SAAAlM,OACtCkM,EAAKrH,QAAQJ,KAAKgQ,WAAU,YAAAzU,OAAWkM,EAAKrH,QAAQJ,KAAK2W,eAAc,EAC5EhD,IAAK,CACHxX,KAAM,OACAyX,eAAc,SAACnM,EAAkCpO,GAAkC,OAAA4E,EAAAA,EAAAA,GAAAC,mBAAAC,MAAA,SAAAyY,IAAA,IAAAC,EAAAC,EAAAC,EAAA9E,EAAA+E,EAAAhB,EAAAiB,EAAArC,EAAA,OAAA1W,mBAAAK,MAAA,SAAA2Y,GAAA,cAAAA,EAAAzY,KAAAyY,EAAAxY,MAAA,OACtB,OADsBmY,EACjBpP,EAAKrH,QAAQJ,KAA3E8W,EAAUD,EAAVC,WAAYC,EAAQF,EAARE,SAAU9E,EAAU4E,EAAV5E,WAAY+E,EAAUH,EAAVG,WAAYhB,EAAWa,EAAXb,YAAWkB,EAAAxY,KAAA,GACxCwW,EAAAA,EAAAA,iBAAe,OAAA+B,EAAAC,EAAAtY,KAAhCgW,EAAMqC,EAANrC,OAERta,EAAM,uBAAwB,CAC5Bsa,OAAAA,EACAO,YAAa6B,EACbxJ,gBAAiB,MACjBC,YAAa,mCACbsJ,SAAAA,EACA9E,WAAAA,EACAsE,OAAQP,GAAe,WAGzB3c,EAASZ,IAAe,IACxBua,EAAS8D,GAAY,wBAAAI,EAAAjY,OAAA,GAAA2X,EAAA,IAfkE3Y,EAgBzF,GAEFoW,iBAAkBrC,KAEnBS,GAAiB0E,4BAA8B,CAC9CzD,SAAU,WAAF,MAAQ,4CAA4C,EAC5DC,IAAK,CACHxX,KAAM,OACAyX,eAAc,SAACnM,EAAiDpO,GAAkC,OAAA4E,EAAAA,EAAAA,GAAAC,mBAAAC,MAAA,SAAAiZ,IAAA,IAAAC,EAAA1B,EAAAxG,EAAA4G,EAAAuB,EAAA1C,EAAA,OAAA1W,mBAAAK,MAAA,SAAAgZ,GAAA,cAAAA,EAAA9Y,KAAA8Y,EAAA7Y,MAAA,OAClD,OADkD2Y,EAC7C5P,EAAKrH,QAAQJ,KAA9D2V,EAAc0B,EAAd1B,eAAgBxG,EAAckI,EAAdlI,eAAgB4G,EAAYsB,EAAZtB,aAAYwB,EAAA7Y,KAAA,GAC3BwW,EAAAA,EAAAA,iBAAe,OAAAoC,EAAAC,EAAA3Y,KAAhCgW,EAAM0C,EAAN1C,OAERta,EAAM,uBAAwB,CAC5Bsa,OAAAA,EACAO,YAAa,cACb3H,gBAAiB,MACjBC,YAAa,sCACbsI,aAAAA,EACA5G,eAAAA,IAGF9V,EAASZ,IAAe,IACxBua,EAAS2C,GAAgB,wBAAA4B,EAAAtY,OAAA,GAAAmY,EAAA,IAd6EnZ,EAexG,GAEFoW,iBAAkBvE,KAEnB2C,GAAiBU,yBAAsBpW,GAGjBpE,IErMjByB,EAASC,EAAAA,SAATD,KACRZ,GAA4BC,EAAAA,EAAAA,YAAWgT,IAA/BrT,EAAKI,EAALJ,MAAOC,EAAQG,EAARH,SAEfK,GAAkCC,EAAAA,EAAAA,WAAS,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA1C8d,EAAS5d,EAAA,GAAE6d,EAAY7d,EAAA,GAkB9B,IAhBA8B,EAAAA,EAAAA,YAAU,WACR,GAAItC,EAAMmT,sBAAwB9E,EAAKrI,GAAI,CACzC,IAAMsY,EAAe3J,YAAW,WAC9B0J,GAAa,EACf,GAAG,MACGE,EAAgB5J,YAAW,WAC/B1U,EAAS2S,GAAuB,IAChCyL,GAAa,EACf,GAAG,MACH,OAAO,WACLG,aAAaF,GACbE,aAAaD,EACf,CACF,CACF,GAAG,CAACve,EAAMmT,oBAAqBlT,EAAUoO,EAAKrI,MAEzC8T,EACH,OAAO,KAGT,IAAM2E,EAAuB,eAAAvb,GAAA2B,EAAAA,EAAAA,GAAAC,mBAAAC,MAAG,SAAAC,IAAA,IAAA0Z,EAAA,OAAA5Z,mBAAAK,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,QAEP,KADwE,QAAvEoZ,EAAG1e,EAAMiT,cAAc9I,MAAK,SAAA6G,GAAK,OAAAA,EAAFhL,KAAgCqI,EAAKrI,EAAE,WAAC,IAAA0Y,OAAA,EAApEA,EAAsEC,UACjEhc,EAAQ0L,EAAKrI,IAAI,wBAAAZ,EAAAS,OAAA,GAAAb,EAAA,KAClD,kBAH4B,OAAA9B,EAAAgD,MAAA,KAAAzC,UAAA,KAKvBmb,EAA6B,eAAAC,GAAAha,EAAAA,EAAAA,GAAAC,mBAAAC,MAAG,SAAAgB,EAAOuB,GAAiB,OAAAxC,mBAAAK,MAAA,SAAAc,GAAA,cAAAA,EAAAZ,KAAAY,EAAAX,MAAA,OAC5DgC,EAAMwX,kBACNjF,EAASxL,EAAKrI,IAAI,wBAAAC,EAAAJ,OAAA,GAAAE,EAAA,KACnB,gBAHkCyI,GAAA,OAAAqQ,EAAA3Y,MAAA,KAAAzC,UAAA,KAKnC,GAAIzD,EAAMmT,sBAAwB9E,EAAKrI,GAAI,CACzC,IAAM+Y,EAAUhX,SAASiX,cAAc,0BAAD7c,OAA2BkM,EAAKrI,GAAE,OACxE+Y,GAAWA,EAAQE,eAAe,CAAEC,SAAU,SAAUC,MAAO,UAAWC,OAAQ,OACpF,CACA,OACElgB,EAAAA,QAAAA,cAAA,OACEkE,KAAK,SACLic,SAAU,EACVlgB,UAAS,uGAAAgD,OACPnC,EAAMmT,sBAAwB9E,EAAKrI,IAAM,iBAAgB,KAAA7D,OAAIic,GAAa,6BAC5Ezb,QAAS8b,EACT,oCAAAtc,OAAmCkM,EAAK9O,MACxCyG,GAAE,qBAAA7D,OAAuBkM,EAAKrI,KAE9B9G,EAAAA,QAAAA,cAAA,OAAKC,UAAU,+CACXkP,EAAKsQ,SAAWzf,EAAAA,QAAAA,cAAA,OAAKC,UAAU,wCACjCD,EAAAA,QAAAA,cAAA,MAAIC,UAAU,iCAAiC,eAAa,2BACzD2a,EAAQQ,SAASjM,IAEpBnP,EAAAA,QAAAA,cAAA,UACEC,UAAU,+GACVwD,QAASic,EACT,eAAa,4BAEb1f,EAAAA,QAAAA,cAAC8B,EAAI,KACH9B,EAAAA,QAAAA,cAAC8B,EAAK6B,MAAMC,MAAK,CAAC6T,MAAM,2BAI9BzX,EAAAA,QAAAA,cAAA,OAAKC,UAAU,6BACbD,EAAAA,QAAAA,cAAC4a,EAAQmB,iBAAgB,CAACjU,QAASqH,EAAKrH,WAE1C9H,EAAAA,QAAAA,cAAA,OAAKC,UAAU,iCACbD,EAAAA,QAAAA,cAAA,QAAMC,UAAU,wDACbkP,EAAKiR,UAAY,0BAEnBxF,EAAQS,KACPrb,EAAAA,QAAAA,cAAA,UACE,eAAa,+BACbC,UAAU,4DACVwD,QAAS,WAAF,OAAQmX,EAAQS,IAAIC,eAAenM,EAAMpO,EAAS,GAExD6Z,EAAQS,IAAIxX,OAMzB,ECpGawc,GAA4B,SAAHxd,GAAwE,IAAlEyd,EAAQzd,EAARyd,SAAU5Y,EAAI7E,EAAJ6E,KAC5C6Y,EAAUC,EAAAA,WAAVD,MACRE,EAA6DhM,KAArDO,EAAwByL,EAAxBzL,yBAA0BI,EAAsBqL,EAAtBrL,uBAClC,OAAIkL,EACKtgB,EAAAA,QAAAA,cAACugB,EAAK,CAAC9I,MAAM,gEAAgEpX,KAAK,UAGvE,IAAhBqH,EAAKlD,OACAxE,EAAAA,QAAAA,cAAA,OAAKC,UAAU,yCAAwC,6CAI9DD,EAAAA,QAAAA,cAAAA,EAAAA,QAAAA,SAAA,KACG0H,EAAK3D,KAAI,SAAC2c,GAA0B,OACnC1gB,EAAAA,QAAAA,cAACya,GAAgB,CACfxW,IAAKyc,EAAa5Z,GAClBqI,KAAMuR,EACNjd,QAASuR,EACT2F,SAAUvF,GACV,IAIV,ECpBauL,GAAqB,WAChC,IAAAvf,GAA8CC,EAAAA,EAAAA,WAAS,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAtDwf,EAAetf,EAAA,GAAEuf,EAAkBvf,EAAA,GAC1Cmf,EAAsChM,KAA9B5M,EAAK4Y,EAAL5Y,MAAOgN,EAAkB4L,EAAlB5L,mBACf3T,GAA4BC,EAAAA,EAAAA,YAAWgT,IAA/BrT,EAAKI,EAALJ,MAAOC,EAAQG,EAARH,SACPiB,GAAUC,EAAAA,EAAAA,gBAAVD,MACAgL,EAAWC,EAAAA,QAAXD,OACA8T,EAAUnf,EAAAA,SAAVmf,MACFpG,GAAWO,EAAAA,EAAAA,MACX8F,GAAeC,EAAAA,EAAAA,QAAuB,OAE5CC,EAAAA,EAAAA,mBAAkBF,GAAc,kBAAMF,GAAmB,EAAM,IjBT3B,WACpC,IAAA3f,GAA4BC,EAAAA,EAAAA,YAAWgT,IAA/BpT,EAAQG,EAARH,SAAUD,EAAKI,EAALJ,MAEVogB,GAAaC,EADCxf,EAAAA,GAAdwf,aACAD,SAER9f,GAAgCC,EAAAA,EAAAA,eAASoD,GAAUnD,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA5CggB,EAAQ9f,EAAA,GAAE+f,EAAW/f,EAAA,GAC5B+D,GAAkChE,EAAAA,EAAAA,WAAS,GAAMiE,GAAA/D,EAAAA,EAAAA,GAAA8D,EAAA,GAA1Cic,EAAShc,EAAA,GAAEic,EAAYjc,EAAA,GAEtBgP,EAAeD,GAA4BtT,GAA3CuT,WACAO,EAAuBJ,KAAvBI,mBAEA5P,GAAmBC,EAAAA,EAAAA,qBAAnBD,gBAER7B,EAAAA,EAAAA,YAAU,WACJge,IAAatgB,EAAMV,aACrB8gB,EAASlhB,EAAAA,QAAAA,cAACuV,GAAS,CAACpG,KAAMiS,KAE5BC,OAAY5c,EACd,GAAG,CAAC2c,EAAUF,EAAUpgB,EAAMV,eAE9BgD,EAAAA,EAAAA,YAAU,WACRme,GAAa,GACb,IAAMC,EAAe,eAAA3e,GAAA8C,EAAAA,EAAAA,GAAAC,mBAAAC,MAAG,SAAAC,IAAA,IAAA2b,EAAAC,EAAAC,EAAA,OAAA/b,mBAAAK,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EACCnB,IAAgB,OAuCpC,OAvCGwc,EAAQvb,EAAAI,MACRob,GAASE,EAAAA,GAAAA,IAAQ,IAAK,CAC1BC,QAAS,IACTC,KAAM,GAAF7e,OAAKmR,GAAgB,cACzB2N,KAAM,CACJxc,MAAO,UAAFtC,OAAYwe,OAIdO,GAAG,WAAW,WACnBpa,EAAAA,EAAOqa,KAAK,uBAADhf,OAAwBye,EAAO5a,IAC5C,IAGA4a,EAAOM,GAAG,QAAQ,SAAUta,GAC1B,GAAIia,IAAYlS,KAAKM,UAAUrI,KAC7B4M,IACAO,IACIyM,GAAW,CACb,IAAMY,EAAQ,CACZpa,QAAS,CAAE4N,YAAahO,EAAKgO,aAC7BrV,KAAMqH,EAAKya,iBACXrb,GAAIY,EAAK0a,gBAGXf,EAAYa,EACd,CAGFP,EAAUlS,KAAKM,UAAUrI,EAC3B,IACAga,EAAOM,GAAG,qBAAqB,WAC7Bpa,EAAAA,EAAOqa,KAAK,oBACd,IACAP,EAAOM,GAAG,iBAAiB,SAAAK,GACzBza,EAAAA,EAAOC,MAAMwa,EAAK,CAAEva,QAAS,qCAC/B,IACA4Z,EAAOM,GAAG,SAAS,SAAAK,GACjBza,EAAAA,EAAOC,MAAMwa,EAAK,CAAEva,QAAS,6BAC/B,IAAG5B,EAAAQ,OAAA,UAEI,WACLgb,EAAOY,IAAI,QACXZ,EAAOY,IAAI,WACXZ,EAAOY,IAAI,iBACXZ,EAAOY,IAAI,QACb,IAAC,yBAAApc,EAAAS,OAAA,GAAAb,EAAA,KACF,kBAhDoB,OAAAjD,EAAAmE,MAAA,KAAAzC,UAAA,KAkDrB,OADAid,IACO,WACLD,GAAa,EACf,CACF,GAAG,CAACD,EAAWhN,EAAYO,EAAoB5P,KAE/C7B,EAAAA,EAAAA,YAAU,WACRkR,IACAO,GACF,GAAG,CAACP,EAAYO,GAClB,CiB9DE0N,IACAnf,EAAAA,EAAAA,YAAU,YACPtC,EAAMgT,mBAAqBe,GAC9B,GAAG,CAAC/T,EAAMgT,kBAAmBe,KAE7BzR,EAAAA,EAAAA,YAAU,WACJtC,EAAMwS,iBACRmC,YAAW,kBAAM1U,EAASsS,IAAmB,GAAO,GAAE,MAEpDvS,EAAMoT,sBACRuB,YAAW,WACT1U,EAAS6S,GAAwB,IACnC,GAAG,KAEP,GAAG,CAAC9S,EAAMwS,gBAAiBxS,EAAMoT,qBAAsBnT,KAEvDqC,EAAAA,EAAAA,YAAU,WACHtC,EAAMV,aACTygB,GAAmB,EAEvB,GAAG,CAAC/f,EAAMV,cAEV,IAAMoiB,EAAkD,IAA/B1hB,EAAMiT,cAAcvP,OACvCie,EAAiB3hB,EAAMiT,eAAiBjT,EAAMiT,cAAcvP,OAAS,EAAI,YAAc,YAE7F,OACExE,EAAAA,QAAAA,cAAAA,EAAAA,QAAAA,SAAA,KACGc,EAAMV,aACLJ,EAAAA,QAAAA,cAAA,OACEC,UAAU,4FACV,eAAa,sBACb,qBAAmB,uBAEnBD,EAAAA,QAAAA,cAAA,OAAKC,UAAU,kGACbD,EAAAA,QAAAA,cAAA,UAAI,iBACJA,EAAAA,QAAAA,cAAA,OACEC,UAAS,wFAAAgD,OACP2d,EAAkB,iBAAmB,KAEvC,eAAa,4BACb,qBAAmB,4BACnB1X,IAAK6X,GAEL/gB,EAAAA,QAAAA,cAACgN,EAAM,CACLvJ,QAAS,WAAF,OAA2Bod,GAAlBD,EAAsE,EACtFpO,KAAK,SACL5H,MAAM,eACN9G,OAAO,eAEP9D,EAAAA,QAAAA,cAACgN,EAAOlL,KAAI,KACV9B,EAAAA,QAAAA,cAACgN,EAAOlL,KAAK6B,MAAM+e,UAAS,CAACjL,MAAM,mBAGtCmJ,GACC5gB,EAAAA,QAAAA,cAAA,OACEC,UAAU,2FACV,eAAa,iBAEbD,EAAAA,QAAAA,cAAA,OAAKC,UAAW,yBACdD,EAAAA,QAAAA,cAAA,UACEC,UAAS,2DAAAgD,OACwB,IAA/BnC,EAAMiT,cAAcvP,OAAe,gBAAkB,IAEvDf,QAAS,WACP1C,EAASoS,IAAqB,IAC9BnR,EAAM,uBAAwB,CAC5BkT,gBAAiB,MACjBC,YAAa,kCAEjB,EACA1C,SAAU+P,EACV,eAAa,oBAEbxiB,EAAAA,QAAAA,cAAA,QAAMC,UAAU,QAAO,eAG3BD,EAAAA,QAAAA,cAAA,OAAKC,UAAW,yBACdD,EAAAA,QAAAA,cAAA,UACEC,UAAU,0DACVwD,QAvFI,WACtBzB,EAAM,uBAAwB,CAC5BkT,gBAAiB,MACjBC,YAAa,mCAEfpU,EAASZ,IAAe,IACxBua,EAAS,6BACX,EAiFoB,eAAa,mCAEb1a,EAAAA,QAAAA,cAAA,QAAMC,UAAU,QAAO,iCAOnCD,EAAAA,QAAAA,cAAA,OAAKC,UAAS,2BAAAgD,OAA6Bwf,EAAc,uCACvDziB,EAAAA,QAAAA,cAACqgB,GAAyB,CAACC,WAAYzY,EAAOH,KAAM5G,EAAMiT,kBAI/DjT,EAAMgT,mBAAqB9T,EAAAA,QAAAA,cAAC2V,GAA8B,MAC1D7U,EAAMwS,iBAAmBtT,EAAAA,QAAAA,cAAC8gB,EAAK,CAACzgB,KAAK,SAAQ,0DAC7CS,EAAMoT,sBAAwBlU,EAAAA,QAAAA,cAAC8gB,EAAK,CAACzgB,KAAK,SAASS,EAAMoT,sBAGhE,E,WC1HI,GAAU,CAAC,EAEf,GAAQzU,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OChBnD,IAAM6iB,GAAmB,WAC9B,IAAMza,EAAUlI,EAAAA,QAAAA,SAChBkB,GAA4BC,EAAAA,EAAAA,YAAWgT,IAA/BrT,EAAKI,EAALJ,MAAOC,EAAQG,EAARH,SACPuT,EAAeD,GAA4BtT,GAA3CuT,YAER2M,EAAAA,EAAAA,mBAAkB/Y,GAAS,WACzBnH,EAASZ,IAAe,GAC1B,KAEAiD,EAAAA,EAAAA,YAAU,YACPtC,EAAMgT,mBAAqBQ,GAC9B,GAAG,CAACxT,EAAMgT,kBAAmBQ,IAE7B,IAAQtS,GAAUC,EAAAA,EAAAA,gBAAVD,MACA4gB,EAAUzV,EAAAA,SAAVyV,MACA9gB,EAASC,EAAAA,SAATD,KASR,OACE9B,EAAAA,QAAAA,cAAA,QAAMC,UAAU,6BAA6BiJ,IAAKhB,GAChDlI,EAAAA,QAAAA,cAAA,UACEyD,QAVkB,WACtB1C,EAASZ,IAAgBW,EAAMV,cAC/B4B,EAAM,qBAAsB,CAC1BmH,SAAU,4BAEd,EAMMlJ,UAAU,qCACV,eAAa,0BACb,qBAAmB,2BAEnBD,EAAAA,QAAAA,cAAA,QAAMC,UAAU,0DAA0D,eAAa,iBACpFa,EAAMkT,yBAA2B,GAChChU,EAAAA,QAAAA,cAAC4iB,EAAK,CAAC9hB,MAAM,QAAQ+hB,QAAQ,SAC1B/hB,EAAMkT,0BAA4B,IAAM,MAAQlT,EAAMkT,2BAI7DhU,EAAAA,QAAAA,cAAC8B,EAAI,CAAC4B,MAAM,wBACV1D,EAAAA,QAAAA,cAAC8B,EAAK6B,MAAMmf,oBAAmB,QAGnC9iB,EAAAA,QAAAA,cAAC2gB,GAAkB,MAGzB,E,ykBCrDO,IAAMrc,GAAU,WAA0F,IAAzFxD,EAA6ByD,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG5D,GAAc+D,EAAcH,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAClF,OAAQC,EAAOrE,MACb,KAAKH,GAAWI,eACd,OAAAqE,GAAAA,GAAA,GACK7D,GAAK,IACRV,YAAasE,EAAOnE,UAGxB,KAAKL,GAAWkT,qBACd,OAAAzO,GAAAA,GAAA,GACK7D,GAAK,IACRgT,kBAAmBpP,EAAOnE,UAG9B,KAAKL,GAAWqT,mBACd,OAAA5O,GAAAA,GAAA,GACK7D,GAAK,IACRwS,gBAAiB5O,EAAOnE,UAG5B,KAAKL,GAAW6U,iBACd,OAAApQ,GAAAA,GAAA,GACK7D,GAAK,IACRiT,cAAerP,EAAOnE,UAG1B,KAAKL,GAAWuT,uBACd,OAAA9O,GAAAA,GAAA,GACK7D,GAAK,IACRiT,cAAejT,EAAMiT,cAAchQ,KAAI,SAAA2c,GAAY,OACjDA,EAAa5Z,KAAOpC,EAAOnE,QAAOoE,GAAAA,GAAA,GAAQ+b,GAAY,IAAEjB,SAAS,IAASiB,CAAY,MAI5F,KAAKxgB,GAAWsU,4BACd,OAAA7P,GAAAA,GAAA,GACK7D,GAAK,IACRkT,yBAA0BtP,EAAOnE,UAGrC,KAAKL,GAAWyT,uBACd,OAAAhP,GAAAA,GAAA,GACK7D,GAAK,IACRmT,oBAAqBvP,EAAOnE,UAGhC,KAAKL,GAAW2T,wBACd,OAAAlP,GAAAA,GAAA,GACK7D,GAAK,IACRoT,qBAAsBxP,EAAOnE,UAGjC,QACE,OAAOO,EAGb,E,sBChDI,GAAU,CAAC,EAEf,GAAQrB,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,O,cCftD,GAAU,CAAC,EAEf,GAAQL,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCtB1D,IAAQgC,GAASC,EAAAA,SAATD,KAUKihB,GAAgB,SAACC,GAC5B,IAAQC,EAA2CD,EAA3CC,UAAWrL,EAAgCoL,EAAhCpL,SAAUsL,EAAsBF,EAAtBE,KAAMpc,EAAgBkc,EAAhBlc,GAAIrD,EAAYuf,EAAZvf,QAEvC,OACEzD,EAAAA,QAAAA,cAAA,OAAKC,UAAS,yBAAAgD,OAA2BggB,EAAY,2BAA6B,KAChFjjB,EAAAA,QAAAA,cAAA,UACE,eAAc8G,EACd,qBAAoBA,EACpBA,GAAIA,EACJ7G,UAAU,+DACVwD,QAASA,GAETzD,EAAAA,QAAAA,cAAC8B,GAAI,CAACgC,OAAM,GAAAb,OAAK6D,EAAE,SAASpD,MAAM,wBAC/Bwf,GAEHljB,EAAAA,QAAAA,cAAA,QAAMC,UAAU,QAAQ2X,IAIhC,ECbQ9V,GAASC,EAAAA,SAATD,KAEKqhB,GAAY,SAAHtgB,GAOa,IANjCugB,EAAMvgB,EAANugB,OACAlJ,EAAIrX,EAAJqX,KACAmJ,EAAcxgB,EAAdwgB,eACAC,EAAczgB,EAAdygB,eACAC,EAAS1gB,EAAT0gB,UACAC,EAAmB3gB,EAAnB2gB,oBAEM9I,GAAWO,EAAAA,EAAAA,MACTjZ,GAAUC,EAAAA,EAAAA,gBAAVD,MACAqL,GAASnI,EAAAA,EAAAA,qBAATmI,KAkBFoW,EAAwB,SAACC,EAAgBC,GAAkB,OAAK,WACpEJ,GAAU,GACVvhB,EAAM2hB,GACND,GACF,CAAC,EAYD,OACE1jB,EAAAA,QAAAA,cAAA,OAAKC,UAAW,+BACdD,EAAAA,QAAAA,cAAA,OAAKC,UAAW,gGACdD,EAAAA,QAAAA,cAAA,MAAIC,UAAW,kCAAmCwX,MAAOyC,GACtDA,GAEHla,EAAAA,QAAAA,cAAA,OAAKC,UAAW,kEAAmEwX,MAAO4L,GACvFA,GAEFG,GACCxjB,EAAAA,QAAAA,cAAC+iB,GAAa,CACZG,KAAMljB,EAAAA,QAAAA,cAAC8B,GAAK6B,MAAMigB,QAAO,MACzB9c,GAAG,mBACHrD,QAASggB,GAjCQ,WACzB/I,EAASmJ,EAAAA,GAAcC,iBACzB,GA+B6D,uCACpD,oBAIFR,GACCtjB,EAAAA,QAAAA,cAAC+iB,GAAa,CACZG,KAAMljB,EAAAA,QAAAA,cAAC8B,GAAK6B,MAAMogB,SAAQ,MAC1Bjd,GAAG,cACHrD,QAASggB,GA9CI,WACrB/I,EAASmJ,EAAAA,GAAcG,YACzB,GA4CyD,kCAChD,eAIHhkB,EAAAA,QAAAA,cAAC+iB,GAAa,CACZG,KAAMljB,EAAAA,QAAAA,cAAC8B,GAAK6B,MAAMsgB,cAAa,MAC/Bnd,GAAG,kBACHrD,QAASggB,GA1DU,WACzB/I,EAASmJ,EAAAA,GAAcK,gBACzB,GAwD2D,sCACpD,mBAGDlkB,EAAAA,QAAAA,cAAC+iB,GAAa,CACZG,KAAMljB,EAAAA,QAAAA,cAAC8B,GAAK6B,MAAMmf,oBAAmB,MACrChc,GAAG,2BACHrD,QAASggB,GArEmB,WAClC/I,EAASmJ,EAAAA,GAAcM,0BACzB,GAmEoE,+CAC7D,6BAGA5W,EAAAA,EAAAA,YAAWF,IACVrN,EAAAA,QAAAA,cAAC+iB,GAAa,CAACG,KAAMljB,EAAAA,QAAAA,cAAC8B,GAAK6B,MAAMygB,IAAG,MAAKtd,GAAG,cAAcrD,QApDvC,WAET,SADAkM,aAAaC,QAAQ,0BAEnCD,aAAaa,WAAW,0BAExBb,aAAaM,QAAQ,yBAA0B,QAEjDhR,OAAO0T,SAASC,QAClB,GA4C+F,wBAIzF5S,EAAAA,QAAAA,cAAC+iB,GAAa,CAACE,WAAS,EAACC,KAAMljB,EAAAA,QAAAA,cAAC8B,GAAK6B,MAAM0gB,OAAM,MAAKvd,GAAG,SAASrD,QAAS2f,GAAQ,aAM3F,ECtGakB,GAAU,SAACtB,GACtB,IAAA5hB,GAA4BC,EAAAA,EAAAA,WAAkB,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA7CmC,EAAMjC,EAAA,GAAEiiB,EAASjiB,EAAA,GAClBijB,GAAUvD,EAAAA,EAAAA,QAAuB,OAEvCC,EAAAA,EAAAA,mBAAkBsD,GAAS,kBAAMhB,GAAU,EAAM,IAEjD,IAIQzhB,EAASC,EAAAA,SAATD,KAER,OACE9B,EAAAA,QAAAA,cAAA,OAAKC,UAAU,SAASiJ,IAAKqb,GAC3BvkB,EAAAA,QAAAA,cAAA,UACE,eAAa,YACb,qBAAmB,YACnBC,UAAS,+CAAAgD,OACPM,GAAU,YAAW,4CAEvBE,QAdS,WACb8f,GAAWhgB,EACb,IAcQyf,EAAM1I,eAAiB0I,EAAM9I,KAC/Bla,EAAAA,QAAAA,cAAC8B,EAAI,CAAC4B,MAAM,uBAAuBF,KAAK,MACtCxD,EAAAA,QAAAA,cAAC8B,EAAK6B,MAAMsgB,cAAa,OAE3BjkB,EAAAA,QAAAA,cAAC8B,EAAI,CAACgC,OAAO,gBAAgBJ,MAAM,uBAAuBF,KAAK,MAC5DD,EAASvD,EAAAA,QAAAA,cAAC8B,EAAK6B,MAAM6gB,UAAS,MAAMxkB,EAAAA,QAAAA,cAAC8B,EAAK6B,MAAM8gB,YAAW,QAG/DlhB,GAAUvD,EAAAA,QAAAA,cAACmjB,IAASuB,EAAAA,GAAAA,GAAA,GAAK1B,EAAK,CAAEO,UAAWA,KAGlD,E,WCtCI,GAAU,CAAC,EAEf,GAAQ9jB,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCnB1D,IAAQ4B,GAAUC,EAAAA,SAAVD,MACAijB,GAAgB9a,EAAAA,OAAhB8a,YACA3X,GAAkBC,EAAAA,QAAlBD,OAAQ4X,GAAU3X,EAAAA,QAAV2X,MACRrE,GAAUC,EAAAA,WAAVD,MAEFsE,GACJ,qHAmBIC,GAAmB,SAAH9gB,GAAgE,IAA1D+gB,EAAO/gB,EAAP+gB,QAASC,EAAWhhB,EAAXghB,YAC7BnjB,GAAamf,EAAAA,EAAAA,aAAOvc,GAC1BrD,GAA0BC,EAAAA,EAAAA,UAAiB,IAAGC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAvC6jB,EAAK3jB,EAAA,GAAE4jB,EAAQ5jB,EAAA,GACtB+D,GAA4BhE,EAAAA,EAAAA,UAAkB,IAAGiE,GAAA/D,EAAAA,EAAAA,GAAA8D,EAAA,GAA1C8f,EAAM7f,EAAA,GAAE8f,EAAS9f,EAAA,GACxBwL,GAA8BzP,EAAAA,EAAAA,WAAkB,GAAK0P,GAAAxP,EAAAA,EAAAA,GAAAuP,EAAA,GAA9CuU,EAAOtU,EAAA,GAAEuU,EAAUvU,EAAA,GAC1BE,GAAkC5P,EAAAA,EAAAA,WAAkB,GAAM6P,GAAA3P,EAAAA,EAAAA,GAAA0P,EAAA,GAAnDiO,EAAShO,EAAA,GAAEiO,EAAYjO,EAAA,IAE9B9N,EAAAA,EAAAA,YAAU,WACRkiB,EAAWH,EAAOxiB,QAAO,SAAC4iB,EAAGzT,GAAA,IAAI0T,EAAK1T,EAAL0T,MAAK,OAAOD,GAAOC,CAAK,IAAE,GAC7D,GAAG,CAACL,KAEJ/hB,EAAAA,EAAAA,YAAU,WACR,IAAMqiB,EAAU,SAACrd,GAAsB,IAAAsd,EACd,QAAnBA,EAAC7jB,EAAWwG,eAAO,IAAAqd,GAAlBA,EAAoBpd,SAASF,EAAMG,SACtC4W,GAAa,EAEjB,EAEA,OADAtW,SAASC,iBAAiB,QAAS2c,GAC5B,WACL5c,SAASE,oBAAoB,QAAS0c,EACxC,CACF,IAEA,IAAME,GAAY1d,EAAAA,EAAAA,UAAQ,kBAAQkd,EAAO3gB,QAA2B6gB,GAAjBF,EAAO3gB,MAAiB,GAAG,CAAC2gB,EAAO3gB,OAAQ6gB,IACxFO,GAA6B3d,EAAAA,EAAAA,UAAQ,yCAAAhF,OAA8BoiB,EAAU,QAAU,OAAM,GAAI,CAACA,IAClGQ,GAAc5d,EAAAA,EAAAA,UAAQ,kBAAMiX,IAAa+F,aAAK,EAALA,EAAOa,OAAOthB,QAAS,CAAC,GAAE,CAACygB,EAAO/F,IAE3E6G,GAAiBrgB,EAAAA,EAAAA,cAAY,SAACsgB,GACJ,MAA1BA,EAAEC,cAAchd,OAClBic,EAASc,EAAEC,cAAchd,MAE7B,GAAG,IAEGid,GAAoBxgB,EAAAA,EAAAA,cACxB,SAACygB,GACCf,EAAUD,EAAO5a,QAAO,SAAAoV,EAAYhR,GAAC,IAAV1F,EAAK0W,EAAL1W,MAAK,MAAU,GAAAhG,OAAGgG,EAAK,KAAAhG,OAAI0L,KAAQwX,CAAa,IAC7E,GACA,CAAChB,IAGGiB,GAAW1gB,EAAAA,EAAAA,cAAY,WAC3B,IAAM2gB,EAAexB,GAAYyB,KAAKrB,GACtCC,EAAS,IACTE,EAAU,GAADniB,QAAAC,EAAAA,EAAAA,GAAKiiB,GAAM,CAAE,CAAElc,MAAOgc,EAAOO,MAAOa,KAC/C,GAAG,CAACpB,EAAOE,IAELoB,GAAkB7gB,EAAAA,EAAAA,cACtB,SAACsgB,GACgB,UAAVA,EAAE/hB,KAA6B,MAAV+hB,EAAE/hB,MAAkBghB,GAC5CmB,IAEY,cAAVJ,EAAE/hB,MAAwBghB,EAAMzgB,QAAY2gB,EAAO3gB,QACrD4gB,EAAUD,EAAOnH,MAAM,GAAI,GAE/B,GACA,CAACiH,EAAOE,EAAQiB,IAelB,OACEpmB,EAAAA,QAAAA,cAAAA,EAAAA,QAAAA,SAAA,KACEA,EAAAA,QAAAA,cAAC0B,GAAMuQ,OAAM,KAAC,qBACdjS,EAAAA,QAAAA,cAAA,OAAKC,UAAU,uCACbD,EAAAA,QAAAA,cAAC0B,GAAMwQ,KAAI,KACTlS,EAAAA,QAAAA,cAAA,OAAKkE,KAAK,eAAejE,UAAU,aAAaumB,QAAS,WAAF,OAAQrH,GAAa,EAAK,GAC/Enf,EAAAA,QAAAA,cAAC2kB,GAAW,CAAC8B,UAAQ,EAAC7b,MAAM,WAAWsP,KAAK,SAC1Cla,EAAAA,QAAAA,cAAC4kB,GAAM8B,KAAI,KA9FzB,SAAqBvB,EAAiBwB,GACpC,OAAOxB,EAAOphB,KAAI,SAAAlB,EAAmB8L,GAAC,IAAjB1F,EAAKpG,EAALoG,MAAOuc,EAAK3iB,EAAL2iB,MAAK,OAC/BxlB,EAAAA,QAAAA,cAAC4kB,GAAMgC,KAAI,CACT3iB,IAAG,GAAAhB,OAAKgG,EAAK,KAAAhG,OAAI0L,GACjB7K,OAAM,GAAAb,OAAKgG,EAAK,KAAAhG,OAAI0L,EAAC,SACrB1F,MAAOA,EACP4d,SAAU,WAAF,OAAQF,EAAY,GAAD1jB,OAAIgG,EAAK,KAAAhG,OAAI0L,GAAI,EAC5C9G,OAAQ2d,GACR,GAEN,CAqFiBsB,CAAY3B,EAAQe,GACrBlmB,EAAAA,QAAAA,cAAA,OAAKC,UAAU,qBAAqBiJ,IAAKrH,GACvC7B,EAAAA,QAAAA,cAAA,SACE8G,GAAG,QACH7G,UAAU,qDACV8K,YAAY,sBACZ1K,KAAK,OACL,eAAc,cACd4I,MAAOgc,EACPja,SAAU+a,EACVgB,UAAWR,IAEZV,GACC7lB,EAAAA,QAAAA,cAAA,OAAKC,UAAU,iBAAiB,eAAa,iBAC3CD,EAAAA,QAAAA,cAAA,OAAKC,UAAU,8DACbD,EAAAA,QAAAA,cAAA,OACEkE,KAAK,eACLjE,UAAU,kEACVwD,QAAS2iB,GACV,mBACiBpmB,EAAAA,QAAAA,cAAA,QAAMC,UAAU,aAAaglB,UAS7DjlB,EAAAA,QAAAA,cAAA,OAAKC,UAAU,8CACbolB,GAAWrlB,EAAAA,QAAAA,cAACugB,GAAK,CAAC9I,MAAM,2DAA2DpX,KAAK,UAC1FL,EAAAA,QAAAA,cAAA,OAAKC,UAAW2lB,GAA4B,kIAMhD5lB,EAAAA,QAAAA,cAAC0B,GAAM4Q,OAAM,KACXtS,EAAAA,QAAAA,cAACgN,GAAM,CAACvJ,QApDY,WACxB,IAAMujB,EAAiBjkB,MAAMgV,KAAK,IAAIC,IAAImN,EAAOphB,KAAI,SAAAkjB,GAAQ,OAAAA,EAALhe,MAAkBwB,aAAa,MACvF2a,EAAU,IACVJ,EAAYgC,EACd,EAgD0CvU,SAAUkT,EAAW7hB,OAAQ,uBAAuB,gBAGxF9D,EAAAA,QAAAA,cAACgN,GAAM,CAACvJ,QA7DQ,WACpB2hB,EAAU,IACVF,EAAS,IACTH,GACF,EAyDsCvS,KAAK,YAAY1O,OAAQ,iBAAiB,WAMlF,ECvJQpC,GAAUC,EAAAA,SAAVD,MAkBHwlB,GAAI,SAAJA,GAAI,OAAJA,EAAI,gBAAJA,EAAI,kBAAJA,CAAI,EAAJA,IAAI,IAKHC,GAAkB,SAAHtkB,GASoB,IARvCkiB,EAAOliB,EAAPkiB,QACAxhB,EAAMV,EAANU,OACAyhB,EAAWniB,EAAXmiB,YACAoC,EAAQvkB,EAARukB,SACAC,EAAaxkB,EAAbwkB,cACAC,EAAOzkB,EAAPykB,QACApd,EAAUrH,EAAVqH,WACArC,EAAKhF,EAALgF,MAEAzG,GAAwBC,EAAAA,EAAAA,UAAe6lB,GAAKK,QAAOjmB,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA5ComB,EAAIlmB,EAAA,GAAEmmB,EAAOnmB,EAAA,GAOdomB,GAAgBhiB,EAAAA,EAAAA,cAAY,WAChC+hB,EAAQP,GAAKK,QACbF,IACAtC,GACF,GAAG,CAACsC,EAAetC,IAEb4C,GAAuBjiB,EAAAA,EAAAA,cAAY,WACvC+hB,EAAQP,GAAKK,QACbF,GACF,GAAG,CAACA,IAEJ,OACErnB,EAAAA,QAAAA,cAAC0B,GAAK,CAAC6B,OAAQA,EAAQwhB,QAAS2C,GAC7BF,IAASN,GAAKK,QAAUvnB,EAAAA,QAAAA,cAAC8kB,GAAgB,CAACE,YAlBrB,SAACG,GACzBsC,EAAQP,GAAKU,SACb5C,EAAYG,EACd,EAe+EJ,QAAS2C,IACnFF,IAASN,GAAKU,SACb5nB,EAAAA,QAAAA,cAAC6nB,GAAoB,CACnBT,SAAUA,EACVld,WAAYA,EACZod,QAASA,EACTvC,QAAS2C,EACTI,YAAaH,EACb9f,MAAOA,IAKjB,EClEMkgB,GAAgB,iBAQVC,GAAgB,SAAhBA,GAAgB,OAAhBA,EAAgB,kBAAhBA,EAAgB,oBAAhBA,EAAgB,gBAAhBA,EAAgB,kCAAhBA,EAAgB,kBAAhBA,EAAgB,YAAhBA,CAAgB,MCPpBtmB,GAAUC,EAAAA,SAAVD,MACAumB,GAAuBC,EAAAA,MAAvBD,MAAOE,GAAgBD,EAAAA,MAAhBC,YACPjb,GAAeC,EAAAA,SAAfD,WACAqT,GAAUC,EAAAA,WAAVD,MACAvT,GAAWC,EAAAA,QAAXD,OAeFob,GAAwB,SAACC,GAC7B,OAAQA,GACN,KAAKL,GAAiBM,gBACpB,MAAO,aACT,KAAKN,GAAiBO,OAEtB,KAAKP,GAAiBQ,KACpB,MAAO,gBACT,QACE,OAAO,KAEb,EAEMC,GAAwB,SAACJ,GAC7B,OAAQA,GACN,KAAKL,GAAiBQ,KACpB,OAAO,EACT,KAAKR,GAAiBO,OACpB,OAAO,EACT,KAAKP,GAAiBM,gBACpB,OAAO,EACT,QACE,OAAO,EAEb,EA8BA,IAAMT,GAAuB,SAAH7jB,GAOoB,IAN5CojB,EAAQpjB,EAARojB,SACAld,EAAUlG,EAAVkG,WACAod,EAAOtjB,EAAPsjB,QACAzf,EAAK7D,EAAL6D,MACAkd,EAAO/gB,EAAP+gB,QACA+C,EAAW9jB,EAAX8jB,YAEMY,GAAiBzgB,EAAAA,EAAAA,UACrB,kBAAM/E,EAAAA,EAAAA,GAAIkkB,GAAU7kB,MAAK,SAAComB,EAAGC,GAAC,OAAKH,GAAsBE,EAAEN,QAAUI,GAAsBG,EAAEP,OAAO,GAAC,GACrG,CAACjB,IAEGyB,GAAwB5gB,EAAAA,EAAAA,UAC5B,kBAAMmf,EAAS7c,QAAO,SAAAuH,GAAA,IAAGuW,EAAMvW,EAANuW,OAAM,OAAOL,GAAiBM,kBAAoBD,CAAM,GAAC,GAClF,CAACjB,IAGG0B,GAAa7gB,EAAAA,EAAAA,UAAQ,kBAAOJ,EAAQ,QAAU,UAAU,GAAG,CAACA,IAElE,OAAIyf,EACKtnB,EAAAA,QAAAA,cAACkN,GAAU,MAQlBlN,EAAAA,QAAAA,cAAAA,EAAAA,QAAAA,SAAA,KACEA,EAAAA,QAAAA,cAAC0B,GAAMuQ,OAAM,KAAC,qBACdjS,EAAAA,QAAAA,cAAC0B,GAAMwQ,KAAI,KACRrK,GAAS7H,EAAAA,QAAAA,cAACugB,GAAK,CAAC9I,MAAM,qCAAqCpX,KAAK,WAC/DwH,GACA7H,EAAAA,QAAAA,cAAA,OAAKC,UAAU,2DACbD,EAAAA,QAAAA,cAACioB,GAAK,CAACc,cAAY,GACjB/oB,EAAAA,QAAAA,cAACioB,GAAMhW,OAAM,KACXjS,EAAAA,QAAAA,cAACioB,GAAMe,aAAY,CAACzW,MAAM,OAAOzL,GAAG,SAAQ,YAG5C9G,EAAAA,QAAAA,cAACioB,GAAMe,aAAY,CAACliB,GAAG,UAAS,sBAElC9G,EAAAA,QAAAA,cAACioB,GAAM/V,KAAI,KArEzB,SAAyBkV,GACvB,OAAOA,EAASrjB,KAAI,SAAAlB,GAAA,IAAGoiB,EAAKpiB,EAALoiB,MAAOoD,EAAMxlB,EAANwlB,OAAM,OAClCroB,EAAAA,QAAAA,cAACioB,GAAMgB,IAAG,CAAChlB,IAAKghB,GACdjlB,EAAAA,QAAAA,cAACioB,GAAMiB,KAAI,KACTlpB,EAAAA,QAAAA,cAACmoB,GAAW,KACVnoB,EAAAA,QAAAA,cAAA,QAAMC,UAAU,wBAAwBglB,KAG5CjlB,EAAAA,QAAAA,cAACioB,GAAMiB,KAAI,KACTlpB,EAAAA,QAAAA,cAACmoB,GAAW,KACVnoB,EAAAA,QAAAA,cAAA,QAAMC,UAAS,wBAAAgD,OAA0BmlB,GAAsBC,KAjDrC,SAACA,GACnC,OAAQA,GACN,KAAKL,GAAiBM,gBACpB,MAAO,eACT,KAAKN,GAAiBO,OACpB,MAAO,cACT,KAAKP,GAAiBQ,KACpB,MAAO,cACT,QACE,OAAO,KAEb,CAuCaW,CAAqBd,MAIlB,GAEhB,CAoD2Be,CAAgBV,MAIlCG,EAAsBrkB,OAAS,GAC9BxE,EAAAA,QAAAA,cAAA,KAAG,eAAc,kCAAmCC,UAAU,gBAAe,8FACiB,IAC5FD,EAAAA,QAAAA,cAAA,SAAIkK,GAAe,yDAGvBlK,EAAAA,QAAAA,cAAA,KAAGC,UAAU,gBAAe,sBACN,IACpBD,EAAAA,QAAAA,cAAA,KAAGwJ,KAAK,2BAA2BvJ,UAAU,gBAAe,qBAEvD,IAAI,6BAIbD,EAAAA,QAAAA,cAAC0B,GAAM4Q,OAAM,KACXtS,EAAAA,QAAAA,cAACgN,GAAM,CAACvJ,QArCQ,WACpBshB,GACF,EAmCsCjhB,OAAQ,eAAe,QAGvD9D,EAAAA,QAAAA,cAACgN,GAAM,CAACvJ,QAASqkB,EAAatV,KAAK,YAAY1O,OAAQ,mBACpDglB,IAKX,EC9IQhnB,GAASC,EAAAA,SAATD,KAkER,SAhEmB,WACjB,IAAAV,GAAkCC,EAAAA,EAAAA,WAAkB,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAnDioB,EAAS/nB,EAAA,GAAEgoB,EAAYhoB,EAAA,GACtB+L,GAASnI,EAAAA,EAAAA,qBAATmI,KACRkc,EF4B4B,WAC5B,IAAAnoB,GAA8BC,EAAAA,EAAAA,UAA4B,CACxD6I,WAAY,GACZoH,OAAQ,GACRkY,iBAAiB,IACjBloB,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAJKqoB,EAAOnoB,EAAA,GAAEooB,EAAUpoB,EAAA,GAK1B+D,GAA0BhE,EAAAA,EAAAA,WAAkB,GAAMiE,GAAA/D,EAAAA,EAAAA,GAAA8D,EAAA,GAA3CwC,EAAKvC,EAAA,GAAEsP,EAAQtP,EAAA,GACtBwL,GAAgCzP,EAAAA,EAAAA,UAAiC,IAAG0P,GAAAxP,EAAAA,EAAAA,GAAAuP,EAAA,GAA7DsW,EAAQrW,EAAA,GAAE4Y,EAAW5Y,EAAA,GAC5BE,GAA8B5P,EAAAA,EAAAA,WAAkB,GAAM6P,GAAA3P,EAAAA,EAAAA,GAAA0P,EAAA,GAA/CqW,EAAOpW,EAAA,GAAExD,EAAUwD,EAAA,GAC1B0Y,GAAiC1kB,EAAAA,EAAAA,qBAAzBD,EAAc2kB,EAAd3kB,eAAgBoI,EAAIuc,EAAJvc,KAElBwc,GAAuBnkB,EAAAA,EAAAA,cAAWC,EAAAA,EAAAA,GAAAC,mBAAAC,MAAC,SAAAC,IAAA,IAAAP,EAAA6B,EAAA,OAAAxB,mBAAAK,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAC,KAAA,EAAAD,EAAAE,KAAA,EAEjBnB,IAAgB,OAAzB,KAALM,EAAKW,EAAAI,MACA,CAAFJ,EAAAE,KAAA,eAAAF,EAAAE,KAAA,EACgBkB,EAAAA,EAAMC,IAAI,GAADtE,OAAI8kB,GAAa,aAAa,CAC5DvgB,QAAS,CACPC,cAAe,UAAFxE,OAAYsC,MAE3B,OAJI6B,EAAQlB,EAAAI,KAKdojB,EAAWtiB,EAASM,MAAM,OAAAxB,EAAAE,KAAA,iBAAAF,EAAAC,KAAA,GAAAD,EAAAyB,GAAAzB,EAAA,SAG5B0B,EAAAA,EAAOC,MAAK3B,EAAAyB,GAAI,CAAEG,QAAS,kCAAF7E,OAAAiD,EAAAyB,MAA2C,yBAAAzB,EAAAS,OAAA,GAAAb,EAAA,mBAErE,CAACb,IAEE6kB,EAAiB,eAAA9lB,GAAA2B,EAAAA,EAAAA,GAAAC,mBAAAC,MAAG,SAAAgB,EAAOse,GAAgB,IAAA5f,EAAA6B,EAAA,OAAAxB,mBAAAK,MAAA,SAAAc,GAAA,cAAAA,EAAAZ,KAAAY,EAAAX,MAAA,OAE/B,OADhBsH,GAAW,GACXkH,GAAS,GAAO7N,EAAAZ,KAAA,EAAAY,EAAAX,KAAA,EAEMnB,IAAgB,OAAzB,KAALM,EAAKwB,EAAAT,OACoB,OAAlB+G,EAAKxC,SAAiB,CAAA9D,EAAAX,KAAA,gBAAAW,EAAAX,KAAA,EACVkB,EAAAA,EAAMyiB,KAAK,GAAD9mB,OAC5B8kB,GAAa,oBAChB,CACEiC,YAAa7E,EAAOphB,KAAI,SAAAkhB,GAAK,MAAK,CAAEA,MAAAA,EAAO3T,OAAQmY,EAAQnY,OAAQ,KAErE,CACE9J,QAAS,CACPC,cAAe,UAAFxE,OAAYsC,MAG9B,OAVK6B,EAAQL,EAAAT,KAWdqjB,EAAYviB,EAASM,MACrBgG,GAAW,GAAO,QAAA3G,EAAAX,KAAA,iBAAAW,EAAAZ,KAAA,GAAAY,EAAAY,GAAAZ,EAAA,SAGpBa,EAAAA,EAAOC,MAAKd,EAAAY,GAAI,CAAEG,QAAS,8BAAF7E,OAAA8D,EAAAY,MACzBiN,GAAS,GACTlH,GAAW,GAAO,yBAAA3G,EAAAJ,OAAA,GAAAE,EAAA,mBAErB,gBAzBsByI,GAAA,OAAAtL,EAAAgD,MAAA,KAAAzC,UAAA,KA+BvB,MAAO,CACLslB,qBAAAA,EACAC,kBAAAA,EACA5f,WAAYuf,EAAQvf,WACpB+f,KAAMR,EAAQD,gBACd3d,WAAY4d,EAAQnY,OACpB8V,SAAAA,EACAE,QAAAA,EACAD,cAZoB,WACpBsC,EAAY,GACd,EAWE9hB,MAAAA,EAEJ,CEvFMqiB,GATFL,EAAoBN,EAApBM,qBACAC,EAAiBP,EAAjBO,kBACAG,EAAIV,EAAJU,KACA/f,EAAUqf,EAAVrf,WACAkd,EAAQmC,EAARnC,SACAE,EAAOiC,EAAPjC,QACAD,EAAakC,EAAblC,cACAxf,EAAK0hB,EAAL1hB,MACAgE,EAAU0d,EAAV1d,WAEM7J,GAAUC,EAAAA,EAAAA,gBAAVD,MACAmoB,GAAuBC,EAAAA,EAAAA,eAAvBD,mBAoBR,OAlBA/mB,EAAAA,EAAAA,YAAU,WACc,OAAlBiK,EAAKxC,UACPgf,GAEJ,GAAG,CAACxc,EAAKxC,SAAUgf,KAEnBzmB,EAAAA,EAAAA,YAAU,WACJ6mB,GACFjoB,EAAM,4BAEV,GAAG,CAACioB,EAAMjoB,KAEVoB,EAAAA,EAAAA,YAAU,WACJ6mB,GACFE,EAAmB,CAAEte,WAAAA,EAAYwe,YAAangB,EAAYogB,aAAajd,aAAI,EAAJA,EAAMyL,UAAW,IAE5F,GAAG,CAACmR,EAAMpe,EAAY3B,EAAYmD,aAAI,EAAJA,EAAMyL,QAASqR,IAE5CF,EAKHjqB,EAAAA,QAAAA,cAAAA,EAAAA,QAAAA,SAAA,KACEA,EAAAA,QAAAA,cAAA,UACE,eAAa,qBACbC,UAAU,kGACVwD,QAAS,WAAF,OAAQ6lB,GAAa,EAAK,GAEjCtpB,EAAAA,QAAAA,cAAC8B,GAAI,CAAC4B,MAAM,wBACV1D,EAAAA,QAAAA,cAAC8B,GAAK6B,MAAM4mB,iBAAgB,CAAC9S,MAAM,wBAGvCzX,EAAAA,QAAAA,cAACmnB,GAAe,CACd5jB,OAAQ8lB,EACR/B,QAASA,EACTpd,WAAYA,EACZrC,MAAOA,EACPkd,QAAS,WAAF,OAAQuE,GAAa,EAAM,EAClCtE,YAAa8E,EACb1C,SAAUA,EACVC,cAAeA,KAtBZ,IA0BX,ECtDA,SAASpV,KACP,IAAMqI,EAAgBxH,KACtB8W,GAAyB1kB,EAAAA,EAAAA,qBAAjBmI,EAAIuc,EAAJvc,KAAM+V,EAAMwG,EAANxG,OAEd1O,EAA8C1U,EAAAA,QAAAA,UAAe,GAAM2U,GAAApT,EAAAA,EAAAA,GAAAmT,EAAA,GAA5D3O,EAAe4O,EAAA,GAAE6V,EAAkB7V,EAAA,GAC1C8V,EAA8CzqB,EAAAA,QAAAA,UAAe,GAAM0qB,GAAAnpB,EAAAA,EAAAA,GAAAkpB,EAAA,GAA5DzkB,EAAe0kB,EAAA,GAAEC,EAAkBD,EAAA,GAC1CE,EAAgE5qB,EAAAA,QAAAA,UAAe,GAAM6qB,GAAAtpB,EAAAA,EAAAA,GAAAqpB,EAAA,GAA9EE,EAAwBD,EAAA,GAAEE,EAA2BF,EAAA,GAC5DhmB,GAA0BC,EAAAA,EAAAA,YAAWR,GAAS3D,IAAaoE,GAAAxD,EAAAA,EAAAA,GAAAsD,EAAA,GAApD/D,EAAKiE,EAAA,GAAEhE,EAAQgE,EAAA,GAEhBiD,GAAeC,EAAAA,EAAAA,UAAQ,iBAAO,CAAEnH,MAAAA,EAAOC,SAAAA,EAAU,GAAG,CAACD,EAAOC,IAE1DiqB,EAAmBrpB,EAAAA,GAAnBqpB,eAEWC,GAA4BxiB,EAAAA,EAAAA,GAAwB,CACrEC,WAAY,WACZC,YAAa,kBAFPC,UAKFsiB,GAAkBxlB,EAAAA,EAAAA,cAAWC,EAAAA,EAAAA,GAAAC,mBAAAC,MAAC,SAAAC,IAAA,IAAAC,EAAAC,EAAAmlB,EAAA,OAAAvlB,mBAAAK,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,GACJC,EAAAA,EAAAA,GAAiB,CAAC,SAAU,aAAY,OAAjD,OAAfN,EAAeG,EAAAI,KAAAJ,EAAAE,KAAG,GACMC,EAAAA,EAAAA,GAAiB,CAC7C,kBACA,2BACA,0BACA,kBACA,0BACA,OANmB,OAAfL,EAAeE,EAAAI,KAAAJ,EAAAE,KAAG,GAQYC,EAAAA,EAAAA,GAAiB,CAAC,qBAAoB,OAApE8kB,EAAqBjlB,EAAAI,KAE3BkkB,EAAmBzkB,GACnB4kB,EAAmB3kB,GACnB+kB,EAA4BI,GAAuB,yBAAAjlB,EAAAS,OAAA,GAAAb,EAAA,KAClD,IAMH,OAJA9F,EAAAA,QAAAA,WAAgB,WACdkrB,GACF,GAAG,CAACA,IAGFlrB,EAAAA,QAAAA,cAAA,UAAQ8G,GAAG,gBAAgB7G,UAAU,2EACnCD,EAAAA,QAAAA,cAAA,OAAK8G,GAAG,wBAAwB7G,UAAU,WACzCqa,GAAiBta,EAAAA,QAAAA,cAACoN,GAAW,MAC9BpN,EAAAA,QAAAA,cAACmU,GAAyBnL,SAAQ,CAACC,MAAOjB,GACxChI,EAAAA,QAAAA,cAACgrB,EAAc,KACbhrB,EAAAA,QAAAA,cAAC2iB,GAAgB,QAGrB3iB,EAAAA,QAAAA,cAAC4E,EAAQ,MACT5E,EAAAA,QAAAA,cAACorB,GAAU,MACXprB,EAAAA,QAAAA,cAACskB,GAAO,CACNpK,KAAM7M,EAAK6M,KACXmJ,eAAgBhW,EAAK4X,MACrB7B,OAAQA,EACRE,eAAgBvd,GAAmBC,EACnCsU,cAAeA,EACfkJ,oBAAqBsH,GAA4BG,IAIzD,C,eClEI,GAAU,CAAC,ECNf,SAASI,GAAUxoB,GAAwD,IAArDyoB,EAAUzoB,EAAVyoB,WACpB,OACEtrB,EAAAA,QAAAA,cAAA,OACE,eAAa,uBACb8G,GAAG,uBACH7G,UAAS,4CAAAgD,OACPqoB,EAAa,iCAAmC,cAGlDtrB,EAAAA,QAAAA,cAAA,OACE,eAAcurB,EAAAA,cAAcC,iBAC5B1kB,GAAIykB,EAAAA,cAAcC,iBAClBvrB,UAAU,oBAIlB,CDRA,GAAQR,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,O,0BEnBpD2rB,GAAazrB,EAAAA,QAAAA,cAAoC,MAEvD,SAAS0rB,KACP,IAAM9Q,EAAU5a,EAAAA,QAAAA,WAAiByrB,IACjC,IAAK7Q,EACH,MAAM,IAAIrD,MAAM,iEAElB,OAAOqD,CACT,C,eCJI,GAAU,CAAC,EAEf,GAAQnb,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,O,8hCCtBnD,IAAM6rB,GAAc,wBACdC,GAAwB,sBACxBC,GAAuB,QACvBC,GAAyB,kBACzBC,GAA8B,eAG9BC,GAAsB,cAItBC,GAA8B,CAAC,OAAQ,OAAQ,QAEtDC,GAAoB,eAAArpB,GAAA8C,EAAAA,EAAAA,GAAAC,mBAAAC,MAAG,SAAAC,EAAOqmB,GAAwB,IAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAA3mB,mBAAAK,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OACpDgmB,EAAoB,GAAEC,EAAAG,GACRL,GAAMjmB,EAAAC,KAAA,EAAAkmB,EAAAzD,IAAA,WAAA0D,EAAAD,EAAAI,KAAAC,KAAE,CAAFxmB,EAAAE,KAAA,SAEU,OAFzBmmB,EAAKD,EAAArjB,MAAA/C,EAAAC,KAAA,EAAAD,EAAAyB,GAER,CAAC,YAAa,OAAQ,OAAMzB,EAAAE,KAAA,GAAgBmmB,EAAMzrB,QAAO,WAAAoF,EAAAgI,GAAAhI,EAAAI,MAAAJ,EAAAyB,GAA5BgK,SAAQrD,KAAApI,EAAAyB,GAAAzB,EAAAgI,IAAA,CAAAhI,EAAAE,KAAA,SACvCgmB,EAAkBjpB,KAAKopB,EAAM3hB,OAAO,QAAA1E,EAAAE,KAAA,iBAAAF,EAAAC,KAAA,GAAAD,EAAAiI,GAAAjI,EAAA,SAGtC0B,EAAAA,EAAOC,MAAK3B,EAAAiI,GAAQ,CAAErG,QAAS,wCAAF7E,OAA0CspB,EAAM3hB,SAAW,QAAA1E,EAAAE,KAAA,gBAAAF,EAAAE,KAAA,iBAAAF,EAAAC,KAAA,GAAAD,EAAAkI,GAAAlI,EAAA,SAAAmmB,EAAArG,EAAA9f,EAAAkI,IAAA,eAAAlI,EAAAC,KAAA,GAAAkmB,EAAA1D,IAAAziB,EAAA6P,OAAA,mBAAA7P,EAAAQ,OAAA,SAGrF0lB,GAAiB,yBAAAlmB,EAAAS,OAAA,GAAAb,EAAA,gCACzB,gBAZyBwJ,GAAA,OAAAzM,EAAAmE,MAAA,KAAAzC,UAAA,KAcbooB,GAAa,eAAA3oB,GAAA2B,EAAAA,EAAAA,GAAAC,mBAAAC,MAAG,SAAAgB,EAAOslB,GAAwB,IAAAC,EAAAQ,EAAA3Z,EAAA4Z,EAAAC,EAAA,OAAAlnB,mBAAAK,MAAA,SAAAc,GAAA,cAAAA,EAAAZ,KAAAY,EAAAX,MAAA,cAAAW,EAAAX,KAAA,EAC1B8lB,GAAqBC,GAAO,OAOuC,GAP7FC,EAAiBrlB,EAAAT,KAEjBsmB,EAAuCR,EAAkB7hB,QAC7D,SAAAyD,GAAO,MA1B2B,mBA0BvBA,GAzBoB,gBAyBkBA,CAA+B,IAE5EiF,EAAWhU,OAAO0T,SAASM,UAEZ,CAAC,cAAe,kBAAmB,cAAe,6BAEtD5C,MAAK,SAAA0c,GAAE,OAAI9Z,EAAStB,SAASob,EAAG,IAAG,CAAFhmB,EAAAX,KAAA,eAAAW,EAAAL,OAAA,SACzC2O,QAAQ2X,QAAQ,CAAEC,IAAK,GAAIC,YAAY,KAAQ,OAgBa,GAb/DL,EACHM,GAA0BP,IACzB,CAACd,GAAwBD,IAAsBuB,OAAM,SAAAtL,GAAI,OAAK7O,EAAStB,SAASmQ,EAAK,KACtFuL,GAA4BT,KAA0C3Z,EAAStB,SAASma,KACxFwB,GAAkCV,IACjC,CAACd,GAAwBC,IAA6BqB,OAAM,SAAAtL,GAAI,OAAK7O,EAAStB,SAASmQ,EAAK,KAC7FyL,GAAqCX,IACpC,CAACd,GAAwBD,GAAsBE,IAA6BqB,OAC1E,SAAAtL,GAAI,OAAK7O,EAAStB,SAASmQ,EAAK,IAGhCgL,EACJU,GAA8BZ,IAC9BX,GAA4BmB,OAAM,SAAAtL,GAAI,OAAK7O,EAAStB,SAASmQ,EAAK,KAEhE+K,EAAe,CAAF9lB,EAAAX,KAAA,gBAAAW,EAAAL,OAAA,SACR2O,QAAQ2X,QAAQ,CAAEC,IAAKnB,GAAwBoB,YAAY,KAAQ,YACjEO,GAAiBb,IAA0C3Z,EAAStB,SAASka,IAAqB,CAAA9kB,EAAAX,KAAA,SACzD,OADyDW,EAAAY,GACpG0N,QAAOtO,EAAAmH,GAAgB2d,GAAoB9kB,EAAAX,KAAA,GAAoBsnB,GAAc/B,GAAaQ,GAAO,QAA1C,OAA0CplB,EAAAoH,GAAApH,EAAAT,KAAAS,EAAAqH,GAAA,CAA/E6e,IAAGlmB,EAAAmH,GAAwBgf,WAAUnmB,EAAAoH,IAAApH,EAAAL,OAAA,SAAAK,EAAAY,GAA/CqlB,QAAO1e,KAAAvH,EAAAY,GAAAZ,EAAAqH,KAAA,YACb0e,EAAW,CAAF/lB,EAAAX,KAAA,gBAAAW,EAAAL,OAAA,SACX2O,QAAQ2X,QAAQ,CAAEC,IAnDa,OAmDoBC,YAAY,KAAQ,eAAAnmB,EAAAL,OAAA,SAEzE2O,QAAQ2X,QAAQ,CAAEC,IAAK,GAAIC,YAAY,KAAQ,yBAAAnmB,EAAAJ,OAAA,GAAAE,EAAA,KACvD,gBArCyBmL,GAAA,OAAAhO,EAAAgD,MAAA,KAAAzC,UAAA,KAuCpBmpB,GAAa,eAAA5b,GAAAnM,EAAAA,EAAAA,GAAAC,mBAAAC,MAAG,SAAAqB,EAAOymB,EAAmBxB,GAAwB,IAAAI,EAAA,OAAA3mB,mBAAAK,MAAA,SAAAoB,GAAA,cAAAA,EAAAlB,KAAAkB,EAAAjB,MAAA,OACjB,KAA/CmmB,EAAQJ,EAAOlhB,MAAK,SAAA2iB,GAAC,OAAIA,EAAEhjB,QAAU+iB,CAAS,OACvCpB,EAAMsB,gBAAe,CAAAxmB,EAAAjB,KAAA,eAAAiB,EAAAX,OAAA,SACzB6lB,EAAMsB,mBAAiB,cAAAxmB,EAAAX,OAAA,UAEzB,GAAK,wBAAAW,EAAAV,OAAA,GAAAO,EAAA,KACb,gBANkB4mB,EAAAC,GAAA,OAAAjc,EAAA9K,MAAA,KAAAzC,UAAA,KAQbkpB,GAAmB,SAACO,GACxB,OAA2B,IAApBA,EAASxpB,QAAgBwpB,EAASrc,SAASga,GACpD,EAEM0B,GAA8B,SAACW,GACnC,OAA2B,IAApBA,EAASxpB,QAAgBwpB,EAASrc,SAASia,GACpD,EAEMuB,GAA4B,SAACa,GACjC,OAA2B,IAApBA,EAASxpB,QAAgB,CAACmnB,GAAaC,IAAuBwB,OAAM,SAAApf,GAAO,OAAIggB,EAASrc,SAAS3D,EAAQ,GAClH,EAEMsf,GAAoC,SAACU,GACzC,OACsB,IAApBA,EAASxpB,QAAgB,CAACwnB,GAAqBJ,IAAuBwB,OAAM,SAAApf,GAAO,OAAIggB,EAASrc,SAAS3D,EAAQ,GAErH,EACMuf,GAAuC,SAACS,GAC5C,OACsB,IAApBA,EAASxpB,QACT,CAACwnB,GAAqBJ,GAAuBD,IAAayB,OAAM,SAAApf,GAAO,OAAIggB,EAASrc,SAAS3D,EAAQ,GAEzG,EAEMwf,GAAgC,SAACQ,GACrC,OAA2B,IAApBA,EAASxpB,QAAgBwpB,EAASrc,SA1FF,eA2FzC,EAEasc,GAAuB,SAACC,GACnC,IAAKA,IAAoBA,EAAgB1pB,OACvC,MAAO,GAGT,IAAM2pB,EAAgB,IAAIvhB,gBAAgB3N,OAAO0T,SAASxI,QACpDikB,EAAY,IAAIxhB,gBAOtB,OANAshB,EAAgBngB,SAAQ,SAAAsgB,GAClBF,EAAcG,IAAID,IACpBD,EAAUG,IAAIF,EAAOF,EAAc5mB,IAAI8mB,GAE3C,IAEO,IAAPprB,OAAWmrB,EACb,E,WC7GI,GAAU,CAAC,ECLf,SAASI,GAAc3rB,GAA0C,IAAA4rB,EAAA5rB,EAAvC6rB,QAAAA,OAAO,IAAAD,GAAQA,EACvC,OACEzuB,EAAAA,QAAAA,cAAA,QAAM,eAAa,kBAAkBC,UAAS,GAAAgD,OAAKyrB,EAAU,WAAa,WAAU,iCAClF1uB,EAAAA,QAAAA,cAAA,QAAMC,UAAU,cAAa,OAC7BD,EAAAA,QAAAA,cAAA,QAAMC,UAAU,gBAAe,UAGrC,CCGA,SAAS0uB,GAAO9rB,GAAsD,IAAnD0pB,EAAK1pB,EAAL0pB,MAAOzrB,EAAK+B,EAAL/B,MAAO8tB,EAAa/rB,EAAb+rB,cAC/BC,EAAsCnD,KAA9BoD,EAAYD,EAAZC,aAAcC,EAAWF,EAAXE,YAEtB,GAAqB,aAAjBD,GAAyC,eAAVhuB,EACjC,OAAO,KAGT,IAAMkuB,EAAoBzC,EAAM0C,yBAC9B1C,EAAM0C,yBAENjvB,EAAAA,QAAAA,cAAA,YACGusB,EAAM3hB,MACP5K,EAAAA,QAAAA,cAACwuB,GAAc,CAACE,SAAO,KAIrBQ,EAA2B3C,EAAM2C,UAAY3C,EAAM2C,UAAU3kB,QAAO,SAAAgiB,GAAK,OAAKA,EAAM4C,WAAW,IAAI,GAEnGC,EAAaR,aAAa,EAAbA,EAAeS,wBAC5BC,GAAMF,aAAU,EAAVA,EAAYE,MAAO,EACzBC,IAAQH,aAAU,EAAVA,EAAYG,OAAQ,IAAKH,aAAU,EAAVA,EAAYjkB,QAAS,EAE5D,OACEnL,EAAAA,QAAAA,cAAA,OAAKC,UAAU,sBAAsBuvB,MAAO,CAAEF,IAAAA,EAAKC,KAAAA,GAAQ,eAAa,WACtEvvB,EAAAA,QAAAA,cAAA,OAAKC,UAAU,wEACbD,EAAAA,QAAAA,cAAA,OAAKC,UAAU,iBAAgB,KACpB,eAAVa,GAA0Bd,EAAAA,QAAAA,cAAA,OAAKC,UAAU,0BAA0B+uB,GACzD,eAAVluB,GACCd,EAAAA,QAAAA,cAAA,OAAKC,UAAU,wDACZssB,EAAM3hB,MAAM,IAAY,SAAV9J,GAAoBd,EAAAA,QAAAA,cAACmN,EAAAA,SAASyV,MAAK,CAACC,QAAQ,SAAQ,SAG5D,eAAV/hB,GAA0BouB,EAAU1qB,OAAS,GAC5CxE,EAAAA,QAAAA,cAAA,OAAKC,UAAU,kCACZivB,EAAUnrB,KAAI,SAAA0rB,GAAQ,OACrBzvB,EAAAA,QAAAA,cAAC0vB,GAAY,CAACzrB,IAAKwrB,EAASE,KAAMZ,YAAaA,EAAaxC,MAAOkD,GAAY,MAO7F,CAMA,SAASC,GAAY1rB,GAAmC,IAAhCuoB,EAAKvoB,EAALuoB,MAAOwC,EAAW/qB,EAAX+qB,YAC7Bra,EAA0B1U,EAAAA,QAAAA,SAA2B,UAAS2U,GAAApT,EAAAA,EAAAA,GAAAmT,EAAA,GAAvD5T,EAAK6T,EAAA,GAAEib,EAAQjb,EAAA,GAChB+F,GAAWO,EAAAA,EAAAA,MAEX4U,EAAc7vB,EAAAA,QAAAA,SAAc,kBAAMusB,CAAK,GAAE,CAACA,IAMhD,IALA5mB,EAAAA,EAAAA,GAAAC,mBAAAC,MAAC,SAAAC,IAAA,IAAAgqB,EAAA,OAAAlqB,mBAAAK,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EACgCypB,EAAY/uB,QAAO,OAA5CgvB,EAAgB5pB,EAAAI,KACtBspB,EAASE,GAAkB,wBAAA5pB,EAAAS,OAAA,GAAAb,EAAA,IAF7BH,GAKc,WAAV7E,EACF,OAAO,KAGT,IAAMivB,EAAW,eAAApQ,GAAAha,EAAAA,EAAAA,GAAAC,mBAAAC,MAAG,SAAAgB,IAAA,IAAAomB,EAAA,OAAArnB,mBAAAK,MAAA,SAAAc,GAAA,cAAAA,EAAAZ,KAAAY,EAAAX,MAAA,UACJ,eAAVtF,EAAsB,CAAAiG,EAAAX,KAAA,SAEC,GADnB6mB,EAAM,GAAHhqB,OAAMspB,EAAMyD,UAAQ/sB,OAAGgrB,GAAqB1B,EAAM0D,cAAYlpB,EAAAY,GACnE4kB,EAAMsB,iBAAe9mB,EAAAY,GAAA,CAAAZ,EAAAX,KAAA,eAAAW,EAAAX,KAAA,EAAWmmB,EAAMsB,kBAAiB,OAAA9mB,EAAAY,GAAAZ,EAAAT,KAAA,WAAAS,EAAAY,GAAA,CAAAZ,EAAAX,KAAA,SACzDnH,OAAO0T,SAASnJ,KAAOyjB,EAAIlmB,EAAAX,KAAA,iBAE3BsU,EAASuS,GAAK,yBAAAlmB,EAAAJ,OAAA,GAAAE,EAAA,KAGnB,kBATgB,OAAA8Y,EAAA3Y,MAAA,KAAAzC,UAAA,KAWX2rB,EAASnB,IAAgBc,EAAYF,KAEvCQ,EAAM,4EAUV,OAPEA,GADY,eAAVrvB,EACK,gCACEovB,EACF,0BAEA,mCAIPlwB,EAAAA,QAAAA,cAAA,UAAQC,UAAWkwB,EAAK1sB,QAASssB,GAC/B/vB,EAAAA,QAAAA,cAAA,QAAMC,UAAU,UAAU4vB,EAAYjlB,OAC3B,SAAV9J,GAAoBd,EAAAA,QAAAA,cAACmN,EAAAA,SAASyV,MAAK,CAACC,QAAQ,SAAQ,QAC1C,eAAV/hB,GAA0Bd,EAAAA,QAAAA,cAACwuB,GAAc,CAACE,SAAO,IAGxD,CC/FA,SAAS0B,GAAiBvtB,GAAoC,IAAjC0pB,EAAK1pB,EAAL0pB,MACrB8D,EAAQrwB,EAAAA,QAAAA,OAAa,MAC3B0U,EAA4B1U,EAAAA,QAAAA,UAAwB,GAAM2U,GAAApT,EAAAA,EAAAA,GAAAmT,EAAA,GAAnDwb,EAAMvb,EAAA,GAAE2b,EAAS3b,EAAA,GACxB8V,EAA0BzqB,EAAAA,QAAAA,SAA2B,UAAS0qB,GAAAnpB,EAAAA,EAAAA,GAAAkpB,EAAA,GAAvD3pB,EAAK4pB,EAAA,GAAEkF,EAAQlF,EAAA,GACtBE,EAAgC5qB,EAAAA,QAAAA,UAAwB,GAAM6qB,GAAAtpB,EAAAA,EAAAA,GAAAqpB,EAAA,GAAvD2F,EAAQ1F,EAAA,GAAE2F,EAAW3F,EAAA,GAEpBkE,EAAgBrD,KAAhBqD,YACFc,EAAc7vB,EAAAA,QAAAA,SAAc,kBAAMusB,CAAK,GAAE,CAACA,IAC1C7R,GAAWO,EAAAA,EAAAA,MAWjB,IATAtV,EAAAA,EAAAA,GAAAC,mBAAAC,MAAC,SAAAC,IAAA,IAAAgqB,EAAA,OAAAlqB,mBAAAK,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EACgCypB,EAAY/uB,QAAO,OAA5CgvB,EAAgB5pB,EAAAI,KACtBspB,EAASE,GAAkB,wBAAA5pB,EAAAS,OAAA,GAAAb,EAAA,IAF7BH,GAKA3F,EAAAA,QAAAA,WAAgB,WACdswB,EAAUT,EAAYF,OAASZ,EACjC,GAAG,CAACc,EAAad,IAEH,WAAVjuB,EACF,OAAO,KAGT,IAAMivB,EAAW,eAAAje,GAAAnM,EAAAA,EAAAA,GAAAC,mBAAAC,MAAG,SAAAgB,IAAA,IAAAomB,EAAA,OAAArnB,mBAAAK,MAAA,SAAAc,GAAA,cAAAA,EAAAZ,KAAAY,EAAAX,MAAA,UACJ,eAAVtF,EAAsB,CAAAiG,EAAAX,KAAA,eAAAW,EAAAL,OAAA,iBAKD,GADnBumB,EAAM,GAAHhqB,OAAMspB,EAAMyD,OAAO,OAAK/sB,OAAGgrB,GAAqB1B,EAAM0D,cAAYlpB,EAAAY,GACvE4kB,EAAMsB,iBAAe9mB,EAAAY,GAAA,CAAAZ,EAAAX,KAAA,eAAAW,EAAAX,KAAA,EAAWmmB,EAAMsB,kBAAiB,OAAA9mB,EAAAY,GAAAZ,EAAAT,KAAA,WAAAS,EAAAY,GAAA,CAAAZ,EAAAX,KAAA,SACzDnH,OAAO0T,SAASnJ,KAAOyjB,EAAIlmB,EAAAX,KAAA,iBAE3BsU,EAASuS,GAAK,yBAAAlmB,EAAAJ,OAAA,GAAAE,EAAA,KAEjB,kBAXgB,OAAAiL,EAAA9K,MAAA,KAAAzC,UAAA,KAabksB,EAAS,uEASb,OAPEA,GADY,eAAV3vB,EACQ,gCACDovB,EACC,+BAEA,oCAIVlwB,EAAAA,QAAAA,cAAA,OACEkJ,IAAKmnB,EACLK,aAAc,WAAF,OAAQF,GAAY,EAAK,EACrCG,aAAc,WAAF,OAAQH,GAAY,EAAM,EACtC,eAAa,uBAEbxwB,EAAAA,QAAAA,cAAA,UAAQyX,MAAOoY,EAAYjlB,MAAO3K,UAAWwwB,EAAQhtB,QAASssB,EAAa,qBAAoBxD,EAAMoD,MACnG3vB,EAAAA,QAAAA,cAAA,QAAMC,UAAU,UAAU4vB,EAAYjlB,OAC3B,SAAV9J,GAAoBd,EAAAA,QAAAA,cAACmN,EAAAA,SAASyV,MAAK,CAACC,QAAQ,SAAQ,QAC1C,QAAV/hB,GAAmBd,EAAAA,QAAAA,cAACmN,EAAAA,SAASyV,MAAK,CAACC,QAAQ,SAAQ,QAErD0N,GAAYvwB,EAAAA,QAAAA,cAAC2uB,GAAO,CAACC,cAAeyB,EAAMhoB,QAASkkB,MAAOsD,EAAa/uB,MAAOA,IAGrF,CH5DA,GAAQrB,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,O,eIftD,GAAU,CAAC,EAEf,GAAQL,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCX1D,IAAM8wB,GAAqB,IAKnB9uB,GAASC,EAAAA,SAATD,KACA8gB,GAAUzV,EAAAA,SAAVyV,MAER,SAASiO,GAAchuB,GAA2D,IAAxD+U,EAAQ/U,EAAR+U,SACxBkZ,GAA0BC,EAAAA,GAAAA,KAAYC,GAAAzvB,EAAAA,EAAAA,GAAAuvB,EAAA,GAA/B5nB,EAAG8nB,EAAA,GAAI5lB,EAAM4lB,EAAA,GAAN5lB,OACd,OACEpL,EAAAA,QAAAA,cAACixB,GAAAA,EAAOC,IAAG,CACT1B,MAAO,CAAE2B,SAAU,UACnBC,QAAS,CAAEhmB,OAAQ,GACnBimB,QAAS,CAAEjmB,OAAAA,GACXkmB,KAAM,CAAElmB,OAAQ,GAChBmmB,WAAY,CAAEnR,SAAUwQ,KAExB5wB,EAAAA,QAAAA,cAAA,OAAKkJ,IAAKA,GAAM0O,GAGtB,CAEA,SAAS4Z,GAAcxtB,GAAgC,IAA7BuoB,EAAKvoB,EAALuoB,MACxB7X,EAA0B1U,EAAAA,QAAAA,SAA2B,UAAS2U,GAAApT,EAAAA,EAAAA,GAAAmT,EAAA,GAAvD5T,EAAK6T,EAAA,GAAEib,EAAQjb,EAAA,GACtB8V,EAA4BzqB,EAAAA,QAAAA,UAAwB,GAAM0qB,GAAAnpB,EAAAA,EAAAA,GAAAkpB,EAAA,GAAnDyF,EAAMxF,EAAA,GAAE4F,EAAS5F,EAAA,GACxBE,EAAgC5qB,EAAAA,QAAAA,UAAwB,GAAK6qB,GAAAtpB,EAAAA,EAAAA,GAAAqpB,EAAA,GAAtD6G,EAAQ5G,EAAA,GAAE6G,EAAW7G,EAAA,GAC5B8G,EAAgC3xB,EAAAA,QAAAA,UAAwB,GAAM4xB,GAAArwB,EAAAA,EAAAA,GAAAowB,EAAA,GAAvDpB,EAAQqB,EAAA,GAAEpB,EAAWoB,EAAA,GACtBC,GAAoB7Q,EAAAA,EAAAA,QAAuB,MAC3CtG,GAAWO,EAAAA,EAAAA,MACjB4T,EAAsCnD,KAA9BoD,EAAYD,EAAZC,aAAcC,EAAWF,EAAXE,YAEhBsB,EAAQrwB,EAAAA,QAAAA,OAAa,MACrB6vB,EAA8B7vB,EAAAA,QAAAA,SAAc,kBAAMusB,CAAK,GAAE,CAACA,KAChEnpB,EAAAA,EAAAA,YAAU,YACRuC,EAAAA,EAAAA,GAAAC,mBAAAC,MAAC,SAAAC,IAAA,IAAAgqB,EAAA,OAAAlqB,mBAAAK,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EACgCypB,EAAY/uB,QAAO,OAA5CgvB,EAAgB5pB,EAAAI,KACtBspB,EAASE,GAAkB,wBAAA5pB,EAAAS,OAAA,GAAAb,EAAA,IAF7BH,EAIF,GAAG,CAACkqB,IAEJ,IAAMiC,EAAwB,cAAVhxB,GAAmC,SAAVA,GAA8B,QAAVA,EAC3DouB,EAA2BW,EAAYX,UACzCW,EAAYX,UAAU3kB,QAAO,SAAAgiB,GAAK,OAAKA,EAAM4C,WAAW,IACxD,GACE4C,EAAc7C,EAAU1qB,OAAS,GAAKstB,EACtCE,EAAeD,GAAeN,GAA6B,aAAjB3C,EAsBhD,GApBA9uB,EAAAA,QAAAA,WAAgB,WAEZswB,EADEyB,IACUN,GAA6B,cAAjB3C,IAAiCC,EAAYxe,WAAWsf,EAAYF,MAElFE,EAAYF,OAASZ,EAEnC,GAAG,CAACc,EAAad,EAAaD,EAAc2C,EAAUM,IAEtD/xB,EAAAA,QAAAA,WAAgB,WACV+xB,GAAehD,EAAYxe,WAAWsf,EAAYF,OACpD+B,GAAY,EAEhB,GAAG,CAAC7B,EAAad,EAAagD,IAE9B/xB,EAAAA,QAAAA,WAAgB,WACV+xB,GAAgC,aAAjBjD,GACjB4C,GAAY,EAEhB,GAAG,CAACK,EAAajD,IAEH,WAAVhuB,EACF,OAAO,KAET,IAAMivB,EAAW,eAAApQ,GAAAha,EAAAA,EAAAA,GAAAC,mBAAAC,MAAG,SAAAgB,IAAA,IAAAomB,EAAA,OAAArnB,mBAAAK,MAAA,SAAAc,GAAA,cAAAA,EAAAZ,KAAAY,EAAAX,MAAA,UACJ,eAAVtF,EAAsB,CAAAiG,EAAAX,KAAA,eAAAW,EAAAL,OAAA,oBAIrBqrB,EAAa,CAAFhrB,EAAAX,KAAA,SAEiB,GADzB6mB,EAAM,GAAHhqB,OAAM4sB,EAAYG,UAAQ/sB,OAAGgrB,GAAqB4B,EAAYI,cAAYlpB,EAAAY,GAC/EkoB,EAAYhC,iBAAe9mB,EAAAY,GAAA,CAAAZ,EAAAX,KAAA,eAAAW,EAAAX,KAAA,EAAWypB,EAAYhC,kBAAiB,OAAA9mB,EAAAY,GAAAZ,EAAAT,KAAA,WAAAS,EAAAY,GAAA,CAAAZ,EAAAX,KAAA,SACrEnH,OAAO0T,SAASnJ,KAAOyjB,EAAIlmB,EAAAX,KAAA,iBAE3BsU,EAASuS,GAAK,eAAAlmB,EAAAL,OAAA,kBAKG,aAAjBooB,GACF4C,GAAaD,GACd,yBAAA1qB,EAAAJ,OAAA,GAAAE,EAAA,KACF,kBAlBgB,OAAA8Y,EAAA3Y,MAAA,KAAAzC,UAAA,KAoBXksB,EACJ,sEAAqE,IAAAxtB,OAChE6uB,EAAgD5B,EAAS,aAAe,mCAA1D,iCAA8F,IAAAjtB,OAC5F,cAAjB6rB,EAA+B,iBAAmB,aAIlDmD,EAAmB,WAAa,IAAHhvB,OAAOitB,EAAS,mBAAqB,IAUxE,OACElwB,EAAAA,QAAAA,cAAA,OACE,eAAa,kBACbC,UAda,sDAebywB,aAAc,WAAF,OAAQF,GAAY,EAAK,EACrChK,QAAS,WAAF,OAAQgK,GAAY,EAAK,EAChCG,aAAc,WAAF,OAAQH,GAAY,EAAM,EACtC0B,OAhBe,SAAClM,GAClB,IAAMC,EAAgBD,EAAEC,cAExBkM,uBAAsB,WACflM,EAAc3d,SAASO,SAASupB,gBACnC5B,GAAY,EAEhB,GACF,EASItnB,IAAKmnB,GAELrwB,EAAAA,QAAAA,cAAA,OAAKC,UAAWgyB,GACdjyB,EAAAA,QAAAA,cAAA,UACEyX,MAAOoY,EAAYjlB,MACnB3K,UAAWwwB,EACXhtB,QAASssB,EACTP,MAAO,CAAE6C,WAAY,UACrB,qBAAoBxC,EAAYF,MAEhC3vB,EAAAA,QAAAA,cAAC8B,GAAI,CAAC4B,MAAQouB,EAA2B5B,EAAS,QAAU,uBAAhC,YACzBL,EAAYyC,SAEG,aAAjBxD,GAA+B9uB,EAAAA,QAAAA,cAAA,QAAMC,UAAU,eAAe4vB,EAAYjlB,OACzD,aAAjBkkB,GAA+BiD,GAC9B/xB,EAAAA,QAAAA,cAAA,QAAMC,UAAS,oBAAAgD,OAAsBwuB,EAAW,KAAO,SACrDzxB,EAAAA,QAAAA,cAAC8B,GAAI,KACH9B,EAAAA,QAAAA,cAAC8B,GAAK6B,MAAM6gB,UAAS,QAIT,aAAjBsK,GAAyC,SAAVhuB,GAAoBd,EAAAA,QAAAA,cAAC4iB,GAAK,CAACC,QAAQ,SAAQ,QACzD,aAAjBiM,GAAyC,QAAVhuB,GAAmBd,EAAAA,QAAAA,cAAC4iB,GAAK,CAACC,QAAQ,SAAQ,QAE5E7iB,EAAAA,QAAAA,cAACuyB,GAAAA,EAAe,KACbP,GACChyB,EAAAA,QAAAA,cAAC6wB,GAAc,KACb7wB,EAAAA,QAAAA,cAAA,OAAKkJ,IAAK2oB,GACP3C,EAAUnrB,KAAI,SAAAyuB,GAAK,OAClBxyB,EAAAA,QAAAA,cAACowB,GAAiB,CAACnsB,IAAKuuB,EAAM7C,KAAMpD,MAAOiG,GAAS,OAM7DjC,GAAYvwB,EAAAA,QAAAA,cAAC2uB,GAAO,CAACC,cAAeyB,EAAMhoB,QAASkkB,MAAOsD,EAAa/uB,MAAOA,KAIvF,CC7JA,SAAS2xB,KACP,IAAA/d,EAAsC1U,EAAAA,QAAAA,SAAuB,YAAW2U,GAAApT,EAAAA,EAAAA,GAAAmT,EAAA,GAAjEqa,EAAWpa,EAAA,GAAE+d,EAAc/d,EAAA,GAClC8V,EAA8CzqB,EAAAA,QAAAA,UAAwB,GAAM0qB,GAAAnpB,EAAAA,EAAAA,GAAAkpB,EAAA,GAArEkI,EAAejI,EAAA,GAAEkI,EAAkBlI,EAAA,GAE1CmI,GAAkCC,EAAAA,EAAAA,oBAA1BrB,EAAQoB,EAARpB,SAAUC,EAAWmB,EAAXnB,YACVze,GAAaF,EAAAA,EAAAA,MAAbE,SACFyH,GAAWO,EAAAA,EAAAA,MAEXkR,GAASlkB,EAAAA,EAAAA,UAAQ,kBAAM8qB,GAAAA,aAAa3wB,cAAc4wB,cAAc,GAAE,IAExEhzB,EAAAA,QAAAA,WAAgB,WAAM,IAAAizB,EACH,OAAjBC,EAAAA,wBAAiB,IAAjBA,EAAAA,mBAAgC,QAAfD,EAAjBC,EAAAA,kBAAmB9wB,qBAAa,IAAA6wB,GAAhCA,EAAkCE,SAAShH,EAC7C,GAAG,CAACA,IAEJnsB,EAAAA,QAAAA,WAAgB,WACd,IAAMozB,EAAeL,GAAAA,aAAa3wB,cAAcixB,kBAAkBpgB,GAClEyf,EAAeU,EAAeA,EAAazD,KAAO,YAClD9mB,SAAS4O,MAAQ2b,GAAgBA,EAAaxoB,MAAQ,eAAH3H,OAAkBmwB,EAAaxoB,OAAU,WAC9F,GAAG,CAACqI,IAEJjT,EAAAA,QAAAA,WAAgB,WACT2yB,IACHhtB,EAAAA,EAAAA,GAAAC,mBAAAC,MAAC,SAAAC,IAAA,IAAAymB,EAAA,OAAA3mB,mBAAAK,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EACqBumB,GAAcR,GAAO,QAAnCI,EAAKrmB,EAAAI,MACD2mB,KAAOV,EAAMW,aACrBjuB,OAAO0T,SAASnJ,KAAO+iB,EAAMU,KAG3BV,EAAMU,MAAQV,EAAMW,aACtB0F,GAAmB,GACnBlY,EAAS6R,EAAMU,MAChB,wBAAA/mB,EAAAS,OAAA,GAAAb,EAAA,IATHH,EAYJ,GAAG,CAACgtB,EAAiBjY,EAAUyR,IAE/B,IAIMrrB,GAAwBmH,EAAAA,EAAAA,UAC5B,iBAAO,CACL6mB,aAAc2C,EAAW,WAAa,YACtC1C,YAAAA,EACD,GACD,CAAC0C,EAAU1C,IAGb,OACE/uB,EAAAA,QAAAA,cAAA,OACE8G,GAAG,sBACH5C,KAAK,aACLjE,UAAU,4DAEVD,EAAAA,QAAAA,cAAA,OACEC,UAAS,2DAAAgD,OAA6DwuB,EAAW,OAAS,mBAE1FzxB,EAAAA,QAAAA,cAACszB,GAAAA,EAAI,CAACC,MAAO9B,KAEfzxB,EAAAA,QAAAA,cAAA,OAAKC,UAAU,sBACbD,EAAAA,QAAAA,cAACyrB,GAAWziB,SAAQ,CAACC,MAAOnI,GACzBqrB,EAAOpoB,KAAI,SAAAwoB,GAAK,OACfvsB,EAAAA,QAAAA,cAACwxB,GAAc,CAACvtB,IAAKsoB,EAAMoD,KAAMpD,MAAOA,GAAS,MAIvDvsB,EAAAA,QAAAA,cAAA,OACEC,UAAS,gEAAAgD,OACPwuB,EAAW,oBAAsB,oBAGnCzxB,EAAAA,QAAAA,cAAA,QAAMC,UAAS,wCAAAgD,OAA0CwuB,EAAW,6BAA+B,KACjGzxB,EAAAA,QAAAA,cAACiN,EAAAA,QAAQumB,WAAU,CAAC1vB,OAAO,oBAAoBL,QApC/B,WACtBiuB,GAAaD,EACf,GAmCUzxB,EAAAA,QAAAA,cAACiN,EAAAA,QAAQumB,WAAW7vB,MAAM8vB,YAAW,SAMjD,C,yBClFaC,GAAiB,WAC5B,IAAAtyB,GAAsDC,EAAAA,EAAAA,WAAkB,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAvEuyB,EAAmBryB,EAAA,GAAEsyB,EAAsBtyB,EAAA,GAClDsoB,GAAoD1kB,EAAAA,EAAAA,qBAA5C2uB,EAAejK,EAAfiK,gBAAiBC,EAAgBlK,EAAhBkK,iBAAkBzmB,EAAIuc,EAAJvc,KACrC0mB,GAAcC,EAAAA,GAAAA,GAAc,gBAC5BC,GAAyBjT,EAAAA,EAAAA,SAAO,GAEhC1T,GAAiBC,EAAAA,EAAAA,YAAWF,IAElCjK,EAAAA,EAAAA,YAAU,WACR,IAAM8wB,EAAgBrrB,SAASsrB,OAC5BC,MAAM,MACN/jB,MAAK,SAAAgkB,GAAG,OAAIA,EAAI9jB,WAAW,uBAAyB8jB,EAAID,MAAM,KAAK,EAAE,IACxER,EAAuBM,EACzB,GAAG,IAEH,IAAMI,GAAe5uB,EAAAA,EAAAA,cAAWC,EAAAA,EAAAA,GAAAC,mBAAAC,MAAC,SAAAC,IAAA,IAAAyuB,EAAA,OAAA3uB,mBAAAK,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,GACHouB,EAAAA,GAAAA,GApBR,yCAoBuC,QAArDD,EAAaruB,EAAAI,OAEjBmP,YAAW,WACR8e,EAA8BE,OACjC,GAtBc,KAuBf,wBAAAvuB,EAAAS,OAAA,GAAAb,EAAA,KACA,IAEG4uB,GAA2BhvB,EAAAA,EAAAA,cAAWC,EAAAA,EAAAA,GAAAC,mBAAAC,MAAC,SAAAgB,IAAA,IAAA8tB,EAAA,OAAA/uB,mBAAAK,MAAA,SAAAc,GAAA,cAAAA,EAAAZ,KAAAY,EAAAX,MAAA,cAAAW,EAAAX,KAAA,GACbouB,EAAAA,GAAAA,GA5BT,iDA4ByC,QAAxDG,EAAe5tB,EAAAT,QAElBquB,EAAgCnF,MAAMoF,OAAS,MACjD,wBAAA7tB,EAAAJ,OAAA,GAAAE,EAAA,KACA,KAEHzD,EAAAA,EAAAA,YAAU,WACRsxB,GACF,GAAG,CAACA,KAEJtxB,EAAAA,EAAAA,YAAU,WACR,IAAMyxB,EAAqBf,IAAsBA,IAAqBD,EAChEiB,EAAef,IAAgBJ,IAAwBM,EAAuB5rB,QAChFwsB,IAAuBC,GAAgBxnB,IAI3CgnB,IACAL,EAAuB5rB,SAAU,EACnC,GAAG,CAACwrB,EAAiBC,EAAkBH,EAAqBW,EAAchnB,EAAgBymB,GAC5F,E,WC5CI,GAAU,CAAC,EAEf,GAAQt0B,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCvB1D,IAAMi1B,GAA0B,yBAEhC,SAASC,KACP,IAAAtgB,EAAgE1U,EAAAA,QAAAA,UAAe,GAAM2U,GAAApT,EAAAA,EAAAA,GAAAmT,EAAA,GAA9EugB,EAAwBtgB,EAAA,GAAEugB,EAA2BvgB,EAAA,GAc5D,OAZA3U,EAAAA,QAAAA,WAAgB,WACd,IAAMm1B,EAAOxlB,aAAaC,QAAQmlB,IAC9BI,GAAiB,SAATA,GACVD,GAA4B,EAEhC,GAAG,IAQDl1B,EAAAA,QAAAA,cAAAA,EAAAA,QAAAA,SAAA,KACGi1B,GACCj1B,EAAAA,QAAAA,cAAA,OACEC,UAAU,oEACViE,KAAK,SACLic,SAAU,EACV1c,QAAS,WAAF,OAXbkM,aAAaa,WAAWukB,SACxB91B,OAAO0T,SAASC,QAU6B,GACxC,oDAMT,C,cClBsB,SAAAwiB,KAYrB,OAZqBA,IAAAzvB,EAAAA,EAAAA,GAAAC,mBAAAC,MAAtB,SAAAC,EAAAjD,GAAA,IAAAmL,EAAAqnB,EAAAvgB,EAAAwgB,EAAAluB,EAAA,OAAAxB,mBAAAK,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OAAgD,OAAvB4H,EAAOnL,EAAPmL,QAASqnB,EAAcxyB,EAAdwyB,eAAcnvB,EAAAE,KAAA,EACtB0W,EAAAA,eAAe7X,iBAAgB,OACF,OAD/C6P,EAAS5O,EAAAI,KACTgvB,GAAgBv2B,EAAAA,EAAAA,KAAYM,oBAAmB6G,EAAAE,KAAA,EAC9BmvB,MAAM,GAADtyB,OAAIqyB,EAAa,oBAAAryB,OAAmB+K,EAAO,KAAA/K,OAAIoyB,GAAkB,CAC3FG,OAAQ,MACRhuB,QAAS,CACP,eAAgB,mBAChBC,cAAe,UAAFxE,OAAY6R,MAE3B,OANY,OAAR1N,EAAQlB,EAAAI,KAAAJ,EAAAQ,OAAA,SAQPU,EAASquB,QAAM,wBAAAvvB,EAAAS,OAAA,GAAAb,EAAA,MACvBkB,MAAA,KAAAzC,UAAA,CAIoB,SAAAmxB,KAYpB,OAZoBA,IAAA/vB,EAAAA,EAAAA,GAAAC,mBAAAC,MAArB,SAAAgB,EAAA7C,GAAA,IAAAgK,EAAAqnB,EAAA3tB,EAAAoN,EAAAwgB,EAAAluB,EAAA,OAAAxB,mBAAAK,MAAA,SAAAc,GAAA,cAAAA,EAAAZ,KAAAY,EAAAX,MAAA,OAAqD,OAA7B4H,EAAOhK,EAAPgK,QAASqnB,EAAcrxB,EAAdqxB,eAAgB3tB,EAAI1D,EAAJ0D,KAAIX,EAAAX,KAAA,EAC3B0W,EAAAA,eAAe7X,iBAAgB,OACF,OAD/C6P,EAAS/N,EAAAT,KACTgvB,GAAgBv2B,EAAAA,EAAAA,KAAYM,oBAAmB0H,EAAAX,KAAA,EAC9BmvB,MAAM,GAADtyB,OAAIqyB,EAAa,oBAAAryB,OAAmB+K,EAAO,KAAA/K,OAAIoyB,GAAkB,CAC3FG,OAAQ,OACRhuB,QAAS,CACP,eAAgB,mBAChBC,cAAe,UAAFxE,OAAY6R,IAE3B6gB,KAAMlmB,KAAKM,UAAU,CAAErI,KAAAA,MACvB,OAPY,OAARN,EAAQL,EAAAT,KAAAS,EAAAL,OAAA,SAQPU,EAASquB,QAAM,wBAAA1uB,EAAAJ,OAAA,GAAAE,EAAA,MACvBG,MAAA,KAAAzC,UAAA,CAIoB,SAAAqxB,KAYpB,OAZoBA,IAAAjwB,EAAAA,EAAAA,GAAAC,mBAAAC,MAArB,SAAAqB,EAAA4K,GAAA,IAAA9D,EAAAqnB,EAAA3tB,EAAAZ,EAAAgO,EAAAwgB,EAAAluB,EAAA,OAAAxB,mBAAAK,MAAA,SAAAoB,GAAA,cAAAA,EAAAlB,KAAAkB,EAAAjB,MAAA,OAAyD,OAAjC4H,EAAO8D,EAAP9D,QAASqnB,EAAcvjB,EAAdujB,eAAgB3tB,EAAIoK,EAAJpK,KAAMZ,EAAEgL,EAAFhL,GAAEO,EAAAjB,KAAA,EAC/B0W,EAAAA,eAAe7X,iBAAgB,OACF,OAD/C6P,EAASzN,EAAAf,KACTgvB,GAAgBv2B,EAAAA,EAAAA,KAAYM,oBAAmBgI,EAAAjB,KAAA,EAC9BmvB,MAAM,GAADtyB,OAAIqyB,EAAa,oBAAAryB,OAAmB+K,EAAO,KAAA/K,OAAIoyB,EAAc,KAAApyB,OAAI6D,GAAM,CACjG0uB,OAAQ,QACRhuB,QAAS,CACP,eAAgB,mBAChBC,cAAe,UAAFxE,OAAY6R,IAE3B6gB,KAAMlmB,KAAKM,UAAU,CAAErI,KAAAA,MACvB,OAPY,OAARN,EAAQC,EAAAf,KAAAe,EAAAX,OAAA,SAQPU,EAASquB,QAAM,wBAAApuB,EAAAV,OAAA,GAAAO,EAAA,MACvBF,MAAA,KAAAzC,UAAA,CAEM,IAAMsxB,GAAuB,CAClCC,QA7DoC,SAchBxmB,GAAA,OAAA8lB,GAAApuB,MAAC,KAADzC,UAAA,EAgDpBwxB,OApCD,SAIoB/jB,GAAA,OAAA0jB,GAAA1uB,MAAC,KAADzC,UAAA,EAiCnByxB,OArBD,SAIoBlI,GAAA,OAAA8H,GAAA5uB,MAAC,KAADzC,UAAA,GC9CT0xB,GAAyB,SAAzBA,GAAyB,OAAzBA,EAAyB,8BAAzBA,CAAyB,MAIxBC,IAAahb,EAAAA,EAAAA,GAAA,GACvB+a,GAA0BE,cAAgBC,GAAAA,I,grBCD7C,IAAMC,GAA+B,eAC/BC,GAAkB,SAmExB,SAASC,GACPlB,EACAmB,GAEA,GAA2B,IAAvBA,EAAYhyB,OACd,OAAO,KAGT,IAIoC8nB,EAJhCmK,EAAsD9xB,GAAAA,GAAA,GAAQ6xB,EAAY,IAAE,IAAE9uB,KAAM,CAAC,IAGzF2kB,E,+4BAAAG,CACyBgK,GAAW,IAApC,IAAAnK,EAAAzD,MAAA0D,EAAAD,EAAAI,KAAAC,MAAsC,KAA3BgK,EAAUpK,EAAArjB,MACbvB,EAAoBgvB,EAAWhvB,KACrC,GAAIA,EAAK2tB,GAAiB,CACxBoB,EAAM9xB,GAAAA,GAAA,GACD+xB,GAAU,IACbhvB,KAAAA,IAEF,KACF,CACF,CAAC,OAAA2a,GAAAgK,EAAArG,EAAA3D,EAAA,SAAAgK,EAAA1D,GAAA,CAED,OAAO8N,CACT,CC3FA,IAAQE,GAAWC,EAAAA,OAAXD,OACA70B,GAASC,EAAAA,SAATD,KAED,SAAS+0B,KACd,IAAAC,EDFK,SAAwBC,GAI7B,IAAA31B,GAA8CC,EAAAA,EAAAA,WAAkB,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA/D41B,EAAe11B,EAAA,GAAE21B,EAAkB31B,EAAA,GAEpC41B,GAAexxB,EAAAA,EAAAA,cAAWC,EAAAA,EAAAA,GAAAC,mBAAAC,MAAC,SAAAC,IAAA,OAAAF,mBAAAK,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OAC/B6wB,GAAmB,GAAO,wBAAA/wB,EAAAS,OAAA,GAAAb,EAAA,KACzB,IAiDH,OA/CA1C,EAAAA,EAAAA,YAAU,WAERyyB,GAAqBC,QAAQ,CAC3B9nB,QAASsoB,GACTjB,eAAgBgB,KAEfc,KAAI,eAAAnzB,GAAA2B,EAAAA,EAAAA,GAAAC,mBAAAC,MAAC,SAAAgB,EAAM4vB,GAAM,IAAAC,EAAAU,EAAA1vB,EAAA2vB,EAAA,OAAAzxB,mBAAAK,MAAA,SAAAc,GAAA,cAAAA,EAAAZ,KAAAY,EAAAX,MAAA,OAE8B,GADxCswB,EAAaH,GAAeQ,EAASN,GACrCW,EAAkBlB,GAAca,GAAQhwB,EAAAZ,KAAA,EAIzB,OAAfuwB,EAAmB,CAAA3vB,EAAAX,KAAA,SAGO,OAF5B6wB,GAAmB,GACbvvB,GAAiBwT,EAAAA,EAAAA,GAAA,GACpB6b,EAAUK,GAAerwB,EAAAX,KAAA,EAGtByvB,GAAqBE,OAAO,CAChC/nB,QAASsoB,GACTjB,eAAgBgB,GAChB3uB,KAAAA,IACA,OAAAX,EAAAX,KAAA,oBAEOswB,EAAWhvB,KAAKqvB,KAAaK,EAAe,CAAArwB,EAAAX,KAAA,SAIzB,OAH5B6wB,GAAmB,GACbvvB,EAAiB/C,GAAAA,GAAA,GAClB+xB,EAAWhvB,MAAI,IAAAwT,EAAAA,EAAAA,GAAA,GACjB6b,EAAUK,IAAerwB,EAAAX,KAAA,GAGtByvB,GAAqBG,OAAO,CAChChoB,QAASsoB,GACTjB,eAAgBgB,GAChBvvB,GAAI4vB,EAAW5vB,GACfY,KAAAA,IACA,QAAAX,EAAAX,KAAA,wBAAAW,EAAAZ,KAAA,GAAAY,EAAAY,GAAAZ,EAAA,SAAAA,EAAAX,KAAA,GAGEwB,EAAAA,EAAOC,MAAKd,EAAAY,GAAQ,CAAEG,QAAS,wCAAwC,yBAAAf,EAAAJ,OAAA,GAAAE,EAAA,mBAEhF,gBAAAyI,GAAA,OAAAtL,EAAAgD,MAAA,KAAAzC,UAAA,EAnCI,IAmCH,OACK,SAAAsD,GACLD,EAAAA,EAAOC,MAAMA,EAAO,CAAEC,QAAS,+BACjC,GACJ,GAAG,CAACivB,IAEG,CACLC,gBAAAA,EACAE,aAAAA,EAEJ,CC3D4CI,CAAerB,GAA0BE,eAA3Ea,EAAeF,EAAfE,gBAAiBE,EAAYJ,EAAZI,aACzB,OACEl3B,EAAAA,QAAAA,cAAC22B,GAAM,CAACY,OAAO,EAAOC,UAAWR,GAC/Bh3B,EAAAA,QAAAA,cAAC22B,GAAO70B,KAAI,KACV9B,EAAAA,QAAAA,cAAC8B,GAAI,CAAC4B,MAAM,OAAOF,KAAK,MACtBxD,EAAAA,QAAAA,cAAC8B,GAAK6B,MAAM8zB,YAAW,QAG3Bz3B,EAAAA,QAAAA,cAAC22B,GAAOe,YAAW,KACjB13B,EAAAA,QAAAA,cAAA,SAAG,2BAA2B,wEAAsE,IACnGo2B,GAAAA,GAAY,YAASp2B,EAAAA,QAAAA,cAAA,KAAGwJ,KAAK,mBAAkB,aAAa,6NAI/DxJ,EAAAA,QAAAA,cAAC22B,GAAOgB,YAAW,CAAC5S,QAASmS,GAC3Bl3B,EAAAA,QAAAA,cAAAA,EAAAA,QAAAA,SAAA,OAIR,CCvBO,SAAS43B,KACd,OACE53B,EAAAA,QAAAA,cAAAA,EAAAA,QAAAA,SAAA,KACEA,EAAAA,QAAAA,cAAA,OAAK8G,GAAG,kBACR9G,EAAAA,QAAAA,cAAC63B,EAAAA,aAAY,KACX73B,EAAAA,QAAAA,cAACg1B,GAAU,MACXh1B,EAAAA,QAAAA,cAAC62B,GAAmB,MACpB72B,EAAAA,QAAAA,cAAC83B,EAAAA,iBAAgB,OAIzB,CCJO,IAAMC,GAAkB,WAC7B,IAAA32B,GAAgCC,EAAAA,EAAAA,WAAS,GAAKC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAvCqM,EAASnM,EAAA,GAAEoM,EAAUpM,EAAA,GAC5BsoB,GAAiC1kB,EAAAA,EAAAA,qBAAzBD,EAAc2kB,EAAd3kB,eAAgBoI,EAAIuc,EAAJvc,KACxBhI,GAAwChE,EAAAA,EAAAA,UAAmB,IAAGiE,GAAA/D,EAAAA,EAAAA,GAAA8D,EAAA,GAAvD2yB,EAAY1yB,EAAA,GAAE2yB,EAAe3yB,EAAA,GAwBpC,OAtBAlC,EAAAA,EAAAA,YAAU,WACR,IAAM80B,EAAW,eAAAr1B,GAAA8C,EAAAA,EAAAA,GAAAC,mBAAAC,MAAG,SAAAC,IAAA,IAAA+H,EAAAynB,EAAA5tB,EAAA,OAAA9B,mBAAAK,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OACD,OAAjBsH,GAAW,GAAMxH,EAAAE,KAAA,EACSnB,IAAgB,OAEU,OAF9C4I,EAAW3H,EAAAI,KAAAJ,EAAAC,KAAG,EAEZmvB,GAAgBv2B,EAAAA,EAAAA,KAAYO,iBAAgB4G,EAAAE,KAAA,EAC/BkB,EAAAA,EAAMC,IAAG,GAAAtE,OAAyBqyB,EAAa,eAAe,CAC/E9tB,QAAS,CAAEC,cAAe,UAAFxE,OAAY4K,GAAeW,OAAQ,sBAC3D,OAFI9G,EAAIxB,EAAAI,KAIV2xB,EAAgBvwB,EAAKA,KAAKywB,cAC1BzqB,GAAW,GAAOxH,EAAAE,KAAA,iBAAAF,EAAAC,KAAA,GAAAD,EAAAyB,GAAAzB,EAAA,SAElBwH,GAAW,GAAO,yBAAAxH,EAAAS,OAAA,GAAAb,EAAA,mBAErB,kBAdgB,OAAAjD,EAAAmE,MAAA,KAAAzC,UAAA,KAgBb8I,SAAAA,EAAM+qB,SAAUC,EAAAA,EAAAA,WAAUhrB,EAAK+qB,SACjCF,GAEJ,GAAG,CAAC7qB,aAAI,EAAJA,EAAM+qB,OAAQnzB,IAEX,CACL+yB,aAAAA,EACAvqB,UAAAA,EAEJ,ECtCM6qB,GAAsB,WAC1B,IAAAC,EAAmEt5B,OACnE,MAAO,CACLu5B,cAF+BD,EAAzBE,WAGNC,eAH4DH,EAA3BI,YAKrC,EAEaC,GAAsB,WACjC,IAAAx3B,GAAgDC,EAAAA,EAAAA,UAASi3B,MAAsBh3B,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAxEy3B,EAAgBv3B,EAAA,GAAEw3B,EAAmBx3B,EAAA,GAW5C,OATA8B,EAAAA,EAAAA,YAAU,WACR,SAAS21B,IACPD,EAAoBR,KACtB,CAGA,OADAr5B,OAAO6J,iBAAiB,SAAUiwB,GAC3B,kBAAM95B,OAAO8J,oBAAoB,SAAUgwB,EAAa,CACjE,GAAG,IAEIF,CACT,ECvBMG,GAAiB,OACjBC,GAAY,IAEZC,GAAqB,QACrBC,GAAsB,OACtBC,GAAW,IAEXC,GAAgB,K,WCVhBC,GAAc,QCIPC,GAAsB,WACjC,IDFM5mB,ECENiX,GAA8C1kB,EAAAA,EAAAA,qBAAtC2uB,EAAejK,EAAfiK,gBAAiBC,EAAgBlK,EAAhBkK,iBACjB3J,GAAuBC,EAAAA,EAAAA,eAAvBD,mBACF7P,EAAgBxH,KAChB0mB,GDLA7mB,GAAWI,EAAAA,EAAAA,MACVC,QAAQL,EAASM,SAASC,MAAMomB,OCMvCl2B,EAAAA,EAAAA,YAAU,WACJ0wB,IAAsBA,IAAqBD,GAG/C1J,EAAmB,CAAC,EACtB,GAAG,CAAC7P,EAAekf,EAAgBrP,EAAoB2J,EAAkBD,GAC3E,ECAM4F,GAA+Bz5B,EAAAA,QAAAA,MAAW,kBAAM,6BAA0B,IAC1E05B,GAAqB15B,EAAAA,QAAAA,MAAW,kBAAM,4BAA2B,IACjE25B,GAAiB35B,EAAAA,QAAAA,MAAW,kBAAM,6DAAuB,IACzD45B,GAAoB55B,EAAAA,QAAAA,MAAW,kBAAM,6BAA0B,IAC/D65B,GAAsB75B,EAAAA,QAAAA,MAAW,kBAAM,oDAA4B,IAEzE,SAAS85B,KACP,IAAMpf,GAAWO,EAAAA,EAAAA,MACjB2O,GAA2D1kB,EAAAA,EAAAA,qBAAnD2uB,EAAejK,EAAfiK,gBAAiBC,EAAgBlK,EAAhBkK,iBAAkBiG,EAAKnQ,EAALmQ,MAAO1sB,EAAIuc,EAAJvc,KAClD2sB,GAAwFC,EAAAA,GAAAA,KAAhFC,EAAaF,EAAbE,cAAeC,EAAkBH,EAAlBG,mBAAoBC,EAAoBJ,EAApBI,qBAAsBC,EAAkBL,EAAlBK,mBACjEC,EAAsDvC,KAA9CC,EAAYsC,EAAZtC,aAAyBuC,EAAgBD,EAA3B7sB,UACtB+sB,GAA+E/xB,EAAAA,EAAAA,GAAwB,CACrGC,WAAY,WACZC,YAAa,wBAFI8xB,EAAsBD,EAAjC5xB,UAA4C8xB,EAAsBF,EAA/BlT,QAI3CiS,KACA7F,KAEA,IAAMzW,EHfD,WACL,IAAQ4W,GAAoB3uB,EAAAA,EAAAA,qBAApB2uB,gBACF8G,EAAUpP,EAAAA,cAAcqP,qBAC9B/H,GAAuEC,EAAAA,EAAAA,oBAArD+H,EAAehI,EAAzBpB,SAAwCqJ,EAAkBjI,EAA/BnB,YAC3BqJ,GAAeC,EAAAA,EAAAA,iBAAfD,WACAvC,EAAkBI,KAAlBJ,cAERp3B,GAAwCC,EAAAA,EAAAA,UAAS+3B,IAAS93B,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAnD65B,EAAY35B,EAAA,GAAE45B,EAAe55B,EAAA,GAG9B65B,GAAoBna,EAAAA,EAAAA,QAAO8Z,GAyDjC,OAvDA13B,EAAAA,EAAAA,YAAU,WACR,IAAIgI,EAAS6tB,GAOb,OANIpF,IAAoBkH,IACtB3vB,EAAS4tB,IAGXnwB,SAASuyB,gBAAgB5L,MAAM6L,YAAY,kBAAmBjwB,GAEvD,WACLvC,SAASuyB,gBAAgB5L,MAAM6L,YAAY,kBAAmBpC,GAChE,CACF,GAAG,CAACpF,EAAiBkH,KAErB33B,EAAAA,EAAAA,YAAU,WACR,IAAI+H,EAAQiuB,GAOZ,OANIvF,IAAoBkH,IACtB5vB,EAAQ0vB,EAAkB3B,GAAqBC,IAGjDtwB,SAASuyB,gBAAgB5L,MAAM6L,YAAY,uBAAwBlwB,GAE5D,WACLtC,SAASuyB,gBAAgB5L,MAAM6L,YAAY,uBAAwBjC,GACrE,CACF,GAAG,CAACvF,EAAiBkH,EAAYF,KAEjCz3B,EAAAA,EAAAA,YAAU,WACR,IAQSk4B,EARLnwB,EAAQiuB,GAgBZ,OAfIvF,IAAoBkH,IAGlB5vB,EAFAwvB,EAAQlJ,SACoB,UAA1BkJ,EAAQY,eAAuD,UAA1BZ,EAAQY,cACvCZ,EAAQY,cAER,QAGoB,QAAzBD,EAAGX,EAAQa,sBAAc,IAAAF,EAAAA,EAAIlC,IAGtC8B,EAAgB/vB,GAEhBtC,SAASuyB,gBAAgB5L,MAAM6L,YAAY,wBAAyBlwB,GAE7D,WACLtC,SAASuyB,gBAAgB5L,MAAM6L,YAAY,wBAAyBjC,GACtE,CACF,GAAG,CAACvF,EAAiBkH,EAAYJ,EAAQlJ,SAAUkJ,EAAQY,cAAeZ,EAAQa,kBAElFp4B,EAAAA,EAAAA,YAAU,WACJu3B,EAAQlJ,UAAY+G,EAAgBa,IAEtC8B,EAAkB9yB,SAAQ,EAE9B,GAAG,CAACmwB,EAAemC,EAAQlJ,WAEpB,CACLgK,WAAY5H,IAAoBkH,EAChCW,YAAa7H,IAAoBkH,EACjCY,YAAa9H,IAAoBkH,EACjCE,aAAAA,EAEJ,CG1DkBW,GA2ChB,OAzCA57B,EAAAA,QAAAA,WAAgB,WACVq6B,GACFH,GAEJ,GAAG,CAACG,EAAoBH,IAExBl6B,EAAAA,QAAAA,WAAgB,WACVo6B,GACFF,GAEJ,GAAG,CAACE,EAAsBF,IAE1Bl6B,EAAAA,QAAAA,WAAgB,WACVm6B,GACFD,EAAc,CAAE2B,eAAe,GAEnC,GAAG,CAAC1B,EAAoBD,IAExBl6B,EAAAA,QAAAA,WAAgB,WACd,IAAMsnB,EAAUwM,GAAoByG,GAAoBG,EAClDoB,EAAY9D,EAAaxzB,OAAS,EACpC8iB,IAAYmT,IAA4B3G,IAAqBD,GAAoBiI,IAIhFzD,EAAAA,EAAAA,WAAUhrB,aAAI,EAAJA,EAAM+qB,SAIrB1d,EAASmJ,EAAAA,GAAckY,eACzB,GAAG,CACDlI,EACAC,EACAzmB,aAAI,EAAJA,EAAM+qB,OACNqC,EACAzC,EACAuC,EACAG,EACAhgB,IAGGoZ,GAAqBD,EAMxB7zB,EAAAA,QAAAA,cAAA,OAAK,eAAa,SAAS8G,GAAG,UAC5B9G,EAAAA,QAAAA,cAAC43B,GAAO,MACP3a,EAAQye,aAAe17B,EAAAA,QAAAA,cAACyyB,GAAc,MACtCxV,EAAQ0e,aAAe37B,EAAAA,QAAAA,cAACqrB,GAAU,CAACC,WAAqC,MAAzBrO,EAAQge,eACvDhe,EAAQwe,YAAcz7B,EAAAA,QAAAA,cAACiS,GAAM,MAC9BjS,EAAAA,QAAAA,cAACg8B,GAAa,QAVhBjC,IACO,KAYX,CAEA,SAASiC,KACP,IAAMrpB,GAAWI,EAAAA,EAAAA,MACAkpB,GAAqBC,EAAAA,EAAAA,kBAAiBvpB,EAASxI,QAAxDmd,QACR6U,EAAsD5Q,EAAAA,cAAc6Q,aAAlDC,EAAiBF,EAA3B1K,SAA6B6K,EAAYH,EAAZG,aAC7BrpB,EAAahU,OAAO0T,SAApBM,SASFspB,EARe,CACnB1Y,EAAAA,GAAcK,gBACdL,EAAAA,GAAcG,YACdH,EAAAA,GAAcM,0BACdN,EAAAA,GAAckY,eACdlY,EAAAA,GAAcC,kBAGiB7Y,MAAK,SAAA6W,GAAI,OAAI7O,EAAStB,SAASmQ,EAAK,IAQrE,OANA9hB,EAAAA,QAAAA,WAAgB,WACVu8B,GAAeF,GACjBC,GAEJ,GAAG,CAACD,EAAmBE,EAAaD,IAEhCL,EACKj8B,EAAAA,QAAAA,cAACmN,EAAAA,SAASD,WAAU,CAACsvB,SAAO,EAACpxB,OAAO,UAI3CpL,EAAAA,QAAAA,cAAA,OAAK,eAAa,iBAAiB8G,GAAG,kBACpC9G,EAAAA,QAAAA,cAACA,EAAAA,QAAAA,SAAc,CAACy8B,SAAUz8B,EAAAA,QAAAA,cAACmN,EAAAA,SAASD,WAAU,CAACsvB,SAAO,EAACpxB,OAAO,WAC5DpL,EAAAA,QAAAA,cAAC08B,EAAAA,GAAM,KACL18B,EAAAA,QAAAA,cAAC28B,EAAAA,GAAK,CACJ7a,KAAM+B,EAAAA,GAAcC,iBACpBjE,QAAS7f,EAAAA,QAAAA,cAAC48B,EAAAA,GAAQ,CAACC,GAAE,GAAA55B,OAAK4gB,EAAAA,GAAcC,iBAAgB,KAAA7gB,OAAI65B,EAAAA,GAAWC,SAAWC,SAAO,MAE3Fh9B,EAAAA,QAAAA,cAAC28B,EAAAA,GAAK,CAAC7a,KAAI,GAAA7e,OAAK4gB,EAAAA,GAAcC,iBAAgB,KAAA7gB,OAAI65B,EAAAA,GAAWC,SAAWld,QAAS7f,EAAAA,QAAAA,cAAC65B,GAAmB,QACrG75B,EAAAA,QAAAA,cAAC28B,EAAAA,GAAK,CAAC7a,KAAM+B,EAAAA,GAAcM,0BAA2BtE,QAAS7f,EAAAA,QAAAA,cAACy5B,GAA4B,QAC5Fz5B,EAAAA,QAAAA,cAAC28B,EAAAA,GAAK,CAAC7a,KAAM+B,EAAAA,GAAcK,gBAAiBrE,QAAS7f,EAAAA,QAAAA,cAAC05B,GAAkB,QACxE15B,EAAAA,QAAAA,cAAC28B,EAAAA,GAAK,CAAC7a,KAAM+B,EAAAA,GAAcG,YAAanE,QAAS7f,EAAAA,QAAAA,cAAC25B,GAAc,QAChE35B,EAAAA,QAAAA,cAAC28B,EAAAA,GAAK,CAAC7a,KAAM+B,EAAAA,GAAckY,eAAgBlc,QAAS7f,EAAAA,QAAAA,cAAC45B,GAAiB,UAKhF,C,4pBCnIA,IAAMqD,EAAe,GAAHh6B,OAAMhE,OAAO0T,SAAS6H,OAAM,aAqBjCyf,EAAmB,WAC9B,IAAArQ,GAAyB1kB,EAAAA,EAAAA,qBAAjB60B,EAAKnQ,EAALmQ,MAAOlyB,EAAK+hB,EAAL/hB,MACP7F,GAAUC,EAAAA,EAAAA,gBAAVD,MACF0Y,GAAWO,EAAAA,EAAAA,MAEXiiB,GAAUlJ,EAAAA,EAAAA,GAAc,WACxBlsB,GAAUksB,EAAAA,EAAAA,GAAc,WAExBqG,GAAqBpyB,EAAAA,EAAAA,UAAQ,kBAAMJ,GAASA,EAAMC,QAAQyI,WAxB7B,cAwB8D,GAAE,CAAC1I,IAE9FuyB,GAAgCnyB,EAAAA,EAAAA,UACpC,iBAAkB,SAAZi1B,GA9BgC,gEA8BVp1B,CAA6C,GACzE,CAACA,EAASo1B,IAEN/C,GAA8BlyB,EAAAA,EAAAA,UAClC,iBAAkB,SAAZi1B,GAjCsB,qEAiCAp1B,CAAmC,GAC/D,CAACA,EAASo1B,KAGZ95B,EAAAA,EAAAA,YAAU,WACQ,UAAZ85B,GAAyBp1B,GAC3B4S,EAAS,mBAADzX,OAAoB8Z,mBAAmBjV,IAEnD,GAAG,CAAC4S,EAAU5S,EAASo1B,IAEvB,IAAMhD,GAAgBx0B,EAAAA,EAAAA,cACpB,SAACiH,GACC,IAAIwwB,EAAa,cACjB,QAAQ,GACN,MAAOxwB,UAAAA,EAAQywB,gBACbD,EAAa,sBACb,MACF,MAAOxwB,UAAAA,EAAQkvB,eACbsB,EAAa,gCAKjBn7B,EAAMm7B,GACN,IAAM39B,EAAOmF,EAAAA,EAAAA,EAAA,GACRgI,IACCA,aAAM,EAANA,EAAQywB,iBAAkB,CAAEC,YAAa,GAAFp6B,OAAKg6B,EAAY,WAAAh6B,OAAU0J,EAAOywB,mBACzEzwB,aAAM,EAANA,EAAQkvB,gBAAiB,CAC3BwB,YAAa,GAAFp6B,OAAKg6B,EAAY,qBAAAh6B,OAAoB8Z,mBA5DrB,6CA6D3BugB,aAAa,IAGjBvD,EAAM,CAAEsD,YAAa79B,EAAQ69B,YAAaC,YAAa99B,EAAQ89B,aACjE,GACA,CAACvD,EAAO/3B,IAGV,OAAOiG,EAAAA,EAAAA,UACL,iBAAO,CACLiyB,cAAAA,EACAE,qBAAAA,EACAD,mBAAAA,EACAE,mBAAAA,EACD,GACD,CAACH,EAAeE,EAAsBD,EAAoBE,GAE9D,C,kCCxFO,IAAMrG,EAAgB,SAACuJ,GAC5B,IAAMC,EAAcv+B,OAAO0T,SAASxI,OAEpC,OADkB,IAAIyC,gBAAgB4wB,GACrBj2B,IAAIg2B,EACvB,C,4ECDO,SAAS90B,EAAwBg1B,GACtC,IAAQC,GAAyBC,EAAAA,EAAAA,mBAAzBD,qBACRt8B,GAAkCC,EAAAA,EAAAA,WAAS,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA1CwH,EAAStH,EAAA,GAAEs8B,EAAYt8B,EAAA,GAC9B+D,GAAkChE,EAAAA,EAAAA,WAAS,GAAKiE,GAAA/D,EAAAA,EAAAA,GAAA8D,EAAA,GAAzCoI,EAASnI,EAAA,GAAEuQ,EAAYvQ,EAAA,GAY9B,OAVAlC,EAAAA,EAAAA,YAAU,WACU,SAAAy6B,IAKjB,OALiBA,GAAAl4B,EAAAA,EAAAA,GAAAC,mBAAAC,MAAlB,SAAAC,IAAA,IAAA8C,EAAA,OAAAhD,mBAAAK,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EAC0Bs3B,EAAqBD,GAAY,OAAnD70B,EAAS1C,EAAAI,KAEfs3B,EAAah1B,GACbiN,GAAa,GAAO,wBAAA3P,EAAAS,OAAA,GAAAb,EAAA,KACrB+3B,EAAA72B,MAAA,KAAAzC,UAAA,EANa,WACIs5B,EAAA72B,MAAC,KAADzC,UAAA,CAMlBu5B,EACF,GAAG,CAACL,EAAaC,IAEV,CAAE90B,UAAAA,EAAW0e,QAAS7Z,EAC/B,C,wDCjBapH,EAAgB,eAAAxD,GAAA8C,EAAAA,EAAAA,GAAAC,mBAAAC,MAAG,SAAAC,EAAOi4B,GAAc,IAAAC,EAAAhQ,EAAA,OAAApoB,mBAAAK,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EAC7B63B,EAAAA,cAAcC,4BAA2B,OAAlD,GAAPF,EAAO93B,EAAAI,MACTy3B,EAAK1tB,MAAK,SAAA8tB,GAAC,OAAIH,EAAQrsB,SAASwsB,EAAE,IAAG,CAAFj4B,EAAAE,KAAA,eAAAF,EAAAQ,OAAA,UAC9B,GAAI,cAAAR,EAAAE,KAAA,EAGU63B,EAAAA,cAAcG,6BAA4B,OAAnD,GAARpQ,EAAQ9nB,EAAAI,MACVy3B,EAAK1tB,MAAK,SAAA8tB,GAAC,OAAInQ,EAASrc,SAASwsB,EAAE,IAAG,CAAFj4B,EAAAE,KAAA,gBAAAF,EAAAQ,OAAA,UAC/B,GAAI,eAAAR,EAAAQ,OAAA,UAGN,GAAK,yBAAAR,EAAAS,OAAA,GAAAb,EAAA,KACb,gBAZ4BwJ,GAAA,OAAAzM,EAAAmE,MAAA,KAAAzC,UAAA,I,iCCFtB,IAAMiwB,EAAiB,SAAC6J,GAC7B,OAAO,IAAIhpB,SAAQ,SAAA2X,GACjB,IAAKqR,EACH,OAAOrR,EAAQ,MAEjB,GAAInkB,SAASiX,cAAcue,GACzB,OAAOrR,EAAQnkB,SAASiX,cAAcue,IAGxC,IAAMC,EAAW,IAAIC,kBAAiB,WAChC11B,SAASiX,cAAcue,KACzBrR,EAAQnkB,SAASiX,cAAcue,IAC/BC,EAASE,aAEb,IAEAF,EAASG,QAAQ51B,SAAS8sB,KAAM,CAC9B+I,WAAW,EACXC,SAAS,GAEb,GACF,C,mEClBIC,E,MAA0B,GAA4B,KAE1DA,EAAwBz7B,KAAK,CAAC07B,EAAO/3B,GAAI,2DAItC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,yDAAyD,MAAQ,GAAG,SAAW,iCAAiC,eAAiB,CAAC,4DAA4D,WAAa,MAEzO,S,mECRI83B,E,MAA0B,GAA4B,KAE1DA,EAAwBz7B,KAAK,CAAC07B,EAAO/3B,GAAI,kgBAuBtC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,sEAAsE,MAAQ,GAAG,SAAW,4OAA4O,eAAiB,CAAC,mgBAAmgB,WAAa,MAEx4B,S,+FC1BIg4B,EAAgC,IAAIx1B,IAAI,aACxCs1B,EAA0B,IAA4B,KACtDG,EAAqC,IAAgCD,GAEzEF,EAAwBz7B,KAAK,CAAC07B,EAAO/3B,GAAI,mDACfi4B,sLAWvB,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,wFAAwF,MAAQ,GAAG,SAAW,4GAA4G,eAAiB,CAAC,qPAAqP,WAAa,MAE5gB,S,mECnBIH,E,MAA0B,GAA4B,KAE1DA,EAAwBz7B,KAAK,CAAC07B,EAAO/3B,GAAI,sEAItC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,oFAAoF,MAAQ,GAAG,SAAW,sCAAsC,eAAiB,CAAC,uEAAuE,WAAa,MAEpR,S,+FCPIg4B,EAAgC,IAAIx1B,IAAI,aACxCs1B,EAA0B,IAA4B,KACtDG,EAAqC,IAAgCD,GAEzEF,EAAwBz7B,KAAK,CAAC07B,EAAO/3B,GAAI,2CACfi4B,mNAavB,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,wFAAwF,MAAQ,GAAG,SAAW,mIAAmI,eAAiB,CAAC,4QAA4Q,WAAa,MAE1jB,S,mECrBIH,E,MAA0B,GAA4B,KAE1DA,EAAwBz7B,KAAK,CAAC07B,EAAO/3B,GAAI,ssBA+CtC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,gFAAgF,MAAQ,GAAG,SAAW,6SAA6S,eAAiB,CAAC,usBAAusB,WAAa,MAEvpC,S,mECnDI83B,E,MAA0B,GAA4B,KAE1DA,EAAwBz7B,KAAK,CAAC07B,EAAO/3B,GAAI,gHAQtC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,oGAAoG,MAAQ,GAAG,SAAW,sDAAsD,eAAiB,CAAC,iHAAiH,WAAa,MAE9V,S,mECZI83B,E,MAA0B,GAA4B,KAE1DA,EAAwBz7B,KAAK,CAAC07B,EAAO/3B,GAAI,oPAYtC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,oGAAoG,MAAQ,GAAG,SAAW,mFAAmF,eAAiB,CAAC,qPAAqP,WAAa,MAE/f,S,mEChBI83B,E,MAA0B,GAA4B,KAE1DA,EAAwBz7B,KAAK,CAAC07B,EAAO/3B,GAAI,qiCAuDtC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,wGAAwG,MAAQ,GAAG,SAAW,ycAAyc,eAAiB,CAAC,siCAAsiC,WAAa,MAE1qD,S,mEC3DI83B,E,MAA0B,GAA4B,KAE1DA,EAAwBz7B,KAAK,CAAC07B,EAAO/3B,GAAI,+HAMtC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,oEAAoE,MAAQ,GAAG,SAAW,8DAA8D,eAAiB,CAAC,gIAAgI,WAAa,MAErV,S,kECVI83B,E,MAA0B,GAA4B,KAE1DA,EAAwBz7B,KAAK,CAAC07B,EAAO/3B,GAAI,qaAmBtC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,sEAAsE,MAAQ,GAAG,SAAW,uMAAuM,eAAiB,CAAC,saAAsa,WAAa,MAEtwB,S,mECvBI83B,E,MAA0B,GAA4B,KAE1DA,EAAwBz7B,KAAK,CAAC07B,EAAO/3B,GAAI,8HAQtC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,gFAAgF,MAAQ,GAAG,SAAW,8DAA8D,eAAiB,CAAC,+HAA+H,WAAa,MAEhW,S,mECZI83B,E,MAA0B,GAA4B,KAE1DA,EAAwBz7B,KAAK,CAAC07B,EAAO/3B,GAAI,+IAStC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,yDAAyD,MAAQ,GAAG,SAAW,iEAAiE,eAAiB,CAAC,gJAAgJ,WAAa,MAE7V,S,mECbI83B,E,MAA0B,GAA4B,KAE1DA,EAAwBz7B,KAAK,CAAC07B,EAAO/3B,GAAI,wcAyBtC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,0DAA0D,MAAQ,GAAG,SAAW,wOAAwO,eAAiB,CAAC,ycAAyc,WAAa,MAE9zB,S,mEC7BI83B,E,MAA0B,GAA4B,KAE1DA,EAAwBz7B,KAAK,CAAC07B,EAAO/3B,GAAI,gcAmBtC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,gEAAgE,MAAQ,GAAG,SAAW,yIAAyI,eAAiB,CAAC,icAAic,WAAa,MAE7tB,S,mECvBI83B,E,MAA0B,GAA4B,KAE1DA,EAAwBz7B,KAAK,CAAC07B,EAAO/3B,GAAI,2nBAmCtC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,yDAAyD,MAAQ,GAAG,SAAW,8TAA8T,eAAiB,CAAC,4nBAA4nB,WAAa,MAEtkC,S","sources":["webpack://client/./src/config.ts","webpack://client/./src/components/header/components/HelpIcon/HelpIcon.css?e72d","webpack://client/./src/components/header/components/HelpIcon/guide-modal/GuideModal.css?44a6","webpack://client/./src/components/header/components/HelpIcon/goodbye-slide/GoodbyeSlide.css?2341","webpack://client/./src/components/header/components/HelpIcon/goodbye-slide/GoodbyeSlide.tsx","webpack://client/./src/components/header/components/HelpIcon/state/action.ts","webpack://client/./src/components/header/components/HelpIcon/state/state.ts","webpack://client/./src/components/header/components/HelpIcon/state/context.tsx","webpack://client/./src/components/header/components/HelpIcon/welcome-slide/WelcomeSlide.css?fa22","webpack://client/./src/components/header/components/HelpIcon/welcome-slide/WelcomeSlide.tsx","webpack://client/./src/components/header/components/HelpIcon/guide-modal/GuideModal.tsx","webpack://client/./src/components/header/components/HelpIcon/hooks/useUserVoiceToken.ts","webpack://client/./src/components/header/components/HelpIcon/state/reducer.ts","webpack://client/./src/components/header/components/HelpIcon/HelpIcon.tsx","webpack://client/./src/components/header/components/Impersonate/ClientsList.tsx","webpack://client/./src/components/header/components/Impersonate/ImpersonateIcon.css?2691","webpack://client/./src/components/header/components/Impersonate/ImpersonateIcon.tsx","webpack://client/./src/components/header/components/Impersonate/UserGroupsList.tsx","webpack://client/./src/components/header/components/Impersonate/useImpersonate.ts","webpack://client/./src/components/header/components/Impersonate/Impersonate.tsx","webpack://client/./src/components/header/components/Impersonate/useIsMarket2Page.ts","webpack://client/./src/components/header/components/Notifications/NotificationsPanel/state/action.ts","webpack://client/./src/components/header/components/Notifications/NotificationsPanel/state/state.ts","webpack://client/./src/components/header/components/Notifications/NotificationsPanel/state/context.tsx","webpack://client/./src/components/header/components/Notifications/hooks/useUnreadNotificationsCount.ts","webpack://client/./src/components/header/components/Notifications/hooks/useUserNotifications.tsx","webpack://client/./src/components/header/components/Alerts/AlertItem.tsx","webpack://client/./src/components/header/components/Notifications/hooks/useNotificationUpdates.tsx","webpack://client/./src/components/header/components/Notifications/hooks/useDeleteUserNotifications.ts","webpack://client/./src/components/header/components/Notifications/NotificationsPanel/NotificationPanelClearAllModal.tsx","webpack://client/./src/components/header/components/Notifications/NotificationsPanel/NotificationsPanel.css?0365","webpack://client/./src/components/header/components/Notifications/NotificationItem/content/CollectionDownload/CollectionDownloadNotification.tsx","webpack://client/./src/components/header/components/Notifications/NotificationItem/content/CollectionOwnershipTransfer/CollectionOwnershipTransferNotification.tsx","webpack://client/./src/components/header/components/Notifications/NotificationItem/content/DataUpdates/DataUpdatesNotification.tsx","webpack://client/./src/components/header/components/Notifications/NotificationItem/content/DataUpdates/market-updates/MarketUpdatesNotification.tsx","webpack://client/./src/components/header/components/Notifications/NotificationItem/content/DataUpdates/retail-updates/RetailUpdatesNotification.tsx","webpack://client/./src/components/header/components/Notifications/NotificationItem/content/SharedCollection/SharedCollectionNotification.tsx","webpack://client/./src/components/header/components/Notifications/NotificationItem/content/SharedEntity/SharedEntityNotification.tsx","webpack://client/./src/components/header/components/Notifications/NotificationItem/content/SharedFilter/SharedFilterNotification.tsx","webpack://client/./src/components/header/components/Notifications/types.ts","webpack://client/./src/components/header/components/Notifications/hooks/useNotificationTypes.tsx","webpack://client/./src/components/header/components/Notifications/NotificationItem/NotificationItem.css?7bb7","webpack://client/./src/components/header/components/Notifications/NotificationItem/NotificationItem.tsx","webpack://client/./src/components/header/components/Notifications/NotificationsPanel/NotificationsPanelContent.tsx","webpack://client/./src/components/header/components/Notifications/NotificationsPanel/NotificationsPanel.tsx","webpack://client/./src/components/header/components/Notifications/NotificationIcon/NotificationIcon.css?4d1d","webpack://client/./src/components/header/components/Notifications/NotificationIcon/NotificationIcon.tsx","webpack://client/./src/components/header/components/Notifications/NotificationsPanel/state/reducer.ts","webpack://client/./src/components/header/components/UserBar/UserBar.css?a19b","webpack://client/./src/components/header/components/UserBar/UserPanel.css?7c69","webpack://client/./src/components/header/components/UserBar/UserPanelItem.tsx","webpack://client/./src/components/header/components/UserBar/UserPanel.tsx","webpack://client/./src/components/header/components/UserBar/UserBar.tsx","webpack://client/./src/components/header/components/UserInvite/components/index.css?a92d","webpack://client/./src/components/header/components/UserInvite/components/InviteUsersInput/InviteUsersInput.tsx","webpack://client/./src/components/header/components/UserInvite/components/InviteUserModal/InviteUserModal.tsx","webpack://client/./src/components/header/components/UserInvite/hooks/useUserInvites.tsx","webpack://client/./src/components/header/components/UserInvite/components/InvitationStatusList/InvitationStatusList.tsx","webpack://client/./src/components/header/components/UserInvite/UserInvite.tsx","webpack://client/./src/components/header/Header.tsx","webpack://client/./src/components/side-drawer/SideDrawer.css?b73e","webpack://client/./src/components/side-drawer/SideDrawer.tsx","webpack://client/./src/components/side-nav/context.ts","webpack://client/./src/components/side-nav/SideNavigation.css?e636","webpack://client/./src/components/side-nav/utils.ts","webpack://client/./src/components/side-nav/parts/Tooltip.css?55ac","webpack://client/./src/components/side-nav/parts/RestrictedIcon.tsx","webpack://client/./src/components/side-nav/parts/Tooltip.tsx","webpack://client/./src/components/side-nav/parts/NavigationSubLink.tsx","webpack://client/./src/components/side-nav/parts/NavigationItem.css?6424","webpack://client/./src/components/side-nav/parts/NavigationItem.tsx","webpack://client/./src/components/side-nav/SideNavigation.tsx","webpack://client/./src/hooks/useUtmCampaign.ts","webpack://client/./src/components/beta-banner/BetaBanner.css?7197","webpack://client/./src/components/beta-banner/BetaBanner.tsx","webpack://client/./src/tools/PreferenceAPIService.ts","webpack://client/./src/pages/banners/pageVersion.ts","webpack://client/./src/pages/banners/hooks/usePageVersion.ts","webpack://client/./src/pages/banners/components/PrivacyPolicyBanner/PrivacyPolicyBanner.tsx","webpack://client/./src/pages/banners/Banners.tsx","webpack://client/./src/pages/requestAccess/hooks/useUserPackages.ts","webpack://client/./src/pages/main/useWindowDimensions.ts","webpack://client/./src/pages/main/useContentSizing.tsx","webpack://client/./src/hooks/useIsConsumerPage.ts","webpack://client/./src/pages/main/useQualtricsRefresh.ts","webpack://client/./src/pages/main/Main.tsx","webpack://client/./src/pages/main/useLoginRedirect.tsx","webpack://client/./src/tools/getQueryParams.ts","webpack://client/./src/tools/useIsFeatureFlagEnabled.ts","webpack://client/./src/tools/userAccess.ts","webpack://client/./src/tools/waitForElement.ts","webpack://client/./src/components/beta-banner/BetaBanner.css","webpack://client/./src/components/header/components/HelpIcon/HelpIcon.css","webpack://client/./src/components/header/components/HelpIcon/goodbye-slide/GoodbyeSlide.css","webpack://client/./src/components/header/components/HelpIcon/guide-modal/GuideModal.css","webpack://client/./src/components/header/components/HelpIcon/welcome-slide/WelcomeSlide.css","webpack://client/./src/components/header/components/Impersonate/ImpersonateIcon.css","webpack://client/./src/components/header/components/Notifications/NotificationIcon/NotificationIcon.css","webpack://client/./src/components/header/components/Notifications/NotificationItem/NotificationItem.css","webpack://client/./src/components/header/components/Notifications/NotificationsPanel/NotificationsPanel.css","webpack://client/./src/components/header/components/UserBar/UserBar.css","webpack://client/./src/components/header/components/UserBar/UserPanel.css","webpack://client/./src/components/header/components/UserInvite/components/index.css","webpack://client/./src/components/side-drawer/SideDrawer.css","webpack://client/./src/components/side-nav/SideNavigation.css","webpack://client/./src/components/side-nav/parts/NavigationItem.css","webpack://client/./src/components/side-nav/parts/Tooltip.css"],"sourcesContent":["const CONFIG_KEY = 'NEWRON_PLATFORM_CONFIG';\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nfunction getConfig() {\n const config: Record<string, string> = (window as any)[CONFIG_KEY] || {};\n return {\n SEGMENT_ID: config['SEGMENT_ID'] || '',\n AUTH0_DOMAIN: config['AUTH0_DOMAIN'] || '',\n API_NOTIFICATION_PATH: config['API_NOTIFICATION_PATH'] || '/api/notification-api',\n API_PREFERENCE_PATH: config['API_PREFERENCE_PATH'] || '/preference-filters',\n API_PERSONA_PATH: config['API_PERSONA_PATH'] || '/api/persona',\n API_USER_API_PATH: config['API_USER_API_PATH'] || '/api/users-api',\n };\n}\n\ntype Config = ReturnType<typeof getConfig>;\n\nexport { getConfig, CONFIG_KEY, Config };\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./HelpIcon.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./HelpIcon.css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./GuideModal.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./GuideModal.css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./GoodbyeSlide.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./GoodbyeSlide.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React from 'react';\n\nimport './GoodbyeSlide.css';\n\nexport const GoodbyeSlide = (): React.ReactElement => {\n return (\n <div className=\"text-center w-full\">\n <div className=\"goodbye-slide-image\" />\n <h1 className=\"mt-6 text-lg font-bold\">How can we help?</h1>\n <p className=\"subheader-goodbye overflow-hidden px-11\">\n gfknewron will help you take your business to the next level. Let us know what you think via our Support tab to\n the right.\n </p>\n </div>\n );\n};\n","export enum ActionType {\n SetIsPanelOpen,\n SetIsGuideModalOpen,\n}\n\nexport interface SetIsPanelOpen {\n type: ActionType.SetIsPanelOpen;\n payload: boolean;\n}\nexport const setIsPanelOpen = (isPanelOpen: boolean): Action => ({\n type: ActionType.SetIsPanelOpen,\n payload: isPanelOpen,\n});\n\nexport interface SetIsGuideModalOpen {\n type: ActionType.SetIsGuideModalOpen;\n payload: boolean;\n}\nexport const setIsGuideModalOpen = (isShowModal: boolean): Action => ({\n type: ActionType.SetIsGuideModalOpen,\n payload: isShowModal,\n});\n\nexport type Action = SetIsGuideModalOpen | SetIsPanelOpen;\n","export type HelpPanelState = {\n isPanelOpen: boolean;\n isGuideModalOpen: boolean;\n};\nexport const initialState: HelpPanelState = {\n isPanelOpen: false,\n isGuideModalOpen: false,\n};\n","import React from 'react';\n\nimport { Action } from './action';\nimport { HelpPanelState, initialState } from './state';\n\nexport const HelpPanelContext = React.createContext<{\n state: HelpPanelState;\n dispatch: React.Dispatch<Action>;\n}>({\n state: initialState,\n dispatch: () => undefined,\n});\n\nexport interface HelpPanelProviderProps {\n isGuideModalOpen: boolean;\n isPanelOpen: boolean;\n}\n","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./WelcomeSlide.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./WelcomeSlide.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React from 'react';\n\nimport './WelcomeSlide.css';\n\nexport const WelcomeSlide = (): React.ReactElement => {\n return (\n <div className=\"text-center w-full\">\n <div className=\"rocketimage\" />\n <h1 className=\"mt-4 mb-2 text-lg font-bold\">Welcome to gfknewron</h1>\n <p className=\"subheader overflow-hidden px-11 h-16\">\n Maximize the power of your market intelligence data to make the right decisions - fast.\n </p>\n </div>\n );\n};\n","import { OnboardingGuideRegister, useAnalytics } from '@ecosystem/newron-client-lib';\nimport { containers, elements, overlays } from '@ecosystem/newron-design-system';\nimport React, { useContext, useEffect, useState } from 'react';\n\nimport './GuideModal.css';\nimport { GoodbyeSlide } from '../goodbye-slide/GoodbyeSlide';\nimport { setIsGuideModalOpen } from '../state/action';\nimport { HelpPanelContext } from '../state/context';\nimport { WelcomeSlide } from '../welcome-slide/WelcomeSlide';\n\nexport const GuideModal = (): JSX.Element => {\n const { state, dispatch } = useContext(HelpPanelContext);\n const [modalPage, setModalPage] = useState<number>(0);\n const { Modal } = overlays;\n const { Carousel } = containers;\n const { Icon } = elements;\n const { track } = useAnalytics();\n\n const registrations = OnboardingGuideRegister.getInstance().getAll();\n\n const slides = registrations\n ?.sort((a, b) => a.order - b.order)\n .reduce(\n (arr, { component }) => {\n if (Array.isArray(component)) {\n return [...arr, ...component];\n }\n\n return arr.push(component);\n },\n [WelcomeSlide]\n ) as unknown as React.ReactElement[];\n\n const menuItems = [{ text: 'Welcome to gfknewron', page: 1, testId: 'guide-welcome-to-gfk-newron' }];\n\n useEffect(() => {\n if (modalPage === 1) {\n track('User Guide clicked', {\n guide: 'Welcome to gfknewron',\n page: 0,\n });\n }\n }, [modalPage, track]);\n\n return (\n <>\n <Modal isOpen={state.isGuideModalOpen} size=\"md\">\n <div className=\"px-6 py-4 border-b border-light rounded-t flex justify-between\">\n <span className=\"text-xl\"> Getting Started</span>\n <button\n onClick={() => {\n dispatch(setIsGuideModalOpen(false));\n setModalPage(0);\n }}\n data-test-id=\"close-info-box\"\n >\n <Icon color=\"brand\">\n <Icon.icons.Close />\n </Icon>\n </button>\n </div>\n {modalPage === 0 &&\n menuItems.map(({ text, page, testId }) => (\n <div\n key={page}\n role=\"presentation\"\n data-test-id={testId}\n onClick={() => setModalPage(page)}\n className=\"flex justify-between py-4 pl-6 pr-6 border-b border-default cursor-pointer hover:bg-medium\"\n >\n <span>{text}</span>\n <Icon color=\"brand\">\n <Icon.icons.ChevronRight />\n </Icon>\n </div>\n ))}\n\n {modalPage === 1 && (\n <div className=\"modal-container overflow-y-auto pb-12\">\n <Carousel\n slides={slides.concat(GoodbyeSlide as unknown as React.ReactElement)}\n onChangeSlide={slideIndex =>\n track('User Guide clicked', {\n guide: 'Welcome to gfknewron',\n page: slideIndex,\n })\n }\n />\n </div>\n )}\n </Modal>\n </>\n );\n};\n","import { useAuthentication } from '@ecosystem/newron-client-lib';\nimport axios from 'axios';\nimport { useCallback, useEffect, useState } from 'react';\n\nimport { getConfig } from '../../../../../config';\nimport { USER_VOICE } from '../../../../../constants';\nimport { logger } from '../../../../../logging/logger';\nimport { hasAccessToOneOf } from '../../../../../tools/userAccess';\n\nconst API_USER_API_PATH = getConfig().API_USER_API_PATH;\n\ntype JWTResponse = {\n token: string;\n};\n\nexport const useUserVoiceToken = (): {\n token: string | null;\n forumId: number | null;\n generateToken: () => Promise<void>;\n} => {\n const { getAccessToken } = useAuthentication();\n const [forumId, setForumId] = useState<number | null>(null);\n const [token, setToken] = useState<string | null>(null);\n const getUserVoiceForumBasedOnAccess = useCallback(async (): Promise<number> => {\n let forumId = 0;\n const hasMarketAccess = await hasAccessToOneOf(['newron', 'pos_test']);\n const hasRetailAccess = await hasAccessToOneOf([\n 'retail_insights',\n 'retail_hitlists_standard',\n 'retail_key_account_data',\n 'seller_insights',\n 'retail_market_premium',\n ]);\n if (hasMarketAccess && !hasRetailAccess) {\n forumId = USER_VOICE.INDUSTRY_FORUM;\n } else if (!hasMarketAccess && hasRetailAccess) {\n forumId = USER_VOICE.RETAIL_FORUM;\n }\n // Navigates consumer / predict forecasting / any other subscriptions apart from retail to industry forum\n else {\n forumId = USER_VOICE.INDUSTRY_FORUM;\n }\n return forumId;\n }, []);\n\n useEffect(() => {\n const fetchForumId = async () => {\n const id = await getUserVoiceForumBasedOnAccess();\n setForumId(id);\n };\n fetchForumId();\n }, [getUserVoiceForumBasedOnAccess]);\n\n const generateToken = useCallback(async () => {\n const userAccessToken = await getAccessToken();\n try {\n const response = await axios.get<JWTResponse>(`${API_USER_API_PATH}/v1/users/user-voice`, {\n headers: { Authorization: `Bearer ${userAccessToken}` },\n });\n setToken(response.data.token);\n } catch (err) {\n logger.error(err, { message: `Generate token on user voice errored out: ${err}` });\n }\n }, [getAccessToken]);\n\n useEffect(() => {\n generateToken();\n }, [generateToken]);\n\n return {\n token,\n forumId,\n generateToken,\n };\n};\n","import { Action, ActionType } from './action';\nimport { HelpPanelState, initialState } from './state';\n\nexport const reducer = (state: HelpPanelState = initialState, action: Action): HelpPanelState => {\n switch (action.type) {\n case ActionType.SetIsPanelOpen: {\n return {\n ...state,\n isPanelOpen: action.payload,\n };\n }\n case ActionType.SetIsGuideModalOpen: {\n return {\n ...state,\n isGuideModalOpen: action.payload,\n };\n }\n default: {\n return state;\n }\n }\n};\n","import { useAnalytics } from '@ecosystem/newron-client-lib';\nimport { elements } from '@ecosystem/newron-design-system';\nimport React, { useMemo, useReducer } from 'react';\n\nimport './HelpIcon.css';\nimport { USER_VOICE } from '../../../../constants';\nimport { useIsFeatureFlagEnabled } from '../../../../tools/useIsFeatureFlagEnabled';\n\nimport { GuideModal } from './guide-modal/GuideModal';\nimport { useUserVoiceToken } from './hooks/useUserVoiceToken';\nimport { setIsGuideModalOpen, setIsPanelOpen } from './state/action';\nimport { HelpPanelContext } from './state/context';\nimport { reducer } from './state/reducer';\nimport { initialState } from './state/state';\n\nexport const HelpIcon = (): JSX.Element => {\n const { Icon } = elements;\n const [state, dispatch] = useReducer(reducer, initialState);\n const { track } = useAnalytics();\n const { token, forumId } = useUserVoiceToken();\n\n const contextValue = useMemo(() => ({ state, dispatch }), [state, dispatch]);\n\n const iconRef = React.useRef<HTMLElement>();\n const handleOutsideClick = (event: MouseEvent) => {\n if (iconRef.current && !iconRef.current.contains(event.target as HTMLElement)) {\n dispatch(setIsPanelOpen(false));\n }\n };\n const { isEnabled: isUserVoiceEnabled } = useIsFeatureFlagEnabled({\n domainName: 'platform',\n featureName: 'SUBMIT_FEEDBACK',\n });\n\n const goToUserVoiceDetails = () => {\n if (forumId && token) {\n window.open(USER_VOICE.URL + forumId + '-gfknewron?sso=' + token, '_blank');\n }\n };\n\n React.useEffect(() => {\n document.addEventListener('click', handleOutsideClick);\n return () => document.removeEventListener('click', handleOutsideClick);\n }, []);\n\n return (\n <HelpPanelContext.Provider value={contextValue}>\n <span className=\"relative flex items-center\" ref={iconRef}>\n <button\n onClick={() => {\n dispatch(setIsPanelOpen(!state.isPanelOpen));\n track('Navigation Clicked', {\n linkName: 'Help centre icon',\n });\n }}\n className=\"flex items-center gap-x-2 text-sm font-bold text-interactive hover:bg-medium mr-6 rounded p-0.5 \"\n data-test-id=\"help-icon\"\n >\n <Icon color=\"secondaryInteractive\">\n <Icon.icons.HelpOutline />\n </Icon>\n </button>\n {state.isPanelOpen && (\n <div\n className=\"bg-white border border-default rounded-2 min-w-33 absolute right-0 w-64 z-120 py-2 help-icon-panel\"\n data-test-id=\"help-icon-panel\"\n >\n <h3 className=\"flex leading-tight items-center gap-x-2 text-interactive rounded py-3 px-4\">\n Help and Resources\n </h3>\n\n <hr className=\"border-t-2 border-interactive\" />\n {isUserVoiceEnabled && (\n <button\n onClick={() => {\n dispatch(setIsGuideModalOpen(false));\n dispatch(setIsPanelOpen(false));\n goToUserVoiceDetails();\n track('Share your idea icon is clicked');\n }}\n className=\"flex leading-tight items-center gap-x-2 hover:bg-medium py-3 px-4 cursor-pointer w-full text-left text-interactive\"\n data-test-id=\"feedback\"\n >\n <Icon color=\"secondaryInteractive\">\n <Icon.icons.NewronHelp />\n </Icon>\n <span className=\"mr-2\">Share your idea</span>\n </button>\n )}\n <a\n href=\"https://helpcenter.gfk.com\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex leading-tight items-center gap-x-2 text-interactive rounded no-underline \n hover:text-interactive hover:bg-medium py-3 px-4 cursor-pointer\"\n data-test-id=\"support-header\"\n >\n <Icon color=\"secondaryInteractive\">\n <Icon.icons.HelpOutline />\n </Icon>\n <span className=\"mr-2\">Help Center</span>\n </a>\n <button\n onClick={() => {\n dispatch(setIsGuideModalOpen(true));\n dispatch(setIsPanelOpen(false));\n track('Getting started menu icon clicked');\n }}\n className=\"flex leading-tight items-center gap-x-2 hover:bg-medium py-3 px-4 cursor-pointer w-full text-left text-interactive\"\n >\n <Icon color=\"secondaryInteractive\">\n <Icon.icons.Manual />\n </Icon>\n <span className=\"mr-4\">Getting started</span>\n </button>\n <a\n href=\"https://helpcenter.gfk.com/onboarding-video-tutorials\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex leading-tight items-center gap-x-2 text-interactive rounded no-underline \n hover:text-interactive hover:bg-medium py-3 px-4 cursor-pointer\"\n >\n <Icon color=\"secondaryInteractive\">\n <Icon.icons.Video />\n </Icon>\n <span className=\"mr-2\"> Onboarding videos</span>\n </a>\n </div>\n )}\n </span>\n <GuideModal />\n </HelpPanelContext.Provider>\n );\n};\n","import { inputs } from '@ecosystem/newron-design-system';\nimport React, { useState } from 'react';\n\nimport { Client } from './types';\n\nconst { TextInput, RadioButtons } = inputs;\n\ninterface ClientListProps {\n selectedClient: Client;\n clients: Client[];\n onClientSelect: (client: Client) => void;\n}\n\nconst ClientList: React.FC<ClientListProps> = ({ clients, selectedClient, onClientSelect }) => {\n const [search, setSearch] = useState<string>(selectedClient.clientName);\n\n // sort the clients alphabetically by client.clientName\n const clientsFiltered = clients\n .sort((a, b) => a.clientName.localeCompare(b.clientName))\n .filter(value => value.clientName?.toLowerCase().indexOf(search?.toLowerCase()) >= 0)\n .map(client => {\n return {\n label: client.clientName,\n value: client.clientId.toString(),\n };\n });\n\n return (\n <div className=\"relative flex flex-column border-r w-6/12 border-light text-sm\">\n <div className=\"p-2\">\n <span className=\"font-bold\">Clients</span>\n <div className=\"my-2\">\n <TextInput value={search} placeholder=\"Search Client\" onChange={setSearch} />\n </div>\n </div>\n <div className=\"flex-grow overflow-y-auto overscroll-contain px-4 pb-10\">\n <RadioButtons\n options={clientsFiltered}\n onChange={clientId => onClientSelect(clients.find(client => client.clientId.toString() === clientId))}\n />\n </div>\n </div>\n );\n};\n\nexport default ClientList;\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./ImpersonateIcon.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./ImpersonateIcon.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React from 'react';\nimport './ImpersonateIcon.css';\n\nexport const ImpersonateIcon = (): JSX.Element => (\n <span className=\"impersonate-icon relative w-full h-full\">\n <svg\n className=\"impersonate-brows\"\n width=\"20\"\n height=\"4\"\n viewBox=\"0 0 20 4\"\n stroke=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M4.99998 2C3.6739 2 2.40213 2.52678 1.46445 3.46447L0.0502319 2.05025C1.36299 0.737498 3.14346 0 4.99998 0V2ZM15 0C16.8565 0 18.637 0.737497 19.9497 2.05025L18.5355 3.46447C17.5978 2.52678 16.3261 2 15 2V0Z\"\n />\n </svg>\n <svg\n className=\"impersonate-face\"\n width=\"20\"\n height=\"17\"\n viewBox=\"0 0 20 17\"\n stroke=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <title>disguise face</title>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M5 2C3.89543 2 3 2.89543 3 4C3 5.10457 3.89543 6 5 6C6.10457 6 7 5.10457 7 4C7 2.89543 6.10457 2 5 2ZM7 7.46487C6.41165 7.80521 5.72857 8 5 8C3.13616 8 1.57006 6.72523 1.12602 5H0V3H1.12602C1.57006 1.27477 3.13616 0 5 0C6.86384 0 8.42994 1.27477 8.87398 3H11.1261C11.5701 1.27478 13.1361 0 15 0C16.8638 0 18.4299 1.27477 18.874 3H20V5H18.874C18.4299 6.72523 16.8638 8 15 8C14.2714 8 13.5884 7.80522 13 7.46489V8.36483C13.0739 8.37929 13.1537 8.39605 13.2348 8.41564C13.5358 8.48834 13.9828 8.62735 14.3575 8.96554C14.7764 9.34358 15 9.87198 15 10.5C15 10.8208 14.9726 11.116 14.922 11.387L17.0145 12.6425L15.9855 14.3575L14.0029 13.1679C13.8606 13.3042 13.7085 13.422 13.5503 13.5227L14.8321 15.4453L13.1679 16.5547L11.6874 14.3339C11.461 14.4426 11.2325 14.533 11 14.6016V17H9V14.6015C8.76755 14.533 8.53901 14.4425 8.31262 14.3339L6.83205 16.5547L5.16795 15.4453L6.44971 13.5227C6.2915 13.422 6.13939 13.3042 5.99712 13.1679L4.0145 14.3575L2.9855 12.6425L5.07802 11.387C5.02743 11.116 5 10.8208 5 10.5C5 9.87232 5.22312 9.34515 5.63678 8.96597C6.0086 8.62513 6.45318 8.48093 6.75747 8.40485C6.84146 8.38386 6.92381 8.36603 7 8.35073V7.46487ZM8.01475 12H8.30281L8.55474 12.168C9.23089 12.6187 9.65861 12.75 10 12.75C10.3415 12.75 10.7692 12.6187 11.4453 12.168L11.6973 12H11.9853C11.988 11.9998 11.992 11.9995 11.997 11.9991C12.0186 11.9972 12.0578 11.9925 12.1086 11.982C12.2133 11.9601 12.3451 11.9176 12.47 11.8395C12.6571 11.7226 13 11.4302 13 10.5C13 10.4714 12.9986 10.4513 12.9969 10.4378C12.9891 10.4337 12.9789 10.4286 12.9659 10.4229C12.9204 10.403 12.8561 10.3817 12.7652 10.3597C12.6729 10.3374 12.5758 10.3196 12.4552 10.2978C12.4494 10.2967 12.4436 10.2957 12.4376 10.2946C12.333 10.2758 12.1921 10.2504 12.0623 10.2168C11.9396 10.1851 11.7122 10.1195 11.5012 9.9674C11.241 9.77983 11 9.45066 11 9V5H9V9C9 9.47605 8.72878 9.80214 8.47556 9.97396C8.26866 10.1144 8.04729 10.1752 7.93003 10.2045C7.80992 10.2345 7.67748 10.2587 7.57678 10.2771C7.56669 10.2789 7.55692 10.2807 7.54751 10.2824C7.4298 10.304 7.33321 10.3225 7.24253 10.3451C7.15285 10.3676 7.08874 10.3895 7.04318 10.41C7.0256 10.4179 7.01295 10.4246 7.00423 10.4297C7.00206 10.4437 7 10.4661 7 10.5C7 11.4302 7.34294 11.7226 7.53001 11.8395C7.65498 11.9176 7.78674 11.9601 7.89148 11.982C7.94223 11.9925 7.9815 11.9972 8.00303 11.9991C8.00809 11.9995 8.01203 11.9998 8.01475 12ZM7.00907 10.4104C7.00907 10.4104 7.00863 10.4129 7.00682 10.4166C7.00801 10.4119 7.00907 10.4104 7.00907 10.4104ZM13 4C13 5.10459 13.8954 6 15 6C16.1046 6 17 5.10457 17 4C17 2.89543 16.1046 2 15 2C13.8954 2 13 2.89541 13 4Z\"\n />\n </svg>\n </span>\n);\n","import { inputs } from '@ecosystem/newron-design-system';\nimport React from 'react';\n\nimport { UserGroup } from './types';\n\nconst { Checkbox, CheckboxState } = inputs;\n\ninterface UserGroupsListProps {\n userGroups: UserGroup[];\n selectedUserGroups: UserGroup[];\n toggleAll: () => void;\n onUserGroupSelect: (value: inputs.CheckboxState, userGroup: UserGroup) => void;\n}\n\nconst UserGroupsList: React.FC<UserGroupsListProps> = ({\n userGroups,\n selectedUserGroups,\n toggleAll,\n onUserGroupSelect,\n}) => {\n return (\n <div className=\"relative flex flex-column border-r w-6/12 border-light text-sm\">\n <div className=\"flex-row px-4 py-2\">\n <label className=\"font-bold flex items-center gap-2\">\n <Checkbox\n onChange={toggleAll}\n state={\n selectedUserGroups.length === userGroups.length\n ? CheckboxState.CHECKED\n : selectedUserGroups.length === 0\n ? CheckboxState.UNCHECKED\n : CheckboxState.INDETERMINATE\n }\n />\n {'User Groups'}\n </label>\n </div>\n <div className=\"flex-grow overflow-y-auto overscroll-contain px-4 pb-10\">\n {userGroups.length === 0 ? (\n <div className=\"mt-2\">No user groups found</div>\n ) : (\n // Sort the user groups alphabetically by usergroup.userGroupName\n userGroups\n .sort((a, b) => a.userGroupName.localeCompare(b.userGroupName))\n .map(userGroup => (\n <div key={userGroup.userGroupId} className=\"py-1\">\n <label className=\"flex items-center gap-2 cursor-pointer\">\n <Checkbox\n state={\n selectedUserGroups.find(sg => sg.userGroupId === userGroup.userGroupId)\n ? CheckboxState.CHECKED\n : CheckboxState.UNCHECKED\n }\n onChange={value => onUserGroupSelect(value, userGroup)}\n />\n {userGroup.userGroupName}\n </label>\n </div>\n ))\n )}\n </div>\n </div>\n );\n};\n\nexport default UserGroupsList;\n","import { useAuthentication } from '@ecosystem/newron-client-lib';\nimport axios from 'axios';\nimport { useEffect, useState } from 'react';\n\nimport { Client, UserGroup } from './types';\n\ninterface ClientWithGroupsUrlResponse {\n client_id: number;\n client_name: string;\n internal: boolean;\n user_groups_url: string;\n}\n\ninterface UserGroupResponse {\n user_group_id: number;\n user_group_name: string;\n}\n\ninterface ImpersonateStorage {\n clientId: number;\n clientUserGroupIds: number[];\n}\n\ninterface UseImpersonateReturnType {\n clients: Client[];\n getUserGroups: (url: string) => Promise<UserGroup[]>;\n getImpersonateStorage: () => ImpersonateStorage | null;\n setImpersonateStorage: (clientId: number, clientUserGroupIds: number[]) => void;\n deleteStaleLocalStorage: () => void;\n isLoading: boolean;\n}\nconst PERSONA_API_URL = '/api/persona';\nconst storageKey = 'impersonation';\n\nconst INTERNAL_PREFIXES = ['oauth2|gfk-aad|', 'oauth2|niq-aad|'];\n\nconst params = new URLSearchParams();\n\nconst impersonationClientsQueryParams = {\n v2: {\n product_code: ['pos'],\n },\n};\n\nconst useImpersonate = (isInternalUser: boolean): UseImpersonateReturnType => {\n const [isLoading, setLoading] = useState(true);\n const { getAccessToken } = useAuthentication();\n const [clients, setClients] = useState<Client[]>();\n\n useEffect(() => {\n const getClients = async () => {\n impersonationClientsQueryParams.v2.product_code.forEach(product => params.append('product_code', product));\n setLoading(true);\n const accessToken = getAccessToken();\n const data = await axios.get<ClientWithGroupsUrlResponse[]>(`${PERSONA_API_URL}/v2/client`, {\n headers: { Authorization: `Bearer ${await accessToken}`, Accept: 'application/json' },\n params,\n });\n const transformed = data.data.map(i => ({\n clientId: i.client_id,\n clientName: i.client_name,\n internal: i.internal,\n userGroupsUrl: i.user_groups_url,\n }));\n setClients(transformed);\n setLoading(false);\n };\n\n isInternalUser && getClients();\n }, [getAccessToken, isInternalUser]);\n\n const getUserGroups = async (userGroupUrl: string): Promise<UserGroup[]> => {\n const accessToken = await getAccessToken();\n const data = await axios.get<UserGroupResponse[]>(`${PERSONA_API_URL}${userGroupUrl}`, {\n headers: { Authorization: `Bearer ${accessToken}`, Accept: 'application/json' },\n params,\n });\n return data.data.map(item => ({ userGroupId: item.user_group_id, userGroupName: item.user_group_name }));\n };\n\n const getImpersonateStorage = (): ImpersonateStorage | null => {\n const storage = JSON.parse(localStorage.getItem(storageKey) || '{}');\n\n if (!storage['client_id'] || !storage['client_user_group_ids']) {\n return null;\n }\n\n return {\n clientId: storage['client_id'],\n clientUserGroupIds: storage['client_user_group_ids'],\n };\n };\n\n const setImpersonateStorage = (clientId: number, clientUserGroupIds: number[]) => {\n const storage = JSON.stringify({ client_id: clientId, client_user_group_ids: clientUserGroupIds });\n localStorage.setItem(storageKey, storage);\n };\n\n const deleteStaleLocalStorage = () => {\n // Find all local storage keys that start with any prefixes in `INTERNAL_PREFIXES` and remove them\n const keys = Object.keys(localStorage).filter(key => INTERNAL_PREFIXES.some(prefix => key.startsWith(prefix)));\n keys.forEach(key => localStorage.removeItem(key));\n };\n\n return {\n clients,\n getUserGroups,\n getImpersonateStorage,\n setImpersonateStorage,\n deleteStaleLocalStorage,\n isLoading,\n };\n};\n\nexport default useImpersonate;\n","import { isInternal, useAuthentication } from '@ecosystem/newron-client-lib';\nimport { actions, elements, feedback, inputs, overlays } from '@ecosystem/newron-design-system';\nimport React, { useEffect, useState } from 'react';\n\nimport ClientList from './ClientsList';\nimport { ImpersonateIcon } from './ImpersonateIcon';\nimport UserGroupsList from './UserGroupsList';\nimport { Client, UserGroup } from './types';\nimport useImpersonate from './useImpersonate';\n\nconst { CheckboxState } = inputs;\nconst { Button } = actions;\nconst { Modal } = overlays;\nconst { DotsLoader } = feedback;\n\nexport const Impersonate = (): JSX.Element => {\n const { user } = useAuthentication();\n const isInternalUser = isInternal(user);\n\n const {\n clients = [],\n isLoading,\n getImpersonateStorage,\n setImpersonateStorage,\n deleteStaleLocalStorage,\n getUserGroups,\n } = useImpersonate(isInternalUser);\n const [isModalOpen, setModalOpen] = useState(false);\n const [selectedClient, setSelectedClient] = useState<Client>({} as Client);\n const [userGroups, setUserGroups] = useState<UserGroup[]>([]);\n const [selectedUserGroups, setSelectedUserGroups] = useState<UserGroup[]>([]);\n\n const rehydrateState = async () => {\n const { clientId, clientUserGroupIds } = getImpersonateStorage();\n const client = clients.find(c => c.clientId === clientId);\n const groups = await fetchUserGroups(client);\n const selectedUserGroupsFromLocalStorage = groups.filter(u => clientUserGroupIds.includes(u.userGroupId));\n setSelectedClient(client);\n setSelectedUserGroups(selectedUserGroupsFromLocalStorage);\n };\n\n const setDefaultUserGroups = async (client: Client) => {\n const groups = await getUserGroups(client.userGroupsUrl);\n setSelectedUserGroups(groups);\n setImpersonateStorage(\n clients[0].clientId,\n groups.map(g => g.userGroupId)\n );\n };\n\n const fetchUserGroups = async (client: Client) => {\n const userGroupsResponse = await getUserGroups(client.userGroupsUrl);\n setUserGroups(userGroupsResponse);\n return userGroupsResponse;\n };\n\n useEffect(() => {\n if (!isLoading && clients) {\n //Rehydrates from local storage\n const storage = getImpersonateStorage();\n if (storage) {\n rehydrateState();\n } else {\n setSelectedClient(clients[0]);\n setDefaultUserGroups(clients[0]);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [clients, isLoading]);\n\n useEffect(() => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n if (selectedClient.userGroupsUrl) {\n fetchUserGroups(selectedClient);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify(selectedClient.userGroupsUrl)]);\n\n const onApply = () => {\n if (isInternalUser && selectedClient.clientId) {\n const userGroupIds = selectedUserGroups.map(group => group.userGroupId);\n setImpersonateStorage(selectedClient.clientId, userGroupIds);\n deleteStaleLocalStorage();\n setModalOpen(prev => !prev);\n window.location.reload();\n }\n };\n\n const onClientSelect = (client: Client) => {\n setSelectedClient(client);\n clearAllToggles();\n };\n\n const onUserGroupSelect = (value: inputs.CheckboxState, userGroup: UserGroup) => {\n if (value === CheckboxState.CHECKED) {\n setSelectedUserGroups(prev => [...prev, userGroup]);\n } else {\n setSelectedUserGroups(selectedUserGroups.filter(group => group.userGroupId !== userGroup.userGroupId));\n }\n };\n\n const toggleAll = () => {\n if (selectedUserGroups.length > 0) {\n setSelectedUserGroups([]);\n } else if (selectedUserGroups.length === 0) {\n setSelectedUserGroups(userGroups);\n }\n };\n\n const clearAllToggles = () => {\n setSelectedUserGroups([]);\n };\n\n if (!isInternalUser) {\n return null;\n }\n\n const { Icon } = elements;\n\n return (\n <div className=\"mx-8\">\n <span className=\"relative flex items-center\">\n {isLoading ? (\n <DotsLoader />\n ) : (\n <button\n onClick={() => setModalOpen(!isModalOpen)}\n className=\"flex items-center text-sm font-bold text-interactive hover:bg-medium rounded p-0.5 \"\n >\n <Icon color=\"secondaryInteractive\">\n <ImpersonateIcon />\n </Icon>\n </button>\n )}\n </span>\n <Modal size=\"lg\" isOpen={isModalOpen}>\n <Modal.Header>Impersonate Client</Modal.Header>\n <Modal.Body>\n <div className=\"flex items-stretch h-96\">\n <ClientList clients={clients} selectedClient={selectedClient} onClientSelect={onClientSelect} />\n <UserGroupsList\n userGroups={userGroups}\n selectedUserGroups={selectedUserGroups}\n onUserGroupSelect={onUserGroupSelect}\n toggleAll={toggleAll}\n />\n </div>\n </Modal.Body>\n <Modal.Footer align=\"right\">\n <Button mode=\"secondary\" onClick={() => setModalOpen(prev => !prev)}>\n Cancel\n </Button>\n <Button mode=\"primary\" disabled={!selectedUserGroups.length} onClick={onApply}>\n Apply\n </Button>\n </Modal.Footer>\n </Modal>\n </div>\n );\n};\n","import { useLocation } from 'react-router-dom';\n\nconst M2_PREFIXES = /\\/mi|\\/ml|\\/mo|\\/dp/;\n\nexport const useIsMarket2Page = (): boolean => {\n const location = useLocation();\n return Boolean(location.pathname.match(M2_PREFIXES));\n};\n","export enum ActionType {\n SetIsPanelOpen,\n SetIsDeleteModalOpen,\n SetIsErrorOnDelete,\n SetNotifications,\n UpdateNotificationRead,\n SetUnreadNotificationsCount,\n SetFocusedNotification,\n SetNotificationCTAError,\n}\n\nexport interface SetIsPanelOpen {\n type: ActionType.SetIsPanelOpen;\n payload: boolean;\n}\nexport const setIsPanelOpen = (isPanelOpen: boolean): Action => ({\n type: ActionType.SetIsPanelOpen,\n payload: isPanelOpen,\n});\n\nexport interface SetIsDeleteModalOpen {\n type: ActionType.SetIsDeleteModalOpen;\n payload: boolean;\n}\nexport const setIsDeleteModalOpen = (isShowModal: boolean): Action => ({\n type: ActionType.SetIsDeleteModalOpen,\n payload: isShowModal,\n});\n\nexport interface SetIsErrorOnDelete {\n type: ActionType.SetIsErrorOnDelete;\n payload: boolean;\n}\nexport const setIsErrorOnDelete = (isErrorOnDelete: boolean): Action => ({\n type: ActionType.SetIsErrorOnDelete,\n payload: isErrorOnDelete,\n});\n\nexport interface SetNotifications {\n type: ActionType.SetNotifications;\n payload: any[];\n}\n\nexport const setNotifications = (notifications: any[]): Action => ({\n type: ActionType.SetNotifications,\n payload: notifications,\n});\n\nexport interface UpdateNotificationRead {\n type: ActionType.UpdateNotificationRead;\n payload: number;\n}\n\nexport const updateNotificationRead = (id: number): Action => ({\n type: ActionType.UpdateNotificationRead,\n payload: id,\n});\n\nexport interface SetUnreadNotificationsCount {\n type: ActionType.SetUnreadNotificationsCount;\n payload: number;\n}\n\nexport const setUnreadNotificationsCount = (count: number): Action => ({\n type: ActionType.SetUnreadNotificationsCount,\n payload: count,\n});\n\nexport interface SetFocusedNotification {\n type: ActionType.SetFocusedNotification;\n payload: number;\n}\n\nexport const setFocusedNotification = (value: number): Action => ({\n type: ActionType.SetFocusedNotification,\n payload: value,\n});\n\nexport interface SetNotificationCTAError {\n type: ActionType.SetNotificationCTAError;\n payload: string;\n}\n\nexport const setNotificationCTAError = (value: string): Action => ({\n type: ActionType.SetNotificationCTAError,\n payload: value,\n});\n\nexport type Action =\n | SetIsDeleteModalOpen\n | SetIsPanelOpen\n | SetIsErrorOnDelete\n | SetNotifications\n | UpdateNotificationRead\n | SetUnreadNotificationsCount\n | SetFocusedNotification\n | SetNotificationCTAError;\n","export type NotificationPanelState = {\n isPanelOpen: boolean;\n isErrorOnDelete: boolean;\n isDeleteModalOpen: boolean;\n notifications: any[];\n unreadNotificationsCount: number;\n focusedNotification: any;\n notificationCTAError: string;\n};\nexport const initialState: NotificationPanelState = {\n isPanelOpen: false,\n isErrorOnDelete: false,\n isDeleteModalOpen: false,\n notifications: [],\n unreadNotificationsCount: 0,\n focusedNotification: 0,\n notificationCTAError: '',\n};\n","import React from 'react';\n\nimport { Notification } from '../../types';\n\nimport { Action } from './action';\nimport { NotificationPanelState, initialState } from './state';\n\nexport const NotificationPanelContext = React.createContext<{\n state: NotificationPanelState;\n dispatch: React.Dispatch<Action>;\n}>({\n state: initialState,\n dispatch: () => undefined,\n});\n\nexport interface NotificationPanelProviderProps {\n isDeleteModalOpen: boolean;\n isErrorOnDelete: boolean;\n isPanelOpen: boolean;\n notifications: Notification[];\n unreadNotificationsCount: number;\n unreadClickedNotificationsCount: boolean;\n focusedNotification: boolean;\n notificationCTAError: string;\n}\n","import { useAuthentication } from '@ecosystem/newron-client-lib';\nimport axios from 'axios';\nimport React, { useCallback } from 'react';\n\nimport { getConfig } from '../../../../../config';\nimport { logger } from '../../../../../logging/logger';\nimport { setUnreadNotificationsCount } from '../NotificationsPanel/state/action';\n\nconst NOTIFICATION_API = getConfig().API_NOTIFICATION_PATH;\n\nexport const useUnreadNotificationsCount = (dispatch: React.Dispatch<any>): { fetchCount: () => Promise<void> } => {\n const { getAccessToken } = useAuthentication();\n\n const fetchCount = useCallback(async () => {\n const userAccessToken = await getAccessToken();\n try {\n const response = await axios.get(`${NOTIFICATION_API}/v1/notifications/unread`, {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${userAccessToken}`,\n },\n });\n dispatch(setUnreadNotificationsCount(+response.data.count));\n } catch (err) {\n logger.error(err, { message: `Get unread notifications count error: ${err}` });\n }\n }, [dispatch, getAccessToken]);\n return {\n fetchCount,\n };\n};\n","import { useAnalytics, useAuthentication } from '@ecosystem/newron-client-lib';\nimport axios from 'axios';\nimport React, { useCallback, useContext } from 'react';\n\nimport { logger } from '../../../../../logging/logger';\nimport { setIsErrorOnDelete, setNotifications, updateNotificationRead } from '../NotificationsPanel/state/action';\nimport { NotificationPanelContext } from '../NotificationsPanel/state/context';\n\nimport { useUnreadNotificationsCount } from './useUnreadNotificationsCount';\n\nconst NOTIFICATION_API = '/api/notification-api';\nexport const useUserNotifications = (): {\n error: Error;\n fetchNotifications: () => void;\n updateNotificationAsRead: (id: number) => Promise<void>;\n deleteNotificationById: (id: number) => Promise<void>;\n} => {\n const [error, setError] = React.useState(null);\n const { getAccessToken } = useAuthentication();\n const { dispatch } = useContext(NotificationPanelContext);\n const { fetchCount } = useUnreadNotificationsCount(dispatch);\n const { track } = useAnalytics();\n\n const fetchNotifications = useCallback(async () => {\n try {\n const userToken = await getAccessToken();\n const response = await axios.get(`${NOTIFICATION_API}/v1/notifications?count=100`, {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${userToken}`,\n },\n });\n setError(null);\n\n dispatch(setNotifications(response.data));\n } catch (err) {\n setError(err);\n logger.error(err, { message: `Get user Notifications error: ${err}` });\n }\n }, [dispatch, getAccessToken]);\n\n const updateNotificationAsRead = async (id: number) => {\n try {\n const userToken = await getAccessToken();\n\n await axios.patch(`${NOTIFICATION_API}/v1/notifications/read/${id}`, null, {\n headers: {\n Authorization: `Bearer ${userToken}`,\n },\n });\n\n track('Page Element Clicked', {\n elementCategory: 'notification',\n elementName: 'notificationRead',\n });\n\n dispatch(updateNotificationRead(id));\n\n await fetchCount();\n setError(null);\n } catch (err) {\n setError(err);\n logger.error(err, { message: `Update notification status error ${err}` });\n }\n };\n\n const deleteNotificationById = async (id: number) => {\n try {\n const userToken = await getAccessToken();\n await axios.delete(`${NOTIFICATION_API}/v1/notifications/${id}`, {\n headers: {\n Authorization: `Bearer ${userToken}`,\n },\n });\n await Promise.allSettled([fetchNotifications(), fetchCount()]);\n setError(null);\n } catch (err) {\n setError(err);\n logger.error(err, { message: `Delete notification by id error ${err}` });\n dispatch(setIsErrorOnDelete(true));\n }\n };\n\n return { error, fetchNotifications, updateNotificationAsRead, deleteNotificationById };\n};\n","import { useAnalytics } from '@ecosystem/newron-client-lib';\nimport React, { useContext } from 'react';\n\nimport { setFocusedNotification, setIsPanelOpen } from '../Notifications/NotificationsPanel/state/action';\nimport { NotificationPanelContext } from '../Notifications/NotificationsPanel/state/context';\nimport { useUserNotifications } from '../Notifications/hooks/useUserNotifications';\n\nimport { Alert } from './types';\n\nexport type AlertItemProps = {\n item: Alert;\n};\n\nexport const AlertItem = ({ item }: AlertItemProps): JSX.Element => {\n const { dispatch } = useContext(NotificationPanelContext);\n const { updateNotificationAsRead } = useUserNotifications();\n const { track } = useAnalytics();\n\n const handleAlertClick = async (id: number) => {\n setTimeout(() => {\n dispatch(setIsPanelOpen(true));\n dispatch(setFocusedNotification(id));\n }, 200);\n\n updateNotificationAsRead(id);\n\n track('Page Element Clicked', {\n elementCategory: 'CTA',\n elementName: 'View Notification Alert',\n });\n };\n\n return (\n <div\n className=\"flex-1 rounded bg-white justify-center\"\n data-test-id=\"alert-item\"\n onClick={() => handleAlertClick(item.id)}\n role=\"presentation\"\n >\n <div className=\"items-center justify-between text-md\">\n <span data-test-id={`alert-${item.type}`}>{item.message.pushMessage}</span>\n </div>\n </div>\n );\n};\n","import { useAuthentication } from '@ecosystem/newron-client-lib';\nimport { overlays } from '@ecosystem/newron-design-system/';\nimport React, { useContext, useEffect, useState } from 'react';\nimport { connect } from 'socket.io-client';\n\nimport { getConfig } from '../../../../../config';\nimport { logger } from '../../../../../logging/logger';\nimport { AlertItem } from '../../Alerts/AlertItem';\nimport { NotificationPanelContext } from '../NotificationsPanel/state/context';\n\nimport { useUnreadNotificationsCount } from './useUnreadNotificationsCount';\nimport { useUserNotifications } from './useUserNotifications';\n\nconst NOTIFICATION_API = getConfig().API_NOTIFICATION_PATH;\n\nexport const useNotificationUpdates = (): void => {\n const { dispatch, state } = useContext(NotificationPanelContext);\n const { useAlerts } = overlays;\n const { addAlert } = useAlerts();\n\n const [newAlert, setNewAlert] = useState(undefined);\n const [isMounted, setIsMounted] = useState(false);\n\n const { fetchCount } = useUnreadNotificationsCount(dispatch);\n const { fetchNotifications } = useUserNotifications();\n\n const { getAccessToken } = useAuthentication();\n\n useEffect(() => {\n if (newAlert && !state.isPanelOpen) {\n addAlert(<AlertItem item={newAlert} />);\n }\n setNewAlert(undefined);\n }, [newAlert, addAlert, state.isPanelOpen]);\n\n useEffect(() => {\n setIsMounted(true);\n const connectToSocket = async () => {\n const jwtToken = await getAccessToken();\n const socket = connect('/', {\n timeout: 60000,\n path: `${NOTIFICATION_API}/socket.io`,\n auth: {\n token: `Bearer ${jwtToken}`,\n },\n });\n\n socket.on('connect', () => {\n logger.info(`connected with sid: ${socket.id}`);\n });\n\n let oldData: unknown;\n socket.on('data', function (data) {\n if (oldData !== JSON.stringify(data)) {\n fetchCount();\n fetchNotifications();\n if (isMounted) {\n const alert = {\n message: { pushMessage: data.pushMessage },\n type: data.notificationType,\n id: data.notificationId,\n };\n\n setNewAlert(alert);\n }\n }\n\n oldData = JSON.stringify(data);\n });\n socket.on('reconnect_attempt', () => {\n logger.info('Reconnect_Attempt');\n });\n socket.on('connect_error', err => {\n logger.error(err, { message: 'Failed to connect (connect_error)' });\n });\n socket.on('error', err => {\n logger.error(err, { message: 'Failed to connect (error)' });\n });\n\n return () => {\n socket.off('data');\n socket.off('connect');\n socket.off('connect_error');\n socket.off('error');\n };\n };\n connectToSocket();\n return () => {\n setIsMounted(false);\n };\n }, [isMounted, fetchCount, fetchNotifications, getAccessToken]);\n\n useEffect(() => {\n fetchCount();\n fetchNotifications();\n }, [fetchCount, fetchNotifications]);\n};\n","import { useAuthentication } from '@ecosystem/newron-client-lib';\nimport axios from 'axios';\nimport React, { useContext } from 'react';\n\nimport { getConfig } from '../../../../../config';\nimport { logger } from '../../../../../logging/logger';\nimport { setIsErrorOnDelete } from '../NotificationsPanel/state/action';\nimport { NotificationPanelContext } from '../NotificationsPanel/state/context';\n\nconst notificationsToDelete = 100;\nconst NOTIFICATION_API = getConfig().API_NOTIFICATION_PATH;\n\nexport const useDeleteUserNotifications = (): {\n deleteNotifications: () => Promise<void>;\n isLoading: boolean;\n} => {\n const { getAccessToken } = useAuthentication();\n const [isLoading, setIsLoading] = React.useState(false);\n const { dispatch } = useContext(NotificationPanelContext);\n\n const deleteNotifications = async () => {\n try {\n setIsLoading(true);\n const userToken = await getAccessToken();\n\n await axios.delete(`${NOTIFICATION_API}/v1/notifications/delete`, {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${userToken}`,\n },\n params: {\n count: notificationsToDelete,\n },\n });\n } catch (err) {\n dispatch(setIsErrorOnDelete(true));\n logger.error(err, { message: `Delete Notifications error: ${err}` });\n } finally {\n setIsLoading(false);\n }\n };\n\n return { deleteNotifications, isLoading };\n};\n","import { actions, elements, overlays } from '@ecosystem/newron-design-system';\nimport React, { useContext, useEffect } from 'react';\n\nimport { useDeleteUserNotifications } from '../hooks/useDeleteUserNotifications';\n\nimport { setIsDeleteModalOpen, setIsPanelOpen } from './state/action';\nimport { NotificationPanelContext } from './state/context';\n\nexport const NotificationPanelClearAllModal = (): JSX.Element => {\n const { Modal } = overlays;\n const { Button } = actions;\n const { Icon } = elements;\n const { state, dispatch } = useContext(NotificationPanelContext);\n\n const { deleteNotifications, isLoading } = useDeleteUserNotifications();\n\n useEffect(() => {\n if (state.isErrorOnDelete) {\n dispatch(setIsPanelOpen(false));\n }\n }, [state.isErrorOnDelete, dispatch]);\n\n return (\n <>\n <Modal isOpen={state.isDeleteModalOpen}>\n <div className=\"px-6 py-4 border-b border-default rounded-t w-full flex justify-between\">\n <span className=\"text-3xl\"> Clear all notifications</span>\n <button onClick={() => dispatch(setIsDeleteModalOpen(false))} data-test-id=\"close-info-box\">\n <Icon color=\"brand\">\n <Icon.icons.Close />\n </Icon>\n </button>\n </div>\n <Modal.Body>\n <p>You are about to delete all notifications. Are you sure you want to do this?</p>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={() => dispatch(setIsDeleteModalOpen(false))} mode=\"secondary\" testId={'cancel-button'}>\n Cancel\n </Button>\n <Button\n onClick={async () => {\n await deleteNotifications();\n dispatch(setIsDeleteModalOpen(false));\n }}\n mode=\"primary\"\n testId={'clear-button'}\n >\n {isLoading && <Button.Loader />}\n Clear\n </Button>\n </Modal.Footer>\n </Modal>\n </>\n );\n};\n","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./NotificationsPanel.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./NotificationsPanel.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { elements } from '@ecosystem/newron-design-system';\nimport React from 'react';\n\nimport { CollectionDownload } from '../../../types';\n\nexport function formatTimestamp(timestamp: string): string {\n const months = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ];\n\n const date = new Date(timestamp);\n const day = date.getDate();\n const month = months[date.getMonth()];\n const year = date.getFullYear();\n\n let hours = date.getHours();\n const minutes = date.getMinutes();\n const period = hours >= 12 ? 'P.M.' : 'A.M.';\n\n if (hours > 12) {\n hours -= 12;\n } else if (hours === 0) {\n hours = 12;\n }\n\n return `${day} ${month} ${year} ${hours}:${minutes.toString().padStart(2, '0')} ${period}`;\n}\n\nexport type CollectionDownloadNotificationProps = {\n message: {\n data: CollectionDownload;\n };\n};\n\nexport const CollectionDownloadNotification = ({ message }: CollectionDownloadNotificationProps): JSX.Element => {\n const { Icon } = elements;\n\n const isSuccess = message.data.fileStatus === 'success';\n return (\n <div className=\"collection-download-notification text-default mb-2 text-md\">\n <p className=\"mt-1 flex\" data-test-id=\"collection-download-notification-product\">\n <span className=\"w-24\">Collection</span>\n <span className=\"flex-1 nowrap overflow-ellipses\">{message.data.collectionName}</span>\n </p>\n <p\n className=\"mt-1 flex\"\n data-test-id={`collection-download-notification-${isSuccess ? 'expiration' : 'timestamp'}`}\n >\n <span className=\"w-24\">{isSuccess ? 'Expires' : 'Requested'}</span>\n <span className=\"flex-1 nowrap overflow-ellipses\">\n {formatTimestamp(isSuccess ? message.data.expiresAt : message.data.timeStamp)}\n </span>\n </p>\n {!isSuccess && (\n <p className=\"mt-1 flex\" data-test-id=\"collection-download-failure-notification\">\n <span className=\"w-24 text-ui-red\">\n <span className=\"flex gap-x-1 items-center\">\n <Icon color=\"error\" size=\"sm\">\n <Icon.icons.Error />\n </Icon>\n Error\n </span>\n </span>\n <span className=\"flex-1 nowrap overflow-ellipses text-ui-red\">\n We couldn't create your export.\n <br />\n Please try again.\n </span>\n </p>\n )}\n </div>\n );\n};\n","import React from 'react';\n\nimport { CollectionOwnershipTransfer } from '../../../types';\n\nexport type CollectionOwnershipTransferProps = {\n message: {\n data: CollectionOwnershipTransfer;\n };\n};\n\nexport const CollectionOwnershipTransferNotification = ({ message }: CollectionOwnershipTransferProps): JSX.Element => {\n return (\n <div className=\"text-default mb-2 text-md\" data-test-id=\"collection-ownership-transfer-notification\">\n <p className=\"mt-1 flex\">\n <span className=\"w-32\">Collection</span>\n <span\n title={message.data.collectionName}\n className=\"flex-1 nowrap overflow-ellipses\"\n data-test-id=\"transferred-collection-name\"\n >\n {message.data.collectionName}\n </span>\n </p>\n <p className=\"mt-1 flex\">\n <span className=\"w-32\">Transferred by</span>\n <span title={message.data.senderName} className=\"flex-1 nowrap overflow-ellipses\" data-test-id=\"sender-name\">\n {message.data.senderName}\n </span>\n </p>\n </div>\n );\n};\n","import React from 'react';\n\nexport type DataUpdatesNotificationProps = {\n product: string;\n children: JSX.Element;\n};\n\nexport const DataUpdatesNotification = ({ product, children }: DataUpdatesNotificationProps): JSX.Element => {\n return (\n <div className=\"data-updates-notification text-default mb-2 text-md\">\n <p className=\"mt-1 flex\" data-test-id=\"data-updates-notification-product\">\n <span className=\"w-24\">Product</span>\n <span className=\"flex-1 nowrap overflow-ellipses\">{product}</span>\n </p>\n {children}\n </div>\n );\n};\n","import { useAnalytics } from '@ecosystem/newron-client-lib';\nimport React from 'react';\n\nimport { MarketUpdates } from '../../../../types';\n\nexport type MarketUpdatesNotificationProps = {\n message: {\n data: MarketUpdates[];\n productName: string;\n };\n};\nexport const MarketUpdatesNotification = ({ message }: MarketUpdatesNotificationProps): JSX.Element => {\n const { track } = useAnalytics();\n\n const timeFrames = Array.from(new Set(message.data.map((item: MarketUpdates) => item.date)));\n const numberOfMarkets = message.data.length;\n\n const marketsWithTimeFrame = timeFrames\n .map((timeFrame: string) => {\n return {\n timeFrame,\n markets: message.data.filter(({ date }: { date: string }) => date === timeFrame),\n };\n })\n .flatMap(timeFrame => timeFrame.markets);\n\n const handleMarketLinkClick = (market: MarketUpdates) => (event: React.MouseEvent<HTMLAnchorElement>) => {\n track('Page Element Clicked', {\n elementCategory: 'CTA',\n elementName: 'Data Update Link (Notification)',\n link: `${marketsWithTimeFrame.indexOf(market) + 1}/${numberOfMarkets}`,\n targetUrl: (event.target as HTMLAnchorElement).href,\n product: message.productName,\n });\n };\n\n return (\n <>\n {timeFrames.map((timeFrame: string) => {\n return (\n <div key={timeFrame}>\n <p className=\"mt-1 flex\" data-test-id=\"market-notification-timeframe\">\n <span className=\"w-24\">Timeframe</span>\n <span title={timeFrame} className=\"flex-1 nowrap overflow-ellipses \">\n {timeFrame}\n </span>\n </p>\n <div className=\"mt-1 flex\" data-test-id=\"market-notification-markets\">\n <span className=\"w-24\">Markets</span>\n <div className=\"flex-column no-underline flex-1 nowrap overflow-ellipses\">\n {message.data\n .filter((market: MarketUpdates) => market.date === timeFrame)\n .map((market: MarketUpdates) => {\n const { itemGroup, itemGroupCode, countryCode, country, date } = market;\n\n return (\n <a\n title={`${itemGroup} in ${country}`}\n className=\"no-underline hover:underline truncate pb-1\"\n href={`/newron/overview?country=${countryCode}&itemGroup=${itemGroupCode}`}\n key={`${itemGroup}/${country}/${date}`}\n onClick={handleMarketLinkClick(market)}\n >\n {`${itemGroup} in ${country}`}\n </a>\n );\n })}\n </div>\n </div>\n </div>\n );\n })}\n </>\n );\n};\n","import { useAnalytics } from '@ecosystem/newron-client-lib';\nimport React from 'react';\n\nimport { RetailUpdates } from '../../../../types';\n\nexport type RetailUpdatesNotificationProps = {\n message: {\n data: RetailUpdates[];\n productName: string;\n };\n};\n\nconst getLevel = (productType: string): string => {\n switch (productType) {\n case 'Retail Insights Hitlists':\n return 'Product data';\n case 'Retail Insights':\n return 'Market data';\n default:\n return '';\n }\n};\n\nexport const RetailUpdatesNotification = ({ message }: RetailUpdatesNotificationProps): JSX.Element => {\n const { track } = useAnalytics();\n\n const numberOfMarkets = message.data.length;\n const level = getLevel(message.data[0]?.productType);\n\n const timeFrames = Array.from(new Set(message.data.map((item: RetailUpdates) => item.date)));\n const marketsWithTimeFrame = timeFrames\n .map((timeFrame: string) => {\n return {\n timeFrame,\n markets: message.data.filter(({ date }: { date: string }) => date === timeFrame),\n };\n })\n .flatMap(timeFrame => timeFrame.markets);\n\n const handleRetailLinkClick = (market: RetailUpdates) => (event: React.MouseEvent<HTMLAnchorElement>) => {\n track('Page Element Clicked', {\n elementCategory: 'CTA',\n elementName: 'Data Update Link (Notification)',\n link: `${marketsWithTimeFrame.indexOf(market) + 1}/${numberOfMarkets}`,\n targetUrl: (event.target as HTMLAnchorElement).href,\n product: message.productName,\n });\n };\n\n return (\n <>\n <p className=\"mt-1 flex\" data-test-id=\"market-notification-timeframe\">\n <span className=\"w-24\">Level</span>\n <span title={level} className=\"flex-1 nowrap overflow-ellipses \">\n {level}\n </span>\n </p>\n {timeFrames.map((timeFrame: string) => {\n return (\n <div key={timeFrame}>\n <p className=\"mt-1 flex\" data-test-id=\"market-notification-timeframe\">\n <span className=\"w-24\">Timeframe</span>\n <span title={timeFrame} className=\"flex-1 nowrap overflow-ellipses \">\n {timeFrame}\n </span>\n </p>\n <div className=\"mt-1 flex\" data-test-id=\"market-notification-markets\">\n <span className=\"w-24\">Markets</span>\n <div className=\"flex-column no-underline flex-1 nowrap overflow-ellipses\">\n {message.data\n .filter((market: RetailUpdates) => market.date === timeFrame)\n .map((market: RetailUpdates) => {\n const { retailer, country, date, productGroup } = market;\n const retailPath = market.productType === 'Retail Insights Hitlists' ? 'products/' : '';\n\n const retailMarket = retailer + (productGroup ? ` ${productGroup}` : '') + ' in ' + country;\n return (\n <a\n title={retailMarket}\n className=\"no-underline hover:underline truncate pb-1\"\n href={`/newron-retail/${retailPath}overview`}\n key={`${retailer}/${country}/${date}`}\n onClick={handleRetailLinkClick(market)}\n >\n {retailMarket}\n </a>\n );\n })}\n </div>\n </div>\n </div>\n );\n })}\n </>\n );\n};\n","import React from 'react';\n\nimport { SharedCollection } from '../../../types';\n\nexport type SharedCollectionNotificationProps = {\n message: {\n data: SharedCollection;\n };\n};\n\nexport const SharedCollectionNotification = ({ message }: SharedCollectionNotificationProps): JSX.Element => {\n return (\n <div className=\"text-default mb-2 text-md\" data-test-id=\"shared-collection-notification\">\n <p className=\"mt-1 flex\">\n <span className=\"w-24\">Collection</span>\n <span\n title={message.data.collectionName}\n className=\"flex-1 nowrap overflow-ellipses\"\n data-test-id=\"shared-collection-name\"\n >\n {message.data.collectionName}\n </span>\n </p>\n <p className=\"mt-1 flex\">\n <span className=\"w-24\">Shared by</span>\n <span title={message.data.senderName} className=\"flex-1 nowrap overflow-ellipses\" data-test-id=\"sender-name\">\n {message.data.senderName}\n </span>\n </p>\n </div>\n );\n};\n","import React from 'react';\n\nimport { SharedEntity } from '../../../types';\n\nexport type SharedEntityNotificationProps = {\n message: {\n data: SharedEntity;\n };\n};\n\nexport const SharedEntityNotification = ({ message }: SharedEntityNotificationProps): JSX.Element => {\n return (\n <div className=\"text-default mb-2 text-md\" data-test-id=\"shared-entity-notification\">\n <p className=\"mt-1\">\n <b>{message.data.entityName}</b> is now available to you\n </p>\n </div>\n );\n};\n","import React from 'react';\n\nimport { SharedFilter } from '../../../types';\n\nexport type SharedFilterNotificationProps = {\n message: {\n data: SharedFilter;\n };\n};\n\nexport const SharedFilterNotification = ({ message }: SharedFilterNotificationProps): JSX.Element => {\n const hasMarket = message.data?.itemGroup && message.data?.country;\n return (\n <div className=\"shared-filter-notification text-default mb-2 text-md\">\n <p className=\"mt-1 flex\" data-test-id=\"filter-notification-filter-name\">\n <span className=\"w-24\">Name</span>\n <span title={message.data.name} className=\"flex-1 nowrap overflow-ellipses\">\n {message.data.name}\n </span>\n </p>\n <p className=\"mt-1 flex\" data-test-id=\"filter-notification-sender-name\">\n <span className=\"w-24\">From</span>\n <span title={message.data.senderName} className=\"flex-1 nowrap overflow-ellipses \">\n {message.data.senderName}\n </span>\n </p>\n {hasMarket && (\n <p className=\"mt-1 flex\" data-test-id=\"filter-notification-market\">\n <span className=\"w-24\">Context</span>\n <span\n title={`${message.data.itemGroup} in ${message.data?.country}`}\n className=\"nowrap overflow-ellipses flex-1 \"\n >\n {`${message.data.itemGroup} in ${message.data?.country}`}\n </span>\n </p>\n )}\n </div>\n );\n};\n","export enum NotificationType {\n SharedFilter = 'sharedFilter',\n MarketUpdates = 'marketUpdates',\n RetailUpdates = 'retailUpdates',\n CollectionsDownload = 'collectionsDownload',\n CollectionsDownloadSuccess = 'collectionsDownloadSuccess',\n CollectionsDownloadFailure = 'collectionsDownloadFailure',\n SharedCollection = 'sharedCollection',\n CollectionOwnershipTransfer = 'collectionOwnershipTransfer',\n SharedEntity = 'sharedEntity',\n}\n\nexport type Notification<T = any> = {\n message: Record<'data', T>;\n is_read: boolean;\n type: NotificationType;\n created_at: string;\n id: number;\n duration: string;\n};\n\nexport type Market = {\n country: string;\n countryCode: string;\n itemGroup: string;\n itemGroupCode: string;\n};\n\nexport interface MarketUpdates extends Market {\n date: string;\n}\n\nexport enum RetailProductType {\n RetailInsightsHitlists = 'Retail Insights Hitlists',\n RetailInsights = 'Retail Insights',\n}\n\nexport interface RetailUpdates {\n countryCode: string;\n retailerCode: string;\n country: string;\n retailer: string;\n productType: RetailProductType;\n date: string;\n productGroup?: string;\n}\n\nexport type SharedFilter = Partial<Market> & {\n name: string;\n senderName: string;\n filterId: string;\n namespace: string;\n product: string;\n};\n\nexport type CollectionDownload = {\n userId: string;\n collectionId: string;\n collectionName: string;\n collectionPath: string;\n fileStatus: string;\n timeStamp: string;\n expiresAt: string;\n};\n\nexport enum AccessLevel {\n Owner = 'owner',\n Viewer = 'viewer',\n}\n\nexport type SharedCollection = {\n collectionName: string;\n senderName: string;\n collectionId: string;\n collectionPath: string;\n accessLevel: AccessLevel;\n};\n\nexport type SharedEntity = {\n entityType: string;\n entityTypeName: string;\n entityName: string;\n senderName: string;\n entityId: string;\n entityPath: string;\n accessLevel: AccessLevel;\n};\n\nexport type CollectionOwnershipTransfer = {\n collectionName: string;\n senderName: string;\n collectionId: string;\n collectionPath: string;\n};\n","import {\n ViewNotificationDataType,\n ViewNotificationsRegister,\n authentication,\n downloadFile,\n getAccessTags,\n useAnalytics,\n} from '@ecosystem/newron-client-lib';\nimport axios from 'axios';\nimport React from 'react';\nimport { useNavigate } from 'react-router-dom';\n\nimport { logger } from '../../../../../logging/logger';\nimport { useIsMarket2Page } from '../../Impersonate/useIsMarket2Page';\nimport { CollectionDownloadNotification } from '../NotificationItem/content/CollectionDownload/CollectionDownloadNotification';\nimport { CollectionOwnershipTransferNotification } from '../NotificationItem/content/CollectionOwnershipTransfer/CollectionOwnershipTransferNotification';\nimport { DataUpdatesNotification } from '../NotificationItem/content/DataUpdates/DataUpdatesNotification';\nimport { MarketUpdatesNotification } from '../NotificationItem/content/DataUpdates/market-updates/MarketUpdatesNotification';\nimport { RetailUpdatesNotification } from '../NotificationItem/content/DataUpdates/retail-updates/RetailUpdatesNotification';\nimport { SharedCollectionNotification } from '../NotificationItem/content/SharedCollection/SharedCollectionNotification';\nimport { SharedEntityNotification } from '../NotificationItem/content/SharedEntity/SharedEntityNotification';\nimport { SharedFilterNotification } from '../NotificationItem/content/SharedFilter/SharedFilterNotification';\nimport { Action, setIsPanelOpen, setNotificationCTAError } from '../NotificationsPanel/state/action';\nimport { CollectionOwnershipTransfer, Notification, NotificationType, SharedCollection, SharedEntity } from '../types';\n\ninterface NotificationTypeConfig {\n getTitle: (item?: Notification) => string;\n cta?: {\n text: string;\n handleCTAClick: (item: Notification, dispatch: React.Dispatch<Action>) => void;\n };\n ContentComponent: React.FunctionComponent<any>;\n}\n\nexport const useNotificationTypes = (type: NotificationType): NotificationTypeConfig => {\n const { track } = useAnalytics();\n const navigate = useNavigate();\n const isMarket2Page = useIsMarket2Page();\n\n const NotificationTypes: Record<NotificationType, NotificationTypeConfig> = {\n [NotificationType.SharedFilter]: {\n getTitle: () => 'Shared filter',\n cta: {\n text: 'View',\n handleCTAClick: (item: Notification, dispatch: React.Dispatch<Action>) => {\n const { country, countryCode, itemGroup, itemGroupCode, filterId, product, namespace } = item.message.data;\n const domainName = getDomainName(product, namespace);\n const viewFilterFunction = ViewNotificationsRegister.getInstance().getViewFilterFunction(domainName);\n const viewFilterData = { country, countryCode, itemGroup, itemGroupCode, filterId, namespace };\n track('Page Element Clicked', {\n elementCategory: 'CTA',\n elementName: 'View Filter (Notification)',\n targetUrl: getTargetUrl(product, viewFilterData, isMarket2Page),\n });\n viewFilterFunction?.(viewFilterData);\n dispatch(setIsPanelOpen(false));\n },\n },\n ContentComponent: SharedFilterNotification,\n },\n [NotificationType.MarketUpdates]: {\n getTitle: () => 'Data updates',\n ContentComponent: ({ message }) => (\n <DataUpdatesNotification product={'gfknewron Market'}>\n <MarketUpdatesNotification message={message} />\n </DataUpdatesNotification>\n ),\n },\n [NotificationType.RetailUpdates]: {\n getTitle: () => 'Data updates',\n ContentComponent: ({ message }) => (\n <DataUpdatesNotification product={'gfknewron Retail'}>\n <RetailUpdatesNotification message={message} />\n </DataUpdatesNotification>\n ),\n },\n [NotificationType.CollectionsDownloadSuccess]: {\n getTitle: () => 'Collections export',\n cta: {\n text: 'Download',\n async handleCTAClick(item: Notification, dispatch: React.Dispatch<Action>) {\n const { collectionName, expiresAt, exportDownloadId } = item.message.data;\n const isExpired = new Date(expiresAt).getTime() < Date.now();\n const { access } = await getAccessTags();\n\n track('Page Element Clicked', {\n access,\n elementCategory: 'CTA',\n elementType: 'Collections',\n elementName: 'Collection Download from Notification panel',\n collectionName,\n });\n\n if (isExpired) {\n dispatch(setNotificationCTAError(`The export file has expired for collection ${collectionName}.`));\n return;\n }\n\n const COLLECTIONS_API = '/api/collections';\n const token = await authentication.getAccessToken();\n const encodedExportDownloadId = encodeURIComponent(exportDownloadId);\n try {\n const response = await axios.get(`${COLLECTIONS_API}/v1/download/${encodedExportDownloadId}`, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n responseType: 'arraybuffer',\n });\n const file = {\n content: response.data,\n filename: `${collectionName}.pptx`,\n };\n dispatch(setIsPanelOpen(false));\n downloadFile(file);\n } catch (err) {\n logger.error(err, { message: `Download collection error: ${err}` });\n dispatch(\n setNotificationCTAError(\n `There was an error downloading the export of ${collectionName}. Please try again.`\n )\n );\n }\n },\n },\n ContentComponent: CollectionDownloadNotification,\n },\n [NotificationType.CollectionsDownloadFailure]: {\n getTitle: () => 'Collections export',\n ContentComponent: CollectionDownloadNotification,\n cta: {\n text: 'Retry export',\n async handleCTAClick(item: Notification, dispatch: React.Dispatch<Action>) {\n const { collectionPath, collectionName } = item.message.data;\n const { access } = await getAccessTags();\n\n track('Page Element Clicked', {\n access,\n elementCategory: 'CTA',\n elementType: 'Collections',\n elementName: 'Collection Retry Export from Notification panel',\n collectionName,\n });\n\n dispatch(setIsPanelOpen(false));\n navigate(collectionPath);\n },\n },\n },\n [NotificationType.SharedCollection]: {\n getTitle: () => 'A collection was shared with you',\n cta: {\n text: 'View',\n async handleCTAClick(item: Notification<SharedCollection>, dispatch: React.Dispatch<Action>) {\n const { collectionPath, collectionName, collectionId, accessLevel } = item.message.data;\n const { access } = await getAccessTags();\n\n const [firstLetter, ...rest] = accessLevel;\n\n track('Page Element Clicked', {\n access,\n elementType: 'Collections',\n elementCategory: 'CTA',\n elementName: 'Shared Collection Notification panel',\n collectionId,\n collectionName,\n rights: `${firstLetter.toUpperCase()}${rest.join('')}`,\n });\n\n dispatch(setIsPanelOpen(false));\n navigate(collectionPath);\n },\n },\n ContentComponent: SharedCollectionNotification,\n },\n [NotificationType.SharedEntity]: {\n getTitle: (item: Notification<SharedEntity>) =>\n `${item.message.data.senderName} shared ${item.message.data.entityTypeName}`,\n cta: {\n text: 'View',\n async handleCTAClick(item: Notification<SharedEntity>, dispatch: React.Dispatch<Action>) {\n const { entityPath, entityId, entityName, entityType, accessLevel } = item.message.data;\n const { access } = await getAccessTags();\n\n track('Page Element Clicked', {\n access,\n elementType: entityType,\n elementCategory: 'CTA',\n elementName: 'Shared Entity Notification Panel',\n entityId,\n entityName,\n rights: accessLevel || 'viewer',\n });\n\n dispatch(setIsPanelOpen(false));\n navigate(entityPath);\n },\n },\n ContentComponent: SharedEntityNotification,\n },\n [NotificationType.CollectionOwnershipTransfer]: {\n getTitle: () => 'Ownership of collection transferred to you',\n cta: {\n text: 'View',\n async handleCTAClick(item: Notification<CollectionOwnershipTransfer>, dispatch: React.Dispatch<Action>) {\n const { collectionPath, collectionName, collectionId } = item.message.data;\n const { access } = await getAccessTags();\n\n track('Page Element Clicked', {\n access,\n elementType: 'Collections',\n elementCategory: 'CTA',\n elementName: 'Ownership of collection transferred',\n collectionId,\n collectionName,\n });\n\n dispatch(setIsPanelOpen(false));\n navigate(collectionPath);\n },\n },\n ContentComponent: CollectionOwnershipTransferNotification,\n },\n [NotificationType.CollectionsDownload]: undefined,\n };\n\n return NotificationTypes[type];\n};\n\nconst getDomainName = (product: string, namespace: string): string => {\n // currently known products and namespaces:\n // newron: forecasting, recommendation, default, market-portfolio (=market2)\n // cie: default\n if (product === 'newron' && namespace === 'market-portfolio') {\n return 'market-portfolio';\n } else if (product === 'newron') {\n return 'market';\n } else {\n return product;\n }\n};\n\nconst getTargetUrl = (product: string, filterData: ViewNotificationDataType, isMarket2Page: boolean) => {\n const { origin, pathname } = window.location;\n\n switch (product) {\n case 'newron':\n return `${origin}${pathname}?country=${filterData.countryCode}&itemGroup=${filterData.itemGroupCode}`;\n case 'newron-core':\n return isMarket2Page ? `${origin}${pathname}` : `${origin}/mo`;\n default:\n return '';\n }\n};\n","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./NotificationItem.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./NotificationItem.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { elements } from '@ecosystem/newron-design-system';\nimport React, { MouseEvent, useContext, useEffect, useState } from 'react';\n\nimport { setFocusedNotification } from '../NotificationsPanel/state/action';\nimport { NotificationPanelContext } from '../NotificationsPanel/state/context';\nimport { useNotificationTypes } from '../hooks/useNotificationTypes';\nimport { Notification, NotificationType } from '../types';\nimport './NotificationItem.css';\n\nexport type NotificationItemProps = {\n item: Notification;\n onClick: (id: number) => void;\n onDelete: (id: number) => void;\n};\n\nconst getNotificationType = (item: Notification) => {\n if (item.type !== NotificationType.CollectionsDownload) {\n return item.type;\n }\n if (item.message.data.fileStatus === 'success') {\n return NotificationType.CollectionsDownloadSuccess;\n } else {\n return NotificationType.CollectionsDownloadFailure;\n }\n};\n\nexport const NotificationItem = ({ item, onClick, onDelete }: NotificationItemProps): JSX.Element => {\n const context = useNotificationTypes(getNotificationType(item));\n const { Icon } = elements;\n const { state, dispatch } = useContext(NotificationPanelContext);\n\n const [isFocused, setIsFocused] = useState(false);\n\n useEffect(() => {\n if (state.focusedNotification === item.id) {\n const timerFocusOn = setTimeout(() => {\n setIsFocused(true);\n }, 2500);\n const timerFocusOff = setTimeout(() => {\n dispatch(setFocusedNotification(0));\n setIsFocused(false);\n }, 2800);\n return () => {\n clearTimeout(timerFocusOn);\n clearTimeout(timerFocusOff);\n };\n }\n }, [state.focusedNotification, dispatch, item.id]);\n\n if (!context) {\n return null;\n }\n\n const handleNotificationClick = async () => {\n const isNotificationRead = state.notifications.find(({ id }: { id: number }) => id === item.id)?.is_read;\n isNotificationRead === false && onClick(item.id);\n };\n\n const handleDeleteNotificationClick = async (event: MouseEvent) => {\n event.stopPropagation();\n onDelete(item.id);\n };\n\n if (state.focusedNotification === item.id) {\n const element = document.querySelector(`[id='notification-item-${item.id}']`);\n element && element.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'end' });\n }\n return (\n <div\n role=\"button\"\n tabIndex={0}\n className={`notification-item flex flex-column text-left border-b border-light py-2 px-3 hover:bg-light \n ${state.focusedNotification === item.id && 'bg-brand-light'} ${isFocused && 'focused-notification-item'}`}\n onClick={handleNotificationClick}\n data-test-id={`notification-item-${item.type}`}\n id={`notification-item-${item.id}`}\n >\n <div className=\"notification-item-header flex items-center\">\n {!item.is_read && <div className=\"w-2 h-2 rounded-full bg-ui-red mr-2\" />}\n <h4 className=\"text-sm text-heading flex-grow\" data-test-id=\"notification-item-title\">\n {context.getTitle(item)}\n </h4>\n <button\n className=\"notification-delete text-interactive hover:bg-medium rounded hidden w-8 h-8 flex items-center justify-center\"\n onClick={handleDeleteNotificationClick}\n data-test-id=\"notification-item-delete\"\n >\n <Icon>\n <Icon.icons.Close title=\"Delete Notification\" />\n </Icon>\n </button>\n </div>\n <div className=\"notification-item-content\">\n <context.ContentComponent message={item.message} />\n </div>\n <div className=\"notification-item-footer flex\">\n <span className=\"notification-duration flex-grow text-sm text-lighter\">\n {item.duration || 'Less than a minute ago'}\n </span>\n {context.cta && (\n <button\n data-test-id=\"notification-item-cta-button\"\n className=\"text-brand no-underline hover:underline text-md font-bold\"\n onClick={() => context.cta.handleCTAClick(item, dispatch)}\n >\n {context.cta.text}\n </button>\n )}\n </div>\n </div>\n );\n};\n","import { feedbackV2 } from '@ecosystem/newron-design-system';\nimport React from 'react';\n\nimport { NotificationItem } from '../NotificationItem/NotificationItem';\nimport { useUserNotifications } from '../hooks/useUserNotifications';\nimport { Notification } from '../types';\n\nexport type NotificationsPanelContentProps = {\n hasError: boolean;\n data: Notification[];\n};\nexport const NotificationsPanelContent = ({ hasError, data }: NotificationsPanelContentProps): JSX.Element => {\n const { Alert } = feedbackV2;\n const { updateNotificationAsRead, deleteNotificationById } = useUserNotifications();\n if (hasError) {\n return <Alert title=\"Something went wrong and we can't display your notifications.\" type=\"error\" />;\n }\n\n if (data.length === 0) {\n return <div className=\"h-18 flex justify-center items-center\">There are currently no new notifications.</div>;\n }\n\n return (\n <>\n {data.map((notification: Notification) => (\n <NotificationItem\n key={notification.id}\n item={notification}\n onClick={updateNotificationAsRead}\n onDelete={deleteNotificationById}\n />\n ))}\n </>\n );\n};\n","import { useAnalytics, useOnOutsideClick } from '@ecosystem/newron-client-lib';\nimport { actions, overlays } from '@ecosystem/newron-design-system';\nimport React, { useContext, useEffect, useRef, useState } from 'react';\nimport { useNavigate } from 'react-router-dom';\n\nimport { useNotificationUpdates } from '../hooks/useNotificationUpdates';\nimport { useUserNotifications } from '../hooks/useUserNotifications';\n\nimport { NotificationPanelClearAllModal } from './NotificationPanelClearAllModal';\nimport './NotificationsPanel.css';\nimport { NotificationsPanelContent } from './NotificationsPanelContent';\nimport { setIsDeleteModalOpen, setIsErrorOnDelete, setIsPanelOpen, setNotificationCTAError } from './state/action';\nimport { NotificationPanelContext } from './state/context';\n\nexport const NotificationsPanel = (): JSX.Element => {\n const [isTooltipOpened, setIsTooltipOpened] = useState(false);\n const { error, fetchNotifications } = useUserNotifications();\n const { state, dispatch } = useContext(NotificationPanelContext);\n const { track } = useAnalytics();\n const { Button } = actions;\n const { Toast } = overlays;\n const navigate = useNavigate();\n const panelElement = useRef<HTMLDivElement>(null);\n\n useOnOutsideClick(panelElement, () => setIsTooltipOpened(false));\n\n const goToPreferences = () => {\n track('Page Element Clicked', {\n elementCategory: 'CTA',\n elementName: 'Settings (Notification Panel)',\n });\n dispatch(setIsPanelOpen(false));\n navigate('/notifications-preferences');\n };\n useNotificationUpdates();\n useEffect(() => {\n !state.isDeleteModalOpen && fetchNotifications();\n }, [state.isDeleteModalOpen, fetchNotifications]);\n\n useEffect(() => {\n if (state.isErrorOnDelete) {\n setTimeout(() => dispatch(setIsErrorOnDelete(false)), 2500);\n }\n if (state.notificationCTAError) {\n setTimeout(() => {\n dispatch(setNotificationCTAError(''));\n }, 2500);\n }\n }, [state.isErrorOnDelete, state.notificationCTAError, dispatch]);\n\n useEffect(() => {\n if (!state.isPanelOpen) {\n setIsTooltipOpened(false);\n }\n }, [state.isPanelOpen]);\n\n const clearAllDisabled = state.notifications.length === 0;\n const contentPadding = state.notifications && state.notifications.length > 0 ? 'py-0 px-0' : 'py-2 px-3';\n\n return (\n <>\n {state.isPanelOpen && (\n <div\n className=\"bg-white border border-default rounded-2 min-w-33 absolute w-96 z-120 notifications-panel\"\n data-test-id=\"notifications-panel\"\n data-user-guide-id=\"notifications-panel\"\n >\n <div className=\"notifications-panel-header flex justify-between py-1 px-3 items-center border-b border-default\">\n <h4>Notifications</h4>\n <div\n className={`notifications-actions font-bold flex justify-center items-center more-button rounded ${\n isTooltipOpened ? 'bg-brand-light' : ' '\n }`}\n data-test-id=\"notifications-more-button\"\n data-user-guide-id=\"notifications-more-button\"\n ref={panelElement}\n >\n <Button\n onClick={() => (isTooltipOpened ? setIsTooltipOpened(false) : setIsTooltipOpened(true))}\n mode=\"simple\"\n label=\"More options\"\n testId=\"more-button\"\n >\n <Button.Icon>\n <Button.Icon.icons.MoreHoriz title=\"More options\" />\n </Button.Icon>\n </Button>\n {isTooltipOpened && (\n <div\n className=\"bg-white border border-default rounded-2 min-w-33 absolute w-96 z-120 py-2 tooltip-panel\"\n data-test-id=\"tooltip-panel\"\n >\n <div className={'my-0.5 hover:bg-light'}>\n <button\n className={`p-3 text-base font-normal text-default w-full text-left ${\n state.notifications.length === 0 ? 'text-inactive' : ''\n }`}\n onClick={() => {\n dispatch(setIsDeleteModalOpen(true));\n track('Page Element Clicked', {\n elementCategory: 'CTA',\n elementName: 'Clear All (Notification Panel)',\n });\n }}\n disabled={clearAllDisabled}\n data-test-id=\"clear-all-button\"\n >\n <span className=\"ml-3\">Clear all</span>\n </button>\n </div>\n <div className={'my-0.5 hover:bg-light'}>\n <button\n className=\"p-3 text-base font-normal text-default w-full text-left\"\n onClick={goToPreferences}\n data-test-id=\"notification-preferences-button\"\n >\n <span className=\"ml-3\">Notification preferences</span>\n </button>\n </div>\n </div>\n )}\n </div>\n </div>\n <div className={`notification-panel-body ${contentPadding} text-md text-inactive text-center`}>\n <NotificationsPanelContent hasError={!!error} data={state.notifications} />\n </div>\n </div>\n )}\n {state.isDeleteModalOpen && <NotificationPanelClearAllModal />}\n {state.isErrorOnDelete && <Toast type=\"error\">Notifications were not deleted, please try again later</Toast>}\n {state.notificationCTAError && <Toast type=\"error\">{state.notificationCTAError}</Toast>}\n </>\n );\n};\n","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./NotificationIcon.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./NotificationIcon.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { useAnalytics, useOnOutsideClick } from '@ecosystem/newron-client-lib';\nimport { elements, feedback } from '@ecosystem/newron-design-system';\nimport React, { useContext, useEffect } from 'react';\n\nimport { NotificationsPanel } from '../NotificationsPanel/NotificationsPanel';\nimport { setIsPanelOpen } from '../NotificationsPanel/state/action';\nimport { NotificationPanelContext } from '../NotificationsPanel/state/context';\nimport { useUnreadNotificationsCount } from '../hooks/useUnreadNotificationsCount';\nimport './NotificationIcon.css';\n\nexport const NotificationIcon = (): JSX.Element => {\n const iconRef = React.useRef<HTMLElement>();\n const { state, dispatch } = useContext(NotificationPanelContext);\n const { fetchCount } = useUnreadNotificationsCount(dispatch);\n\n useOnOutsideClick(iconRef, () => {\n dispatch(setIsPanelOpen(false));\n });\n\n useEffect(() => {\n !state.isDeleteModalOpen && fetchCount();\n }, [state.isDeleteModalOpen, fetchCount]);\n\n const { track } = useAnalytics();\n const { Badge } = feedback;\n const { Icon } = elements;\n\n const handleIconClick = () => {\n dispatch(setIsPanelOpen(!state.isPanelOpen));\n track('Navigation Clicked', {\n linkName: 'Notification centre icon',\n });\n };\n\n return (\n <span className=\"relative flex items-center\" ref={iconRef}>\n <button\n onClick={handleIconClick}\n className=\"mr-8 hover:bg-medium rounded p-0.5\"\n data-test-id=\"notification-panel-icon\"\n data-user-guide-id=\"notification-panel-icon\"\n >\n <span className=\"absolute notification-badge p-0.5 bg-light rounded-full\" data-test-id=\"badge-wrapper\">\n {state.unreadNotificationsCount > 0 && (\n <Badge state=\"error\" variant=\"small\">\n {state.unreadNotificationsCount >= 100 ? '99+' : state.unreadNotificationsCount}\n </Badge>\n )}\n </span>\n <Icon color=\"secondaryInteractive\">\n <Icon.icons.NotificationOutline />\n </Icon>\n </button>\n <NotificationsPanel />\n </span>\n );\n};\n","import { Action, ActionType } from './action';\nimport { NotificationPanelState, initialState } from './state';\n\nexport const reducer = (state: NotificationPanelState = initialState, action: Action): NotificationPanelState => {\n switch (action.type) {\n case ActionType.SetIsPanelOpen: {\n return {\n ...state,\n isPanelOpen: action.payload,\n };\n }\n case ActionType.SetIsDeleteModalOpen: {\n return {\n ...state,\n isDeleteModalOpen: action.payload,\n };\n }\n case ActionType.SetIsErrorOnDelete: {\n return {\n ...state,\n isErrorOnDelete: action.payload,\n };\n }\n case ActionType.SetNotifications: {\n return {\n ...state,\n notifications: action.payload,\n };\n }\n case ActionType.UpdateNotificationRead: {\n return {\n ...state,\n notifications: state.notifications.map(notification =>\n notification.id === action.payload ? { ...notification, is_read: true } : notification\n ),\n };\n }\n case ActionType.SetUnreadNotificationsCount: {\n return {\n ...state,\n unreadNotificationsCount: action.payload,\n };\n }\n case ActionType.SetFocusedNotification: {\n return {\n ...state,\n focusedNotification: action.payload,\n };\n }\n case ActionType.SetNotificationCTAError: {\n return {\n ...state,\n notificationCTAError: action.payload,\n };\n }\n default: {\n return state;\n }\n }\n};\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./UserBar.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./UserBar.css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./UserPanel.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./UserPanel.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { elements } from '@ecosystem/newron-design-system';\nimport React from 'react';\nimport './UserBar.css';\n\nconst { Icon } = elements;\n\nexport interface UserPanelItemProps {\n borderTop?: boolean;\n icon: JSX.Element;\n id: string;\n children: string;\n onClick: () => void;\n}\n\nexport const UserPanelItem = (props: UserPanelItemProps): JSX.Element => {\n const { borderTop, children, icon, id, onClick } = props;\n\n return (\n <div className={`my-0.5 hover:bg-medium${borderTop ? ' border-t border-default' : ''}`}>\n <button\n data-test-id={id}\n data-user-guide-id={id}\n id={id}\n className=\"p-3 text-base font-normal text-lighter w-full text-left flex\"\n onClick={onClick}\n >\n <Icon testId={`${id}-icon`} color=\"secondaryInteractive\">\n {icon}\n </Icon>\n <span className=\"ml-3\">{children}</span>\n </button>\n </div>\n );\n};\n","import { isInternal, useAnalytics, useAuthentication } from '@ecosystem/newron-client-lib';\nimport { elements } from '@ecosystem/newron-design-system';\nimport React from 'react';\nimport { useNavigate } from 'react-router-dom';\n\nimport './UserPanel.css';\n\nimport { CLIENT_ROUTES } from '../../../../constants';\n\nimport { UserPanelItem } from './UserPanelItem';\n\nexport interface UserPanelProps {\n name: string;\n userIdentifier: string;\n showSavedViews: boolean;\n logout: () => void;\n setIsOpen: (value: boolean) => void;\n showFilesRepository: boolean;\n}\n\nconst { Icon } = elements;\n\nexport const UserPanel = ({\n logout,\n name,\n userIdentifier,\n showSavedViews,\n setIsOpen,\n showFilesRepository,\n}: UserPanelProps): JSX.Element => {\n const navigate = useNavigate();\n const { track } = useAnalytics();\n const { user } = useAuthentication();\n\n const goToNotificationPreferences = () => {\n navigate(CLIENT_ROUTES.NOTIFICATIONS_PREFERENCES);\n };\n\n const goToAccountDetails = () => {\n navigate(CLIENT_ROUTES.ACCOUNT_DETAILS);\n };\n\n const goToSavedViews = () => {\n navigate(CLIENT_ROUTES.SAVED_VIEWS);\n };\n\n const goToFileRepository = () => {\n navigate(CLIENT_ROUTES.FILES_REPOSITORY);\n };\n\n const onClickNavigationItem = (cb: () => void, trackLabel: string) => () => {\n setIsOpen(false);\n track(trackLabel);\n cb();\n };\n\n const toggleBetaFeatures = () => {\n const current = localStorage.getItem('gfknewron_feature_flag');\n if (current === 'beta') {\n localStorage.removeItem('gfknewron_feature_flag');\n } else {\n localStorage.setItem('gfknewron_feature_flag', 'beta');\n }\n window.location.reload();\n };\n\n return (\n <div className={'relative UserPanel__Wrapper'}>\n <nav className={'bg-white border border-default rounded min-w-33 absolute right-0 w-80 z-120 UserPanel__Menu'}>\n <h4 className={'truncate mt-3 px-3 text-lighter'} title={name}>\n {name}\n </h4>\n <div className={'truncate border-b pb-3 px-3 text-sm border-default text-lighter'} title={userIdentifier}>\n {userIdentifier}\n </div>\n {showFilesRepository && (\n <UserPanelItem\n icon={<Icon.icons.Storage />}\n id=\"files-repository\"\n onClick={onClickNavigationItem(goToFileRepository, 'Files repository menu icon clicked')}\n >\n Files repository\n </UserPanelItem>\n )}\n {showSavedViews && (\n <UserPanelItem\n icon={<Icon.icons.ViewSave />}\n id=\"saved-views\"\n onClick={onClickNavigationItem(goToSavedViews, 'Saved views menu icon clicked')}\n >\n Saved views\n </UserPanelItem>\n )}\n <UserPanelItem\n icon={<Icon.icons.PersonOutline />}\n id=\"account-details\"\n onClick={onClickNavigationItem(goToAccountDetails, 'Account details menu icon clicked')}\n >\n Account details\n </UserPanelItem>\n <UserPanelItem\n icon={<Icon.icons.NotificationOutline />}\n id=\"notification-preferences\"\n onClick={onClickNavigationItem(goToNotificationPreferences, 'Notification preferences menu icon clicked')}\n >\n Notification preferences\n </UserPanelItem>\n {isInternal(user) && (\n <UserPanelItem icon={<Icon.icons.Lab />} id=\"beta-toggle\" onClick={toggleBetaFeatures}>\n Toggle Beta Features\n </UserPanelItem>\n )}\n <UserPanelItem borderTop icon={<Icon.icons.Logout />} id=\"logout\" onClick={logout}>\n Sign out\n </UserPanelItem>\n </nav>\n </div>\n );\n};\n","import { useOnOutsideClick } from '@ecosystem/newron-client-lib';\nimport { elements } from '@ecosystem/newron-design-system';\nimport React, { useRef, useState } from 'react';\nimport './UserBar.css';\n\nimport { UserPanel } from './UserPanel';\n\nexport interface UserBarProps {\n name: string;\n userIdentifier: string;\n showSavedViews: boolean;\n logout: () => void;\n isMarket2Page: boolean;\n showFilesRepository: boolean;\n}\n\nexport const UserBar = (props: UserBarProps): JSX.Element => {\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const userBar = useRef<HTMLDivElement>(null);\n\n useOnOutsideClick(userBar, () => setIsOpen(false));\n\n const toggle = () => {\n setIsOpen(!isOpen);\n };\n\n const { Icon } = elements;\n\n return (\n <div className=\"text-l\" ref={userBar}>\n <button\n data-test-id=\"user-name\"\n data-user-guide-id=\"user-name\"\n className={`border-transparent border-2 rounded inline ${\n isOpen && 'bg-medium'\n } hover:bg-medium UserBar__Toggle text-sm`}\n onClick={toggle}\n >\n {!props.isMarket2Page && props.name}\n <Icon color=\"secondaryInteractive\" size=\"md\">\n <Icon.icons.PersonOutline />\n </Icon>\n <Icon testId=\"dropdown-icon\" color=\"secondaryInteractive\" size=\"md\">\n {isOpen ? <Icon.icons.ChevronUp /> : <Icon.icons.ChevronDown />}\n </Icon>\n </button>\n {isOpen && <UserPanel {...props} setIsOpen={setIsOpen} />}\n </div>\n );\n};\n","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./index.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./index.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { actions, feedbackV2, inputs, overlays } from '@ecosystem/newron-design-system';\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { Email } from '../InviteUserModal/InviteUserModal';\n\nimport '../index.css';\n\nconst { Modal } = overlays;\nconst { FormControl } = inputs;\nconst { Button, Chips } = actions;\nconst { Alert } = feedbackV2;\n\nconst EMAIL_REGEX =\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@(([^<>()[\\]\\\\.,;:\\s@\"]+\\.)+[^<>()[\\]\\\\.,;:\\s@\"]{2,})$/i;\n\nfunction renderChips(emails: Email[], removeEmail: (value: string) => void) {\n return emails.map(({ value, valid }, i) => (\n <Chips.Chip\n key={`${value}-${i}`}\n testId={`${value}-${i}-chip`}\n value={value}\n onRemove={() => removeEmail(`${value}-${i}`)}\n error={!valid}\n />\n ));\n}\n\ninterface InviteUsersProps {\n onClose: () => void;\n sendInvites: (emails: string[]) => void;\n}\n\nconst InviteUsersInput = ({ onClose, sendInvites }: InviteUsersProps): JSX.Element => {\n const containers = useRef(undefined);\n const [email, setEmail] = useState<string>('');\n const [emails, setEmails] = useState<Email[]>([]);\n const [isValid, setIsValid] = useState<boolean>(true);\n const [isFocused, setIsFocused] = useState<boolean>(false);\n\n useEffect(() => {\n setIsValid(emails.reduce((acc, { valid }) => acc && valid, true));\n }, [emails]);\n\n useEffect(() => {\n const handler = (event: MouseEvent) => {\n if (!containers.current?.contains(event.target)) {\n setIsFocused(false);\n }\n };\n document.addEventListener('click', handler);\n return () => {\n document.removeEventListener('click', handler);\n };\n });\n\n const canSubmit = useMemo(() => (!emails.length ? !emails.length : !isValid), [emails.length, isValid]);\n const inviteUsersBottomTextClass = useMemo(() => `text-lighter text-sm ${isValid ? 'mt-19' : 'mt-6'}`, [isValid]);\n const showContext = useMemo(() => isFocused && email?.trim().length > 0, [email, isFocused]);\n\n const handleOnChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.currentTarget.value !== ',') {\n setEmail(e.currentTarget.value);\n }\n }, []);\n\n const handleRemoveEmail = useCallback(\n (valueToRemove: string) => {\n setEmails(emails.filter(({ value }, i) => `${value}-${i}` !== valueToRemove));\n },\n [emails]\n );\n\n const addEmail = useCallback(() => {\n const isEmailValid = EMAIL_REGEX.test(email);\n setEmail('');\n setEmails([...emails, { value: email, valid: isEmailValid }]);\n }, [email, emails]);\n\n const handleOnKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if ((e.key === 'Enter' || e.key === ',') && !!email) {\n addEmail();\n }\n if (e.key === 'Backspace' && !email.length && !!emails.length) {\n setEmails(emails.slice(0, -1));\n }\n },\n [email, emails, addEmail]\n );\n\n const handleOnClose = () => {\n setEmails([]);\n setEmail('');\n onClose();\n };\n\n const handleSendInvites = () => {\n const emailsToInvite = Array.from(new Set(emails.map(({ value }) => value.toLowerCase())));\n setEmails([]);\n sendInvites(emailsToInvite);\n };\n\n return (\n <>\n <Modal.Header>Invite colleagues</Modal.Header>\n <div className=\"content--max-height overflow-y-auto\">\n <Modal.Body>\n <div role=\"presentation\" className=\"p-0.5 pr-5\" onFocus={() => setIsFocused(true)}>\n <FormControl isInline label=\"Send to:\" name=\"email\">\n <Chips.List>\n {renderChips(emails, handleRemoveEmail)}\n <div className=\"flex-grow relative\" ref={containers}>\n <input\n id=\"input\"\n className=\"w-full border-0 h-10 px-4 text-default input-email\"\n placeholder=\"Add email addresses\"\n type=\"text\"\n data-test-id={'email-input'}\n value={email}\n onChange={handleOnChange}\n onKeyDown={handleOnKeyDown}\n />\n {showContext && (\n <div className=\"absolute pl-13\" data-test-id=\"email-context\">\n <div className=\"border border-default bg-white rounded w-72 shadow-sm py-2\">\n <div\n role=\"presentation\"\n className=\"px-3 py-2 text-sm bg-brand-light w-full cursor-pointer truncate\"\n onClick={addEmail}\n >\n Use this email: <span className=\"font-bold\">{email}</span>\n </div>\n </div>\n </div>\n )}\n </div>\n </Chips.List>\n </FormControl>\n </div>\n <div className=\"w-full border-b border-default mt-2 mb-6\" />\n {!isValid && <Alert title=\"Please re-enter the email address in the correct format.\" type=\"error\" />}\n <div className={inviteUsersBottomTextClass}>\n Colleagues you invite will receive an email from GfK. When they sign up to gfknewron, they will have the\n same access as you.\n </div>\n </Modal.Body>\n </div>\n <Modal.Footer>\n <Button onClick={handleSendInvites} disabled={canSubmit} testId={'send-invites-button'}>\n Send Invites\n </Button>\n <Button onClick={handleOnClose} mode=\"secondary\" testId={'cancel-button'}>\n Cancel\n </Button>\n </Modal.Footer>\n </>\n );\n};\n\nexport { InviteUsersInput };\n","import { overlays } from '@ecosystem/newron-design-system';\nimport React, { useCallback, useState } from 'react';\n\nimport { InvitationStatusList, InviteUsersInput } from '../';\nimport { ClientUserInvitation } from '../../hooks/useUserInvites';\n\nconst { Modal } = overlays;\n\nexport interface InviteUserModalProps {\n isOpen: boolean;\n onClose: () => void;\n sendInvites: (invites: string[]) => void;\n invitees: ClientUserInvitation[];\n clearInvitees: () => void;\n loading: boolean;\n clientName: string;\n error: boolean;\n}\n\nexport interface Email {\n value: string;\n valid: boolean;\n}\n\nenum Step {\n EMAILS = 'EMAILS',\n INVITES = 'INVITES',\n}\n\nconst InviteUserModal = ({\n onClose,\n isOpen,\n sendInvites,\n invitees,\n clearInvitees,\n loading,\n clientName,\n error,\n}: InviteUserModalProps): JSX.Element => {\n const [step, setStep] = useState<Step>(Step.EMAILS);\n\n const handleSendInvites = (emails: string[]) => {\n setStep(Step.INVITES);\n sendInvites(emails);\n };\n\n const handleOnclose = useCallback(() => {\n setStep(Step.EMAILS);\n clearInvitees();\n onClose();\n }, [clearInvitees, onClose]);\n\n const handleAddMoreInvites = useCallback(() => {\n setStep(Step.EMAILS);\n clearInvitees();\n }, [clearInvitees]);\n\n return (\n <Modal isOpen={isOpen} onClose={handleOnclose}>\n {step === Step.EMAILS && <InviteUsersInput sendInvites={handleSendInvites} onClose={handleOnclose} />}\n {step === Step.INVITES && (\n <InvitationStatusList\n invitees={invitees}\n clientName={clientName}\n loading={loading}\n onClose={handleOnclose}\n moreInvites={handleAddMoreInvites}\n error={error}\n />\n )}\n </Modal>\n );\n};\n\nexport { InviteUserModal };\n","import { useAuthentication } from '@ecosystem/newron-client-lib';\nimport axios from 'axios';\nimport { useCallback, useState } from 'react';\n\nimport { logger } from '../../../../../logging/logger';\n\nconst USERS_API_URL = '/api/users-api';\n\ntype UserInviteDetails = {\n clientName: string;\n showInviteUsers: boolean;\n groups: string[];\n};\n\nexport enum InvitationStatus {\n PENDING = 'PENDING',\n ACCEPTED = 'ACCEPTED',\n FAILED = 'FAILED',\n NON_WHITELISTED = 'NON_WHITELISTED',\n EXPIRED = 'EXPIRED',\n SEND = 'SEND',\n}\n\nexport type ClientUserInvitation = {\n email: string;\n status: InvitationStatus;\n};\n\nexport type ReturnType = {\n clientName: string;\n show: boolean;\n loading: boolean;\n error: boolean;\n userGroups: string[];\n invitees: ClientUserInvitation[];\n getUserInviteDetails: () => void;\n clearInvitees: () => void;\n inviteClientUsers: (emails: string[]) => void;\n};\n\nexport const useUserInvites = (): ReturnType => {\n const [details, setDetails] = useState<UserInviteDetails>({\n clientName: '',\n groups: [],\n showInviteUsers: false,\n });\n const [error, setError] = useState<boolean>(false);\n const [invitees, setInvitees] = useState<ClientUserInvitation[]>([]);\n const [loading, setLoading] = useState<boolean>(false);\n const { getAccessToken, user } = useAuthentication();\n\n const getUserInviteDetails = useCallback(async (): Promise<void> => {\n try {\n const token = await getAccessToken();\n if (token) {\n const response = await axios.get(`${USERS_API_URL}/v1/users`, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n setDetails(response.data);\n }\n } catch (e) {\n logger.error(e, { message: `Get user invite details error: ${e}` });\n }\n }, [getAccessToken]);\n\n const inviteClientUsers = async (emails: string[]): Promise<void> => {\n setLoading(true);\n setError(false);\n try {\n const token = await getAccessToken();\n if (token && user.clientId !== null) {\n const response = await axios.post(\n `${USERS_API_URL}/v1/users/invite`,\n {\n invitations: emails.map(email => ({ email, groups: details.groups })),\n },\n {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n }\n );\n setInvitees(response.data);\n setLoading(false);\n }\n } catch (e) {\n logger.error(e, { message: `Invite client users error: ${e}` });\n setError(true);\n setLoading(false);\n }\n };\n\n const clearInvitees = () => {\n setInvitees([]);\n };\n\n return {\n getUserInviteDetails,\n inviteClientUsers,\n clientName: details.clientName,\n show: details.showInviteUsers,\n userGroups: details.groups,\n invitees,\n loading,\n clearInvitees,\n error,\n };\n};\n","import { actions, feedback, feedbackV2, lists, overlays } from '@ecosystem/newron-design-system';\nimport React, { useMemo } from 'react';\n\nimport { ClientUserInvitation, InvitationStatus } from '../../hooks/useUserInvites';\n\nimport '../index.css';\n\nconst { Modal } = overlays;\nconst { Table, GenericCell } = lists;\nconst { DotsLoader } = feedback;\nconst { Alert } = feedbackV2;\nconst { Button } = actions;\n\nexport const getInviteeStatusText = (status: InvitationStatus): string => {\n switch (status) {\n case InvitationStatus.NON_WHITELISTED:\n return 'Under review';\n case InvitationStatus.FAILED:\n return 'User exists';\n case InvitationStatus.SEND:\n return 'Invite sent';\n default:\n return null;\n }\n};\n\nconst getInviteeStatusColor = (status: InvitationStatus): string => {\n switch (status) {\n case InvitationStatus.NON_WHITELISTED:\n return 'text-brand';\n case InvitationStatus.FAILED:\n return 'text-ui-green';\n case InvitationStatus.SEND:\n return 'text-ui-green';\n default:\n return null;\n }\n};\n\nconst getInviteeStatusOrder = (status: InvitationStatus): number => {\n switch (status) {\n case InvitationStatus.SEND:\n return 1;\n case InvitationStatus.FAILED:\n return 2;\n case InvitationStatus.NON_WHITELISTED:\n return 3;\n default:\n return 0;\n }\n};\n\nfunction renderTableData(invitees: ClientUserInvitation[]) {\n return invitees.map(({ email, status }) => (\n <Table.Row key={email}>\n <Table.Cell>\n <GenericCell>\n <span className=\"text-default text-md\">{email}</span>\n </GenericCell>\n </Table.Cell>\n <Table.Cell>\n <GenericCell>\n <span className={`text-lighter text-sm ${getInviteeStatusColor(status)}`}>\n {getInviteeStatusText(status)}\n </span>\n </GenericCell>\n </Table.Cell>\n </Table.Row>\n ));\n}\n\ninterface InvitationStatusListProps {\n invitees: ClientUserInvitation[];\n clientName: string;\n loading: boolean;\n error: boolean;\n onClose: () => void;\n moreInvites: () => void;\n}\n\nconst InvitationStatusList = ({\n invitees,\n clientName,\n loading,\n error,\n onClose,\n moreInvites,\n}: InvitationStatusListProps): JSX.Element => {\n const sortedInvitees = useMemo(\n () => [...invitees].sort((f, s) => getInviteeStatusOrder(f.status) - getInviteeStatusOrder(s.status)),\n [invitees]\n );\n const nonWhitelistedDomains = useMemo(\n () => invitees.filter(({ status }) => InvitationStatus.NON_WHITELISTED === status),\n [invitees]\n );\n\n const buttonText = useMemo(() => (error ? 'Retry' : 'Add more'), [error]);\n\n if (loading) {\n return <DotsLoader />;\n }\n\n const handleOnClose = () => {\n onClose();\n };\n\n return (\n <>\n <Modal.Header>Invitation Status</Modal.Header>\n <Modal.Body>\n {error && <Alert title=\"Something went wrong. Please retry\" type=\"error\" />}\n {!error && (\n <div className=\"overflow-y-auto content--max-height border border-light\">\n <Table stickyHeader>\n <Table.Header>\n <Table.ColumnHeader align=\"left\" id=\"email\">\n Invitees\n </Table.ColumnHeader>\n <Table.ColumnHeader id=\"status\">Invitation status</Table.ColumnHeader>\n </Table.Header>\n <Table.Body>{renderTableData(sortedInvitees)}</Table.Body>\n </Table>\n </div>\n )}\n {nonWhitelistedDomains.length > 0 && (\n <p data-test-id={'non-whitelisted-domains-message'} className=\"text-sm mt-4\">\n Some invitations are under review because the email domains aren't on our approved list for{' '}\n <b>{clientName}</b>. We're looking into it, and we'll keep you informed.\n </p>\n )}\n <p className=\"text-sm mt-2\">\n Please reach out to{' '}\n <a href=\"mailto:gfknewron@gfk.com\" className=\"no-underline\">\n gfknewron@gfk.com\n </a>{' '}\n incase of any questions.\n </p>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={handleOnClose} testId={'done-button'}>\n Done\n </Button>\n <Button onClick={moreInvites} mode=\"secondary\" testId={'add-more-button'}>\n {buttonText}\n </Button>\n </Modal.Footer>\n </>\n );\n};\nexport { InvitationStatusList };\n","import { useAnalytics, useAuthentication, useFeedback } from '@ecosystem/newron-client-lib';\nimport { elements } from '@ecosystem/newron-design-system';\nimport React, { useEffect, useState } from 'react';\n\nimport { InviteUserModal } from './components';\nimport { useUserInvites } from './hooks/useUserInvites';\n\nconst { Icon } = elements;\n\nconst UserInvite = (): JSX.Element | null => {\n const [showModal, setShowModal] = useState<boolean>(false);\n const { user } = useAuthentication();\n const {\n getUserInviteDetails,\n inviteClientUsers,\n show,\n clientName,\n invitees,\n loading,\n clearInvitees,\n error,\n userGroups,\n } = useUserInvites();\n const { track } = useAnalytics();\n const { extendEmbeddedData } = useFeedback();\n\n useEffect(() => {\n if (user.clientId !== null) {\n getUserInviteDetails();\n }\n }, [user.clientId, getUserInviteDetails]);\n\n useEffect(() => {\n if (show) {\n track('Invite colleagues enabled');\n }\n }, [show, track]);\n\n useEffect(() => {\n if (show) {\n extendEmbeddedData({ userGroups, companyName: clientName, userCountry: user?.country || '' });\n }\n }, [show, userGroups, clientName, user?.country, extendEmbeddedData]);\n\n if (!show) {\n return null;\n }\n\n return (\n <>\n <button\n data-test-id=\"invite-user-button\"\n className=\"flex items-center gap-x-2 text-sm font-bold text-interactive hover:bg-medium mr-6 rounded p-0.5\"\n onClick={() => setShowModal(true)}\n >\n <Icon color=\"secondaryInteractive\">\n <Icon.icons.PersonAddOutline title=\"Invite Colleagues\" />\n </Icon>\n </button>\n <InviteUserModal\n isOpen={showModal}\n loading={loading}\n clientName={clientName}\n error={error}\n onClose={() => setShowModal(false)}\n sendInvites={inviteClientUsers}\n invitees={invitees}\n clearInvitees={clearInvitees}\n />\n </>\n );\n};\n\nexport default UserInvite;\n","import { useAuthentication } from '@ecosystem/newron-client-lib';\nimport { overlays } from '@ecosystem/newron-design-system/';\nimport React, { useCallback, useMemo, useReducer } from 'react';\n\nimport { useIsFeatureFlagEnabled } from '../../tools/useIsFeatureFlagEnabled';\nimport { hasAccessToOneOf } from '../../tools/userAccess';\n\nimport { HelpIcon } from './components/HelpIcon/HelpIcon';\nimport { Impersonate } from './components/Impersonate/Impersonate';\nimport { useIsMarket2Page } from './components/Impersonate/useIsMarket2Page';\nimport { NotificationIcon } from './components/Notifications/NotificationIcon/NotificationIcon';\nimport { NotificationPanelContext } from './components/Notifications/NotificationsPanel/state/context';\nimport { reducer } from './components/Notifications/NotificationsPanel/state/reducer';\nimport { initialState } from './components/Notifications/NotificationsPanel/state/state';\nimport { UserBar } from './components/UserBar/UserBar';\nimport UserInvite from './components/UserInvite/UserInvite';\n\nfunction Header(): JSX.Element {\n const isMarket2Page = useIsMarket2Page();\n const { user, logout } = useAuthentication();\n\n const [hasMarketAccess, setHasMarketAccess] = React.useState(false);\n const [hasRetailAccess, setHasRetailAccess] = React.useState(false);\n const [hasFilesRepositoryAccess, setHasFilesRepositoryAccess] = React.useState(false);\n const [state, dispatch] = useReducer(reducer, initialState);\n\n const contextValue = useMemo(() => ({ state, dispatch }), [state, dispatch]);\n\n const { AlertsProvider } = overlays;\n\n const { isEnabled: isFileRepositoryEnabled } = useIsFeatureFlagEnabled({\n domainName: 'platform',\n featureName: 'FILE_REPO_MFE',\n });\n\n const checkUserAccess = useCallback(async () => {\n const hasMarketAccess = await hasAccessToOneOf(['newron', 'pos_test']);\n const hasRetailAccess = await hasAccessToOneOf([\n 'retail_insights',\n 'retail_hitlists_standard',\n 'retail_key_account_data',\n 'seller_insights',\n 'retail_market_premium',\n ]);\n\n const filesRepositoryAccess = await hasAccessToOneOf(['basic_pos_market']);\n\n setHasMarketAccess(hasMarketAccess);\n setHasRetailAccess(hasRetailAccess);\n setHasFilesRepositoryAccess(filesRepositoryAccess);\n }, []);\n\n React.useEffect(() => {\n checkUserAccess();\n }, [checkUserAccess]);\n\n return (\n <header id=\"newron-header\" className=\"px-4 md:px-6 lg:px-12 xxl:px-16 border-b border-light flex items-center\">\n <div id=\"newron-header-content\" className=\"flex-1\" />\n {isMarket2Page && <Impersonate />}\n <NotificationPanelContext.Provider value={contextValue}>\n <AlertsProvider>\n <NotificationIcon />\n </AlertsProvider>\n </NotificationPanelContext.Provider>\n <HelpIcon />\n <UserInvite />\n <UserBar\n name={user.name}\n userIdentifier={user.email}\n logout={logout}\n showSavedViews={hasMarketAccess || hasRetailAccess}\n isMarket2Page={isMarket2Page}\n showFilesRepository={hasFilesRepositoryAccess && isFileRepositoryEnabled}\n />\n </header>\n );\n}\n\nexport { Header };\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./SideDrawer.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./SideDrawer.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { ClientSidebar } from '@ecosystem/newron-client-lib';\nimport React from 'react';\n\nimport './SideDrawer.css';\n\nfunction SideDrawer({ showBorder }: { showBorder?: boolean }): JSX.Element {\n return (\n <div\n data-test-id=\"newron-right-sidebar\"\n id=\"newron-right-sidebar\"\n className={`transition-width bg-light drawer drawer--${\n showBorder ? 'expanded border-l border-light' : 'collapsed'\n }`}\n >\n <div\n data-test-id={ClientSidebar.sidebarContentId}\n id={ClientSidebar.sidebarContentId}\n className=\"relative h-full\"\n />\n </div>\n );\n}\n\nexport { SideDrawer };\n","import React from 'react';\n\ntype NavContextType = {\n sideBarState: 'expanded' | 'collapsed';\n currentSlug: string;\n};\n\nconst NavContext = React.createContext<NavContextType>(null);\n\nfunction useNavContext(): NavContextType {\n const context = React.useContext(NavContext);\n if (!context) {\n throw new Error('useNavContext cannot be used outside of a NavContext.Provider');\n }\n return context;\n}\n\nexport { NavContext, useNavContext, NavContextType };\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./SideNavigation.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./SideNavigation.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { NavRouteConfig } from '@ecosystem/newron-client-routes';\n\nimport { logger } from '../../logging/logger';\n\nexport const CIE_PRODUCT = 'Consumer Intelligence';\nexport const NEWRON_RETAIL_PRODUCT = 'Retail Intelligence';\nexport const CIE_PRODUCT_PATHNAME = '/cie/';\nexport const NEWRON_RETAIL_PATHNAME = '/newron-retail/';\nexport const NEWRON_FORECASTING_PATHNAME = '/forecasting';\nexport const GLOBAL_SUMMARY_PRODUCT = 'Global Summary';\nexport const COLLECTIONS_PRODUCT = 'Collections';\nexport const FORECASTING_PRODUCT = 'Forecasting';\nexport const CONFIG_KEY = 'NEWRON_PLATFORM_CONFIG';\nexport const DISTRIBUTOR_PANEL_PRODUCT = 'Supply Chain';\nexport const DISTRIBUTOR_PANEL_PATHNAME = '/dpo';\nexport const DISTRIBUTOR_PANEL_PATHNAMES = ['/dpo', '/dpi', '/dpl'];\n\nconst getAvailableProducts = async (routes: NavRouteConfig[]): Promise<string[]> => {\n const availableProducts = [];\n for (const route of routes) {\n try {\n if (['available', 'beta', 'new'].includes(await route.state())) {\n availableProducts.push(route.label);\n }\n } catch (error) {\n logger.error(error, { message: `Error while getting state for route: ${route.label}` });\n }\n }\n return availableProducts;\n};\n\nexport const getDefaultUrl = async (routes: NavRouteConfig[]): Promise<{ url: string; isExternal: boolean }> => {\n const availableProducts = await getAvailableProducts(routes);\n\n const availableProductsWithoutCommonRoutes = availableProducts.filter(\n product => product !== GLOBAL_SUMMARY_PRODUCT && product !== COLLECTIONS_PRODUCT\n );\n const pathname = window.location.pathname;\n\n const platformUrls = ['collections', 'account-details', 'saved-views', 'notifications-preferences'];\n\n if (platformUrls.some(el => pathname.includes(el))) {\n return Promise.resolve({ url: '', isExternal: false });\n }\n\n const showRetailUrl =\n (hasOnlyRetailAndCIEAccess(availableProductsWithoutCommonRoutes) &&\n [NEWRON_RETAIL_PATHNAME, CIE_PRODUCT_PATHNAME].every(path => !pathname.includes(path))) ||\n (hasOnlyRetailInsightsAccess(availableProductsWithoutCommonRoutes) && !pathname.includes(NEWRON_RETAIL_PATHNAME)) ||\n (hasOnlyRetailAndForecastingAccess(availableProductsWithoutCommonRoutes) &&\n [NEWRON_RETAIL_PATHNAME, NEWRON_FORECASTING_PATHNAME].every(path => !pathname.includes(path))) ||\n (hasOnlyRetailCIEAndForecastingAccess(availableProductsWithoutCommonRoutes) &&\n [NEWRON_RETAIL_PATHNAME, CIE_PRODUCT_PATHNAME, NEWRON_FORECASTING_PATHNAME].every(\n path => !pathname.includes(path)\n ));\n\n const showDPUrl =\n hasOnlyDistributorPanelAccess(availableProductsWithoutCommonRoutes) &&\n DISTRIBUTOR_PANEL_PATHNAMES.every(path => !pathname.includes(path));\n\n if (showRetailUrl) {\n return Promise.resolve({ url: NEWRON_RETAIL_PATHNAME, isExternal: false });\n } else if (hasOnlyCIEAccess(availableProductsWithoutCommonRoutes) && !pathname.includes(CIE_PRODUCT_PATHNAME)) {\n return Promise.resolve({ url: CIE_PRODUCT_PATHNAME, isExternal: await getIsExternal(CIE_PRODUCT, routes) });\n } else if (showDPUrl) {\n return Promise.resolve({ url: DISTRIBUTOR_PANEL_PATHNAME, isExternal: false });\n }\n return Promise.resolve({ url: '', isExternal: false });\n};\n\nconst getIsExternal = async (routeName: string, routes: NavRouteConfig[]) => {\n const route = routes.find(r => r.label === routeName);\n if (route && route.isExternalUrlFn) {\n return route.isExternalUrlFn();\n }\n return false;\n};\n\nconst hasOnlyCIEAccess = (products: string[]) => {\n return products.length === 1 && products.includes(CIE_PRODUCT);\n};\n\nconst hasOnlyRetailInsightsAccess = (products: string[]) => {\n return products.length === 1 && products.includes(NEWRON_RETAIL_PRODUCT);\n};\n\nconst hasOnlyRetailAndCIEAccess = (products: string[]) => {\n return products.length === 2 && [CIE_PRODUCT, NEWRON_RETAIL_PRODUCT].every(product => products.includes(product));\n};\n\nconst hasOnlyRetailAndForecastingAccess = (products: string[]) => {\n return (\n products.length === 2 && [FORECASTING_PRODUCT, NEWRON_RETAIL_PRODUCT].every(product => products.includes(product))\n );\n};\nconst hasOnlyRetailCIEAndForecastingAccess = (products: string[]) => {\n return (\n products.length === 3 &&\n [FORECASTING_PRODUCT, NEWRON_RETAIL_PRODUCT, CIE_PRODUCT].every(product => products.includes(product))\n );\n};\n\nconst hasOnlyDistributorPanelAccess = (products: string[]) => {\n return products.length === 1 && products.includes(DISTRIBUTOR_PANEL_PRODUCT);\n};\n\nexport const getQueryParamsForUrl = (requestedParams: string[]): string => {\n if (!requestedParams || !requestedParams.length) {\n return '';\n }\n\n const currentParams = new URLSearchParams(window.location.search);\n const requested = new URLSearchParams();\n requestedParams.forEach(param => {\n if (currentParams.has(param)) {\n requested.set(param, currentParams.get(param));\n }\n });\n\n return `?${requested}`;\n};\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./Tooltip.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./Tooltip.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React from 'react';\n\ntype Props = {\n onWhite?: boolean;\n};\n\nfunction RestrictedIcon({ onWhite = false }: Props): JSX.Element {\n return (\n <span data-test-id=\"restricted-icon\" className={`${onWhite ? 'bg-light' : 'bg-white'} rounded text-xs px-1 py-0.5`}>\n <span className=\"text-brand\">gfk</span>\n <span className=\"text-default\">newron</span>\n </span>\n );\n}\n\nexport { RestrictedIcon };\n","import { RouteConfig, RouteState } from '@ecosystem/newron-client-routes';\nimport { feedback } from '@ecosystem/newron-design-system';\nimport React from 'react';\nimport { useNavigate } from 'react-router-dom';\n\nimport { useNavContext } from '../context';\nimport './Tooltip.css';\nimport { getQueryParamsForUrl } from '../utils';\n\nimport { RestrictedIcon } from './RestrictedIcon';\n\ntype Props = {\n route: RouteConfig;\n state: RouteState;\n parentElement: HTMLElement | null;\n};\nfunction Tooltip({ route, state, parentElement }: Props): JSX.Element {\n const { sideBarState, currentSlug } = useNavContext();\n\n if (sideBarState === 'expanded' && state !== 'restricted') {\n return null;\n }\n\n const RestrictedContent = route.restrictedTooltipContent ? (\n route.restrictedTooltipContent\n ) : (\n <span>\n {route.label}\n <RestrictedIcon onWhite />\n </span>\n );\n\n const subRoutes: RouteConfig[] = route.subRoutes ? route.subRoutes.filter(route => !route.hideFromNav) : [];\n\n const parentRect = parentElement?.getBoundingClientRect();\n const top = parentRect?.top || 0;\n const left = (parentRect?.left || 0) + parentRect?.width || 0;\n\n return (\n <div className=\"nav-tooltip-wrapper\" style={{ top, left }} data-test-id=\"tooltip\">\n <div className=\"nav-tooltip bg-white rounded border border-default text-sm shadow-sm\">\n <div className=\"tooltip-arrow\"> </div>\n {state === 'restricted' && <div className=\"px-4 py-2 text-xs w-64\">{RestrictedContent}</div>}\n {state !== 'restricted' && (\n <div className=\"px-4 py-2 font-bold nowrap flex items-center gap-x-2\">\n {route.label} {state === 'beta' && <feedback.Badge variant=\"small\">Beta</feedback.Badge>}\n </div>\n )}\n {state !== 'restricted' && subRoutes.length > 0 && (\n <div className=\"border-t border-default py-0.5\">\n {subRoutes.map(subRoute => (\n <SubRouteLink key={subRoute.slug} currentSlug={currentSlug} route={subRoute} />\n ))}\n </div>\n )}\n </div>\n </div>\n );\n}\n\ntype SubProps = {\n route: RouteConfig;\n currentSlug: string;\n};\nfunction SubRouteLink({ route, currentSlug }: SubProps) {\n const [state, setState] = React.useState<RouteState>('hidden');\n const navigate = useNavigate();\n\n const cachedRoute = React.useMemo(() => route, [route]);\n (async () => {\n const cachedRouteValue = await cachedRoute.state();\n setState(cachedRouteValue);\n })();\n\n if (state === 'hidden') {\n return null;\n }\n\n const handleClick = async () => {\n if (state !== 'restricted') {\n const url = `${route.getUrl()}${getQueryParamsForUrl(route.queryParams)}`;\n if (route.isExternalUrlFn && (await route.isExternalUrlFn())) {\n window.location.href = url;\n } else {\n navigate(url);\n }\n }\n };\n\n const active = currentSlug === cachedRoute.slug;\n\n let css = 'p-2 pl-4 text-left text-sm w-full nowrap w-full flex items-center gap-x-4';\n\n if (state === 'restricted') {\n css += ' text-inactive cursor-default';\n } else if (active) {\n css += ' bg-medium text-default';\n } else {\n css += ' hover:bg-light text-interactive';\n }\n\n return (\n <button className={css} onClick={handleClick}>\n <span className=\"flex-1\">{cachedRoute.label}</span>\n {state === 'beta' && <feedback.Badge variant=\"small\">Beta</feedback.Badge>}\n {state === 'restricted' && <RestrictedIcon onWhite />}\n </button>\n );\n}\n\nexport { Tooltip };\n","import { RouteConfig, RouteState } from '@ecosystem/newron-client-routes';\nimport { feedback } from '@ecosystem/newron-design-system';\nimport React from 'react';\nimport { useNavigate } from 'react-router';\n\nimport { useNavContext } from '../context';\nimport { getQueryParamsForUrl } from '../utils';\n\nimport { Tooltip } from './Tooltip';\n\ntype LinkProps = {\n route: RouteConfig;\n};\nfunction NavigationSubLink({ route }: LinkProps): JSX.Element {\n const elRef = React.useRef(null);\n const [active, setActive] = React.useState<boolean>(false);\n const [state, setState] = React.useState<RouteState>('hidden');\n const [hovering, setHovering] = React.useState<boolean>(false);\n\n const { currentSlug } = useNavContext();\n const cachedRoute = React.useMemo(() => route, [route]);\n const navigate = useNavigate();\n\n (async () => {\n const cachedRouteValue = await cachedRoute.state();\n setState(cachedRouteValue);\n })();\n\n React.useEffect(() => {\n setActive(cachedRoute.slug === currentSlug);\n }, [cachedRoute, currentSlug]);\n\n if (state === 'hidden') {\n return null;\n }\n\n const handleClick = async () => {\n if (state === 'restricted') {\n return;\n }\n\n const url = `${route.getUrl(null)}${getQueryParamsForUrl(route.queryParams)}`;\n if (route.isExternalUrlFn && (await route.isExternalUrlFn())) {\n window.location.href = url;\n } else {\n navigate(url);\n }\n };\n\n let btnCss = 'w-full text-left flex items-center text-sm font-bold pl-17 pr-3 py-2';\n if (state === 'restricted') {\n btnCss += ' cursor-default text-inactive';\n } else if (active) {\n btnCss += ' text-brand nav-item--active';\n } else {\n btnCss += ' text-interactive hover:bg-medium';\n }\n\n return (\n <div\n ref={elRef}\n onMouseEnter={() => setHovering(true)}\n onMouseLeave={() => setHovering(false)}\n data-test-id=\"navigation-sub-link\"\n >\n <button title={cachedRoute.label} className={btnCss} onClick={handleClick} data-user-guide-id={route.slug}>\n <span className=\"flex-1\">{cachedRoute.label}</span>\n {state === 'beta' && <feedback.Badge variant=\"small\">Beta</feedback.Badge>}\n {state === 'new' && <feedback.Badge variant=\"small\">New</feedback.Badge>}\n </button>\n {hovering && <Tooltip parentElement={elRef.current} route={cachedRoute} state={state} />}\n </div>\n );\n}\n\nexport { NavigationSubLink };\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./NavigationItem.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./NavigationItem.css\";\n export default content && content.locals ? content.locals : undefined;\n","import type { NavRouteConfig, RouteConfig, RouteState } from '@ecosystem/newron-client-routes';\nimport { elements, feedback } from '@ecosystem/newron-design-system';\nimport { AnimatePresence, motion } from 'framer-motion';\nimport React, { useEffect, useRef } from 'react';\nimport { useNavigate } from 'react-router';\nimport useMeasure from 'react-use-measure';\n\nimport { useNavContext } from '../context';\nimport { getQueryParamsForUrl } from '../utils';\n\nimport { NavigationSubLink } from './NavigationSubLink';\nimport { Tooltip } from './Tooltip';\n\nimport './NavigationItem.css';\n\nconst TRANSITION_TIMEOUT = 0.25;\ntype Props = {\n route: NavRouteConfig;\n};\n\nconst { Icon } = elements;\nconst { Badge } = feedback;\n\nfunction ResizablePanel({ children }: { children: React.ReactNode }): JSX.Element {\n const [ref, { height }] = useMeasure();\n return (\n <motion.div\n style={{ overflow: 'hidden' }}\n initial={{ height: 0 }}\n animate={{ height }}\n exit={{ height: 0 }}\n transition={{ duration: TRANSITION_TIMEOUT }}\n >\n <div ref={ref}>{children}</div>\n </motion.div>\n );\n}\n\nfunction NavigationItem({ route }: Props): JSX.Element {\n const [state, setState] = React.useState<RouteState>('hidden');\n const [active, setActive] = React.useState<boolean>(false);\n const [expanded, setExpanded] = React.useState<boolean>(true);\n const [hovering, setHovering] = React.useState<boolean>(false);\n const itemsContainerRef = useRef<HTMLDivElement>(null);\n const navigate = useNavigate();\n const { sideBarState, currentSlug } = useNavContext();\n\n const elRef = React.useRef(null);\n const cachedRoute: NavRouteConfig = React.useMemo(() => route, [route]);\n useEffect(() => {\n (async () => {\n const cachedRouteValue = await cachedRoute.state();\n setState(cachedRouteValue);\n })();\n }, [cachedRoute]);\n\n const isAvailable = state === 'available' || state === 'beta' || state === 'new';\n const subRoutes: RouteConfig[] = cachedRoute.subRoutes\n ? cachedRoute.subRoutes.filter(route => !route.hideFromNav)\n : [];\n const hasChildren = subRoutes.length > 0 && isAvailable;\n const showChildren = hasChildren && expanded && sideBarState === 'expanded';\n\n React.useEffect(() => {\n if (hasChildren) {\n setActive((!expanded || sideBarState === 'collapsed') && currentSlug.startsWith(cachedRoute.slug));\n } else {\n setActive(cachedRoute.slug === currentSlug);\n }\n }, [cachedRoute, currentSlug, sideBarState, expanded, hasChildren]);\n\n React.useEffect(() => {\n if (hasChildren && currentSlug.startsWith(cachedRoute.slug)) {\n setExpanded(true);\n }\n }, [cachedRoute, currentSlug, hasChildren]);\n\n React.useEffect(() => {\n if (hasChildren && sideBarState === 'expanded') {\n setExpanded(true);\n }\n }, [hasChildren, sideBarState]);\n\n if (state === 'hidden') {\n return null;\n }\n const handleClick = async () => {\n if (state === 'restricted') {\n return;\n }\n\n if (!hasChildren) {\n const url = `${cachedRoute.getUrl()}${getQueryParamsForUrl(cachedRoute.queryParams)}`;\n if (cachedRoute.isExternalUrlFn && (await cachedRoute.isExternalUrlFn())) {\n window.location.href = url;\n } else {\n navigate(url);\n }\n return;\n }\n\n if (sideBarState === 'expanded') {\n setExpanded(!expanded);\n }\n };\n\n const btnCss =\n 'w-full text-left flex items-center h-10 font-bold transition-colors' +\n ` ${!isAvailable ? 'text-inactive hover:bg-medium' : active ? 'text-brand' : 'text-interactive hover:bg-medium'}` +\n ` ${sideBarState === 'collapsed' ? 'justify-center' : 'pl-8 pr-3'}`;\n\n // borders are provided but hidden until they are actually needed (css)\n const outerCss = 'nav-item relative border-light border-t-0 pt-3 pb-3';\n const buttonWrapperCss = 'relative' + ` ${active ? 'nav-item--active' : ''}`;\n const handleBlur = (e: React.FocusEvent<HTMLDivElement>) => {\n const currentTarget = e.currentTarget;\n\n requestAnimationFrame(() => {\n if (!currentTarget.contains(document.activeElement)) {\n setHovering(false);\n }\n });\n };\n return (\n <div\n data-test-id=\"navigation-item\"\n className={outerCss}\n onMouseEnter={() => setHovering(true)}\n onFocus={() => setHovering(true)}\n onMouseLeave={() => setHovering(false)}\n onBlur={handleBlur}\n ref={elRef}\n >\n <div className={buttonWrapperCss}>\n <button\n title={cachedRoute.label}\n className={btnCss}\n onClick={handleClick}\n style={{ whiteSpace: 'nowrap' }}\n data-user-guide-id={cachedRoute.slug}\n >\n <Icon color={!isAvailable ? 'inactive' : active ? 'brand' : 'secondaryInteractive'}>\n {cachedRoute.graphic as React.ReactElement}\n </Icon>\n {sideBarState === 'expanded' && <span className=\"flex-1 ml-3\">{cachedRoute.label}</span>}\n {sideBarState === 'expanded' && hasChildren && (\n <span className={`nav-item-button--${expanded ? 'up' : 'down'}`}>\n <Icon>\n <Icon.icons.ChevronUp />\n </Icon>\n </span>\n )}\n {sideBarState === 'expanded' && state === 'beta' && <Badge variant=\"small\">Beta</Badge>}\n {sideBarState === 'expanded' && state === 'new' && <Badge variant=\"small\">New</Badge>}\n </button>\n <AnimatePresence>\n {showChildren && (\n <ResizablePanel>\n <div ref={itemsContainerRef}>\n {subRoutes.map(child => (\n <NavigationSubLink key={child.slug} route={child} />\n ))}\n </div>\n </ResizablePanel>\n )}\n </AnimatePresence>\n {hovering && <Tooltip parentElement={elRef.current} route={cachedRoute} state={state} />}\n </div>\n </div>\n );\n}\n\nexport { NavigationItem };\n","import { NavRoutesRegister, useClientSideNav } from '@ecosystem/newron-client-lib';\nimport { RouteManager } from '@ecosystem/newron-client-routes';\nimport { actions } from '@ecosystem/newron-design-system';\nimport React, { useMemo } from 'react';\nimport { useLocation, useNavigate } from 'react-router';\n\nimport { Logo } from '../logo/Logo';\n\nimport { NavContext, NavContextType } from './context';\nimport './SideNavigation.css';\nimport { NavigationItem } from './parts/NavigationItem';\nimport { getDefaultUrl } from './utils';\n\nfunction SideNavigation(): JSX.Element {\n const [currentSlug, setCurrentSlug] = React.useState<string>('__NONE__');\n const [isDefaultUrlSet, setIsDefaultUrlSet] = React.useState<boolean>(false);\n\n const { expanded, setExpanded } = useClientSideNav();\n const { pathname } = useLocation();\n const navigate = useNavigate();\n\n const routes = useMemo(() => RouteManager.getInstance().getNavRoutes(), []);\n\n React.useEffect(() => {\n NavRoutesRegister?.getInstance()?.register(routes);\n }, [routes]);\n\n React.useEffect(() => {\n const currentRoute = RouteManager.getInstance().findMatchingRoute(pathname);\n setCurrentSlug(currentRoute ? currentRoute.slug : '__NONE__');\n document.title = currentRoute && currentRoute.label ? `gfknewron - ${currentRoute.label}` : 'gfknewron';\n }, [pathname]);\n\n React.useEffect(() => {\n if (!isDefaultUrlSet) {\n (async () => {\n const route = await getDefaultUrl(routes);\n if (route.url && route.isExternal) {\n window.location.href = route.url;\n }\n\n if (route.url && !route.isExternal) {\n setIsDefaultUrlSet(true);\n navigate(route.url);\n }\n })();\n }\n }, [isDefaultUrlSet, navigate, routes]);\n\n const toggleExpansion = () => {\n setExpanded(!expanded);\n };\n\n const state: NavContextType = useMemo(\n () => ({\n sideBarState: expanded ? 'expanded' : 'collapsed',\n currentSlug,\n }),\n [expanded, currentSlug]\n );\n\n return (\n <nav\n id=\"newron-left-sidebar\"\n role=\"navigation\"\n className=\"left-nav transition-width border-r border-light bg-light\"\n >\n <div\n className={`left-nav-header flex items-center border-b border-light ${expanded ? 'pl-8' : 'justify-center'}`}\n >\n <Logo mini={!expanded} />\n </div>\n <div className=\"left-nav-list pt-1\">\n <NavContext.Provider value={state}>\n {routes.map(route => (\n <NavigationItem key={route.slug} route={route} />\n ))}\n </NavContext.Provider>\n </div>\n <div\n className={`left-nav-footer border-t border-light flex items-center h-18 ${\n expanded ? ' pr-6 justify-end' : ' justify-center'\n }`}\n >\n <span className={`left-nav-toggle transition-transform ${expanded ? ' left-nav-toggle--expanded' : ''}`}>\n <actions.IconButton testId=\"nav-drawer-toggle\" onClick={toggleExpansion}>\n <actions.IconButton.icons.ExpandPanel />\n </actions.IconButton>\n </span>\n </div>\n </nav>\n );\n}\n\nexport { SideNavigation };\n","import { isInternal, useAuthentication } from '@ecosystem/newron-client-lib';\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { getQueryParam } from '../tools/getQueryParams';\nimport { waitForElement } from '../tools/waitForElement';\n\nconst BUTTON_SELECTOR = 'div#slider-control-SI_a9OEdTgU3MLe0d0';\nconst BUTTON_CONTAINER = '.QSISlider.SI_a9OEdTgU3MLe0d0_SliderContainer';\nconst CLICK_TIMER = 1000; // 1 second\n\nexport const useUtmCampaign = (): void => {\n const [isCampaignsDisabled, setIsCampaignsDisabled] = useState<boolean>(false);\n const { isAuthenticated, isAuthenticating, user } = useAuthentication();\n const utmCampaign = getQueryParam('utm_campaign');\n const openCampaignInProgress = useRef(false);\n\n const isInternalUser = isInternal(user);\n\n useEffect(() => {\n const disableCookie = document.cookie\n .split('; ')\n .some(row => row.startsWith('disable_campaigns=') && row.split('=')[1]);\n setIsCampaignsDisabled(disableCookie);\n }, []);\n\n const openCampaign = useCallback(async () => {\n const elementExists = await waitForElement(BUTTON_SELECTOR);\n if (elementExists) {\n setTimeout(() => {\n (elementExists as HTMLElement).click();\n }, CLICK_TIMER);\n }\n }, []);\n\n const setButtonContainerZIndex = useCallback(async () => {\n const buttonContainer = await waitForElement(BUTTON_CONTAINER);\n if (buttonContainer) {\n (buttonContainer as HTMLElement).style.zIndex = '99';\n }\n }, []);\n\n useEffect(() => {\n setButtonContainerZIndex();\n }, [setButtonContainerZIndex]);\n\n useEffect(() => {\n const isNotAuthenticated = isAuthenticating || (!isAuthenticating && !isAuthenticated);\n const showCampaign = utmCampaign && !isCampaignsDisabled && !openCampaignInProgress.current;\n if (isNotAuthenticated || !showCampaign || isInternalUser) {\n return;\n }\n\n openCampaign();\n openCampaignInProgress.current = true;\n }, [isAuthenticated, isAuthenticating, isCampaignsDisabled, openCampaign, isInternalUser, utmCampaign]);\n};\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./BetaBanner.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!./BetaBanner.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React from 'react';\nimport './BetaBanner.css';\n\nconst GFK_NEWRON_FEATURE_FLAG = 'gfknewron_feature_flag';\n\nfunction BetaBanner(): JSX.Element {\n const [isBetaFeatureFlagEnabled, setIsBetaFeatureFlagEnabled] = React.useState(false);\n\n React.useEffect(() => {\n const flag = localStorage.getItem(GFK_NEWRON_FEATURE_FLAG);\n if (flag && flag === 'beta') {\n setIsBetaFeatureFlagEnabled(true);\n }\n }, []);\n\n const disableBetaFeatureFlag = () => {\n localStorage.removeItem(GFK_NEWRON_FEATURE_FLAG);\n window.location.reload();\n };\n\n return (\n <>\n {isBetaFeatureFlagEnabled && (\n <div\n className=\"beta-banner w-full h-4.5 text-white bg-brand text-xs\ttext-center\"\n role=\"button\"\n tabIndex={0}\n onClick={() => disableBetaFeatureFlag()}\n >\n Beta features enabled! Click here to disable it.\n </div>\n )}\n </>\n );\n}\n\nexport { BetaBanner };\n","import { authentication } from '@ecosystem/newron-client-lib';\n\nimport { getConfig } from '../config';\n\ntype FindAllArgs = { product: string; preferenceType: string };\n\nexport type PreferenceDto = {\n id: string;\n created_by: string;\n product: string;\n type: string;\n namespace?: string;\n key?: string;\n data: Record<string, unknown>;\n};\n\nasync function findAll({ product, preferenceType }: FindAllArgs): Promise<PreferenceDto[]> {\n const userToken = await authentication.getAccessToken();\n const API_BASE_PATH = getConfig().API_PREFERENCE_PATH;\n const response = await fetch(`${API_BASE_PATH}/v1/preferences/${product}/${preferenceType}`, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${userToken}`,\n },\n });\n\n return response.json();\n}\n\ntype CreateArgs = FindAllArgs & { data: Record<string, unknown> };\n\nasync function create({ product, preferenceType, data }: CreateArgs): Promise<PreferenceDto> {\n const userToken = await authentication.getAccessToken();\n const API_BASE_PATH = getConfig().API_PREFERENCE_PATH;\n const response = await fetch(`${API_BASE_PATH}/v1/preferences/${product}/${preferenceType}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${userToken}`,\n },\n body: JSON.stringify({ data }),\n });\n return response.json();\n}\n\ntype UpdateArgs = CreateArgs & { id: string };\n\nasync function update({ product, preferenceType, data, id }: UpdateArgs): Promise<PreferenceDto> {\n const userToken = await authentication.getAccessToken();\n const API_BASE_PATH = getConfig().API_PREFERENCE_PATH;\n const response = await fetch(`${API_BASE_PATH}/v1/preferences/${product}/${preferenceType}/${id}`, {\n method: 'PATCH',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${userToken}`,\n },\n body: JSON.stringify({ data }),\n });\n return response.json();\n}\n\nexport const PreferenceAPIService = {\n findAll,\n create,\n update,\n};\n","import { POLICY_DATE } from '../privacyPolicy/PrivacyPolicy';\n\nexport enum PageVersionPreferenceType {\n PrivacyPolicy = 'privacyPolicy',\n}\n\nexport const PAGE_VERSIONS = {\n [PageVersionPreferenceType.PrivacyPolicy]: POLICY_DATE,\n};\n","import { useCallback, useEffect, useState } from 'react';\n\nimport { logger } from '../../../logging/logger';\nimport { PreferenceAPIService, PreferenceDto } from '../../../tools/PreferenceAPIService';\nimport { PAGE_VERSIONS, PageVersionPreferenceType } from '../pageVersion';\n\nconst PAGE_VERSION_PREFERENCE_TYPE = 'page-version';\nconst DEFAULT_PRODUCT = 'newron';\n\nexport function usePageVersion(pageKey: PageVersionPreferenceType): {\n isBannerVisible: boolean;\n onCloseClick: () => Promise<void>;\n} {\n const [isBannerVisible, setIsBannerVisible] = useState<boolean>(false);\n\n const onCloseClick = useCallback(async () => {\n setIsBannerVisible(false);\n }, []);\n\n useEffect(() => {\n /* eslint-disable-next-line more/no-then */\n PreferenceAPIService.findAll({\n product: DEFAULT_PRODUCT,\n preferenceType: PAGE_VERSION_PREFERENCE_TYPE,\n })\n .then(async result => {\n const preference = findPreference(pageKey, result);\n const CURRENT_VERSION = PAGE_VERSIONS[pageKey];\n\n try {\n // create new preference if it is not exists\n if (preference === null) {\n setIsBannerVisible(true);\n const data: PageVersion = {\n [pageKey]: CURRENT_VERSION,\n };\n\n await PreferenceAPIService.create({\n product: DEFAULT_PRODUCT,\n preferenceType: PAGE_VERSION_PREFERENCE_TYPE,\n data,\n });\n // otherwise update\n } else if (preference.data[pageKey] !== CURRENT_VERSION) {\n setIsBannerVisible(true);\n const data: PageVersion = {\n ...preference.data,\n [pageKey]: CURRENT_VERSION,\n };\n\n await PreferenceAPIService.update({\n product: DEFAULT_PRODUCT,\n preferenceType: PAGE_VERSION_PREFERENCE_TYPE,\n id: preference.id,\n data,\n });\n }\n } catch (error) {\n await logger.error(error, { message: 'Save/Update user page version error' });\n }\n })\n .catch(error => {\n logger.error(error, { message: 'Get user page version error' });\n });\n }, [pageKey]);\n\n return {\n isBannerVisible,\n onCloseClick,\n };\n}\n\ntype PageVersion = Partial<Record<PageVersionPreferenceType, string>>;\n\nfunction findPreference(\n preferenceType: PageVersionPreferenceType,\n preferences: PreferenceDto[]\n): (PreferenceDto & { data: PageVersion }) | null {\n if (preferences.length === 0) {\n return null;\n }\n\n let result: (PreferenceDto & { data: PageVersion }) | null = { ...preferences[0], data: {} };\n\n // It should not be more than one page version preference, but because of responce is array\n // iterate it to the first needed version\n for (const preference of preferences) {\n const data = <PageVersion>preference.data;\n if (data[preferenceType]) {\n result = {\n ...preference,\n data,\n };\n break;\n }\n }\n\n return result;\n}\n","import { banner, elements } from '@ecosystem/newron-design-system';\nimport React from 'react';\n\nimport { POLICY_DATE } from '../../../privacyPolicy/PrivacyPolicy';\nimport { usePageVersion } from '../../hooks/usePageVersion';\nimport { PageVersionPreferenceType } from '../../pageVersion';\n\nconst { Banner } = banner;\nconst { Icon } = elements;\n\nexport function PrivacyPolicyBanner(): JSX.Element {\n const { isBannerVisible, onCloseClick } = usePageVersion(PageVersionPreferenceType.PrivacyPolicy);\n return (\n <Banner fixed={false} isVisible={isBannerVisible}>\n <Banner.Icon>\n <Icon color=\"grey\" size=\"md\">\n <Icon.icons.InfoOutline />\n </Icon>\n </Banner.Icon>\n <Banner.Information>\n <b>Updated Privacy Notice:</b> We have recently updated the Privacy Notice for gfknewron, effective{' '}\n {POLICY_DATE}. Please <a href=\"/privacy-policy\">read here</a> or access at any time via the website footer.\n Where your consent is the legal basis for processing, we will inform you separately in advance as necessary and\n seek your renewed consent if processing activities change.\n </Banner.Information>\n <Banner.ButtonGroup onClose={onCloseClick}>\n <></>\n </Banner.ButtonGroup>\n </Banner>\n );\n}\n","import { ClientBanner, DeveloperBanners } from '@ecosystem/newron-client-lib';\nimport React from 'react';\n\nimport { BetaBanner } from '../../components/beta-banner/BetaBanner';\n\nimport { PrivacyPolicyBanner } from './components/PrivacyPolicyBanner/PrivacyPolicyBanner';\n\nexport function Banners(): JSX.Element {\n return (\n <>\n <div id=\"newron-banner\" />\n <ClientBanner>\n <BetaBanner />\n <PrivacyPolicyBanner />\n <DeveloperBanners />\n </ClientBanner>\n </>\n );\n}\n","import { isSTPUser, useAuthentication } from '@ecosystem/newron-client-lib';\nimport axios from 'axios';\nimport { useEffect, useState } from 'react';\n\nimport { getConfig } from '../../../config';\n\ntype PackageCodeResponse = {\n package_code: string[];\n};\ntype UseUserPackagesReturnType = {\n packageCodes: string[];\n isLoading: boolean;\n};\n\nexport const useUserPackages = (): UseUserPackagesReturnType => {\n const [isLoading, setLoading] = useState(true);\n const { getAccessToken, user } = useAuthentication();\n const [packageCodes, setPackageCodes] = useState<string[]>([]);\n\n useEffect(() => {\n const getPackages = async () => {\n setLoading(true);\n const accessToken = await getAccessToken();\n try {\n const API_BASE_PATH = getConfig().API_PERSONA_PATH;\n const data = await axios.get<PackageCodeResponse>(`${API_BASE_PATH}/v2/package`, {\n headers: { Authorization: `Bearer ${accessToken}`, Accept: 'application/json' },\n });\n\n setPackageCodes(data.data.package_code);\n setLoading(false);\n } catch {\n setLoading(false);\n }\n };\n\n if (user?.userId && isSTPUser(user.userId)) {\n getPackages();\n }\n }, [user?.userId, getAccessToken]);\n\n return {\n packageCodes,\n isLoading,\n };\n};\n\nexport default useUserPackages;\n","import { useEffect, useState } from 'react';\n\ninterface WindowDimension {\n viewportWidth: number;\n viewportHeight: number;\n}\n\nconst getWindowDimensions = (): WindowDimension => {\n const { innerWidth: viewportWidth, innerHeight: viewportHeight } = window;\n return {\n viewportWidth,\n viewportHeight,\n };\n};\n\nexport const useWindowDimensions = (): WindowDimension => {\n const [windowDimensions, setWindowDimensions] = useState(getWindowDimensions());\n\n useEffect(() => {\n function handleResize() {\n setWindowDimensions(getWindowDimensions());\n }\n\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n return windowDimensions;\n};\n","import { ClientSidebar, useAuthentication, useClientSideNav, useFullscreen } from '@ecosystem/newron-client-lib';\nimport { useEffect, useRef, useState } from 'react';\n\nimport { useWindowDimensions } from './useWindowDimensions';\n\nconst DEFAULT_HEIGHT = '76px';\nconst NO_HEIGHT = '0';\n\nconst NAV_EXPANDED_WIDTH = '320px';\nconst NAV_COLLAPSED_WIDTH = '72px';\nconst NO_WIDTH = '0';\n\nconst DESKTOP_WIDTH = 1920;\n\ntype ReturnType = {\n showHeader: boolean;\n showSideNav: boolean;\n showSidebar: boolean;\n sidebarWidth: string;\n};\n\nexport function useContentSizing(): ReturnType {\n const { isAuthenticated } = useAuthentication();\n const sidebar = ClientSidebar.useSidebarRenderer();\n const { expanded: sideNavExpanded, setExpanded: setSideNavExpanded } = useClientSideNav();\n const { fullscreen } = useFullscreen();\n const { viewportWidth } = useWindowDimensions();\n\n const [sidebarWidth, setSidebarWidth] = useState(NO_WIDTH);\n\n // wrap it in a ref because we want to call it in useEffect\n const setNavExpandedRef = useRef(setSideNavExpanded);\n\n useEffect(() => {\n let height = NO_HEIGHT;\n if (isAuthenticated && !fullscreen) {\n height = DEFAULT_HEIGHT;\n }\n\n document.documentElement.style.setProperty('--header-height', height);\n\n return () => {\n document.documentElement.style.setProperty('--header-height', NO_HEIGHT);\n };\n }, [isAuthenticated, fullscreen]);\n\n useEffect(() => {\n let width = NO_WIDTH;\n if (isAuthenticated && !fullscreen) {\n width = sideNavExpanded ? NAV_EXPANDED_WIDTH : NAV_COLLAPSED_WIDTH;\n }\n\n document.documentElement.style.setProperty('--left-sidebar-width', width);\n\n return () => {\n document.documentElement.style.setProperty('--left-sidebar-width', NO_WIDTH);\n };\n }, [isAuthenticated, fullscreen, sideNavExpanded]);\n\n useEffect(() => {\n let width = NO_WIDTH;\n if (isAuthenticated && !fullscreen) {\n if (sidebar.expanded) {\n if (sidebar.expandedWidth === '300px' || sidebar.expandedWidth === '400px') {\n width = sidebar.expandedWidth;\n } else {\n width = '275px';\n }\n } else {\n width = sidebar.collapsedWidth ?? NO_WIDTH;\n }\n }\n setSidebarWidth(width);\n\n document.documentElement.style.setProperty('--right-sidebar-width', width);\n\n return () => {\n document.documentElement.style.setProperty('--right-sidebar-width', NO_WIDTH);\n };\n }, [isAuthenticated, fullscreen, sidebar.expanded, sidebar.expandedWidth, sidebar.collapsedWidth]);\n\n useEffect(() => {\n if (sidebar.expanded && viewportWidth < DESKTOP_WIDTH) {\n // if this was not a ref, we would have to put it into the dependencies\n setNavExpandedRef.current(false);\n }\n }, [viewportWidth, sidebar.expanded]);\n\n return {\n showHeader: isAuthenticated && !fullscreen,\n showSideNav: isAuthenticated && !fullscreen,\n showSidebar: isAuthenticated && !fullscreen,\n sidebarWidth,\n };\n}\n","import { useLocation } from 'react-router-dom';\n\nconst CIE_PREFIXE = /\\/cie/;\n\nexport const useIsConsumerPage = (): boolean => {\n const location = useLocation();\n return Boolean(location.pathname.match(CIE_PREFIXE));\n};\n","import { useAuthentication, useFeedback } from '@ecosystem/newron-client-lib';\nimport { useEffect } from 'react';\n\nimport { useIsMarket2Page } from '../../components/header/components/Impersonate/useIsMarket2Page';\nimport { useIsConsumerPage } from '../../hooks/useIsConsumerPage';\n\nexport const useQualtricsRefresh = (): void => {\n const { isAuthenticated, isAuthenticating } = useAuthentication();\n const { extendEmbeddedData } = useFeedback();\n const isMarket2Page = useIsMarket2Page();\n const isConsumerPage = useIsConsumerPage();\n\n useEffect(() => {\n if (isAuthenticating || (!isAuthenticating && !isAuthenticated)) {\n return;\n }\n extendEmbeddedData({});\n }, [isMarket2Page, isConsumerPage, extendEmbeddedData, isAuthenticating, isAuthenticated]);\n};\n","import { ClientSidebar, isSTPUser, useAuthentication, useLoadSavedView } from '@ecosystem/newron-client-lib';\nimport { feedback } from '@ecosystem/newron-design-system';\nimport React from 'react';\nimport { Navigate, Route, Routes, useLocation, useNavigate } from 'react-router-dom';\n\nimport { Header } from '../../components/header/Header';\nimport { SideDrawer } from '../../components/side-drawer/SideDrawer';\nimport { SideNavigation } from '../../components/side-nav/SideNavigation';\nimport { CLIENT_ROUTES, FILES_REPO } from '../../constants';\nimport { useUtmCampaign } from '../../hooks/useUtmCampaign';\nimport { useIsFeatureFlagEnabled } from '../../tools/useIsFeatureFlagEnabled';\nimport { Banners } from '../banners/Banners';\nimport { useUserPackages } from '../requestAccess/hooks/useUserPackages';\n\nimport { useContentSizing } from './useContentSizing';\nimport { useLoginRedirect } from './useLoginRedirect';\nimport { useQualtricsRefresh } from './useQualtricsRefresh';\n\nconst NotificationsPreferencesPage = React.lazy(() => import('../notifications'));\nconst AccountDetailsPage = React.lazy(() => import('../accountDetails'));\nconst SavedViewsPage = React.lazy(() => import('../savedViews'));\nconst RequestAccessPage = React.lazy(() => import('../requestAccess'));\nconst FilesRepositoryPage = React.lazy(() => import('../filesRepository'));\n\nfunction Main(): JSX.Element {\n const navigate = useNavigate();\n const { isAuthenticated, isAuthenticating, login, user } = useAuthentication();\n const { loginRedirect, loginEmailVerified, loginWithNewPassword, loginFromSTPCancel } = useLoginRedirect();\n const { packageCodes, isLoading: isProductLoading } = useUserPackages();\n const { isEnabled: isRequestAccessEnabled, loading: isRequestAccessLoading } = useIsFeatureFlagEnabled({\n domainName: 'platform',\n featureName: 'REQUEST_USER_ACCESS',\n });\n useQualtricsRefresh();\n useUtmCampaign();\n\n const content = useContentSizing();\n\n React.useEffect(() => {\n if (loginFromSTPCancel) {\n loginRedirect();\n }\n }, [loginFromSTPCancel, loginRedirect]);\n\n React.useEffect(() => {\n if (loginWithNewPassword) {\n loginRedirect();\n }\n }, [loginWithNewPassword, loginRedirect]);\n\n React.useEffect(() => {\n if (loginEmailVerified) {\n loginRedirect({ emailVerified: true });\n }\n }, [loginEmailVerified, loginRedirect]);\n\n React.useEffect(() => {\n const loading = isAuthenticating || isProductLoading || isRequestAccessLoading;\n const hasAccess = packageCodes.length > 0;\n if (loading || !isRequestAccessEnabled || (!isAuthenticating && !isAuthenticated) || hasAccess) {\n return;\n }\n\n if (!isSTPUser(user?.userId)) {\n return;\n }\n\n navigate(CLIENT_ROUTES.REQUEST_ACCESS);\n }, [\n isAuthenticated,\n isAuthenticating,\n user?.userId,\n isRequestAccessEnabled,\n packageCodes,\n isProductLoading,\n isRequestAccessLoading,\n navigate,\n ]);\n\n if (!isAuthenticating && !isAuthenticated) {\n login();\n return null;\n }\n\n return (\n <div data-test-id=\"newron\" id=\"newron\">\n <Banners />\n {content.showSideNav && <SideNavigation />}\n {content.showSidebar && <SideDrawer showBorder={content.sidebarWidth !== '0'} />}\n {content.showHeader && <Header />}\n <NewronContent />\n </div>\n );\n}\n\nfunction NewronContent() {\n const location = useLocation();\n const { loading: loadingSavedView } = useLoadSavedView(location.search);\n const { expanded: isSidebarExpanded, closeSidebar } = ClientSidebar.useSidebar();\n const { pathname } = window.location;\n const CLIENT_PATHS = [\n CLIENT_ROUTES.ACCOUNT_DETAILS,\n CLIENT_ROUTES.SAVED_VIEWS,\n CLIENT_ROUTES.NOTIFICATIONS_PREFERENCES,\n CLIENT_ROUTES.REQUEST_ACCESS,\n CLIENT_ROUTES.FILES_REPOSITORY,\n ];\n\n const matchedPath = CLIENT_PATHS.find(path => pathname.includes(path));\n\n React.useEffect(() => {\n if (matchedPath && isSidebarExpanded) {\n closeSidebar();\n }\n }, [isSidebarExpanded, matchedPath, closeSidebar]);\n\n if (loadingSavedView) {\n return <feedback.DotsLoader stretch height=\"100vh\" />;\n }\n\n return (\n <div data-test-id=\"newron-content\" id=\"newron-content\">\n <React.Suspense fallback={<feedback.DotsLoader stretch height=\"100vh\" />}>\n <Routes>\n <Route\n path={CLIENT_ROUTES.FILES_REPOSITORY}\n element={<Navigate to={`${CLIENT_ROUTES.FILES_REPOSITORY}/${FILES_REPO.EXPORTS}`} replace />}\n />\n <Route path={`${CLIENT_ROUTES.FILES_REPOSITORY}/${FILES_REPO.EXPORTS}`} element={<FilesRepositoryPage />} />\n <Route path={CLIENT_ROUTES.NOTIFICATIONS_PREFERENCES} element={<NotificationsPreferencesPage />} />\n <Route path={CLIENT_ROUTES.ACCOUNT_DETAILS} element={<AccountDetailsPage />} />\n <Route path={CLIENT_ROUTES.SAVED_VIEWS} element={<SavedViewsPage />} />\n <Route path={CLIENT_ROUTES.REQUEST_ACCESS} element={<RequestAccessPage />} />\n </Routes>\n </React.Suspense>\n </div>\n );\n}\n\nexport { Main };\n","import { useAnalytics, useAuthentication } from '@ecosystem/newron-client-lib';\nimport { useCallback, useEffect, useMemo } from 'react';\nimport { useNavigate } from 'react-router-dom';\n\nimport { getQueryParam } from '../../tools/getQueryParams';\n\nconst CALLBACK_URL = `${window.location.origin}/callback`;\n\nconst USERS_CAN_LOGIN_WITH_NEW_PASSWORD = 'You can now login to the application with the new password.';\nconst USER_EMAIL_WAS_VERIFIED = 'Your email was verified. You can continue using the application.';\nconst VERIFY_EMAIL_SUCCESS_MESSAGE = 'Thanks for verifying your email address.';\nexport const STP_CANCEL_ERROR_CODE = 'AADB2C90091';\n\ntype LoginParams = {\n magicLinkToken?: string;\n emailVerified?: boolean;\n promptLogin?: boolean;\n token?: string;\n};\n\ntype ReturnType = {\n loginWithNewPassword: boolean;\n loginEmailVerified: boolean;\n loginFromSTPCancel: boolean;\n loginRedirect: (params?: LoginParams) => void;\n};\n\nexport const useLoginRedirect = (): ReturnType => {\n const { login, error } = useAuthentication();\n const { track } = useAnalytics();\n const navigate = useNavigate();\n\n const success = getQueryParam('success');\n const message = getQueryParam('message');\n\n const loginFromSTPCancel = useMemo(() => error && error.message.startsWith(STP_CANCEL_ERROR_CODE), [error]);\n\n const loginWithNewPassword: boolean = useMemo(\n () => success === 'true' && message === USERS_CAN_LOGIN_WITH_NEW_PASSWORD,\n [message, success]\n );\n const loginEmailVerified: boolean = useMemo(\n () => success === 'true' && message === USER_EMAIL_WAS_VERIFIED,\n [message, success]\n );\n\n useEffect(() => {\n if (success === 'false' && !!message) {\n navigate(`/callback?error=${encodeURIComponent(message)}`);\n }\n }, [navigate, message, success]);\n\n const loginRedirect = useCallback(\n (params?: LoginParams) => {\n let trackEvent = 'Login click';\n switch (true) {\n case !!params?.magicLinkToken:\n trackEvent = 'Magic Link redirect';\n break;\n case !!params?.emailVerified:\n trackEvent = 'Email verified login redirect';\n break;\n default:\n break;\n }\n track(trackEvent);\n const options = {\n ...params,\n ...(params?.magicLinkToken && { redirectUri: `${CALLBACK_URL}?token=${params.magicLinkToken}` }),\n ...(params?.emailVerified && {\n redirectUri: `${CALLBACK_URL}?success_message=${encodeURIComponent(VERIFY_EMAIL_SUCCESS_MESSAGE)}`,\n promptLogin: true,\n }),\n };\n login({ redirectUri: options.redirectUri, promptLogin: options.promptLogin });\n },\n [login, track]\n );\n\n return useMemo(\n () => ({\n loginRedirect,\n loginWithNewPassword,\n loginEmailVerified,\n loginFromSTPCancel,\n }),\n [loginRedirect, loginWithNewPassword, loginEmailVerified, loginFromSTPCancel]\n );\n};\n","export const getQueryParam = (paramName: string): string | null => {\n const queryString = window.location.search;\n const urlParams = new URLSearchParams(queryString);\n return urlParams.get(paramName);\n};\n","import { FeatureOptions, useFeatureFlags } from '@ecosystem/newron-client-lib';\nimport { useEffect, useState } from 'react';\n\nexport function useIsFeatureFlagEnabled(flagOptions: FeatureOptions): { isEnabled: boolean; loading: boolean } {\n const { isFeatureFlagEnabled } = useFeatureFlags();\n const [isEnabled, setIsEnabled] = useState(false);\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n async function run() {\n const isEnabled = await isFeatureFlagEnabled(flagOptions);\n\n setIsEnabled(isEnabled);\n setIsLoading(false);\n }\n run();\n }, [flagOptions, isFeatureFlagEnabled]);\n\n return { isEnabled, loading: isLoading };\n}\n","import { authorisation } from '@ecosystem/newron-client-lib';\n\nexport const hasAccessToOneOf = async (mods: string[]): Promise<boolean> => {\n const modules = await authorisation.getAuthorisedModuleValues();\n if (mods.some(m => modules.includes(m))) {\n return true;\n }\n\n const products = await authorisation.getAuthorisedProductValues();\n if (mods.some(m => products.includes(m))) {\n return true;\n }\n\n return false;\n};\n","export const waitForElement = (selector: string): Promise<Element | null> => {\n return new Promise(resolve => {\n if (!selector) {\n return resolve(null);\n }\n if (document.querySelector(selector)) {\n return resolve(document.querySelector(selector));\n }\n\n const observer = new MutationObserver(() => {\n if (document.querySelector(selector)) {\n resolve(document.querySelector(selector));\n observer.disconnect();\n }\n });\n\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n });\n });\n};\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.beta-banner {\n z-index: 999;\n cursor: pointer;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/beta-banner/BetaBanner.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,YAAY;EACZ,eAAe;AACjB\",\"sourcesContent\":[\".beta-banner {\\n z-index: 999;\\n cursor: pointer;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.help-icon-panel::before {\n background-color: #fff;\n border: 1px solid #bbc0c9;\n border-right-width: 0;\n border-top-width: 0;\n box-shadow: 0 2px 2px -1px rgba(#6f7582, 0.1);\n content: '';\n display: block;\n height: 10px;\n left: calc(50% - 5px);\n position: absolute;\n top: -5.5px;\n transform: rotate(135deg);\n width: 10px;\n z-index: 121;\n}\n\n.help-icon-panel {\n top: calc(100% + 17px);\n left: 13.5px;\n transform: translateX(-50%);\n box-shadow: 0px 4px 2px 0px #0000001a;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/header/components/HelpIcon/HelpIcon.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,sBAAsB;EACtB,yBAAyB;EACzB,qBAAqB;EACrB,mBAAmB;EACnB,6CAA6C;EAC7C,WAAW;EACX,cAAc;EACd,YAAY;EACZ,qBAAqB;EACrB,kBAAkB;EAClB,WAAW;EACX,yBAAyB;EACzB,WAAW;EACX,YAAY;AACd;;AAEA;EACE,sBAAsB;EACtB,YAAY;EACZ,2BAA2B;EAC3B,qCAAqC;AACvC\",\"sourcesContent\":[\".help-icon-panel::before {\\n background-color: #fff;\\n border: 1px solid #bbc0c9;\\n border-right-width: 0;\\n border-top-width: 0;\\n box-shadow: 0 2px 2px -1px rgba(#6f7582, 0.1);\\n content: '';\\n display: block;\\n height: 10px;\\n left: calc(50% - 5px);\\n position: absolute;\\n top: -5.5px;\\n transform: rotate(135deg);\\n width: 10px;\\n z-index: 121;\\n}\\n\\n.help-icon-panel {\\n top: calc(100% + 17px);\\n left: 13.5px;\\n transform: translateX(-50%);\\n box-shadow: 0px 4px 2px 0px #0000001a;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"slide-end.jpg\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.goodbye-slide-image {\n background-image: url(${___CSS_LOADER_URL_REPLACEMENT_0___});\n background-position: center;\n background-size: cover;\n width: 100%;\n height: 300px;\n}\n\n.subheader-goodbye {\n text-overflow: initial;\n white-space: normal;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/header/components/HelpIcon/goodbye-slide/GoodbyeSlide.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,yDAAsC;EACtC,2BAA2B;EAC3B,sBAAsB;EACtB,WAAW;EACX,aAAa;AACf;;AAEA;EACE,sBAAsB;EACtB,mBAAmB;AACrB\",\"sourcesContent\":[\".goodbye-slide-image {\\n background-image: url('slide-end.jpg');\\n background-position: center;\\n background-size: cover;\\n width: 100%;\\n height: 300px;\\n}\\n\\n.subheader-goodbye {\\n text-overflow: initial;\\n white-space: normal;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.modal-container {\n position: relative;\n min-height: 100%;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/header/components/HelpIcon/guide-modal/GuideModal.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,kBAAkB;EAClB,gBAAgB;AAClB\",\"sourcesContent\":[\".modal-container {\\n position: relative;\\n min-height: 100%;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"slide-start.jpg\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.rocketimage {\n background-image: url(${___CSS_LOADER_URL_REPLACEMENT_0___});\n background-position: center;\n background-size: cover;\n width: 100%;\n height: 300px;\n position: relative;\n top: -8px;\n}\n\n.subheader {\n text-overflow: initial;\n white-space: normal;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/header/components/HelpIcon/welcome-slide/WelcomeSlide.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,yDAAwC;EACxC,2BAA2B;EAC3B,sBAAsB;EACtB,WAAW;EACX,aAAa;EACb,kBAAkB;EAClB,SAAS;AACX;;AAEA;EACE,sBAAsB;EACtB,mBAAmB;AACrB\",\"sourcesContent\":[\".rocketimage {\\n background-image: url('slide-start.jpg');\\n background-position: center;\\n background-size: cover;\\n width: 100%;\\n height: 300px;\\n position: relative;\\n top: -8px;\\n}\\n\\n.subheader {\\n text-overflow: initial;\\n white-space: normal;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.impersonate-face {\n position: absolute;\n width: 20px !important;\n height: 17px !important;\n bottom: 2px;\n left: 2px;\n}\n\n.impersonate-brows {\n position: absolute;\n width: 20px !important;\n height: 4px !important;\n left: 2px;\n top: 2px;\n}\n\n.impersonate-icon:hover .impersonate-brows {\n animation: brows-bounce 1.5s ease 0s infinite normal forwards;\n}\n\n@keyframes brows-bounce {\n 0%,\n 100% {\n transform: translateY(0);\n }\n\n 10%,\n 30%,\n 50%,\n 70% {\n transform: translateY(-2px);\n }\n\n 20%,\n 40%,\n 60% {\n transform: translateY(1px);\n }\n\n 80% {\n transform: translateY(0.6px);\n }\n\n 90% {\n transform: translateY(-1.6px);\n }\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/header/components/Impersonate/ImpersonateIcon.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,kBAAkB;EAClB,sBAAsB;EACtB,uBAAuB;EACvB,WAAW;EACX,SAAS;AACX;;AAEA;EACE,kBAAkB;EAClB,sBAAsB;EACtB,sBAAsB;EACtB,SAAS;EACT,QAAQ;AACV;;AAEA;EACE,6DAA6D;AAC/D;;AAEA;EACE;;IAEE,wBAAwB;EAC1B;;EAEA;;;;IAIE,2BAA2B;EAC7B;;EAEA;;;IAGE,0BAA0B;EAC5B;;EAEA;IACE,4BAA4B;EAC9B;;EAEA;IACE,6BAA6B;EAC/B;AACF\",\"sourcesContent\":[\".impersonate-face {\\n position: absolute;\\n width: 20px !important;\\n height: 17px !important;\\n bottom: 2px;\\n left: 2px;\\n}\\n\\n.impersonate-brows {\\n position: absolute;\\n width: 20px !important;\\n height: 4px !important;\\n left: 2px;\\n top: 2px;\\n}\\n\\n.impersonate-icon:hover .impersonate-brows {\\n animation: brows-bounce 1.5s ease 0s infinite normal forwards;\\n}\\n\\n@keyframes brows-bounce {\\n 0%,\\n 100% {\\n transform: translateY(0);\\n }\\n\\n 10%,\\n 30%,\\n 50%,\\n 70% {\\n transform: translateY(-2px);\\n }\\n\\n 20%,\\n 40%,\\n 60% {\\n transform: translateY(1px);\\n }\\n\\n 80% {\\n transform: translateY(0.6px);\\n }\\n\\n 90% {\\n transform: translateY(-1.6px);\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.notification-badge {\n top: -7px;\n left: 12px;\n}\n\n.notification-badge .badge {\n display: block;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/header/components/Notifications/NotificationIcon/NotificationIcon.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,SAAS;EACT,UAAU;AACZ;;AAEA;EACE,cAAc;AAChB\",\"sourcesContent\":[\".notification-badge {\\n top: -7px;\\n left: 12px;\\n}\\n\\n.notification-badge .badge {\\n display: block;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.notification-item:last-child {\n border: none;\n}\n\n.notification-item:hover .notification-delete {\n visibility: visible;\n}\n\n.focused-notification-item {\n background-color: white;\n transition: background-color 0.3s ease-out;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/header/components/Notifications/NotificationItem/NotificationItem.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,YAAY;AACd;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,uBAAuB;EACvB,0CAA0C;AAC5C\",\"sourcesContent\":[\".notification-item:last-child {\\n border: none;\\n}\\n\\n.notification-item:hover .notification-delete {\\n visibility: visible;\\n}\\n\\n.focused-notification-item {\\n background-color: white;\\n transition: background-color 0.3s ease-out;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.notifications-panel::before,\n.tooltip-panel::before {\n background-color: #fff;\n border: 1px solid #bbc0c9;\n border-right-width: 0;\n border-top-width: 0;\n box-shadow: 0 2px 2px -1px rgba(#6f7582, 0.1);\n content: '';\n display: block;\n height: 10px;\n left: calc(50% - 5px);\n position: absolute;\n top: -5.5px;\n transform: rotate(135deg);\n width: 10px;\n z-index: 121;\n}\n\n.notifications-panel {\n top: calc(100% + 17px);\n left: 13.5px;\n transform: translateX(-50%);\n box-shadow: 0px 4px 2px 0px #0000001a;\n}\n\n.notification-panel-body {\n max-height: calc(100vh - 120px);\n overflow-y: auto;\n border-bottom-left-radius: 8px;\n border-bottom-right-radius: 8px;\n}\n\n.notifications-actions {\n z-index: 122;\n}\n\n.notifications-actions .button {\n margin: 0;\n}\n\n.tooltip-panel {\n top: 45px;\n width: 270px;\n box-shadow: 0px 4px 2px 0px #0000001a;\n left: calc(100% - 260px);\n}\n\n.tooltip-panel::before {\n left: calc(100% - 42px);\n}\n\n.more-button > button {\n padding: 0px 4px;\n height: 32px;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/header/components/Notifications/NotificationsPanel/NotificationsPanel.css\"],\"names\":[],\"mappings\":\"AAAA;;EAEE,sBAAsB;EACtB,yBAAyB;EACzB,qBAAqB;EACrB,mBAAmB;EACnB,6CAA6C;EAC7C,WAAW;EACX,cAAc;EACd,YAAY;EACZ,qBAAqB;EACrB,kBAAkB;EAClB,WAAW;EACX,yBAAyB;EACzB,WAAW;EACX,YAAY;AACd;;AAEA;EACE,sBAAsB;EACtB,YAAY;EACZ,2BAA2B;EAC3B,qCAAqC;AACvC;;AAEA;EACE,+BAA+B;EAC/B,gBAAgB;EAChB,8BAA8B;EAC9B,+BAA+B;AACjC;;AAEA;EACE,YAAY;AACd;;AAEA;EACE,SAAS;AACX;;AAEA;EACE,SAAS;EACT,YAAY;EACZ,qCAAqC;EACrC,wBAAwB;AAC1B;;AAEA;EACE,uBAAuB;AACzB;;AAEA;EACE,gBAAgB;EAChB,YAAY;AACd\",\"sourcesContent\":[\".notifications-panel::before,\\n.tooltip-panel::before {\\n background-color: #fff;\\n border: 1px solid #bbc0c9;\\n border-right-width: 0;\\n border-top-width: 0;\\n box-shadow: 0 2px 2px -1px rgba(#6f7582, 0.1);\\n content: '';\\n display: block;\\n height: 10px;\\n left: calc(50% - 5px);\\n position: absolute;\\n top: -5.5px;\\n transform: rotate(135deg);\\n width: 10px;\\n z-index: 121;\\n}\\n\\n.notifications-panel {\\n top: calc(100% + 17px);\\n left: 13.5px;\\n transform: translateX(-50%);\\n box-shadow: 0px 4px 2px 0px #0000001a;\\n}\\n\\n.notification-panel-body {\\n max-height: calc(100vh - 120px);\\n overflow-y: auto;\\n border-bottom-left-radius: 8px;\\n border-bottom-right-radius: 8px;\\n}\\n\\n.notifications-actions {\\n z-index: 122;\\n}\\n\\n.notifications-actions .button {\\n margin: 0;\\n}\\n\\n.tooltip-panel {\\n top: 45px;\\n width: 270px;\\n box-shadow: 0px 4px 2px 0px #0000001a;\\n left: calc(100% - 260px);\\n}\\n\\n.tooltip-panel::before {\\n left: calc(100% - 42px);\\n}\\n\\n.more-button > button {\\n padding: 0px 4px;\\n height: 32px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.UserBar__Toggle > span {\n margin-left: 8px;\n vertical-align: middle;\n display: inline-block;\n position: unset;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/header/components/UserBar/UserBar.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,gBAAgB;EAChB,sBAAsB;EACtB,qBAAqB;EACrB,eAAe;AACjB\",\"sourcesContent\":[\".UserBar__Toggle > span {\\n margin-left: 8px;\\n vertical-align: middle;\\n display: inline-block;\\n position: unset;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.UserPanel__Wrapper::before {\n background-color: #fff;\n border: 1px solid #bbc0c9;\n border-right-width: 0;\n border-top-width: 0;\n box-shadow: 0 2px 2px -1px rgba(#6f7582, 0.1);\n content: '';\n display: block;\n height: 10px;\n left: calc(50% - 5px);\n position: absolute;\n top: 5px;\n transform: rotate(135deg);\n width: 10px;\n z-index: 121;\n}\n.UserPanel__Menu {\n top: calc(100% + 10px);\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/header/components/UserBar/UserPanel.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,sBAAsB;EACtB,yBAAyB;EACzB,qBAAqB;EACrB,mBAAmB;EACnB,6CAA6C;EAC7C,WAAW;EACX,cAAc;EACd,YAAY;EACZ,qBAAqB;EACrB,kBAAkB;EAClB,QAAQ;EACR,yBAAyB;EACzB,WAAW;EACX,YAAY;AACd;AACA;EACE,sBAAsB;AACxB\",\"sourcesContent\":[\".UserPanel__Wrapper::before {\\n background-color: #fff;\\n border: 1px solid #bbc0c9;\\n border-right-width: 0;\\n border-top-width: 0;\\n box-shadow: 0 2px 2px -1px rgba(#6f7582, 0.1);\\n content: '';\\n display: block;\\n height: 10px;\\n left: calc(50% - 5px);\\n position: absolute;\\n top: 5px;\\n transform: rotate(135deg);\\n width: 10px;\\n z-index: 121;\\n}\\n.UserPanel__Menu {\\n top: calc(100% + 10px);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.content--max-height {\n max-height: 700px;\n}\n\n.input-email {\n box-shadow: none !important;\n min-width: 282px;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/header/components/UserInvite/components/index.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,iBAAiB;AACnB;;AAEA;EACE,2BAA2B;EAC3B,gBAAgB;AAClB\",\"sourcesContent\":[\".content--max-height {\\n max-height: 700px;\\n}\\n\\n.input-email {\\n box-shadow: none !important;\\n min-width: 282px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.drawer {\n transition: opacity 0.2s ease-in-out 0.25s;\n}\n.drawer--collapsed {\n opacity: 0;\n}\n.drawer--expanded {\n opacity: 1;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/side-drawer/SideDrawer.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,0CAA0C;AAC5C;AACA;EACE,UAAU;AACZ;AACA;EACE,UAAU;AACZ\",\"sourcesContent\":[\".drawer {\\n transition: opacity 0.2s ease-in-out 0.25s;\\n}\\n.drawer--collapsed {\\n opacity: 0;\\n}\\n.drawer--expanded {\\n opacity: 1;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.left-nav {\n display: grid;\n grid-template-columns: 1fr;\n grid-template-rows: auto 1fr auto;\n overflow: visible;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n}\n.left-nav-header {\n height: var(--header-height);\n overflow: hidden;\n}\n.left-nav-list {\n overflow-x: visible;\n overflow-y: auto;\n}\n.left-nav-toggle {\n transform: rotate(0);\n}\n.left-nav-toggle--expanded {\n transform: rotate(-180deg);\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/side-nav/SideNavigation.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,aAAa;EACb,0BAA0B;EAC1B,iCAAiC;EACjC,iBAAiB;EACjB,kBAAkB;EAClB,MAAM;EACN,QAAQ;EACR,SAAS;EACT,OAAO;AACT;AACA;EACE,4BAA4B;EAC5B,gBAAgB;AAClB;AACA;EACE,mBAAmB;EACnB,gBAAgB;AAClB;AACA;EACE,oBAAoB;AACtB;AACA;EACE,0BAA0B;AAC5B\",\"sourcesContent\":[\".left-nav {\\n display: grid;\\n grid-template-columns: 1fr;\\n grid-template-rows: auto 1fr auto;\\n overflow: visible;\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n}\\n.left-nav-header {\\n height: var(--header-height);\\n overflow: hidden;\\n}\\n.left-nav-list {\\n overflow-x: visible;\\n overflow-y: auto;\\n}\\n.left-nav-toggle {\\n transform: rotate(0);\\n}\\n.left-nav-toggle--expanded {\\n transform: rotate(-180deg);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.nav-item--active {\n box-shadow: inset 3px 0 0 var(--color-brand);\n transition: color 0.25s ease, box-shadow 0.25s ease;\n}\n\n.nav-item-button--up {\n transform: rotate(0deg);\n transition: transform 0.25s ease;\n}\n\n.nav-item-button--down {\n transform: rotate(180deg);\n transition: transform 0.25s ease;\n}\n\n.nav-item-border--top:not(.nav-item:first-of-type),\n.nav-item-border--bottom + .nav-item {\n border-top-width: 1px;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/side-nav/parts/NavigationItem.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,4CAA4C;EAC5C,mDAAmD;AACrD;;AAEA;EACE,uBAAuB;EACvB,gCAAgC;AAClC;;AAEA;EACE,yBAAyB;EACzB,gCAAgC;AAClC;;AAEA;;EAEE,qBAAqB;AACvB\",\"sourcesContent\":[\".nav-item--active {\\n box-shadow: inset 3px 0 0 var(--color-brand);\\n transition: color 0.25s ease, box-shadow 0.25s ease;\\n}\\n\\n.nav-item-button--up {\\n transform: rotate(0deg);\\n transition: transform 0.25s ease;\\n}\\n\\n.nav-item-button--down {\\n transform: rotate(180deg);\\n transition: transform 0.25s ease;\\n}\\n\\n.nav-item-border--top:not(.nav-item:first-of-type),\\n.nav-item-border--bottom + .nav-item {\\n border-top-width: 1px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.nav-tooltip-wrapper {\n position: fixed;\n z-index: 1;\n left: 72px;\n}\n\n.nav-tooltip {\n position: relative;\n min-height: 40px;\n min-width: 146px;\n}\n\n.nav-tooltip:before {\n position: absolute;\n content: '';\n height: 0;\n top: 10px;\n left: -9px;\n width: 0;\n border-bottom: 8px solid transparent;\n border-top: 8px solid transparent;\n border-right: 8px solid #bbc0c9;\n}\n\n.tooltip-arrow {\n position: absolute;\n content: '';\n height: 0;\n top: 10px;\n left: -8px;\n width: 0;\n border-bottom: 8px solid transparent;\n border-top: 8px solid transparent;\n border-right: 8px solid white;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/side-nav/parts/Tooltip.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,eAAe;EACf,UAAU;EACV,UAAU;AACZ;;AAEA;EACE,kBAAkB;EAClB,gBAAgB;EAChB,gBAAgB;AAClB;;AAEA;EACE,kBAAkB;EAClB,WAAW;EACX,SAAS;EACT,SAAS;EACT,UAAU;EACV,QAAQ;EACR,oCAAoC;EACpC,iCAAiC;EACjC,+BAA+B;AACjC;;AAEA;EACE,kBAAkB;EAClB,WAAW;EACX,SAAS;EACT,SAAS;EACT,UAAU;EACV,QAAQ;EACR,oCAAoC;EACpC,iCAAiC;EACjC,6BAA6B;AAC/B\",\"sourcesContent\":[\".nav-tooltip-wrapper {\\n position: fixed;\\n z-index: 1;\\n left: 72px;\\n}\\n\\n.nav-tooltip {\\n position: relative;\\n min-height: 40px;\\n min-width: 146px;\\n}\\n\\n.nav-tooltip:before {\\n position: absolute;\\n content: '';\\n height: 0;\\n top: 10px;\\n left: -9px;\\n width: 0;\\n border-bottom: 8px solid transparent;\\n border-top: 8px solid transparent;\\n border-right: 8px solid #bbc0c9;\\n}\\n\\n.tooltip-arrow {\\n position: absolute;\\n content: '';\\n height: 0;\\n top: 10px;\\n left: -8px;\\n width: 0;\\n border-bottom: 8px solid transparent;\\n border-top: 8px solid transparent;\\n border-right: 8px solid white;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n"],"names":["CONFIG_KEY","getConfig","config","window","SEGMENT_ID","AUTH0_DOMAIN","API_NOTIFICATION_PATH","API_PREFERENCE_PATH","API_PERSONA_PATH","API_USER_API_PATH","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","GoodbyeSlide","React","className","ActionType","setIsPanelOpen","isPanelOpen","type","SetIsPanelOpen","payload","setIsGuideModalOpen","isShowModal","SetIsGuideModalOpen","initialState","isGuideModalOpen","HelpPanelContext","state","dispatch","WelcomeSlide","GuideModal","_useContext","useContext","_useState","useState","_useState2","_slicedToArray","modalPage","setModalPage","Modal","overlays","Carousel","containers","Icon","elements","track","useAnalytics","registrations","OnboardingGuideRegister","getInstance","getAll","slides","sort","a","b","order","reduce","arr","_ref","component","Array","isArray","concat","_toConsumableArray","push","useEffect","guide","page","isOpen","size","onClick","color","icons","Close","text","testId","map","_ref2","key","role","ChevronRight","onChangeSlide","slideIndex","reducer","arguments","length","undefined","action","_objectSpread","HelpIcon","_useReducer","useReducer","_useReducer2","_useUserVoiceToken","getAccessToken","useAuthentication","forumId","setForumId","_useState3","_useState4","token","setToken","getUserVoiceForumBasedOnAccess","useCallback","_asyncToGenerator","regeneratorRuntime","mark","_callee","hasMarketAccess","hasRetailAccess","wrap","_context","prev","next","hasAccessToOneOf","sent","USER_VOICE","INDUSTRY_FORUM","RETAIL_FORUM","abrupt","stop","fetchForumId","_callee2","id","_context2","apply","generateToken","_callee3","userAccessToken","response","_context3","axios","get","headers","Authorization","data","t0","logger","error","message","useUserVoiceToken","contextValue","useMemo","iconRef","handleOutsideClick","event","current","contains","target","isUserVoiceEnabled","useIsFeatureFlagEnabled","domainName","featureName","isEnabled","document","addEventListener","removeEventListener","Provider","value","ref","linkName","HelpOutline","open","URL","NewronHelp","href","rel","Manual","Video","TextInput","inputs","RadioButtons","clients","selectedClient","onClientSelect","clientName","search","setSearch","clientsFiltered","localeCompare","filter","_value$clientName","toLowerCase","indexOf","client","label","clientId","toString","placeholder","onChange","find","ImpersonateIcon","width","height","viewBox","stroke","xmlns","fillRule","clipRule","d","Checkbox","CheckboxState","userGroups","selectedUserGroups","toggleAll","onUserGroupSelect","CHECKED","UNCHECKED","INDETERMINATE","userGroupName","userGroup","userGroupId","sg","PERSONA_API_URL","storageKey","INTERNAL_PREFIXES","params","URLSearchParams","impersonationClientsQueryParams","v2","product_code","Button","actions","DotsLoader","feedback","Impersonate","user","isInternalUser","isInternal","_useImpersonate","isLoading","setLoading","setClients","getClients","accessToken","transformed","forEach","product","append","t1","t2","t3","t4","call","t5","Accept","t6","t7","i","client_id","client_name","internal","userGroupsUrl","user_groups_url","getUserGroups","userGroupUrl","item","user_group_id","user_group_name","_x","getImpersonateStorage","storage","JSON","parse","localStorage","getItem","clientUserGroupIds","setImpersonateStorage","stringify","client_user_group_ids","setItem","deleteStaleLocalStorage","Object","keys","some","prefix","startsWith","removeItem","useImpersonate","_useImpersonate$clien","isModalOpen","setModalOpen","setSelectedClient","_useState5","_useState6","setUserGroups","_useState7","_useState8","setSelectedUserGroups","rehydrateState","_getImpersonateStorag","groups","selectedUserGroupsFromLocalStorage","c","fetchUserGroups","u","includes","setDefaultUserGroups","g","_ref3","userGroupsResponse","_x2","Header","Body","ClientList","UserGroupsList","group","Footer","align","mode","disabled","userGroupIds","location","reload","M2_PREFIXES","useIsMarket2Page","useLocation","Boolean","pathname","match","setIsDeleteModalOpen","SetIsDeleteModalOpen","setIsErrorOnDelete","isErrorOnDelete","SetIsErrorOnDelete","updateNotificationRead","UpdateNotificationRead","setFocusedNotification","SetFocusedNotification","setNotificationCTAError","SetNotificationCTAError","isDeleteModalOpen","notifications","unreadNotificationsCount","focusedNotification","notificationCTAError","NotificationPanelContext","NOTIFICATION_API","useUnreadNotificationsCount","fetchCount","count","SetUnreadNotificationsCount","useUserNotifications","_React$useState","_React$useState2","setError","fetchNotifications","userToken","SetNotifications","updateNotificationAsRead","patch","elementCategory","elementName","deleteNotificationById","Promise","allSettled","AlertItem","handleAlertClick","setTimeout","pushMessage","NotificationPanelClearAllModal","_useDeleteUserNotific","setIsLoading","deleteNotifications","finish","useDeleteUserNotifications","Loader","CollectionDownloadNotification","timestamp","date","day","month","year","hours","minutes","period","isSuccess","fileStatus","collectionName","expiresAt","timeStamp","Date","getDate","getMonth","getFullYear","getHours","getMinutes","padStart","Error","CollectionOwnershipTransferNotification","title","senderName","DataUpdatesNotification","children","MarketUpdatesNotification","timeFrames","from","Set","numberOfMarkets","marketsWithTimeFrame","timeFrame","markets","flatMap","handleMarketLinkClick","market","link","targetUrl","productName","itemGroup","itemGroupCode","countryCode","country","RetailUpdatesNotification","_message$data$","level","productType","getLevel","handleRetailLinkClick","retailer","productGroup","retailPath","retailMarket","SharedCollectionNotification","SharedEntityNotification","entityName","SharedFilterNotification","_message$data","_message$data2","_message$data3","_message$data4","hasMarket","name","NotificationType","getTargetUrl","filterData","isMarket2Page","_window$location","origin","NotificationItem","navigate","onDelete","context","CollectionsDownload","CollectionsDownloadSuccess","CollectionsDownloadFailure","getNotificationType","useNavigate","_defineProperty","SharedFilter","getTitle","cta","handleCTAClick","_item$message$data","filterId","namespace","getDomainName","viewFilterFunction","ViewNotificationsRegister","getViewFilterFunction","viewFilterData","ContentComponent","MarketUpdates","RetailUpdates","_item$message$data2","exportDownloadId","isExpired","_yield$getAccessTags","access","COLLECTIONS_API","encodedExportDownloadId","file","getTime","now","getAccessTags","elementType","authentication","encodeURIComponent","responseType","content","filename","downloadFile","_item$message$data3","collectionPath","_yield$getAccessTags2","SharedCollection","_item$message$data4","collectionId","accessLevel","_yield$getAccessTags3","_accessLevel","firstLetter","rest","_toArray","slice","rights","toUpperCase","join","SharedEntity","entityTypeName","_callee4","_item$message$data5","entityPath","entityId","entityType","_yield$getAccessTags4","_context4","CollectionOwnershipTransfer","_callee5","_item$message$data6","_yield$getAccessTags5","_context5","isFocused","setIsFocused","timerFocusOn","timerFocusOff","clearTimeout","handleNotificationClick","_state$notifications$","is_read","handleDeleteNotificationClick","_ref4","stopPropagation","element","querySelector","scrollIntoView","behavior","block","inline","tabIndex","duration","NotificationsPanelContent","hasError","Alert","feedbackV2","_useUserNotifications","notification","NotificationsPanel","isTooltipOpened","setIsTooltipOpened","Toast","panelElement","useRef","useOnOutsideClick","addAlert","useAlerts","newAlert","setNewAlert","isMounted","setIsMounted","connectToSocket","jwtToken","socket","oldData","connect","timeout","path","auth","on","info","alert","notificationType","notificationId","err","off","useNotificationUpdates","clearAllDisabled","contentPadding","MoreHoriz","NotificationIcon","Badge","variant","NotificationOutline","UserPanelItem","props","borderTop","icon","UserPanel","logout","userIdentifier","showSavedViews","setIsOpen","showFilesRepository","onClickNavigationItem","cb","trackLabel","Storage","CLIENT_ROUTES","FILES_REPOSITORY","ViewSave","SAVED_VIEWS","PersonOutline","ACCOUNT_DETAILS","NOTIFICATIONS_PREFERENCES","Lab","Logout","UserBar","userBar","ChevronUp","ChevronDown","_extends","FormControl","Chips","EMAIL_REGEX","InviteUsersInput","onClose","sendInvites","email","setEmail","emails","setEmails","isValid","setIsValid","acc","valid","handler","_containers$current","canSubmit","inviteUsersBottomTextClass","showContext","trim","handleOnChange","e","currentTarget","handleRemoveEmail","valueToRemove","addEmail","isEmailValid","test","handleOnKeyDown","onFocus","isInline","List","removeEmail","Chip","onRemove","renderChips","onKeyDown","emailsToInvite","_ref5","Step","InviteUserModal","invitees","clearInvitees","loading","EMAILS","step","setStep","handleOnclose","handleAddMoreInvites","INVITES","InvitationStatusList","moreInvites","USERS_API_URL","InvitationStatus","Table","lists","GenericCell","getInviteeStatusColor","status","NON_WHITELISTED","FAILED","SEND","getInviteeStatusOrder","sortedInvitees","f","s","nonWhitelistedDomains","buttonText","stickyHeader","ColumnHeader","Row","Cell","getInviteeStatusText","renderTableData","showModal","setShowModal","_useUserInvites","showInviteUsers","details","setDetails","setInvitees","_useAuthentication","getUserInviteDetails","inviteClientUsers","post","invitations","show","useUserInvites","extendEmbeddedData","useFeedback","companyName","userCountry","PersonAddOutline","setHasMarketAccess","_React$useState3","_React$useState4","setHasRetailAccess","_React$useState5","_React$useState6","hasFilesRepositoryAccess","setHasFilesRepositoryAccess","AlertsProvider","isFileRepositoryEnabled","checkUserAccess","filesRepositoryAccess","UserInvite","SideDrawer","showBorder","ClientSidebar","sidebarContentId","NavContext","useNavContext","CIE_PRODUCT","NEWRON_RETAIL_PRODUCT","CIE_PRODUCT_PATHNAME","NEWRON_RETAIL_PATHNAME","NEWRON_FORECASTING_PATHNAME","FORECASTING_PRODUCT","DISTRIBUTOR_PANEL_PATHNAMES","getAvailableProducts","routes","availableProducts","_iterator","_step","route","_createForOfIteratorHelper","n","done","getDefaultUrl","availableProductsWithoutCommonRoutes","showRetailUrl","showDPUrl","el","resolve","url","isExternal","hasOnlyRetailAndCIEAccess","every","hasOnlyRetailInsightsAccess","hasOnlyRetailAndForecastingAccess","hasOnlyRetailCIEAndForecastingAccess","hasOnlyDistributorPanelAccess","hasOnlyCIEAccess","getIsExternal","routeName","r","isExternalUrlFn","_x3","_x4","products","getQueryParamsForUrl","requestedParams","currentParams","requested","param","has","set","RestrictedIcon","_ref$onWhite","onWhite","Tooltip","parentElement","_useNavContext","sideBarState","currentSlug","RestrictedContent","restrictedTooltipContent","subRoutes","hideFromNav","parentRect","getBoundingClientRect","top","left","style","subRoute","SubRouteLink","slug","setState","cachedRoute","cachedRouteValue","handleClick","getUrl","queryParams","active","css","NavigationSubLink","elRef","setActive","hovering","setHovering","btnCss","onMouseEnter","onMouseLeave","TRANSITION_TIMEOUT","ResizablePanel","_useMeasure","useMeasure","_useMeasure2","motion","div","overflow","initial","animate","exit","transition","NavigationItem","expanded","setExpanded","_React$useState7","_React$useState8","itemsContainerRef","isAvailable","hasChildren","showChildren","buttonWrapperCss","onBlur","requestAnimationFrame","activeElement","whiteSpace","graphic","AnimatePresence","child","SideNavigation","setCurrentSlug","isDefaultUrlSet","setIsDefaultUrlSet","_useClientSideNav","useClientSideNav","RouteManager","getNavRoutes","_NavRoutesRegister$ge","NavRoutesRegister","register","currentRoute","findMatchingRoute","Logo","mini","IconButton","ExpandPanel","useUtmCampaign","isCampaignsDisabled","setIsCampaignsDisabled","isAuthenticated","isAuthenticating","utmCampaign","getQueryParam","openCampaignInProgress","disableCookie","cookie","split","row","openCampaign","elementExists","waitForElement","click","setButtonContainerZIndex","buttonContainer","zIndex","isNotAuthenticated","showCampaign","GFK_NEWRON_FEATURE_FLAG","BetaBanner","isBetaFeatureFlagEnabled","setIsBetaFeatureFlagEnabled","flag","_findAll","preferenceType","API_BASE_PATH","fetch","method","json","_create","body","_update","PreferenceAPIService","findAll","create","update","PageVersionPreferenceType","PAGE_VERSIONS","PrivacyPolicy","POLICY_DATE","PAGE_VERSION_PREFERENCE_TYPE","DEFAULT_PRODUCT","findPreference","preferences","result","preference","Banner","banner","PrivacyPolicyBanner","_usePageVersion","pageKey","isBannerVisible","setIsBannerVisible","onCloseClick","then","CURRENT_VERSION","_data2","usePageVersion","fixed","isVisible","InfoOutline","Information","ButtonGroup","Banners","ClientBanner","DeveloperBanners","useUserPackages","packageCodes","setPackageCodes","getPackages","package_code","userId","isSTPUser","getWindowDimensions","_window","viewportWidth","innerWidth","viewportHeight","innerHeight","useWindowDimensions","windowDimensions","setWindowDimensions","handleResize","DEFAULT_HEIGHT","NO_HEIGHT","NAV_EXPANDED_WIDTH","NAV_COLLAPSED_WIDTH","NO_WIDTH","DESKTOP_WIDTH","CIE_PREFIXE","useQualtricsRefresh","isConsumerPage","NotificationsPreferencesPage","AccountDetailsPage","SavedViewsPage","RequestAccessPage","FilesRepositoryPage","Main","login","_useLoginRedirect","useLoginRedirect","loginRedirect","loginEmailVerified","loginWithNewPassword","loginFromSTPCancel","_useUserPackages","isProductLoading","_useIsFeatureFlagEnab","isRequestAccessEnabled","isRequestAccessLoading","sidebar","useSidebarRenderer","sideNavExpanded","setSideNavExpanded","fullscreen","useFullscreen","sidebarWidth","setSidebarWidth","setNavExpandedRef","documentElement","setProperty","_sidebar$collapsedWid","expandedWidth","collapsedWidth","showHeader","showSideNav","showSidebar","useContentSizing","emailVerified","hasAccess","REQUEST_ACCESS","NewronContent","loadingSavedView","useLoadSavedView","_ClientSidebar$useSid","useSidebar","isSidebarExpanded","closeSidebar","matchedPath","stretch","fallback","Routes","Route","Navigate","to","FILES_REPO","EXPORTS","replace","CALLBACK_URL","success","trackEvent","magicLinkToken","redirectUri","promptLogin","paramName","queryString","flagOptions","isFeatureFlagEnabled","useFeatureFlags","setIsEnabled","_run","run","mods","modules","authorisation","getAuthorisedModuleValues","m","getAuthorisedProductValues","selector","observer","MutationObserver","disconnect","observe","childList","subtree","___CSS_LOADER_EXPORT___","module","___CSS_LOADER_URL_IMPORT_0___","___CSS_LOADER_URL_REPLACEMENT_0___"],"sourceRoot":""}