{"version":3,"file":"forgot-password-new.dd0105a8dc2c62996978.bundle.js","mappings":"uKAOaA,EAAkB,SAC3BC,EACAC,IAEAC,EAAAA,EAAAA,YAAU,WACN,IAAMC,EAAqB,SAACC,GACxB,IAAMC,EAASD,EAAMC,OACjBL,EAAIM,SAAWD,IAAWL,EAAIM,QAAQC,SAASF,IAC/CJ,EAAQG,EAEhB,EAKA,OAJAI,OAAOC,YAAW,WACdC,SAASC,oBAAoB,QAASR,GACtCO,SAASE,iBAAiB,QAAST,EACvC,GAAG,GACI,WACHO,SAASC,oBAAoB,QAASR,EAC1C,CACJ,GAAG,CAACH,EAAKC,GACb,C,uECxBaY,EAAc,SAAKC,GAC5B,IAAMd,GAAMe,EAAAA,EAAAA,UAIZ,OAHAb,EAAAA,EAAAA,YAAU,WACNF,EAAIM,QAAUQ,CAClB,IACOd,EAAIM,OACf,C,ohCCHO,IAAMU,EAA6D,WACtE,IAAwCC,EAAAA,EAAAA,EAAAA,SAAe,OAAhDC,EAAiCD,EAAAA,GAAnBE,EAAmBF,EAAAA,GACUA,EAAAA,EAAAA,EAAAA,WAAc,GAAzDG,EAA2CH,EAAAA,GAAxBI,EAAwBJ,EAAAA,GACdA,EAAAA,EAAAA,EAAAA,UAAe,MAA5CK,EAA6BL,EAAAA,GAAjBM,EAAiBN,EAAAA,GAE9BO,EAAW,WAGb,QAFkBN,GAAgB,IAAIO,OAAO,qBAAqBC,KAAKR,IAOvEG,EAAqB,OACd,IALHA,EAAqB,uCACd,EAKf,EAgBA,OACI,gBAACM,EAAAA,EAAoBA,KACjB,gBAACC,EAAAA,GAAiBA,CAACC,OAAQ,QAASC,QAAS,kBACzC,gBAACC,EAAAA,GAAOA,KAAG,qFACX,gBAACC,EAAAA,GAAIA,CAACC,SAlB2B,SAACC,GAK1C,OAJAX,GAAc,KAEIC,MAGdU,EAAEC,iBACFZ,GAAc,IACP,EAIf,EAM0Ca,OAAQ,QAClC,gBAACC,EAAAA,GAAKA,CAACC,MAAO,gBAAiBC,MAAOnB,EAAmBoB,GAAI,gBACzD,gBAACC,EAAAA,GAAKA,CACFC,KAAM,OACNC,eAAc,uCACdC,UAAWxB,EACXN,MAAOI,EACP2B,KAAM,eACNL,GAAI,eACJM,SAAU,SAACZ,G,OAAMf,EAAgBe,EAAE7B,OAAOS,M,EAC1CiC,OAAQvB,KAGhB,gBAACwB,EAAAA,GAAYA,CACTV,MAAO,uBACPI,KAAM,SACNO,OAAQ,iCACRC,QAAS5B,MAMjC,GC3DI6B,EAAAA,EAAAA,IAA2B,CACvBX,GAAI,4BACJY,UAAWpC,EACXqC,UAAW3C,SAAS4C,eAAe,8B,42FCA3C,IAAMC,EAAoBC,EAAAA,GAAOC,IAAG,KAQ9BC,EAAkBF,EAAAA,GAAOC,IAAG,KAO5BE,EAAUH,EAAAA,GAAOI,GAAE,IACRC,EAAAA,GAAUC,SAUrBC,EAAyD,Y,IAAGjC,EAAAA,EAAAA,QAASkC,EAAAA,EAAAA,MACvE,OACI,gBAACN,EAAAA,KACIM,GAAgB,gBAACC,MAAAA,CAAIC,I,2CAAoBC,IAAK,sBAAuBC,MAAO,UAC7E,gBAACT,EAAAA,KAAS7B,GAGtB,EAEauC,EAAWb,EAAAA,GAAOc,EAAC,IACfT,EAAAA,GAAUU,QAKrBC,GAAoBhB,EAAAA,EAAAA,IAAOa,EAAPb,CAAOa,KASpBtC,EAAUyB,EAAAA,GAAOiB,EAAC,IACZC,EAAAA,GAAYC,OAEb,SAACC,G,IAAwBA,E,OAAe,QAAfA,EAAAA,EAAMC,iBAAND,IAAAA,EAAAA,EAAmB,QAAO,GACpDf,EAAAA,GAAUU,QAIrBO,EAAoBtB,EAAAA,GAAOC,IAAG,KAU9BsB,EAAqBvB,EAAAA,GAAOwB,OAAM,KAGzB,SAACJ,G,OAAoCA,EAAMK,SAAW,GAAM,C,IAC7D,SAACL,G,OAAoCA,EAAMK,SAAW,UAAY,S,IA6BnEjC,EAAqE,Y,IAC9EC,EAAAA,EAAAA,OACAX,EAAAA,EAAAA,MACAI,EAAAA,EAAAA,KACAQ,EAAAA,EAAAA,QACAgC,EAAAA,EAAAA,QAEA,OACI,gBAACH,EAAAA,CAAmBpC,eAAcM,EAAQgC,SAAU/B,EAASR,KAAMA,EAAMwC,QAASA,GAC9E,gBAACJ,EAAAA,KACIxC,EACAY,GAAW,gBAACiC,EAAAA,GAAcA,OAI3C,EAEanD,EAAOwB,EAAAA,GAAO4B,KAAI,KAOlBC,EAAe7B,EAAAA,GAAOiB,EAAC,IACvBa,EAAAA,GAAMC,QAAQC,IACV3B,EAAAA,GAAU4B,OACT,SAACb,G,IAAwBA,E,OAAe,QAAfA,EAAAA,EAAMC,iBAAND,IAAAA,EAAAA,EAAmB,MAAK,GAChDF,EAAAA,GAAYC,OAGzBe,EAAelC,EAAAA,GAAOC,IAAG,KAKzBkC,EAAanC,EAAAA,GAAOlB,MAAK,IACduB,EAAAA,GAAU4B,OAMrBG,GAAapC,EAAAA,EAAAA,IAAO6B,EAAP7B,CAAO6B,KAeb5C,EAAQe,EAAAA,GAAOqC,MAAK,KAEb,SAACjB,G,OAAuBA,EAAMhC,QAAU0C,EAAAA,GAAMC,QAAQC,IAAM,yB,GAG/D3B,EAAAA,GAAU4B,OAMH,SAACb,G,OAAuBA,EAAMhC,QAAU0C,EAAAA,GAAMC,QAAQC,IAAMF,EAAAA,GAAMQ,MAAMC,S,IAKnF1D,EAAuD,Y,IAAGC,EAAAA,EAAAA,MAAO0D,EAAAA,EAAAA,SAAUzD,EAAAA,EAAAA,MAAOC,EAAAA,EAAAA,GAC3F,OACI,gBAACkD,EAAAA,KACG,gBAACC,EAAAA,CAAWM,QAASzD,GAAKF,GACzB0D,EACAzD,GAAS,gBAACqD,EAAAA,KAAYrD,GAGnC,EAQaX,EAAwG,Y,IACjHE,EAAAA,EAAAA,QACAoE,EAAAA,EAAAA,YACArE,EAAAA,EAAAA,OACAmE,EAAAA,EAAAA,SAEA,OACI,gBAACzC,EAAAA,KACG,gBAACQ,EAAAA,CAAOjC,QAASA,EAASkC,MAAOkC,IAChCF,EACW,UAAXnE,GAAsB,gBAACwC,EAAAA,CAAS8B,KAAK,iBAAgB,kBAC1C,gBAAXtE,GACG,gBAAC2C,EAAAA,CAAkBU,QAAS,W,OAAM1E,OAAO4F,QAAQC,M,GAAQ,uBAIzE,C,8hCC9MO,IAAM1E,EAAqF,Y,IAAGqE,EAAAA,EAAAA,SACnE/E,EAAAA,EAAAA,EAAAA,UAAe,MAAtCiC,EAAuBjC,EAAAA,GAAdqF,EAAcrF,EAAAA,GACEA,EAAAA,EAAAA,EAAAA,WAAc,GAAvCsF,EAAyBtF,EAAAA,GAAfuF,EAAevF,EAAAA,GAmChC,OAjCAA,EAAAA,WAAgB,WACZ,IAAIwF,GAAS,EA2Bb,OAzBAC,MAAM,sEACDC,MAAK,SAACC,GACH,IAAKA,EAASC,GACV,MAAM,IAAIC,MAAMF,EAASG,YAE7B,OAAOH,EAASI,MACpB,IACCL,MAAK,SAACM,GACER,IACDD,EAAYS,GACZC,aAAaC,QAAQ,gBAAiBC,KAAKC,UAAUJ,IAE7D,IACCK,OAAM,WACEb,IACDD,EAAY,IACZU,aAAaC,QAAQ,gBAAiBC,KAAKC,UAAU,KAE7D,IACCE,SAAQ,WACAd,GACDH,GAAW,EAEnB,IAEG,WACHG,GAAS,CACb,CACJ,GAAG,IAGC,gBAAChD,MAAAA,CAAI+D,UAAW,4BACVtE,GACE,gCACI,gBAACO,MAAAA,CAAI+D,UAAW,sCACZ,gBAAC/D,MAAAA,CAAI+D,UAAW,4CAA6CxB,IAEjE,gBAACvC,MAAAA,CAAI+D,UAAW,uCACZ,gBAAC/D,MAAAA,CAAI+D,UAAW,sCACZ,gBAACC,KAAAA,CAAGD,UAAW,sBAAwB,cACvC,gBAACE,KAAAA,CAAGF,UAAW,0BAA0B,UACzC,gBAACG,EAAAA,EAAkBA,CAACpB,SAAUA,EAAUqB,YAAa,EAAGC,WAAW,OAO/F,C,yGC7DO,IAAMC,EAAgB,SAACxD,EAAWyD,G,OAAuBzD,QAAAA,EAAK,IAAI0D,cAAcD,QAAAA,EAAK,G,EAE/EE,EAAe,SAAC3D,EAAUyD,GACnC,OAAKzD,GAAMyD,EAINzD,EAIAyD,EAIDzD,EAAE4D,OAAOH,GACF,EAGJzD,EAAE6D,QAAQJ,GAAK,GAAK,EAPhB,GAJC,EAJD,CAgBf,EAGaK,EAAa,SAAC9D,EAAQyD,GAC/B,OAAIzD,IAAMyD,EACC,EAGJzD,EAAIyD,GAAK,EAAI,CACxB,C,0tBCTO,IAAMM,EAAW,SAAC7F,EAAY8F,GACjC9H,OAAO+H,WAAa,E,sUAAA,IACb/H,OAAO+H,YACV,KAAC/F,EAAK8F,GAEd,EAKaE,EAAU,SAAChG,G,IACPhC,EACNA,EADD8H,EAAwB,QAAjB9H,EAAAA,OAAO+H,kBAAP/H,IAAAA,OAAAA,EAAAA,EAAoBgC,GAGjC,OAFwB,QAAjBhC,EAAAA,OAAO+H,kBAAP/H,IAAAA,UAAAA,EAAoBgC,GAEpB8F,CACX,EAKO,SAASG,EAAuBjG,GACnC,IAAM8F,EAAOE,EAAQhG,GAEjB8F,GACAA,EAAKI,SAEb,CAKO,IAAMC,EAAkB,Y,IAAGnG,EAAAA,EAAAA,GAAIoG,EAAAA,EAAAA,UAAWvF,EAAAA,EAAAA,UACvCiF,GAAOO,EAAAA,EAAAA,GAAWxF,GACxBiF,EAAKQ,OAAOF,GAEZP,EAAS7F,EAAI8F,EACjB,EAManF,EAA6B,Y,IACtCX,EAAAA,EAAAA,GACAY,EAAAA,EAAAA,UACAC,EAAAA,EAAAA,UACAuB,EAAAA,EAAAA,MAEM0D,GAAOO,EAAAA,EAAAA,GAAWxF,GACxBiF,EAAKQ,OAAO,gBAAC1F,EAAcwB,IAE3ByD,EAAS7F,EAAI8F,EACjB,C,w2FCjDA,IAAMS,EAAS,IAAIC,IAAsB,CACrC,CAAC,QAAS,WACV,CAAC,UAAW,WACZ,CAAC,UAAW,WACZ,CAAC,OAAQ,aAYPC,EAAiBzF,EAAAA,GAAOC,IAAG,KAOpB,SAACmB,G,IAAUA,E,OAAW,QAAXA,EAAAA,EAAMR,aAANQ,IAAAA,EAAAA,EAAe,aAAY,IAClC,SAACA,G,OAAWA,EAAMsE,SAAW,OAAsB,OAAftE,EAAMsE,SAAS,WAAW,M,IAO3D,SAACtE,G,OAAWA,EAAMuE,YAAc,OAAS,M,IACxC,SAACvE,G,OAAWA,EAAMwE,cAAgB,OAAS,M,IAEjD,SAACxE,G,OAAWA,EAAMyE,SAAW,EAAI,C,IAGlC,SAACzE,G,IAAuDA,E,MAA1B,aAAlBA,EAAM0E,QAAyB,aAA4C,OAAd,QAAjB1E,EAAAA,EAAMuE,mBAANvE,IAAAA,EAAAA,EAAqB,WAAc,MAAK,IAExG,SAACA,G,MACmB,aAAlBA,EAAM0E,SACL,gR,IAMH,SAAC1E,G,OACCA,EAAMuE,aACN,oGAIoC,OAAlBvE,EAAMuE,YAAY,sK,IAUtCI,EAAgB/F,EAAAA,GAAOC,IAAG,KAK1B+F,EAAmBhG,EAAAA,GAAOC,IAAG,KAQ7BgG,EAAgBjG,EAAAA,GAAOwB,OAAM,KAiBtB0E,EAAuD,Y,IAChEJ,EAAAA,EAAAA,QACAtD,EAAAA,EAAAA,SAAAA,EAAAA,EACA/C,OAAAA,OAAAA,IAAS,gBACT0G,SAAAA,OAAAA,IAAW,WACXC,EAAAA,EAAAA,OACAxF,EAAAA,EAAAA,MACA8E,EAAAA,EAAAA,SAAAA,EAAAA,EACAW,UAAAA,OAAAA,IAAY,KACZC,EAAAA,EAAAA,UACGlF,EAAAA,EAAAA,EAAAA,CATH0E,UACAtD,WACA/C,SACA0G,WACAC,SACAxF,QACA8E,WACAW,YACAC,cAG0C7I,EAAAA,EAAAA,EAAAA,UAAe,MAAlD8I,EAAmC9I,EAAAA,GAApB+I,EAAoB/I,EAAAA,GACRA,EAAAA,EAAAA,EAAAA,UAAe,MAA1CgJ,EAA2BhJ,EAAAA,GAAhBiJ,EAAgBjJ,EAAAA,GAE5BkI,EAAcJ,EAAOoB,IAAIR,GAqB/B,OAdA1I,EAAAA,WAAgB,WACZ+I,GAAiB,EACrB,GAAG,IAEH/I,EAAAA,WAAgB,WACP4I,GACDK,GAAa,GAGbL,GACAK,GAAa,EAErB,GAAG,CAACL,IAGA,gBAACZ,E,sUAAAA,CAAAA,CACGE,YAAaA,EACbG,QAASA,EACTlF,MAAOA,EACP8E,SAAUA,EACVG,SAAU,GAAWU,GAAkBE,EACvCb,gBAAiBU,EACjBnH,eAAcM,GACV2B,GAEU,SAAb+E,GACG,gBAACJ,EAAAA,KACiB,UAAbI,GAAwB,gBAACS,EAAAA,GAAWA,CAACC,KAAMlB,EAAamB,OAAQ,OAAQlG,MAAO,SAClE,YAAbuF,GAA0B,gBAACS,EAAAA,GAAWA,CAACC,KAAMlB,EAAamB,OAAQ,OAAQlG,MAAO,SACpE,YAAbuF,GAA0B,gBAACY,EAAAA,GAAWA,CAACF,KAAMlB,EAAamB,OAAQ,OAAQlG,MAAO,SACpE,SAAbuF,GAAuB,gBAACa,EAAAA,GAAIA,CAACH,KAAMlB,EAAamB,OAAQ,OAAQlG,MAAO,UAIhF,gBAACoF,EAAAA,KAAkBxD,GAClB8D,GACG,gBAACL,EAAAA,CAAcgB,aAAY,UAAWvF,QAzC5B,WAClBgF,GAAa,GACbJ,GAAaA,GACjB,EAsC0EnH,eAAc,GAAU,OAAPM,EAAO,kBAClF,gBAACyH,EAAAA,EAAKA,CAACtG,MAAO,OAAQkG,OAAQ,OAAQK,YAAa,QAKvE,EAEAjB,EAAMkB,YAAc,O,81ECrLb,I,EAAMtF,EAAQ,CAEjBC,QAAS,CACLC,IAAK,UACLqF,MAAO,UACPC,KAAM,UACNC,OAAQ,UACRC,MAAO,OACPC,MAAO,OACPC,KAAM,OACNC,SAAU,UACVC,WAAY,WAIhBC,KAAM,CACFC,WAAY,UACZC,YAAa,UACbC,UAAW,UACXC,UAAW,UAEXlG,QAAS,UACTmG,UAAW,UACXC,gBAAiB,UAEjBC,WAAY,UACZC,WAAY,UACZC,gBAAiB,qBAEjBC,gBAAiB,UACjBC,oBAAqB,WAIzBlG,MAAO,CACHC,UAAW,UACXkG,YAAa,UACbC,WAAY,UACZC,MAAO,WAIXC,MAAO,CACHC,mBAAoB,UACpBC,eAAeC,EAAAA,EAAAA,IAAe,OAAQ,YAI1CC,SAAU,CACNC,gBAAiB,UACjBC,sBAAuB,UACvBC,yBAA0B,UAC1BC,qBAAsB,UACtBC,8BAA+B,UAC/BC,eAAgB,UAChBC,oBAAqB,WAIzBC,SAAU,CACNC,kBAAmB,UACnBC,mBAAoB,UACpBC,kBAAmB,UACnBC,mBAAoB,UACpBC,sBAAuB,UACvBC,cAAe,WAGnBC,OAAQ,CACJC,gBAAiB,UACjBC,eAAgB,UAChBC,qBAAsB,a,SAKlB7J,G,uIAAAA,IAAAA,EAASA,CAAAA,IAWd,I,EAAM8J,EAAgB,G,SAEjBC,G,iKAAAA,IAAAA,EAAAA,CAAAA,IAYL,I,IACMC,EAAY,wBAEZC,EAAa,GAAa,OAAVD,GAEhBE,EAETF,G,SAOQnJ,GAGP,yBAIA,sB,EAPOA,IAAAA,EAAAA,CAAAA,I,SAcAsJ,G,0HAAAA,IAAAA,EAAAA,CAAAA,IAWE,gBAE4B,OAFZH,EAAU,gCACA,+BACE,WAE7B,gBAE6B,OAFbA,EAAU,gCACA,+BACG,WAE/B,gBAE+B,OAFfA,EAAU,gCACA,+BACK,WAE9B,gBAE8B,OAFdA,EAAU,gCACA,+BACI,WAE/B,gBAE+B,OAFfA,EAAU,gCACA,+BACK,WAE7B,gBAE6B,OAFbA,EAAU,gCACA,+BACG,WAE5B,gBAE4B,OAFZA,EAAU,+BACA,+BACE,WAK7B,UACMA,OADIvI,EAAM+F,KAAK9F,QAAQ,wBAIO,OAH9BsI,EAAU,4BACK,2BACG,+BACY,OAErC,UACOA,OADGvI,EAAM+F,KAAKS,gBAAgB,wBAKNxG,OAJxBuI,EAAU,4BACK,2BACG,+BACY,8BACf,WACC,OADQvI,EAAM+F,KAAKS,gBAAgB,+BACnC,OAK3B,UACe+B,OADLvI,EAAM+F,KAAK9F,QAAQ,4BAMFD,OALZuI,EAAU,gCACM,0DAEE,qCACE,wCAEU,OADlBvI,EAAM+F,KAAK9F,QAAQ,mCACD,WAE7C,UACesI,OADLvI,EAAM+F,KAAKI,UAAU,4BAKc,OAJ9BoC,EAAU,gCACI,0DAEI,mCACY,WAE7C,UACeA,OADLvI,EAAM+F,KAAKG,UAAU,4BAKc,OAJ9BqC,EAAU,gCACK,0DAEG,mCACY,WAE7C,UACeA,OADLvI,EAAM+F,KAAKO,WAAW,4BAKa,OAJ9BiC,EAAU,gCACI,0DAEI,mCACY,WAE7C,UACeA,OADLvI,EAAM+F,KAAK9F,QAAQ,4BAKgB,OAJ9BsI,EAAU,gCACM,0DAEE,mCACY,WAE7C,UACeA,OADLvI,EAAM+F,KAAK9F,QAAQ,4BAMgB,OAL9BsI,EAAU,gCACI,8FAGI,mCACY,WA5F9C,IAgGMI,EAED,QAICC,EAAQ,CACjBC,WAAY,QACZC,OAAQ,SAGCC,EAAS,CAClBxC,WAAY,MACZyC,QAAS,OAGAC,EACA,8BAGAC,EAAY,CACrBC,SAASC,EAAAA,EAAAA,IAASA,KAQlBC,UAAUD,EAAAA,EAAAA,IAASA,KAQnBE,UAAUF,EAAAA,EAAAA,IAASA,KAUnBG,kBAAkBH,EAAAA,EAAAA,IAASA,MAUlBI,EAAmB,CAC5BrJ,MAAO,SC9MX,EArEwB,CACpBM,UAAW,CACPgJ,KAAMzJ,EAAMQ,MAAMC,UAClBiJ,WAAY1J,EAAMQ,MAAMC,UACxBkJ,SAAU3J,EAAMC,QAAQ0F,MACxBiE,aAAc,QACdC,MAAO,CACHJ,MAAMK,EAAAA,EAAAA,GAAQ,GAAK9J,EAAMQ,MAAMC,WAC/BiJ,YAAYI,EAAAA,EAAAA,GAAQ,GAAK9J,EAAMQ,MAAMC,WACrCkJ,SAAU3J,EAAMC,QAAQ0F,QAGhCgB,YAAa,CACT8C,KAAMzJ,EAAMQ,MAAMmG,YAClB+C,WAAY1J,EAAMQ,MAAMmG,YACxBgD,SAAU3J,EAAMC,QAAQ0F,MACxBiE,aAAc,QACdC,MAAO,CACHJ,MAAMK,EAAAA,EAAAA,GAAQ,GAAK9J,EAAMQ,MAAMmG,aAC/B+C,YAAYI,EAAAA,EAAAA,GAAQ,GAAK9J,EAAMQ,MAAMmG,aACrCgD,SAAU3J,EAAMC,QAAQ0F,QAGhCiB,WAAY,CACR6C,KAAMzJ,EAAMQ,MAAMoG,WAClB8C,WAAY1J,EAAMQ,MAAMoG,WACxB+C,SAAU3J,EAAMC,QAAQ0F,MACxBiE,aAAc,QACdC,MAAO,CACHJ,MAAMK,EAAAA,EAAAA,GAAQ,GAAK9J,EAAMQ,MAAMoG,YAC/B8C,YAAYI,EAAAA,EAAAA,GAAQ,GAAK9J,EAAMQ,MAAMoG,YACrC+C,SAAU3J,EAAMC,QAAQ0F,QAGhCkB,MAAO,CACH4C,KAAMzJ,EAAMQ,MAAMqG,MAClB6C,WAAY1J,EAAMQ,MAAMqG,MACxB8C,SAAU3J,EAAMC,QAAQ0F,MACxBiE,aAAc,QACdC,MAAO,CACHJ,MAAMK,EAAAA,EAAAA,GAAQ,GAAK9J,EAAMQ,MAAMqG,OAC/B6C,YAAYI,EAAAA,EAAAA,GAAQ,GAAK9J,EAAMQ,MAAMqG,OACrC8C,SAAU3J,EAAMC,QAAQ0F,QAGhCoE,QAAS,CACLN,KAAMzJ,EAAMC,QAAQ0F,MACpB+D,WAAY1J,EAAM+F,KAAKG,UACvByD,SAAU3J,EAAM+F,KAAKG,UACrB0D,aAAc,QACdC,MAAO,CACHJ,KAAMzJ,EAAM+F,KAAKG,UACjBwD,WAAY1J,EAAM+F,KAAKG,UACvByD,SAAU3J,EAAMC,QAAQ0F,QAGhCqE,YAAa,CACTP,KAAMzJ,EAAMC,QAAQ0F,MACpB+D,WAAY1J,EAAM+F,KAAKK,UACvBuD,SAAU3J,EAAM+F,KAAKK,UACrBwD,aAAc,QACdC,MAAO,CACHJ,KAAMzJ,EAAM+F,KAAKK,UACjBsD,WAAY1J,EAAM+F,KAAKK,UACvBuD,SAAU3J,EAAMC,QAAQ0F,S,yyBC9DpC,IAAMsE,EAAuB/L,EAAAA,GAAOC,IAAG,KAGhB,SAACmB,G,OAAwCA,EAAM4K,QAAU5K,EAAM4K,QAAU,e,IAGnFC,EAAOjM,EAAAA,GAAOS,IAAG,KACjB,SAACW,G,OAAUA,EAAMR,K,IAChB,SAACQ,G,OAAUA,EAAM0F,M,GACXsD,EAAQnI,MAEX+I,EAAUK,iBAAoBX,EAAME,QAGxCjJ,EAAiB,Y,IAC1Ba,EAAAA,EAAAA,SAAAA,EAAAA,EACA0J,MAAAA,OAAAA,IAAQ,gBACRC,UAAAA,OAAAA,IAAY,eACZC,WAAAA,OAAAA,IAAa,WACVhL,EAAAA,EAAAA,EAAAA,CAJHoB,WACA0J,QACAC,YACAC,e,OAGA,gBAACL,EAAyB3K,EACrBoB,EACD,gBAACyJ,EAAAA,CACGvL,IAAe,UAAVwL,EC/CjB,677BCAA,2n6BFgDYvL,IAAK,UACLC,MAAOuL,EACPrF,OAAQsF,I,ihFG4EpB,IAAMC,EAAerM,EAAAA,GAAOwB,OAAO8K,OAAmB,Y,MAAiB,CACnE,eADqD7M,EAAAA,O,GAApCO,C,KAGN,SAACoB,G,OAAWA,EAAMmL,OAAS,cAAgB,M,IAGrC,SAACnL,G,MAA6B,UAAlBA,EAAM0E,QAAsB,MAAQ,K,IAGjD,SAAC1E,G,OAAWA,EAAMoL,MAAQpL,EAAMoL,MAAMhB,WAAa1J,EAAMQ,MAAMC,S,IAC3D,SAACnB,G,OAAWA,EAAMoL,MAAQpL,EAAMoL,MAAMjB,KAAOzJ,EAAMQ,MAAMC,S,IACpE,SAACnB,G,OAAWA,EAAMoL,MAAQpL,EAAMoL,MAAMf,SAAW3J,EAAMC,QAAQ0F,K,IAE3D,SAACrG,G,OACVA,EAAMqL,KAAOrL,EAAMqL,KAAyB,UAAlBrL,EAAM0E,QAAsBzF,EAAU4B,MAAQ5B,EAAUqM,O,IAI3E,SAACtL,G,MAA6B,UAAlBA,EAAM0E,QAAsB,YAAcsE,EAAQuC,c,IAC5D,SAACvL,G,OAAUA,EAAMwL,UAAY,G,IAQtB,Y,IAAGJ,EAAAA,EAAAA,M,OAAaA,GAASA,EAAMb,MAAQa,EAAMb,MAAMH,WAAa1J,EAAMQ,MAAMC,S,IACxE,Y,IAAGiK,EAAAA,EAAAA,M,OAAaA,GAASA,EAAMb,MAAQa,EAAMb,MAAMJ,KAAOzJ,EAAMQ,MAAMC,S,IACjF,Y,IAAGiK,EAAAA,EAAAA,M,OAAaA,GAASA,EAAMb,MAAQa,EAAMb,MAAMF,SAAW3J,EAAMC,QAAQ0F,K,IAcvFoF,EAASpP,EAAAA,YACX,WAaIjB,G,IAXIgG,EAAAA,EAAAA,SACAd,EAAAA,EAAAA,QAAAA,EAAAA,EACAD,SAAAA,OAAAA,IAAW,KACX8K,EAAAA,EAAAA,OACAL,EAAAA,EAAAA,MACAO,EAAAA,EAAAA,KAAAA,EAAAA,EACAvN,KAAAA,OAAAA,IAAO,aACPQ,EAAAA,EAAAA,QAAAA,EAAAA,EACAoG,QAAAA,OAAAA,IAAU,aACP1E,EAAAA,EAAAA,EAAAA,CATHoB,WACAd,UACAD,WACA8K,SACAL,QACAO,OACAvN,OACAQ,UACAoG,YAKEgH,EAAerP,EAAAA,WAAiBsP,EAAAA,IACtC,OACI,gBAACV,EAAAA,EAAAA,CACG3K,QAASA,EACTD,SAAUA,EACV8K,OAAQA,EACRL,MAAOA,EACPO,KAAMA,EACNvN,KAAMA,EACN1C,IAAKA,EACLsJ,QAASA,GACL1E,GAEH1B,EACG,gBAACiC,EAAcA,CAACuK,MAAOY,EAAeA,EAAapB,aAAe,SAC7DlJ,GAGLA,EAIhB,IAGJqK,EAAOzF,YAAc,SAErB,IAAM4F,EAAmBhN,EAAAA,GAAOwB,OAAO8K,OAAmB,Y,MAAiB,CACvE,eADyD7M,EAAAA,O,GAApCO,C,KAIV,SAACoB,G,OAAwBA,EAAMmL,OAAS,cAAgB,M,IAG1D,SAACnL,G,OACNA,EAAMoL,OACApL,EAAMoL,MAAMhB,WACRpK,EAAMoL,MAAMhB,WAEhB1J,EAAMQ,MAAMC,S,GAEP+H,GACF,SAAClJ,G,OAAuBA,EAAMqL,MAAQpM,EAAUqM,O,GAE9CrM,EAAU4B,MAGTmI,EAAQ9J,QAGUoK,EAAMC,YAcb,SAACvJ,G,OACpBA,EAAMoL,OAASpL,EAAMoL,MAAMb,MAAQvK,EAAMoL,MAAMb,MAAMJ,KAAOzJ,EAAMQ,MAAMC,S,IAO9E0K,EAAexP,EAAAA,YACjB,WAAgEjB,G,IAA7DgG,EAAAA,EAAAA,SAAUd,EAAAA,EAAAA,QAASD,EAAAA,EAAAA,SAAU8K,EAAAA,EAAAA,OAAQE,EAAAA,EAAAA,KAAMvN,EAAAA,EAAAA,KAASkC,EAAAA,EAAAA,EAAAA,CAApDoB,WAAUd,UAASD,WAAU8K,SAAQE,OAAMvN,S,OAC1C,gBAAC8N,EAAAA,EAAAA,CACGtL,QAASA,EACTD,SAAUA,EACV8K,OAAQA,EACRE,KAAMA,EACNvN,KAAMA,EACN1C,IAAKA,GACD4E,GAEHoB,E,IAIbyK,EAAa7F,YAAc,eAE3B,IAAM8F,EAAoBlN,EAAAA,GAAOC,IAAG,KAGb,Y,IAAG+L,EAAAA,EAAAA,Q,MACN,SAAZA,EACM,aACY,WAAZA,EACA,SACY,UAAZA,EACA,WACY,kBAAZA,EACA,gBACA,Q,GAERK,EACkBjC,EAAQ+C,UAQ1BC,EAAc,Y,IAAG5K,EAAAA,EAAAA,SAAUwJ,EAAAA,EAAAA,QAAY5K,EAAAA,EAAAA,EAAAA,CAAtBoB,WAAUwJ,Y,OAC7B,gBAACkB,EAAAA,EAAAA,CAAkBlB,QAASA,GAAa5K,GACpCoB,E,y9DC7QT,IAAM6K,GAAwBrN,EAAAA,GAAOC,IAAG,IAIpB6B,EAAM+F,KAAKE,aAIzBsE,GAAerM,EAAAA,GAAOwB,OAAM,KAS5B8L,IAAgBtN,EAAAA,EAAAA,IAAOuN,EAAAA,GAAPvN,CAAmBuN,KAO7BzL,EAAM+F,KAAKG,UACHoC,EAAQsC,SACX,SAACtL,G,OAAuCA,EAAMoM,WAAa,iBAAmB,e,IAGzFC,GAAgBzN,EAAAA,GAAOiB,EAAC,KAEXsJ,EACFlK,EAAUc,OAGd,SAACC,G,OACNA,EAAMoM,WAAcpM,EAAMoL,MAAQpL,EAAMoL,MAAMjB,KAAOzJ,EAAMQ,MAAMC,UAAaT,EAAM+F,KAAKG,S,IAG3F0F,GAAuB1N,EAAAA,GAAOC,IAAG,MAIjC0N,GAAkBlQ,EAAAA,YACpB,WAAsEjB,G,IAAnE8B,EAAAA,EAAAA,QAASsP,EAAAA,EAAAA,YAAa,EAAbA,EAAaC,OAAAA,OAAAA,IAAS,KAAOpO,EAAAA,EAAAA,OAAQiC,EAAAA,EAAAA,QAAYN,EAAAA,EAAAA,EAAAA,CAA1D9C,UAASsP,cAAaC,SAAgBpO,SAAQiC,YAC7C,OACI,gBAAC2L,GAAAA,E,sUAAAA,CAAAA,CAAsB7Q,IAAKA,GAAS4E,GAAAA,CAAOjC,eAAc,GAAU,OAAPM,KACzD,gBAAC4M,GAAYA,CACTnN,KAAK,SACLC,eAAc,GAAU,OAAPM,EAAO,kBACxBiC,QAASA,EACToM,gBAAeD,GAEf,gBAACP,GAAAA,CAAcE,WAAYK,EAAQE,cAAY,SAC/C,gBAACN,GAAAA,CAAcD,WAAYK,EAAQ1O,eAAc,GAAU,OAAPM,EAAO,cACtDnB,IAGRsP,GAAe,gBAACF,GAAAA,KAAsBE,GAGnD,IAEJD,GAAgBvG,YAAc,kBAE9B,IC7FA,GD6FA,G,iWEpFgBpH,EAAAA,GAAOC,IAAG,MAIF,SAACmB,G,OAAiCA,EAAM4M,QAAU5M,EAAM4M,QAAU,a,GAGjEvD,G,qWCIzB,IAAMwD,GAAiB,CACnBC,WAAY,MACZC,SAAU,WACVC,QAAS,MACTC,UAAW,WACXC,cAAe,MACfC,KAAM,Q,IAMMvO,EAAAA,GAAOC,IAAG,MACZ,SAACmB,G,OAAiCA,EAAMoN,IAAM,gBAAkB,M,IACtD,SAACpN,G,OAAwBA,EAAM4M,SAAW,a,IAEnD,SAAC5M,G,OAAiCA,EAAMoN,IAAM,MAAQ,G,IAChD,SAACpN,G,OAAiCA,EAAMoN,IAAM,MAAQ,G,GAGlD/D,GACR,SAACrJ,G,OAAyBA,EAAMR,OAZ/BtD,EAYgD8D,EAAMR,MAZpCqN,GAAO3Q,IAYsC2Q,GAAOM,KAZvE,IAACjR,C,q1DCnBlB,I,GAAMmR,GAAsBzO,EAAAA,GAAOC,IAAG,MAmBhCyO,GAAU1O,EAAAA,GAAOC,IAAG,KACF6B,EAAM8G,MAAME,eAW9BiD,IAAuB/L,EAAAA,EAAAA,IAAO2B,EAAP3B,CAAqB2B,MAI5CgN,GAAgB3O,EAAAA,GAAOiB,EAAC,KAKbZ,EAAUU,OACde,EAAMC,QAAQyF,OAGdoH,GAAgBnR,EAAAA,YACzB,WAAuCjB,G,QAApCqS,QAAAA,OAAAA,IAAU,iBAAiBzN,EAAAA,GAAAA,EAAAA,CAA3ByN,Y,OACC,gBAACC,GAAAA,EAAMA,CAACC,KAAM7R,SAAS8R,MACnB,gBAACN,GAAAA,KACG,gBAACD,G,uUAAAA,CAAAA,CAAoBjS,IAAKA,GAAS4E,GAC/B,gBAAC2K,GAAoBA,CAACG,MAAM,UAC5B,gBAACyC,GAAAA,KAAeE,K,s8DAMpCD,GAAcxH,YAAc,gB,SCbhB6H,G,+BAAAA,KAAAA,GAAAA,CAAAA,IAmBZ,IAAMP,GAAU1O,EAAAA,GAAOC,IAAG,KACF6B,EAAM8G,MAAME,eAc9BoG,GAAclP,EAAAA,GAAOC,IAAG,MAEjB,SAACmB,G,OAAuBA,EAAMR,MAAQQ,EAAMR,MAAQ,O,IACnD,SAACQ,G,OAAuBA,EAAM0F,OAAS1F,EAAM0F,OAAS,M,IAK9DqI,GAAsBnP,EAAAA,GAAOC,IAAG,MACd,SAACmB,G,OAAuBA,EAAMoL,MAAQpL,EAAMoL,MAAMjB,KAAOzJ,EAAMQ,MAAMC,S,GAChFT,EAAMC,QAAQ0F,MAIVpH,EAAUU,QAIrBqO,GAAqBpP,EAAAA,GAAOC,IAAG,KACb6B,EAAMC,QAAQ0F,OAIhC4E,IAAerM,EAAAA,EAAAA,IAAO6M,EAAP7M,CAAa6M,MAE5BK,GAAoBlN,EAAAA,GAAOC,IAAG,MAEb,SAACmB,G,MACU,UAA1BA,EAAMiO,gBAA4C,aAAe,E,IACnD,SAACjO,G,MACW,UAA1BA,EAAMiO,gBAA4C,cAAgB,E,GAClDvN,EAAM+F,KAAKU,gBACPzG,EAAM+F,KAAKW,oBAKjC6D,GACiBjC,EAAQ9J,QACP8J,EAAQ9J,SASnBgP,GAAQ7R,EAAAA,YACjB,WAcIjB,G,IAZIgG,EAAAA,EAAAA,SAAAA,EAAAA,EACA+M,QAAAA,OAAAA,IAAU,aACVF,gBAAAA,OAAAA,IAAkB,EAAlBA,OAAAA,EACAG,EAAAA,EAAAA,MACAC,EAAAA,EAAAA,WACAC,EAAAA,EAAAA,YACAC,EAAAA,EAAAA,mBACAC,EAAAA,EAAAA,oBACAhP,EAAAA,EAAAA,MACAiP,EAAAA,EAAAA,cACGzO,EAAAA,GAAAA,EAAAA,CAVHoB,WACA+M,UACAF,kBACAG,QACAC,aACAC,cACAC,qBACAC,sBACAhP,QACAiP,kBAKEC,EAAkBrS,EAAAA,OAAgC,MAClDsS,EAAmBtS,EAAAA,OAAgC,MAOzD,OALAf,EAAAA,EAAAA,YAAU,WACgB,WAAlBmT,GAA8BC,EAAgBhT,SAASgT,EAAgBhT,QAAQkT,QAC7D,YAAlBH,GAA+BE,EAAiBjT,SAASiT,EAAiBjT,QAAQkT,OAC1F,IAGI,gBAACd,G,uUAAAA,CAAAA,CAAY1S,IAAKA,EAAKoE,MAAOA,EAAOyO,gBAAiBA,GAAqBjO,GACvE,gBAAC+N,GAAAA,KAAqBK,GACtB,gBAACJ,GAAAA,KAAoB5M,GACpB+M,GAGG,gBAACrC,GAAiBA,CAACmC,gBAAiBA,GAChC,gBAAChD,GAAYA,CACT5M,OAAQ,qBACRiC,QAASkO,EACTpT,IAAKuT,GAEJL,GAAe,OAEpB,gBAACrD,GAAYA,CACTG,MAAOyD,EAAMpE,QACbpM,OAAQ,wBACRiC,QAASiO,EACTnT,IAAKsT,GAEJL,GAAc,WAMvC,I,63HAEJH,GAAMlI,YAAc,QC7IpB,IAAM8I,GAAelQ,EAAAA,GAAOC,IAAG,MAGjB,SAACmB,G,OAAWA,EAAMoM,WAAa,aAAmC,OAAtB1L,EAAM+F,KAAKQ,YAAe,M,IAC/D,SAACjH,G,OAAmBA,EAAM+O,UAAY,OAAStF,EAAOxC,U,GAGnDvG,EAAMQ,MAAMC,WAI9B6N,IAAoBpQ,EAAAA,EAAAA,IAAOqQ,EAAAA,GAAPrQ,CAAkBqQ,MAKtCC,IAAetQ,EAAAA,EAAAA,IAAOuQ,EAAAA,GAAPvQ,CAAauQ,MAM5B1D,GAAS7M,EAAAA,GAAOwB,OAAO8K,OAAuB,Y,MAAqB,CACrE,eADmDkE,EAAAA,W,GAAxCxQ,C,MAWTqM,IAAerM,EAAAA,EAAAA,IAAO6M,GAAP7M,CAAa6M,KACtB/K,EAAM+F,KAAKS,gBACCxG,EAAMC,QAAQ0F,OACjB,SAACrG,G,OACdA,EAAM+O,UAAY,gBAAkB,KAA0BtF,OAArBA,EAAOxC,WAAW,KAAqB,OAAlBwC,EAAOxC,WAAW,K,IAIzE,SAACjH,G,OAAYA,EAAMqP,aAAyBrP,EAAMsP,iBAAmB,QAAU,OAA7C,O,IAG9B,SAACtP,G,OAAmBA,EAAMuP,aAAe,qBAAuB,G,IAChE,SAACvP,G,OAAmBA,EAAMuP,aAAe,oCAAsC,G,GAExFP,GACUtO,EAAMQ,MAAMC,UAKtB6N,IACUQ,EAAAA,EAAAA,IAAO,MAAO9O,EAAM+F,KAAKS,iBAOnC8H,IAUJS,GAA4B7Q,EAAAA,GAAOC,IAAG,KAChC6B,EAAM+F,KAAKS,gBACCxG,EAAMC,QAAQ0F,OACjB,SAACrG,G,OACdA,EAAM+O,UAAY,gBAAkB,KAA0BtF,OAArBA,EAAOxC,WAAW,KAAqB,OAAlBwC,EAAOxC,WAAW,K,IAMlFyI,GAAY9Q,EAAAA,GAAOqC,MAAMiK,OAAuB,Y,MAAqB,CACvE,eADqDkE,EAAAA,W,GAAvCxQ,C,MAIZ+Q,IAAc/Q,EAAAA,EAAAA,IAAO8Q,GAAP9Q,CAAO8Q,MAEdF,EAAAA,EAAAA,IAAO,MAAO9O,EAAM+F,KAAKS,kBACjB,SAAClH,G,OAAWA,EAAM+O,UAAY,OAAStF,EAAOxC,U,IAE7D,SAACjH,G,OACCA,EAAM4P,eACL,qF,IAMM,SAAC5P,G,OAAYA,EAAMqP,aAA2BrP,EAAMsP,iBAAmB,UAAY,EAAjD,S,IACpC,SAACtP,G,OAAWA,EAAMqP,aAAgBrP,EAAMsP,iBAAmB,OAAS,IAAO,M,IAChE,SAACtP,G,OACjBA,EAAMqP,aAAgBrP,EAAMsP,iBAAmB5O,EAAMC,QAAQ0F,MAAQ,cAAiB3F,EAAMC,QAAQ0F,K,IAGzF,SAACrG,G,OAAYA,EAAMqP,aAAmBrP,EAAMsP,iBAAmB,EAAI,EAAjC,C,IACpC9E,EAAAA,EAAAA,GAAQ,MAAO9J,EAAM+F,KAAKS,iBAInBxG,EAAMQ,MAAMC,WACjB,SAACnB,G,OAAqCA,EAAMuP,aAAe,qBAAuB,G,IAClF,SAACvP,G,OACRA,EAAMuP,aAAe,oCAAsC,G,GAE3DtE,GACgBvK,EAAMQ,MAAMC,UAE5BsO,GACgB/O,EAAMQ,MAAMC,WAUlC0O,GAAejR,EAAAA,GAAOwB,OAAM,MAErBoP,EAAAA,EAAAA,IAAO,MAAO9O,EAAM+F,KAAKS,kBAEdsI,EAAAA,EAAAA,IAAO,IAAM9O,EAAM+F,KAAKE,aACxBjG,EAAMC,QAAQ0F,OACjB,SAACrG,G,OAAWA,EAAM+O,UAAY,OAAS,GAAqB,OAAlBtF,EAAOxC,W,IAGvD,Y,OAAGqI,EAAAA,iBAA2C,OAAS,M,IAK9C9E,EAAAA,EAAAA,GAAQ,GAAK9J,EAAM+F,KAAKO,aACpBwD,EAAAA,EAAAA,GAAQ,IAAM9J,EAAM+F,KAAKO,YAE3CkI,IACUM,EAAAA,EAAAA,IAAO,MAAO9O,EAAM+F,KAAKS,kBAKvC4I,GAAezT,EAAAA,YACjB,WAeIjB,G,IAbImU,EAAAA,EAAAA,aACAQ,EAAAA,EAAAA,YACAC,EAAAA,EAAAA,aACAC,EAAAA,EAAAA,kBACAC,EAAAA,EAAAA,WACAnB,EAAAA,EAAAA,UACAM,EAAAA,EAAAA,aACAhR,EAAAA,EAAAA,OACA8R,EAAAA,EAAAA,SAAAA,EAAAA,EACAC,eAAAA,OAAAA,IAAiB,SACjBC,cAAAA,OAAAA,IAAgB,KACbrQ,EAAAA,GAAAA,EAAAA,CAXHuP,eACAQ,cACAC,eACAC,oBACAC,aACAnB,YACAM,eACAhR,SACA8R,WACAC,iBACAC,kBAK4CC,EAAAA,IAAAA,EAAAA,EAAAA,WAAS,MAAlDhB,EAAyCgB,EAAAA,GAAvBC,EAAuBD,EAAAA,GAI1ClE,GAAciD,GAAgBC,EAC9BkB,EAAkBJ,KAAoBC,KAAmBH,GACzDO,EAAiBrE,GAAciE,IAAkBG,EAcvD,OACI,gBAAC1B,G,uUAAAA,CAAAA,CAAa1C,WAAYA,EAAY2C,UAAWA,GAAe/O,GAC3DqP,GACG,gBAACQ,GAAAA,CACGd,UAAWA,EACXzO,QAjBW,WACvBiQ,GAAoB,GAEpBnV,EAAIM,QAAQkT,OAChB,EAcgBU,iBAAkBA,GAElB,gBAACJ,GAAAA,OAGT,gBAACS,GAAAA,CACGJ,aAAcA,EACdzR,KAAM,OACNiS,YAAaA,EACb7R,SAAU8R,EACV7R,OAtBO,WACVkR,IAEAjU,EAAIM,QAAQQ,OAAOqU,GAAoB,GAChD,EAmBYnV,IAAKA,EACLsV,IAAK,SACL/D,cAAa0C,IAAiBC,EAC9BqB,SAAUtB,EAAgBC,EAAmB,GAAK,EAAK,EACvDsB,aAAc,MACd1U,MAAOgU,EACPd,WAAY/Q,EAAS,GAAU,OAAPA,EAAO,kBAAkB,gBACjD0Q,UAAWA,EACXM,aAAcA,EACdC,iBAAkBA,EAClBuB,UAAWV,EACXP,cAAeQ,GAAkBC,IAEpCG,GACG,gBAACvF,GAAYA,CACTsE,aAAcA,EACdzR,KAAM,SACNsQ,MAAO,QACP9N,QAAS2P,EACT5P,UAAW6P,EACXnS,eAAcM,EAAS,GAAU,OAAPA,EAAO,0BAA0B,wBAC3D0Q,UAAWA,EACXM,aAAcA,EACdC,iBAAkBA,GAElB,gBAACN,GAAAA,OAGRyB,GACG,gBAAChB,GAAAA,CACGV,UAAWA,EACXhR,eAAcM,EAAS,GAAU,OAAPA,EAAO,wBAAwB,uBAEzD,gBAAC6Q,GAAAA,OAKrB,I,kqGAEJY,GAAa9J,YAAc,eC3PpB,IAAM8K,GAAqBlS,EAAAA,GAAOC,IAAG,KAC1BmK,EAAQjJ,MAINiJ,EAAQnI,OAGfkQ,GAAkBnS,EAAAA,GAAOkE,GAAE,KAErBqG,EACFlK,EAAU4B,MAITmI,EAAQrJ,QAGpBqR,GAAcpS,EAAAA,GAAOqS,GAAG/F,OAAuB,Y,MAAqB,CACtE,eADoDkE,EAAAA,W,GAApCxQ,C,MAIPsS,IAA0BtS,EAAAA,EAAAA,IAAOoS,GAAPpS,CAAOoS,MAK1B,SAAChR,G,OAAmCA,EAAMoP,U,IAGjD+B,GAAiBvS,EAAAA,GAAOqS,GAAE,MAO1BG,GAAaxS,EAAAA,GAAOyS,GAAE,KAEjBrI,EAAQrJ,OAGpBuR,GACkBlI,EAAQrJ,OAEtBuR,IAMJI,GAA+B,OAExBC,GAAoB3S,EAAAA,GAAOC,IAAG,KAGnB6B,EAAM8G,MAAMC,mBACrB6J,GAAmCtI,EAAQnI,MAEhCyQ,GAElBF,GACepI,EAAQnI,OAIlB2Q,GAAiB5S,EAAAA,GAAO6S,GAAE,KAGdzI,EAAQ9J,QACnB8J,EAAQrJ,OAAUqJ,EAAQ9J,QAAW8J,EAAQrJ,OAAUqJ,EAAQnI,OAGvE6Q,GAAc9S,EAAAA,GAAOlB,MAAK,KACRgD,EAAM8G,MAAMC,oBAI9BkK,GAAkB/S,EAAAA,GAAOC,IAAG,KAIfsK,EACFlK,EAAU4B,OAEH,SAACb,G,OAAyCA,EAAM4R,QAAUlR,EAAMC,QAAQ0F,MAAQ,a,GAC3F3F,EAAMQ,MAAMC,WAKG,SAACnB,G,OACjBA,EAAM4R,QAAUlR,EAAMC,QAAQ0F,OAAQsB,EAAAA,EAAAA,IAAe,MAAOjH,EAAMC,QAAQ0F,M,IAIhF6F,IAAgBtN,EAAAA,EAAAA,IAAOuN,EAAAA,GAAPvN,CAAmBuN,MAI1B,SAACnM,G,OAAyCA,EAAM4R,QAAU,EAAI,C,IAGvEC,GAAcjT,EAAAA,GAAOqC,MAAK,KAOhB0Q,IACG,SAAC3R,G,OAAqCA,EAAMuP,aAAe,qBAAuB,G,IAClF,SAACvP,G,OACRA,EAAMuP,aAAe,oCAAsC,G,IAI1DuC,GAAkBzV,EAAAA,YAC3B,WAA2FjB,G,IAAxFgG,EAAAA,EAAAA,SAAUlD,EAAAA,EAAAA,SAAUoC,EAAAA,EAAAA,QAASyR,EAAAA,EAAAA,WAAYH,EAAAA,EAAAA,QAASrC,EAAAA,EAAAA,aAAcH,EAAAA,EAAAA,WAAepP,EAAAA,GAAAA,EAAAA,CAA/EoB,WAAUlD,WAAUoC,UAASyR,aAAYH,UAASrC,eAAcH,e,OAC/D,gBAAC8B,GAAAA,GAAAA,CAAwB5Q,QAASA,EAAS8O,WAAYA,QAAAA,EAAc,IAAQpP,GACzE,gBAAC0R,GAAAA,KACG,gBAACG,GAAAA,CACGtC,aAAcA,EACdzR,KAAM,QACNG,KAAM,cACN7C,IAAKA,EACLc,MAAO6V,EACP7T,SAAUA,EACV0T,QAASA,IAEb,gBAACD,GAAAA,CAAgBpC,aAAcA,EAAcqC,QAASA,GACjDxQ,EAAS,IAAC,gBAAC8K,GAAaA,CAAC0F,QAASA,M,IAMvDE,GAAgB9L,YAAc,kBAE9B,IAAMgM,GAAa3V,EAAAA,YACf,WAAuFjB,G,IAApF8C,EAAAA,EAAAA,SAAU+T,EAAAA,EAAAA,UAAWC,EAAAA,EAAAA,eAAgBC,EAAAA,EAAAA,WAAYP,EAAAA,EAAAA,QAASrC,EAAAA,EAAAA,aAAiBvP,EAAAA,GAAAA,EAAAA,CAA3E9B,WAAU+T,YAAWC,iBAAgBC,aAAYP,UAASrC,iB,OACzD,gBAACgC,GAAAA,GAAAA,CAAkBnW,IAAKA,GAAS4E,GAC7B,gBAACoR,GAAAA,KACG,gBAACU,GAAAA,CACG5T,SAAUA,EACV6T,WAAY,qBACZxC,aAAcA,EACdqC,QAASA,EACTxC,WAAY,wCACf,uBAGC+C,GACE,gBAACL,GAAAA,CACG5T,SAAUA,EACV6T,WAAY,SACZxC,aAAcA,EACdqC,QAASA,EACTxC,WAAY,4BACf,WAIH8C,GACE,gBAACJ,GAAAA,CACG5T,SAAUA,EACV6T,WAAY,aACZxC,aAAcA,EACdqC,QAASA,EACTxC,WAAY,gCACf,eAMT,gBAACoC,GAAAA,MACD,gBAACV,GAAAA,KACG,gBAACM,GAAAA,KACG,gBAACU,GAAAA,CACG5T,SAAUA,EACV6T,WAAY,MACZxC,aAAcA,EACdqC,QAASA,EACTxC,WAAY,yBACf,UAGA6C,GACGG,OAAOC,KAAKJ,GAAWK,KAAI,SAACC,GACxB,OACI,gBAACpB,GAAAA,CAAeqB,IAAK,eAA0B,OAAXD,IAChC,gBAACxB,GAAAA,KAAiBkB,EAAUM,GAAYnE,OACxC,gBAACgD,GAAAA,KACIgB,OAAOC,KAAKJ,EAAUM,GAAYE,QAAQH,KAAI,SAACI,GAC5C,OACI,gBAACZ,GAAAA,CACG5T,SAAUA,EACV6T,WAAYE,EAAUM,GAAYE,OAAOC,GAAW9U,GACpD4U,IAAK,cAAwB,OAAVE,GACnBnD,aAAcA,EACdqC,QAASA,EACTxC,WAAY,qBAAsE,OAAjD6C,EAAUM,GAAYE,OAAOC,GAAWC,WAExEV,EAAUM,GAAYE,OAAOC,GAAWtE,MAGrD,KAIhB,M,IAMxB4D,GAAWhM,YAAc,aAEzB,U,0+DCjOA,IAAM4M,GAAmBhU,EAAAA,GAAOC,IAAG,MAQ7B6S,GAAc9S,EAAAA,GAAOlB,MAAK,MAQnBmV,GAAajU,EAAAA,GAAOC,IAAG,KAGZ6B,EAAM+F,KAAKM,iBAIP,SAAC/G,G,IAAaA,E,MAAH,GAA2BA,OAAT,QAAfA,EAAAA,EAAM8S,iBAAN9S,IAAAA,EAAAA,EAAmB,IAAoB,OAAfA,EAAM2S,SAAS,OAAI,GAC7DjS,EAAM+F,KAAKM,gBAKNuC,EAAMC,YAG7BoI,GAAkB/S,EAAAA,GAAOC,IAAG,KAGjBI,EAAU4B,MAER5B,EAAUc,MAGLW,EAAMC,QAAQ0F,OAIhC0M,GAAQnU,EAAAA,GAAOqC,MAAMiK,OAAuB,Y,MAAqB,CACnE,eADiDkE,EAAAA,W,GAAvCxQ,C,MAIRiT,IAAcjT,EAAAA,EAAAA,IAAOmU,GAAPnU,CAAOmU,KAQfF,GAKIA,IACG,SAAC7S,G,OAAWA,EAAMuP,aAAe,qBAAuB,G,IACxD,SAACvP,G,OAAWA,EAAMuP,aAAe,oCAAsC,G,GAI9EsD,IACgB,SAAC7S,G,IACYA,E,OAAzBA,EAAMgT,kBAA8B,QAAXhT,EAAAA,EAAMoL,aAANpL,IAAAA,OAAAA,EAAAA,EAAaoK,YAAapK,EAAMoL,MAAMhB,WAAa1J,EAAMQ,MAAMC,S,IAI9F,SAACnB,G,OACEA,EAAMgT,iBACP,mBAGwBtS,OAFpBiR,GAAgB,yEAE0B,OAAtBjR,EAAMQ,MAAMC,UAAU,yF,IAO7C8R,GAAqBrU,EAAAA,GAAOC,IAAG,MAUtCqU,GAAY7W,EAAAA,YACd,WAaIjB,G,IAXIuX,EAAAA,EAAAA,SACAQ,EAAAA,EAAAA,UACAvV,EAAAA,EAAAA,GACAM,EAAAA,EAAAA,SACAkV,EAAAA,EAAAA,UACA7D,EAAAA,EAAAA,aACA8D,EAAAA,EAAAA,WACAjE,EAAAA,EAAAA,WACA0D,EAAAA,EAAAA,UACAE,EAAAA,EAAAA,gB,OAIJ,gBAACJ,GAAAA,CAAiB7U,eAAcqR,GAC5B,gBAACsC,GAAWA,CAAC3T,eAAc,GAAc,OAAXqR,EAAW,YACrC,gBAACyC,GAAWA,CACRzC,WAAY,GAAc,OAAXA,EAAW,WAC1BlR,SAAUA,EACVkV,UAAWA,EACXtV,KAAM,QACNG,KAAM,aACN/B,MAAO0B,EACPxC,IAAKA,EACLmU,aAAcA,EACd+D,eAAgBD,EAChBL,gBAAiBA,IAErB,gBAACH,GAAAA,CAAWtD,aAAcA,EAAcoD,SAAUA,EAAUG,UAAWA,IACvE,gBAACnB,GAAeA,KAAEwB,I,IAKlCD,GAAUlN,YAAc,YAExB,U,kgICnJA,IAAMuN,GAAmB,QAEnBC,GAAkB5U,EAAAA,GAAOC,IAAG,KACV6B,EAAMC,QAAQ0F,OAMhCoN,GAAuB7U,EAAAA,GAAOC,IAAG,KAGnBmK,EAAQ9J,QAAW8J,EAAQ9J,SAIzCwU,IAAkB9U,EAAAA,EAAAA,IAAOsU,GAAPtU,CAAgBsU,MAIlCS,GAAmB/U,EAAAA,GAAOiE,GAAE,KACfsG,EACFlK,EAAUc,MAERd,EAAUC,QAGhBwB,EAAM+F,KAAKO,WACXuM,IAGPK,GAAoBhV,EAAAA,GAAOiB,EAAC,KACfsJ,EACFlK,EAAU4B,MAER5B,EAAUc,MACRiJ,EAAQ9J,QAEhBwB,EAAM+F,KAAKO,WACXuM,IAGPlH,GAAgBzN,EAAAA,GAAOkE,GAAE,KACZqG,EACFlK,EAAU4B,MAGdH,EAAM+F,KAAKO,WACNgC,EAAQsC,QACLtC,EAAQsC,QAChBiI,IAGPnC,GAAaxS,EAAAA,GAAOyS,GAAE,KAGTlI,EACFlK,EAAU4B,MAER5B,EAAUU,OAKhBe,EAAM+F,KAAKO,WACXuM,IAGPM,IAAajV,EAAAA,EAAAA,IAAOkV,GAAAA,EAAPlV,CAAWkV,KAEV9K,EAAQrJ,QAGtBoU,GAAwBnV,EAAAA,GAAOwB,OAAM,KACxB+I,EACFlK,EAAU4B,MAER5B,EAAUU,OAKLe,EAAMC,QAAQ0F,MACzB3F,EAAM+F,KAAKG,UAEToC,EAAQnI,MAASmI,EAAQnI,MAASmI,EAAQnI,OAKtC,SAACb,G,OAAsCA,EAAMuP,aAAe,qBAAuB,G,IACnF,SAACvP,G,OACRA,EAAMuP,aAAe,oCAAsC,G,GAGzDsE,GACEnT,EAAMC,QAAQwF,QAIxBgL,GAAiBvS,EAAAA,GAAOqS,GAAE,KACb9H,EACFlK,EAAUqM,QAERrM,EAAUc,MAEhBW,EAAM+F,KAAKO,WACJgC,EAAQsC,SAetB0I,GAAY3X,EAAAA,YACd,WAYIjB,G,IAVIuX,EAAAA,EAAAA,SACAsB,EAAAA,EAAAA,WACAC,EAAAA,EAAAA,YACAC,EAAAA,EAAAA,YAAAA,EAAAA,EACAC,YAAAA,OAAAA,IAAc,KACdlC,EAAAA,EAAAA,eACA3C,EAAAA,EAAAA,aACAuD,EAAAA,EAAAA,UACG9S,EAAAA,GAAAA,EAAAA,CARH2S,WACAsB,aACAC,cACAC,cACAC,cACAlC,iBACA3C,eACAuD,cAK8BzW,EAAAA,GAAAA,EAAAA,SAAe+X,GAAAA,GAA1CC,EAA2BhY,EAAAA,GAAhBiY,EAAgBjY,EAAAA,GAKlC,OACI,gBAACmX,G,uUAAAA,CAAAA,CAAgBzV,eAAe,uCAAuC3C,IAAKA,GAAS4E,GACjF,gBAACyT,GAAAA,KACG,gBAACC,GAAAA,CAAgBf,SAAUA,EAAUG,UAAWA,IAChD,gBAACa,GAAAA,CACG5V,eAAc,8CAAuE,QAAzBwW,EAAAA,GAAAA,GAAaN,KAExEA,GAEL,gBAACL,GAAAA,KAAmBM,GACnBC,GAAeA,EAAYK,OAAS,GACjC,gCACI,gBAACnI,GAAaA,KAAC,gBACf,gBAAC+E,GAAUA,KACN+C,EAAY7B,KAAI,SAACmC,EAAcC,G,OAC5B,gBAACvD,GAAcA,CAACqB,IAAK,cAAoB,OAANkC,IAAUD,E,OAK3DvC,GACE,gBAAC6B,GAAAA,CAAsBxE,aAAcA,EAAcjP,QAzB3C,WACpBgU,GAAcD,EAClB,GAwBoB,gBAACR,GAAAA,CAAWpO,KAAM4O,EAAY3T,EAAMC,QAAQwF,OAASzF,EAAM+F,KAAKE,cAC/D0N,EAAY,cAAgB,SAAS,gBAM9D,IAEJL,GAAUhO,YAAc,YAExB,U,okFC7JA,IAAM2O,GAAgB,CAClBC,SAAU,qBACVC,aAAc,0BACdC,OAAQ,SACRC,WAAY,aACZC,IAAK,OAGHC,IAAmBnL,EAAAA,EAAAA,IAASA,MAU5BoL,IAAmBtW,EAAAA,EAAAA,IAAOoT,GAAPpT,CAAiBoT,MAEpCwB,IAAkB5U,EAAAA,EAAAA,IAAOoV,GAAPpV,CAAgBoV,MAE3B,SAAChU,G,OAA+BA,EAAMmV,gBAAkB,QAAU,G,GAC9DF,GAAoB3L,EAAMC,YAGrC6L,GAAgBxW,EAAAA,GAAOC,IAAG,KACR6B,EAAMC,QAAQ0F,MAEhBiD,EAAMC,YACf,SAACvJ,G,OAA+BA,EAAMmV,gBAAkB,QAAU,O,IAGzEE,GAAsBzW,EAAAA,GAAOC,IAAG,KAKhCqW,IAOAI,GAAsB1W,EAAAA,GAAOC,IAAG,KACd6B,EAAMC,QAAQ0F,OAIhCkH,GAAgB3O,EAAAA,GAAOiB,EAAC,KACXsJ,EACFlK,EAAUU,OAEde,EAAM+F,KAAKS,iBAKXqO,GAAgBlZ,EAAAA,YACzB,WAaIjB,G,IA8BsBoa,EAzClBvD,EAAAA,EAAAA,UACAC,EAAAA,EAAAA,eACAC,EAAAA,EAAAA,WACA5C,EAAAA,EAAAA,aACAuD,EAAAA,EAAAA,UACA2C,EAAAA,EAAAA,cACAlH,EAAAA,EAAAA,mBACAC,EAAAA,EAAAA,oBACAwE,EAAAA,EAAAA,gBACGhT,EAAAA,GAAAA,EAAAA,CATHiS,YACAC,iBACAC,aACA5C,eACAuD,YACA2C,gBACAlH,qBACAC,sBACAwE,oBAK4C3W,EAAAA,GAAAA,EAAAA,SAAesY,GAAcK,KAAG,GAAzEU,EAAyCrZ,EAAAA,GAAvBsZ,EAAuBtZ,EAAAA,GACVA,EAAAA,GAAAA,EAAAA,SAAe,OAA9CuZ,EAA+BvZ,EAAAA,GAAlBwZ,EAAkBxZ,EAAAA,GACJA,EAAAA,GAAAA,EAAAA,SAAe,IAAE,GAA5CyZ,EAA2BzZ,EAAAA,GAAhB0Z,EAAgB1Z,EAAAA,GACsBA,EAAAA,GAAAA,EAAAA,UAAe,MAAhE2Z,EAAiD3Z,EAAAA,GAA3B4Z,EAA2B5Z,EAAAA,GAElD6Z,EAAiB7Z,EAAAA,OAA+B,MAEhD8Z,EAAkB9Z,EAAAA,OAA6B,MAG/C+Z,EAAmB,GAGrBC,EAA8B,CAAC,GAebb,EAmDTE,KAlDiBf,GAAcK,IACpC5C,OAAOC,KAAKJ,GAAWK,KAAI,SAACC,G,OACxBH,OAAOC,KAAKJ,EAAUM,GAAYE,QAAQH,KAAI,SAACI,G,OAC3CN,OAAOC,KAAKJ,EAAUM,GAAYE,OAAOC,GAAW4D,QAAQhE,KAAI,SAACiE,GAC7D,IAAMC,EAAQvE,EAAUM,GAAYE,OAAOC,GAAW4D,OAAOC,GAK7D,OAHIC,EAAMC,WACNJ,EAAyBG,GAEtBJ,EAAYM,KAAKF,EAC5B,G,OAQDhB,IAAsBb,GAAcC,SAC3CwB,EAAYM,KACR,CACItI,MAAO,mBACP8F,YACI,qFACJC,YAAa,GACbC,aAAa,EACbzB,SAAU,aACV/U,GAAI,aAER,CACIwQ,MAAO,eACP8F,YAAa,iFACbC,YAAa,GACbC,aAAa,EACbzB,SAAU,cACV/U,GAAI,WAGL4X,IAAsBb,GAAcE,cAC3CuB,EAAYM,KAAK,CACbtI,MAAO,aACP8F,YAAa,kFACbC,YAAa,GACbC,aAAa,EACbzB,SAAU,aACV/U,GAAI,YACJE,KAAM,SAOlB,IAA0CzB,EAAAA,GAAAA,EAAAA,SAAega,GAAAA,GAAlDM,EAAmCta,EAAAA,GAApBua,EAAoBva,EAAAA,GACIA,EAAAA,GAAAA,EAAAA,SAC1C+V,OAAOyE,UAAUC,eAAeC,KAAKV,EAAwB,aAD1DlB,EAAuC9Y,EAAAA,GAAtB2a,EAAsB3a,EAAAA,GAKxC4a,EAAwB,SAACT,GAvE3BpE,OAAOC,KAAKJ,GAAWK,KAAI,SAACC,G,OACxBH,OAAOC,KAAKJ,EAAUM,GAAYE,QAAQH,KAAI,SAACI,G,OAC3CN,OAAOC,KAAKJ,EAAUM,GAAYE,OAAOC,GAAW4D,QAAQhE,KAAI,SAACiE,GAE7D,OADctE,EAAUM,GAAYE,OAAOC,GAAW4D,OAAOC,GAC/CE,UAAW,CAC7B,G,OAoERD,EAAMC,UAAW,EACjBG,EAAiBJ,GACjBQ,GAAmB,GACnBf,GAAwB,EAC5B,EAGMiB,EAAuB,SAAC1b,EAAY8a,GACtCL,GAAwB,GACxBN,EAAoBna,EAAMC,OAAOS,OAC7BV,EAAMC,OAAOS,QAAUyY,GAAcK,KACrCa,EAAe,IAEnBE,EAAaO,GAEbH,EAAgBza,QAAQyb,UAAY,CACxC,EAgBMC,EAAehB,EAAYiB,QAAO,SAACC,GACrC,IAAMC,EAAc3B,EAAY4B,OAAOhD,OAAS,EAC1CiD,IAAiBH,EAAKI,cAAgBH,GACtCI,EAAwBL,EAAKlJ,MAAMwJ,cAAcC,SAASjC,GAChE,OAAOxD,OAAOC,KAAKiF,GAAMQ,MAAK,W,OAAML,GAAgBE,C,GACxD,IAWA,OARAtb,EAAAA,WAAgB,WACZ,IAAMsa,EAAgB7a,SAASic,cAAc,gBAA0C,OAA1B1B,EAAuBzY,GAAG,OAEnF+Y,IAAkBX,GAClBW,EAAcqB,eAAe,CAAEC,SAAU,SAAUC,MAAO,SAAU/M,OAAQ,WAEpF,IAGI,gCACI,gBAAC2C,GAAWA,KACR,gBAACC,GAAmBA,KAAE0H,EAAgB,eAAiB,aACvD,gBAACzH,GAAkBA,KACf,gBAACqH,G,uUAAAA,CAAAA,CACGvC,UAAWA,EACXvD,aAAcA,EACd0C,UAAWA,EACXC,eAAgBA,EAChBC,WAAYA,EACZ/W,IAAKA,GACD4E,GAEJ,gBAACuR,GAAsBvR,EACnB,gBAACoR,GAAUA,KACP,gBAACU,GAAeA,CACZ5T,SAAU,SAACZ,G,OAAM4Z,EAAqB5Z,E,EACtCyU,WAAY4C,GAAcC,SAC1BhD,QAAS8D,IAAqBf,GAAcC,SAC5CrF,aAAcA,EACdH,WAAY,wCACf,sBAGD,gBAAC0C,GAAeA,CACZ5T,SAAU,SAACZ,G,OAAM4Z,EAAqB5Z,E,EACtCyU,WAAY4C,GAAcE,aAC1BjD,QAAS8D,IAAqBf,GAAcE,aAC5CtF,aAAcA,EACdH,WAAY,6CACf,wBAGC+C,GACE,gBAACL,GAAeA,CACZ5T,SAAU,SAACZ,G,OAAM4Z,EAAqB5Z,E,EACtCyU,WAAY4C,GAAcG,OAC1BlD,QAAS8D,IAAqBf,GAAcG,OAC5CvF,aAAcA,EACdH,WAAY,4BACf,WAIH8C,GACE,gBAACJ,GAAeA,CACZ5T,SAAU,SAACZ,G,OAAM4Z,EAAqB5Z,E,EACtCyU,WAAY4C,GAAcI,WAC1BnD,QAAS8D,IAAqBf,GAAcI,WAC5CxF,aAAcA,EACdH,WAAY,gCACf,eAMT,gBAACoC,GAAcA,MAEf,gBAACV,GAAkBA,KACf,gBAACM,GAAUA,KACP,gBAACU,GAAeA,CACZ5T,SAAU,SAACZ,G,OAAM4Z,EAAqB5Z,E,EACtCyU,WAAY4C,GAAcK,IAC1BpD,QAAS8D,IAAqBf,GAAcK,IAC5CzF,aAAcA,EACdH,WAAY,yBACf,iBAGA6C,GACGG,OAAOC,KAAKJ,GAAWK,KAAI,SAACC,GACxB,OACI,gBAACpB,GAAcA,CAACqB,IAAK,eAA0B,OAAXD,IAE5B,gBAACxB,GAAeA,KACXkB,EAAUM,GAAYnE,OAG/B,gBAACgD,GAAUA,KACNgB,OAAOC,KAAKJ,EAAUM,GAAYE,QAAQH,KACvC,SAACI,GACG,IAAMyF,EACFlG,EAAUM,GAAYE,OAAOC,GACjC,OACI,gBAACZ,GAAeA,CACZ5T,SAAU,SAACZ,G,OACP4Z,EAAqB5Z,EAAG6a,EAAM7B,O,EAElCvE,WAAYoG,EAAMva,GAClB4U,IAAK,cAAwB,OAAVE,GACnBd,QAAS8D,IAAqByC,EAAMva,GACpC2R,aAAcA,EACdH,WAAY,qBAA8B,OAAT+I,EAAMva,KAEtCua,EAAM/J,MAGnB,KAKpB,OAIhB,gBAACgH,GAAAA,CAAcD,gBAAiBA,GAC5B,gBAACG,GAAAA,KACG,gBAACxF,GAAYA,CACTC,YAAa,kBACbR,aAAcA,EACdS,aA9IL,SAACxU,GACxBqa,EAAera,EAAMC,OAAOS,MAAM0b,eAClCjC,EAAoBhB,GAAcK,IACtC,EA4IgC/E,kBAzIA,WAC5B4F,EAAe,IAEfK,EAAexa,QAAQkT,OAC3B,EAsIgCsB,WAAY0F,EACZxa,IAAK8a,KAGb,gBAACjD,GAAkBA,CAAC7X,IAAK+a,GACpB/D,OAAOgG,OAAOzD,IAAekD,SAASnC,GACnC0B,EAAa5C,QAAU,EACnB4C,EAAa9E,KAAI,SAACkE,GACd,OACI,gBAACtD,GAASA,CACNJ,UAAWA,EACXH,SAAU6D,EAAM7D,SAChBQ,UAAWqD,EAAMpI,MACjBxQ,GAAI4Y,EAAM5Y,GACVM,SAAU,W,OAAM+Y,EAAsBT,E,EACtChE,IAAKgE,EAAM5Y,GACX2R,aAAcA,EACd8D,WAAYmD,EAAMC,SAClBrH,WAAY,eAAwB,OAAToH,EAAM5Y,IACjCoV,gBAAiBA,GAG7B,IAEA,gBAACzF,GAAaA,KACTmI,IAAqBf,GAAcG,OAC9B,oCACAY,IAAqBf,GAAcI,WACnC,gCACA,6BAAyC,OAAZa,EAAY,MAIvDE,EAAUxD,KAAI,SAACkE,GACX,OACI,gBAACtD,GAASA,CACNJ,UAAWA,EACXH,SAAU6D,EAAM7D,SAChBQ,UAAWqD,EAAMpI,MACjBxQ,GAAI4Y,EAAM5Y,GACVM,SAAU,W,OAAM+Y,EAAsBT,E,EACtChE,IAAKgE,EAAM5Y,GACX2R,aAAcA,EACd8D,WAAYmD,EAAMC,SAClBrH,WAAY,eAAwB,OAAToH,EAAM5Y,IACjCoV,gBAAiBA,GAG7B,MAKXmC,GACG,gBAAC3B,GAAeA,CACZ2B,gBAAiBA,EACjBrC,UAAWA,EACXH,SAAUgE,EAAchE,SACxBsB,WAAY0C,EAAcvI,MAC1BmB,aAAcA,EACd2E,YAAayC,EAAczC,YAC3BC,YAAawC,EAAcxC,YAC3BjC,eAAgBA,MAKhC,gBAACpG,GAAiBA,CAACmC,gBAAiBJ,GAAgBwK,OAChD,gBAACpN,GAAYA,CACT5M,OAAQ,8BACRiC,QAASkO,EACTnO,UAAW8U,GAAmBM,IAAkBkB,EAAc/Y,GAC9D1B,MAAOsG,KAAKC,UAAUkU,IAErBlB,EAAgB,SAAW,OAEhC,gBAACxK,GAAYA,CACTG,MAAOyD,EAAMpE,QACbpM,OAAQ,iCACRiC,QAASiO,GACZ,YAOrB,I,ysEAEJgH,GAAcvP,YAAc,gBCvZ5B,IAAMsS,GAAa1Z,EAAAA,GAAOC,IAAG,MACvBuS,GAAaxS,EAAAA,GAAOyS,GAAE,MAEC,SAACrR,G,OAAWA,EAAMuY,aAAevY,EAAMuY,aAAgB,G,IAG9EC,GAAyB5Z,EAAAA,GAAOC,IAAG,MAKnCsS,GAAiBvS,EAAAA,GAAOqS,GAAE,MAK1BwH,GAAc7Z,EAAAA,GAAOwB,OAAM,KAELM,EAAM+F,KAAKE,aACT,SAAC3G,G,OAAWA,EAAM0Y,SAAWjP,EAAOxC,WAAc,G,IACjD,SAACjH,G,OAAWA,EAAM2Y,QAAUlP,EAAOxC,WAAc,G,GAClDvG,EAAM+F,KAAKE,aACpB,SAAC3G,G,OACdA,EAAMyW,SAAW,aAAiC,OAApB/V,EAAMC,QAAQ0F,OAAU,aAAoC,OAAvB3F,EAAM+F,KAAKE,Y,GACzDjG,EAAM+F,KAAKE,YACvB1H,EAAUqM,QAGZtC,EAAQsC,QAAWtC,EAAQrJ,OAClBe,EAAMC,QAAQ0F,OACzB,SAACrG,G,OAAWA,EAAMyW,UAAYzW,EAAMoL,MAAQpL,EAAMoL,MAAMjB,KAAOzJ,EAAM+F,KAAKO,U,IACzE,SAAChH,G,OAAWA,EAAMyW,SAAW,UAAY,S,IAO3B,SAACzW,G,OAAWA,EAAMyW,SAAW/V,EAAMC,QAAQ0F,OAAQmJ,EAAAA,EAAAA,IAAO,GAAK9O,EAAMC,QAAQ0F,M,IAGnG+O,GAAgBxW,EAAAA,GAAOC,IAAG,KACR6B,EAAMC,QAAQ0F,MACd3F,EAAM+F,KAAKE,YACJ8C,EAAOxC,WACLwC,EAAOxC,WACNwC,EAAOxC,WAC1B+B,EAAQrJ,OAAUqJ,EAAQnI,OAC1B,SAACb,G,OAAWA,EAAMyW,SAAW,QAAU,M,IAGhDmC,GAAOvc,EAAAA,YAA4C,WAAyBjB,G,IAAtBgG,EAAAA,EAAAA,SAAapB,EAAAA,GAAAA,EAAAA,CAAboB,a,OACxD,gBAACkX,GAAAA,GAAAA,CAAWld,IAAKA,GAAS4E,GACrBoB,E,IAGTwX,GAAK5S,YAAc,OAEnB,IAQM6S,GAAWxc,EAAAA,YACb,WAAqEjB,G,IAAlEgG,EAAAA,EAAAA,SAAUsX,EAAAA,EAAAA,SAAUC,EAAAA,EAAAA,QAASlC,EAAAA,EAAAA,SAAUpY,EAAAA,EAAAA,OAAQ+P,EAAAA,EAAAA,MAAUpO,EAAAA,GAAAA,EAAAA,CAAzDoB,WAAUsX,WAAUC,UAASlC,WAAUpY,SAAQ+P,U,OAC9C,gBAACqK,GAAAA,GAAAA,CACGC,SAAUA,EACVC,QAASA,EACT7a,KAAM,SACNC,eAAcM,EACdoY,SAAUA,EACVrI,MAAOA,EACPhT,IAAKA,GACD4E,GAEHoB,E,IAIbyX,GAAS7S,YAAc,WAEvB,IAAM8S,GAAazc,EAAAA,YAAkD,WAAmCjB,G,IAAhCgG,EAAAA,EAAAA,SAAUqV,EAAAA,EAAAA,SAAazW,EAAAA,GAAAA,EAAAA,CAAvBoB,WAAUqV,a,OAC9E,gBAACrB,GAAaA,GAAAA,CAACqB,SAAUA,EAAUrb,IAAKA,GAAS4E,GAC5CoB,E,IAGT0X,GAAW9S,YAAc,aAEzB,IC9IA,GD8IA,G,88CE7HA,IAAM+S,GAA2Bna,EAAAA,GAAOoa,MAAK,MAMvCC,GAAkBra,EAAAA,GAAOsa,GAAE,MAK3BC,GAAcva,EAAAA,GAAOsa,GAAE,MAGL,SAAClZ,G,OAAUA,EAAM8K,K,IAInCsO,GAAYxa,EAAAA,GAAOC,IAAG,KAItBsa,GAAgCA,IAYhCE,GAAgBza,EAAAA,GAAOsa,GAAE,MAKlBI,GAAiF,Y,IAC1FxO,EAAAA,EAAAA,MACAyO,EAAAA,EAAAA,QACAlb,EAAAA,EAAAA,OACAmb,EAAAA,EAAAA,cACGxZ,EAAAA,GAAAA,EAAAA,CAJH8K,QACAyO,UACAlb,SACAmb,kBAGMC,EAAYrH,OAAOC,KAAKkH,GAASjH,KAAI,SAACoH,G,OACxC,gBAACC,KAAAA,CAAGnH,IAAKkH,GACL,gBAACT,GAAAA,KAAiBS,GAClB,gBAACL,GAAAA,MACD,gBAACF,GAAAA,CACGrO,MAAOyO,EAAQG,GAAWE,KAC1BhX,UAAWkI,IAAUyO,EAAQG,GAAWE,KAAO,SAAW,GAC1DtZ,QAAS,W,OAAMkZ,EAAcD,EAAQG,GAAWE,K,GAEhD,gBAACR,GAAAA,OAEL,gBAACC,GAAAA,MACAE,EAAQG,GAAWG,OAAOvH,KAAI,SAACwH,EAAYpF,G,OACxC,gBAACyE,GAAAA,CACG3G,IAAKkC,EACL5J,MAAOgP,EACPlX,UAAWkI,IAAUgP,EAAa,SAAW,GAC7CxZ,QAAS,W,OAAMkZ,EAAcM,E,GAE7B,gBAACV,GAAAA,M,IAGT,gBAACC,GAAAA,MACAE,EAAQG,GAAWK,MAAMzH,KAAI,SAAC0H,EAAMtF,G,OACjC,gBAACyE,GAAAA,CACGrO,MAAOkP,EACPxH,IAAKkC,EACL9R,UAAWkI,IAAUkP,EAAO,SAAW,GACvC1Z,QAAS,W,OAAMkZ,EAAcQ,E,GAE7B,gBAACZ,GAAAA,M,QAKjB,OACI,gBAACL,G,uUAAAA,CAAAA,CAAyBhb,eAAc,GAAU,OAAPM,IAAc2B,GACrD,gBAACia,QAAAA,KAAOR,GAGpB,E,+uBC7FA,IAAMS,GAAgCtb,EAAAA,GAAOC,IAAG,MAM1Csb,GAAS,CACXC,WAAY,CACRC,SAAU,WACVC,QAAS,OACTC,cAAe,eAEnBtZ,MAAO,CACHyE,OAAQ,GACRlG,MAAO,GACPgb,OAAQ,oBACRC,YAAa,EACbC,aAAc,OACdC,UAAW,cAEfjd,MAAO,CACH2c,SAAU,WACVO,IAAK,MACLC,KAAM,MACNrb,MAAO,OACPsb,cAAe,YACfpV,OAAQ,OACRqV,WAAY,OACZC,SAAU,SAILC,GAA0B5e,EAAAA,YACnC,WAAmCjB,G,IAAhC8f,EAAAA,EAAAA,IAAKC,EAAAA,EAAAA,IAAKjd,EAAAA,EAAAA,SAAa8B,EAAAA,GAAAA,EAAAA,CAAvBkb,MAAKC,MAAKjd,aACH8R,EAAe,SAAC3N,GACdA,EAAK,KC5CU,SAAC6Y,GAC5B,GAAY,gBAARA,EACA,OAAO,EAGX,IAAME,EAA+B,MAA1BC,OAAOH,GAAKI,OAAO,GAAa,EAAI,EAC/C,OAAOJ,EAAI1G,SAAW,EAAI4G,GAAMF,EAAI1G,OAAS,EAAI4G,IAAMG,EAAAA,GAAAA,GAAUL,GAAKM,SAC1E,CDsCgBC,CAAgBpZ,EAAK,OACjBnE,EAAS,CACLgd,IAAK7Y,EAAK,KACVqZ,OAAQ,SAETrZ,EAAQ,GAAKA,EAAQ,GAAKA,EAAQ,IACzCnE,EAAS,CACLyd,EAAGtZ,EAAQ,IAAK8Y,aAAAA,EAAAA,EAAKQ,GACrBC,EAAGvZ,EAAQ,IAAK8Y,aAAAA,EAAAA,EAAKS,GACrBzY,EAAGd,EAAQ,IAAK8Y,aAAAA,EAAAA,EAAKhY,GACrBuY,OAAQ,OAGpB,EAEA,OACI,gBAACxB,G,uUAAAA,CAAAA,CAA8B9e,IAAKA,GAAS4E,GACzC,gBAAC6b,GAAAA,GAAaA,CACVC,MAAO,CAAEC,KAAM5B,GAAOC,WAAY1c,MAAOyc,GAAOzc,MAAOuD,MAAOkZ,GAAOlZ,OACrEvD,MAAM,IACNxB,MAAOif,aAAAA,EAAAA,EAAKQ,EACZzd,SAAU8R,IAEd,gBAAC6L,GAAAA,GAAaA,CACVC,MAAO,CAAEC,KAAM5B,GAAOC,WAAY1c,MAAOyc,GAAOzc,MAAOuD,MAAOkZ,GAAOlZ,OACrEvD,MAAM,IACNxB,MAAOif,aAAAA,EAAAA,EAAKS,EACZ1d,SAAU8R,IAEd,gBAAC6L,GAAAA,GAAaA,CACVC,MAAO,CAAEC,KAAM5B,GAAOC,WAAY1c,MAAOyc,GAAOzc,MAAOuD,MAAOkZ,GAAOlZ,OACrEvD,MAAM,IACNxB,MAAOif,aAAAA,EAAAA,EAAKhY,EACZjF,SAAU8R,IAEd,gBAAC6L,GAAAA,GAAaA,CACVC,MAAO,CAAEC,KAAM5B,GAAOC,WAAY1c,MAAOyc,GAAOzc,MAAOuD,MAAOkZ,GAAOlZ,OACrEvD,MAAM,IACNxB,MAAOgf,aAAAA,EAAAA,EAAKc,QAAQ,IAAK,IACzB9d,SAAU8R,IAI1B,I,2jBAGJiL,GAAwBjV,YAAc,0BEzFtC,IAAMiW,GAAiCrd,EAAAA,GAAOC,IAAG,MAa3Cqd,GAA2B,WAC7B,OAAO,gBAACD,GAAAA,KACZ,EAEME,GAAuCvd,EAAAA,GAAOC,IAAG,MAIrC,Y,IAAGud,EAAAA,EAAAA,IAEb,QADiBA,aAAAA,EAAAA,EAAKC,IAAK,GAAK,GACf,uBAAyB,sBAC9C,IAIEC,GAAiC,Y,IAAGF,EAAAA,EAAAA,I,OACtC,gBAACD,GAAAA,CAAqCC,IAAKA,G,klECf/C,IAAMG,GAAe3d,EAAAA,GAAOC,IAAG,MAGb,SAACmB,G,OAAUA,EAAM8K,K,IAG7B0R,GAAY5d,EAAAA,GAAOC,IAAG,MAQtB4d,GAAmB7d,EAAAA,GAAOC,IAAG,MAQ7B6d,GAAW9d,EAAAA,GAAOC,IAAG,MAKrB8d,GAA0B/d,EAAAA,GAAOC,IAAG,MAKpC+d,GAAoBvgB,EAAAA,YACtB,WAAwCjB,G,IAArCiD,EAAAA,EAAAA,OAAQyM,EAAAA,EAAAA,MAAO5M,EAAAA,EAAAA,SAAa8B,EAAAA,GAAAA,EAAAA,CAA5B3B,SAAQyM,QAAO5M,aACd,OACI,gBAACye,GAAAA,GAAAA,GAAAA,CAAwBvhB,IAAKA,GAAS4E,GAAAA,CAAOjC,eAAcM,IACxD,gBAACoe,GAAAA,KAEG,gBAACI,GAAAA,GAAUA,GAAAA,GAAAA,CAAAA,EAAK7c,GAAAA,CAAO8K,MAAOA,EAAOgS,QAASR,GAAgCpe,SAAUA,MAE5F,gBAACse,GAAAA,KACG,gBAACO,GAAAA,GAAGA,GAAAA,GAAAA,CAAAA,EACI/c,GAAAA,CACJgd,UAAU,WACVlS,MAAOA,EACPgS,QAASZ,GACThe,SAAUA,MAGlB,gBAACwe,GAAAA,KACG,gBAACzB,GAAuBA,GAAAA,GAAAA,CAAAA,EAAKjb,GAAAA,CAAO9B,SAAUA,KAC9C,gBAACqe,GAAAA,CAAazR,MAAO9K,EAAMkb,IAAKnd,eAAc,GAAU,OAAPM,EAAO,mBAIxE,IAGJue,GAAkB5W,YAAc,oBAEzB,IAAMiX,IAAkBC,EAAAA,GAAAA,IAAaN,I,q0OChD5C,IAAMO,GAAiB,CACnB,CACIvf,GAAI,QACJwQ,MAAO,WACPgP,YAAa,WACbC,QAAS,0BAEb,CACIzf,GAAI,QACJwQ,MAAO,OACPgP,YAAa,OACbC,QAAS,sBAEb,CACIzf,GAAI,QACJwQ,MAAO,SACPgP,YAAa,GACbC,QAAS,wBAIX7E,IAAyB5Z,EAAAA,EAAAA,KP2DN,Y,IAAGwC,EAAAA,EAAAA,SAAapB,EAAAA,GAAAA,EAAAA,CAAboB,a,OACxB,gBAACoX,GAA2BxY,EAAQoB,E,GO5DTxC,CAAuB0e,MAIhDC,IAAgB3e,EAAAA,EAAAA,KP0DN,Y,IAAGwC,EAAAA,EAAAA,SAAapB,EAAAA,GAAAA,EAAAA,CAAboB,a,OAAuC,gBAACgQ,GAAepR,EAAQoB,E,GO1D5DxC,CAAc4e,MAI9BrM,IAAiBvS,EAAAA,EAAAA,KPuDH,Y,IAAGwC,EAAAA,EAAAA,SAAapB,EAAAA,GAAAA,EAAAA,CAAboB,a,OACnB,gBAAC+P,GAAmBnR,EAAQoB,E,GOxDTxC,CAAkB6e,MAUnCC,IAAiB9e,EAAAA,EAAAA,IAAOia,GAAPja,CAAeia,MAIhC8E,IAAmB/e,EAAAA,EAAAA,IAAOka,GAAPla,CAAiBka,KAEdpY,EAAM+F,KAAKE,aAKjCiX,GAAoBhf,EAAAA,GAAOC,IAAG,KAEZ6B,EAAMC,QAAQ0F,MACd3F,EAAM+F,KAAKE,aAItBkX,GAAcxhB,EAAAA,YACvB,WAWIjB,G,IATI0P,EAAAA,EAAAA,MACAgT,EAAAA,EAAAA,SACAC,EAAAA,EAAAA,eAAAA,EAAAA,EACAC,YAAAA,OAAAA,IAAc,UACd3f,OAAAA,OAAAA,IAAS,mBACT4f,EAAAA,EAAAA,cACAC,EAAAA,EAAAA,YACGle,EAAAA,GAAAA,EAAAA,CAPH8K,QACAgT,WACAC,iBACAC,cACA3f,SACA4f,gBACAC,gBAK0B5N,EAAAA,IAAAA,EAAAA,EAAAA,UAAS6M,IAAAA,GAAhCgB,EAAuB7N,EAAAA,GAAd8N,EAAc9N,EAAAA,GACEA,EAAAA,IAAAA,EAAAA,EAAAA,WAE3B0N,QAAAA,EAAeG,EAAQ3J,OAAS,GAAK2J,EAAQ3J,OAASwJ,EAAcG,EAAQ3J,OAAS,MAFnF7D,EAAyBL,EAAAA,GAAf+N,EAAe/N,EAAAA,GAIQA,EAAAA,IAAAA,EAAAA,EAAAA,UAASxF,GAAAA,GAA1CwT,EAAiChO,EAAAA,GAAnBiO,EAAmBjO,EAAAA,GAElCkO,EAAgBV,QAAAA,EAAYW,GAAAA,EAO5BC,EAAoB,SAAC5T,GACvB,IAAMoQ,EAAMpQ,EAAMoQ,IAAMpQ,EAAMoQ,IAAMpQ,EAEpCyT,EAAgBrD,GAChB+C,EAAc/C,EAClB,EA+BA,OA7BA5f,EAAAA,EAAAA,YAAU,WACN,IACUqjB,EAOAC,EACAC,EARAF,EAAoB,CACtB/gB,GAAI,QACJwQ,MAAO,kBACPgP,YAAaW,QAAAA,EAAkB,GAC/BV,QAAS,yBAGPuB,EAAuBb,GAAqC,aAAnBA,EACzCc,GAA0BV,EAAQ7L,KAAI,SAACwM,G,OAAMA,EAAElhB,E,IAAIia,SAAS8G,EAAkB/gB,IAEhFghB,GACAC,GACAzM,OAAOC,KAAKmM,GAAe3G,SAASkG,KAEpCK,EAAW,CAACO,GAAD,OAAoB,GAAGxB,MAClCkB,EAAYL,QAAAA,EAAe,GAKvC,GAAG,CAACD,EAAgBS,EAAeR,EAAaG,KAEhD7iB,EAAAA,EAAAA,YAAU,WAEN+iB,GAAaL,QAAAA,EAAeG,EAAQ3J,OAAS,GAAK2J,EAAQ3J,OAASwJ,EAAcG,EAAQ3J,OAAS,EACtG,GAAG,CAACwJ,EAAaG,IAGb,gBAACP,GAAAA,G,uUAAAA,CAAAA,CAAAA,EAAsB5d,GAAAA,CAAO5E,IAAKA,EAAK2C,eAAc,GAAU,OAAPM,KACrD,gBAACua,GAAIA,KACD,gBAACJ,GAAsBA,KACnB,gBAAC+E,GAAAA,KACIY,EAAQ7L,KAAI,SAACyM,EAAUrK,G,OACpB,gBAACvD,GAAcA,CAACqB,IAAK,OAAc,OAAPuM,EAAInhB,KAC5B,gBAAC8f,GAAAA,CACGhF,SAAoB,IAAVhE,EACViE,QAASjE,IAAUyJ,EAAQ3J,OAAS,EACpCnW,OAAQ,GAAsBkW,OAAnBlW,EAAO,cAAkD,QAAtCkW,EAAAA,GAAAA,GAAawK,EAAI3Q,MAAMwJ,gBACrDnB,SAAU9F,IAAa+D,EACvBpU,QAAS,W,OApDrC+d,EADqBW,EAqDsCtK,QAnD3DwJ,GAAeA,EAAYc,IAFP,IAACA,C,EAsDO5Q,MAAO2Q,EAAI3Q,OAEV2Q,EAAI3Q,OAAS,O,MAMjC+P,EAAQ7L,KAAI,SAACyM,EAAUrK,G,OACpB,gBAACiJ,GAAAA,CAAiBlH,SAAU9F,IAAa+D,EAAOlC,IAAK,WAAkB,OAAPuM,EAAInhB,KACjD,WAAdmhB,EAAI3Q,MACD,gBAAC6O,GAAeA,CACZnS,MAAOwT,EACPjgB,OAAQ,GAAU,OAAPA,EAAO,WAClBH,SAAUwgB,IAGd,gBAACpF,GAAkBA,CACfxO,MAAOwT,EACP/E,QAASiF,EAAcO,EAAI3B,aAC3B/e,OAAQ,GAAU,OAAPA,EAAO,YAClBmb,cAAekF,I,KAQ/C,IAGJb,GAAY7X,YAAc,c,+5EChL1B,IAAMiZ,GAASrgB,EAAAA,GAAOC,IAAG,MAEZ,Y,IAAGW,EAAAA,EAAAA,M,MAAY,GAAS,OAANA,EAAM,K,IACvB,Y,IAAGkG,EAAAA,EAAAA,O,MAAa,GAAU,OAAPA,EAAO,K,IAGhB,SAAC1F,G,OAAUA,EAAM8K,K,IAInC8S,IAAoBhf,EAAAA,EAAAA,IAAOif,GAAPjf,CAAkBif,MAKtCqB,GAA2BtgB,EAAAA,GAAOC,IAAG,MAE9BsgB,GAAqB9iB,EAAAA,YAC9B,WAYIjB,G,IAVI0P,EAAAA,EAAAA,MACAiT,EAAAA,EAAAA,eACAD,EAAAA,EAAAA,SAAAA,EAAAA,EACAsB,OAAAA,OAAAA,IAAS,SACT5f,MAAAA,OAAAA,IAAQ,WACRkG,OAAAA,OAAAA,IAAS,WACTrH,OAAAA,OAAAA,IAAS,2BACT4f,EAAAA,EAAAA,cACGje,EAAAA,GAAAA,EAAAA,CARH8K,QACAiT,iBACAD,WACAsB,SACA5f,QACAkG,SACArH,SACA4f,kBAKEoB,EAAiBhjB,EAAAA,SACjBijB,EAAYjjB,EAAAA,SAC4BiU,EAAAA,IAAAA,EAAAA,EAAAA,UAAS8O,GAAAA,GAAhDG,EAAuCjP,EAAAA,GAAtBkP,EAAsBlP,EAAAA,GACNA,EAAAA,IAAAA,EAAAA,EAAAA,UAASxF,GAAAA,GAA1CwT,EAAiChO,EAAAA,GAAnBiO,EAAmBjO,EAAAA,GACJA,EAAAA,IAAAA,EAAAA,EAAAA,UAAS,MAAtCmP,EAA6BnP,EAAAA,GAAjBoP,EAAiBpP,EAAAA,GAE9BqP,GAAoBC,EAAAA,EAAAA,cACtB,W,OAAMJ,GAAoBD,E,GAC1B,CAACA,EAAiBC,IAiCtB,OAvBAlkB,EAAAA,EAAAA,YAAU,W,IACGukB,EAAT,SAA2BviB,GACDiiB,GAA6B,WAAVjiB,EAAEkV,KAC1BgN,GAAmB,GAEZ1jB,SAASgkB,gBAAkBR,EAAU5jB,SACP,MAAV4B,EAAEkV,KAC1BmN,GACxB,EAIA,OAFA7jB,SAASE,iBAAiB,UAAW6jB,GAE9B,WACH/jB,SAASC,oBAAoB,UAAW8jB,EAC5C,CACJ,GAAG,CAACN,EAAiBC,EAAoBG,KAEzCrkB,EAAAA,EAAAA,YAAU,WACNijB,EAAgBzT,EACpB,GAAG,CAACA,KAEJ3P,EAAAA,GAAAA,GAAgBkkB,EAAgBM,GAG5B,gBAACT,GAAAA,G,uUAAAA,CAAAA,CAAAA,EAA6Blf,GAAAA,CAAO5E,IAAKA,IACtC,gBAAC6jB,GAAAA,CACGnU,MAAOwT,EACP9e,MAAOA,EACPkG,OAAQA,EACRiL,SAAU,EACVvV,IAAKkkB,EACLhf,QAASqf,EACT5hB,eAAc,GAAU,OAAPM,EAAO,kBAE3BkhB,GACG,gBAAC3B,GAAiBA,CACd9S,MAAOwT,EACPP,eAAgBA,EAChBD,SAAUA,EACV1iB,IAAKikB,EACLhhB,OAAQ,GAAU,OAAPA,EAAO,kBAClB2f,YAAayB,EACbvB,YAAawB,EACbzB,cAlDU,SAACnT,GACvB,IAAMoQ,EAAMpQ,EAAMoQ,IAAMpQ,EAAMoQ,IAAMpQ,EAEpCyT,EAAgBrD,GAChB+C,EAAc/C,EAClB,IAkDJ,I,4+FAGJiE,GAAmBnZ,YAAc,qBC7E1B,IAAM+Z,GAAoBnhB,EAAAA,GAAOC,IAAG,KACzBmK,EAAQjJ,MAINiJ,EAAQnI,OAGfmf,GAAiBphB,EAAAA,GAAOkE,GAAE,KAEpBqG,EACFlK,EAAU4B,MAITmI,EAAQrJ,QAGbwR,GAAiBvS,EAAAA,GAAOqS,GAAE,MAO1BG,GAAaxS,EAAAA,GAAOyS,GAAE,KAEjBrI,EAAQrJ,OAGpBwR,GACkBnI,EAAQrJ,OAEtBwR,IAQG8O,GAAmBrhB,EAAAA,GAAOC,IAAG,KAGlB6B,EAAM8G,MAAMC,mBALA,OAMauB,EAAQnI,MAIjDuQ,GACepI,EAAQnI,OAIlB2Q,GAAiB5S,EAAAA,GAAO6S,GAAE,KAGdzI,EAAQ9J,QACnB8J,EAAQrJ,OAAUqJ,EAAQ9J,QAAW8J,EAAQrJ,OAAUqJ,EAAQnI,OAGvE6Q,GAAc9S,EAAAA,GAAOlB,MAAK,KACRgD,EAAM8G,MAAMC,oBAI9BkK,GAAkB/S,EAAAA,GAAOC,IAAG,KAIfsK,EACFlK,EAAU4B,OAEH,SAACb,G,OAAyCA,EAAM4R,QAAUlR,EAAMC,QAAQ0F,MAAQ,a,GAC3F3F,EAAMQ,MAAMC,WAKG,SAACnB,G,OACjBA,EAAM4R,QAAUlR,EAAMC,QAAQ0F,OAAQsB,EAAAA,EAAAA,IAAe,MAAOjH,EAAMC,QAAQ0F,M,IAIhF6F,IAAgBtN,EAAAA,EAAAA,IAAOuN,EAAAA,GAAPvN,CAAmBuN,MAI1B,SAACnM,G,OAAyCA,EAAM4R,QAAU,EAAI,C,IAGvEmB,GAAQnU,EAAAA,GAAOqC,MAAMiK,OAAuB,Y,MAAqB,CACnE,eADiDkE,EAAAA,W,GAAvCxQ,C,MAIRiT,IAAcjT,EAAAA,EAAAA,IAAOmU,GAAPnU,CAAYmU,KAOhBpB,IACG,SAAC3R,G,OAAqCA,EAAMuP,aAAe,qBAAuB,G,IAClF,SAACvP,G,OACRA,EAAMuP,aAAe,oCAAsC,G,IAI1DuC,GAAkBzV,EAAAA,YAC3B,WAA2FjB,G,IAAxFgG,EAAAA,EAAAA,SAAUlD,EAAAA,EAAAA,SAAUoC,EAAAA,EAAAA,QAASyR,EAAAA,EAAAA,WAAYH,EAAAA,EAAAA,QAASrC,EAAAA,EAAAA,aAAcH,EAAAA,EAAAA,WAAepP,EAAAA,GAAAA,EAAAA,CAA/EoB,WAAUlD,WAAUoC,UAASyR,aAAYH,UAASrC,eAAcH,e,OAC/D,gBAAC+B,GAAcA,GAAAA,CAAC7Q,QAASA,GAAaN,GAClC,gBAAC0R,GAAWA,KACR,gBAACG,GAAWA,CACRtC,aAAcA,EACdzR,KAAM,QACNG,KAAM,aACN7C,IAAKA,EACLc,MAAO6V,EACP7T,SAAUA,EACV0T,QAASA,EACTxC,WAAYA,IAEhB,gBAACuC,GAAeA,CAACpC,aAAcA,EAAcqC,QAASA,GACjDxQ,EAAS,IAAC,gBAAC8K,GAAaA,CAAC0F,QAASA,M,IAMvDE,GAAgB9L,YAAc,kBAE9B,IAAMka,GAAY7jB,EAAAA,YACd,WAAsFjB,G,IAAnF8C,EAAAA,EAAAA,SAAUiiB,EAAAA,EAAAA,SAAUjO,EAAAA,EAAAA,eAAgBC,EAAAA,EAAAA,WAAYP,EAAAA,EAAAA,QAASrC,EAAAA,EAAAA,aAAiBvP,EAAAA,GAAAA,EAAAA,CAA1E9B,WAAUiiB,WAAUjO,iBAAgBC,aAAYP,UAASrC,iB,OACxD,gBAAC0Q,GAAAA,GAAAA,CAAiB7kB,IAAKA,GAAS4E,GAC5B,gBAACoR,GAAUA,KACP,gBAACU,GAAeA,CACZ5T,SAAUA,EACV6T,WAAY,oBACZxC,aAAcA,EACdqC,QAASA,EACTxC,WAAY,sCACf,sBAGC+C,GACE,gBAACL,GAAeA,CACZ5T,SAAUA,EACV6T,WAAY,SACZxC,aAAcA,EACdqC,QAASA,EACTxC,WAAY,2BACf,WAIH8C,GACE,gBAACJ,GAAeA,CACZ5T,SAAUA,EACV6T,WAAY,aACZxC,aAAcA,EACdqC,QAASA,EACTxC,WAAY,+BACf,eAMT,gBAACoC,GAAcA,MACf,gBAACuO,GAAAA,KACG,gBAAC3O,GAAUA,KACP,gBAACU,GAAeA,CACZ5T,SAAUA,EACV6T,WAAY,MACZxC,aAAcA,EACdqC,QAASA,EACTxC,WAAY,wBACf,UAGA+Q,GACG/N,OAAOC,KAAK8N,GAAU7N,KAAI,SAACC,GACvB,OACI,gBAACpB,GAAcA,CAACqB,IAAK,eAA0B,OAAXD,IAChC,gBAACyN,GAAAA,KAAgBG,EAAS5N,GAAYnE,OACtC,gBAACgD,GAAUA,KACNgB,OAAOC,KAAK8N,EAAS5N,GAAYE,QAAQH,KAAI,SAACI,GAC3C,OACI,gBAACZ,GAAeA,CACZ5T,SAAUA,EACV6T,WAAYoO,EAAS5N,GAAYE,OAAOC,GAAW9U,GACnD4U,IAAK,cAAwB,OAAVE,GACnBnD,aAAcA,EACdqC,QAASA,EACTxC,WAAY,oBAAoE,OAAhD+Q,EAAS5N,GAAYE,OAAOC,GAAWC,WAEtEwN,EAAS5N,GAAYE,OAAOC,GAAWtE,MAGpD,KAIhB,M,IAMxB8R,GAAUla,YAAc,YAExB,U,ozECvNA,I,GAAMoa,GAAqBxhB,EAAAA,GAAOC,IAAG,MAQ/BwhB,GAAQzhB,EAAAA,GAAOlB,MAAMwN,OAAuB,Y,MAAqB,CACnE,eADiDkE,EAAAA,W,GAAvCxQ,C,MAIR8S,IAAc9S,EAAAA,EAAAA,IAAOyhB,GAAPzhB,CAAOyhB,MAQdxN,GAAajU,EAAAA,GAAOC,IAAG,KAGZ6B,EAAM+F,KAAKM,iBAIP,SAAC/G,G,IAAaA,E,MAAH,GAA2BA,OAAT,QAAfA,EAAAA,EAAM8S,iBAAN9S,IAAAA,EAAAA,EAAmB,IAAoB,OAAfA,EAAM2S,SAAS,OAAI,GAC7DjS,EAAM+F,KAAKM,gBAKNuC,EAAMC,YAG7BoI,GAAkB/S,EAAAA,GAAOC,IAAG,KAOjBI,EAAU4B,MAER5B,EAAUc,MAGLW,EAAMC,QAAQ0F,OAIhCia,GAAgB1hB,EAAAA,GAAOC,IAAG,MAS1BgT,GAAcjT,EAAAA,GAAOqC,MAAK,KAQpB4R,GAKIA,IACG,SAAC7S,G,OAAWA,EAAMuP,aAAe,qBAAuB,G,IACxD,SAACvP,G,OAAWA,EAAMuP,aAAe,oCAAsC,G,GAI9EsD,IACgB,SAAC7S,G,IACYA,E,OAAzBA,EAAMgT,kBAA8B,QAAXhT,EAAAA,EAAMoL,aAANpL,IAAAA,OAAAA,EAAAA,EAAaoK,YAAapK,EAAMoL,MAAMhB,WAAa1J,EAAMQ,MAAMC,S,IAI9F,SAACnB,G,OACEA,EAAMgT,iBACP,mBAGwBtS,OAFpBiR,GAAgB,yEAMhBA,OAJoBjR,EAAMQ,MAAMC,UAAU,8GAIvBmf,OAAnB3O,GAAgB,KACoBjR,OADjB4f,GAAc,0DACyB,OAAtB5f,EAAMQ,MAAMC,UAAU,sD,IAM7Dof,GAA2B3hB,EAAAA,GAAOC,IAAG,MAUrC2hB,GAAcnkB,EAAAA,YACvB,WAaIjB,G,IAXIuX,EAAAA,EAAAA,SACAQ,EAAAA,EAAAA,UACAvV,EAAAA,EAAAA,GACAM,EAAAA,EAAAA,SACAkV,EAAAA,EAAAA,UACA7D,EAAAA,EAAAA,aACA8D,EAAAA,EAAAA,WACAjE,EAAAA,EAAAA,WACA0D,EAAAA,EAAAA,UACAE,EAAAA,EAAAA,gB,OAIJ,gBAACoN,GAAAA,CAAmBriB,eAAcqR,GAC9B,gBAACsC,GAAWA,CAACtD,MAAO+E,EAAW/D,WAAY,GAAc,OAAXA,EAAW,YACrD,gBAACyC,GAAWA,CACR9T,eAAc,GAAc,OAAXqR,EAAW,WAC5BlR,SAAUA,EACVkV,UAAWA,EACXtV,KAAM,QACNG,KAAM,eACN/B,MAAO0B,EACPxC,IAAKA,EACLmU,aAAcA,EACd+D,eAAgBD,EAChBL,gBAAiBA,IAErB,gBAACH,GAAUA,CAACtD,aAAcA,EAAcoD,SAAUA,EAAUG,UAAWA,IACvE,gBAACnB,GAAeA,KACXwB,EACD,gBAACmN,GAAAA,Q,g8GAMrBE,GAAYxa,YAAc,c,SCpJdya,G,iCAAAA,KAAAA,GAAAA,CAAAA,IAiCZ,IAAMC,IAAkB9hB,EAAAA,EAAAA,IAAOshB,GAAPthB,CAAgBshB,MAElC9K,GAAgBxW,EAAAA,GAAOC,IAAG,KACR6B,EAAMC,QAAQ0F,MAEhBiD,EAAMC,YACf,SAACvJ,G,OAA+BA,EAAMR,MAAQQ,EAAMR,MAAQ,O,IAGnEmhB,GAAuB/hB,EAAAA,GAAOC,IAAG,KAKjC6hB,IAOApL,GAAsB1W,EAAAA,GAAOC,IAAG,KACd6B,EAAMC,QAAQ0F,OAIhCkH,GAAgB3O,EAAAA,GAAOiB,EAAC,KACXsJ,EACFlK,EAAUU,OAEde,EAAM+F,KAAKS,iBAgCX0Z,GAAiBvkB,EAAAA,YAC1B,WAcIjB,G,QAZI+kB,EAAAA,EAAAA,SACAU,EAAAA,EAAAA,SACAC,EAAAA,EAAAA,eACA5O,EAAAA,EAAAA,eACAC,EAAAA,EAAAA,WACA5C,EAAAA,EAAAA,aACAuD,EAAAA,EAAAA,UACAiO,EAAAA,EAAAA,aACAC,EAAAA,EAAAA,cACAhO,EAAAA,EAAAA,gBACGhT,EAAAA,GAAAA,EAAAA,CAVHmgB,WACAU,WACAC,iBACA5O,iBACAC,aACA5C,eACAuD,YACAiO,eACAC,gBACAhO,oBAK4C3W,EAAAA,GAAAA,EAAAA,SAAe,UAAxDqZ,EAAyCrZ,EAAAA,GAAvBsZ,EAAuBtZ,EAAAA,GACVA,EAAAA,GAAAA,EAAAA,SAAe,OAA9CuZ,EAA+BvZ,EAAAA,GAAlBwZ,EAAkBxZ,EAAAA,GACNA,EAAAA,GAAAA,EAAAA,SAAe,IAAE,GAA1C4kB,EAAyB5kB,EAAAA,GAAf6kB,EAAe7kB,EAAAA,GACwBA,EAAAA,GAAAA,EAAAA,UAAe,MAAhE2Z,EAAiD3Z,EAAAA,GAA3B4Z,EAA2B5Z,EAAAA,GAElD6Z,EAAiB7Z,EAAAA,OAA+B,MAEhD8kB,EAAiB9kB,EAAAA,OAA6B,MAG9C+kB,EAAa/kB,EAAAA,SAAc,WAC7B,OAtDQ,SAAC8jB,GAEjB,IADA,IAAMkB,EAAM,GACHC,EAAK,EAAGA,EAAKnB,EAAS3L,OAAQ8M,IACnC,IAAK,IAAIC,EAAK,EAAGA,EAAKpB,EAASmB,GAAI7O,OAAO+B,OAAQ+M,IAC9C,IAAK,IAAIC,EAAK,EAAGA,EAAKrB,EAASmB,GAAI7O,OAAO8O,GAAIE,MAAMjN,OAAQgN,IAAM,CAC9D,IAAMlK,EAAO6I,EAASmB,GAAI7O,OAAO8O,GAAIE,MAAMD,GAC3CH,EAAI3K,KAAKY,EACb,CAGR,OAAO+J,CACX,CA2CmBK,CAAYvB,EACvB,GAAG,CAACA,IAEsC9jB,EAAAA,GAAAA,EAAAA,SAA+B,IAAE,GAApEslB,EAAmCtlB,EAAAA,GAApBulB,EAAoBvlB,EAAAA,GAepCwlB,G,EAA0B,SAAOvK,G,mDAInC,OAhBqB,WACrB,IAAK,IAAIgK,EAAK,EAAGA,EAAKnB,EAAS3L,OAAQ8M,IACnC,IAAK,IAAIC,EAAK,EAAGA,EAAKpB,EAASmB,GAAI7O,OAAO+B,OAAQ+M,IAC9C,IAAK,IAAIC,EAAK,EAAGA,EAAKrB,EAASmB,GAAI7O,OAAO8O,GAAIE,MAAMjN,OAAQgN,IAC3CrB,EAASmB,GAAI7O,OAAO8O,GAAIE,MAAMD,GACtC/K,UAAW,CAIhC,CAIIqL,GACAxK,EAAKb,UAAW,EAChBR,GAAwB,GACK,mBAAlB+K,EACP,C,GAGJ,C,EAAMA,EAAmE,CACrEljB,KAAM,gBACNikB,QAAS,CAAEC,OAAQ1K,EAAK1Z,O,cAF5B,S,OAIJ,E,2LAZuC0Z,G,iCAejCJ,EAAuB,SAAC1b,EAAYimB,GACtCxL,GAAwB,GACxBN,EAAoBna,EAAMC,OAAOS,OACN,QAAvBV,EAAMC,OAAOS,OACb2Z,EAAe,IAEnBqL,EAAYO,GAEZN,EAAezlB,QAAQyb,UAAY,CACvC,EAeA9a,EAAAA,WAAgB,WAEZ,IAAM+a,EAAegK,EAAW/J,QAAO,SAACC,GACpC,OAAOlF,OAAOC,KAAKiF,GAAMQ,MAAK,W,OAAMR,EAAKlJ,MAAMwJ,cAAcC,SAASjC,E,GAC1E,IACAgM,EAAiBxK,EACrB,GAAG,CAACgK,EAAYxL,IAGhBvZ,EAAAA,WAAgB,WACZ,IAAM4lB,EA5GM,SAAC9B,GACrB,IAAK,IAAImB,EAAK,EAAGA,EAAKnB,EAAS3L,OAAQ8M,IACnC,IAAK,IAAIC,EAAK,EAAGA,EAAKpB,EAASmB,GAAI7O,OAAO+B,OAAQ+M,IAC9C,IAAK,IAAIC,EAAK,EAAGA,EAAKrB,EAASmB,GAAI7O,OAAO8O,GAAIE,MAAMjN,OAAQgN,IACxD,GAAIrB,EAASmB,GAAI7O,OAAO8O,GAAIE,MAAMD,GAAI/K,SAClC,OAAO0J,EAASmB,GAAI7O,OAAO8O,GAAIE,MAAMD,GAKrD,MAAO,CAAC,CACZ,CAiG0CU,CAAgB/B,GACxCgC,EAAermB,SAASic,cAAc,gBAAkD,OAAlC,EAA+Bna,GAAG,OAE1FukB,IAAiBnM,GACjBna,YAAW,WACPsmB,EAAanK,eAAe,CAAEC,SAAU,SAAUC,MAAO,SAAU/M,OAAQ,WAC/E,GAAG,IAGX,GAAG,IAEH,IAAMiX,EAAcjC,EAAS9I,QAAO,SAACC,G,MAA0B,QAAjBA,EAAK+K,O,IAC7CC,EAAenC,EAAS9I,QAAO,SAACC,G,MAA0B,SAAjBA,EAAK+K,O,IAEpD,OACI,gBAAC1B,G,uUAAAA,CAAAA,CACG7N,UAAWA,EACXvD,aAAcA,EACd4Q,SAAUA,EACVU,SAAUA,EACVC,eAAgBA,EAChB5O,eAAgBA,EAChBC,WAAYA,EACZ/W,IAAKA,GACD4E,GAEJ,gBAACigB,GAAqBjgB,EAClB,gBAACoR,GAAUA,CAACoB,IAAM,WACb4P,GACGhQ,OAAOmQ,QAAQH,GAAa9P,KAAI,Y,IAAI+P,E,QAAAA,GAChC,OACI,gBAAChmB,EAAAA,SAAc,CAACmW,IAAK,kBAAgC,OAAd6P,EAAQjU,QAC1CgE,OAAOmQ,QAAQF,EAAQ5P,QAAQH,KAAI,Y,IAAI6F,E,QAAAA,GACpC,OACI,gBAACrG,GAAeA,CACZ5T,SAAU,SAACZ,G,OAAM4Z,EAAqB5Z,EAAG6a,EAAMsJ,M,EAC/C1P,WAAYoG,EAAMva,GAClB4U,IAAK,kBAA2B,OAAT2F,EAAMva,IAC7BgU,QAAS8D,IAAqByC,EAAMva,GACpC2R,aAAcA,EACdH,WAAY,4BAAqC,OAAT+I,EAAMva,KAE7Cua,EAAM/J,MAGnB,IAGZ,KAGR,gBAACoD,GAAcA,MAEf,gBAACuO,GAAiBA,KACd,gBAAC3O,GAAUA,KACP,gBAACU,GAAeA,CACZ5T,SAAU,SAACZ,G,OAAM4Z,EAAqB5Z,E,EACtCyU,WAAY,MACZH,QAA8B,QAArB8D,EACTnG,aAAcA,EACdH,WAAY,gCACf,OACQ0R,EAAe,OAEvBwB,GACGlQ,OAAOmQ,QAAQD,GAAchQ,KAAI,Y,IAAI+P,E,QAAAA,GACjC,OACI,gBAAClR,GAAcA,CAACqB,IAAK,oBAAkC,OAAd6P,EAAQjU,QAC5C,gBAAC4R,GAAcA,KAAEqC,EAAQjU,OAC1B,gBAACgD,GAAUA,KACNgB,OAAOmQ,QAAQF,EAAQ5P,QAAQH,KAAI,Y,IAAI6F,E,QAAAA,GACpC,OACI,gBAACrG,GAAeA,CACZ5T,SAAU,SAACZ,G,OAAM4Z,EAAqB5Z,EAAG6a,EAAMsJ,M,EAC/C1P,WAAYoG,EAAMva,GAClB4U,IAAK,mBAA4B,OAAT2F,EAAMva,IAC9BgU,QAAS8D,IAAqByC,EAAMva,GACpC2R,aAAcA,EACdH,WAAY,4BAAqC,OAAT+I,EAAMva,KAE7Cua,EAAM/J,MAGnB,KAIhB,OAIhB,gBAACgH,GAAaA,CAAC5V,MAAOuhB,GAClB,gBAACzL,GAAmBA,KAChB,gBAACxF,GAAYA,CACTC,YAAa,aAAsB,OAAT8Q,GAC1BtR,aAAcA,EACdS,aAtHO,SAACxU,GACxBqa,EAAera,EAAMC,OAAOS,MAAM0b,eAClCjC,EAAoB,MACxB,EAoHoB1F,kBAjHY,WAC5B4F,EAAe,IAEfK,EAAexa,QAAQkT,OAC3B,EA8GoBsB,WAAY0F,EACZxa,IAAK8a,KAGb,gBAACqK,GAAwBA,CAACnlB,IAAK+lB,GACL,QAArBzL,GACoB,sBAArBA,GACqB,WAArBA,GACqB,eAArBA,EACIiM,EAAcnN,QAAU,EACpBmN,EAAcrP,KAAI,SAACgF,GACf,OACI,gBAACkJ,GAAWA,CACR1N,UAAWA,EACXH,SAAU2E,EAAK3E,SACfQ,UAAWmE,EAAKlJ,MAChBxQ,GAAI0Z,EAAK1Z,GACTM,SAAU,W,OAAM2jB,EAAwBvK,E,EACxC9E,IAAK8E,EAAK1Z,GACV2R,aAAcA,EACd8D,WAAYiE,EAAKb,SACjBrH,WAAY,aAAgCmF,OAAnBsM,EAAS,YAAmC,QAAzBtM,EAAAA,GAAAA,GAAa+C,EAAKlJ,QAC9D4E,gBAAiBA,GAG7B,IAEA,gBAACzF,GAAaA,KACY,WAArBmI,EACK,MAAqB,OAAfoL,EAAe,4BACA,eAArBpL,EACA,gCACA,MAAwCE,OAAlCkL,EAAe,qBAA+B,OAAZlL,EAAY,MAIlEqL,EAAS3O,KAAI,SAACgF,GACV,OACI,gBAACkJ,GAAWA,CACR1N,UAAWA,EACXH,SAAU2E,EAAK3E,SACfQ,UAAWmE,EAAKlJ,MAChBxQ,GAAI0Z,EAAK1Z,GACTM,SAAU,W,OAAM2jB,EAAwBvK,E,EACxC9E,IAAK8E,EAAK1Z,GACV2R,aAAcA,EACd8D,WAAYiE,EAAKb,SACjBrH,WAAY,aAAgCmF,OAAnBsM,EAAS,YAAmC,QAAzBtM,EAAAA,GAAAA,GAAa+C,EAAKlJ,QAC9D4E,gBAAiBA,GAG7B,MAMxB,I,8lIAEJ4N,GAAe5a,YAAc,iBC/W7B,IAAMwc,GAAwB5jB,EAAAA,GAAOC,IAAG,KAChB6B,EAAMC,QAAQ0F,OAOhCoc,GAA6B7jB,EAAAA,GAAOC,IAAG,KAIzBmK,EAAQ9J,QAAW8J,EAAQ9J,SAOzCwjB,IAAoB9jB,EAAAA,EAAAA,IAAO4hB,GAAP5hB,CAAkB4hB,MAItCmC,GAAyB/jB,EAAAA,GAAOiE,GAAE,KACrBsG,EACFlK,EAAUc,MAERd,EAAUC,QAGhBwB,EAAM+F,KAAKO,YAIlB4M,GAAoBhV,EAAAA,GAAOiB,EAAC,KACfsJ,EACFlK,EAAU4B,MAER5B,EAAUc,MACRiJ,EAAQ9J,QAEhBwB,EAAM+F,KAAKO,YAIlBqF,GAAgBzN,EAAAA,GAAOkE,GAAE,KACZqG,EACFlK,EAAU4B,MAGdH,EAAM+F,KAAKO,WACNgC,EAAQsC,QACLtC,EAAQsC,SAIvB8F,GAAaxS,EAAAA,GAAOyS,GAAE,KAGTlI,EACFlK,EAAU4B,MAER5B,EAAUU,OAKhBe,EAAM+F,KAAKO,YAIlB6M,IAAajV,EAAAA,EAAAA,IAAOkV,GAAAA,EAAPlV,CAAWkV,KAEV9K,EAAQrJ,QAGtBoU,GAAwBnV,EAAAA,GAAOwB,OAAM,KACxB+I,EACFlK,EAAU4B,MAER5B,EAAUU,OAKLe,EAAMC,QAAQ0F,MACzB3F,EAAM+F,KAAKG,UAEToC,EAAQnI,MAASmI,EAAQnI,MAASmI,EAAQnI,OAKtC,SAACb,G,OAAsCA,EAAMuP,aAAe,qBAAuB,G,IACnF,SAACvP,G,OACRA,EAAMuP,aAAe,oCAAsC,G,GAGzDsE,GACEnT,EAAMC,QAAQwF,QAIxBgL,GAAiBvS,EAAAA,GAAOqS,GAAE,KACb9H,EACFlK,EAAUqM,QAERrM,EAAUc,MAEhBW,EAAM+F,KAAKO,WACJgC,EAAQsC,SAefsX,GAAkBvmB,EAAAA,YAC3B,WAYIjB,G,IAVIuX,EAAAA,EAAAA,SACAvE,EAAAA,EAAAA,MACA8F,EAAAA,EAAAA,YACAC,EAAAA,EAAAA,YAAAA,EAAAA,EACAC,YAAAA,OAAAA,IAAc,KACdlC,EAAAA,EAAAA,eACA3C,EAAAA,EAAAA,aACAuD,EAAAA,EAAAA,UACG9S,EAAAA,GAAAA,EAAAA,CARH2S,WACAvE,QACA8F,cACAC,cACAC,cACAlC,iBACA3C,eACAuD,cAK8BzW,EAAAA,GAAAA,EAAAA,SAAe+X,GAAAA,GAA1CC,EAA2BhY,EAAAA,GAAhBiY,EAAgBjY,EAAAA,GAKlC,OACI,gBAACmmB,G,uUAAAA,CAAAA,CAAsBpnB,IAAKA,GAAS4E,GACjC,gBAACyiB,GAAAA,KACG,gBAACC,GAAAA,CAAkB/P,SAAUA,EAAUG,UAAWA,IAClD,gBAAC6P,GAAAA,KAAwBvU,GACzB,gBAACwF,GAAiBA,KAAEM,GACnBC,GAAeA,EAAYK,OAAS,GACjC,gCACI,gBAACnI,GAAaA,KAAC,gBACf,gBAAC+E,GAAUA,KACN+C,EAAY7B,KAAI,SAACmC,EAAcC,G,OAC5B,gBAACvD,GAAcA,CAACqB,IAAK,cAAoB,OAANkC,IAAUD,E,OAK3DvC,GACE,gBAAC6B,GAAqBA,CAACxE,aAAcA,EAAcjP,QArB3C,WACpBgU,GAAcD,EAClB,GAoBoB,gBAACR,GAAUA,CAACpO,KAAM4O,EAAY3T,EAAMC,QAAQwF,OAASzF,EAAM+F,KAAKE,cAC/D0N,EAAY,cAAgB,SAAS,gBAM9D,I,grBAEJuO,GAAgB5c,YAAc,kBC5L9B,IAAM6c,IAAqBjkB,EAAAA,EAAAA,IAAOkP,GAAPlP,CAAkBkP,MAChC,SAAC9N,G,OAAuBA,EAAMR,MAAQQ,EAAMR,MAAQ,O,IACnD,SAACQ,G,OAAuBA,EAAM0F,OAAS1F,EAAM0F,OAAS,M,IAGvDod,GAAezmB,EAAAA,YACxB,WAcIjB,G,IAZIgG,EAAAA,EAAAA,SACA+M,EAAAA,EAAAA,QACAC,EAAAA,EAAAA,MACAC,EAAAA,EAAAA,WACAC,EAAAA,EAAAA,YACAC,EAAAA,EAAAA,mBACAC,EAAAA,EAAAA,oBACAhP,EAAAA,EAAAA,MACAkG,EAAAA,EAAAA,OACA+I,EAAAA,EAAAA,cACGzO,EAAAA,GAAAA,EAAAA,CAVHoB,WACA+M,UACAC,QACAC,aACAC,cACAC,qBACAC,sBACAhP,QACAkG,SACA+I,kBAKEC,EAAkBrS,EAAAA,OAAgC,MAClDsS,EAAmBtS,EAAAA,OAAgC,MAOzD,OALAf,EAAAA,EAAAA,YAAU,WACgB,WAAlBmT,GAA8BC,EAAgBhT,SAASgT,EAAgBhT,QAAQkT,QAC7D,YAAlBH,GAA+BE,EAAiBjT,SAASiT,EAAiBjT,QAAQkT,OAC1F,IAGI,gBAACiU,G,uUAAAA,CAAAA,CAAmBznB,IAAKA,EAAKoE,MAAOA,EAAOkG,OAAQA,GAAY1F,GAC5D,gBAAC+N,GAAmBA,KAAEK,GACtB,gBAACJ,GAAkBA,KAAE5M,GACpB+M,GAGG,gBAACrC,GAAiBA,KACd,gBAACb,GAAYA,CACT5M,OAAQ,yBACRiC,QAASkO,EACTpT,IAAKuT,GAEJL,GAAe,MAEpB,gBAACrD,GAAYA,CACTG,MAAOyD,EAAMpE,QACbpM,OAAQ,wBACRiC,QAASiO,EACTnT,IAAKsT,GAEJL,GAAc,WAMvC,I,0yDAEJyU,GAAa9c,YAAc,eCnD3B,IAAM+c,GAAoBnkB,EAAAA,GAAOC,IAAG,KACC,EAAhBkK,EACc,EAAhBA,GAGbia,GAAwBpkB,EAAAA,GAAOqkB,GAAE,MAKjCC,GAA4BtkB,EAAAA,GAAOqS,GAAE,KAEvBjI,EAAQrJ,OACPqJ,EAAQnI,MAEZ5B,EAAU4B,MACdH,EAAM+F,KAAKG,UAgBKlG,EAAMC,QAAQ0F,MAOd3F,EAAM+F,KAAKS,iBAalCic,GAAwBvkB,EAAAA,GAAOc,EAAEwL,OAA4B,Y,MAAiB,CAChF,eADkE7M,EAAAA,O,GAAxCO,C,KAGQ0K,EAAMC,YAC/B,SAACvJ,G,OAAWA,EAAMoL,MAAQpL,EAAMoL,MAAMjB,KAAOzJ,EAAMQ,MAAMC,YAAcT,EAAMQ,MAAMC,S,IAM7D,SAACnB,G,OAAWA,EAAMoL,MAAQpL,EAAMoL,MAAMjB,KAAOzJ,EAAMQ,MAAMC,S,IAI/EiiB,GAAc,Y,IAAGhiB,EAAAA,EAAAA,SAAapB,EAAAA,GAAAA,EAAAA,CAAboB,a,OAC1B,gBAAC2hB,GAAsB/iB,EACnB,gBAACgjB,GAAAA,KAIO5hB,EAASoT,QAAUpT,EAASkR,IAExBlR,EAASkR,KACL,SAAC+Q,EAAYC,G,OACTD,IACCA,EAAM7O,QAAU6O,EAAMrjB,QACnB,gBAACkjB,GAAAA,CAA0B1Q,IAAK6Q,EAAM7Q,KAAO8Q,GAAID,E,IAI7D,gBAACH,GAAAA,KAA2B9hB,I,EAOnCmiB,GAAkB,Y,IAAGniB,EAAAA,EAAAA,SAAapB,EAAAA,GAAAA,EAAAA,CAAboB,a,OAC9B,gBAAC+hB,GAA0BnjB,EAAQoB,E,k9DCtFvC,I,GAEMoiB,GAAoB5kB,EAAAA,GAAOqkB,GAAE,KACE,EAAhBla,GAMf2I,GAAc9S,EAAAA,GAAOiB,EAAC,KACTZ,EAAUU,QAKvB8jB,GAAiB7kB,EAAAA,GAAOqS,GAAE,MAEnB,SAACjR,G,MAAkC,GAA2B,OAAxB,IAAMA,EAAM0jB,YAAY,I,GAE1DzkB,EAAU4B,OAId,SAACb,G,OACNA,EAAM2jB,QAAU3jB,EAAM4jB,SAAW5jB,EAAMoL,MAAMjB,MAAQzJ,EAAMQ,MAAMC,UAAYT,EAAM+F,KAAKS,e,GAxB5E,UAmCI,SAAClH,G,OACbA,EAAM2jB,QAAU3jB,EAAM4jB,SAAW5jB,EAAMoL,MAAMjB,MAAQzJ,EAAMQ,MAAMC,UAAYT,EAAM+F,KAAKS,e,IAKxE,SAAClH,G,OACjBA,EAAM4jB,SAAW5jB,EAAMoL,MAAMjB,MAAQzJ,EAAMQ,MAAMC,UAAYT,EAAMC,QAAQ0F,K,GAElEiD,EAAMC,WAAcK,EAAUC,SAMvB,SAAC7J,G,OAAWA,EAAM4jB,SAAW5jB,EAAMoL,MAAMjB,MAAQzJ,EAAMQ,MAAMC,UAAY,a,IAK/E,SAACnB,G,OACXA,EAAM4jB,SAAW,wBAA0B,cAAyC,OAA3BljB,EAAM+F,KAAKS,gB,GACjE2c,GAYTnS,GACepI,EAAMC,WAAcK,EAAUC,SAItCia,GAAc,Y,IAAGC,EAAAA,EAAAA,MAAOC,EAAAA,EAAAA,YAAgBhkB,EAAAA,GAAAA,EAAAA,CAAvB+jB,QAAOC,gB,OACjC,gBAACR,GAAsBxjB,EAClB+jB,EAAMzR,KACH,SAAC2R,EAAWX,G,OACRW,IACCA,EAAKC,UACF,gBAACT,GAAAA,CACGG,SAAUN,EAAIU,EACdL,OAAQL,IAAMU,EACdN,YAAaK,EAAM1M,QAAO,SAACC,G,OAAeA,EAAK4M,Q,IAAU1P,OACzDhC,IAAKyR,EAAKzR,KAAO8Q,GAEjB,gBAAC5R,GAAWA,KAAEuS,EAAK7V,O,ilCCtG/B+V,G,iDAAAA,KAAAA,GAAAA,CAAAA,IAyCZ,IAAMC,GAAaxlB,EAAAA,GAAOiB,EAAC,MACd,SAACG,G,OAAsBA,EAAM8K,MAAQ9K,EAAM8K,MAAQpK,EAAMC,QAAQyF,K,IAC5D,SAACpG,G,MACO,SAAlBA,EAAM4K,QACA,OACkB,WAAlB5K,EAAM4K,QACN,SACkB,UAAlB5K,EAAM4K,QACN,QACA,M,IACG,SAAC5K,G,OAAqBA,EAAMgb,UAAY/b,EAAUU,M,IAChD,SAACK,G,OAAqBA,EAAM+a,YAAcjb,EAAYC,K,IACpD,SAACC,G,OAAqBA,EAAM0a,cAAgBtR,EAAqBzJ,M,IACjE,SAACK,G,OAAsBA,EAAMqkB,OAASrkB,EAAMqkB,OAAS,G,IAG7DC,GAAW1lB,EAAAA,GAAOc,EAAC,KACM4J,EAAMC,WAC/B7I,EAAMQ,MAAMC,UAMUT,EAAMQ,MAAMC,WAIlCojB,GAAO,Y,IAAGnjB,EAAAA,EAAAA,SAAUijB,EAAAA,EAAAA,OAAQnnB,EAAAA,EAAAA,QAAS8d,EAAAA,EAAAA,SAAahb,EAAAA,GAAAA,EAAAA,CAAxCoB,WAAUijB,SAAQnnB,UAAS8d,a,OAC9C,gBAACoJ,G,uUAAAA,CAAAA,CAAWC,OAAQA,EAAQG,GAAItnB,EAAS8d,SAAUA,GAAchb,GAC5DoB,E,82GClDT,IAAMqjB,GAAoB7lB,EAAAA,GAAOC,IAAG,MACrB,SAACmB,G,OAAsCA,EAAMmL,OAAS,SAAW,E,IAM1EuZ,GAAe9lB,EAAAA,GAAOC,IAAG,MAEpB,SAACmB,G,MAA8B,QAAnBA,EAAMqa,SAAqB,OAAS,M,IAC7C,SAACra,G,MAA8B,QAAnBA,EAAMqa,SAAqB,OAAS,M,IACrC,SAACra,G,MAAU,GAAe,OAAZA,EAAMR,MAAM,K,GAAcwJ,EAAQjJ,OAC5D,SAACC,G,MAAU,GAAe,OAAZA,EAAMR,MAAM,K,GACxBwJ,EAAQjJ,MACCW,EAAMC,QAAQyF,OAavB,SAACpG,G,MAAyD,QAAnBA,EAAMqa,SAAqB,OAAS,O,IACxE,SAACra,G,MAAyD,QAAnBA,EAAMqa,SAAqB,QAAU,M,IAElE,SAACra,G,MAAyD,QAAnBA,EAAMqa,SAAqB,SAAW,Q,IAInGpP,GAAerM,EAAAA,GAAOwB,OAAM,MAQ5BukB,GAAqB/lB,EAAAA,GAAO0kB,EAAC,KACjB5iB,EAAM+F,KAAK9F,QAChBD,EAAMC,QAAQ0F,OAcLmE,EAAAA,EAAAA,GAAQ,GAAK9J,EAAM+F,KAAK9F,UAIjCikB,GAAe,W,OAAM,gBAACD,GAAAA,KAAmB,I,EAEzCE,GAAc,Y,IACvBzjB,EAAAA,EAAAA,SAAAA,EAAAA,EACAiZ,SAAAA,OAAAA,IAAW,UACXyK,EAAAA,EAAAA,aACA3Z,EAAAA,EAAAA,OAAAA,EAAAA,EACA3L,MAAAA,OAAAA,IAAQ,QACRnB,EAAAA,EAAAA,OAAAA,EAAAA,EACA+gB,OAAAA,OAAAA,IAAS,KACNpf,EAAAA,GAAAA,EAAAA,CAPHoB,WACAiZ,WACAyK,eACA3Z,SACA3L,QACAnB,SACA+gB,WAGM2F,EAAa1oB,EAAAA,OAAsC,MACnBA,EAAAA,GAAAA,EAAAA,SAAe+iB,GAAAA,GAA9C4F,EAA+B3oB,EAAAA,GAAlB4oB,EAAkB5oB,EAAAA,GAyBtC,OAtBAA,EAAAA,WAAgB,W,IACHwjB,EAAT,SAA2BviB,IACnB,GAA0B,WAAVA,EAAEkV,KAAsBwS,GAAyB,QAAV1nB,EAAEkV,MACzDyS,GAAe,EAEvB,EAESC,EAAT,SAAqB5nB,GACb0nB,GAAeD,EAAWrpB,UAAYqpB,EAAWrpB,QAAQC,SAAS2B,EAAE7B,SACpEwpB,GAAe,EAEvB,EAKA,OAHAnpB,SAASE,iBAAiB,UAAW6jB,GACrC/jB,SAASE,iBAAiB,QAASkpB,GAE5B,WACHppB,SAASC,oBAAoB,UAAW8jB,GACxC/jB,SAASC,oBAAoB,QAASmpB,EAC1C,CACJ,GAAG,CAACF,EAAaC,IAGb,gBAACR,GAAAA,G,uUAAAA,CAAAA,CAAkBtZ,OAAQA,GAAYnL,GAAAA,CAAOjC,eAAc,iBAAwB,OAAPM,KACzE,gBAAC4M,GAAYA,CAAC3K,QA1BA,W,OAAM2kB,GAAgBD,E,EA0BElnB,KAAM,SAAUC,eAAc,wBAA+B,OAAPM,IACvF+C,GAEJ4jB,GACG,gCACI,gBAACN,GAAAA,CACGtpB,IAAK2pB,EACL1K,SAAUA,EACV7a,MAAOA,EACPzB,eAAc,iCAAwC,OAAPM,IAE9CymB,IAMzB,E,2jFCxGA,IAAMK,GAAiB,sDAKjBC,GAAUxmB,EAAAA,GAAOlB,MAAK,KACtBynB,IAGAE,GAAmBzmB,EAAAA,GAAOC,IAAG,KAC7BsmB,IAGAG,GAAqB1mB,EAAAA,GAAOC,IAAG,MAI/B0mB,GAAkB3mB,EAAAA,GAAO4mB,KAAI,KAEbxc,EAAQyc,SACbxmB,EAAU4B,MACR5B,EAAUU,QACV,SAACK,G,OAAyCA,EAAM0lB,UAAY,MAAQ,K,IAC1E,SAAC1lB,G,OAAyCA,EAAMhC,QAAU0C,EAAMC,QAAQC,IAAMF,EAAM+F,KAAKO,U,IACvF,SAAChH,G,OAAyCA,EAAMK,SAAW,MAAQ,G,IAG5EslB,GAAuB/mB,EAAAA,GAAOlB,MAAK,KAErBsL,EAAQsC,QACNtC,EAAQyc,SACbxmB,EAAU4B,MACR5B,EAAUU,QACV,SAACK,G,OAAyCA,EAAM0lB,UAAY,MAAQ,K,IAC1E,SAAC1lB,G,OAAyCA,EAAMhC,QAAU0C,EAAMC,QAAQC,IAAMF,EAAM+F,KAAKO,U,IACvF,SAAChH,G,OAAyCA,EAAMK,SAAW,MAAQ,G,IAG5EsP,GAAc/Q,EAAAA,GAAOqC,MAAK,MACR,SAACjB,G,OACjBA,EAAMK,UAAWmP,EAAAA,EAAAA,IAAO,MAAO9O,EAAMC,QAAQ0F,OAAS3F,EAAMC,QAAQ0F,K,IAC/D,SAACrG,G,OACNA,EAAMK,UAAWsH,EAAAA,EAAAA,IAAe,MAAOjH,EAAMC,QAAQyF,OAAS1F,EAAMC,QAAQyF,K,GACnEnH,EAAU4B,MACR5B,EAAUU,OACdqJ,EAAQnI,OAGH,SAACb,G,OACbA,EAAMhC,QAAU0C,EAAMC,QAAQC,IAAMF,EAAM+F,KAAKQ,U,GAClCwC,EAAOC,SAOtBkc,GAA0BhnB,EAAAA,GAAOC,IAAG,KACzBI,EAAUqM,QACRrM,EAAU4B,OAChB,SAACb,G,OACNA,EAAMhC,QAAU0C,EAAMC,QAAQC,IAAMF,EAAMC,QAAQyF,K,GACvC4C,EAAQnI,OAKd6O,GAAYrT,EAAAA,YACrB,WAuBIjB,G,IArBIiD,EAAAA,EAAAA,OACAX,EAAAA,EAAAA,MACAE,EAAAA,EAAAA,GACAioB,EAAAA,EAAAA,UACAC,EAAAA,EAAAA,cACA/V,EAAAA,EAAAA,YACA9R,EAAAA,EAAAA,KACA8nB,EAAAA,EAAAA,UACAC,EAAAA,EAAAA,aACA3lB,EAAAA,EAAAA,SACArC,EAAAA,EAAAA,QACAioB,EAAAA,EAAAA,kBACA/nB,EAAAA,EAAAA,SACAC,EAAAA,EAAAA,OACA+nB,EAAAA,EAAAA,UACAC,EAAAA,EAAAA,UACAT,EAAAA,EAAAA,UACAxpB,EAAAA,EAAAA,MACA0G,EAAAA,EAAAA,UACG5C,EAAAA,GAAAA,EAAAA,CAnBH3B,SACAX,QACAE,KACAioB,YACAC,gBACA/V,cACA9R,OACA8nB,YACAC,eACA3lB,WACArC,UACAioB,oBACA/nB,WACAC,SACA+nB,YACAC,YACAT,YACAxpB,QACA0G,cAKJ,OAAOijB,EACH,gBAACR,GAAAA,GAAAA,CAAiBziB,UAAWA,GAAe5C,GACxC,gBAACslB,GAAAA,KACG,gBAACK,GAAAA,CACG5nB,eAAc,GAAU,OAAPM,EAAO,UACxBqnB,UAAWA,EACX1nB,QAASA,EACTqC,SAAUA,EACVgB,QAASzD,GAERF,GAEL,gBAACmnB,GAAWA,CAACxmB,OAAQA,EAAQymB,aAAcgB,GACvC,gBAAClB,GAAYA,QAGrB,gBAACjV,GAAWA,GAAAA,GAAAA,CACR7R,KAAK,OACLC,eAAc,GAAU,OAAPM,EAAO,UACxBT,GAAIA,EACJiT,UAAWkV,EACX9nB,KAAMA,EACN8R,YAAaA,EACbmW,UAAWA,EACXC,UAAWA,EACXnoB,QAASA,EACTqC,SAAUA,QACY,IAAVnE,GAAyB,CAAEA,MAAAA,QACV,IAAjB8pB,GAAgC,CAAEA,aAAAA,IAAa,CAC3D5qB,IAAKA,KAER6qB,GACG,gBAACL,GAAAA,CAAwB5nB,QAASA,GAAUioB,IAIpD,gBAACb,GAAAA,GAAAA,CAAQrnB,eAAc,GAAU,OAAPM,EAAO,UAASuE,UAAWA,GAAe5C,GAChE,gBAACulB,GAAAA,CAAgBvnB,QAASA,EAASqC,SAAUA,EAAUqlB,UAAWA,GAC7DhoB,GAEL,gBAACiS,GAAWA,GAAAA,GAAAA,CACR7R,KAAK,OACLC,eAAc,GAAU,OAAPM,EAAO,UACxBT,GAAIA,EACJiT,UAAWkV,EACX9nB,KAAMA,EACN8R,YAAaA,EACbmW,UAAWA,EACXC,UAAWA,EACXnoB,QAASA,EACTqC,SAAUA,QACY,IAAVnE,GAAyB,CAAEA,MAAAA,QACV,IAAjB8pB,GAAgC,CAAEA,aAAAA,IAAa,CAC3D9nB,SAAUA,EACVC,OAAQA,EACR/C,IAAKA,KAER6qB,GACG,gBAACL,GAAAA,CAAwB5nB,QAASA,GAAUioB,GAI5D,I,+kFAEJvW,GAAU1J,YAAc,YCpJxB,IAAMof,GAAUxmB,EAAAA,GAAOC,IAAG,MAGhB,SAACmB,G,OAAiCA,EAAMomB,WAAapmB,EAAMomB,WAAa,M,IAI5Ed,GAAqB1mB,EAAAA,GAAOC,IAAG,MAGlB,SAACmB,G,OAA2CA,EAAMqmB,c,GAEhDrd,EAAQjJ,OAGvBwlB,GAAkB3mB,EAAAA,GAAOlB,MAAK,KAChBsL,EAAQsC,QACXrM,EAAU4B,MACR5B,EAAUc,OAKV,SAACC,G,OAAyCA,EAAM0lB,UAAY,MAAQ,K,IAC1E,SAAC1lB,G,OAAyCA,EAAMhC,QAAU0C,EAAMC,QAAQC,IAAMF,EAAM+F,KAAKO,U,IACvF,SAAChH,G,OAAyCA,EAAMK,SAAW,MAAQ,G,IAG5EslB,GAAuB/mB,EAAAA,GAAOC,IAAG,MAKjC8Q,GAAc/Q,EAAAA,GAAOqC,MAAK,MACR,SAACjB,G,OACjBA,EAAMK,UAAWmP,EAAAA,EAAAA,IAAO,MAAO9O,EAAMC,QAAQ0F,OAAS3F,EAAMC,QAAQ0F,K,IAC/D,SAACrG,G,OACNA,EAAMK,UAAWsH,EAAAA,EAAAA,IAAe,MAAOjH,EAAMC,QAAQyF,OAAS1F,EAAMC,QAAQyF,K,GACnEnH,EAAU4B,MACR5B,EAAUU,OACdqJ,EAAQnI,OAGH,SAACb,G,OACbA,EAAMhC,QAAU0C,EAAMC,QAAQC,IAAMF,EAAM+F,KAAKQ,U,GAClCwC,EAAOC,SAOtBkc,GAA0BhnB,EAAAA,GAAOC,IAAG,KACzBI,EAAUqM,QACRrM,EAAU4B,OAChB,SAACb,G,OACNA,EAAMhC,QAAU0C,EAAMC,QAAQC,IAAMF,EAAMC,QAAQyF,K,GACvC4C,EAAQnI,OAIdylB,GAAkBjqB,EAAAA,YAC3B,WAyBIjB,G,IAvBIiD,EAAAA,EAAAA,OACAX,EAAAA,EAAAA,MACAE,EAAAA,EAAAA,GACAioB,EAAAA,EAAAA,UACAC,EAAAA,EAAAA,cACA/V,EAAAA,EAAAA,YACA9R,EAAAA,EAAAA,KACA8nB,EAAAA,EAAAA,UACAC,EAAAA,EAAAA,aACA3lB,EAAAA,EAAAA,SACArC,EAAAA,EAAAA,QACAE,EAAAA,EAAAA,SACAC,EAAAA,EAAAA,OACA+nB,EAAAA,EAAAA,UACAC,EAAAA,EAAAA,UACAT,EAAAA,EAAAA,UACAxpB,EAAAA,EAAAA,MACA0G,EAAAA,EAAAA,UACAqjB,EAAAA,EAAAA,kBACAG,EAAAA,EAAAA,WAAAA,EAAAA,EACAC,eAAAA,OAAAA,IAAiB,YACdrmB,EAAAA,GAAAA,EAAAA,CArBH3B,SACAX,QACAE,KACAioB,YACAC,gBACA/V,cACA9R,OACA8nB,YACAC,eACA3lB,WACArC,UACAE,WACAC,SACA+nB,YACAC,YACAT,YACAxpB,QACA0G,YACAqjB,oBACAG,aACAC,mBAKJ,OACI,gBAACjB,GAAOA,GAAAA,CAACxiB,UAAWA,EAAWwjB,WAAYA,GAAgBpmB,GACvD,gBAACslB,GAAkBA,CAACe,eAAgBA,GAC/BR,EACG,gBAACF,GAAoBA,KACjB,gBAACJ,GAAeA,CAACvnB,QAASA,EAASqC,SAAUA,EAAUqlB,UAAWA,EAAWrkB,QAASzD,GACjFF,GAEL,gBAACmnB,GAAWA,CAACxmB,OAAQA,EAAQymB,aAAcgB,GACvC,gBAAClB,GAAYA,QAIrB,gBAACW,GAAeA,CACZxnB,eAAc,GAAU,OAAPM,EAAO,UACxBL,QAASA,EACTqC,SAAUA,EACVqlB,UAAWA,EACXrkB,QAASzD,GAERF,IAIb,gBAACiS,GAAWA,GAAAA,GAAAA,CACR7R,KAAK,OACLC,eAAc,GAAU,OAAPM,EAAO,UACxBT,GAAIA,EACJiT,UAAWkV,EACX9nB,KAAMA,EACN8R,YAAaA,EACbmW,UAAWA,EACXC,UAAWA,EACXnoB,QAASA,EACTqC,SAAUA,QACY,IAAVnE,GAAyB,CAAEA,MAAAA,QACV,IAAjB8pB,GAAgC,CAAEA,aAAAA,IAAa,CAC3D9nB,SAAUA,EACVC,OAAQA,EACR/C,IAAKA,KAER6qB,GACG,gBAACL,GAAuBA,CAAC5nB,QAASA,GAAUioB,GAI5D,I,u1DAGJK,GAAgBtgB,YAAc,kBCzJ9B,IAAMof,GAAUxmB,EAAAA,GAAOlB,MAAK,MAEN,SAACsC,G,OAAsCA,EAAMmL,OAAS,cAAgB,Q,IACzE,SAACnL,G,OAAsCA,EAAMmL,OAAS,SAAW,E,IAC7D,SAACnL,G,OAAsCA,EAAMmL,OAAS,WAAa,E,IAGpFka,GAAmBzmB,EAAAA,GAAOC,IAAG,MAEb,SAACmB,G,OAAsCA,EAAMmL,OAAS,cAAgB,Q,IACzE,SAACnL,G,OAAsCA,EAAMmL,OAAS,SAAW,E,IAC7D,SAACnL,G,OAAsCA,EAAMmL,OAAS,WAAa,E,IAGpFma,GAAqB1mB,EAAAA,GAAOC,IAAG,MAI/B0mB,GAAkB3mB,EAAAA,GAAO4mB,KAAI,MAEhB,SAACxlB,G,OAAyCA,EAAMmL,OAASnC,EAAQsC,QAAU,G,GAC7ErM,EAAU4B,MACR5B,EAAUU,QACV,SAACK,G,OAAyCA,EAAM0lB,UAAY,MAAQ,K,IAC1E,SAAC1lB,G,OAAyCA,EAAMhC,QAAU0C,EAAMC,QAAQC,IAAMF,EAAM+F,KAAKO,U,IACvF,SAAChH,G,OAAyCA,EAAMK,SAAW,MAAQ,G,IAG5EslB,GAAuB/mB,EAAAA,GAAOlB,MAAK,KAErBsL,EAAQsC,SACT,SAACtL,G,OAAyCA,EAAMmL,OAASnC,EAAQsC,QAAU,G,GAC7ErM,EAAU4B,MACR5B,EAAUU,QACV,SAACK,G,OAAyCA,EAAM0lB,UAAY,MAAQ,K,IAC1E,SAAC1lB,G,OAAyCA,EAAMhC,QAAU0C,EAAMC,QAAQC,IAAMF,EAAM+F,KAAKO,U,IACvF,SAAChH,G,OAAyCA,EAAMK,SAAW,MAAQ,G,IAG5EwR,GAAcjT,EAAAA,GAAOqC,MAAK,MAEnBslB,GAAalqB,EAAAA,YACtB,WAkBIjB,G,IAhBI8C,EAAAA,EAAAA,SACAG,EAAAA,EAAAA,OACAX,EAAAA,EAAAA,MACAE,EAAAA,EAAAA,GACAioB,EAAAA,EAAAA,UACAC,EAAAA,EAAAA,cACA7nB,EAAAA,EAAAA,KACA/B,EAAAA,EAAAA,MACA6pB,EAAAA,EAAAA,UACA5a,EAAAA,EAAAA,OACAua,EAAAA,EAAAA,UACA9T,EAAAA,EAAAA,QACAvR,EAAAA,EAAAA,SACArC,EAAAA,EAAAA,QACGgC,EAAAA,GAAAA,EAAAA,CAdH9B,WACAG,SACAX,QACAE,KACAioB,YACAC,gBACA7nB,OACA/B,QACA6pB,YACA5a,SACAua,YACA9T,UACAvR,WACArC,YAKJ,OAAO6nB,EACH,gBAACR,GAAgBA,GAAAA,CAACla,OAAQA,GAAYnL,GAClC,gBAACslB,GAAkBA,KACf,gBAACK,GAAoBA,CACjB5nB,eAAc,GAAU,OAAPM,EAAO,UACxBgC,SAAUA,EACV8K,OAAQA,EACRua,UAAWA,EACX1nB,QAASA,EACTqD,QAASzD,GAERF,GAEL,gBAACmnB,GAAWA,CAACxmB,OAAQA,EAAQymB,aAAcgB,GACvC,gBAAClB,GAAYA,QAGrB,gBAAC/S,GAAWA,CACR/T,KAAK,QACLC,eAAc,GAAU,OAAPM,EAAO,UACxBT,GAAIA,EACJiT,UAAWkV,EACX9nB,KAAMA,EACN/B,MAAOA,EACPmE,SAAUA,EACVuR,QAASA,EACT1T,SAAUA,EACV9C,IAAKA,KAIb,gBAACgqB,GAAOA,GAAAA,CAACrnB,eAAc,GAAU,OAAPM,EAAO,WAAU8M,OAAQA,GAAYnL,GAC3D,gBAACulB,GAAeA,CAACpa,OAAQA,EAAQua,UAAWA,EAAW1nB,QAASA,EAASqC,SAAUA,GAC9E3C,GAEL,gBAACmU,GAAWA,CACR/T,KAAK,QACLC,eAAc,GAAU,OAAPM,EAAO,UACxBT,GAAIA,EACJiT,UAAWkV,EACX9nB,KAAMA,EACN/B,MAAOA,EACPmE,SAAUA,EACVuR,QAASA,EACT1T,SAAUA,EACV9C,IAAKA,IAIrB,I,0jEAEJmrB,GAAWvgB,YAAc,aCxFzB,I,SAAMof,GAAUxmB,EAAAA,GAAOlB,MAAK,MAGF,SAACsC,G,OAAsCA,EAAMmL,OAAS,cAAgB,Q,IACzE,SAACnL,G,OAAsCA,EAAMmL,OAAS,SAAW,E,IAC7D,SAACnL,G,OAAsCA,EAAMmL,OAAS,WAAa,E,IAIxFka,GAAmBzmB,EAAAA,GAAOC,IAAG,MAEb,SAACmB,G,OAAsCA,EAAMmL,OAAS,cAAgB,Q,IACzE,SAACnL,G,OAAsCA,EAAMmL,OAAS,SAAW,E,IAC7D,SAACnL,G,OAAsCA,EAAMmL,OAAS,WAAa,E,IAGpFma,GAAqB1mB,EAAAA,GAAOC,IAAG,MAI/B0mB,GAAkB3mB,EAAAA,GAAO4mB,KAAI,MAEhB,SAACxlB,G,OAAyCA,EAAMmL,OAASnC,EAAQsC,QAAU,G,GAC7ErM,EAAU4B,MACR5B,EAAUU,QACV,SAACK,G,OAAyCA,EAAM0lB,UAAY,MAAQ,K,IAC1E,SAAC1lB,G,OAAyCA,EAAMhC,QAAU0C,EAAMC,QAAQC,IAAMF,EAAM+F,KAAKO,U,IACvF,SAAChH,G,OAAyCA,EAAMK,SAAW,MAAQ,G,IACjE,SAACL,G,OAAyCA,EAAMwmB,cAAgBxmB,EAAMwmB,cAAgB,M,IACvF,SAACxmB,G,OAAyCA,EAAMymB,cAAgBzmB,EAAMymB,cAAgB,S,IACjF,SAACzmB,G,OACdA,EAAM0mB,kBAAoB1mB,EAAM0mB,kBAAoB,M,IAGtDf,GAAuB/mB,EAAAA,GAAOlB,MAAK,KAGjBsL,EAAQsC,SACT,SAACtL,G,OAAyCA,EAAMmL,OAASnC,EAAQsC,QAAU,G,GAC7ErM,EAAU4B,MACR5B,EAAUU,QACV,SAACK,G,OAAyCA,EAAM0lB,UAAY,MAAQ,K,IAC1E,SAAC1lB,G,OAAyCA,EAAMhC,QAAU0C,EAAMC,QAAQC,IAAMF,EAAM+F,KAAKO,U,IACvF,SAAChH,G,OAAyCA,EAAMK,SAAW,MAAQ,G,IACjE,SAACL,G,OAAyCA,EAAMwmB,cAAgBxmB,EAAMwmB,cAAgB,M,IACvF,SAACxmB,G,OAAyCA,EAAMymB,cAAgBzmB,EAAMymB,cAAgB,S,IACjF,SAACzmB,G,OACdA,EAAM0mB,kBAAoB1mB,EAAM0mB,kBAAoB,M,IAI1DC,GAAiB/nB,EAAAA,GAAOqC,MAAK,MAEtB2lB,GAAgBvqB,EAAAA,YACzB,WAsBIjB,G,IApBI8C,EAAAA,EAAAA,SACAG,EAAAA,EAAAA,OACAX,EAAAA,EAAAA,MACAE,EAAAA,EAAAA,GACAioB,EAAAA,EAAAA,UACAC,EAAAA,EAAAA,cACAe,EAAAA,EAAAA,YACA5oB,EAAAA,EAAAA,KACA8nB,EAAAA,EAAAA,UACA5a,EAAAA,EAAAA,OACAua,EAAAA,EAAAA,UACA9T,EAAAA,EAAAA,QACAvR,EAAAA,EAAAA,SACArC,EAAAA,EAAAA,QACA4E,EAAAA,EAAAA,UACA4jB,EAAAA,EAAAA,cACAC,EAAAA,EAAAA,cACAC,EAAAA,EAAAA,kBACG1mB,EAAAA,GAAAA,EAAAA,CAlBH9B,WACAG,SACAX,QACAE,KACAioB,YACAC,gBACAe,cACA5oB,OACA8nB,YACA5a,SACAua,YACA9T,UACAvR,WACArC,UACA4E,YACA4jB,gBACAC,gBACAC,sBAKJ,OAAOb,EACH,gBAACR,GAAgBA,GAAAA,CAACla,OAAQA,EAAQvI,UAAWA,GAAe5C,GACxD,gBAACslB,GAAkBA,KACf,gBAACK,GAAoBA,CACjB5nB,eAAc,GAAU,OAAPM,EAAO,UACxBgC,SAAUA,EACV8K,OAAQA,EACRua,UAAWA,EACX1nB,QAASA,EACTqD,QAASzD,EACT4oB,cAAeA,EACfC,cAAeA,EACfC,kBAAmBA,EACnBtY,MAAO1Q,GAENA,GAEL,gBAACmnB,GAAWA,GAAAA,CAACxmB,OAAQA,EAAQymB,aAAcgB,GAAmBe,GAC1D,gBAACjC,GAAYA,QAGrB,gBAAC+B,GAAAA,CACG7oB,KAAK,WACLC,eAAc,GAAU,OAAPM,EAAO,UACxBT,GAAIA,EACJiT,UAAWkV,EACX9nB,KAAMA,EACNoC,SAAUA,EACVuR,QAASA,EACT1T,SAAUA,EACV9C,IAAKA,KAIb,gBAACgqB,GAAOA,GAAAA,CAACrnB,eAAc,GAAU,OAAPM,EAAO,UAAS8M,OAAQA,EAAQvI,UAAWA,GAAe5C,GAChF,gBAACulB,GAAeA,CACZpa,OAAQA,EACRua,UAAWA,EACX1nB,QAASA,EACTqC,SAAUA,EACVmmB,cAAeA,EACfC,cAAeA,EACfC,kBAAmBA,EACnBtY,MAAO1Q,GAENA,GAEL,gBAACipB,GAAAA,CACG7oB,KAAK,WACLC,eAAc,GAAU,OAAPM,EAAO,UACxBT,GAAIA,EACJiT,UAAWkV,EACX9nB,KAAMA,EACNoC,SAAUA,EACVuR,QAASA,EACT1T,SAAUA,EACV9C,IAAKA,IAIrB,I,2sCAEJwrB,GAAc5gB,YAAc,gB,SCxMhB8gB,G,2CAAAA,KAAAA,GAAAA,CAAAA,I,SAKAC,G,yCAAAA,KAAAA,GAAkBA,CAAAA,I,SAKlBC,G,2MAAAA,KAAAA,GAAeA,CAAAA,ICoBApoB,EAAAA,GAAOyS,GAAE,MAEbzS,EAAAA,GAAOqS,GAAE,KAICvQ,EAAMiI,OAAOC,gBAMhBI,EAAQrJ,QACnB,SAACK,G,OAAWA,EAAMoL,QAAU0b,GAAsBG,UAAajnB,EAAMknB,UAAsB,OAAV,O,IAKjFtoB,EAAAA,GAAOC,IAAG,MAGb,SAACmB,G,OAAWA,EAAMoL,QAAU0b,GAAsBG,SAAW,cAAWE,C,IAC7E,SAACnnB,G,OAAWA,EAAMoL,QAAU0b,GAAsBG,SAAW,OAAIE,C,IAC7D,SAACnnB,G,OAAWA,EAAMoL,QAAU0b,GAAsBG,SAAW,OAAIE,C,IACxD,SAACnnB,G,OACjBA,EAAMoL,QAAU0b,GAAsBG,SAAWvmB,EAAMiI,OAAOE,oBAAiBse,C,IAClE,SAACnnB,G,OACdA,EAAMoL,QAAU0b,GAAsBG,SAAW,aAA0C,OAA7BvmB,EAAMiI,OAAOC,iBAAoB,C,IACrF,SAAC5I,G,OACXA,EAAMoL,QAAU0b,GAAsBG,SAAW,aAA0C,OAA7BvmB,EAAMiI,OAAOC,iBAAoB,C,IACnF,SAAC5I,G,OAAWA,EAAMoL,QAAU0b,GAAsBG,SAAW,GAAkB,OAAfje,EAAQrJ,QAAW,C,IAGlFf,EAAAA,GAAOC,IAAG,KACbmK,EAAQrJ,QAGLf,EAAAA,GAAOwB,OAAO8K,OAAyB,Y,MAAiB,CACzE,eAD2D7M,EAAAA,O,GAA1CO,C,MAMN,SAACoB,G,OAAsCA,EAAMonB,gBAAkB,OAAS,c,IACpE,SAACpnB,G,OAAsCA,EAAMonB,gBAAkB,SAAW,E,KAIvExoB,EAAAA,EAAAA,IAAOuN,EAAAA,GAAPvN,CAAmBuN,KAG7BzL,EAAM+F,KAAKO,WACHgC,EAAQsC,SACX,SAACtL,G,OAAuCA,EAAMoM,WAAa,gBAAkB,W,k+FCrB9F,IAAMgZ,GAAUxmB,EAAAA,GAAOlB,MAAK,MAKtB2pB,GAAezoB,EAAAA,GAAOC,IAAG,MAIlB,SAACmB,G,OAAWA,EAAMR,MAAQQ,EAAMR,MAAQ,M,IACpC,SAACQ,G,OAAWA,EAAMwL,SAAWxL,EAAMwL,SAAW,C,IAC9C,SAACxL,G,OAAWA,EAAMsE,SAAWtE,EAAMsE,SAAW,M,IAQjD,SAACtE,G,OAAWA,EAAMsnB,UAAY5mB,EAAMkH,SAASO,oBAAsBzH,EAAMkH,SAASM,c,GAG9Ec,EAAQrJ,OACTqJ,EAAQnI,OACN,SAACb,G,OAAWA,EAAMK,SAAW,MAAQ,G,IAMxB,SAACL,G,OAAsCA,EAAMK,SAAW,GAAKK,EAAMQ,MAAMC,S,IAKnGkkB,GAAmBzmB,EAAAA,GAAOC,IAAG,MAM7BymB,GAAqB1mB,EAAAA,GAAOC,IAAG,MAI/B0mB,GAAkB3mB,EAAAA,GAAO4mB,KAAI,MAEb,SAACxlB,G,OAAWA,EAAMunB,gBAAkB,EAAIve,EAAQyc,Q,GACnDvc,GACA,SAAClJ,G,OAAyCA,EAAM0lB,UAAY,MAAQ,K,IACtE,SAAC1lB,G,OAAWA,EAAMunB,gBAAkBtoB,EAAUqM,QAAUrM,EAAU4B,K,IAChE,SAACb,G,OAAWA,EAAMunB,gBAAkB,SAAWtoB,EAAUU,M,IACvD,SAACK,G,OAAWA,EAAMunB,gBAAkB,MAAQ,C,IACpD,SAACvnB,G,OACNA,EAAMhC,QAAU0C,EAAMC,QAAQC,IAAMZ,EAAMunB,gBAAkB7mB,EAAMC,QAAQyF,MAAQ1F,EAAM+F,KAAKO,U,IACtF,SAAChH,G,OAAWA,EAAMK,SAAW,MAAQ,G,IAG9CslB,GAAuB/mB,EAAAA,GAAOlB,MAAK,MAEnB,SAACsC,G,OAAWA,EAAMunB,gBAAkB,EAAIve,EAAQyc,Q,GACnDvc,GACA,SAAClJ,G,OAAyCA,EAAM0lB,UAAY,MAAQ,K,IACtE,SAAC1lB,G,OAAWA,EAAMunB,gBAAkBtoB,EAAUqM,QAAUrM,EAAU4B,K,IAChE,SAACb,G,OAAWA,EAAMunB,gBAAkB,SAAWtoB,EAAUU,M,IACvD,SAACK,G,OAAWA,EAAMunB,gBAAkB,MAAQ,C,GAC7Cve,EAAQsC,SACf,SAACtL,G,OACNA,EAAMhC,QAAU0C,EAAMC,QAAQC,IAAMZ,EAAMunB,gBAAkB7mB,EAAMC,QAAQyF,MAAQ1F,EAAM+F,KAAKO,U,IACtF,SAAChH,G,OAAWA,EAAMK,SAAW,MAAQ,G,IAG9CmnB,GAAoB5oB,EAAAA,GAAO6oB,OAAM,MACf,SAACznB,G,OAAWA,EAAMK,UAAWmP,EAAAA,EAAAA,IAAO,MAAO9O,EAAMC,QAAQ0F,OAAS3F,EAAMC,QAAQ0F,K,IAC3F,SAACrG,G,OAAWA,EAAMK,UAAWsH,EAAAA,EAAAA,IAAe,MAAOjH,EAAMC,QAAQyF,OAAS1F,EAAMC,QAAQyF,K,GAClF8C,GACF,SAAClJ,G,OAAWA,EAAMunB,gBAAkB,OAAStoB,EAAU4B,K,IACrD,SAACb,G,OAAWA,EAAMunB,gBAAkB,OAAStoB,EAAUU,M,GAC3DqJ,EAAQnI,MAASmI,EAAQ9J,QAAW8J,EAAQnI,MAASmI,EAAQnI,OAGxD,SAACb,G,OACbA,EAAMhC,QAAU0C,EAAMC,QAAQC,IAAMZ,EAAMsnB,UAAY5mB,EAAM+F,KAAKS,gBAAkBxG,EAAM+F,KAAKQ,U,IACjF,SAACjH,G,OAAWA,EAAMunB,gBAAkB,EAAI9d,EAAOC,O,IAW9Dge,GAAe9oB,EAAAA,GAAO+oB,OAAM,MAIrBC,GAAcvrB,EAAAA,YACvB,WAiBIjB,G,IAfIiD,EAAAA,EAAAA,OACAT,EAAAA,EAAAA,GACAI,EAAAA,EAAAA,QACAupB,EAAAA,EAAAA,gBACAlnB,EAAAA,EAAAA,SACAnC,EAAAA,EAAAA,SACAopB,EAAAA,EAAAA,UACA9nB,EAAAA,EAAAA,MACAgM,EAAAA,EAAAA,SACAlH,EAAAA,EAAAA,SACApI,EAAAA,EAAAA,MACA6T,EAAAA,EAAAA,YACA8X,EAAAA,EAAAA,QACG7nB,EAAAA,GAAAA,EAAAA,CAbH3B,SACAT,KACAI,UACAupB,kBACAlnB,WACAnC,WACAopB,YACA9nB,QACAgM,WACAlH,WACApI,QACA6T,cACA8X,Y,OAKJ,gBAACR,GAAAA,CAAahnB,SAAUA,EAAUb,MAAOA,EAAOgM,SAAUA,EAAUlH,SAAUA,GAC1E,gBAACkjB,GAAAA,GAAAA,CACGzpB,eAAc,GAAU,OAAPM,EAAO,WACxBT,GAAIA,EACJI,QAASA,EACTupB,gBAAiBA,EACjBlnB,SAAUA,EACVnC,SAAUA,EACVopB,UAAWA,EACXprB,MAAOA,EACPd,IAAKA,GACD4E,GAEH+P,GAAe,gBAAC2X,GAAAA,CAAaxrB,MAAO,IAAK6T,GACzC8X,EAAQvV,KAAI,SAACgF,EAAWgM,G,OACrB,gBAACoE,GAAAA,CAAalV,IAAK,GAAiB8Q,OAAdhM,EAAKpb,MAAM,KAAK,OAAFonB,GAAKpnB,MAAOob,EAAKpb,OAChDob,EAAKrZ,K,0rEAO9B2pB,GAAY5hB,YAAc,cAEC3J,EAAAA,YACvB,WAkBIjB,G,IAhBIiD,EAAAA,EAAAA,OACAT,EAAAA,EAAAA,GACAyC,EAAAA,EAAAA,SACAnE,EAAAA,EAAAA,MACAgC,EAAAA,EAAAA,SAAAA,EAAAA,EACA6R,YAAAA,OAAAA,IAAc,OACd/R,EAAAA,EAAAA,QACAN,EAAAA,EAAAA,MACAmqB,EAAAA,EAAAA,QACAhC,EAAAA,EAAAA,UACA0B,EAAAA,EAAAA,gBACAzB,EAAAA,EAAAA,cACAwB,EAAAA,EAAAA,UACA5B,EAAAA,EAAAA,UACG1lB,EAAAA,GAAAA,EAAAA,CAdH3B,SACAT,KACAyC,WACAnE,QACAgC,WACA6R,cACA/R,UACAN,QACAmqB,UACAhC,YACA0B,kBACAzB,gBACAwB,YACA5B,cAKJ,OAAOG,EACH,gBAACR,GAAgBA,GAAAA,CAACiC,UAAWA,GAAetnB,GACxC,gBAACslB,GAAkBA,KACf,gBAACK,GAAoBA,CACjB5nB,eAAc,GAAU,OAAPM,EAAO,UACxBgC,SAAUA,EACVrC,QAASA,EACTqD,QAASzD,EACT2pB,gBAAiBA,EACjB7B,UAAWA,GAEVhoB,GAEL,gBAACmnB,GAAWA,CAACxmB,OAAQA,EAAQymB,aAAcgB,GACvC,gBAAClB,GAAYA,QAGrB,gBAACgD,GAAAA,GAAAA,CACGvpB,OAAQA,EACRT,GAAIA,EACJiqB,QAASA,EACT7pB,QAASA,EACTupB,gBAAiBA,EACjBlnB,SAAUA,EACVnC,SAAUA,EACVopB,UAAWA,EACXprB,MAAOA,EACP6T,YAAaA,EACb3U,IAAKA,GACD4E,KAIZ,gBAAColB,GAAOA,GAAAA,CAACrnB,eAAc,GAAU,OAAPM,EAAO,UAASgC,SAAUA,EAAUinB,UAAWA,GAAetnB,GACnFtC,GACG,gBAAC6nB,GAAeA,CACZllB,SAAUA,EACVrC,QAASA,EACTupB,gBAAiBA,EACjB7B,UAAWA,GAEVhoB,GAGT,gBAACkqB,GAAAA,GAAAA,CACGvpB,OAAQA,EACRT,GAAIA,EACJiqB,QAASA,EACT7pB,QAASA,EACTupB,gBAAiBA,EACjBlnB,SAAUA,EACVnC,SAAUA,EACVopB,UAAWA,EACXprB,MAAOA,EACP6T,YAAaA,EACb3U,IAAKA,GACD4E,IAIpB,IAEQgG,YAAc,cCpPEpH,EAAAA,GAAOyS,GAAE,KACfrI,EAAQrJ,QAGEf,EAAAA,GAAOqS,GAAE,KAE1BjI,EAAQyc,SAAYzc,EAAQrJ,OAAUqJ,EAAQyc,UACrC,SAACzlB,G,OAAWA,EAAM8nB,WAAapnB,EAAMiI,OAAOG,qBAAuB,M,IAPpF,IAUDif,GAAoB,Q,IAEQnpB,EAAAA,GAAOC,IAAG,MAC/B,SAACmB,G,OACNA,EAAMgoB,cAAgBhoB,EAAMgoB,aAAaxT,OAAS,EAC5CxU,EAAMioB,WACF,QAA+Bjf,OAAvB+e,GAAkB,OAAoB,OAAf/e,EAAQrJ,OAAO,KAC9C,eAAsCqJ,OAAvB+e,GAAkB,OAAoB,OAAf/e,EAAQrJ,OAAO,KACzD,M,IAGS,SAACK,G,OAAWA,EAAMioB,WAAa,WAAa,Y,IAG3CrpB,EAAAA,GAAO4mB,KAAI,KAIdvmB,EAAU4B,MACR5B,EAAUU,OAEhBe,EAAM+F,KAAKO,YAQLpI,EAAAA,GAAOqC,MAAK,MAIfrC,EAAAA,GAAOlB,MAAK,KAEfgD,EAAM+F,KAAKO,WAEP/H,EAAU4B,MAER5B,EAAUc,OAOdnB,EAAAA,GAAOwB,OAAM,KAKjB4I,EAAQnI,MACJmI,EAAQnI,MAEIyI,EAAMC,WAAgCD,EAAMC,YAGnD5B,EAAAA,EAAAA,IAAe,GAAKjH,EAAM+F,KAAKO,aAC3BW,EAAAA,EAAAA,IAAe,IAAMjH,EAAM+F,KAAKO,cAIzCpI,EAAAA,EAAAA,IAAOspB,EAAAA,GAAPtpB,CAAWspB,KAGlBxnB,EAAM+F,KAAKO,aAGApI,EAAAA,EAAAA,IAAO2lB,GAAP3lB,CAAW2lB,OAIN3lB,EAAAA,EAAAA,IAAOgoB,GAAPhoB,CAAoBgoB,MAIxBhoB,EAAAA,GAAO4mB,KAAI,KAChBxc,EAAQnI,MAGV5B,EAAUqM,SAIE1M,EAAAA,GAAOC,IAAG,MAC1B,SAACmB,G,OAAWA,EAAMgoB,cAAgBhoB,EAAMgoB,aAAaxT,OAAS,MAAQ,M,ilDCjEnD5V,EAAAA,GAAOC,IAAG,MACrB,SAACmB,G,OAAWA,EAAMoL,QAAU0b,GAAsBG,SAAW,EAAIje,EAAQ+C,Q,IAGxEnN,EAAAA,GAAOC,IAAG,KAEZmK,EAAQrJ,QAGFf,EAAAA,GAAOC,IAAG,MAE1B,SAACmB,G,OACCA,EAAMoL,QAAU0b,GAAsBG,SAAWvmB,EAAMiI,OAAOC,gBAAkBlI,EAAM+F,KAAKE,W,IAClF,SAAC3G,G,OAAWA,EAAMoL,QAAU0b,GAAsBG,SAAW,cAAgB,C,IAC1E,SAACjnB,G,OAAWA,EAAMoL,QAAU0b,GAAsBG,SAAW,OAAS,S,IAC/E,SAACjnB,G,OACRA,EAAMoL,QAAU0b,GAAsBG,SAAWvmB,EAAMiI,OAAOC,gBAAkBI,EAAQrJ,M,IAI1Ef,EAAAA,GAAOC,IAAG,MAGjB,SAACmB,G,OACRA,EAAMoL,QAAU0b,GAAsBG,SAAW,OAAsB,OAAfje,EAAQrJ,QAAW,OAAsB,OAAfqJ,EAAQrJ,O,IAC1E,SAACK,G,OACjBA,EAAMoL,QAAU0b,GAAsBG,SAAW,2CAA6C,M,IACpF,SAACjnB,G,OACXA,EAAMoL,QAAU0b,GAAsBG,SAAW,mCAAqC,M,IAI/EroB,EAAAA,GAAOI,GAAE,MAEH,SAACgB,G,OAAWA,EAAMoL,QAAU0b,GAAsBG,SAAW,OAAShoB,EAAUc,K,IAC9E,SAACC,G,OAAWA,EAAMoL,QAAU0b,GAAsBG,SAAW,OAAShoB,EAAUC,O,GAE5E8J,EAAQsC,SAOb1M,EAAAA,GAAOC,IAAG,KACjBmK,EAAQnI,OAGCjC,EAAAA,GAAOiB,EAAC,KAEXZ,EAAU4B,MACZmI,EAAQnI,MACJ5B,EAAUc,OAKVnB,EAAAA,GAAOC,IAAG,OAKND,EAAAA,EAAAA,IAAOkR,GAAPlR,CAAmBkR,MAC9B,SAAC9P,G,OAAWA,EAAMoL,QAAU0b,GAAsBG,SAAW,WAAa,Q,IAC/E,SAACjnB,G,OAAWA,EAAMoL,QAAU0b,GAAsBG,SAAW,WAAQE,C,IACnE,SAACnnB,G,OAAWA,EAAMoL,QAAU0b,GAAsBG,SAAW,WAAQE,C,IAG5D,SAACnnB,G,OAAWA,EAAMoL,QAAU0b,GAAsBG,SAAW,YAASE,C,IAI1E,SAACnnB,G,OAAWA,EAAMoL,QAAU0b,GAAsBG,SAAW,YAASE,C,IACvE,SAACnnB,G,OAAWA,EAAMoL,QAAU0b,GAAsBG,SAAW,YAASE,C,0vCCpHlEvoB,EAAAA,GAAOC,IAAG,MAQAD,EAAAA,GAAOC,IAAG,MAErBD,EAAAA,GAAOC,IAAG,KACTmK,EAAQ9J,UAIXN,EAAAA,EAAAA,IAAOqQ,EAAAA,GAAPrQ,CAAkBqQ,KACxBvO,EAAMC,QAAQC,IAGNoI,EAAQsC,UAGR1M,EAAAA,EAAAA,IAAO+G,EAAAA,GAAP/G,CAAkB+G,KAC1BjF,EAAMC,QAAQsF,MAGN+C,EAAQsC,SAGZ1M,EAAAA,GAAOC,IAAG,MAMXD,EAAAA,GAAOC,IAAG,MAEX,SAACmB,G,OACPA,EAAMoL,QAAU0b,GAAsBG,SAAW,aAA0C,OAA7BvmB,EAAMiI,OAAOC,iBAAoB,C,IAElF,SAAC5I,G,OAAWA,EAAMoL,QAAU0b,GAAsBG,SAAY,eAAgB,C,IACpF,SAACjnB,G,OACRA,EAAMoL,QAAU0b,GAAsBG,SAAW,OAAsB,OAAfje,EAAQrJ,QAAW,OAAsB,OAAfqJ,EAAQrJ,O,IAC1E,SAACK,G,OACjBA,EAAMoL,QAAU0b,GAAsBG,SAAW,2CAA6C,M,IACpF,SAACjnB,G,OACXA,EAAMoL,QAAU0b,GAAsBG,SAAW,mCAAqC,M,IAC7E,SAACjnB,G,OAAWA,EAAMoL,QAAU0b,GAAsBG,SAAW,OAAShoB,EAAUc,K,IAC9E,SAACC,G,OAAWA,EAAMoL,QAAU0b,GAAsBG,SAAW,OAAShoB,EAAUC,O,IAIpEN,EAAAA,GAAOqS,GAAE,M,u8BC3ExC,IAAMkX,GAAuBvpB,EAAAA,GAAOyS,GAAE,MAgBzB+W,GAAiB/rB,EAAAA,YAAwD,WAAyBjB,G,IAAtBgG,EAAAA,EAAAA,SAAapB,EAAAA,GAAAA,EAAAA,CAAboB,a,OACrF,gBAAC+mB,G,uUAAAA,CAAAA,CAAqB/sB,IAAKA,GAAS4E,GAC/BoB,E,20BAGTgnB,GAAepiB,YAAc,iBCd7B,IAAMqiB,GAAkBzpB,EAAAA,GAAOwB,OAAO8K,OAAsB,Y,MAAiB,CACzE,eAD2D7M,EAAAA,O,GAAvCO,C,KAGA8B,EAAM+F,KAAKE,YAElB1H,EAAU4B,OAGH,SAACb,G,OAAWA,EAAMyW,SAAW/V,EAAMC,QAAQ0F,OAAQmJ,EAAAA,EAAAA,IAAO,IAAM9O,EAAMC,QAAQ0F,M,GACzF3F,EAAMC,QAAQyF,OAIdkiB,GAAYjsB,EAAAA,YAAoD,WAAyBjB,G,IAAtBgG,EAAAA,EAAAA,SAAapB,EAAAA,GAAAA,EAAAA,CAAboB,a,OAC5E,gBAACinB,G,uUAAAA,CAAAA,CAAgBjtB,IAAKA,GAAS4E,GAC1BoB,E,qzCAGTknB,GAAUtiB,YAAc,YCDxB,IAAM2J,GAAc/Q,EAAAA,GAAOqC,MAAK,MACR,SAACjB,G,OACjBA,EAAMK,UAAWmP,EAAAA,EAAAA,IAAO,MAAO9O,EAAMC,QAAQ0F,OAAS3F,EAAMC,QAAQ0F,K,IAC/D,SAACrG,G,OACNA,EAAMK,UAAWsH,EAAAA,EAAAA,IAAe,MAAOjH,EAAMC,QAAQyF,OAAS1F,EAAMC,QAAQyF,K,GACnEnH,EAAU4B,MACR5B,EAAUU,OACdqJ,EAAQnI,OAGH,SAACb,G,OAAqCA,EAAMhC,QAAU0C,EAAMC,QAAQC,IAAMF,EAAM+F,KAAKQ,U,GACpFwC,EAAOC,SAOf6e,GAAgBlsB,EAAAA,YACzB,WAmBIjB,G,IAjBIwV,EAAAA,EAAAA,aACAC,EAAAA,EAAAA,UACAxS,EAAAA,EAAAA,OACA2nB,EAAAA,EAAAA,aACA3lB,EAAAA,EAAAA,SACAzC,EAAAA,EAAAA,GACAI,EAAAA,EAAAA,QACAkoB,EAAAA,EAAAA,UACAC,EAAAA,EAAAA,UACAqC,EAAAA,EAAAA,QACAC,EAAAA,EAAAA,SACAxqB,EAAAA,EAAAA,KACA8R,EAAAA,EAAAA,YACA2Y,EAAAA,EAAAA,SACAxsB,EAAAA,EAAAA,MACAgC,EAAAA,EAAAA,SAIJ,OACI,gBAACyR,GAAWA,GAAAA,GAAAA,GAAAA,CACR7R,KAAK,WACL+H,aAAYjI,EACZgT,aAAcA,EACdC,UAAWA,EACX9S,eAAcM,QACe,IAAjB2nB,GAAgC,CAAEA,aAAAA,IAAa,CAC3D3lB,SAAUA,EACVzC,GAAIA,EACJI,QAASA,EACTkoB,UAAWA,EACXC,UAAWA,EACXwC,UAAW,OACXH,QAASA,EACTC,SAAUA,EACVxqB,KAAMA,EACNC,SAAUA,EACV6R,YAAaA,EACb3U,IAAKA,EACLstB,SAAUA,SACY,IAAVxsB,GAAyB,CAAEA,MAAAA,IAGnD,I,4iEAEJqsB,GAAcviB,YAAc,gBC5D5B,IAAMmf,GAAiB,sDAKjBC,GAAUxmB,EAAAA,GAAOlB,MAAK,KACtBynB,IAGAE,GAAmBzmB,EAAAA,GAAOC,IAAG,KAC7BsmB,IAGAG,GAAqB1mB,EAAAA,GAAOC,IAAG,MAI/B0mB,GAAkB3mB,EAAAA,GAAO4mB,KAAI,KAEbxc,EAAQyc,SACbxmB,EAAU4B,MACR5B,EAAUU,QACV,SAACK,G,OAAyCA,EAAM0lB,UAAY,MAAQ,K,IAC1E,SAAC1lB,G,OAAyCA,EAAMhC,QAAU0C,EAAMC,QAAQC,IAAMF,EAAM+F,KAAKO,U,IACvF,SAAChH,G,OAAyCA,EAAMK,SAAW,MAAQ,G,IAG5EslB,GAAuB/mB,EAAAA,GAAOlB,MAAK,KAErBsL,EAAQsC,QACNtC,EAAQyc,SACbxmB,EAAU4B,MACR5B,EAAUU,QACV,SAACK,G,OAAyCA,EAAM0lB,UAAY,MAAQ,K,IAC1E,SAAC1lB,G,OAAyCA,EAAMhC,QAAU0C,EAAMC,QAAQC,IAAMF,EAAM+F,KAAKO,U,IACvF,SAAChH,G,OAAyCA,EAAMK,SAAW,MAAQ,G,IAGrEuoB,GAAgBvsB,EAAAA,YACzB,WAwBIjB,G,IAtBIiD,EAAAA,EAAAA,OACAX,EAAAA,EAAAA,MACAE,EAAAA,EAAAA,GACAioB,EAAAA,EAAAA,UACAC,EAAAA,EAAAA,cACA/V,EAAAA,EAAAA,YACA9R,EAAAA,EAAAA,KACA8nB,EAAAA,EAAAA,UACAC,EAAAA,EAAAA,aACA3lB,EAAAA,EAAAA,SACArC,EAAAA,EAAAA,QACAE,EAAAA,EAAAA,SACAgoB,EAAAA,EAAAA,UACAC,EAAAA,EAAAA,UACAqC,EAAAA,EAAAA,QACAC,EAAAA,EAAAA,SACAC,EAAAA,EAAAA,SACAhD,EAAAA,EAAAA,UACAxpB,EAAAA,EAAAA,MACA0G,EAAAA,EAAAA,UACG5C,EAAAA,GAAAA,EAAAA,CApBH3B,SACAX,QACAE,KACAioB,YACAC,gBACA/V,cACA9R,OACA8nB,YACAC,eACA3lB,WACArC,UACAE,WACAgoB,YACAC,YACAqC,UACAC,WACAC,WACAhD,YACAxpB,QACA0G,cAKJ,OAAOijB,EACH,gBAACR,GAAgBA,GAAAA,CAACziB,UAAWA,GAAe5C,GACxC,gBAACslB,GAAkBA,KACf,gBAACK,GAAoBA,CACjB5nB,eAAc,GAAU,OAAPM,EAAO,UACxBqnB,UAAWA,EACX1nB,QAASA,EACTqC,SAAUA,EACVgB,QAASzD,GAERF,GAEL,gBAACmnB,GAAWA,CAACxmB,OAAQA,EAAQymB,aAAcgB,GACvC,gBAAClB,GAAYA,QAGrB,gBAAC2D,GAAaA,GAAAA,GAAAA,CACVlqB,OAAQ,GAAU,OAAPA,EAAO,UAClBT,GAAIA,EACJiT,UAAWkV,EACX9nB,KAAMA,EACN8R,YAAaA,EACblK,aAAYjI,EACZsoB,UAAWA,EACXC,UAAWA,EACXqC,QAASA,EACTC,SAAUA,EACVC,SAAUA,EACV1qB,QAASA,EACTqC,SAAUA,QACY,IAAVnE,GAAyB,CAAEA,MAAAA,QACV,IAAjB8pB,GAAgC,CAAEA,aAAAA,IAAa,CAC3D5qB,IAAKA,MAIb,gBAACgqB,GAAOA,GAAAA,CAACrnB,eAAc,GAAU,OAAPM,EAAO,UAASuE,UAAWA,GAAe5C,GAChE,gBAACulB,GAAeA,CAACvnB,QAASA,EAASqC,SAAUA,EAAUqlB,UAAWA,GAC7DhoB,GAEL,gBAAC6qB,GAAaA,GAAAA,GAAAA,CACVlqB,OAAQ,GAAU,OAAPA,EAAO,UAClBT,GAAIA,EACJiT,UAAWkV,EACX9nB,KAAMA,EACN8R,YAAaA,EACblK,aAAYjI,EACZsoB,UAAWA,EACXC,UAAWA,EACXqC,QAASA,EACTC,SAAUA,EACVC,SAAUA,EACV1qB,QAASA,EACTqC,SAAUA,QACY,IAAVnE,GAAyB,CAAEA,MAAAA,QACV,IAAjB8pB,GAAgC,CAAEA,aAAAA,IAAa,CAC3D9nB,SAAUA,EACV9C,IAAKA,KAIrB,I,izCAEJwtB,GAAc5iB,YAAc,gBCrI5B,IAAM2J,GAAc/Q,EAAAA,GAAOqC,MAAK,MACR,SAACjB,G,OACjBA,EAAMK,UAAWmP,EAAAA,EAAAA,IAAO,MAAO9O,EAAMC,QAAQ0F,OAAS3F,EAAMC,QAAQ0F,K,IAC/D,SAACrG,G,OACNA,EAAMK,UAAWsH,EAAAA,EAAAA,IAAe,MAAOjH,EAAMC,QAAQyF,OAAS1F,EAAMC,QAAQyF,K,GACnEnH,EAAU4B,MACR5B,EAAUU,OACdqJ,EAAQnI,OAGH,SAACb,G,OAAqCA,EAAMhC,QAAU0C,EAAMC,QAAQC,IAAMF,EAAM+F,KAAKQ,U,GACpFwC,EAAOC,SAOfmf,GAAcxsB,EAAAA,YACvB,WAoBIjB,G,IAlBIwV,EAAAA,EAAAA,aACAC,EAAAA,EAAAA,UACAxS,EAAAA,EAAAA,OACA2nB,EAAAA,EAAAA,aACA3lB,EAAAA,EAAAA,SACAzC,EAAAA,EAAAA,GACAI,EAAAA,EAAAA,QACA8qB,EAAAA,EAAAA,IACAC,EAAAA,EAAAA,IACA9qB,EAAAA,EAAAA,KACA8R,EAAAA,EAAAA,YACA2Y,EAAAA,EAAAA,SACAzE,EAAAA,EAAAA,KACA/nB,EAAAA,EAAAA,MACAgC,EAAAA,EAAAA,SACAC,EAAAA,EAAAA,OACA6qB,EAAAA,EAAAA,UAIJ,OACI,gBAACrZ,GAAWA,GAAAA,GAAAA,GAAAA,CACRiB,aAAcA,EACdC,UAAWA,EACX9S,eAAcM,QACe,IAAjB2nB,GAAgC,CAAEA,aAAAA,IAAa,CAC3D3lB,SAAUA,EACVzC,GAAIA,EACJI,QAASA,EACT8qB,IAAKA,EACLC,IAAKA,EACL9qB,KAAMA,EACNC,SAAUA,EACVC,OAAQA,EACR4R,YAAaA,EACb3U,IAAKA,EACLstB,SAAUA,EACVzE,KAAMA,EACNnmB,KAAK,gBACiB,IAAV5B,GAAyB,CAAEA,MAAAA,GAClC8sB,GAAa,CAAE,aAAcA,IAG9C,I,mmDAEJH,GAAY7iB,YAAc,cC7E1B,IAAMmf,GAAiB,sDAKjBC,GAAUxmB,EAAAA,GAAOlB,MAAK,KACtBynB,IAGAE,GAAmBzmB,EAAAA,GAAOC,IAAG,KAC7BsmB,IAGAG,GAAqB1mB,EAAAA,GAAOC,IAAG,MAI/B0mB,GAAkB3mB,EAAAA,GAAO4mB,KAAI,KAEbxc,EAAQyc,SACbxmB,EAAU4B,MACR5B,EAAUU,QACV,SAACK,G,OAAyCA,EAAM0lB,UAAY,MAAQ,K,IAC1E,SAAC1lB,G,OAAyCA,EAAMhC,QAAU0C,EAAMC,QAAQC,IAAMF,EAAM+F,KAAKO,U,IACvF,SAAChH,G,OAAyCA,EAAMK,SAAW,MAAQ,G,IAG5EslB,GAAuB/mB,EAAAA,GAAOlB,MAAK,KAEnBsL,EAAQyc,SACVzc,EAAQsC,QACXrM,EAAU4B,MACR5B,EAAUU,QACV,SAACK,G,OAAyCA,EAAM0lB,UAAY,MAAQ,K,IAC1E,SAAC1lB,G,OAAyCA,EAAMhC,QAAU0C,EAAMC,QAAQC,IAAMF,EAAM+F,KAAKO,U,IACvF,SAAChH,G,OAAyCA,EAAMK,SAAW,MAAQ,G,uuDAGvDhE,EAAAA,YACvB,WAwBIjB,G,IAtBIwV,EAAAA,EAAAA,aACAC,EAAAA,EAAAA,UACAxS,EAAAA,EAAAA,OACA2nB,EAAAA,EAAAA,aACA3lB,EAAAA,EAAAA,SACAwlB,EAAAA,EAAAA,UACAC,EAAAA,EAAAA,cACAloB,EAAAA,EAAAA,GACAI,EAAAA,EAAAA,QACAN,EAAAA,EAAAA,MACAorB,EAAAA,EAAAA,IACAC,EAAAA,EAAAA,IACA9qB,EAAAA,EAAAA,KACA8R,EAAAA,EAAAA,YAAAA,EAAAA,EACA2Y,SAAAA,OAAAA,IAAW,KACXzE,EAAAA,EAAAA,KACA/lB,EAAAA,EAAAA,SACAwnB,EAAAA,EAAAA,UACAxpB,EAAAA,EAAAA,MACA0G,EAAAA,EAAAA,UACG5C,EAAAA,GAAAA,EAAAA,CApBH4Q,eACAC,YACAxS,SACA2nB,eACA3lB,WACAwlB,YACAC,gBACAloB,KACAI,UACAN,QACAorB,MACAC,MACA9qB,OACA8R,cACA2Y,WACAzE,OACA/lB,WACAwnB,YACAxpB,QACA0G,cAKJ,OAAOijB,EACH,gBAACR,GAAgBA,GAAAA,CAACziB,UAAWA,GAAe5C,GACxC,gBAACslB,GAAkBA,KACf,gBAACK,GAAoBA,CACjB5nB,eAAc,GAAU,OAAPM,EAAO,UACxBqnB,UAAWA,EACX1nB,QAASA,EACTqC,SAAUA,EACVgB,QAASzD,GAERF,GAEL,gBAACmnB,GAAWA,CAACxmB,OAAQA,EAAQymB,aAAcgB,GACvC,gBAAClB,GAAYA,QAGrB,gBAACiE,GAAWA,CACRjY,aAAcA,EACdC,UAAWA,EACXxS,OAAQ,GAAU,OAAPA,EAAO,UAClB2nB,aAAcA,EACd3lB,SAAUA,EACVzC,GAAIA,EACJI,QAASA,EACT8qB,IAAKA,EACLC,IAAKA,EACL9qB,KAAMA,EACNC,SAAUA,EACV6R,YAAaA,EACb2Y,SAAUA,EACVttB,IAAKA,EACL6oB,KAAMA,EACN/nB,MAAOA,KAIf,gBAACkpB,GAAOA,GAAAA,CAACrnB,eAAc,GAAU,OAAPM,EAAO,UAASuE,UAAWA,GAAe5C,GAChE,gBAACulB,GAAeA,CAACvnB,QAASA,EAASqC,SAAUA,EAAUqlB,UAAWA,GAC7DhoB,GAEL,gBAACmrB,GAAWA,CACRjY,aAAcA,EACdC,UAAWA,EACXxS,OAAQ,GAAU,OAAPA,EAAO,UAClB2nB,aAAcA,EACd3lB,SAAUA,EACVzC,GAAIA,EACJI,QAASA,EACT8qB,IAAKA,EACLC,IAAKA,EACL9qB,KAAMA,EACNC,SAAUA,EACV6R,YAAaA,EACb3U,IAAKA,EACLstB,SAAUA,EACVzE,KAAMA,EACN/nB,MAAOA,IAIvB,IAEQ8J,YAAc,cChG1B,IAAMof,GAAUxmB,EAAAA,GAAOC,IAAG,MAGhB,SAACmB,G,OAAiCA,EAAMomB,WAAapmB,EAAMomB,WAAa,M,IACxE,SAACpmB,G,OAAkCA,EAAMipB,gBAAqC,GAAnB,gB,IAC3D,SAACjpB,G,MAA2D,WAA1BA,EAAMipB,gBAA+B,sBAAwB,E,IAC/F,SAACjpB,G,MAA2D,UAA1BA,EAAMipB,gBAA8B,sBAAwB,E,IAGlG3D,GAAqB1mB,EAAAA,GAAOC,IAAG,MAGlB,SAACmB,G,OAA2CA,EAAMqmB,c,GAEhDrd,EAAQjJ,OAGvBwlB,GAAkB3mB,EAAAA,GAAOlB,MAAK,KAChBsL,EAAQsC,QACXrM,EAAU4B,MACR5B,EAAUc,OAKV,SAACC,G,OAAyCA,EAAM0lB,UAAY,MAAQ,K,IAC1E,SAAC1lB,G,OAAyCA,EAAMhC,QAAU0C,EAAMC,QAAQC,IAAMF,EAAM+F,KAAKO,U,IACvF,SAAChH,G,OAAyCA,EAAMK,SAAW,MAAQ,G,IAG5EslB,GAAuB/mB,EAAAA,GAAOC,IAAG,MAKjC+mB,GAA0BhnB,EAAAA,GAAOC,IAAG,KACzBI,EAAUqM,QACRrM,EAAU4B,OAChB,SAACb,G,OACNA,EAAMhC,QAAU0C,EAAMC,QAAQC,IAAMF,EAAMC,QAAQyF,K,GACvC4C,EAAQnI,OAGV,SAACb,G,OAAkDA,EAAMipB,gBAA0B,GAAR,K,IAClF,SAACjpB,G,MAA2E,WAA1BA,EAAMipB,gBAA+B,MAAQ,E,IAC/F,SAACjpB,G,MAA2E,UAA1BA,EAAMipB,gBAA8B,MAAQ,E,IAGlGC,GAAetqB,EAAAA,GAAO4mB,KAAI,KACfvmB,EAAU4B,OACd,SAACb,G,OAAsCA,EAAMhC,QAAU0C,EAAMC,QAAQC,IAAMF,EAAMC,QAAQyF,K,IAExF,SAACpG,G,MACmB,WAA1BA,EAAMipB,gBAA+B,KAAmB,OAAdjgB,EAAQnI,MAAM,QAAQ,SAAuB,OAAdmI,EAAQnI,M,IAE5EsoB,GAAoB9sB,EAAAA,YAC7B,WA6BIjB,G,IA3BIwV,EAAAA,EAAAA,aACAC,EAAAA,EAAAA,UACAxS,EAAAA,EAAAA,OACA2nB,EAAAA,EAAAA,aACA3lB,EAAAA,EAAAA,SACAwlB,EAAAA,EAAAA,UACAC,EAAAA,EAAAA,cACAloB,EAAAA,EAAAA,GACAI,EAAAA,EAAAA,QACAN,EAAAA,EAAAA,MACAorB,EAAAA,EAAAA,IACAC,EAAAA,EAAAA,IACA9qB,EAAAA,EAAAA,KACA8R,EAAAA,EAAAA,YAAAA,EAAAA,EACA2Y,SAAAA,OAAAA,IAAW,KACXzE,EAAAA,EAAAA,KACA/lB,EAAAA,EAAAA,SACAwnB,EAAAA,EAAAA,UACAU,EAAAA,EAAAA,WAAAA,EAAAA,EACAC,eAAAA,OAAAA,IAAiB,YACjBnqB,EAAAA,EAAAA,MACA0G,EAAAA,EAAAA,UACAqjB,EAAAA,EAAAA,kBACAmD,EAAAA,EAAAA,OACAH,EAAAA,EAAAA,gBACGjpB,EAAAA,GAAAA,EAAAA,CAzBH4Q,eACAC,YACAxS,SACA2nB,eACA3lB,WACAwlB,YACAC,gBACAloB,KACAI,UACAN,QACAorB,MACAC,MACA9qB,OACA8R,cACA2Y,WACAzE,OACA/lB,WACAwnB,YACAU,aACAC,iBACAnqB,QACA0G,YACAqjB,oBACAmD,SACAH,oBAKJ,OACI,gBAAC7D,G,uUAAOA,CAAAA,CACJxiB,UAAWA,EACXwjB,WAAYA,EACZ6C,gBAAiBG,EAASH,OAAkB9B,GACxCnnB,GAEJ,gBAACslB,GAAkBA,CAACe,eAAgBA,GAC/BR,EACG,gBAACF,GAAoBA,KACjB,gBAACJ,GAAeA,CAACvnB,QAASA,EAASqC,SAAUA,EAAUqlB,UAAWA,EAAWrkB,QAASzD,GACjFF,GAEL,gBAACmnB,GAAWA,CAACxmB,OAAQA,EAAQymB,aAAcgB,GACvC,gBAAClB,GAAYA,QAIrB,gBAACW,GAAeA,CACZxnB,eAAc,GAAU,OAAPM,EAAO,UACxBL,QAASA,EACTqC,SAAUA,EACVqlB,UAAWA,EACXrkB,QAASzD,GAERF,IAIZ0rB,GAA8B,WAApBH,GACP,gBAACC,GAAAA,CAAalrB,QAASA,EAASirB,gBAAiBA,GAC5CG,GAGT,gBAACP,GAAWA,CACRjY,aAAcA,EACdC,UAAWA,EACXxS,OAAQ,GAAU,OAAPA,EAAO,UAClB2nB,aAAcA,EACd3lB,SAAUA,EACVzC,GAAIA,EACJI,QAASA,EACT8qB,IAAKA,EACLC,IAAKA,EACL9qB,KAAMA,EACNC,SAAUA,EACV6R,YAAaA,EACb3U,IAAKA,EACLstB,SAAUA,EACVzE,KAAMA,EACN/nB,MAAOA,IAEVktB,GAA8B,UAApBH,GACP,gBAACC,GAAAA,CAAalrB,QAASA,EAASirB,gBAAiBA,GAC5CG,GAGRnD,GACG,gBAACL,GAAuBA,CAAC5nB,QAASA,EAASirB,gBAAiBG,EAASH,OAAkB9B,GAClFlB,GAKrB,I,8eAGJkD,GAAkBnjB,YAAc,oBCnMhC,IAwDA,GAxD4F,Y,QACxFP,KAAAA,OAAAA,IAAO,cACP2I,EAAAA,EAAAA,MACA1I,EAAAA,EAAAA,OACAlG,EAAAA,EAAAA,MACG6pB,EAAAA,GAAAA,EAAAA,CAJH5jB,OACA2I,QACA1I,SACAlG,U,OAGA,gBAAC8pB,GAAAA,E,uUAAOA,CAAAA,CAACC,QAAQ,YAAY7jB,OAAQA,EAAQlG,MAAOA,EAAO4O,MAAOA,GAAWib,GACzE,gBAACG,OAAAA,CACG5rB,GAAG,UACHgF,UAAU,mCACV6mB,EAAE,0EACFhkB,KAAMA,IAEV,gBAAC+jB,OAAAA,CACG5mB,UAAU,gCACV6mB,EAAE,wcACFC,OAAO,OACPjkB,KAAK,YAET,gBAACkkB,OAAAA,CACG/rB,GAAG,KACHgF,UAAU,0BACVgnB,UAAU,mBACVnkB,KAAK,OACLuV,SAAS,KACT6O,WAAW,YACXC,WAAW,OAEX,gBAACC,QAAAA,CAAMC,EAAE,IAAIC,EAAE,KAAI,MAIvB,gBAACN,OAAAA,CACG/rB,GAAG,KACHgF,UAAU,0BACVgnB,UAAU,mBACVnkB,KAAK,OACLuV,SAAS,KACT6O,WAAW,YACXC,WAAW,OAEX,gBAACC,QAAAA,CAAMC,EAAE,IAAIC,EAAE,KAAI,MAIvB,gBAACT,OAAAA,CACG5rB,GAAG,sBACHgF,UAAU,8BACV6mB,EAAE,mMACFG,UAAU,uCACVnkB,KAAK,S,EC5DjB,M,8eCSA,I,GAwDA,GAxD8F,Y,QAC1FA,KAAAA,OAAAA,IAAO,cACP2I,EAAAA,EAAAA,MACA1I,EAAAA,EAAAA,OACAlG,EAAAA,EAAAA,MACG6pB,EAAAA,GAAAA,EAAAA,CAJH5jB,OACA2I,QACA1I,SACAlG,U,OAGA,gBAAC8pB,GAAAA,E,uUAAOA,CAAAA,CAACC,QAAQ,YAAY7jB,OAAQA,EAAQlG,MAAOA,EAAO4O,MAAOA,GAAWib,GACzE,gBAACG,OAAAA,CACG5rB,GAAG,UACHgF,UAAU,oCACV6mB,EAAE,0EACFhkB,KAAMA,IAEV,gBAAC+jB,OAAAA,CACG5mB,UAAU,iCACV6mB,EAAE,wcACFC,OAAO,OACPjkB,KAAK,YAET,gBAACkkB,OAAAA,CACG/rB,GAAG,KACHgF,UAAU,2BACVgnB,UAAU,mBACVnkB,KAAK,OACLuV,SAAS,KACT6O,WAAW,YACXC,WAAW,OAEX,gBAACC,QAAAA,CAAMC,EAAE,IAAIC,EAAE,KAAI,MAIvB,gBAACN,OAAAA,CACG/rB,GAAG,KACHgF,UAAU,2BACVgnB,UAAU,mBACVnkB,KAAK,OACLuV,SAAS,KACT6O,WAAW,YACXC,WAAW,OAEX,gBAACC,QAAAA,CAAMC,EAAE,IAAIC,EAAE,KAAI,MAIvB,gBAACT,OAAAA,CACG5rB,GAAG,sBACHgF,UAAU,+BACV6mB,EAAE,mMACFG,UAAU,uCACVnkB,KAAK,S,EC5DjB,M,whJCyBYykB,G,qDAAAA,KAAAA,GAAAA,CAAAA,IAgCZ,IAAM9E,GAAUxmB,EAAAA,GAAOurB,SAAQ,MAKzB9E,GAAmBzmB,EAAAA,GAAOurB,SAAQ,MAKlCC,GAAexrB,EAAAA,GAAOyrB,OAAM,MAK5BC,GAAmB1rB,EAAAA,GAAO4mB,KAAI,KAEhBxc,EAAQsC,QACNtC,EAAQyc,SACbxmB,EAAU4B,MACR5B,EAAUU,QACV,SAACK,G,OAA0CA,EAAMuqB,WAAa,MAAQ,K,IAC5E,SAACvqB,G,OAA0CA,EAAMhC,QAAU0C,EAAMC,QAAQC,IAAMF,EAAM+F,KAAKO,U,IACxF,SAAChH,G,OAA0CA,EAAMK,SAAW,MAAQ,G,IAG7EqR,GAAc9S,EAAAA,GAAOlB,MAAK,MAGV,SAACsC,G,OAAqCA,EAAMmL,OAAS,cAAgB,Q,IACxE,SAACnL,G,OAAqCA,EAAMmL,OAAS,SAAW,E,IAC5D,SAACnL,G,OAAqCA,EAAMmL,OAAS,WAAa,E,IAC3E,SAACnL,G,OAAqCA,EAAMK,SAAW,UAAY,S,IAG3EsR,GAAkB/S,EAAAA,GAAO4mB,KAAI,MAEhB,SAACxlB,G,OAAyCA,EAAMmL,OAASnC,EAAQnI,MAAQ,G,GAC3E5B,EAAU4B,MAEdH,EAAM+F,KAAKO,WACL/H,EAAUU,QACd,SAACK,G,OAAyCA,EAAMK,SAAW,MAAQ,G,IAG5EmqB,GAAqB5rB,EAAAA,GAAOC,IAAG,KAC7B6S,GACgB1I,EAAQjJ,OAI1B0qB,IAAgB7rB,EAAAA,EAAAA,IAAO8rB,GAAP9rB,CAAoB8rB,MAMpCC,IAAiB/rB,EAAAA,EAAAA,IAAOgsB,GAAPhsB,CAAqBgsB,MAMtC/Y,GAAcjT,EAAAA,GAAOqC,MAAK,KAQxBwpB,GACAE,GAGAF,GACAA,GACAA,GACAA,GACAE,GACAA,GACAA,GACAA,GAKIF,GACAA,GACAA,GACAA,GACAE,GACAA,GACAA,GACAA,IACQ,SAAC3qB,G,OAAqCA,EAAMK,SAAW,UAAY,S,GAIvEoqB,GAA4BE,IACzB,SAAC3qB,G,OAAqCA,EAAMuP,aAAe,qBAAuB,G,IAClF,SAACvP,G,OACRA,EAAMuP,aAAe,oCAAsC,G,GAI3Dkb,GACAE,IACQ,SAAC3qB,G,OAA8CA,EAAMoL,MAAMyf,a,GAEnEJ,GACAE,GAGAF,GACAA,GACAA,GACAE,GACAA,GACAA,IAMCG,GAA+B,CACxCD,cAAenqB,EAAMQ,MAAMC,WAGO9E,EAAAA,YAClC,WAoBIjB,G,QAlBImU,aAAAA,OAAAA,IAAe,KACfsB,EAAAA,EAAAA,UACAxS,EAAAA,EAAAA,OACAgC,EAAAA,EAAAA,SACAwlB,EAAAA,EAAAA,UACAC,EAAAA,EAAAA,cACAloB,EAAAA,EAAAA,GACAI,EAAAA,EAAAA,QACAqsB,EAAAA,EAAAA,OACApsB,EAAAA,EAAAA,KACAC,EAAAA,EAAAA,SAAAA,EAAAA,EACAkN,MAAAA,OAAAA,IAAQ,EAAA0f,GAAAA,EACRpF,EAAAA,EAAAA,UACA6E,EAAAA,EAAAA,WACAruB,EAAAA,EAAAA,MACA0G,EAAAA,EAAAA,UACG5C,EAAAA,GAAAA,EAAAA,CAhBHuP,eACAsB,YACAxS,SACAgC,WACAwlB,YACAC,gBACAloB,KACAI,UACAqsB,SACApsB,OACAC,WACAkN,QACAsa,YACA6E,aACAruB,QACA0G,cAKJ,OAAOijB,EACH,gBAACkF,EAAAA,GAAaA,CAAC3f,MAAOA,GAClB,gBAACia,GAAgBA,GAAAA,CAACtnB,eAAc,GAAU,OAAPM,GAAUuE,UAAWA,GAAe5C,GACnE,gBAACoqB,GAAAA,CAAavkB,aAAY,GAAM,OAAHjI,EAAG,YAC5B,gBAAC0sB,GAAAA,CAAiBjqB,SAAUA,EAAUrC,QAASA,EAASusB,WAAYA,GAC/DF,GAEL,gBAACxF,GAAWA,CAACxmB,OAAQA,EAAQymB,aAAcgB,GACvC,gBAAClB,GAAYA,QAGrB,gBAAC4F,GAAAA,KACG,gBAAC9Y,GAAWA,CAACvG,QAAAA,EAAO9K,SAAUA,GAC1B,gBAACsR,GAAeA,CACZ9L,aAAY,GAAM,OAAHjI,EAAG,aAClByC,SAAUA,EACV8K,QAAAA,EACAua,UAAWA,GACd,aAGD,gBAAC7T,GAAWA,GAAAA,GAAAA,CACRhM,aAAY,GAAM,OAAHjI,EAAG,cAClB2R,aAAcA,EACdsB,UAAWA,EACX9S,eAAc,GAAU,OAAPM,EAAO,oBACF,IAAVnC,GAAyB,CAAE0V,QAAmB,QAAV1V,IAA+B,CAC/EmE,SAAUA,EACVzC,GAAI,GAAM,OAAHA,EAAG,cACVK,KAAMA,EACNC,SAAUA,EACV9C,IAAKA,EACL0C,KAAK,QACL5B,MAAK,SAET,gBAACuuB,GAAAA,OAEL,gBAAC/Y,GAAWA,CAACvG,QAAAA,EAAO9K,SAAUA,GAC1B,gBAACsR,GAAeA,CACZ9L,aAAY,GAAM,OAAHjI,EAAG,cAClByC,SAAUA,EACV8K,QAAAA,EACAua,UAAWA,GACd,cAGD,gBAAC7T,GAAWA,GAAAA,GAAAA,CACRhM,aAAY,GAAM,OAAHjI,EAAG,eAClB2R,aAAcA,EACdsB,UAAWA,EACX9S,eAAc,GAAU,OAAPM,EAAO,qBACF,IAAVnC,GAAyB,CAAE0V,QAAmB,SAAV1V,IAAgC,CAChFmE,SAAUA,EACVzC,GAAI,GAAM,OAAHA,EAAG,eACVK,KAAMA,EACNC,SAAUA,EACV9C,IAAKA,EACL0C,KAAK,QACL5B,MAAK,UAET,gBAACyuB,GAAAA,UAMjB,gBAACI,EAAAA,GAAaA,CAAC3f,MAAOA,GAClB,gBAACga,GAAOA,GAAAA,CAACrnB,eAAc,GAAU,OAAPM,GAAUuE,UAAWA,GAAe5C,GAC1D,gBAACoqB,GAAAA,CAAavkB,aAAY,GAAM,OAAHjI,EAAG,YAC5B,gBAAC0sB,GAAAA,CAAiBjqB,SAAUA,EAAUrC,QAASA,EAASusB,WAAYA,GAC/DF,IAGT,gBAACG,GAAAA,KACG,gBAAC9Y,GAAWA,CAACvG,QAAAA,EAAO9K,SAAUA,GAC1B,gBAACsR,GAAeA,CACZ9L,aAAY,GAAM,OAAHjI,EAAG,aAClByC,SAAUA,EACV8K,QAAAA,EACAua,UAAWA,GACd,aAGD,gBAAC7T,GAAWA,GAAAA,GAAAA,CACRhM,aAAY,GAAM,OAAHjI,EAAG,cAClB2R,aAAcA,EACdsB,UAAWA,EACX9S,eAAc,GAAU,OAAPM,EAAO,oBACF,IAAVnC,GAAyB,CAAE0V,QAAmB,QAAV1V,IAA+B,CAC/EmE,SAAUA,EACVzC,GAAI,GAAM,OAAHA,EAAG,cACVK,KAAMA,EACNC,SAAUA,EACV9C,IAAKA,EACL0C,KAAK,QACL5B,MAAK,SAET,gBAACuuB,GAAAA,OAEL,gBAAC/Y,GAAWA,CAACvG,QAAAA,EAAO9K,SAAUA,GAC1B,gBAACsR,GAAeA,CACZ9L,aAAY,GAAM,OAAHjI,EAAG,cAClByC,SAAUA,EACV8K,QAAAA,EACAua,UAAWA,GACd,cAGD,gBAAC7T,GAAWA,GAAAA,GAAAA,CACRhM,aAAY,GAAM,OAAHjI,EAAG,eAClB2R,aAAcA,EACdsB,UAAWA,EACX9S,eAAc,GAAU,OAAPM,EAAO,qBACF,IAAVnC,GAAyB,CAAE0V,QAAmB,SAAV1V,IAAgC,CAChFmE,SAAUA,EACVzC,GAAI,GAAM,OAAHA,EAAG,eACVK,KAAMA,EACNC,SAAUA,EACV9C,IAAKA,EACL0C,KAAK,QACL5B,MAAK,UAET,gBAACyuB,GAAAA,SAMzB,IAEmB3kB,YAAc,yB,kjFC9SrC,IAAM2E,IAAuB/L,EAAAA,EAAAA,IAAO2B,EAAP3B,CAAqB2B,MAE5CyqB,GAAqB,0CAGrBC,GAA8B,QAE9BC,GAA8B,kDAMfzhB,OAJHuhB,GAAkB,4GAKtBG,OADO1hB,EAAOC,QAAQ,mBAEfV,OATgB,QAQK,0BAE3BA,OADMA,EAAQnI,MAAM,oBACDmI,OAAnBA,EAAQsC,QAAQ,KAAsBtC,OAAnBA,EAAQsC,QAAQ,KACnBhC,OADsBN,EAAQyc,SAAS,oCAEzDwF,OADkB3hB,EAAMC,WAAW,kBACR,OAA3B0hB,GAA2B,OAGlCG,GAAmBxsB,EAAAA,GAAOC,IAAG,KACX6B,EAAMC,QAAQ0F,MAGhC6kB,IAGAG,GAAiBzsB,EAAAA,GAAOS,IAAG,KAC3B6rB,IAGAI,GAAc1sB,EAAAA,GAAOS,IAAG,MAMxBksB,IAAwB3sB,EAAAA,EAAAA,IAAO4sB,EAAAA,GAAP5sB,CAAqB4sB,MAM7CC,GAAuB7sB,EAAAA,GAAOC,IAAG,KAGlB4K,EAAOC,QACfhJ,EAAM+F,KAAKG,UAEP3H,EAAU4B,MACZmI,EAAQnI,MACCyI,EAAMC,WAAgCD,EAAMC,YAG9Dgc,GAAkB3mB,EAAAA,GAAOC,IAAG,KAGrB6B,EAAMQ,MAAMC,UAEN,MACFlC,EAAU4B,MAIHyI,EAAMC,YAGxB2C,IAAgBtN,EAAAA,EAAAA,IAAOuN,EAAAA,GAAPvN,CAAmBuN,MAOnCuf,IAAyB9sB,EAAAA,EAAAA,IAAO+sB,GAAAA,GAAP/sB,CAAW+sB,KAUhCP,GACAC,GACkB3qB,EAAMQ,MAAMC,UAG9BsqB,GACsB/qB,EAAMQ,MAAMC,UACvBT,EAAMC,QAAQ0F,MAEzBkf,GACsB7kB,EAAMC,QAAQ0F,MAEpC6F,GAMAuf,GACsB/qB,EAAMQ,MAAMC,UACvBT,EAAMC,QAAQ0F,MAEzBkf,GACsB7kB,EAAMC,QAAQ0F,MACzB3F,EAAMQ,MAAMC,WAK3ByqB,GAAYvvB,EAAAA,YACd,WAkBIjB,G,IAhBIywB,EAAAA,EAAAA,YACAC,EAAAA,EAAAA,qBACAlpB,EAAAA,EAAAA,UACAmpB,EAAAA,EAAAA,YACAxqB,EAAAA,EAAAA,KACAyqB,EAAAA,EAAAA,SACAC,EAAAA,EAAAA,UACAC,EAAAA,EAAAA,iBACAC,EAAAA,EAAAA,OACAC,EAAAA,EAAAA,YACAC,EAAAA,EAAAA,cACAC,EAAAA,EAAAA,cACAle,EAAAA,EAAAA,MACAme,EAAAA,EAAAA,GACGvsB,EAAAA,GAAAA,EAAAA,CAdH6rB,cACAC,uBACAlpB,YACAmpB,cACAxqB,OACAyqB,WACAC,YACAC,mBACAC,SACAC,cACAC,gBACAC,gBACAle,QACAme,O,OAKJ,gBAACb,G,uUAAAA,CAAAA,CACGG,YAAaA,EACbjpB,UAAWA,EACXmpB,YAAaA,EACbS,SAAU,IACVjrB,KAAMA,EACN4qB,OAAQA,EACRC,YAAaA,EACbC,cAAeA,EACfI,QAAAA,EACAC,KAAK,EACLH,GAAIA,EACJnxB,IAAKA,GACD4E,GAEHssB,EACGL,EACI,gCACI,gBAACb,GAAAA,KACG,gBAACzgB,GAAoBA,CAACG,MAAO,QAASF,QAAS,mBAEnD,gBAAC6gB,GAAAA,KACIrd,EACA0d,GAAwB,UAA2C,OAAjCa,OAAOb,GAAwB,EAAE,OAI5E,gCACI,gBAACV,GAAAA,KACIc,EAAmB,gBAACX,GAAAA,MAA2B,gBAACD,GAAAA,CAAYhsB,IAAK0sB,EAAUzsB,IAAK6O,KAErF,gBAACqd,GAAAA,KACIrd,EACA0d,GAAwB,UAA2C,OAAjCa,OAAOb,GAAwB,EAAE,OAKhF,gBAACvG,GAAeA,KACXnX,EACA0d,GAAwB,UAA2C,OAAjCa,OAAOb,GAAwB,EAAE,KACpE,gBAAC5f,GAAaA,O,IAMlC0f,GAAU5lB,YAAc,YAExB,IC9NA,GD8NA,G,4sBElMA,IAAM4mB,GAAWhuB,EAAAA,GAAOqS,GAAE,KAER+Z,IACJ,SAAChrB,G,OAAWA,EAAM6sB,aAAe7sB,EAAM8sB,YAAc,QAAoB,M,IAClE,SAAC9sB,G,OAAWA,EAAM+sB,aAAe,OAAS,M,IAC9C,SAAC/sB,G,OACVA,EAAMgtB,gBAAmBhtB,EAAMitB,WAAa,OAAS,OAAUjtB,EAAMitB,WAAa,YAAS9F,C,IACjF,SAACnnB,G,OAAWA,EAAMgtB,gBAAkB,OAAS,O,IAE5C,SAAChtB,G,OAAWA,EAAMgtB,iBAAmBhtB,EAAMitB,WAAa,YAAS9F,C,IAChE,SAACnnB,G,OAAWA,EAAMgtB,iBAAmBhtB,EAAMitB,WAAa,YAAS9F,C,IACxE,SAACnnB,G,OAAWA,EAAM6sB,YAAc,OAAS,M,IACrC,SAAC7sB,G,OAAWA,EAAMsE,SAAWtE,EAAMsE,SAAW,O,IAGzD4oB,GAAOtuB,EAAAA,GAAOC,IAAG,MACJ,SAACmB,G,OAAWA,EAAM6sB,YAAc,SAAW,Y,IAIhD,SAAC7sB,G,OAAWA,EAAM6sB,YAAe7sB,EAAM8sB,YAAc,QAAU,OAAU,M,IAChE,SAAC9sB,G,OAAWA,EAAM6sB,YAAc,SAAW,Y,GAEnD7jB,EAAQrJ,QACV,SAACK,G,OAAWA,EAAM6sB,YAAe7sB,EAAM8sB,YAAc,QAAU,OAAU,M,IACpE,SAAC9sB,G,OAAWA,EAAM6sB,iBAAc1F,EAAY,M,IAGjDgG,GAAc,Y,IACvBvvB,EAAAA,EAAAA,GACAkvB,EAAAA,EAAAA,YACAE,EAAAA,EAAAA,gBACAf,EAAAA,EAAAA,UACAgB,EAAAA,EAAAA,WACA3oB,EAAAA,EAAAA,SACA8J,EAAAA,EAAAA,MACAsG,EAAAA,EAAAA,MACA0Y,EAAAA,EAAAA,SACA/P,EAAAA,EAAAA,QAEA,OACI,gBAACuP,GAAAA,CACGpa,IAAK,QAAW,OAAH5U,GACbovB,gBAAiBA,EACjBF,YAAaA,EACbD,YAAaZ,EACbgB,WAAYA,EACZ3oB,SAAUA,GAET2nB,EACG,gBAACiB,GAAAA,CACGtvB,GAAIA,EACJG,eAAc,iBAAwC2W,QAAvBH,EAAAA,GAAAA,GAAanG,GAAO,KAAS,OAANsG,GACtDoY,YAAaA,EACblqB,UAAWwqB,EAAW,qBAA8B,OAATA,GAAa,GACxDP,aAAAA,GAEA,gBAACliB,GAAoBA,CAACG,MAAO,QAASF,QAAS,mBAGnD,gBAACsiB,GAAAA,CACGnvB,eAAc,iBAAwC2W,QAAvBH,EAAAA,GAAAA,GAAanG,GAAO,KAAS,OAANsG,GACtD2Y,wBAAyB,CAAEC,OAAQjQ,GACnCzf,GAAIA,EACJgF,UAAWwqB,EAAW,qBAA8B,OAATA,GAAa,GACxDN,YAAaA,IAKjC,E,mnBACAK,GAAYnnB,YAAc,cC3C1B,IAAMunB,GAAc3uB,EAAAA,GAAOC,IAAG,MAGhB,SAACmB,G,OAAWA,EAAMwtB,cAAiBxtB,EAAMytB,aAAe,OAAS,oBAAuB,M,IACpF,SAACztB,G,OAAWA,EAAM+sB,aAAe,OAAS,Q,IAC/C,SAAC/sB,G,OAAWA,EAAM+sB,aAAe,OAAS,a,IACxC,SAAC/sB,G,OAAWA,EAAMwtB,eAAiBxtB,EAAM+sB,aAAe,OAAS,O,IAC1E,SAAC/sB,G,OACCA,EAAMwtB,gBACLxtB,EAAM+sB,cAAgB/sB,EAAMitB,aAC7B,gBAAiC,OAAjBjtB,EAAMitB,WAAW,6B,IAInCS,GAAQ9uB,EAAAA,GAAOyS,GAAE,MAOjBsc,GAAW/uB,EAAAA,GAAOqS,GAAE,MAOb2c,GAAiB,Y,IAC1BC,EAAAA,EAAAA,eACAL,EAAAA,EAAAA,cACAC,EAAAA,EAAAA,aACAV,EAAAA,EAAAA,aACAD,EAAAA,EAAAA,YACAG,EAAAA,EAAAA,WACAa,EAAAA,EAAAA,aACAC,EAAAA,EAAAA,UACAC,EAAAA,EAAAA,eACAC,EAAAA,EAAAA,SAEA,OACI,gBAACV,GAAAA,CACGM,eAAgBA,EAChBL,cAAeA,EACfC,aAAcA,EACdV,aAAcA,EACdnvB,GAAI,4BACJxC,IAAK2yB,EACLG,SAAU,SAAC5wB,G,OAAW0wB,EAAe1wB,E,EACrC2vB,WAAYA,GAEZ,gBAACkB,GAAAA,GAAeA,CAACC,aAAc,CAAE5uB,MAAO,SACpC,gBAACkuB,GAAAA,KACIO,EAAS3b,KAAI,SAAC+b,EAAqB3Z,G,IAMjB2Z,E,OALf,gBAAClB,GAAWA,CACR3a,IAAK,QAAgB,OAAR6b,EAAKzwB,IAClBA,GAAIywB,EAAKzwB,GACTkvB,YAAaA,EACbE,gBAAiBQ,EACjBvB,UAAyB,QAAdoC,EAAAA,EAAKpC,iBAALoC,IAAAA,GAAAA,EACXpB,WAAYA,EACZ3oB,SAAUwpB,EACV1f,MAAOigB,EAAKjgB,MACZsG,MAAOA,EACP0Y,SAAUiB,EAAKjB,SACf/P,QAASgR,EAAKhR,SACjB,KAEH0P,GAAgB,gBAACY,GAAAA,QAKvC,EACAC,GAAe5nB,YAAc,iB,05EClG7B,IAAMsoB,GAAiB1vB,EAAAA,GAAOC,IAAG,MAEV,SAACmB,G,OAAWA,EAAMuuB,UAAY,aAAe,e,IACjD,SAACvuB,G,OAAWA,EAAMuuB,UAAY,aAAe,Q,IACjD,SAACvuB,G,OAAWA,EAAMwuB,oBAAsBxlB,EAAQrJ,OAAS,OAAyBqJ,OAAlBA,EAAQrJ,OAAO,KAAoB,OAAjBqJ,EAAQyc,S,IAE/F,SAACzlB,G,OAAWA,EAAMwuB,qBAAsBhkB,EAAAA,EAAAA,GAAQ,GAAK9J,EAAM+F,KAAKS,iBAAmB,a,IACrE,SAAClH,G,OAAWA,EAAMwuB,oBAAsB9tB,EAAMC,QAAQ0F,MAAQ,a,IAGhFooB,GAAyB7vB,EAAAA,GAAOC,IAAG,KAEvBmK,EAAQrJ,QAIpB+uB,GAAmB9vB,EAAAA,GAAOC,IAAG,MAK7B8vB,GAAc/vB,EAAAA,GAAOC,IAAG,MAiBxB8nB,IAAiB/nB,EAAAA,EAAAA,IAAOgoB,GAAPhoB,CAAoBgoB,MAE1B,SAAC5mB,G,OAAWA,EAAMuuB,UAAY,QAAU,E,IAGnDtjB,IAAerM,EAAAA,EAAAA,IAAO6M,EAAP7M,CAAa6M,MAoBrBmjB,GAA6F,Y,IACtGC,EAAAA,EAAAA,qBACAhB,EAAAA,EAAAA,eACAd,EAAAA,EAAAA,aACA+B,EAAAA,EAAAA,eACArB,EAAAA,EAAAA,aACAsB,EAAAA,EAAAA,mBACAC,EAAAA,EAAAA,mBACAC,EAAAA,EAAAA,mBACAC,EAAAA,EAAAA,2BACAC,EAAAA,EAAAA,YACAZ,EAAAA,EAAAA,UACAa,EAAAA,EAAAA,iBAE0C9e,EAAAA,IAAAA,EAAAA,EAAAA,UAAwB,WAA3D+e,EAAmC/e,EAAAA,GAApBgf,EAAoBhf,EAAAA,IAE1ChV,EAAAA,EAAAA,YAAU,WACYg0B,EAAd7B,EAA+B,OAC1BV,GAAgB8B,EAAuC,kBACvDA,GAA6C,SAArBO,EAA8C,MACtEP,EAAuC,qBACtC9B,GAAqC,SAArBqC,EACJ,OADkD,iBAE5E,GAAG,CAACP,EAAsB9B,EAAcU,IAExC,IAAM8B,GAA0BC,EAAAA,EAAAA,UAAQ,WACpC,MAAyB,QAAlBH,GAA6C,oBAAlBA,GAAyD,uBAAlBA,CAC7E,GAAG,CAACA,IAEJ,OACI,iCACwB,SAAlBA,GAA4BH,IAC1B,gBAACZ,GAAAA,CACGE,oBAAqBK,EACrBN,WAAYgB,GAA2BhB,GAEpB,mBAAlBc,GACG,gBAAC1I,GAAcA,CACX/oB,GAAI,oBACJS,OAAQ,6BACRJ,KAAM,oBACNP,MAAO,kBACPyN,QAAAA,EACAjN,SAAU6wB,EACVnd,QAASkd,EACTP,WAAYgB,GAA2BhB,IAG5B,uBAAlBc,GACG,gBAAC1I,GAAcA,CACX/oB,GAAI,oBACJS,OAAQ,6BACRJ,KAAM,oBACNP,MAAO,kBACPyN,QAAAA,EACAjN,SAAU8wB,EACVpd,QAASic,IAGE,QAAlBwB,GACG,gBAACZ,GAAAA,KACG,gBAAC9H,GAAcA,CACX/oB,GAAI,oBACJS,OAAQ,6BACRJ,KAAM,oBACNP,MAAO,kBACPyN,QAAAA,EACAjN,SAAU8wB,EACVpd,QAASic,IAEb,gBAAClH,GAAcA,CACX/oB,GAAI,oBACJS,OAAQ,6BACRJ,KAAM,oBACNP,MAAO,kBACPyN,QAAAA,EACAjN,SAAU6wB,EACVnd,QAASkd,KAIpBI,IAA+BzB,IAAiB8B,GAA2BhB,GACxE,gCAAGW,EAA2B,KAEjCK,GAA2BhB,GAAa,gBAACI,GAAAA,KAAaQ,GACtDI,IAA4BhB,GACzB,gBAACG,GAAAA,KACG,gBAAC3D,EAAAA,GAAaA,CAAC3f,MAAOyD,EAAM1N,WACxB,gBAACsK,EAAMA,CAACpN,OAAO,6BAA6BiC,QAAS2uB,GAAoB,sBAMpFM,GAA2BhB,GACxB,gBAACG,GAAAA,KACG,gBAACzjB,GAAYA,CACTI,KAAM,SACN/K,QAAS2uB,EACTvqB,QAAS,SACTrG,OAAO,wBAEP,gBAACoxB,GAAAA,EAAMA,CAAC1pB,YAAa,IAAKvG,MAAO,OAAQkG,OAAQ,SAAU,sBAS3F,E,kbCtLA,IAAMgqB,GAAa9wB,EAAAA,GAAOyS,GAAE,MAEd,SAACrR,G,OAAWA,EAAM2vB,oBAAuB3vB,EAAMytB,aAAe,OAAS,oBAAuB,M,IAE7F,SAACztB,G,MACR,GAAqBgJ,OAAlBA,EAAQrJ,OAAO,KAAuBK,OAApBgJ,EAAQrJ,OAAO,OAAkE,OAA7DK,EAAM2vB,oBAAsB3mB,EAAQrJ,OAASqJ,EAAQsC,QAAQ,I,IACjG,SAACtL,G,OAAWA,EAAM2vB,oBAAsB,QAAmC,OAA3B1E,GAA2B,YAAa,O,IAG/F2E,GAAiBhxB,EAAAA,GAAOqS,GAAE,MAEd,SAACjR,G,OAAWA,EAAM8uB,eAAiB9lB,EAAQjJ,MAAQiJ,EAAQsC,O,IAKhEukB,GAAoB,Y,IAC7BF,EAAAA,EAAAA,oBACAlC,EAAAA,EAAAA,aACAQ,EAAAA,EAAAA,SACAa,EAAAA,EAAAA,eACAgB,EAAAA,EAAAA,aACAC,EAAAA,EAAAA,aAEA,OACI,gBAACL,GAAAA,CACGC,oBAAqBA,EACrBlC,aAAcA,EACd7vB,GAAI,iBACJG,eAAc,8BAEbkwB,EAAS3b,KAAI,SAAC+b,EAAqB3Z,G,OAChC,gBAACkb,GAAAA,CAAepd,IAAK,OAAe,OAAR6b,EAAKzwB,IAAMkxB,eAAgBA,GACnD,gBAAClD,GAASA,CACNC,YAAa,SACbC,qBACI,EAAMhV,eAAe,yBAA2BuX,EAAKvC,sBAAyB,GAElFC,YAAa,4BACbhuB,eAAc,4BAAwD2W,QAA5BH,EAAAA,GAAAA,GAAa8Z,EAAKjgB,OAAO,KAAS,OAANsG,GACtEnT,KAAM,IAAY,OAAR8sB,EAAKzwB,IACfouB,SAAUqC,EAAKrC,SACfE,iBAAkBmC,EAAKnC,iBACvBD,UAAWoC,EAAK2B,mBAChB7D,OAAQ2D,EACRxD,cAAewC,EACf1gB,MAAOigB,EAAKjgB,MACZme,GAAI8B,EAAKzwB,GACTwuB,YAAa2D,I,IAMrC,E,61FAEAF,GAAkB7pB,YAAc,oBCIhC,IAAMiqB,GAAgBrxB,EAAAA,GAAOC,IAAG,KACR6B,EAAM+F,KAAKC,YACrB,SAAC1G,G,OAAWA,EAAM+sB,aAAe,OAAS,M,IAGlDmD,GAAqBtxB,EAAAA,GAAOC,IAAG,KACb6B,EAAM+F,KAAKC,YAErB,SAAC1G,G,OAAWA,EAAM+sB,aAAe,OAAS,M,IAEpC,SAAC/sB,G,OAAWA,EAAM6tB,gBAAkB7tB,EAAMytB,aAAezkB,EAAQrJ,YAASwnB,C,IAIxFgJ,GAAevxB,EAAAA,GAAOC,IAAG,MAEhB,SAACmB,G,OAAWA,EAAM+sB,aAAgB,UAAW,GAAkB,OAAf/jB,EAAQrJ,OAAO,W,IACjE,SAACK,G,OAAWA,EAAM+sB,aAAe,OAAS,oB,IAMjDqD,GAAYxxB,EAAAA,GAAOC,IAAIqM,OAAM,SAAClL,G,OAAqCA,C,GAAvDpB,C,MAIJ,SAACoB,G,OAAWA,EAAM+sB,aAAe,OAAS,K,IAIlDsD,IAAazxB,EAAAA,EAAAA,IAAO6M,EAAP7M,CAAa6M,MAOnB6kB,GAAUj0B,EAAAA,YACnB,WAkBIjB,G,IAhBI6yB,EAAAA,EAAAA,SACAJ,EAAAA,EAAAA,eAAAA,EAAAA,EACAiC,aAAAA,OAAAA,IAAe,GAAC,KAChB/B,EAAAA,EAAAA,UACAC,EAAAA,EAAAA,eACAlB,EAAAA,EAAAA,YAAAA,EAAAA,EACAU,cAAAA,OAAAA,IAAgB,SAChBT,aAAAA,OAAAA,IAAe,KACfe,EAAAA,EAAAA,aACAqB,EAAAA,EAAAA,YACAD,EAAAA,EAAAA,2BACAX,EAAAA,EAAAA,UACAa,EAAAA,EAAAA,iBACAmB,EAAAA,EAAAA,qBACGvwB,EAAAA,GAAAA,EAAAA,CAdHiuB,WACAJ,iBACAiC,eACA/B,YACAC,iBACAlB,cACAU,gBACAT,eACAe,eACAqB,cACAD,6BACAX,YACAa,mBACAmB,yBAKgDjgB,EAAAA,IAAAA,EAAAA,EAAAA,UAASud,GAAAA,GAAtD2C,EAA6ClgB,EAAAA,GAAvBmgB,EAAuBngB,EAAAA,GACNA,EAAAA,IAAAA,EAAAA,EAAAA,UAA8B,SAArB8e,GAAqB,GAArEsB,EAAuCpgB,EAAAA,GAAtBqgB,EAAsBrgB,EAAAA,GACtBA,EAAAA,IAAAA,EAAAA,EAAAA,UAAS2d,GAAAA,GAA1B5rB,EAAiBiO,EAAAA,GAAXsgB,EAAWtgB,EAAAA,GACcA,EAAAA,IAAAA,EAAAA,EAAAA,WAAS,MAAxCmd,EAA+Bnd,EAAAA,GAAjBugB,EAAiBvgB,EAAAA,GACYA,EAAAA,IAAAA,EAAAA,EAAAA,UAASkd,GAAAA,GAApDsD,EAA2CxgB,EAAAA,GAApBygB,EAAoBzgB,EAAAA,GAC5C0gB,GAAwB70B,EAAAA,EAAAA,UACMmU,EAAAA,IAAAA,EAAAA,EAAAA,WAAS,MAAtC2c,EAA6B3c,EAAAA,GAAjB2gB,EAAiB3gB,EAAAA,GAC9B4gB,GAAwB/0B,EAAAA,EAAAA,QAAoC,MA0ElE,OAvBAb,EAAAA,EAAAA,YAAU,WACNm1B,EAAoB5C,GACpBkD,EAAiBvD,GACjBoD,EAAQ3C,GAEJ+C,EAAsBt1B,SAEtBs1B,EAAsBt1B,QAAQM,iBAAiB,oBAAoB,WAC3DF,SAASq1B,kBACTN,GAAc,GAEdA,GAAc,EAEtB,GAER,GAAG,CAAChD,EAAgBL,EAAeS,EAAU+C,KAE7C11B,EAAAA,EAAAA,YAAU,WACN+G,EAAK+uB,SAAQ,SAAC/C,GACM,gBAAZA,EAAKzwB,IAAsBqzB,GAAc,EACjD,GACJ,IAGI,gBAAChB,GAAAA,G,uUAAAA,CAAAA,CAAc70B,IAAKA,GAAS4E,GAAAA,CAAO+sB,aAAcA,IAC9C,gBAAC6B,GAAwBA,CACrBC,qBAAsBiC,SAAAA,EACtBjD,eAAgB2C,SAAAA,EAChBzD,aAAcA,SAAAA,EACd+B,eAAgB4B,SAAAA,EAChBjD,aAAcA,SAAAA,EACdsB,mBAtCa,YAChB2B,GAAmBH,GACpBA,IAEJI,GAAoBD,EACxB,EAkCY1B,mBAAoB,W,OAAMyB,GAAqBD,E,EAC/CvB,mBAlFa,W,IAGSoC,EA0BzBv1B,SAASq1B,kBAbNr1B,SAASw1B,eACTx1B,SAASw1B,iBAEFx1B,SAASy1B,oBAEhBz1B,SAASy1B,sBAEFz1B,SAAS01B,sBAEhB11B,SAAS01B,wBAtBaH,EA2BLL,EAAsBt1B,SA1B/B+1B,kBACRJ,EAAQI,oBACDJ,EAAQK,qBACfL,EAAQK,uBACDL,EAAQM,wBACfN,EAAQM,0BACDN,EAAQO,qBACfP,EAAQO,qBAuBpB,EAiDY1C,2BAA4BA,EAC5BC,YAAaA,EACbZ,UAAWA,EACXa,iBAAkBA,QAAAA,EAAoB,SAE1C,gBAACc,GAAAA,CACGzC,aAAcA,EACdI,eAAgBA,EAChBzyB,IAAK41B,EACLjE,aAAcA,GAEbyD,GACG,gBAACX,GAAiBA,CACdF,oBAAqBmB,SAAAA,EACrBrD,aAAcA,EACdQ,SAAU5rB,EACVysB,eAAgB4B,EAChBZ,aAAcA,EACdC,aAjEM,WAClBmB,EAAsBx1B,SACtBw1B,EAAsBx1B,QAAQm2B,gBAEtC,IAgEY,gBAAC1B,GAAAA,CAAapD,aAAcA,GACxB,gBAAC+E,GAAAA,GAAsBA,CACnBC,MAAO,CAAEC,eAAe,GACxBC,aAAc,EACdC,iBAAkB,EAClBC,SAAU,GACV/2B,IAAK81B,IAEJ,Y,IAAGkB,EAAAA,EAAAA,OAAQC,EAAAA,EAAAA,QAASR,EAAAA,EAAAA,e,OACjB,gCACI,gBAACjE,GAAcA,CACXC,eAAgB2C,SAAAA,EAChBhD,cAAesD,SAAAA,EACfrD,aAAcA,EACdV,aAAcA,SAAAA,EACdD,YAAaA,SAAAA,EACbG,WAAYA,EACZa,aAAcA,EACdC,UAAWA,EACXC,eAAgBA,EAChBC,SAAUA,IAEd,gBAACmC,GAAAA,CAAUrD,aAAcA,GACrB,gBAAChC,EAAAA,GAAaA,CAAC3f,MAAOyD,EAAMpE,SACxB,gBAAC4lB,GAAAA,CAAWhyB,OAAQ,mBAAoBiC,QAAS,W,OAAM+xB,EAAQ,I,GAC1D,KAEL,gBAAChC,GAAAA,CAAWhyB,OAAQ,kBAAmBiC,QAAS,W,OAAM8xB,EAAO,I,GACxD,KAEL,gBAAC/B,GAAAA,CAAWhyB,OAAQ,qBAAsBiC,QAAS,W,OAAMuxB,G,GAAkB,W,MAYnH,IAEJvB,GAAQtqB,YAAc,UCxLL,sDACA,OAfjB,WAEI,I,IAFgBssB,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAS,GACrBC,EAAc,GACTjP,EAAI,EAAGA,EAAIgP,EAAQhP,IACxBiP,GAAe,+BAEnB,OAAOA,CACX,CASEC,CAAW,IAAI,MAPV,I,+jBCpGP,IAcA,GAdoF,Y,IAChF/sB,EAAAA,EAAAA,KACA2I,EAAAA,EAAAA,MACA1I,EAAAA,EAAAA,OACAlG,EAAAA,EAAAA,MACG6pB,EAAAA,GAAAA,EAAAA,CAJH5jB,OACA2I,QACA1I,SACAlG,U,OAGA,gBAAC8pB,GAAAA,E,uUAAOA,CAAAA,CAACC,QAAQ,cAAc7jB,OAAQA,EAAQlG,MAAOA,EAAO4O,MAAOA,EAAO3I,KAAMA,GAAU4jB,GACvF,gBAACG,OAAAA,CAAKC,EAAE,6OACR,gBAACD,OAAAA,CAAKC,EAAE,2HACR,gBAACD,OAAAA,CAAKC,EAAE,qI,ECnBhB,M,8eCSA,IAaA,GAbgG,Y,IAC5FhkB,EAAAA,EAAAA,KACA2I,EAAAA,EAAAA,MACA1I,EAAAA,EAAAA,OACAlG,EAAAA,EAAAA,MACG6pB,EAAAA,GAAAA,EAAAA,CAJH5jB,OACA2I,QACA1I,SACAlG,U,OAGA,gBAAC8pB,GAAAA,E,uUAAOA,CAAAA,CAACC,QAAQ,cAAc7jB,OAAQA,EAAQlG,MAAOA,EAAO4O,MAAOA,EAAO3I,KAAMA,GAAU4jB,GACvF,gBAACG,OAAAA,CAAKC,EAAE,6OACR,gBAACD,OAAAA,CAAKC,EAAE,2H,EClBhB,M,8eCOA,IAcA,GAdwF,Y,IACpF/jB,EAAAA,EAAAA,OACAlG,EAAAA,EAAAA,MACG6pB,EAAAA,GAAAA,EAAAA,CAFH3jB,SACAlG,U,OAGA,gBAACH,M,uUAAAA,CAAAA,CACGG,MAAOkG,EACPA,OAAQlG,EACRD,IAAI,IACJD,IAAI,s1BACA+pB,G,ECjBZ,M,i0BCOA,IAAMte,GAAY,OACL0nB,IAAa7zB,EAAAA,EAAAA,IAAO8zB,GAAP9zB,CAAqB8zB,KACnChyB,EAAMQ,MAAMC,UACX4J,GACCA,IAGD4nB,IAAc/zB,EAAAA,EAAAA,IAAOg0B,GAAPh0B,CAAsBg0B,KACrClyB,EAAMQ,MAAMC,UACX4J,GACCA,IAGD8nB,IAAoBj0B,EAAAA,EAAAA,IAAOk0B,GAAPl0B,CAAkBk0B,KACvCpyB,EAAMQ,MAAMC,UACX4J,GACCA,IAGDgoB,IAAan0B,EAAAA,EAAAA,IAAOspB,GAAAA,EAAPtpB,CAAWspB,KACzBxnB,EAAM0H,SAASM,cACdqC,GACCA,IAORioB,GAAe,eACoB,OAA7BtyB,EAAM0H,SAASM,cAAc,4CAK5BuqB,IAAqBr0B,EAAAA,EAAAA,IAAOuN,GAAAA,EAAPvN,CAAmBuN,KAC/C6mB,IAGOE,IAAoBt0B,EAAAA,EAAAA,IAAOu0B,GAAAA,EAAPv0B,CAAkBu0B,KAC7CH,I,8qBC7CC,IAAMI,GAAax0B,EAAAA,GAAO+a,GAAE,KAG7BkZ,GACkB7pB,EAAQsC,SAInB+nB,GAAmBz0B,EAAAA,GAAOwB,OAAM,KAWhCM,EAAM0H,SAASM,cAEtB+pB,GACAE,GACAE,GACkB7pB,EAAQsC,S,6/BCRzB,IAAMgoB,GAAc10B,EAAAA,GAAOC,IAAG,MAET,SAACmB,G,OAAWA,EAAMuzB,QAAU7yB,EAAM0H,SAASK,sBAAwB/H,EAAM+F,KAAKQ,U,GAC7EvG,EAAM+F,KAAKQ,YAChB,SAACjH,G,OACjBA,EAAMwzB,SACA9yB,EAAMC,QAAQ0F,MACdrG,EAAMyzB,SACN/yB,EAAM0H,SAASI,mBACfxI,EAAM0zB,QACNhzB,EAAM0H,SAASG,kBACf7H,EAAMC,QAAQ0F,K,IACb,SAACrG,G,OAAW,EAAO2zB,cAAgB3zB,EAAM4zB,cAAiB5zB,EAAM2zB,aAAe,cAAgB,M,IAC/F,SAAC3zB,G,OACRA,EAAMuzB,SAAYvzB,EAAM6zB,UAAa7zB,EAAM2zB,aAErC3zB,EAAMqkB,OACN,GAAoBrb,OAAjBA,EAAQnI,MAAM,KAAoBmI,OAAjBA,EAAQnI,MAAM,KAAoBmI,OAAjBA,EAAQnI,MAAM,KAAoB,OAAjBmI,EAAQ+C,UAC9D/L,EAAM8zB,aACN,IACA9qB,EAAQnI,MALR,G,GAMG5B,EAAUqM,SACR,SAACtL,G,OAAWA,EAAMwzB,SAAW,MAAQ,K,IACjC,SAACxzB,G,OAChBA,EAAM+zB,mBACA,aACA/zB,EAAMwzB,WAAaxzB,EAAM0zB,QACzB,SACA1zB,EAAM6zB,UAEN7zB,EAAMuzB,QADN,WAGAvzB,EAAM0zB,SAAW1zB,EAAMwzB,SACvB,gBACA,Y,IAGG,SAACxzB,G,OAAWA,EAAMwL,SAAW,GAAkB,OAAfxL,EAAMwL,SAAS,MAAMxL,EAAM0zB,QAAU,OAAS,M,GAElFhzB,EAAM0H,SAASM,cAGMhI,EAAM+F,KAAKQ,WAGvCosB,GACarqB,EAAQnI,OAYrB,Y,OAAGmzB,EAAAA,UAED,0BAMchrB,OALCA,EAAQjJ,MAAM,gJAMjBiJ,OADEA,EAAQsC,QAAQ,yBAGjB5K,OAFDsI,EAAQsC,QAAQ,yDAEM,OAArB5K,EAAM+F,KAAKG,UAAU,0C,IAK7BqtB,GAAer1B,EAAAA,GAAOC,IAAG,M,83FCjEtC,I,MAAM8L,IAAuB/L,EAAAA,EAAAA,IAAO2B,EAAP3B,CAAqB2B,KAK5CsK,GAKAqpB,IAAsBt1B,EAAAA,EAAAA,IAAO00B,GAAP10B,CAAkB00B,MAExCa,GAAiBv1B,EAAAA,GAAOqC,MAAK,KAGlBhC,EAAUqM,QACRpC,EACJF,EAAQsC,QAAWtC,EAAQnI,MAI7BH,EAAM0H,SAASM,cAEZqqB,GACAryB,EAAMQ,MAAMC,UAIQT,EAAMQ,MAAMC,UAEpC4xB,GACQryB,EAAMQ,MAAMC,WAsC1BizB,I,GAAc,Y,IAChB92B,EACA+2B,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAaM14B,EAKUmG,E,sDA1BhB/E,EAAAA,EAAAA,EACA+2B,EAAAA,EAAAA,OACAC,EAAAA,EAAAA,eACAC,EAAAA,EAAAA,gBACAC,EAAAA,EAAAA,aACAC,EAAAA,EAAAA,0BACAC,EAAAA,EAAAA,kBACAC,EAAAA,EAAAA,eACAC,EAAAA,EAAAA,aAYAt3B,EAAEu3B,UACI34B,EAAQoB,EAAE7B,OAAOS,MACvBu4B,EAA0Bv4B,GAEtBo4B,IAAmBp4B,EAAnBo4B,MAAAA,C,sBAEqB,O,sBAAA,C,EAAMK,EAAe,CAAEN,OAAAA,EAAQn4B,MAAAA,K,OAChD,OADQmG,EAAS,SAATA,KACHuyB,EAAal5B,SA7DX,Y,IACf4B,EAAAA,EAAAA,EACApB,EAAAA,EAAAA,MACAs4B,EAAAA,EAAAA,aACAE,EAAAA,EAAAA,kBACAH,EAAAA,gBAgBoB74B,QAAU4B,EAAEw3B,WAC5BN,EAAat4B,GAGjBw4B,EAAkBx4B,EACtB,CAuCY64B,CAAW,CAAEz3B,EAAAA,EAAGpB,MAAOmG,EAAKnG,MAAOs4B,aAAAA,EAAcE,kBAAAA,EAAmBH,gBAAAA,I,OAHhE,C,0BAKJS,QAAQr3B,MAAM,iBAAkB02B,EAAQn4B,G,0BAGpD,E,6LArCMk4B,G,kCAuDOa,GAAmB,Y,IAC5BZ,EAAAA,EAAAA,OACAa,EAAAA,EAAAA,WACAnB,EAAAA,EAAAA,mBACAR,EAAAA,EAAAA,QACAI,EAAAA,EAAAA,aACAC,EAAAA,EAAAA,YACAE,EAAAA,EAAAA,aAEkCxjB,EAAAA,IAAAA,EAAAA,EAAAA,UACT,OAArB4kB,EAAWh5B,YAA8C,IAArBg5B,EAAWh5B,MAAwB,GAAKg5B,EAAWh5B,OAAK,GADzFi5B,EAA2B7kB,EAAAA,GAAhBkkB,EAAgBlkB,EAAAA,GAG0BA,EAAAA,IAAAA,EAAAA,EAAAA,UACnC,OAArB4kB,EAAWh5B,YAA8C,IAArBg5B,EAAWh5B,MAAwB,GAAKg5B,EAAWh5B,OAAK,GADzFk5B,EAAqD9kB,EAAAA,GAA7BmkB,EAA6BnkB,EAAAA,GAGhBA,EAAAA,IAAAA,EAAAA,EAAAA,UACnB,OAArB4kB,EAAWh5B,YAA8C,IAArBg5B,EAAWh5B,MAAwB,GAAKg5B,EAAWh5B,OAAK,GADzFo4B,EAAqChkB,EAAAA,GAArBokB,EAAqBpkB,EAAAA,GAGNA,EAAAA,IAAAA,EAAAA,EAAAA,UAAS,CAAEpU,OAAO,EAAOm5B,sBAAuB,IAAE,GAAjFC,EAA+BhlB,EAAAA,GAAlBilB,EAAkBjlB,EAAAA,GAEhCklB,EAAWF,EAAYp5B,MACvBq4B,GAAkBp4B,EAAAA,EAAAA,QAAO,GACzBs5B,GAAiBt5B,EAAAA,EAAAA,QAAO,GACxBy4B,GAAez4B,EAAAA,EAAAA,SAAO,GAoD5B,OAlDAb,EAAAA,EAAAA,YAAU,WAEN,OADAs5B,EAAal5B,SAAU,EAChB,WACHk5B,EAAal5B,SAAU,CAC3B,CACJ,GAAG,KAKHJ,EAAAA,EAAAA,YAAU,WACNk5B,EAAaU,EAAWh5B,OAAS,GACrC,GAAG,CAACg5B,EAAWh5B,SAMfZ,EAAAA,EAAAA,YAAU,WACN,GAAKs5B,EAAal5B,QAAlB,CAIA,IACMg6B,EAAiCN,IAA2Bd,EAC5DqB,EAFmCR,IAAcC,GAGY,OAA3BA,IAAoCM,EACtEE,EAAMC,KAAKD,MACXP,EACyB,OAA3BD,GAAoCM,EAE9BJ,EAAYD,sBADZO,EAEJE,EAAOF,EAAMP,EAYnB,OARIF,IAAcC,IAA2C,IAAjBO,EACxCF,EAAe/5B,QAAUE,OAAOC,YAAW,WACvC05B,EAAe,CAAEr5B,MAAOy5B,EAAcN,sBAAAA,GAC1C,GAAGU,KAAKjN,IAAI,EANI,IAMagN,IAE7BP,EAAe,CAAEr5B,MAAOy5B,EAAcN,sBAAAA,IAGnC,WACHz5B,OAAOo6B,aAAaP,EAAe/5B,QACvC,CAzBA,CA2BJ,GAAG,CAACy5B,EAAWC,EAAwBd,IAGnC,gBAACJ,GAAAA,CACGsB,SAAUA,EACVzB,mBAAoBA,EACpBR,QAASA,EACTI,aAAcA,EACdC,YAAaA,EACbE,aAAcA,GAEd,gBAACK,GAAAA,CACGr2B,KAAMo3B,EAAWp3B,KACjB5B,MAAOi5B,EACPj3B,SAAU,SAACZ,GACPk3B,EAAal3B,EAAE24B,cAAc/5B,OAC7Bq4B,EAAgB74B,QAAU4B,EAAEw3B,SAChC,EACA32B,OAAQ,SAACb,G,OACL82B,GAAY,CACR92B,EAAAA,EACA+2B,OAAAA,EAGAC,eAAAA,EACAC,gBAAAA,EAGAC,aAAAA,EAGAC,0BAAAA,EAGAC,kBAAAA,EACAC,eAAgBO,EAAWgB,OAC3BtB,aAAAA,G,EAGRxhB,UAAW,SAAC9V,G,OAhIT,Y,IACfA,EAAAA,EAAAA,EACA44B,EAAAA,EAAAA,OACAC,EAAAA,EAAAA,UAMc,UAAV74B,EAAEkV,IACF0jB,IACiB,WAAV54B,EAAEkV,KAA8B,QAAVlV,EAAEkV,KAC/B2jB,GAER,CAmHoBC,CAAW,CACP94B,EAAAA,EAGA44B,OAAQ9B,GAAYiC,KAAK/4B,EAAG,CACxBA,EAAAA,EACA+2B,OAAAA,EACAC,eAAAA,EACAC,gBAAAA,EACAC,aAAAA,EACAC,0BAAAA,EACAC,kBAAAA,EACAC,eAAgBO,EAAWgB,OAC3BtB,aAAAA,IAEJuB,UAAW3B,EAAa6B,KAAK/4B,EAA8B,OAA3B83B,EAAkC,GAAKA,I,EAG/Er3B,eAAcm3B,EAAW72B,UAE3Bm3B,GAAY,gBAACzC,GAAUA,MACxByC,GAAY,gBAAC7qB,GAAoBA,CAACG,MAAM,QAAQC,UAAW,OAAQC,WAAY,SAG5F,E,8cCnOO,IAAMsrB,GAAoB13B,EAAAA,GAAOoa,MAAK,KACjBtY,EAAM+F,KAAKQ,WAEjCmsB,GAA0BE,IAK1BiD,IAAc33B,EAAAA,EAAAA,IAAOq1B,GAAPr1B,CAAmBq1B,MAKjCuC,IAAmB53B,EAAAA,EAAAA,IAAOq1B,GAAPr1B,CAAmBq1B,MAC/B,SAACj0B,G,OAAWA,EAAMy2B,2BAA6B,QAAU,O,IAGhEC,GAAO,IAEPC,GAA2Bt6B,EAAAA,YAC7B,WAcIjB,G,IAZIiD,EAAAA,EAAAA,OACAu4B,EAAAA,EAAAA,QACAC,EAAAA,EAAAA,cACAjlB,EAAAA,EAAAA,QACAklB,EAAAA,EAAAA,6BAkBJ,OACI,gBAAC71B,QAAAA,CACG7F,IAAKA,EACL0C,KAAK,WACLi5B,kBAAiBH,EAAQh5B,GACzBG,eAAc,GACV84B,OADax4B,EAAO,2BAIvB,OAHGw4B,EACM,GAAiCtiB,QAA9BA,EAAAA,GAAAA,GAAaqiB,EAAQ34B,MAAM,KAAoC,QAAjCsW,EAAAA,GAAAA,GAAasiB,EAAc54B,QAC5DsW,EAAAA,GAAAA,GAAaqiB,EAAQ34B,OAE/B2T,QAASA,EACT1T,SAnBO,WACX44B,EAA6B,CACzBh5B,KAAMk5B,GAAgCC,mBACtCL,QAASA,EACTC,cAAeA,GAEvB,GAgBJ,IAEJF,GAAyB3wB,YAAc,2BAEhC,IAAMkxB,GAAe,Y,IACxBC,EAAAA,EAAAA,SAAAA,EAAAA,EACAC,eAAAA,OAAAA,IAAiB,KAAE,EACnBC,EAAAA,EAAAA,kBAAAA,EAAAA,EACAC,cAAAA,OAAAA,IAAgB,EAAAC,GAAcC,SAAQ,EACtCC,EAAAA,EAAAA,uBAAAA,EAAAA,EACAhB,2BAAAA,OAAAA,IAA6B,SAC7BiB,mBAAAA,OAAAA,IAAqB,SACrBC,KAAAA,OAAAA,IAAO,EAAAC,GAAcC,QAAO,EAC5Bx5B,EAAAA,EAAAA,OACAy5B,EAAAA,EAAAA,0BACAhB,EAAAA,EAAAA,6BAGMiB,GAAgB57B,EAAAA,EAAAA,QAAoC,IAoB1D,OAlBAb,EAAAA,EAAAA,YAAU,WAENy8B,EAAcr8B,QAAQ01B,SAAQ,SAAC4G,GAC3B,GAAKA,GAAkB,aAAZA,EAAGl6B,KAAd,CAGAk6B,EAAGC,eAAgB,EACnB,IAAMC,EAAYF,EAAGG,aAAa,mBAEhB,OAAdD,GACAJ,GACAA,EAA0BM,0BAA0BvgB,SAASqgB,KAE7DF,EAAGC,eAAgB,EARvB,CAUJ,GACJ,IAGI,gBAAC3B,GAAAA,KACG,gBAACrc,QAAAA,KACIkd,EAAS7kB,KAAI,SAACskB,EAAsBtT,G,OACjC,gBAACjnB,EAAAA,SAAc,CAACmW,IAAK,YAAuB,OAAXokB,EAAQh5B,KACrC,gBAACw1B,GAAUA,KACNuE,IAASC,GAAcS,kBACpB,gBAACnf,KAAAA,KACG,gBAACoa,GAAWA,CACRK,cAAAA,EACAI,oBAAAA,EACAR,UAAWqD,EAAQx1B,SAASoT,OAC5BhJ,SAAU8sB,GAAaC,aACvB3E,aAAa,GAEb,gBAACpO,OAAAA,KACIoR,EAAQ4B,aACL,gBAAC7B,GAAAA,CACGt4B,OAAQA,EACRu4B,QAASA,EACTE,6BAA8BA,EAC9BllB,WACIkmB,IACAA,EAA0BW,qBAAqB5gB,SAC3C+e,EAAQh5B,KAKhBxC,IAAK,SAAC48B,G,OAA0BD,EAAcr8B,QAAQ4nB,GAAK0U,C,IAG/DtB,MAMpB,gBAACxd,KAAAA,KACG,gBAACoa,GAAWA,CACRE,UAAAA,EACAO,oBAAAA,EACAR,UAAWqD,EAAQx1B,SAASoT,OAC5BhJ,SAAU,KAETorB,EAAQx1B,SAASoT,OACd,gBAAC6e,GAAgBA,CACbqF,eAAc9B,EAAQh5B,GACtBG,eAAc,GAAgCwW,OAA7BlW,EAAO,wBAAiD,QAA3BkW,EAAAA,GAAAA,GAAaqiB,EAAQ34B,OACnEqC,QAAS,W,OAAMm3B,EAAuBb,EAAQh5B,G,GAE9C,gBAAC4nB,OAAAA,CACG5iB,UAAW+1B,KAAW,mBAAoB,CACtC,mBAAoBvsB,GAAWkrB,EAAeV,MAGlD,gBAACjE,GAAWA,OAEhB,gBAACnN,OAAAA,CACG5iB,UAAW+1B,KAAW,mBAAoB,CACtC,kBAAmBvsB,GAAWkrB,EAAeV,MAGjD,gBAACnE,GAAUA,OAEdgE,GACGG,EAAQx1B,SAASw3B,MAAK,SAAC5O,G,OAAMA,EAAE6O,Y,KAC3B,gBAAChG,GAAiBA,CACd90B,eAAc,GAAuCwW,OAApClW,EAAO,+BAEtB,QAFmDkW,EAAAA,GAAAA,GACjDqiB,EAAQ34B,MACV,uBAGd,gBAACs4B,GAAAA,CACGnoB,MAAOwoB,EAAQ34B,KACfF,eAAc,GAAuCwW,OAApClW,EAAO,+BAEtB,QAFmDkW,EAAAA,GAAAA,GACjDqiB,EAAQ34B,MACV,kBAED24B,EAAQ34B,OAIjB,gBAACg2B,GAAYA,CAAC7lB,MAAOwoB,EAAQ34B,MAAO24B,EAAQ34B,QAIvDm5B,EAAevf,SAASihB,GAAeC,aACpC,gBAAC7f,KAAAA,CACGnb,eAAc,GAAsCwW,OAAnClW,EAAO,8BAEtB,QAFkDkW,EAAAA,GAAAA,GAChDqiB,EAAQ34B,MACV,iBAEF,gBAACq1B,GAAWA,CACRS,oBAAAA,EACAR,UAAWqD,EAAQx1B,SAASoT,OAC5Bmf,cAAAA,EACAC,YAAa8D,EACblsB,SAAU,KAETorB,EAAQoC,aAIpB5B,EAAevf,SAASihB,GAAeG,cACP,mBAAtB5B,GACH,gBAACne,KAAAA,KACG,gBAACsM,OAAAA,KACG,gBAACyP,GAAgBA,CACbZ,OAAQuC,EAAQh5B,GAChBm2B,oBAAAA,EACAR,UAAWqD,EAAQx1B,SAASoT,OAC5Bmf,cAAAA,EACAC,YAAa8D,EACb5D,cAAAA,EACAoB,WAAY,CACRp3B,KAAM,OACN5B,MAAO06B,EAAQ5wB,YAAc4wB,EAAQ5wB,YAAc,GACnDkwB,OAAQmB,EACRh5B,OAAQ,GAAoBkW,OAAjBlW,EAAO,YAEhB,QAF0BkW,EAAAA,GAAAA,GACxBqiB,EAAQ34B,MACV,iCAO7B24B,EAAQx1B,SAASkR,KAAI,SAAC4mB,EAAmCC,G,OACtD,gBAAC/F,GAAUA,CACP5gB,IAAK,YAA0B2mB,OAAdvC,EAAQh5B,GAAG,KAAK,OAAFu7B,GAC/Bv2B,UAAW+1B,KAAW,aAAwB,OAAX/B,EAAQh5B,IAAM,CAC7C,mBAAoBwO,GAAWkrB,EAAeV,MAGjDe,IAASC,GAAcS,kBACpB,gBAACnf,KAAAA,KACG,gBAACoa,GAAWA,CAACK,cAAAA,EAAaI,oBAAAA,EAAmBvoB,SAAU,GAAIooB,aAAa,GACpE,gBAACpO,OAAAA,KACI0T,EAAaV,aACV,gBAAC7B,GAAAA,CACGt4B,OAAQA,EACRu4B,QAASsC,EACTpC,6BAA8BA,EAC9BllB,WACIkmB,IACAA,EAA0BW,qBAAqB5gB,SAC3CqhB,EAAat7B,KAKrBi5B,cAAeD,EACfx7B,IAAK,SAAC48B,G,OACDD,EAAcr8B,QA/KnD,KA+K4D4nB,EAAI,GAAmB6V,GAAKnB,C,IAI5DtB,MAMpB,gBAACxd,KAAAA,KACG,gBAACoa,GAAWA,CAACjP,QAAAA,EAAO7Y,SAAU,KACzBirB,GAA8ByC,EAAaL,cACxC,gBAAChG,GAAiBA,CACd90B,eAAc,GAAuCwW,OAApClW,EAAO,+BAEnBkW,QAFgDA,EAAAA,GAAAA,GACjD2kB,EAAaj7B,MACf,KAA8B,QAA3BsW,EAAAA,GAAAA,GAAaqiB,EAAQ34B,MAAM,uBAGxC,gBAACu4B,GAAAA,CACGpoB,MAAO8qB,EAAaj7B,KACpBF,eAAc,GAAyCwW,OAAtClW,EAAO,iCAEnBkW,QAFkDA,EAAAA,GAAAA,GACnD2kB,EAAaj7B,MACf,KAA8B,QAA3BsW,EAAAA,GAAAA,GAAaqiB,EAAQ34B,OAC1Bw4B,2BAA4BA,GAC9B,GAAqB,OAAlByC,EAAaj7B,SAGzBm5B,EAAevf,SAASihB,GAAeC,aACpC,gBAAC7f,KAAAA,KACG,gBAACoa,GAAWA,CAACK,cAAAA,EAAaC,YAAa8D,GAClChB,KAIZU,EAAevf,SAASihB,GAAeG,cACP,mBAAtB5B,GACH,gBAACne,KAAAA,KACG,gBAACoa,GAAWA,CAAC9nB,SAAU,IAAKmoB,cAAAA,EAAaC,YAAa8D,GACjDhB,K,SAWjD,E,icCrWO,IAAM0C,GAAgBx6B,EAAAA,GAAOC,IAAG,MACtB,SAACmB,G,MAAU,GAAe,OAAZA,EAAMR,MAAM,K,GAMVkB,EAAM+F,KAAKQ,Y,siCCFrC,IAAMoyB,GAAmB,6LAWnBC,GAAmB16B,EAAAA,GAAOC,IAAG,KAElB6B,EAAMC,QAAQ0F,MACT3F,EAAM+F,KAAKQ,YACxB,SAACjH,G,OAAWA,EAAMK,SAAW,SAAW,M,GAGlDg5B,GAEA/F,IAOOiG,GAAyB36B,EAAAA,GAAOC,IAAG,MAG9B,SAACmB,G,OAAWA,EAAMK,SAAW,SAAW,M,IAK7Cm5B,GAAkB56B,EAAAA,GAAOC,IAAG,MAE5B,SAACmB,G,OAAWA,EAAMy5B,cAAgB,GAAuB,OAApBz5B,EAAMy5B,cAAc,MAAM,G,IAG/DC,GAAiB96B,EAAAA,GAAOC,IAAG,KAEZ6B,EAAM+F,KAAKQ,WACTvG,EAAM+F,KAAKQ,WACVvG,EAAM+F,KAAKQ,YAM7B0yB,GAAsB/6B,EAAAA,GAAOC,IAAG,M,uBC1D7C+6B,KAAAA,OAAaC,MAaN,IAAMC,GAAc,Y,IACvBC,EAAAA,EAAAA,QACAC,EAAAA,EAAAA,qBACAC,EAAAA,EAAAA,wBACAC,EAAAA,EAAAA,eACAC,EAAAA,EAAAA,cAEA,IAAKJ,EAAQvlB,OAAQ,OAAO,gCAAG,GAiB/B,IAfA,IAAI4lB,EAAQ,EAENC,EAAgBN,EAAQvlB,OACxB8lB,EAAQV,KAAM,GAA2BK,OAAxBD,EAAqB,KAA2B,OAAxBC,GAA2B,WACpEM,EAAMD,EAAME,IAAI,EAAG,QACnBC,EAAoBb,KAAMO,GAE1BO,EAAeJ,EAAME,IAAI,GAAI,SAASj3B,QAAQ42B,GAC9CM,EACAH,EAAME,IAAI,GAAI,SACdG,EAAaL,EAAME,IAAI,GAAI,SAASj3B,QAAQ42B,GAAiBM,EAAoBF,EAEjFK,EAAYV,EAAiBQ,EAAeJ,EAC5CO,EAAUX,EAAiBS,EAAaJ,EAErCjX,EAAI,EAAGA,EAAI+W,EAAe/W,IAE3BsW,KAAMG,EAAQzW,GAAGwX,MAAMjB,UAAUe,EAAWC,EAAS,KAAM,QAC3DT,GAASL,EAAQzW,GAAGpnB,OAI5B,OAAO,gCAAGywB,OAAOyN,GAAOW,QAAQ,GACpC,E,4+CC3CA,IAEaC,GAAcp8B,EAAAA,GAAOoa,MAAK,KACXtY,EAAM+F,KAAKQ,WACjCmsB,GAA0BE,IAKnB2H,GAAgBr8B,EAAAA,GAAOoa,MAAK,KACbtY,EAAM+F,KAAKQ,WAIlBqsB,GAIfA,GAC2B5yB,EAAM0H,SAASK,sBAnB5B,KAqCPyyB,GAAmBt8B,EAAAA,GAAOoa,MAAK,KAChBtY,EAAM+F,KAAKQ,WACRvG,EAAM+F,KAAKQ,YAG7Bk0B,GAAgBv8B,EAAAA,GAAOw8B,MAAK,MAI5BC,GAAiBz8B,EAAAA,GAAOC,IAAG,MAM3By8B,GAAY18B,EAAAA,GAAOC,IAAG,KAEN6B,EAAM+F,KAAKQ,WAQlCoyB,GAEA/F,I,2dCzDN,IAAMiI,GAAyB38B,EAAAA,GAAOC,IAAG,MACnC,SAACmB,G,OAAUA,EAAMK,UAAa,e,IAG9Bm7B,IAAc58B,EAAAA,EAAAA,IAAOs8B,GAAPt8B,CAAuBs8B,MAKrCO,IAA4B78B,EAAAA,EAAAA,IAAO00B,GAAP10B,CAAkB00B,KAC3B5yB,EAAM0H,SAASK,uBAGlCizB,GAAoB98B,EAAAA,GAAO4mB,KAAI,MAI/BmW,IAAsBC,EAAAA,EAAAA,MAAK9B,IAYpB+B,GAAkE,Y,IAC3Ex9B,EAAAA,EAAAA,OACAy9B,EAAAA,EAAAA,SACAxE,EAAAA,EAAAA,cACA0C,EAAAA,EAAAA,qBACAC,EAAAA,EAAAA,wBACAC,EAAAA,EAAAA,eACA75B,EAAAA,EAAAA,SAEA,OACI,gBAACk7B,GAAAA,CAAuBl7B,SAAUA,EAAUtC,eAAc,GAAU,OAAPM,EAAO,sBAChE,gBAAC09B,GAAQA,KAAC,KACV,gBAACV,GAAcA,KACX,gBAACG,GAAAA,KACG,gBAACJ,QAAAA,KACG,gBAACzhB,KAAAA,KACG,gBAACqiB,KAAAA,KACG,gBAACP,GAAAA,CAA0B/H,SAAAA,EAAQF,UAAAA,GAC/B,gBAAChO,OAAAA,KAAK,SAAa,IACnB,gBAACkW,GAAAA,KAAkB,KACZ,GAA4B,OAAzB1B,EAAuB,GAAIiC,UAAU,UAQvE,gBAAChB,GAAaA,KACV,gBAAChhB,QAAAA,KACI6hB,EAAS3E,SAAS7kB,KAAI,SAACskB,EAAsBsF,G,OAC1C,gBAAC7/B,EAAAA,SAAc,CAACmW,IAAK,aAA2B0pB,OAAdtF,EAAQh5B,GAAG,KAAgB,OAAbs+B,IAC5C,gBAACviB,KAAAA,KACG,gBAACT,KAAAA,CACGnb,eAAc,GAAsCwW,OAAnClW,EAAO,8BAEtB,QAFkDkW,EAAAA,GAAAA,GAChDqiB,EAAQ34B,MACV,cAEF,gBAACq1B,GAAWA,CAACI,SAAAA,EAAQG,UAAAA,EAASN,UAAWqD,EAAQx1B,SAASoT,QACtD,gBAACmnB,GAAAA,CACG5B,QAAS+B,EAASz5B,KAAKu0B,EAAQh5B,IAC/Bo8B,qBAAsBA,EACtBC,wBAAyBA,EACzBC,eAAgBA,EAChBC,cAAe2B,EAASK,aAAaC,aAKpDxF,EAAQx1B,SAASkR,KAAI,SAAC4mB,EAAmCmD,G,OACtD,gBAAC1iB,KAAAA,CAAGnH,IAAK,aAAgC6pB,OAAnBnD,EAAat7B,GAAG,KAAqB,OAAlBy+B,IACrC,gBAACnjB,KAAAA,CACGnb,eAAc,GAAsCwW,OAAnClW,EAAO,8BAEnBkW,QAF+CA,EAAAA,GAAAA,GAChD2kB,EAAaj7B,MACf,KAA8B,QAA3BsW,EAAAA,GAAAA,GAAaqiB,EAAQ34B,MAAM,cAEhC,gBAACq1B,GAAWA,CACRI,SAAAA,EACAG,UAAAA,EACAjxB,UAAW+1B,KAAW,aAAwB,OAAX/B,EAAQh5B,IAAM,CAC7C,mBAAoBwO,GAAWkrB,EAAeV,MAGlD,gBAAC+E,GAAAA,CACG5B,QAAS+B,EAASz5B,KAAK62B,EAAat7B,IACpCo8B,qBAAsBA,EACtBC,wBAAyBA,EACzBC,eAAgBA,EAChBC,cAAe2B,EAASK,aAAaC,Y,UAYrF,EChHaE,GAAa,Y,IAAGj+B,EAAAA,EAAAA,OAAQk+B,EAAAA,EAAAA,MAAOtC,EAAAA,EAAAA,wBACxC,OACI,gBAAC+B,KAAAA,CACGQ,aAAYD,EAAME,OAAO,KACzBC,UACIH,EAAMI,SAAS/C,KAAM,GAAmBK,OAAhBsC,EAAMK,OAAO,KAA2B,OAAxB3C,IAA2BwC,OAAO,YACpEF,EAAMM,SAAS,EAAG,QAAQJ,OAAO,QACjCF,EAAME,OAAO,QAEvB1+B,eAAc,GAAU,OAAPM,IAEjB,gBAACi1B,GAAWA,CAACE,UAAAA,GAAU+I,EAAME,OAAO,WAGhD,E,iiCChBA,I,kBAAMK,GAASl+B,EAAAA,GAAOC,IAAG,KAGNmK,EAAQsC,QACLtC,EAAQsC,SAGxByxB,GAA2Bn+B,EAAAA,GAAOC,IAAG,MAKrCm+B,GAAep+B,EAAAA,GAAOiB,EAAC,KAEZZ,EAAU4B,OAGrBo8B,GAAer+B,EAAAA,GAAOiB,EAAC,KAEZZ,EAAUqM,SAGrB4xB,IAAyBt+B,EAAAA,EAAAA,IAAO6M,EAAP7M,CAAa6M,MAKtC0xB,IAA2Bv+B,EAAAA,EAAAA,IAAO6M,EAAP7M,CAAa6M,MAKxC2xB,IAAyBx+B,EAAAA,EAAAA,IAAO6M,EAAP7M,CAAa6M,MAKtC4xB,IAAmBz+B,EAAAA,EAAAA,IAAO6M,EAAP7M,CAAa6M,MAazB6xB,GAAqF,Y,IAC9Fj/B,EAAAA,EAAAA,OACAs5B,EAAAA,EAAAA,KACA4F,EAAAA,EAAAA,wBACAC,EAAAA,EAAAA,wBACAC,EAAAA,EAAAA,0BAEA,OAAI9F,IAASC,GAAcS,iBAEnB,gCACI,gBAAC6E,GAAAA,CACG7+B,OAAQ,GAAU,OAAPA,EAAO,8BAClBiC,QAASk9B,GACZ,qBAGD,gBAACL,GAAAA,CACG9+B,OAAQ,GAAU,OAAPA,EAAO,gCAClB+M,MAAOyD,EAAMpE,QACbnK,QAASm9B,GACZ,WAOL,gBAACL,GAAAA,CAAuB/+B,OAAQ,GAAU,OAAPA,EAAO,8BAA6BiC,QAASi9B,GAAyB,oBAKrH,EAeaG,GAAyE,Y,IAClFr/B,EAAAA,EAAAA,OACAs5B,EAAAA,EAAAA,KACAgG,EAAAA,EAAAA,YACAC,EAAAA,EAAAA,SACAC,EAAAA,EAAAA,oBACAC,EAAAA,EAAAA,mBACAP,EAAAA,EAAAA,wBACAC,EAAAA,EAAAA,wBACAC,EAAAA,EAAAA,0BACAM,EAAAA,EAAAA,kBAEA,OACI,gBAACjB,GAAAA,CAAO/+B,eAAc,GAAU,OAAPM,EAAO,aAC5B,gBAAC2+B,GAAAA,KAAcW,EAAY,aAC3B,gBAACZ,GAAAA,KACIc,GACG,gBAACP,GAAAA,CACGj/B,OAAQA,EACRs5B,KAAMA,EACN4F,wBAAyBA,EACzBC,wBAAyBA,EACzBC,0BAA2BA,IAGlCK,GAAsBnG,GAAQC,GAAcS,kBACzC,gBAACgF,GAAAA,CACGh/B,OAAQ,GAAU,OAAPA,EAAO,yBAClB+M,MAAOyD,EAAMpE,QACbnK,QAASy9B,GACZ,mBAKT,gBAACd,GAAAA,CAAal/B,eAAc,GAAU,OAAPM,EAAO,gCAA8B,qBAC7Cu/B,GAInC,E,ojJCpHAhE,KAAAA,OAAaoE,M,SA4CDlF,G,uDAAAA,KAAAA,GAAAA,CAAAA,I,SAQAmF,G,6BAAAA,KAAAA,GAAAA,CAAAA,I,SAOAC,G,uCAAAA,KAAAA,GAAAA,CAAAA,I,SAiFA3G,G,+CAAAA,KAAAA,GAAAA,CAAAA,I,SAQA4G,G,+FAAAA,KAAAA,GAAAA,CAAAA,I,SAYAnH,G,6EAAAA,KAAAA,GAAAA,CAAAA,IAiCZ,I,GAAMoH,GAAwB,SAACjH,GAC3B,IAAMkH,EAA+B,GAwBrC,OAvBAlH,EAAS/F,SAAQ,SAACwF,GAId,GAHIA,EAAQiC,cACRwF,EAAmB3nB,KAAKkgB,EAAQh5B,IAEhCg5B,EAAQx1B,UAAYw1B,EAAQx1B,SAASoT,OAAS,EAAG,C,IAgBjD6pB,EAdMC,EAAqB1H,EAAQx1B,SAASiW,QAAO,SAACC,GAChD,OAAOA,EAAKuhB,YAChB,IACM0F,EAAwBD,EAAmBhsB,KAAI,SAACgF,GAClD,OAAOA,EAAK1Z,EAChB,IAKI0gC,EAAmB9pB,SAAWoiB,EAAQx1B,SAASoT,QAC/C6pB,EAAmB3nB,KAAKkgB,EAAQh5B,KAGpCygC,EAAAA,GAAmB3nB,KAAnB2nB,MAAAA,EAAwB,GAAGE,GAC/B,CACJ,IACOF,CACX,EAEMG,GAA2B,SAACrH,GAY9B,OAX8BA,EAAS9f,QAAO,SAACuf,GAE3C,IAAM6H,EAAuB7H,EAAQx1B,SAASiW,QAAO,SAACC,GAClD,OAAOA,EAAKuhB,YAChB,IACA,OAAoC,IAAhC4F,EAAqBjqB,QAAgBiqB,EAAqBjqB,SAAWoiB,EAAQx1B,SAASoT,MAI9F,IACgElC,KAAI,SAACgF,G,OAASA,EAAK1Z,E,GAEvF,EAEa8gC,GAA8B,SACvCC,EACAC,GAuFA,OAAQA,EAAO9gC,MACX,IAAK,qBAED,OAAO,MAxFM,Y,IACjB84B,EAAAA,EAAAA,QACAC,EAAAA,EAAAA,cAOMgI,EAA4B,GAAGF,EAAMlG,sBACrCqG,EAAiC,GAAGH,EAAMvG,2BAC1C2G,EAAeF,EAAyBG,QAAQpI,EAAQh5B,IACxDqhC,EAAWF,EAAe,EAE5BE,EACAJ,EAAyBnoB,KAAKkgB,EAAQh5B,IAEtCihC,EAAyBK,OAAOH,EAAc,GAIlD,IAAMI,EAA4BL,EAA8BE,QAAQpI,EAAQh5B,IAKhF,GAJIuhC,GAA6B,GAC7BL,EAA8BI,OAAOC,EAA2B,QAGvC,IAAlBtI,EAA+B,CAEtC,IAAMuI,EAAkCN,EAA8BE,QAAQnI,EAAcj5B,IAK5F,GAJIwhC,GAAmC,GACnCN,EAA8BI,OAAOE,EAAiC,GAGtEH,EAEqBpI,EAAcz1B,SAASiW,QAAO,SAACC,GAEhD,OADsBunB,EAAyBhnB,SAASP,EAAK1Z,GAEjE,IAEiB4W,OAASqiB,EAAcz1B,SAASoT,SAC5CsqB,EAA8BjnB,SAASgf,EAAcj5B,IAEtDkhC,EAA8BpoB,KAAKmgB,EAAcj5B,IAG5CihC,EAAyBhnB,SAASgf,EAAcj5B,KACjDihC,EAAyBnoB,KAAKmgB,EAAcj5B,QAGjD,CAEH,IAAMyhC,EAA4BR,EAAyBG,QAAQnI,EAAcj5B,IAC7EyhC,GAA6B,GAC7BR,EAAyBK,OAAOG,EAA2B,GAG9CxI,EAAcz1B,SAASiW,QAAO,SAACC,GAE5C,OADsBunB,EAAyBhnB,SAASP,EAAK1Z,GAEjE,IACa4W,OAAS,IAAMsqB,EAA8BjnB,SAASgf,EAAcj5B,KAC7EkhC,EAA8BpoB,KAAKmgB,EAAcj5B,GAEzD,CACJ,CAcA,OAbIg5B,EAAQx1B,UAERw1B,EAAQx1B,SAASgwB,SAAQ,SAACkO,GACtB,IAAMC,EAAoBV,EAAyBG,QAAQM,EAAa1hC,IAClE4hC,EAAkBD,GAAqB,EACzCN,IAAaO,EACbX,EAAyBnoB,KAAK4oB,EAAa1hC,KACnCqhC,GAAYO,GACpBX,EAAyBK,OAAOK,EAAmB,EAE3D,IAGG,CACH9G,qBAAsBoG,EACtBzG,0BAA2B0G,EAEnC,CAIyBW,CAAa,CAAE7I,QAASgI,EAAOhI,QAASC,cAAe+H,EAAO/H,iBAGnF,IAAK,iBACD,IAAM6I,EAAW,MAAKf,GAGtB,OAFAe,EAASjH,qBAAuBmG,EAAO7c,QAAQ0W,qBAC/CiH,EAAStH,0BAA4BwG,EAAO7c,QAAQqW,0BAC7C,MAAKsH,GAEhB,QACI,OAAOf,EAEnB,EAEa5C,GAAWn9B,EAAAA,GAAOC,IAAG,KACL6B,EAAM+F,KAAKQ,WAChBvG,EAAMC,QAAQ0F,MACzB3F,EAAM0H,SAASM,cAGXzJ,EAAUqM,QAGZtC,EAAQnI,OAIjB8+B,GAAuB/gC,EAAAA,GAAOwB,OAAM,KAG7BM,EAAM0H,SAASM,cAIGhI,EAAMC,QAAQyF,OAMvCw5B,GAA6BhhC,EAAAA,GAAOC,IAAG,MACpB,SAACmB,G,OAAUA,EAAM6/B,mB,IAEpC,SAAC7/B,G,OAAUA,EAAMK,UAAa,e,IAI9By/B,GAAc,SAACz9B,GACjB,IAAM09B,EAAmC,CAAC,EAC1C,IAAK,IAAMzoB,KAAQjV,EAAM,C,IAChB,mB,IAAL,QAAK,IAA0BA,EAAKiV,GAAK,qBAApC,0BAAsC,CAAtC,IAAM0oB,EAAN,QACDD,EAAS,GAAWnG,OAARtiB,EAAK,KAAkD,OAA/CsiB,KAAMoG,EAAiBlF,MAAM2B,OAAO,aAAgBuD,EAAiB9jC,KAC7F,C,UAFK,Q,aAAA,6B,YAAA,E,MAAA,C,EAGT,CACA,OAAO6jC,CACX,EAEME,GAAe,Y,IACjB1M,EAAAA,EAAAA,QACAgJ,EAAAA,EAAAA,MACArE,EAAAA,EAAAA,UACAgI,EAAAA,EAAAA,cACAC,EAAAA,EAAAA,YACAC,EAAAA,EAAAA,YACA/hC,EAAAA,EAAAA,OAGMgiC,EAAiBzG,KAAM2C,GAAOE,OADf,WAEjBvgC,EAAQ,EAQZ,OALIA,OAFoE,IAAlDikC,EAAY,GAAgBE,OAAbnI,EAAU,KAAkB,OAAfmI,IAEtCF,EAAY,GAAgBE,OAAbnI,EAAU,KAAkB,OAAfmI,IAE5B,EAIR,gBAAC/M,GAAWA,CACRO,UAAAA,EACAG,UAAAA,EACAT,QAASA,EACTx1B,eAAc,GAAcwW,OAAXlW,EAAO,MAAkCgiC,QAA9B9rB,EAAAA,GAAAA,GAAa6rB,GAAa,MAAmB,OAAfC,GAC1D5M,SAAU8I,EAAMh5B,QAAQ28B,EAAe,UAEtChkC,EAGb,EASakQ,GAAa,SAACkrB,EAA8BV,GACrD,MAAyB,aAAlBU,CACX,EAEMgJ,IAAuB1E,EAAAA,EAAAA,MAAKqE,IAErB3H,GAAe,CACxBnB,SAAU,IACVoB,aAAc,GACdS,WAAY,IACZhzB,YAAa,IACbu6B,wBAAyB,KAGhB9I,GAAyB,SAAC75B,GAEnC,IAAM4iC,EAAU1kC,SAAS2kC,iBAAiB,cAAiB,OAAH7iC,IAClD8iC,EAAW5kC,SAAS2kC,iBAAiB,kBAAqB,OAAH7iC,EAAG,yBAChE4iC,EAAQpP,SAAQ,SAACC,G,OAAYA,EAAQsP,UAAUC,OAAO,kB,IACtDF,EAAStP,SAAQ,SAACC,G,OAAYA,EAAQsP,UAAUC,OAAO,kB,GAC3D,G,SAKYhJ,G,4DAAAA,KAAAA,GAAAA,CAAAA,IAKZ,I,GAAM3Q,GAA6D,Y,IA4C7C4Z,EAURC,EAMDC,EAAT,WACI,IAAMC,EAA6BC,EAAoBvlC,SAAWulC,EAAoBvlC,QAAQwlC,WACxFC,EAAwBF,EAAoBvlC,SAAWulC,EAAoBvlC,QAAQ0lC,iBAEzF,GAAmC,OAA/BJ,GAAiE,OAA1BG,GAA4C,OAAVE,IAAkBA,GAAM7sB,OAAQ,CACzG,IAAM8sB,EACFH,EAAsB,IACtBE,GAAM,IACNtL,KAAKwL,OACAJ,EAAsB,GAAG3hC,MAAQwhC,GAC9BK,GAAM,GAAGG,wBAAwBhiC,OAEvCiiC,EAAcJ,GAAMC,GAGtBG,GAAezH,IAAyBrN,OAAO8U,EAAYC,QAAQC,KAEnEC,EAAwBjV,OAAO8U,EAAYC,QAAQC,KAEvB,OAA5BE,GAAgBnmC,SAAoD,OAAhCulC,EAAoBvlC,SAEpDmmC,GAAgBnmC,QAAQ8lC,wBAAwBhiC,MAC5CyhC,EAAoBvlC,QAAQ8lC,wBAAwBhiC,QACpDwhC,GACJK,GAAMC,EAAa,IAGnBM,EAAwBjV,OAAO0U,GAAMC,EAAa,GAAGI,QAAQC,IAGzE,CACAG,IAAU,CACd,EASSC,EAAT,WANSD,KACDE,sBAAsBjB,GACtBe,IAAU,EAMlB,EAtGAz/B,EAAAA,EAAAA,KACAhE,EAAAA,EAAAA,OAAAA,EAAAA,EACA+4B,eAAAA,OAAAA,IAAiB,KAAE,MACnB6K,YAAAA,OAAAA,IAAc,KAAE,MAChB3K,cAAAA,OAAAA,IAAgB,EAAhBA,WAAAA,EACAD,EAAAA,EAAAA,kBAAAA,EAAAA,EACA6C,eAAAA,OAAAA,IAAiB,SACjBzD,2BAAAA,OAAAA,IAA6B,SAC7BoH,oBAAAA,OAAAA,IAAsB,SACtBC,mBAAAA,OAAAA,IAAqB,KACrB9c,EAAAA,EAAAA,cACGhhB,EAAAA,GAAAA,EAAAA,CAXHqC,OACAhE,SACA+4B,iBACA6K,cACA3K,gBACAD,oBACA6C,iBACAzD,6BACAoH,sBACAC,qBACA9c,kBAGmD3kB,EAAAA,GAAAA,EAAAA,UAAe,MAA3Dq7B,EAA4Cr7B,EAAAA,GAAxB6lC,EAAwB7lC,EAAAA,GACnBA,EAAAA,GAAAA,EAAAA,SAAegG,GAAAA,GAAxCy5B,EAAyBz/B,EAAAA,GAAf8lC,EAAe9lC,EAAAA,GACUA,EAAAA,GAAAA,EAAAA,SAAe,MAAlDo9B,EAAmCp9B,EAAAA,GAApB+lC,EAAoB/lC,EAAAA,GACRA,EAAAA,GAAAA,EAAAA,SAAwB,IAAE,GAArDgmC,EAA2BhmC,EAAAA,GAAhBimC,EAAgBjmC,EAAAA,GACIA,EAAAA,GAAAA,EAAAA,SAAuCyjC,GAAYz9B,EAAKA,OAAI,GAA3F89B,EAA+B9jC,EAAAA,GAAlBkmC,EAAkBlmC,EAAAA,GACkBA,EAAAA,GAAAA,EAAAA,SAAuB,MAAxE29B,EAAiD39B,EAAAA,GAA3BulC,EAA2BvlC,EAAAA,GACdA,EAAAA,GAAAA,EAAAA,SAAeu9B,KAAMv3B,EAAK85B,aAAaqG,kBAAe,GAAzFtC,EAAmC7jC,EAAAA,GAApBomC,EAAoBpmC,EAAAA,GAClBA,EAAAA,GAAAA,EAAAA,SAAc,cAA/Bs7B,EAAiBt7B,EAAAA,GAAXqmC,EAAWrmC,EAAAA,GAC0CA,EAAAA,GAAAA,EAAAA,WAAiBqiC,GAA6B,CAC5GjG,qBAAsB2F,GAAsBtC,EAAS3E,UACrDiB,0BAA2BoG,GAAyB1C,EAAS3E,YACjE,GAHOW,EAA2Dz7B,EAAAA,GAAhCy6B,EAAgCz6B,EAAAA,GAK5DsmC,EAAoBtmC,EAAAA,OAA6B,MACjD4kC,EAAsB5kC,EAAAA,OAA6B,MACnDumC,GAAmBvmC,EAAAA,OAA+B,MAClDwmC,GAAexmC,EAAAA,OAA6B,MAC5CymC,GAAezmC,EAAAA,OAA6B,MAC5CwlC,GAAkBxlC,EAAAA,OAAkC,MAEtDylC,IAAU,EAERiB,GAAoB3L,EAAe5iB,OAAS,EAC5CwuB,GAAaf,EAAYpqB,SAAS,aAElCorB,GACoB3K,GAAanB,UACE,sBAATQ,EAA0CW,GAAaC,aAAe,IAC7Eb,GAEPmJ,EAAK,EACTzJ,EAAevf,SAAS,gBAA+BgpB,GAAMvI,GAAaU,YAC1E5B,EAAevf,SAAS,iBAAgCgpB,GAAMvI,GAAatyB,aACpE66B,GAEX,GAIJhB,IACIiB,EAAmBkC,GAAa1K,GAAaiI,wBAA0B,EACtE0C,GAAqBnC,GAG1BO,GAAQyB,GAAapnC,SAAWonC,GAAapnC,QAAQ+kC,iBAAiB,aA+C5EsB,IAEA,IAAMmB,IAAuBC,EAAAA,GAAAA,IAAqB,WAC9C,GAA6B,OAAzBN,GAAannC,SAAoD,OAAhCulC,EAAoBvlC,SAA6C,OAAzBonC,GAAapnC,QAAkB,CACxG,IAAMslC,EAA6BC,EAAoBvlC,QAAQwlC,WAC/D2B,GAAannC,QAAQwlC,WAAaF,EAClC8B,GAAapnC,QAAQwlC,WAAaF,CACtC,CACJ,GAAG,KAYH1lC,EAAAA,EAAAA,YAAU,WACN6mC,EAAY9/B,EAChB,GAAG,CAACA,KAEJ/G,EAAAA,EAAAA,YAAU,WAMN,IALA,IAAM8nC,EAAYxJ,KAAMkC,EAASK,aAAaiH,WAGxCC,EAAkB,GAClBC,EAHU1J,KAAMkC,EAASK,aAAaC,SAGhBtG,KAAKsN,EAAW,SACnC9f,EAAI,EAAGA,GAAKggB,EAAahgB,IAC9B+f,EAAO3sB,KAAK0sB,EAAU5I,IAAIlX,EAAG,UAEjCgf,EAAae,EACjB,GAAG,CAACvH,EAASK,aAAaiH,UAAWtH,EAASK,aAAaC,WAE3D9gC,EAAAA,EAAAA,YAAU,WACNmnC,EAAiB7I,KAAMkC,EAASK,aAAaqG,iBACjD,GAAG,CAAC1G,EAASK,aAAaqG,mBAE1BlnC,EAAAA,EAAAA,YAAU,WACNinC,EAAezC,GAAYhE,EAASz5B,MACxC,GAAG,CAACy5B,EAASz5B,QAEb/G,EAAAA,EAAAA,YAAU,WAIN8mC,EAFW,GAAkB1mC,SAAWknC,GAAiBlnC,QAAQ6nC,aAAgB,EAIrF,GAAG,CAACX,GAAiBlnC,UAIrB,IAOM8hC,GAA0B,W,yMAAA,a,mDAC5B,MAA6B,mBAAlBxc,GAEP0hB,EAAQ,WACR,C,IAGJ,C,EAAM1hB,EAAoF,CACtFljB,KAAM,oBACNikB,QAAS,CAAEyhB,SAAU1L,EAA0BW,yB,cAFnD,SAKAiK,EAAQ,W,OACZ,I,kDAbgC,GAqChC,OACI,gCACI,gBAAChF,GAAcA,CACXr/B,OAAQ,GAAU,OAAPA,GACXs5B,KAAMA,EACNiG,SAAU9B,EAASK,aAAayB,SAChCD,YAAa7B,EAAS3E,SAAS3iB,OAC/BqpB,oBAAqBA,EACrBC,mBAAoBA,EACpBP,wBAnDoB,WAE5BmF,EAAQ,oBACZ,EAiDYlF,wBAAyBA,GACzBC,0BAjCsB,WAC9B,IAAMhF,EAAuB2F,GAAsBtC,EAAS3E,UACtDiB,EAA4BoG,GAAyB1C,EAAS3E,UAEpEL,EAA6B,CACzBh5B,KAAM,iBACNikB,QAAS,CACL0W,qBAAsBA,EACtBL,0BAA2BA,KAInCsK,EAAQ,UACZ,EAqBY3E,kBAnBc,WACO,mBAAlB/c,GAGXA,EAA2D,CAAEljB,KAAM,eACvE,IAgBQ,gBAAC47B,GAAcA,GAAAA,GAAAA,CAAAA,EAAK15B,GAAAA,CAAO5E,IAAKunC,EAAmB5kC,eAAc,GAAU,OAAPM,EAAO,YACvE,gBAACs7B,GAAmBA,KAChB,gBAACP,GAAaA,CAAC55B,MAAOyjC,GAAoBllC,eAAc,GAAU,OAAPM,EAAO,qBAC9D,gBAAC09B,GAAAA,KAAS,WACG,IACRgH,IACG,gBAACpD,GAAAA,CACG5hC,eAAc,GAAU,OAAPM,EAAO,mCACxBiC,QAlEI,W,OAAM4hC,GAAsBxK,E,GAoE/BA,GAAsB,gBAACxE,GAAiBA,MAAI,IAAEwE,EAAqB,OAAS,OAAQ,IAAI,aAC9EA,GAAsB,gBAACzE,GAAkBA,QAIhE,gBAACoI,GAAcA,KACX,gBAACH,GAAgBA,KACb,gBAACC,GAAaA,KACV,gBAACxhB,KAAAA,KACa,sBAATge,GACG,gBAACqE,KAAAA,KACG,gBAAC1I,GAAWA,CACRS,oBAAAA,EACAP,UAAAA,EACAhoB,SAAU8sB,GAAaC,cAC1B,cAKT,gBAACyD,KAAAA,KACG,gBAAC1I,GAAWA,CAACS,oBAAAA,EAAmBP,UAAAA,EAAShoB,SAAU8sB,GAAanB,UAAU,iBAI7EC,EAAevf,SAAS,eACrB,gBAACmkB,KAAAA,KACG,gBAAC1I,GAAWA,CACRS,oBAAAA,EACAP,UAAAA,EACAG,cAAAA,EACAC,YAAa8D,EACblsB,SAAU8sB,GAAaU,YAC1B,gBAKR5B,EAAevf,SAAS,gBACrB,gBAACmkB,KAAAA,KACG,gBAAC1I,GAAWA,CACRS,oBAAAA,EACAvoB,SAAU8sB,GAAatyB,YACvBwtB,UAAAA,EACAG,cAAAA,EACAC,YAAa8D,GAChB,+BASzB,gBAACR,GAAYA,CACT74B,OAAQA,EACRy5B,0BAA2BA,EAC3BhB,6BAA8BA,EAC9BK,SAAU2E,EAAS3E,SACnBC,eAAgBA,EAChBC,kBAAmBA,EACnBC,cAAeA,EACfG,uBAAwBA,GACxBhB,2BAA4BA,EAC5BiB,mBAAoBA,EACpBC,KAAMA,KAGd,gBAACiI,GAAAA,CACGC,oBAAqBA,GACrBx/B,SAAmB,sBAATs3B,GAEV,gBAAC94B,MAAAA,KACG,gBAACk9B,GAAAA,KAAS,MAEd,gBAACT,GAASA,CAAClgC,IAAK0nC,IACZ,gBAAC5H,GAAgBA,KACb,gBAACE,QAAAA,KACG,gBAACzhB,KAAAA,CAAGve,IAAKymC,IACJQ,EAAU/vB,KAAI,SAACiqB,G,OACZ,gBAACD,GAAUA,CACP9pB,IAAK,SAAoC,OAA3B+pB,EAAME,OAAO,eAC3Bp+B,OAAQ,GAA4Ck+B,OAAzCl+B,EAAO,oCAEhB,OAFkDk+B,EAAME,OACtD,WAEJF,MAAOA,EACPtC,wBAAyB6B,EAASK,aAAalC,yB,QAOvE,gBAACX,GAAgBA,CACbv7B,eAAc,GAAU,OAAPM,EAAO,wBACxBjD,IAAK6lC,EACL/S,SAAU,W,OAAMgV,I,EAChB7iC,SAAmB,sBAATs3B,GAEV,gBAACqD,GAAWA,CAAC5/B,IAAKwnC,IACd,gBAAC3oB,QAAAA,KACI6hB,EAAS3E,SAAS7kB,KAAI,SAACskB,G,OACpB,gBAACv6B,EAAAA,SAAc,CAACmW,IAAKokB,EAAQh5B,IACzB,gBAACw1B,GAAUA,CACPr1B,eAAc,GAAiBwW,OAAdlW,EAAO,SAAkC,QAA3BkW,EAAAA,GAAAA,GAAaqiB,EAAQ34B,OACpD84B,kBAAiBH,EAAQh5B,IAExBykC,EAAU/vB,KAAI,SAACiqB,G,OACZ,gBAACrjB,KAAAA,CACG1G,IAAK,QAAsB+pB,OAAd3F,EAAQh5B,GAAG,KAA2B,OAAxB2+B,EAAME,OAAO,YACxC1+B,eAAc,GAAsCw+B,OAAnCl+B,EAAO,8BAEnBkW,OAF+CgoB,EAAME,OACtD,UACF,KAA8B,QAA3BloB,EAAAA,GAAAA,GAAaqiB,EAAQ34B,QAE1B,gBAACqiC,GAAAA,CACG/M,UAAWqD,EAAQx1B,SAASoT,OAC5B+nB,MAAOA,EACPrE,UAAWtB,EAAQh5B,GACnBsiC,cAAeA,EACfC,YAAaA,EACbC,YAAaxJ,EAAQ34B,KACrBI,OAAQA,I,KAKvBu4B,EAAQx1B,SAASkR,KAAI,SAAC4mB,G,OACnB,gBAAC9F,GAAUA,CACP5gB,IAAK0mB,EAAat7B,GAClBgF,UAAW+1B,KAAW,aAAwB,OAAX/B,EAAQh5B,IAAM,CAC7C,mBAAoBwO,GAAWkrB,EAAeV,KAElD74B,eAAc,GAAiBm7B,OAAd76B,EAAO,SAAuB,OAAhB66B,EAAat7B,KAE3CykC,EAAU/vB,KAAI,SAACiqB,G,OACZ,gBAACrjB,KAAAA,CACG1G,IAAK,QAA2B+pB,OAAnBrD,EAAat7B,GAAG,KAA2B,OAAxB2+B,EAAME,OAAO,YAC7C1+B,eAAc,GAAsCw+B,OAAnCl+B,EAAO,8BAEnBkW,OAF+CgoB,EAAME,OACtD,UACF,KAAsCloB,QAAnCA,EAAAA,GAAAA,GAAa2kB,EAAaj7B,MAAM,KAEnC,QAFsCsW,EAAAA,GAAAA,GACpCqiB,EAAQ34B,QAGZ,gBAACqiC,GAAAA,CACG/D,MAAOA,EACPrE,UAAWgB,EAAat7B,GACxBsiC,cAAeA,EACfC,YAAaA,EACbC,YAAa,GAAoBlH,OAAjBtC,EAAQ34B,KAAK,MAAsB,OAAlBi7B,EAAaj7B,MAC9CI,OAAQA,I,eAWhD,gBAACk7B,GAAsBA,CACnBx7B,eAAc,GAAU,OAAPM,EAAO,8BACxBjD,IAAKynC,GACL3U,SAAU,WAnRM,OAAhC+S,EAAoBvlC,SAA6C,OAAzBmnC,GAAannC,SAA6C,OAAzBonC,GAAapnC,UACtFqmC,IAEAd,EAAoBvlC,QAAQwlC,WAAa2B,GAAannC,QAAQwlC,WAC9D4B,GAAapnC,QAAQwlC,WAAaD,EAAoBvlC,QAAQwlC,W,EAgR9C7gC,SAAmB,sBAATs3B,GAEV,gBAAC6B,GAAeA,CAACC,cAAeA,MAGvCuJ,IACG,gBAACnH,GAAaA,CACVx9B,OAAQA,EACRy9B,SAAUA,EACVxE,cAAeA,EACf0C,qBAAsBA,EACtBC,wBAAyB6B,EAASK,aAAalC,wBAC/CC,eAAgBA,EAChB75B,SAAmB,sBAATs3B,IAEf,MAKvB,E,itIC70BY8L,G,mDAAAA,KAAAA,GAAAA,CAAAA,IAkBZ,IAAMC,GAAkB9kC,EAAAA,GAAOoa,MAAK,MAM9B2qB,GAAkB/kC,EAAAA,GAAO+a,GAAE,MAChB,SAAC3Z,G,OAAgCA,EAAMgb,Q,IAKlD4oB,GAAmBhlC,EAAAA,GAAOo9B,GAAE,KACdhzB,EAAQrJ,QAKtB,SAACK,G,OAAkCA,EAAMR,MAAQ,UAAsB,OAAZQ,EAAMR,OAAU,E,IAG3EqkC,GAAYjlC,EAAAA,GAAO+a,GAAE,MACV,SAAC3Z,G,OAA0BA,EAAMgb,Q,GAE1Bta,EAAMC,QAAQ0F,OACxB,SAACrG,G,OAA0BA,EAAM0F,M,IAUzCo+B,GAAallC,EAAAA,GAAOsa,GAAE,KACXlQ,EAAQrJ,QAUA,SAACK,G,OAAWA,EAAM+jC,cAAgB,MAAQ,G,IACzC,SAAC/jC,G,OAAWA,EAAMgkC,aAAe,MAAQ,G,IAE3C,SAAChkC,G,OAAWA,EAAMikC,WAAa,MAAQ,G,IACjC,SAACjkC,G,OAAWA,EAAMikC,YAAcjkC,EAAM+jC,cAAgB,MAAQ,G,IAC7D,SAAC/jC,G,OAAWA,EAAMikC,YAAcjkC,EAAMgkC,aAAe,MAAQ,G,IAC3D,SAAChkC,G,OAAWA,EAAMkkC,WAAalkC,EAAM+jC,cAAgB,MAAQ,G,IAC5D,SAAC/jC,G,OAAWA,EAAMkkC,WAAalkC,EAAMgkC,aAAe,MAAQ,G,IAGxFG,GAA8BvlC,EAAAA,GAAOC,IAAG,MAMxCulC,GAA2BxlC,EAAAA,GAAOC,IAAG,KAEzBmK,EAAQyc,UAWpB4e,GAAiBzlC,EAAAA,GAAOC,IAAG,MAO3BylC,GAAuB1lC,EAAAA,GAAOC,IAAG,MAIjC8L,IAAuB/L,EAAAA,EAAAA,IAAO2B,EAAP3B,CAAqB2B,MAK5CgkC,GAAgB,Y,IAyBiCC,EAxBnDA,EAAAA,EAAAA,IACAC,EAAAA,EAAAA,OACApmC,EAAAA,EAAAA,OACA4lC,EAAAA,EAAAA,WACAF,EAAAA,EAAAA,cACAG,EAAAA,EAAAA,UACAF,EAAAA,EAAAA,aAUA,OACI,gBAACF,GAAAA,CACG/lC,eAAcM,EACd4lC,WAAYA,EACZF,cAAeA,EACfG,UAAWA,EACXF,aAAcA,GAEbS,EAAOvgC,OAASugC,EAAOvgC,OAAOsgC,EAAIniC,MAA6B,QAArBmiC,EAAAA,EAAIniC,KAAKoiC,EAAOxmC,aAAhBumC,IAAAA,EAAAA,EAAyB,GAGhF,EAEME,GAAqB,Y,IACvBD,EAAAA,EAAAA,OACAE,EAAAA,EAAAA,oBACAC,EAAAA,EAAAA,cACAC,EAAAA,EAAAA,kBAOA,OACI,gBAACT,GAAAA,CACGU,KAAM,SACNj/B,aAAY,mBAAiC,OAAd4+B,EAAOM,QACtCzkC,QAAS,W,OAAMukC,EAAkBJ,EAAOxmC,K,EACxCF,eACI0mC,EAAOpmC,OACD,GAAiB,OAAdomC,EAAOpmC,OAAO,uBACjB,GAA+B,QAA5BkW,EAAAA,GAAAA,GAAakwB,EAAOM,QAAQ,yBAGvCN,EAAOO,YAAc,gBAACV,GAAAA,KAAsBG,EAAOM,QACrD,gBAACV,GAAAA,KACIM,GAAyC,cAAlBC,GACpB,gBAACK,GAAAA,EAAUA,CAACzlC,MAAO,OAAQkG,OAAQ,SAEtCi/B,GAAyC,eAAlBC,GACpB,gBAACM,GAAAA,EAAYA,CAAC1lC,MAAO,OAAQkG,OAAQ,UAEvCi/B,GAAuB,gBAACQ,GAAAA,EAAqBA,CAAC3lC,MAAO,OAAQkG,OAAQ,OAAQoF,MAAO,aAItG,EAEas6B,GAAY/oC,EAAAA,YACrB,WAeIjB,G,QAbIiqC,QAAAA,OAAAA,IAAU,KAAE,MACZC,KAAAA,OAAAA,IAAO,KAAE,EACTC,EAAAA,EAAAA,kBAAAA,EAAAA,EACAC,qBAAAA,OAAAA,IAAuB,EAAvBA,YAAAA,EAAAA,EAAAA,EACAC,UAAAA,OAAAA,IAAY,eACZC,eAAAA,OAAAA,IAAiB,eACjBC,aAAAA,OAAAA,IAAe,WACfrnC,EAAAA,EAAAA,QACAD,EAAAA,EAAAA,OACA2qB,EAAAA,EAAAA,UAAAA,EAAAA,EACA4c,WAAAA,OAAAA,IAAa,KAAE,EACZ5lC,EAAAA,GAAAA,EAAAA,CAXHqlC,UACAC,OACAC,oBACAC,uBACAC,YACAC,iBACAC,eACArnC,UACAD,SACA2qB,YACA4c,eAKwCt1B,EAAAA,IAAAA,EAAAA,EAAAA,UAAwBi1B,GAAAA,GAA7DM,EAAqCv1B,EAAAA,GAArBw1B,EAAqBx1B,EAAAA,GACFA,EAAAA,IAAAA,EAAAA,EAAAA,UAA+Bk1B,GAAAA,GAAlEZ,EAAmCt0B,EAAAA,GAApBy1B,EAAoBz1B,EAAAA,GAEpC01B,GAAOpmB,EAAAA,EAAAA,cAAY,WACrB,IAAMqmB,EAAYC,KAAUZ,GAE5B,IAAKO,EACD,OAAOI,EAEX,IAAME,EAAad,EAAQzM,MAAK,SAAC6L,G,OAAWA,EAAOxmC,OAAS4nC,C,IAE5D,IAAKM,EACD,OAAOF,EAGX,IAAMG,EAA+B,eAAlBxB,GAA8C,EAAI,EAwBrE,GAFAqB,EAAUD,MATK,SAACK,EAA8BC,GAC1C,IAZsB5mC,EAAQyD,EACxBojC,EACAC,EAcN,OAJeL,EAAWM,UACpBN,EAAWM,UAAUJ,EAAKhkC,KAAMikC,EAAKjkC,OAbrB3C,EAcC2mC,EAAKhkC,KAdEc,EAcImjC,EAAKjkC,KAbjCkkC,EAAS7mC,EAAEymC,EAAWloC,MACtBuoC,EAASrjC,EAAEgjC,EAAWloC,MAEN,iBAAXsoC,GAAyC,iBAAXC,GAC9BtjC,EAAAA,GAAAA,IAAcqjC,EAAQC,IAG1BhjC,EAAAA,GAAAA,IAAW+iC,EAAQC,KAQVJ,CACpB,IAKIR,EAAY,CACZ,IAAMc,EAAiBT,EAAU5uB,QAAO,SAACmtB,G,OAAQoB,EAAW/tB,SAAS2sB,EAAIniC,KAAKzE,G,IACxE+oC,EAAoBV,EAAU5uB,QAAO,SAACmtB,G,OAASoB,EAAW/tB,SAAS2sB,EAAIniC,KAAKzE,G,IAIlF,OAFyB,GAAI8oC,GAAAA,OAAgB,GAAGC,GAGpD,CACI,OAAOV,CAEf,GAAG,CAACJ,EAAgBjB,EAAeU,EAAMD,EAASO,IAEdt1B,EAAAA,IAAAA,EAAAA,EAAAA,UAAmC01B,KAAAA,GAAhEY,EAA6Bt2B,EAAAA,GAAjBu2B,EAAiBv2B,EAAAA,GAE9Bw2B,EAAa,SAACC,GAChB,IAAMC,EACFnB,IAAmBkB,GAAwC,cAAlBnC,EAAAA,aAAAA,YAI7CkB,EAAkBiB,GAClBhB,EAAiBiB,EACrB,EAYA,OAVA1rC,EAAAA,EAAAA,YAAU,WACNwqC,EAAkBP,GAClBQ,EAAiBR,EAAoBC,QAAAA,EAAAA,YAAkD,KAC3F,GAAG,CAACD,EAAmBC,KAEvByB,EAAAA,GAAAA,KAAqB,WACjB,IAAMC,EAAUlB,IAChBa,EAAcK,EAClB,GAAG,CAAC7B,EAASC,EAAMO,EAAgBjB,EAAegB,IAG9C,gCACKtnC,EACG,gBAACqM,GAAoBA,CAACG,MAAO,UAE7B,gBAAC44B,GAAAA,GAAAA,CAAgBtoC,IAAKA,EAAK2C,eAAcM,EAAQwH,aAAYmjB,GAAehpB,GACxE,gBAACo7B,QAAAA,KACG,gBAACuI,GAAAA,CAAgB3oB,SAAU0qB,GACtBL,EAAQ/yB,KAAI,SAACmyB,G,OACV,gBAACb,GAAAA,GAAAA,CACGpkC,MAAOilC,EAAOjlC,MACdgT,IAAKiyB,EAAOxmC,KACZF,eACI0mC,EAAOpmC,OACD,GAAiB,OAAdomC,EAAOpmC,OAAO,WACjB,GAA+B,QAA5BkW,EAAAA,GAAAA,GAAakwB,EAAOM,QAAQ,YAEpCN,EAAOxmC,OAAS4nC,GAAkB,CACnC,YACsB,cAAlBjB,EAA4C,YAAc,eAGjEH,EAAO0C,SACJ,gBAACzC,GAAAA,CACGD,OAAQA,EACRE,oBAAqBF,EAAOxmC,OAAS4nC,EACrCjB,cAAeA,QAAAA,EAAAA,YACfC,kBAAmBiC,KAGtBrC,EAAOO,YACJ,gBAACb,GAAAA,KACIM,EAAOM,Q,MAQpC,gBAAC9qB,QAAAA,KACI2sB,EAAWt0B,KAAI,SAACkyB,EAAK4C,GAClB,OACI,gBAACvD,GAAAA,CACGrxB,IAAKgyB,EAAIniC,KAAKzE,GACd8H,OAAQ+/B,EACRzqB,SAAU2qB,EACV/iC,UAAW4hC,EAAI5hC,UACf7E,eAAcymC,EAAInmC,QAEjBgnC,EAAQ/yB,KAAI,SAACmyB,EAAQ4C,G,OAClB,gBAAC9C,GAAAA,CACG/xB,IAAK,GAAkBgyB,OAAfC,EAAOxmC,KAAK,KAAe,OAAZumC,EAAIniC,KAAKzE,GAAG,KACnC4mC,IAAKA,EACLC,OAAQA,EACRpmC,OACImmC,EAAInmC,OACE,GAAiBkW,OAAdiwB,EAAInmC,OAAO,KAA+B,QAA5BkW,EAAAA,GAAAA,GAAakwB,EAAOM,cACrC5d,EAEV8c,WAAyB,IAAbmD,EACZrD,cAA+B,IAAhBsD,EACfnD,UAAWkD,IAAaR,EAAWpyB,OAAS,EAC5CwvB,aAAcqD,IAAgBhC,EAAQ7wB,OAAS,G,IAKnE,MAMxB,I,8eAEJ4wB,GAAUp/B,YAAc,YC3XxB,IAUA,GAVqB,Y,IAAGP,EAAAA,EAAAA,KAAM2I,EAAAA,EAAAA,MAAO1I,EAAAA,EAAAA,OAAQlG,EAAAA,EAAAA,MAAU6pB,EAAAA,GAAAA,EAAAA,CAA/B5jB,OAAM2I,QAAO1I,SAAQlG,U,OACzC,gBAAC8pB,GAAAA,E,uUAAOA,CAAAA,CAACC,QAAQ,eAAe7jB,OAAQA,EAAQlG,MAAOA,EAAO4O,MAAOA,EAAO3I,KAAMA,GAAU4jB,GACxF,gBAACie,UAAAA,CACG7hC,KAAMA,EACNmkB,UAAU,4FACV2d,OAAO,qC,ECdnB,M,sjJCwDA,IAAMC,GAAgB5oC,EAAAA,GAAOwB,OAAM,MACd,SAACJ,G,OACdA,EAAMunB,gBAAkB,EAAIvnB,EAAMynC,eAAiB,GAAqBh+B,OAAlBA,EAAOC,QAAQ,KAAkB,OAAfD,EAAOC,QAAQ,QAAQD,EAAOC,O,GACtFhJ,EAAM+F,KAAKQ,WACXvG,EAAMC,QAAQ0F,MACzB3F,EAAMC,QAAQyF,MAOR8C,GACF,SAAClJ,G,OAAWA,EAAMunB,gBAAkB,OAAStoB,EAAU4B,K,IACrD,SAACb,G,OAAWA,EAAMunB,gBAAkB,OAAStoB,EAAUU,M,IAC3D,SAACK,G,OAAWA,EAAMK,SAAW,MAAQ,G,IAY9CqnC,GAAiB9oC,EAAAA,GAAOC,IAAG,KACT6B,EAAMC,QAAQ0F,MACd3F,EAAMkH,SAASC,gBAClB4B,EAAOC,QACVC,EAGAX,EAAQsC,SACT,SAACtL,G,IAAUA,E,OAAc,QAAdA,EAAAA,EAAMsE,gBAANtE,IAAAA,EAAAA,EAAkB,MAAK,IACtC,SAACA,G,OAAUA,EAAMR,K,IAGxBmnB,IAAiB/nB,EAAAA,EAAAA,IAAOgoB,GAAPhoB,CAAoBgoB,MAiBrC+gB,IAAiB/oC,EAAAA,EAAAA,IAAO+nB,GAAP/nB,CAAqB+nB,MAErB,SAAC3mB,G,OAAWA,EAAM4nC,sBAAwB5+B,EAAQjJ,MAAQ,C,IAK3E8nC,IAAcjpC,EAAAA,EAAAA,IAAO+nB,GAAP/nB,CAAqB+nB,MAEnB,SAAC3mB,G,OAAWA,EAAM8nC,iBAAmB9+B,EAAQnI,MAAQmI,EAAQjJ,K,IAC1D,SAACC,G,OACdA,EAAM8nC,iBAAmB,EAAI9nC,EAAM4nC,sBAAwB5+B,EAAQnI,MAAQmI,EAAQjJ,K,IAIxE,SAACC,G,OAAWA,EAAM8nC,iBAAmB,IAAM,G,IAI5DC,GAAWnpC,EAAAA,GAAOiB,EAAC,KACRZ,EAAU4B,MACdH,EAAM+F,KAAKS,gBACJ8B,EAAQ9J,SAGtB4M,IAAoBlN,EAAAA,EAAAA,IAAOoN,EAAPpN,CAAkBoN,KAC7BhD,EAAQrJ,OACCe,EAAM+F,KAAKU,gBACPzG,EAAM+F,KAAKW,oBACdqC,EAAOC,QAAWD,EAAOC,SAQ5Cs+B,GAAqBppC,EAAAA,GAAOC,IAAG,MACnB,SAACmB,G,OAAUA,EAAMioC,S,IAElB,SAACjoC,G,OAAWA,EAAM8nC,iBAAmB9+B,EAAQnI,MAAQmI,EAAQrJ,M,GAAWqJ,EAAQrJ,QAG3FuoC,GAAkBtpC,EAAAA,GAAOyS,GAAE,MAE3B82B,IAAkBvpC,EAAAA,EAAAA,IAAOwpC,EAAAA,GAAPxpC,CAAewpC,MAWjCC,IAAqBzpC,EAAAA,EAAAA,IAAO0pC,GAAP1pC,CAAmB0pC,MAItB,SAACtoC,G,OAAWA,EAAMuoC,kBAAoB,SAAW,C,IACpD,SAACvoC,G,OAAWA,EAAMuoC,kBAAoB,MAAQ,C,IAQ7Dp3B,GAAiBvS,EAAAA,GAAOqS,GAAE,KACbjI,EAAQsC,SACL,SAACtL,G,OAAWA,EAAM8nC,iBAAmB9+B,EAAQnI,MAAQmI,EAAQsC,O,IAG7E,SAACtL,G,OACCA,EAAMwoC,YACN,0KAO+B,OAAjBxoC,EAAMwoC,WAAW,W,IAQjCC,IAAqB7pC,EAAAA,EAAAA,IAAOkR,GAAPlR,CAAmBkR,MAChC,SAAC9P,G,MAA6B,WAAlBA,EAAM0E,QAAuB,OAASsE,EAAQsC,O,IAalEo9B,GAAqB,SAACC,GACxB,IAAMC,EAAmB,gBAAoD,QAApCr0B,EAAAA,GAAAA,GAAao0B,EAASE,eACzDC,EAAwBhtC,SAAS4C,eAAekqC,GAChDG,EAA2B,GAC7BC,EAAQ,EAEZL,EAAS9gB,QAAQuJ,SAAQ,SAAC9Z,GACtByxB,EAAcryB,KAAKY,EAAKb,UACpBa,EAAKb,WACLuyB,GAAS,EAEjB,IAEA,IAAIC,GAAa,EACjB,GAAIH,EACA,IAAK,IAAIxlB,EAAI,EAAGylB,EAAcv0B,OAAS8O,EAAGA,GAAK,EAC3C,GAAU,IAANA,EACA2lB,EAAaF,EAAc,OACxB,CACH,GAAIE,IAAeF,EAAczlB,GAAI,CAEjCwlB,EAAsB7Q,eAAgB,EACtC,KACJ,CAAWgR,GAAcA,IAAeF,EAAczlB,GAElDwlB,EAAsB7Q,eAAgB,EAC9BgR,GAAcA,IAAeF,EAAczlB,KAEnDwlB,EAAsB7Q,eAAgB,EAE9C,CAIJ6Q,IAEAA,EAAsBl3B,QAAUo3B,IAAUD,EAAcv0B,OAEhE,EAEM00B,GAAa,Y,IACf7qC,EAAAA,EAAAA,OACAsqC,EAAAA,EAAAA,SACAQ,EAAAA,EAAAA,oBACAC,EAAAA,EAAAA,eACAxzB,EAAAA,EAAAA,YACAgyB,EAAAA,EAAAA,sBACAljC,EAAAA,EAAAA,QAEM2kC,EAAeV,EAAS9gB,QAAQxQ,QAAO,SAACC,GAC1C,OAAI1B,EAAY0zB,WAAW,KAChBhyB,EAAKrZ,KAELqZ,EAAKrZ,KAAK2Z,cAAcC,SAASjC,EAAYgC,cAE5D,IAEMkwB,EAA+B,WAAZpjC,EAMzB,OAJApJ,EAAAA,EAAAA,YAAU,WACNotC,GAAmBC,EACvB,GAAG,CAACA,IAGA,gCACI,gBAACx3B,GAAcA,CAAC22B,iBAAkBA,GAC9B,gBAACD,GAAAA,CACGD,sBAAuBA,EACvBvpC,OAAQ,GAAwCkW,OAArClW,EAAO,gCAAkE,QAApCkW,EAAAA,GAAAA,GAAao0B,EAASE,eACtEjrC,GAAI,gBAAoD,QAApC2W,EAAAA,GAAAA,GAAao0B,EAASE,eAC1CnrC,MAAO,GACHkqC,OADME,EAAmB,aAAe,OAAO,KAElD,OADGF,EAAwBe,EAASE,aAAe,IAEpD5qC,KAAM,eAAmD,QAApCsW,EAAAA,GAAAA,GAAao0B,EAASE,eAC3C3qC,SAAU,SAACZ,G,OAAM6rC,EAAoB7rC,E,EACrCooB,WAAAA,EACAva,QAAAA,EACA28B,iBAAkBA,KAGzBuB,EAAa70B,OAAS,EACnB60B,EACKrD,MAAK,SAACtmC,EAAayD,G,OAAgBzD,EAAEzB,KAAKuZ,OAAOpU,cAAcD,EAAElF,KAAKuZ,O,IACtElF,KAAI,SAACgF,G,OACF,gBAACnG,GAAcA,CACXqB,IAAK8E,EAAK1Z,KAAM2W,EAAAA,GAAAA,GAAa+C,EAAKrZ,MAClCuqC,WAAYlxB,EAAKkxB,WACjBV,iBAAkBA,GAElB,gBAACH,GAAAA,CACGtpC,OAAQ,GAAoCkW,OAAjClW,EAAO,4BAAkD,QAAxBkW,EAAAA,GAAAA,GAAa+C,EAAKrZ,OAC9DL,GAAI0Z,EAAK1Z,KAAM2W,EAAAA,GAAAA,GAAa+C,EAAKrZ,MACjCP,MAAO4Z,EAAKrZ,KACZA,KAAM,eAAmD,QAApCsW,EAAAA,GAAAA,GAAao0B,EAASE,eAC3C3qC,SAAU,W,OAAMkrC,GAAe70B,EAAAA,GAAAA,GAAa+C,EAAKrZ,MAAO0qC,EAASE,a,EACjEj3B,QAAS0F,EAAKb,SACdmxB,sBAAuBA,EACvBliB,WAAAA,EACAva,QAAAA,I,IAKhB,gBAAC8F,KAAAA,KACG,gBAAC82B,GAAAA,CAAShqC,eAAc,GAAU,OAAPM,EAAO,6BAA2B,sBAKjF,EAeMkrC,GAA6D,Y,IAC/DlnC,EAAAA,EAAAA,KACAhE,EAAAA,EAAAA,OACAuyB,EAAAA,EAAAA,QACA4Y,EAAAA,EAAAA,kBACAj7B,EAAAA,EAAAA,mBACAk7B,EAAAA,EAAAA,UACAxB,EAAAA,EAAAA,UACA3jC,EAAAA,EAAAA,SACAI,EAAAA,EAAAA,QACAlF,EAAAA,EAAAA,MAEsCnD,EAAAA,GAAAA,EAAAA,SAAe,OAA9CuZ,EAA+BvZ,EAAAA,GAAlBwZ,EAAkBxZ,EAAAA,GACVA,EAAAA,GAAAA,EAAAA,UAAe,MAApCqtC,EAAqBrtC,EAAAA,GAAZstC,EAAYttC,EAAAA,GAEtB6Z,GAAiB/Z,EAAAA,EAAAA,QAAO,MACxBytC,GAAcztC,EAAAA,EAAAA,WAEpBhB,EAAAA,GAAAA,GAAgByuC,GAAa,WACzB,OAAQllC,GACJ,IAAK,SACL,IAAK,SACD6J,IACA,MACJ,IAAK,SACDi7B,IAEZ,IAEA,IAIMv5B,EAAoB,WACtB4F,EAAe,IAEfK,EAAexa,QAAQkT,OAC3B,EAEMw6B,EAAiB,SAACS,EAA0BhB,GAC9C,IAAMiB,EAAY,GAAGznC,GAErBynC,EAAS1Y,SAAQ,SAACuX,EAAoBoB,GAC9BpB,EAASE,eAAiBA,IAC1BiB,EAASC,GAAeliB,QAAQuJ,SAAQ,SAAC9Z,IACjC/C,EAAAA,GAAAA,GAAa+C,EAAKrZ,QAAU4rC,IAC5BvyB,EAAKb,UAAYa,EAAKb,SACtBma,EAAQkZ,GACRH,GAAS,GAEjB,IACAjB,GAAmB,MAAKC,IAEhC,GACJ,EAiCA,OArBArtC,EAAAA,EAAAA,YAAU,W,IACGukB,EAAT,SAA2BviB,GACT,WAAVA,EAAEkV,MACc,WAAZ9N,EACA8kC,IAEK1tC,SAASgkB,gBAAkB5J,EAAexa,SAAWwa,EAAexa,QAAQQ,MAAMsY,OACvFvE,IAEA1B,IAGZ,EAIA,OAFAzS,SAASE,iBAAiB,UAAW6jB,GAE9B,WACH/jB,SAASC,oBAAoB,UAAW8jB,EAC5C,CACJ,GAAG,CAACtR,EAAoBi7B,EAAmB9kC,IAGvC,gBAACgjC,GAAAA,CACG3pC,eAAc,GAAU,OAAPM,EAAO,2BACxBiG,SAAUA,EACVlJ,IAAKwuC,EACL9B,iBAA8B,WAAZpjC,EAClBlF,MAAmB,WAAZkF,EAAuBlF,EAAQ,IAErCiqC,GACG,gBAAChB,GAAkBA,CACfpqC,OAAQ,GAAU,OAAPA,EAAO,iBAClBjD,IAAK8a,EACLnG,YAAa,YACbC,aAAc,SAAC1S,G,OAvEJ,SAACA,GACxBuY,EAAevY,EAAE7B,OAAOS,MAC5B,CAqEqC8tC,CAAmB1sC,E,EACxC2S,kBAAmBA,EACnBC,WAAY0F,EACZrG,cAAc,EACdxR,eAAc,GAAU,OAAPM,EAAO,yBACxB+R,eAA4B,WAAZ1L,EAChB2L,cAA2B,WAAZ3L,EACfA,QAASA,IAGjB,gBAACsjC,GAAAA,CAAmBC,UAAWA,EAAWH,iBAA8B,WAAZpjC,GACvDrC,GACGA,EAAKiQ,KAAI,SAACq2B,EAAoBj0B,G,OAC1B,gBAACwzB,GAAAA,CAAgB11B,IAAKm2B,EAASE,cAC3B,gBAACK,GAAAA,CACG7qC,OAAQA,EACRsqC,SAAUA,EACVQ,oBAAqB,SAAC7rC,G,OA7DtB,SAACA,EAAwCysC,GACjE,IAAMD,EAAY,GAAGznC,GACrBynC,EAASC,GAAeliB,QAAQuJ,SAAQ,SAAC9Z,GACrCA,EAAKb,SAAWnZ,EAAE7B,OAAOmW,OAC7B,IAEAgf,EAAQkZ,GACRH,GAAS,EACb,CAqDwDR,CAAoB7rC,EAAGoX,E,EACnD00B,eAAgBA,EAChBxzB,YAAaA,EACbgyB,uBAAuBvlC,aAAAA,EAAAA,EAAMmS,QAAS,EACtC9P,QAASA,I,KAKhB,WAAZA,GACG,gBAACoH,GAAiBA,CAAClB,QAAS,iBACxB,gBAACmgB,EAAAA,GAAaA,CAAC3f,MAAOyD,EAAM1N,WACxB,gBAAC0K,EAAYA,CACTxN,OAAQ,GAAU,OAAPA,EAAO,gCAClBP,KAAM,SACNwC,QAAS,W,OAAMiO,G,GAClB,WAIL,gBAAC9C,EAAMA,CACHpN,OAAQ,GAAU,OAAPA,EAAO,+BAClBP,KAAM,SACNwC,QAAS,W,OAAMkpC,G,EACfnpC,UAAWqpC,GACd,UAOrB,EAEMO,GAAsB,YAEfC,GAAmB7tC,EAAAA,YAC5B,WAcIjB,G,IAZI+uC,EAAAA,EAAAA,QACA9rC,EAAAA,EAAAA,OACAgC,EAAAA,EAAAA,SACAmpC,EAAAA,EAAAA,kBACAj7B,EAAAA,EAAAA,mBAAAA,EAAAA,EACAk7B,UAAAA,OAAAA,IAAY,SACZxB,UAAAA,OAAAA,IAAY,YACZ3jC,EAAAA,EAAAA,SACA8lC,EAAAA,EAAAA,QACA1lC,EAAAA,EAAAA,QACG1E,EAAAA,GAAAA,EAAAA,CAVHmqC,UACA9rC,SACAgC,WACAmpC,oBACAj7B,qBACAk7B,YACAxB,YACA3jC,WACA8lC,UACA1lC,YAKoB4L,EAAAA,IAAAA,EAAAA,EAAAA,UAAS65B,GAAAA,GAA1B9nC,EAAiBiO,EAAAA,GAAXsgB,EAAWtgB,EAAAA,GAC0BA,EAAAA,IAAAA,EAAAA,EAAAA,WAAS,MAApDi4B,EAA2Cj4B,EAAAA,GAAxB+5B,EAAwB/5B,EAAAA,GACRA,EAAAA,IAAAA,EAAAA,EAAAA,UAAS25B,IAAAA,GAA5CK,EAAmCh6B,EAAAA,GAApBi6B,EAAoBj6B,EAAAA,GACEA,EAAAA,IAAAA,EAAAA,EAAAA,UAAS,MAA9Ck6B,EAAqCl6B,EAAAA,GAArBm6B,EAAqBn6B,EAAAA,GACtCiX,EAA8B,WAAZ7iB,EAElBgmC,GAAevuC,EAAAA,EAAAA,QAAuB,OAC5CwuC,EAAAA,EAAAA,qBAAkEvvC,GAAK,W,OAAMsvC,EAAahvC,O,IAE1F,IAAMkvC,EAAuB,WACzBP,GAAsB9B,EAC1B,EAOMsC,GAAejrB,EAAAA,EAAAA,cAAY,WAG7BgR,GAFa,W,OAAMriB,G,IAGnB87B,GAAqB,EACzB,GAAG,CAAC97B,IAEEu8B,EAAU,SAAC9qC,GACb,OAAKoqC,EAIEA,EAAQpqC,GAHJ,IAIf,GAEA1E,EAAAA,EAAAA,YAAU,WACNs1B,EAAQuZ,EACZ,GAAG,CAACA,KAEJ7uC,EAAAA,EAAAA,YAAU,WACN,GAAK+G,EAAL,CAIA,IAAMof,EAAQpf,EAAK0oC,SAAQ,SAACpC,G,OAAaA,EAAS9gB,O,IAC5CmjB,EAAiBvpB,EAAMjN,OACvBy2B,EAAoBxpB,EAAMpK,QAAO,SAACC,G,OAASA,EAAKb,Q,IAAUjC,OAE1D02B,EACoB,IAAtBD,EACMhB,GACA,GAA2Be,OAAxBC,EAAkB,QAA4BD,OAAtBA,EAAe,SAAuC,OAAb,IAAnBA,EAAuB,GAAK,KAEvFT,EAAiBW,EAXjB,CAYJ,GAAG,CAAC7oC,IAEJ,IAAM8oC,EAAuB,W,IACRT,EAAXU,EAAWV,SAAqB,QAArBA,EAAAA,EAAchvC,eAAdgvC,IAAAA,OAAAA,EAAAA,EAAuBtpC,SAAS,GAAGiqC,YACpDZ,EAAkBW,QAAAA,EAAY,EAClC,EAYA,OAVA9vC,EAAAA,EAAAA,YAAU,WAKN,OAJA6vC,IAEAvvC,OAAOI,iBAAiB,SAAUmvC,GAE3B,WACHvvC,OAAOG,oBAAoB,SAAUovC,EACzC,CACJ,GAAG,IAGC,gBAACtsC,MAAAA,GAAAA,CAAIzD,IAAKsvC,GAAkB1qC,GACvBoqC,GACG,gBAACU,EAAAA,CACGzsC,OAAQ,GAAU,OAAPA,EAAO,yCAClBiC,QAAS,W,OAAMsqC,G,KAGrBR,GACE,gBAAC5C,GAAAA,CACG1pC,KAAM,SACNwC,QAASsqC,EACTnD,eAAgBc,EAChBxqC,eAAc,GAAU,OAAPM,EAAO,yCACxBgC,SAAUA,EACVknB,gBAAiBA,GAEhB+iB,EAAe,IACf/iB,EACG,gBAAC8gB,GAAAA,CAAmBE,kBAAmBA,IAEvC,gBAACJ,GAAAA,CAAgB1iC,KAAM/E,EAAM+F,KAAKG,UAAWpH,MAAO,MAAOkG,OAAQ,SAI9E6iC,GACG,gBAACgB,GAAAA,CACGlnC,KAAMA,EACNhE,OAAQA,EACRorC,UAAWA,EACXxB,UAAWA,EACX3jC,SAAUA,EACVssB,QAASA,EACTriB,mBAAoBs8B,EACpBrB,kBA1FI,WAChBA,EAAkBnnC,GAClBgoC,GAAqB,EACzB,EAwFgB3lC,QAASA,EACTlF,MAAOgrC,EAAiB,GAAkB,OAAfA,EAAe,MAAM,KAKpE,I,q6BAEJN,GAAiBlkC,YAAc,mBChlB/B,IAAMslC,GAAoB1sC,EAAAA,GAAOC,IAAG,MAS9B6S,GAAc9S,EAAAA,GAAOlB,MAAK,MACV,SAACsC,G,OAAWA,EAAMunB,gBAAkB,EAAIve,EAAQyc,Q,GACnDvc,GACF,SAAClJ,G,OAAWA,EAAMunB,gBAAkBtoB,EAAUqM,QAAUrM,EAAU4B,K,IAChE,SAACb,G,OAAWA,EAAM0lB,UAAY,MAAQ,K,IACtC,SAAC1lB,G,OAAWA,EAAMunB,gBAAkB,SAAWtoB,EAAUU,M,IACvD,SAACK,G,OAAWA,EAAMunB,gBAAkB,MAAQ,C,IAEpD,SAACvnB,G,OACNA,EAAMhC,QAAU0C,EAAMC,QAAQC,IAAMZ,EAAMunB,gBAAkB7mB,EAAMC,QAAQyF,MAAQ1F,EAAM+F,KAAKO,U,IACtF,SAAChH,G,OAAWA,EAAMK,SAAW,MAAQ,G,IAGvCkrC,GAAclvC,EAAAA,YACvB,WAeIjB,G,IAbI+uC,EAAAA,EAAAA,QACA9rC,EAAAA,EAAAA,OACAX,EAAAA,EAAAA,MACA2C,EAAAA,EAAAA,SACAmpC,EAAAA,EAAAA,kBACAj7B,EAAAA,EAAAA,mBAAAA,EAAAA,EACAk7B,UAAAA,OAAAA,IAAY,SACZxB,UAAAA,OAAAA,IAAY,YACZ3jC,EAAAA,EAAAA,SACAohB,EAAAA,EAAAA,UAAAA,EAAAA,EACAhhB,QAAAA,OAAAA,IAAU,aACP1E,EAAAA,GAAAA,EAAAA,CAXHmqC,UACA9rC,SACAX,QACA2C,WACAmpC,oBACAj7B,qBACAk7B,YACAxB,YACA3jC,WACAohB,YACAhhB,YAKE6iB,EAA8B,WAAZ7iB,EAExB,OACI,gBAAC4mC,G,uUAAAA,CAAAA,CAAkBlwC,IAAKA,GAAS4E,GAC7B,gBAAC0R,GAAWA,CAACrR,SAAUA,EAAUqlB,UAAWA,EAAW6B,gBAAiBA,GACnE7pB,GAEL,gBAACwsC,GAAgBA,CACbC,QAASA,EACT9rC,OAAQA,EACRmrC,kBAAmBA,EACnBj7B,mBAAoBA,EACpBlO,SAAUA,EACV4nC,UAAWA,EACX3jC,SAAUA,EACVmlC,UAAWA,EACX/kC,QAASA,IAIzB,I,u5KAEJ6mC,GAAYvlC,YAAc,cCjE1B,I,GAIMwlC,GAAgC5sC,EAAAA,GAAOC,IAAG,MAC1C,SAACmB,G,OAAUA,EAAM23B,MAAQ,aAAwB,OAAX33B,EAAM23B,KAAK,I,IACjD,SAAC33B,G,OAAUA,EAAM6a,MAAQ,SAAoB,OAAX7a,EAAM6a,KAAK,M,IAC7C,SAAC7a,G,OAAUA,EAAM4a,KAAO,QAAkB,OAAV5a,EAAM4a,IAAI,M,GALzB,IAUCla,EAAMkH,SAASC,gBAXf,EADD,IAgBF4B,EAAOC,QAEVC,EACCT,GAGbuiC,GAAO7sC,EAAAA,GAAOqS,GAAE,KAMTvQ,EAAMkH,SAASI,sBAQtB0jC,GAAa9sC,EAAAA,GAAOwB,OAAM,KAQb8I,GACb,SAAClJ,G,OACCA,EAAM2rC,SACNC,EAAAA,EAAAA,IAAGA,K,GAIWlrC,EAAMkH,SAASE,uBAE/B,SAAC9H,G,OACCA,EAAMqT,aACNu4B,EAAAA,EAAAA,IAAGA,KAEelrC,EAAMkH,SAASG,yBAEXrH,EAAMkH,SAASG,yB,IAKvC8jC,GAAYjtC,EAAAA,GAAOwB,OAAM,KAUTM,EAAMkH,SAASE,uBAGf0H,EAAAA,EAAAA,IAAO,MAAO9O,EAAMkH,SAASE,wBAI7CgkC,IAAaltC,EAAAA,EAAAA,IAAOitC,GAAPjtC,CAAOitC,MAEpBE,IAAantC,EAAAA,EAAAA,IAAOitC,GAAPjtC,CAAOitC,MAEpB3Y,IAAoBt0B,EAAAA,EAAAA,IAAOu0B,EAAAA,GAAPv0B,CAAkBu0B,MAItCF,IAAqBr0B,EAAAA,EAAAA,IAAOuN,EAAAA,GAAPvN,CAAmBuN,MAIxC6/B,IAAaptC,EAAAA,EAAAA,IAAOiN,EAAPjN,CAAmBiN,MAUhCogC,GAAmBrtC,EAAAA,GAAO4mB,KAAI,KAEjBtc,EACFjK,EAAU4B,OAIrBqrC,GAAiBttC,EAAAA,GAAOC,IAAG,MAI3BstC,GAAavtC,EAAAA,GAAOqkB,GAAE,MAItBmpB,IAAYxtC,EAAAA,EAAAA,IAAOutC,GAAPvtC,CAAOutC,O,SAEpBE,G,+BAAAA,KAAAA,GAAAA,CAAAA,IAKL,IAAMC,GAAQ,Y,IACVC,EAAAA,EAAAA,YACAC,EAAAA,EAAAA,YACAC,EAAAA,EAAAA,aACApuC,EAAAA,EAAAA,OAWMquC,EAAc,WAEhB,IADA,IAAMrrB,EAAM,GACHiC,GAAK,EAAGA,EAAI,GAAIA,IACrBjC,EAAI3K,KAAK61B,EAAcjpB,GAE3B,OAAOjC,CACX,CANoB,GAOdsrB,EAAYJ,EAAc,EAEhC,OACI,gBAACH,GAAAA,CAAUruC,eAAc,GAAU,OAAPM,EAAO,YAC9BquC,EAAYp6B,KAAI,SAACgF,GACd,IAAMjE,EAAqC,iBAAjBo5B,GAA6Bn1B,IAASm1B,EAChE,OACI,gBAAChB,GAAAA,CAAKj5B,IAAK,SAAc,OAAL8E,IAChB,gBAACo0B,GAAAA,CACGprC,QAAS,W,OAAMksC,EAAYl1B,E,EAC3Bq0B,OAAQr0B,EAAOi1B,GAAej1B,EAAOq1B,EACrCt5B,WAAYA,EACZtV,eAAc,GAAiCuZ,OAA9BjZ,EAAO,yBAA4B,OAALiZ,GAC/Cs1B,gBAAev5B,EACfvV,KAAK,UAEJwZ,GAIjB,IAGZ,EAEMu1B,GAAS,YAaX,I,IAZAC,EAAAA,EAAAA,aACAC,EAAAA,EAAAA,cACAC,EAAAA,EAAAA,eACA3uC,EAAAA,EAAAA,OAOM4uC,EAAe,GAEZ3pB,EAAI,EAAGA,EAAI,GAAIA,IACpB2pB,EAAav2B,KAAKkjB,OAAQ2C,MAAMjZ,GAAGmZ,OAAO,QAG9C,OACI,gBAAC0P,GAAAA,CAAWpuC,eAAc,GAAU,OAAPM,EAAO,aAC/B4uC,EAAa36B,KAAI,SAAC46B,EAAW5pB,GAC1B,IAAMjQ,EAAsC,iBAAlB05B,GAA8BzpB,IAAMypB,GAAiBC,EAC/E,OACI,gBAACvB,GAAAA,CAAKj5B,IAAK,UAAY,OAAF8Q,IACjB,gBAACooB,GAAAA,CACG76B,UAAWwC,EACX/S,QAAS,W,OAAMwsC,EAAaxpB,E,EAC5BjQ,WAAYA,EACZtV,eAAc,GAAmCulB,OAAhCjlB,EAAO,2BAA2B,OAAFilB,GACjDspB,gBAAev5B,EACfvV,KAAK,UAEJovC,GAIjB,IAGZ,EAIaC,GAA0B9wC,EAAAA,YACnC,WAAiEjB,G,QAA9DwhC,KAAAA,OAAAA,IAAO,aAAMwQ,WAAAA,OAAAA,IAAa,SAAMC,EAAAA,EAAAA,SAAUhvC,EAAAA,EAAAA,OAAW2B,EAAAA,GAAAA,EAAAA,CAArD48B,OAAawQ,aAAmBC,WAAUhvC,WAIDiS,EAAAA,IAAAA,EAAAA,EAAAA,UAASssB,GAAAA,GAA1C6P,EAAiCn8B,EAAAA,GAAnBg9B,EAAmBh9B,EAAAA,GACEA,EAAAA,IAAAA,EAAAA,EAAAA,UAAS88B,GAAAA,GAA5CL,EAAmCz8B,EAAAA,GAApBi9B,EAAoBj9B,EAAAA,GAIZA,EAAAA,IAAAA,EAAAA,EAAAA,UAASm8B,GAAgB7S,OAAQgD,QAAI,GAA5D4Q,EAAuBl9B,EAAAA,GAAdm9B,EAAcn9B,EAAAA,GACcA,EAAAA,IAAAA,EAAAA,EAAAA,UAAoC,GAA3BylB,KAAKwL,MAAMiM,EAAU,KAAM,GAAzEE,EAAqCp9B,EAAAA,GAArBq9B,EAAqBr9B,EAAAA,GACZA,EAAAA,IAAAA,EAAAA,EAAAA,UAAS,SAADA,GAAjCs9B,EAAyBt9B,EAAAA,GAAfu9B,EAAev9B,EAAAA,GAuChC,OACI,gBAACk7B,GAAAA,GAAAA,CAA8BpwC,IAAKA,EAAK2C,eAAcM,GAAY2B,GAC/D,gBAACksC,GAAAA,KACG,gBAACJ,GAAAA,CAAWxrC,QA3BJ,WAChB,IAAMwtC,EACe,SAAbF,EACOJ,EAAU,GAEdA,EAAU,EAGrBG,EAA6C,GAA3B5X,KAAKwL,MAAMuM,EAAU,KACvCL,EAAWK,EACf,EAiB8C/vC,eAAc,GAAU,OAAPM,EAAO,iBAAgBP,KAAK,UAC3E,gBAACo1B,GAAiBA,CAAC9kB,MAAM,WAAW5O,MAAO,MAAOkG,OAAQ,MAAOD,KAAM/E,EAAM+F,KAAKG,aAExE,UAAbgnC,GACG,gBAAC5B,GAAAA,CACG3tC,OAAQ,GAAU,OAAPA,EAAO,wBAClBiC,QAAS,W,OAAMutC,EAAY,O,EAC3BxiC,KAAMpM,EAAU4B,MAChB/C,KAAK,UAEJ0vC,GAGK,SAAbI,GACG,gBAAC3B,GAAAA,CAAiBluC,eAAc,GAAU,OAAPM,EAAO,kBAAiB,GAAqB0vC,OAAlBL,EAAe,KACzEA,OAvEb,IAsEgG,KAEtF,OADGA,EAAiB,IAGzB,gBAAC3B,GAAAA,CAAWzrC,QAjCJ,WAChB,IAAMwtC,EACe,SAAbF,EACOJ,EAAU,GAEdA,EAAU,EAGrBG,EAA6C,GAA3B5X,KAAKwL,MAAMuM,EAAU,KACvCL,EAAWK,EACf,EAuB8C/vC,eAAc,GAAU,OAAPM,EAAO,iBAAgBP,KAAK,UAC3E,gBAACm1B,GAAkBA,CAAC7kB,MAAM,OAAO5O,MAAO,MAAOkG,OAAQ,MAAOD,KAAM/E,EAAM+F,KAAKG,cAGzE,UAAbgnC,GACG,gBAACf,GAAAA,CACGxuC,OAAQA,EACRyuC,aA1DK,SAACM,GAClBG,EAAiBH,GACjBE,EAAgBE,GAChBH,EAAS,CAAEvvC,KAAM,iBAAkBuE,KAAM,CAAE+qC,WAAAA,EAAYxQ,KAAM4Q,IACjE,EAuDgBT,cAAeA,EACfC,eAAgBP,IAAiBe,IAG3B,SAAbI,GACG,gBAACtB,GAAAA,CACGjuC,OAAQA,EACRkuC,YAAamB,EACblB,YA1EI,SAAC5P,GACjB6Q,EAAW7Q,GACX+Q,EAA0C,GAAxB5X,KAAKwL,MAAM3E,EAAO,KACpC2Q,EAAiB,MACjBM,EAAY,QAChB,EAsEgBpB,aAAcA,IAKlC,IAEJU,GAAwBnnC,YAAc,0BAwCtC,IAAMgoC,GAAyBpvC,EAAAA,GAAOwB,OAAM,MAE7B,SAACJ,G,OAAWA,EAAMof,OAAS,IAAM,C,IAE5B,SAACpf,G,OAAWA,EAAMhC,QAAU0C,EAAMC,QAAQC,IAAMF,EAAM+F,KAAKQ,U,GAC1DwC,EAAOxC,WACJvG,EAAMC,QAAQ0F,MACzB3F,EAAMC,QAAQyF,OAWCoJ,EAAAA,EAAAA,IAAO,MAAO9O,EAAMC,QAAQ0F,QACvCsB,EAAAA,EAAAA,IAAe,MAAOjH,EAAMC,QAAQyF,QAI/C6nC,GAAwBrvC,EAAAA,GAAO4mB,KAAI,MAC5Bhb,EAAAA,EAAAA,GAAQ,MAAO9J,EAAM+F,KAAKS,kBAGjCgnC,GAA0BtvC,EAAAA,GAAOC,IAAG,MAEpCsvC,IAAgBvvC,EAAAA,EAAAA,IAAO0O,GAAP1O,CAAc0O,MAK9B8gC,GAAyB,SAACzP,EAA6BC,GACzD,OAAQA,EAAO9gC,MACX,IAAK,OACD,OAAO,SACA6gC,GAAAA,CACH9jB,KAAM+jB,EAAOv8B,KAAKwY,KAClBD,IAAKgkB,EAAOv8B,KAAKuY,IACjBwE,QAAQ,IAEhB,IAAK,QACD,OAAO,SACAuf,GAAAA,CACHvf,QAAQ,IAEhB,IAAK,iBACD,OAAO,SACAuf,GAAAA,CACHyO,WAAYxO,EAAOv8B,KAAK+qC,WACxBxQ,KAAMgC,EAAOv8B,KAAKu6B,KAClBxd,QAAQ,IAEhB,IAAK,cACD,OAAO,SACAuf,GAAAA,CACHyO,WAAYxO,EAAOv8B,KAAK+qC,WACxBxQ,KAAMgC,EAAOv8B,KAAKu6B,OAE1B,QACI,OAAO+B,EAEnB,EAqBa0P,GAAkBhyC,EAAAA,YAC3B,WAcIjB,G,QAZIc,MAAAA,OAAAA,IAAQ,OACRmC,EAAAA,EAAAA,OACAJ,EAAAA,EAAAA,KACAC,EAAAA,EAAAA,SAAAA,EAAAA,EACA6R,YAAAA,OAAAA,IAAc,kBACdu+B,EAAAA,EAAAA,gBACAjuC,EAAAA,EAAAA,SACArC,EAAAA,EAAAA,QAAAA,EAAAA,EACAqc,SAAAA,OAAAA,IAAW,eACX2O,EAAAA,EAAAA,UACGhpB,EAAAA,GAAAA,EAAAA,CAVH9D,QACAmC,SACAJ,OACAC,WACA6R,cACAu+B,kBACAjuC,WACArC,UACAqc,WACA2O,cAKsB3sB,EAAAA,GAAAA,EAAAA,WAAiB+xC,GAAwB,CAC/DhB,WAAYlxC,EAAQ09B,KAAM19B,GAAOqgC,aAAUpV,EAC3CyV,KAAM1gC,EAAQ09B,KAAM19B,GAAO0gC,YAASzV,EACpCmnB,gBAAiBA,EACjBlvB,QAAQ,EACRvE,UAAMsM,EACNvM,SAAKuM,IACT,GAPOwX,EAAmBtiC,EAAAA,GAAZgxC,EAAYhxC,EAAAA,GAQlBugC,EAAqB+B,EAArB/B,KAAMwQ,EAAezO,EAAfyO,WAERmB,GAAcpyC,EAAAA,EAAAA,QAAuB,MACrCqyC,GAAYryC,EAAAA,EAAAA,QAA0B,OAC5CwuC,EAAAA,EAAAA,qBAAwEvvC,GAAK,W,OAAMozC,EAAU9yC,O,IAE7F,IAIM+yC,EAAQ,W,IACVD,EAAAA,SAAkB,QAAlBA,EAAAA,EAAW9yC,eAAX8yC,IAAAA,GAAAA,EAAoB5/B,QAEpBy+B,EAAS,CAAEvvC,KAAM,SACrB,GAMAxC,EAAAA,EAAAA,YAAU,WACN,GAAiB,UAAb+e,EAGA,OAFAze,OAAOI,iBAAiB,SAAUyyC,GAE3B,WACH7yC,OAAOG,oBAAoB,SAAU0yC,EACzC,CAER,KAEAnzC,EAAAA,EAAAA,YAAU,WAGN,IAAMozC,EAAY,IAAI7xC,OAAO,eAC7B,GAAKX,GAAUA,EAAMyyC,MAAMD,GAA3B,CAIA,IAAM5T,EAAOlB,KAAM19B,GACb0gC,EAAO9B,EAAK8B,OACZL,EAAQzB,EAAKyB,QACnB8Q,EAAS,CAAEvvC,KAAM,cAAeuE,KAAM,CAAEu6B,KAAMA,EAAMwQ,WAAY7Q,IAJhE,MAFI8Q,EAAS,CAAEvvC,KAAM,cAAeuE,KAAM,CAAEu6B,UAAMzV,EAAWimB,gBAAYjmB,IAO7E,GAAG,CAACjrB,KAEJZ,EAAAA,EAAAA,YAAU,WACkB,mBAAb4C,GACPA,EAAS,CAAE0+B,KAAM+B,EAAM/B,KAAMwQ,WAAYzO,EAAMyO,YAGvD,GAAG,CAACzO,EAAM/B,KAAM+B,EAAMyO,aA1FJ,Y,IAAGwB,EAAAA,EAAAA,OACzBtzC,EAAAA,EAAAA,YAAU,W,IACGukB,EAAT,SAA2BviB,GACT,WAAVA,EAAEkV,KACFo8B,GAER,EAIA,OAFA9yC,SAASE,iBAAiB,UAAW6jB,GAE9B,WACH/jB,SAASC,oBAAoB,UAAW8jB,EAC5C,CACJ,GAAG,CAAC+uB,GACR,CA8EQC,CAAkB,CAAED,MAnCN,WACVH,GACJ,IAmCA,IAuCMvD,EAAa,WACf,GAA0B,iBAAfkC,GAA2C,iBAATxQ,EAAmB,CAC5D,IAAMsQ,EAAYtT,OAAQkV,IAAI,QAAS1B,GAAY3Q,OAAO,OAC1D,MAAO,GAAgBsR,OAAbb,EAAU,KAAatQ,OAvVlC,IAuV+B,KAAQ,OAALA,EACrC,CACA,OAAO,gBAACqR,GAAAA,KAAuBl+B,EACnC,CANmB,GAQnB,OACI,gBAACm+B,GAAAA,GAAAA,CAAwBnwC,eAAc,GAAU,OAAPM,IAAc2B,GACpD,gBAACiB,QAAAA,GAAAA,GAAAA,CAAMnD,KAAK,UAAcG,EAAO,CAAEA,KAAMA,GAAS,CAAC,IAAI/B,MAAOA,KAC9D,gBAAC8xC,GAAAA,CACGjwC,eAAc,GAAU,OAAPM,EAAO,iBACxBiC,QAtBG,WACX,GAAIq+B,EAAMvf,OACNqvB,QACG,CACH,IAAMM,EAlCc,WACxB,IAAIl0B,EACAD,EAGJ,GAAiB,UAAbP,IAAwBm0B,aAAAA,EAAAA,EAAW9yC,SAAS,CAC5C,IAAMszC,EAAeR,EAAU9yC,QAAQ8lC,wBAGjCyN,EAAoBD,EAAaE,OADXC,IAC0CvzC,OAAOwzC,YACvEC,EAAoBL,EAAap0B,IAFXu0B,IAEuC,EAI/Dv0B,GADCq0B,GAAqBI,EAChBL,EAAap0B,IANKu0B,IAUlBH,EAAaE,OAGvBr0B,EAAOm0B,EAAan0B,IACxB,CAEA,MAAO,CACHA,KAAMA,EACND,IAAKA,EAEb,CAMiC00B,GAjFnBz0B,EAkFDk0B,EAAiBl0B,KAlFDD,EAkFOm0B,EAAiBn0B,IAjFjDyyB,EAAS,CAAEvvC,KAAM,OAAQuE,KAAM,CAAEwY,KAAMA,EAAMD,IAAKA,IAkFlD,CAnFS,IAACC,EAAeD,CAoF7B,EAgBY9c,KAAK,SACLuC,SAAUA,EACVrC,QAASA,EAET+R,YAAaA,EACbqP,OAAQuf,EAAMvf,OACdvZ,aAAYmjB,EACZ5tB,IAAKozC,GAEJtD,EAAW,IAAC,gBAAC9C,EAAAA,GAAQA,CAAC3iC,KAAM/E,EAAM+F,KAAKG,UAAWpH,MAAO,MAAOkG,OAAQ,SAE5Ei5B,EAAMvf,QACH,gCACI,gBAAC+uB,GAAAA,CACG7tC,QAAS,W,OAAM+sC,EAAS,CAAEvvC,KAAM,S,EAChCC,eAAc,GAAU,OAAPM,EAAO,eAE5B,gBAAC8uC,GAAAA,CACG9uC,OAAQ,GAAU,OAAPA,EAAO,cAClBu+B,KAAMA,GAAQ0R,EACdlB,WAAYA,EACZC,SAAUA,EACV1V,KAAMtd,EACNQ,KAAM8jB,EAAM9jB,KACZD,IAAK+jB,EAAM/jB,IACXxf,IAAKmzC,KAM7B,I,+hCAGJF,GAAgBroC,YAAc,kBChmB9B,I,GAAMuf,GAAkB3mB,EAAAA,GAAOlB,MAAK,KAEdsL,EAAQyc,SACVzc,EAAQsC,QACXrM,EAAU4B,MACR5B,EAAUU,QACV,SAACK,G,OAAyCA,EAAM0lB,UAAY,MAAQ,K,IAC1E,SAAC1lB,G,OAAyCA,EAAMhC,QAAU0C,EAAMC,QAAQC,IAAMF,EAAM+F,KAAKO,U,IACvF,SAAChH,G,OAAyCA,EAAMK,SAAW,MAAQ,G,IAG5EulB,GAA0BhnB,EAAAA,GAAOC,IAAG,KACzBI,EAAUqM,QACRrM,EAAU4B,OAChB,SAACb,G,OACNA,EAAMhC,QAAU0C,EAAMC,QAAQC,IAAMF,EAAMC,QAAQyF,K,GACvC4C,EAAQnI,OAKd0uC,GAAuBlzC,EAAAA,YAChC,WAAkFjB,G,IAA/EiF,EAAAA,EAAAA,SAAUrC,EAAAA,EAAAA,QAASN,EAAAA,EAAAA,MAAOuoB,EAAAA,EAAAA,kBAAmBP,EAAAA,EAAAA,UAAWsD,EAAAA,EAAAA,UAAchpB,EAAAA,GAAAA,EAAAA,CAAtEK,WAAUrC,UAASN,QAAOuoB,oBAAmBP,YAAWsD,cACvD,OACI,gCACI,gBAACzD,GAAeA,CAACllB,SAAUA,EAAUrC,QAASA,EAAS0nB,UAAWA,GAC7DhoB,GAEL,gBAAC2wC,G,uUAAeA,CAAAA,CACZhuC,SAAUA,EACVrC,QAASA,EACTgrB,UAAWA,QAAAA,EAAatrB,EACxBtC,IAAKA,GACD4E,IAEPimB,GACG,gBAACL,GAAuBA,CAAC5nB,QAASA,GAAUioB,GAI5D,I,o5EAEJspB,GAAqBvpC,YAAc,uB,SC1CvBwpC,G,qCAAAA,KAAAA,GAAAA,CAAAA,IAiBZ,IAAMC,GAAU7wC,EAAAA,GAAOqC,MAAK,MACJ,SAACjB,G,OACjBA,EAAMK,UAAWmP,EAAAA,EAAAA,IAAO,MAAO9O,EAAMC,QAAQ0F,OAAS3F,EAAMC,QAAQ0F,K,IAC/D,SAACrG,G,OACNA,EAAMK,UAAWsH,EAAAA,EAAAA,IAAe,MAAOjH,EAAMC,QAAQyF,OAAS1F,EAAMC,QAAQyF,K,IACnE,SAACpG,G,OAAiCA,EAAMgb,SAAW,GAAkB,OAAfhb,EAAMgb,SAAS,MAAM/b,EAAU4B,K,IACnF,SAACb,G,OAAiCA,EAAM+a,WAAa,GAAoB,OAAjB/a,EAAM+a,WAAW,MAAM9b,EAAUU,M,GAC7FqJ,EAAQnI,OAGH,SAACb,G,OAAiCA,EAAMhC,QAAU0C,EAAMC,QAAQC,IAAMF,EAAM+F,KAAKQ,U,GAChFwC,EAAOC,SAOtBgmC,GAAa9wC,EAAAA,GAAOC,IAAG,MAKvBumB,GAAUxmB,EAAAA,GAAOC,IAAG,MAUpB8wC,GAAgB/wC,EAAAA,GAAOC,IAAG,MAI1B+wC,GAAiBhxC,EAAAA,GAAOC,IAAG,MAO3B6oB,GAAe9oB,EAAAA,GAAO4mB,KAAI,MACf,SAACxlB,G,OAAiCA,EAAMgb,SAAW,GAAkB,OAAfhb,EAAMgb,SAAS,MAAM/b,EAAU4B,K,IACnF,SAACb,G,OAAiCA,EAAM+a,WAAa,GAAoB,OAAjB/a,EAAM+a,WAAW,MAAM9b,EAAUU,M,IACpF,SAACK,G,OACjBA,EAAMK,UAAWmP,EAAAA,EAAAA,IAAO,MAAO9O,EAAMC,QAAQ0F,OAAS3F,EAAMC,QAAQ0F,K,IAC/D,SAACrG,G,OACNA,EAAMK,UAAWsH,EAAAA,EAAAA,IAAe,MAAOjH,EAAMC,QAAQyF,OAAS1F,EAAMC,QAAQyF,K,GACrE4C,EAAQnI,OACH,SAACb,G,OAAiCA,EAAMhC,QAAU0C,EAAMC,QAAQC,IAAMF,EAAM+F,KAAKQ,U,GAChFwC,EAAOC,SAElB,SAAC1J,G,OAAiCA,EAAMhC,QAAU0C,EAAMC,QAAQC,IAAMF,EAAM+F,KAAKQ,U,IAEjF,SAACjH,G,OAAiCA,EAAMhC,QAAU0C,EAAMC,QAAQC,IAAMF,EAAM+F,KAAKQ,U,IAI7E,SAACjH,G,OAAiCA,EAAMhC,QAAU0C,EAAMC,QAAQC,IAAMF,EAAM+F,KAAKQ,U,GAInEvG,EAAMkH,SAASE,uBAK9B+nC,GAAwBxzC,EAAAA,YACjC,WAgBIjB,G,QAdI00C,aAAAA,OAAAA,IAAe,KAAE,MACjBC,mBAAAA,OAAAA,IAAqB,+BACrB/mB,UAAAA,OAAAA,IAAY,6BACZgnB,UAAAA,OAAAA,IAAY,OACZC,EAAAA,EAAAA,aACAC,EAAAA,EAAAA,iBACA7xC,EAAAA,EAAAA,OACAgC,EAAAA,EAAAA,SACArC,EAAAA,EAAAA,QACAC,EAAAA,EAAAA,KACAyqB,EAAAA,EAAAA,SACA1N,EAAAA,EAAAA,SACAD,EAAAA,EAAAA,WAIkD1e,EAAAA,GAAAA,EAAAA,UAAe,MAA9D8zC,EAA+C9zC,EAAAA,GAA1B+zC,EAA0B/zC,EAAAA,GAChBA,EAAAA,GAAAA,EAAAA,SAAe0zC,GAAAA,GAA9ChgC,EAA+B1T,EAAAA,GAAlBg0C,EAAkBh0C,EAAAA,GACIA,EAAAA,GAAAA,EAAAA,UAAgB,MAAnDi0C,EAAmCj0C,EAAAA,GAApBk0C,EAAoBl0C,EAAAA,GACpCm0C,EAAan0C,EAAAA,OAA6B,MAC1Co0C,EAAYp0C,EAAAA,OAA6B,MAGzCgtC,EAAeyG,EAAaz4B,QAAO,SAACC,G,OACtC04B,GAAY14B,EAAKM,cAAcC,SAASm4B,EAAUp4B,c,IAEhD84B,EAAsBrH,EAAasH,MAAM,EAAG,GAElDt0C,EAAAA,WAAgB,WAGZ,OAFAP,SAASE,iBAAiB,YAAa40C,GAEhC,WACH90C,SAASC,oBAAoB,YAAa60C,EAC9C,CACJ,IAEAv0C,EAAAA,WAAgB,WACPo0C,EAAU/0C,SAEf+0C,EAAU/0C,QAAQkT,OACtB,GAAG,CAAC0hC,IAEJ,IAAMO,EAAmB,SAACjzC,GACtB,OAAOA,EAAG4Z,MACd,EAEMo5B,EAAW,SAACtzC,GACd,IAAQ5B,EAAkB80C,EAAlB90C,QACJqgB,IAASA,EAAKpgB,SAAS2B,EAAE7B,UACzB20C,GAAuB,GACvBC,EAAeN,GACfQ,GAAkB,GAE1B,EAyBMO,EAAc,SAAC50C,GACjBA,EAAQ20C,EAAiB30C,GACzB,IAAM60C,EAAQjB,EAAa9Q,QAAQ9iC,IACpB,IAAX60C,GAEAjB,EAAa5Q,OAAO6R,EAAO,GAEjB,KAAV70C,GAAgBA,IAAU6zC,GAC1BG,EAAiBh0C,EAAO,SAEhC,EAkDM80C,EAAc,SAAC90C,GACbA,IAAU6zC,GACVE,EAAaY,EAAiB30C,IAElCk0C,GAAuB,GACvBC,EAAeN,GACfe,EAAY50C,GACZq0C,GAAkB,EACtB,EAEA,OACI,gBAACb,GAAAA,CAAWt0C,IAAKA,EAAK2C,eAAc,GAAU,OAAPM,IACnC,gBAAC+mB,GAAOA,CAAChqB,IAAKo1C,EAAYp9B,UAzCR,SAAC5X,GACvB,OAAQA,EAAMgX,KACV,IAAK,WAzCU,SAAClV,GACpBA,EAAEC,iBACF,IAAM0zC,EAAwC,IAAlBX,IAA0C,IAAnBA,EAC7CY,EAAgBnb,KAAKhN,IAAI2nB,EAAoBl8B,OAAS,EAnD1C,GAqDlB+7B,EADiBU,EAAsBC,EAAgBZ,EAAgB,EAE3E,CAoCYa,CAAe31C,GACf,MAEJ,IAAK,aAvDM,SAAC8B,GAChBA,EAAEC,iBACF,IAAM6zC,EACFd,IAAkBI,EAAoBl8B,OAAS,GAzCjC,IA0Cd87B,IACmB,IAAnBA,EAEJC,EADiBa,EAAqB,EAAId,EAAgB,EAE9D,CAgDYe,CAAW71C,GACX,MAEJ,IAAK,QACD20C,EACMM,EAAU/0C,QACNs1C,EAAYjhC,GACZ+gC,EAAYd,GAChBI,GAAuB,GAC7BD,IAAuBpgC,GAAeggC,GAAqBK,GAAuB,IAClF,MAEJ,IAAK,OACDD,GAA2BC,GAAuB,GAClD,MAEJ,IAAK,SACDD,IAAuBC,GAAuB,GAAQC,EAAeN,IAGjF,GAeY,gBAACN,GAAAA,CACG1/B,YAAaA,EACbzP,QAAS,W,OAAM8vC,EAA+C,IAAxBN,EAAat7B,SAAiB27B,E,EACpEjyC,SAAU,SAACZ,G,OAnGXpB,EAmGoDoB,EAAE7B,OAAOS,MAlGzE+zC,EAAa/zC,QACbk0C,GAAuB,GAFZ,IAACl0C,C,EAoGAA,MAAO8zC,EACPp/B,aAAc,MACd/K,aAAYmjB,EACZhO,SAAUA,EACVD,WAAYA,EACZ1a,SAAUA,EACVrC,QAASA,EACTC,KAAMA,EACNyqB,SAAUA,IAEd,gBAACinB,GAAAA,KACG,gBAACC,GAAAA,KACIO,EACKO,EAAoBp+B,KAAI,SAACgF,EAAc5C,G,OACnC,gBAACgT,GAAYA,CACTtsB,IAAKsZ,IAAU47B,EAAgBG,EAAY,W,MAAM,E,EACjDj+B,IAAKkC,EACL48B,aAAY58B,EACZpU,QAAS,WACJD,EAA+BgwC,EAAeN,GAAnCiB,EAAY15B,EAC5B,EACAi6B,YAAa,WACRlxC,EAEKgwC,EAAeN,IADdQ,EAAiB77B,GAAQ27B,EAAeQ,EAAiBv5B,IAEpE,EACAk6B,WAAY,WACRnB,EAAeN,GACfQ,GAAkB,EACtB,EACAn9B,UAAW,SAAC9V,G,OA/Ff,SAAC9B,EAAY8b,GACxC,IAAMm6B,EAAY3B,EAAa9Q,QAAQ1nB,GAEnC9b,EAAMk2C,UAA0B,WAAdl2C,EAAMgX,MACL,IAAfi/B,IACAvB,EAAiBJ,EAAa2B,GAAY,UAC1CpB,EAAeK,EAAoBJ,IAC/BjH,EAAa70B,OAAS,GAAK87B,GAC3BC,EAAiBD,EAAgB,GAGT,IAAxBR,EAAat7B,SAA+B,IAAfi9B,IAC7BpB,EAAeN,GACfQ,GAAkB,IAIlC,CA8EyDoB,CAAuBr0C,EAAGga,E,EACjD3G,SAAU,EACVihC,QAAS,WACJvxC,EAEKgwC,EAAeN,IADdQ,EAAiB77B,GAAQ27B,EAAeQ,EAAiBv5B,IAEpE,EACAjX,SAAUA,EACVrC,QAASA,EACTC,KAAMA,EACN+c,SAAUA,EACVD,WAAYA,GAEX81B,EAAiBv5B,G,IAG1B,MAM9B,I,4+CAGJu4B,GAAsB7pC,YAAc,wBChSpC,IAAMof,GAAUxmB,EAAAA,GAAOC,IAAG,MAOpBgzC,GAAajzC,EAAAA,GAAOC,IAAG,MAIvB0mB,GAAkB3mB,EAAAA,GAAO4mB,KAAI,MAElB,SAACxlB,G,OAAyCA,EAAMgb,SAAW,GAAkB,OAAfhb,EAAMgb,SAAS,MAAM/b,EAAU4B,K,IAC3F,SAACb,G,OACZA,EAAM+a,WAAa,GAAoB,OAAjB/a,EAAM+a,WAAW,MAAM9b,EAAUU,M,IAC5C,SAACK,G,OAAyCA,EAAM0lB,UAAY,MAAQ,K,IAC1E,SAAC1lB,G,OAAyCA,EAAMhC,QAAU0C,EAAMC,QAAQC,IAAMF,EAAM+F,KAAKO,U,IACvF,SAAChH,G,OAAyCA,EAAMK,SAAW,MAAQ,G,IAGrEyxC,GAAwB,Y,IACjC5B,EAAAA,EAAAA,iBAAAA,EAAAA,EACAJ,aAAAA,OAAAA,IAAe,KAAE,MACjBiC,WAAAA,OAAAA,IAAa,iBACbhC,mBAAAA,OAAAA,IAAqB,+BACrB/mB,UAAAA,OAAAA,IAAY,yBACZtrB,EAAAA,EAAAA,MACAW,EAAAA,EAAAA,OACA+M,EAAAA,EAAAA,MACApN,EAAAA,EAAAA,QACAqC,EAAAA,EAAAA,SACAqlB,EAAAA,EAAAA,UACAznB,EAAAA,EAAAA,KAAAA,EAAAA,EACAyqB,SAAAA,OAAAA,IAAW,KACX3N,EAAAA,EAAAA,WACAC,EAAAA,EAAAA,SACAg3B,EAAAA,EAAAA,sBAE0B31C,EAAAA,GAAAA,EAAAA,SAAe,OAAlCH,EAAmBG,EAAAA,GAAZ41C,EAAY51C,EAAAA,GAE1B,OACI,gBAAC+oB,GAAOA,CAACrnB,eAAc,GAAU,OAAPM,IACrBX,EACG,gBAAC6nB,GAAeA,CACZvnB,QAASA,EACTqC,SAAUA,EACVqlB,UAAWA,EACX3K,WAAYA,EACZC,SAAUA,GAETtd,GAGL,GAEJ,gBAACmyC,GAAqBA,CAClBC,aAAcA,EACdC,mBAAoBA,EACpBC,UAAW9zC,EACX+zC,aAAcgC,EACd/B,iBAAkBA,EAClBrqC,aAAYmjB,EACZ3qB,OAAQ,GAAU,OAAPA,EAAO,WAClBgC,SAAUA,EACVrC,QAASA,EACTC,KAAMA,EACNyqB,SAAUA,EACV3N,WAAYA,EACZC,SAAUA,IAEd,gBAAC62B,GAAAA,KACG,gBAACpmC,EAAMA,CACHpN,OAAQ0zC,EACRzxC,QAAS,W,OAAM4vC,EAAiBh0C,EAAOszC,GAAe0C,O,EACtD7xC,SAAU2xC,EAAwBA,EAAsB91C,IAAUA,EAClEmP,KAAM,GAAY,OAAT2P,EAAS,MAClB5P,MAAOA,GAEN2mC,IAKrB,EAEAD,GAAsB9rC,YAAc,wB,ywBC/GpC,IAAM+E,GAAY,OAELonC,IAA8BvzC,EAAAA,EAAAA,IAAOwzC,EAAAA,GAAPxzC,CAA4BwzC,KAEzDrnC,GACDA,IAGAsnC,IAA4BzzC,EAAAA,EAAAA,IAAO0zC,EAAAA,GAAP1zC,CAA0B0zC,KAErDvnC,GACDA,IAGAwnC,IAA8B3zC,EAAAA,EAAAA,IAAO4zC,EAAAA,GAAP5zC,CAA4B4zC,KAEzDznC,GACDA,IAGA0nC,IAAwB7zC,EAAAA,EAAAA,IAAO8zC,EAAAA,GAAP9zC,CAAsB8zC,KAE7C3nC,GACDA,IAGA4nC,IAA4B/zC,EAAAA,EAAAA,IAAOg0C,EAAAA,GAAPh0C,CAA0Bg0C,KAErD7nC,GACDA,I,u1ECtBb6uB,KAAAA,OAAaiZ,MAqBb,IAAMC,GAAoB,CACtB,CACIl1C,GAAI,eACJK,KAAM,eACN80C,OAAQ,UACRC,KAAM,gBAACb,GAA2BA,OAEtC,CACIv0C,GAAI,YACJK,KAAM,YACN80C,OAAQ,UACRC,KAAM,gBAACX,GAAyBA,OAEpC,CACIz0C,GAAI,cACJK,KAAM,eACN80C,OAAQ,UACRC,KAAM,gBAACT,GAA2BA,OAEtC,CACI30C,GAAI,QACJK,KAAM,QACN80C,OAAQ,wCACRC,KAAM,gBAACP,GAAqBA,OAEhC,CACI70C,GAAI,YACJK,KAAM,aACN80C,OAAQ,UACRC,KAAM,gBAACL,GAAyBA,QAIlCM,GAAe,UACf9zC,GAASP,EAAAA,GAAOC,IAAG,KAMRI,EAAUqM,QACRrM,EAAUqM,QAEhB2nC,IAGPC,GAAct0C,EAAAA,GAAOC,IAAG,KACXmK,EAAQnI,OACd,SAACb,G,OAAUA,EAAM+yC,QAAU,S,IAKlCI,GAAUv0C,EAAAA,GAAOC,IAAG,KAGNmK,EAAQrJ,OACTqJ,EAAQrJ,OACHszC,GACXA,IAGPG,GAAsB,UACtBC,GAAQz0C,EAAAA,GAAOC,IAAG,KAGPI,EAAUc,MAKdqzC,IAGPE,GAAqB10C,EAAAA,GAAOC,IAAG,MAM/BysB,GAAc1sB,EAAAA,GAAOS,IAAG,MAMxBgsB,IAAiBzsB,EAAAA,EAAAA,IAAO0sB,GAAP1sB,CAAkB0sB,MAInCioB,IAAiB30C,EAAAA,EAAAA,IAAO0sB,GAAP1sB,CAAkB0sB,MAInCkoB,GAAqB50C,EAAAA,GAAOC,IAAG,MAO/B40C,GAAiB70C,EAAAA,GAAOS,IAAG,MAS3Bq0C,GAAc90C,EAAAA,GAAOwB,OAAM,MAe3BuzC,GAAgB/0C,EAAAA,GAAOc,EAAC,KAIZsJ,EAAQrJ,OACTV,EAAUqM,SAMdsoC,GAAU,Y,IAAGvxC,EAAAA,EAAAA,KAAMY,EAAAA,EAAAA,UAAW4wC,EAAAA,EAAAA,gBACjCC,EAAkBhB,GAAkBla,MAAK,SAAC+P,G,MAA6B,iBAAhBA,EAAS/qC,E,IAChEm2C,EAAUjB,GAAkBla,MAAK,SAAC+P,G,OAAaA,EAAS/qC,KAAOyE,EAAK0xC,O,KAAYD,EAEhFE,EAAgB3xC,EAAK4xC,iBAAmB5xC,EAAK6xC,eAO7CC,EAAQlxC,GAAaZ,EAAK4xC,iBAC5B,gBAACP,GAAAA,CAAYpzC,QANC,SAAChD,G,IAEC+E,EAA8BA,EAD9C/E,EAAEC,iBACFs2C,EAA8B,QAAdxxC,EAAAA,EAAK+xC,iBAAL/xC,IAAAA,OAAAA,EAAAA,EAAgBzE,GAA4B,QAAdyE,EAAAA,EAAK+xC,iBAAL/xC,IAAAA,OAAAA,EAAAA,EAAgBgyC,IAClE,GAIQ,gBAACd,GAAAA,CAAej0C,IAAK00C,aAAAA,EAAAA,EAAeK,IAAK90C,IAAKy0C,aAAAA,EAAAA,EAAez0C,IAAK+0C,iBAAe,WACjF,gBAACd,GAAAA,KACG,gBAACC,GAAAA,CACGn0C,IAAI,qnGACJhB,QAAQ,OACRiB,IAAI,OAMdH,EAAQ6D,GAAaZ,EAAK6xC,gBAC5B,gBAAC7oB,GAAcA,CAAC/rB,IAAK00C,aAAAA,EAAAA,EAAeK,IAAK90C,IAAKy0C,aAAAA,EAAAA,EAAez0C,IAAK+0C,iBAAe,WAG/EC,EAAYJ,GAAS/0C,EAE3B,OACI,gBAACo1C,UAAAA,KACG,gBAACr1C,GAAMA,KACF40C,aAAAA,EAAAA,EAASf,KACV,gBAACE,GAAAA,CAAYH,OAAQgB,aAAAA,EAAAA,EAAShB,QAAQ,IAAE,GAAiB,OAAdgB,aAAAA,EAAAA,EAAS91C,MAAO,KAC3D,gBAACk1C,GAAAA,MACA,GAAsD,OAAnDvZ,KAAAA,IAAUv3B,EAAKoyC,aAAahY,OAAO,kBAE3C,gBAAC4W,GAAAA,KAAOhxC,EAAKpE,MACZ+1C,GAAiB,gBAACV,GAAAA,KAAmB,IAAEiB,EAAU,KAClD,gBAAChwB,GAAIA,CAACvJ,SAAU/b,EAAU4B,MAAOiK,MAAOsoC,GAAqB14B,aAAc,KACtErY,EAAKqyC,aAETryC,EAAKsyC,eACF,gBAAChB,GAAAA,CAAcpyC,KAAMc,EAAKsyC,cAAel5C,OAAQ,UAAU,cAM3E,E,yNC5NO,I,GAAMm5C,IAAyBh2C,EAAAA,EAAAA,IAAOi2C,EAAAA,EAAPj2C,CAAuBi2C,M,s8FCsEjDC,G,2BAAAA,KAAAA,GAAAA,CAAAA,IAIZ,I,MAAMC,GAAqBn2C,EAAAA,GAAOC,IAAG,MAO/Bm2C,GAAmBp2C,EAAAA,GAAOC,IAAG,KAEpBmK,EAAQjJ,MACF0J,EAAOC,SAUtB0pC,GAAsB,UACtBznB,GAAO/sB,EAAAA,GAAOc,EAAC,KAOHsJ,EAAQ+C,SACT9M,EAAUc,MAGdqzC,GAKeA,IAmBtB6B,GAAqBr2C,EAAAA,GAAOC,IAAG,MAK/Bq2C,GAAqE,Y,IACvElyC,EAAAA,EAAAA,YACArB,EAAAA,EAAAA,SACA0yC,EAAAA,EAAAA,IACAc,EAAAA,EAAAA,eACAlyC,EAAAA,EAAAA,UACAmyC,EAAAA,EAAAA,aACGp1C,EAAAA,GAAAA,EAAAA,CANHgD,cACArB,WACA0yC,MACAc,iBACAlyC,YACAmyC,iBAGMC,EAAiB1zC,EAAS0V,QAAO,SAAC3X,G,OAAOA,EAAEooB,aAAepoB,EAAE41C,O,IAC5DC,EAAiBvyC,GAAeA,EAAcqyC,EAAe7gC,OAAS6gC,EAAe1E,MAAM,EAAG3tC,GAAeqyC,EAE7GxB,EAAkB,W,yMAAA,WAAOj2C,EAAYy2C,G,mDACvC,MAA4B,mBAAjBe,EACP,C,GAGJ,C,EAAMA,EAAqF,CACvFt3C,KAAM,aACNikB,QAAS,CACLnkB,GAAIA,EACJ43C,SAAUnB,M,cAJlB,S,OAOJ,I,gBAZ+Bz2C,EAAYy2C,G,gCAAnB,GAcxB,OACI,gBAACU,GAAuB/0C,EACnBu1C,EAAe/gC,OAAS,EACrB+gC,EAAejjC,KAAI,SAACkiC,G,OAChB,gBAACQ,GAAAA,CAAiBxiC,IAAKgiC,EAAQ52C,IAC3B,gBAACg2C,GAAOA,CAACvxC,KAAMmyC,EAASvxC,UAAWA,EAAW4wC,gBAAiBA,I,IAIvE,gBAACoB,GAAAA,KACG,gBAACL,GAAsBA,OAG9BP,GAAOc,GACJ,gBAACxpB,GAAAA,CAAKpqB,KAAM8yC,EAAK54C,OAAQ,UACpB05C,GAKrB,E,i4IChGYM,GACgF,kBAEH,mB,EAH7EA,KAAAA,GAAAA,CAAAA,I,SAOAC,G,uCAAAA,KAAAA,GAAAA,CAAAA,IAKZ,IAAMC,GAAiB/2C,EAAAA,GAAOC,IAAG,MAQhB,SAACmB,G,MAA6B,aAAlBA,EAAM41C,QAAyB,OAAS,M,IAClD,SAAC51C,G,MAAgC,cAArBA,EAAM8pB,WAA6B,MAAQ,K,IAGpE2e,IAAqB7pC,EAAAA,EAAAA,IAAOkR,GAAPlR,CAAmBkR,MAIxC+lC,GAAwBj3C,EAAAA,GAAOyS,GAAE,MAIjC,SAACrR,G,OAAWA,EAAMypC,UAAa,oBAAsB,mB,IAIrDqM,GAAoBl3C,EAAAA,GAAOqS,GAAE,MAK7B8kC,GAA2Bn3C,EAAAA,GAAO4mB,KAAI,MAEzB,SAACxlB,G,MAA6B,aAAlBA,EAAM41C,QAAyB,OAAS,K,IACjD,SAAC51C,G,MAA6B,aAAlBA,EAAM41C,QAAyB,OAAS,K,IACtD,SAAC51C,G,MAA6B,aAAlBA,EAAM41C,QAAyB,OAAS,M,IACnD,SAAC51C,G,MAA6B,aAAlBA,EAAM41C,QAAyB,OAAS,M,GAG5Dl1C,EAAM+F,KAAKG,WAGlBovC,GAA+Bp3C,EAAAA,GAAOyS,GAAE,MAIxCqW,GAAe9oB,EAAAA,GAAOqS,GAAE,MAMxBglC,GAAgBr3C,EAAAA,GAAOC,IAAG,MAU1Bq3C,GAAoBt3C,EAAAA,GAAOlB,MAAK,MAMhCy4C,GAAyBv3C,EAAAA,GAAOC,IAAG,MAItB,SAACmB,G,MAA6B,aAAlBA,EAAM41C,QAAyB,OAAS,K,IACjD,SAAC51C,G,MAA6B,aAAlBA,EAAM41C,QAAyB,OAAS,K,IACtD,SAAC51C,G,MAA6B,aAAlBA,EAAM41C,QAAyB,OAAS,M,IACnD,SAAC51C,G,MAA6B,aAAlBA,EAAM41C,QAAyB,OAAS,M,IAC3D,SAAC51C,G,OAAWA,EAAMo2C,QAAU,cAAgB,S,IAE7C,SAACp2C,G,OAAWA,EAAMo2C,QAAU11C,EAAMkH,SAASK,8BAAgC,S,IAClF,SAACjI,G,MAC2B,UAA1BA,EAAMq2C,kBACLr2C,EAAMo2C,SACN,oE,IAMH,SAACp2C,G,OACCA,EAAMwoC,YACN,wKAO+B,OAAjBxoC,EAAMwoC,WAAW,W,IAIjC7E,GAAkB/kC,EAAAA,GAAOC,IAAG,MACf,SAACmB,G,MAA6B,aAAlBA,EAAM41C,QAAyB,OAAS,K,IACjD,SAAC51C,G,MAA6B,aAAlBA,EAAM41C,QAAyB,OAAS,K,IACtD,SAAC51C,G,MAA6B,aAAlBA,EAAM41C,QAAyB,OAAS,M,IACnD,SAAC51C,G,MAA6B,aAAlBA,EAAM41C,QAAyB,OAAS,M,IAWnEU,GAAwB13C,EAAAA,GAAOC,IAAG,MAMlC03C,GAAwB33C,EAAAA,GAAO4mB,KAAI,MAInCgxB,GAAoB53C,EAAAA,GAAOqC,MAAK,MAOhC,SAACjB,G,MAC2B,aAA1BA,EAAMq2C,iBACN,yBACqC,OAAvBF,GAAuB,wD,GAKhBA,IAMvBM,GAAoB73C,EAAAA,GAAOyS,GAAE,MAW7BqlC,GAAgB93C,EAAAA,GAAOqS,GAAE,MAMzB,SAACjR,G,OAAWA,EAAM22C,aAAe32C,EAAM42C,iBAAmB,kD,IAC1D,SAAC52C,G,OAAUA,EAAM62C,YAAc,2D,IAC/B,SAAC72C,G,OAAUA,EAAM82C,UAAY,+D,IAOnC,SAASC,GAAcC,GACnB,YAA4B,IAAdA,EAAIt5C,OAAyBu5C,MAAMC,QAAQF,EAAInvB,QACjE,CAEA,IAAMsvB,GAAY,SAACH,GACf,MAAqB,aAAdA,aAAAA,EAAAA,EAAKl5C,KAChB,EAGMs5C,GAAO,WAAO,EAadC,GAAY,Y,IACd1vB,EAAAA,EAAAA,OACAtpB,EAAAA,EAAAA,OACAg4C,EAAAA,EAAAA,gBACA1yB,EAAAA,EAAAA,OACA2zB,EAAAA,EAAAA,SACA1B,EAAAA,EAAAA,QACA2B,EAAAA,EAAAA,iBACAC,EAAAA,EAAAA,iBACAC,EAAAA,EAAAA,aAEA,OACI,gBAAC/vB,GAAYA,CACTgwB,YAAaF,EACbz5C,eAAc,GAAiBwW,OAAdlW,EAAO,SAAkD,QAA3CkW,EAAAA,GAAAA,GAAaoT,EAAOtpB,QAAUspB,EAAOgC,QAEpE,gBAACusB,GAAAA,CACGtzC,UAAW,uBACX+0C,YAAaJ,EACbx5C,eAAc,GAAoBwW,OAAjBlW,EAAO,YAAoC,QAA1BkW,EAAAA,GAAAA,GAAaoT,EAAOgC,QAEtD,gBAAC6sB,GAAAA,GAAAA,CACGz4C,eAAc,GAAoBwW,OAAjBlW,EAAO,YAAoC,QAA1BkW,EAAAA,GAAAA,GAAaoT,EAAOgC,OACtD7rB,KAAK,QACLG,KAAMq5C,EACNp7C,MAAOyrB,EAAOzrB,MACdm6C,gBAAiBA,EACjBzkC,QAAS+R,EACTrjB,QAASqnB,EAAOtnB,cAAW8mB,EAAYswB,EACvChvB,UAAU,EACVrV,UAAW,SAAC9V,G,OAAMA,EAAEC,gB,GACfoqB,EAAOtnB,UAAY,CAAEA,UAAU,KAExC,gBAAC81C,GAAAA,CACG3N,WAAY7gB,EAAO6gB,WACnB6N,gBAAiBA,EACjBD,QAASzuB,EAAOtnB,SAChBu1C,QAASA,KAENjuB,EAAOqrB,MAAQ,gBAACsD,GAAAA,KAAuB3uB,EAAOqrB,MACjD,gBAACuD,GAAAA,KAAuB5uB,EAAOgC,QAKnD,EAeMiuB,GAAkB,Y,IACpBtgC,EAAAA,EAAAA,KACA5C,EAAAA,EAAAA,MACArW,EAAAA,EAAAA,OACAg4C,EAAAA,EAAAA,gBACAwB,EAAAA,EAAAA,WACAP,EAAAA,EAAAA,SACA1B,EAAAA,EAAAA,QACAkC,EAAAA,EAAAA,gBACAC,EAAAA,EAAAA,gBACAC,EAAAA,EAAAA,mBAEA,OACI,gBAAClC,GAAAA,CAAkBtjC,IAAK,GAAiBkC,OAAd4C,EAAK5Z,MAAM,KAAS,OAANgX,IACrC,gBAACqhC,GAAAA,CAAyBnzC,UAAW,+BAAgCgzC,QAASA,GACzEt+B,EAAK5Z,OAET4Z,EAAKuQ,SACF,gBAACmuB,GAAAA,KACI1+B,EAAKuQ,QAAQvV,KAAI,SAACqV,G,OACf,gBAAC0vB,GAAAA,CACG7kC,IAAKmV,EAAOzrB,MACZyrB,OAAQA,EACRtpB,OAAQA,EACRg4C,gBAAiBA,EACjB1yB,OAAQgE,EAAOzrB,QAAU27C,EACzBP,SAAUA,EACV1B,QAASA,EACT2B,iBAAkBO,EAClBN,iBAAkBO,EAClBN,aAAcO,G,KAO1C,EAEMC,GAAc,Y,IAChB3gC,EAAAA,EAAAA,KACA5C,EAAAA,EAAAA,MACAmT,EAAAA,EAAAA,QACAxpB,EAAAA,EAAAA,OACAg4C,EAAAA,EAAAA,gBACAwB,EAAAA,EAAAA,WACAP,EAAAA,EAAAA,SACA1B,EAAAA,EAAAA,QACAkC,EAAAA,EAAAA,gBACAC,EAAAA,EAAAA,gBACAC,EAAAA,EAAAA,mBAEA,OACI,gBAACtB,GAAAA,CACGC,YAAuB,IAAVjiC,GAAkC,IAAnBmT,EAAQrT,OACpCoiC,eAAgBO,GAAUtvB,EAAQnT,EAAQ,IAC1CmiC,WAAYniC,IAAUmT,EAAQrT,OAAS,GAAwB,IAAnBqT,EAAQrT,OACpDsiC,SAA6B,IAAnBjvB,EAAQrT,QAElB,gBAACiiC,GAAAA,KACIn/B,EAAKuQ,QAAQvV,KAAI,SAACqV,EAAQuwB,GACvB,OAAInB,GAAcpvB,GAEV,gBAACiwB,GAAAA,CACGplC,IAAKmV,EAAOjqB,MAAQ,IAAMw6C,EAC1B5gC,KAAMqQ,EACNjT,MAAOwjC,EACP75C,OAAQA,EACRg4C,gBAAiBA,EACjBwB,WAAYA,EACZP,SAAUA,EACV1B,QAASA,EACTmC,gBAAiBA,EACjBD,gBAAiBA,EACjBE,mBAAoBA,IAI5BrwB,EAAOzrB,MAEH,gBAACm7C,GAAAA,CACG7kC,IAAKmV,EAAOzrB,MACZyrB,OAAQA,EACRtpB,OAAQA,EACRg4C,gBAAiBA,EACjB1yB,OAAQgE,EAAOzrB,QAAU27C,EACzBP,SAAUA,EACV1B,QAASA,EACT2B,iBAAkBO,EAClBN,iBAAkBO,EAClBN,aAAcO,SAZ1B,CAgBJ,KAIhB,EAyBMG,GAAc,Y,IAChB95C,EAAAA,EAAAA,OACAwpB,EAAAA,EAAAA,QACAwuB,EAAAA,EAAAA,gBACAyB,EAAAA,EAAAA,gBACAE,EAAAA,EAAAA,mBACAH,EAAAA,EAAAA,WACAE,EAAAA,EAAAA,gBACAT,EAAAA,EAAAA,SACA1B,EAAAA,EAAAA,QAEA,OACI,gCACK/tB,EAAQvV,KAAI,SAACgF,EAAMgK,GAChB,OAAI61B,GAAU7/B,GAEN,gBAAC2gC,GAAAA,CACGzlC,IAAK8E,EAAKxZ,KAAO,IAAMwjB,EACvBhK,KAAMA,EACN5C,MAAO4M,EACPuG,QAASA,EACTxpB,OAAQA,EACRg4C,gBAAiBA,EACjBwB,WAAYA,EACZP,SAAUA,EACV1B,QAASA,EACTmC,gBAAiBA,EACjBD,gBAAiBA,EACjBE,mBAAoBA,IAI5BjB,GAAcz/B,GAEV,gBAACsgC,GAAAA,CACGplC,IAAK8E,EAAK5Z,MAAQ,IAAM4jB,EACxBhK,KAAMA,EACN5C,MAAO4M,EACPjjB,OAAQA,EACRg4C,gBAAiBA,EACjBwB,WAAYA,EACZP,SAAUA,EACV1B,QAASA,EACTmC,gBAAiBA,EACjBD,gBAAiBA,EACjBE,mBAAoBA,IAI5B1gC,EAAKpb,MAED,gBAACm7C,GAAAA,CACG7kC,IAAK8E,EAAKpb,MACVyrB,OAAQrQ,EACRjZ,OAAQA,EACRg4C,gBAAiBA,EACjB1yB,OAAQrM,EAAKpb,QAAU27C,EACvBP,SAAUA,EACV1B,QAASA,EACT2B,iBAAkBO,EAClBN,iBAAkBO,EAClBN,aAAcO,SAZ1B,CAgBJ,IAGZ,EAoCaI,GAAW/7C,EAAAA,YACpB,WA0BIjB,G,QAxBIwC,GAAAA,OAAAA,IAAK,oBACLy6C,SAAAA,OAAAA,IAAW,EAAXA,SAAAA,EACAC,EAAAA,EAAAA,cACAT,EAAAA,EAAAA,WACAU,EAAAA,EAAAA,cACA1wB,EAAAA,EAAAA,QAAAA,EAAAA,EACAla,KAAAA,OAAAA,IAAO,EAAA7R,SAAS8R,KAAI,EACpB4qC,EAAAA,EAAAA,QACAnC,EAAAA,EAAAA,gBACAoC,EAAAA,EAAAA,mBACAC,EAAAA,EAAAA,mBACAC,EAAAA,EAAAA,YACAt6C,EAAAA,EAAAA,OACAorC,EAAAA,EAAAA,UACA7zB,EAAAA,EAAAA,YAAAA,EAAAA,EACAC,eAAAA,OAAAA,IAAiB,EAAAuhC,GAAAA,EACjBwB,EAAAA,EAAAA,iBAAAA,EAAAA,EACAC,oBAAAA,OAAAA,IAAsB,EAAAzB,GAAAA,EACtBt7B,EAAAA,EAAAA,MACAg9B,EAAAA,EAAAA,WAAAA,EAAAA,EACAlD,QAAAA,OAAAA,IAAU,mBACV9rB,WAAAA,OAAAA,IAAa,aACV9pB,EAAAA,GAAAA,EAAAA,CAtBHpC,KACAy6C,WACAC,gBACAT,aACAU,gBACA1wB,UACAla,OACA6qC,UACAnC,kBACAoC,qBACAC,qBACAC,cACAt6C,SACAorC,YACA7zB,cACAC,iBACA+iC,mBACAC,sBACA/8B,QACAg9B,aACAlD,UACA9rB,eAMEivB,EAAU18C,EAAAA,SAEV6Z,EAAiB7Z,EAAAA,SAEjB28C,EAAiB38C,EAAAA,SAKjBi7C,EAAW,YAIX2B,EAASr7C,EAITs7C,EAAa,GAAU,OAAPD,EAAO,SAMvBE,EAAU,UACVC,EAAY,YACZC,EAAY,YACZC,EAAa,aAEbC,EAAa,CAACH,EAAWE,GACzBE,EAAa,CAACL,EAASE,GAUvBI,EAAa,Y,IAAGv9C,EAAAA,EAAAA,MAAOw9C,EAAAA,EAAAA,eAIzB,GAFAnB,EAAcr8C,GAEG,WAAbm8C,GACA,GAAIn8C,IAASw9C,aAAAA,EAAAA,EAAgB7hC,SAAS,WAAmB,CACrD,IAAM8hC,EAAS79C,SAAS4C,eAAew6C,GACjCU,EAAgBD,aAAAA,EAAAA,EAAQxiC,UAC9BmhC,EAAc,CAAEp8C,MAAAA,EAAO29C,QAASD,GACpC,MACoB,YAAbvB,GAEHn8C,IAASw9C,aAAAA,EAAAA,EAAgB7hC,SAAS,aAClCygC,EAAc,CAAEp8C,MAAAA,GAG5B,EAEM49C,EAAwB,SAAC59C,GAC3Bw8C,EAAmBh9C,QAAUQ,CACjC,EAKMuyC,EAAQ,Y,IAAGvyC,EAAAA,EAAAA,MACb2Z,EAAe,IAEf4iC,EAAmB,YAGnBqB,EADiB59C,GAAS27C,GAAc,IAGjB,mBAAZW,GAEHA,OADiB,IAAVt8C,EACC,CAAEA,MAAAA,GAEF,CAAEA,WAAOirB,GAG7B,EAOM4yB,EAAiB,Y,IAAG79C,EAAAA,EAAAA,MAAOw9C,EAAAA,EAAAA,oBACR,IAAVx9C,GACPu9C,EAAW,CAAEv9C,MAAAA,EAAOw9C,eAAAA,IAExBjL,EAAM,CAAEvyC,MAAAA,GACZ,EA0EM89C,EAAwC,SAAChiB,GAE3C,IAAMiiB,EAAUr+C,OAAOq+C,QACjBJ,EAAUj+C,OAAOi+C,QACvB7hB,EAAGppB,MAAM,CAAEsrC,eAAe,IAE1Bt+C,OAAOu+C,SAASF,EAASJ,EAC7B,OAwH0C,IAA/BnB,EAAmBh9C,cAAiD,IAAfm8C,GAC5DiC,EAAsBjC,GAG1Bx7C,EAAAA,iBAAsB,WAClB,IAeI6Z,EAfEkkC,EAAUt+C,SAASic,cACrB,UAA+B2gC,OAArBpB,EAAS,cAAuC,OAA3BoB,EAAmBh9C,QAAQ,OAE9D,GAAI0+C,EACAJ,EAAsCI,OACnC,CACH,IAAMC,EAAav+C,SAASic,cAAgC,UAAmB,OAATu/B,EAAS,eAC3E+C,IACAP,EAAsBO,EAAWn+C,OACjC89C,EAAsCK,GAE9C,CAEIzB,IAEsB,QAAtB1iC,EAAAA,EAAexa,eAAfwa,IAAAA,GAAAA,EAAwBtH,QAEhC,IAEAvS,EAAAA,WAAgB,WACZ,GAAKs8C,EAAL,CAIA,IAAMyB,EAAUt+C,SAASic,cAAc,UAA+B8/B,OAArBP,EAAS,cAAuB,OAAXO,EAAW,OACjF,GAAIuC,EAAS,C,IAETpB,EADMsB,EAhYE,SAEpBhjC,EAEAqhC,EAEAK,G,IAEa1hC,EAEM0hC,EAEA1hC,EAJbijC,EAAyB,QAAlBjjC,EAAAA,EAAKkjC,qBAALljC,IAAAA,OAAAA,EAAAA,EAAoBkjC,cAC3BC,EAAYF,aAAAA,EAAAA,EAAME,UAClBC,EAAmC,QAAtB1B,EAAAA,EAAet9C,eAAfs9C,IAAAA,OAAAA,EAAAA,EAAwB2B,aAErCC,GAA+B,QAAlBtjC,EAAAA,EAAKkjC,qBAALljC,IAAAA,OAAAA,EAAAA,EAAoBqjC,eADlB,GASrB,YAH0B,IAAfD,QACc,IAAdD,GACPA,EAAYG,EAAajC,EAAc+B,EAEhC/B,EAAciC,OAPoB,IAAdH,GAA6BA,EAAY9B,EAS7DA,EAAciC,EAElBjC,CACX,CAsWkCkC,CAAgBT,EAASzB,EAAYj9C,QAASs9C,GAC1C,QAAtBA,EAAAA,EAAet9C,eAAfs9C,IAAAA,GAAAA,EAAwBmB,SAAS,EAAGG,GACpC3B,EAAYj9C,QAAU4+C,CAC1B,CAPA,CAQJ,GAAG,CAACzC,EAAYc,IAEhBt8C,EAAAA,iBAAsB,W,IAIlB28C,EAHKL,IAGiB,QAAtBK,EAAAA,EAAet9C,eAAfs9C,IAAAA,GAAAA,EAAwBmB,SAAS,EAAGxB,EAAYj9C,SACpD,IAEA,IAAMo/C,GAAgBC,EAAAA,GAAAA,GAAa3/C,EAAK29C,GAOxC,OAFA59C,EAAAA,GAAAA,GAAgB49C,GAAS,W,OAAMtK,EAAM,CAAEvyC,MAAO27C,G,IAG1C,gBAACnqC,GAAAA,EAAMA,CAACC,KAAMA,EAAM6E,IAnUN,oBAoUV,gBAACmjC,GAAAA,GAAAA,GAAAA,CACGv6C,IAAK0/C,GACD96C,GAAAA,CACJ8b,MAAOA,EACP1I,UA/KI,SAAC9V,G,IAUqB07C,EAT5BgC,EAAY,CAAC7B,EAASC,GACtB6B,EAAS,CAAC9B,EAASC,EAAWC,EAAWC,GACzC4B,EAAa,CAAC,SAIdC,EAAar/C,SAASgkB,cACtBs7B,EAAqBD,IAAejlC,EAAexa,QACnD2/C,EAAqBF,IAAenC,EAAet9C,QACnD4/C,EAAkD,QAAtBtC,EAAAA,EAAet9C,eAAfs9C,IAAAA,OAAAA,EAAAA,EAAwBr9C,SAASw/C,GAI7DI,IAHgBz/C,SAASic,cAC3B,UAA+B8/B,OAArBP,EAAS,cAAuB,OAAXO,EAAW,OAe9C,GAvBiB,CAAC,UAaLhgC,SAASva,EAAEkV,MAGhBunC,EAFa,WAAb1B,EAEe,CAAEn8C,MAAO27C,EAAY6B,eAAgB,C,WAGrC,CAAEx9C,MAAO27C,IAlBjB,QAsBAv6C,EAAEkV,KA8BjB,GAAKqlC,GAAewD,GAAuBC,GAA6Bh+C,EAAEkV,MAAQ2mC,EAAlF,CAKA,GAAI8B,EAAOpjC,SAASva,EAAEkV,KAAM,CAExB,IAAIwoC,EAAUnjC,SAASva,EAAEkV,KAKrB,OAJAlV,EAAEC,iBA1IO,SAACD,GAClB,IAAMk+C,EAASvE,MAAMwE,KAAK3/C,SAAS2kC,iBAAmC,UAAmB,OAAT6W,EAAS,gBACnFoE,EAAmBhD,EAAmBh9C,SAAY8/C,EAAOhnC,QAAUgnC,EAAO,GAAGt/C,OAAU,GACvFy/C,EAAkB7/C,SAASic,cAC7B,UAA+B2jC,OAArBpE,EAAS,cAA6B,OAAjBoE,EAAiB,OAE9ChnC,EAAQ,GAAoB8mC,EAAOxc,QAAQ2c,IAAqB,EAChEC,EAAgB9/C,SAASic,cAC3B,UAA+B8/B,OAArBP,EAAS,cAAuB,OAAXO,EAAW,OAGxCgE,EACErC,EAAW3hC,SAASva,EAAEkV,MAAQkC,EAAQ,GAC9B,EAER6kC,EAAW1hC,SAASva,EAAEkV,MAAQkC,EAAQ8mC,EAAOhnC,OAAS,EAC/C,EAGJ,EAaLsnC,EAAUN,EAAO9mC,GANL,IAAVA,GAAiBmjC,GAJK+D,EAOnBC,EAFI,IAOXC,IACAhC,EAAsBgC,EAAQ5/C,OAC9Bu9C,EAAW,CAAEv9C,MAAO4/C,EAAQ5/C,MAAOw9C,eAAgB,C,aAGvDjB,EAAmB,WACvB,CAmGYsD,CAAaz+C,EAKrB,CAEKi+C,GAKDL,EAAWrjC,SAASva,EAAEkV,OACL,WAAb6lC,GAAiCR,IAAea,EAAmBh9C,QAEnEq+C,EAAe,CAAE79C,MAAO27C,EAAY6B,eAAgB,C,YAChC,YAAbrB,GAAkCR,IAAea,EAAmBh9C,SACvEw/C,EAAWrjC,SAASva,EAAEkV,MACtBunC,EAAe,CACX79C,MAAOw8C,EAAmBh9C,QAC1Bg+C,eAAgB,C,aA1BhC,MAjCA,CAGI,GAAI0B,EAAoB,CACpBvC,GAAoB,GAEpB,IAAM2C,EAASvE,MAAMwE,KACjB3/C,SAAS2kC,iBAAmC,UAAmB,OAAT6W,EAAS,gBAE7D0E,EACFR,EAAOnkC,QAAO,SAACC,GACX,OAAOA,EAAKpb,QAAUw8C,EAAmBh9C,OAC7C,IAAG,IAAM8/C,EAAO,GAEhBQ,IACAlC,EAAsBkC,EAAa9/C,OACnC89C,EAAsCgC,GACtCvC,EAAW,CAAEv9C,MAAO8/C,EAAa9/C,MAAOw9C,eAAgB,C,YAEhE,MACIb,GAAoB,GAKxBJ,EAAmB,WAEvB,CAqCJ,EAqFYjmC,IAAKymC,EACLr7C,GAAIq7C,EACJl7C,eAAcM,EACdu3C,QAASA,EACT9rB,WAAYA,IAEXgvB,GACG,gBAACnV,GAAeA,CAAC5lC,eAAcM,EAAS,UAAWu3C,QAASA,GACvDkD,GAGRrP,GACG,gBAAChB,GAAkBA,CACfpqC,OAAQ,GAAU,OAAPA,EAAO,iBAClBjD,IAAK8a,EACLnG,YAAa,YACbC,aAnFO,SAAC1S,GACxBuY,EAAevY,EAAE7B,OAAOS,MAC5B,EAkFoB+T,kBAhFM,WACtB4F,EAAe,IACfgjC,GAAoB,EACxB,EA8EoB3oC,WAAY0F,EACZrG,cAAc,EACdxR,eAAc,GAAU,OAAPM,EAAO,yBACxB8R,SAAUyoC,IAGlB,gBAAC/C,GAAAA,CACGj4C,GAAIs7C,EACJ99C,IAAK49C,EACLvP,UAAWA,EACX1rC,eAAc,GAAU,OAAPM,EAAO,aAErBwpB,aAAAA,EAAAA,EAASrT,SACR,gBAAC2jC,GAAAA,CACG95C,OAAQA,EACRwpB,QAASA,EACTwuB,gBAAiBA,EACjB0B,gBAlPC,SAACz6C,GAEtB,IAAM88C,EAAU98C,EAAE7B,OAAOwgD,QAAQ,SAASlkC,cAAc,SACxD0gC,EAAmB,SACnBqB,EAAsBM,EAAQl+C,MAClC,EA8OwB47C,gBAvHyB,SAACx6C,GAE9C,IAUI4Y,EAVEkkC,EAAU98C,EAAE24B,cAAcle,cAAc,UAG9C0gC,EAAmB,SACf2B,IACAN,EAAsBM,EAAQl+C,OAC9B89C,EAAsCI,IAEtCxB,KAEsB,QAAtB1iC,EAAAA,EAAexa,eAAfwa,IAAAA,GAAAA,EAAwBtH,QAEhC,EA0GwBopC,mBA7OG,SAAC16C,GAQA,aAApB+4C,GAIJ0D,EAAe,CAAE79C,MAAOoB,EAAE7B,OAAOS,MAAOw9C,eAAgB,C,qBAC5D,EAiOwB7B,WAAYA,EACZP,SAAUA,EACV1B,QAASA,MAGf/tB,aAAAA,EAAAA,EAASrT,SAAU,gBAACyhC,GAAAA,KAAc,sBAKxD,IAGJmC,GAASpyC,YAAc,W,ovCC19BXk2C,G,2DAAAA,KAAAA,GAAAA,CAAAA,IAkDZ,IAAMC,IAAmBv9C,EAAAA,EAAAA,IAAOw5C,GAAPx5C,CAAew5C,MAExB,SAACp4C,G,OAAUA,EAAMqa,Q,IACrB,SAACra,G,MAAU,GAAW,OAARA,EAAMgqB,EAAE,K,IACvB,SAAChqB,G,MAAU,GAAW,OAARA,EAAMiqB,EAAE,K,IACf,SAACjqB,G,MAA+B,SAApBA,EAAMioC,UAAuB,OAAS,GAAmB,OAAhBjoC,EAAMioC,UAAU,K,IASjFmU,GAAO//C,EAAAA,YACT,WA4BIjB,G,IA1BIiD,EAAAA,EAAAA,OACAgc,EAAAA,EAAAA,SACA2P,EAAAA,EAAAA,EACAC,EAAAA,EAAAA,EACAge,EAAAA,EAAAA,UACA0Q,EAAAA,EAAAA,YACAv5B,EAAAA,EAAAA,OACAzR,EAAAA,EAAAA,KACA0uC,EAAAA,EAAAA,UACAx0B,EAAAA,EAAAA,QACAy0B,EAAAA,EAAAA,UACAjG,EAAAA,EAAAA,gBACAoC,EAAAA,EAAAA,mBACAC,EAAAA,EAAAA,mBACAb,EAAAA,EAAAA,WACAU,EAAAA,EAAAA,cACAD,EAAAA,EAAAA,cACA7O,EAAAA,EAAAA,UACA5zB,EAAAA,EAAAA,eACAD,EAAAA,EAAAA,YACAgjC,EAAAA,EAAAA,iBACAC,EAAAA,EAAAA,oBACAC,EAAAA,EAAAA,WACAlD,EAAAA,EAAAA,QACA9rB,EAAAA,EAAAA,WAIJ,OAAK1K,EAKD,gBAAC1R,GAAAA,EAAMA,CAACC,KAAMA,EAAM6E,IAAK6pC,GACrB,gBAACF,GAAAA,CACG99C,OAAQA,EACRjD,IAAKA,EACLuS,KAAMA,EACNka,QAASA,EACT2wB,QAAS8D,EACTjG,gBAAiBA,EACjBoC,mBAAoBA,EACpBC,mBAAoBA,EACpBb,WAAYA,EACZU,cAAeA,EACfF,SAAU5C,GAAU8G,QACpBjE,cAAeA,EACf7O,UAAWA,EACX5zB,eAAgBA,EAChBD,YAAaA,EACbgjC,iBAAkBA,EAClBC,oBAAqBA,EACrBx+B,SAAUA,EACV2P,EAAGA,EACHC,EAAGA,EACHge,UAAWA,EACX0Q,YAAaA,EACbG,WAAYA,EACZlD,QAASA,EACT9rB,WAAYA,KA9Bb,gCAkCf,IAGJsyB,GAAKp2C,YAAc,OAKZ,IAAMw2C,GAAqE,Y,IAC9E30B,EAAAA,EAAAA,QAAAA,EAAAA,EACAla,KAAAA,OAAAA,IAAO,EAAA7R,SAAS8R,KAAI,MACpBuU,aAAAA,OAAAA,IAAe,OAAAgF,EAAAA,EACf2jB,EAAAA,EAAAA,QACA9pB,EAAAA,EAAAA,cAAAA,EAAAA,EACAy7B,KAAAA,OAAAA,IAAO,KACPhT,EAAAA,EAAAA,UAAAA,EAAAA,EACAiT,UAAAA,OAAAA,IAAY,uBACZC,kBAAAA,OAAAA,IAAoB,SACpBC,eAAAA,OAAAA,IAAiB,SACjBC,gBAAAA,OAAAA,IAAkB,SAClBx8C,SAAAA,OAAAA,IAAW,KACXy4C,EAAAA,EAAAA,WACAlD,EAAAA,EAAAA,QACA9rB,EAAAA,EAAAA,WAEM4uB,EAAqBr8C,EAAAA,OAAiC8lB,GAChC9lB,EAAAA,GAAAA,EAAAA,SAAeogD,GAAAA,GAApCr9B,EAAqB/iB,EAAAA,GAAbygD,EAAazgD,EAAAA,GACQA,EAAAA,GAAAA,EAAAA,SAAmC8lB,GAAAA,GAAhE46B,EAA6B1gD,EAAAA,GAAjBi8C,EAAiBj8C,EAAAA,GACUA,EAAAA,GAAAA,EAAAA,SAAiCq5C,GAAiBsH,OAAK,GAA9F3G,EAAuCh6C,EAAAA,GAAtBo8C,EAAsBp8C,EAAAA,GACVA,EAAAA,GAAAA,EAAAA,WAAc,GAA3Cw7C,EAA6Bx7C,EAAAA,GAAjBk8C,EAAiBl8C,EAAAA,GAC9Bs8C,EAAct8C,EAAAA,OAAa,GAC3B4gD,EAAgB5gD,EAAAA,OAA8B,QACdA,EAAAA,GAAAA,EAAAA,SAAe,OAA9CuZ,EAA+BvZ,EAAAA,GAAlBwZ,EAAkBxZ,EAAAA,GACUA,EAAAA,GAAAA,EAAAA,UAAe,MAAxDu8C,EAAyCv8C,EAAAA,GAAvBw8C,EAAuBx8C,EAAAA,GACFA,EAAAA,GAAAA,EAAAA,SAAewrB,GAAAA,GAAtDq1B,EAAuC7gD,EAAAA,GAAtB8gD,EAAsB9gD,EAAAA,GA2BxCigD,GAAY18B,EAAAA,EAAAA,cAAY,WACtBR,IACA09B,GAAU,GACV97B,EAAc,CAAEljB,KAAM,gBAE9B,GAAG,CAACshB,EAAQ09B,EAAW97B,KAEvB1lB,EAAAA,EAAAA,YAAU,WAIN,OAHAM,OAAOG,oBAAoB,SAAUugD,GACrC1gD,OAAOI,iBAAiB,SAAUsgD,GAE3B,WACH1gD,OAAOG,oBAAoB,SAAUugD,EACzC,CACJ,GAAG,CAACA,KAGJhhD,EAAAA,EAAAA,YAAU,WACF+E,GACAi8C,GAER,GAAG,CAACj8C,EAAUi8C,KAEdhhD,EAAAA,EAAAA,YAAU,WAENo9C,EAAmBh9C,QAAUymB,EAC7Bo2B,EAAcp2B,GACdm2B,EAAcn2B,EAClB,GAAG,CAACA,IAEJ,IAAMg1B,EAAY,SAACH,GACf,MAAqB,aAAdA,aAAAA,EAAAA,EAAKl5C,KAChB,GAEAxC,EAAAA,EAAAA,YAAU,WAEN,IAAM8hD,EAAyBxnC,EAAYgC,cAAcJ,OACnD6lC,EAAgB,SAACnhD,G,OAAkBA,EAAMohD,oBAAoBzlC,SAASulC,E,EAEtEG,EAAqB,SAACplC,GAExB,GAAIklC,EAAcllC,EAAMza,OACpB,OAAOya,EAIX,IAAMqlC,EAAuBrlC,EAAM0P,QAAQxQ,QAAO,SAAComC,G,OAAgBJ,EAAcI,EAAY9zB,K,IAE7F,MAAO,CACHjsB,MAAOya,EAAMza,MACbmqB,QAAS21B,EAEjB,EAWMN,EAAkBr1B,EACnBvV,KAAI,SAACqV,G,OACFovB,EAAcpvB,GACR41B,EAAmB51B,GACnBwvB,EAAUxvB,GAPb,CAAE7pB,KAAM,UAAW+pB,QAQKF,EAbEE,QAC5BvV,KAAI,SAACqV,G,OAAYovB,EAAcpvB,GAAU41B,EAAmB51B,GAAUA,C,IACtEtQ,QAAO,SAACsQ,G,OACLovB,EAAcpvB,GAAUA,EAAOE,QAAQrT,OAAS6oC,EAAc11B,EAAOgC,K,KAWnEhC,C,IAETtQ,QAAO,SAACsQ,G,OACLovB,EAAcpvB,IAERwvB,EAAUxvB,GADVA,EAAOE,QAAQrT,OAGf6oC,EAAc11B,EAAOgC,K,IAGnCwzB,EAAmBD,EACvB,GAAG,CAACtnC,EAAaiS,IAEjB,IAAMkvB,EAAgB,SAACz/B,GACnB,YAAuB6P,KAAhB7P,aAAAA,EAAAA,EAAM5Z,MACjB,EAEgDggD,GAAAA,EAAAA,GAAAA,IAAY,CACxDhB,UAAAA,EACAiB,qBAAsBC,GAAAA,GACtBC,WAAY,EACR1xB,EAAAA,GAAAA,IAAO,IACP9gB,EAAAA,GAAAA,IAAK,CACDyyC,MAAAA,SAAM,G,IAAEC,EAAF,EAAEA,MAAOC,EAAT,EAASA,eAAgBC,EAAzB,EAAyBA,gBAAiBC,EAA1C,EAA0CA,SACxCvB,GAEAvqC,OAAO+rC,OAAOD,EAASE,SAAStiC,MAAO,CACnCtc,MAAO,GAAyB,OAAtBu+C,EAAMM,UAAU7+C,MAAM,QAGpCo9C,GAEAxqC,OAAO+rC,OAAOD,EAASE,SAAStiC,MAAO,CACnCxX,SAAU,GAAkB,OAAf05C,EAAe,QAIhCf,EAAcvhD,QADdmhD,EACwBoB,EAEA,MAEhC,OAxBJj0B,EAAwC0zB,EAAxC1zB,EAAGC,GAAqCyzB,EAArCzzB,EAAGo0B,GAAkCX,EAAlCW,UAAWD,GAAuBV,EAAvBU,SAAUE,GAAaZ,EAAbY,SA6BnC,OACI,gCACI,gBAACxT,EAAAA,CACG1vC,IAAKijD,GACLj/B,OAAQA,EACR9e,QA5IiC,WACrC8e,EAEA09B,GAAU,IAIVC,IACAxE,EAAcwE,GACdrE,EAAmBh9C,QAAUqhD,GAEjCD,GAAU,GACd,EAiIYC,WAAYA,GAAc,GAC1B18C,SAAUA,IAEd,gBAAC+7C,GAAAA,CACG/9C,OAAQ,gBACR+gB,OAAQA,EACRhkB,IAAKgjD,GACL/jC,SAAUikC,GACVt0B,EAAGA,QAAAA,EAAK,EACRC,EAAGA,SAAAA,GAAK,EACRge,UAAWgV,EAAcvhD,QACzBi9C,YAAaA,EACbhrC,KAAMA,EACNka,QAASq1B,EACTZ,UAAWA,EACXjG,gBAAiBA,EACjBoC,mBAAoBA,EACpBC,mBAAoBA,EACpBb,WAAYA,EACZU,cAAeA,EACfF,SAAU5C,GAAU8G,QACpBjE,cApJa,Y,IAAGp8C,EAAAA,EAAAA,MACxBo8C,EAAcp8C,GAEd8kB,EAAc,CAAEljB,KAAM,eAAsCikB,QAAS,CAAE7lB,MAAAA,IAC3E,EAiJYutC,UAAWA,EACX5zB,eAAgBA,EAChBD,YAAaA,EACbgjC,iBAAkBA,EAClBC,oBAAqBA,EACrBwD,UA1KM,mBA2KNvD,WAAYA,EACZlD,QAASA,EACT9rB,WAAYA,IAI5B,EAEA0yB,GAAax2C,YAAc,e,68BChW3B,I,GAAMu4C,GAAyB3/C,EAAAA,GAAOwB,OAAM,MAG/B,SAACJ,G,OAAWA,EAAMR,MAAQQ,EAAMR,MAAQ,M,IACpC,SAACQ,G,OAAWA,EAAMwL,SAAWxL,EAAMwL,SAAW,C,IAC9C,SAACxL,G,OAAWA,EAAMsE,SAAWtE,EAAMsE,SAAW,M,GAEhD0E,EAAQnI,MACJqI,GACF,SAAClJ,G,OAAWA,EAAMunB,gBAAkB,OAAStoB,EAAU4B,K,IACrD,SAACb,G,OAAWA,EAAMunB,gBAAkB,OAAStoB,EAAUU,M,IAClD,SAACK,G,OAAWA,EAAMK,UAAWmP,EAAAA,EAAAA,IAAO,MAAO9O,EAAMC,QAAQ0F,OAAS3F,EAAMC,QAAQ0F,K,IAC3F,SAACrG,G,OAAWA,EAAMK,UAAWsH,EAAAA,EAAAA,IAAe,MAAOjH,EAAMC,QAAQyF,OAAS1F,EAAMC,QAAQyF,K,IAGjF,SAACpG,G,OAAWA,EAAMhC,QAAU0C,EAAMC,QAAQC,IAAMF,EAAM+F,KAAKQ,U,IAC1D,SAACjH,G,OAAWA,EAAMunB,gBAAkB,EAAI9d,EAAOC,O,IAK9D80C,IAAkB5/C,EAAAA,EAAAA,IAAOwpC,EAAAA,GAAPxpC,CAAewpC,MAOjCqW,GAAa7/C,EAAAA,GAAO4mB,KAAI,MASjBk5B,GAAmBriD,EAAAA,YAC5B,WAAsGjB,G,IAAnGwC,EAAAA,EAAAA,GAAIS,EAAAA,EAAAA,OAAQiC,EAAAA,EAAAA,QAASD,EAAAA,EAAAA,SAAUrC,EAAAA,EAAAA,QAASwB,EAAAA,EAAAA,MAAOgM,EAAAA,EAAAA,SAAUlH,EAAAA,EAAAA,SAAUy4C,EAAAA,EAAAA,WAAY,EAAZA,EAAYhtC,YAAAA,OAAAA,IAAc,OAC5F,OACI,gBAACwuC,GAAAA,CACGnjD,IAAKA,EACLwC,GAAIA,EACJG,eAAcM,EACdiC,QAASA,EACTD,SAAUA,EACVrC,QAASA,EACTwB,MAAOA,EACPgM,SAAUA,EACVlH,SAAUA,EACVxG,KAAM,UAEN,gBAAC2gD,GAAAA,KAAY1B,GAA0BhtC,GACvC,gBAACyuC,GAAAA,CAAgB/4C,KAAM/E,EAAM+F,KAAKG,UAAWpH,MAAO,MAAOkG,OAAQ,QAG/E,I,4sCAEJg5C,GAAiB14C,YAAc,mB,SCnEnB24C,G,iGAAAA,KAAAA,GAAAA,CAAAA,IAuEZ,IAAMC,IAAiBhgD,EAAAA,EAAAA,IAAOw5C,GAAPx5C,CAAew5C,MAEtB,SAACp4C,G,OAAUA,EAAMqa,Q,IACrB,SAACra,G,MAAU,GAAW,OAARA,EAAMgqB,EAAE,K,IACvB,SAAChqB,G,MAAU,GAAW,OAARA,EAAMiqB,EAAE,K,IACf,SAACjqB,G,MAA+B,SAApBA,EAAMioC,UAAuB,OAAS,GAAmB,OAAhBjoC,EAAMioC,UAAU,K,IAIjFmP,GAAO,WAAO,EAQdgF,GAAO//C,EAAAA,YACT,WA6BIjB,G,IA3BIwC,EAAAA,EAAAA,GACAS,EAAAA,EAAAA,OACAgc,EAAAA,EAAAA,SACA2P,EAAAA,EAAAA,EACAC,EAAAA,EAAAA,EACAge,EAAAA,EAAAA,UACA0Q,EAAAA,EAAAA,YACAv5B,EAAAA,EAAAA,OACAzR,EAAAA,EAAAA,KACA0uC,EAAAA,EAAAA,UACAx0B,EAAAA,EAAAA,QACAy0B,EAAAA,EAAAA,UACAjG,EAAAA,EAAAA,gBACAoC,EAAAA,EAAAA,mBACAC,EAAAA,EAAAA,mBACAb,EAAAA,EAAAA,WACAU,EAAAA,EAAAA,cACAD,EAAAA,EAAAA,cACA7O,EAAAA,EAAAA,UACA5zB,EAAAA,EAAAA,eACAD,EAAAA,EAAAA,YACAgjC,EAAAA,EAAAA,iBACAC,EAAAA,EAAAA,oBACAC,EAAAA,EAAAA,WACAlD,EAAAA,EAAAA,QACA9rB,EAAAA,EAAAA,WAIJ,OACI,gBAACpc,GAAAA,EAAMA,CAACC,KAAMA,EAAM6E,IAAK6pC,GACpBj9B,GACG,gBAACw/B,GAAAA,CACGxjD,IAAKA,EACLwC,GAAIA,EACJS,OAAQA,EACRsP,KAAMA,EACNka,QAASA,EACT2wB,QAAS8D,EACThE,cAAeA,EACfjC,gBAAiBA,EACjBoC,mBAAoBA,EACpBC,mBAAoBA,EACpBb,WAAYA,EACZU,cAAeA,EACfF,SAAU5C,GAAUoJ,OACpBpV,UAAWA,EACX5zB,eAAgBA,EAChBD,YAAaA,EACbgjC,iBAAkBA,EAClBC,oBAAqBA,EACrBx+B,SAAUA,EACV2P,EAAGA,EACHC,EAAGA,EACHge,UAAWA,EACX0Q,YAAaA,EACbG,WAAYA,EACZlD,QAASA,EACT9rB,WAAYA,IAKhC,IAGJsyB,GAAKp2C,YAAc,OAKZ,IAAM84C,GAAiE,Y,IAyL/Cj3B,E,IAxL3BjqB,GAAAA,OAAAA,IAAK,sBACLS,OAAAA,OAAAA,IAAS,kBACTwpB,EAAAA,EAAAA,QAAAA,EAAAA,EACAla,KAAAA,OAAAA,IAAO,EAAA7R,SAAS8R,KAAI,MACpBuU,aAAAA,OAAAA,IAAe,OACf2oB,EAAAA,EAAAA,QAAAA,EAAAA,EACA9pB,cAAAA,OAAAA,IAAgB,EAAAo2B,GAAIA,EACpBl5C,EAAAA,EAAAA,SAAAA,EAAAA,EACAu+C,KAAAA,OAAAA,IAAO,KACPj9C,EAAAA,EAAAA,MACAgM,EAAAA,EAAAA,SACAlH,EAAAA,EAAAA,SACAjE,EAAAA,EAAAA,SACArC,EAAAA,EAAAA,QACAyrC,EAAAA,EAAAA,UAAAA,EAAAA,EACAiT,UAAAA,OAAAA,IAAY,uBACZC,kBAAAA,OAAAA,IAAoB,SACpBC,eAAAA,OAAAA,IAAiB,SACjBC,gBAAAA,OAAAA,IAAkB,KAClB/D,EAAAA,EAAAA,WACAlD,EAAAA,EAAAA,QACA9rB,EAAAA,EAAAA,WAE4BztB,EAAAA,GAAAA,EAAAA,SAAeogD,GAAAA,GAApCr9B,EAAqB/iB,EAAAA,GAAbygD,EAAazgD,EAAAA,GACQA,EAAAA,GAAAA,EAAAA,SAAuB8lB,GAAAA,GAApD46B,EAA6B1gD,EAAAA,GAAjBi8C,EAAiBj8C,EAAAA,GACUA,EAAAA,GAAAA,EAAAA,SAAiCq5C,GAAiBsH,OAAK,GAA9F3G,EAAuCh6C,EAAAA,GAAtBo8C,EAAsBp8C,EAAAA,GACxCq8C,EAAqBr8C,EAAAA,OAAqB8lB,GAEZ9lB,EAAAA,GAAAA,EAAAA,SAAuB8lB,GAAAA,GAApD01B,EAA6Bx7C,EAAAA,GAAjBk8C,EAAiBl8C,EAAAA,GAC9Bs8C,EAAct8C,EAAAA,OAAa,GAC3B4gD,EAAgB5gD,EAAAA,OAA8B,QACdA,EAAAA,GAAAA,EAAAA,SAAe,OAA9CuZ,EAA+BvZ,EAAAA,GAAlBwZ,EAAkBxZ,EAAAA,GACUA,EAAAA,GAAAA,EAAAA,UAAe,MAAxDu8C,GAAyCv8C,EAAAA,GAAvBw8C,GAAuBx8C,EAAAA,GACFA,GAAAA,GAAAA,EAAAA,SAAewrB,GAAAA,GAAtDq1B,GAAuC7gD,GAAAA,GAAtB8gD,GAAsB9gD,GAAAA,GAExC0iD,GAAY1iD,EAAAA,OAAa+iB,GAGzB4/B,IAAiB/iD,EAAAA,GAAAA,GAAY8gD,IAEnCzhD,EAAAA,EAAAA,YAAU,WAEFyhD,IAAeiC,IAGK,mBAAb9gD,GACPA,EAAS6+C,EAEjB,GAAG,CAACA,EAAY7+C,EAAU8gD,KAK1B,IAEMC,GAAgD,WAClD,GAAI7/B,EAIA,OAFA09B,GAAU,QACViC,GAAUrjD,SAAU,GAGxBohD,GAAU,GACVjE,IAAoB,GACpBkG,GAAUrjD,QAAU0jB,CACxB,EAiCM8/B,GAAsC,SAAC5hD,GAEpCyhD,GAAUrjD,UAIX4B,EAAE7B,QAAU,EAAGA,OAAuBmC,KAAO,GAAM,OAAHA,EAAG,WAIvDk/C,GAAU,GACViC,GAAUrjD,SAAU,EACpBslB,EAAc,CAAEljB,KAAM,iBAC1B,EAEAihD,GAAUrjD,QAAU0jB,EACpBxjB,OAAOG,oBAAoB,SAAUmjD,IACrCtjD,OAAOI,iBAAiB,SAAUkjD,IAClCpjD,SAASC,oBAAoB,SAAUmjD,IAAsB,GAC7DpjD,SAASE,iBAAiB,SAAUkjD,IAAsB,IAE1D5jD,EAAAA,EAAAA,YAAU,WAENo9C,EAAmBh9C,QAAUymB,EAC7Bo2B,EAAcp2B,GACdm2B,EAAcn2B,EAClB,GAAG,CAACA,IAEJ,IAAMg1B,GAAY,SAACH,GACf,MAAqB,aAAdA,aAAAA,EAAAA,EAAKl5C,KAChB,EAEMi5C,GAAgB,SAACz/B,GACnB,YAAuB6P,KAAhB7P,aAAAA,EAAAA,EAAM5Z,MACjB,GAEApC,EAAAA,EAAAA,YAAU,WAEN,IAAM8hD,EAAyBxnC,EAAYgC,cAAcJ,OAEnD6lC,EAAgB,SAACnhD,G,OAAkBA,EAAMohD,oBAAoBzlC,SAASulC,E,EACtEG,EAAqB,SAACplC,GAExB,GAAIklC,EAAcllC,EAAMza,OACpB,OAAOya,EAIX,IAAMqlC,EAAuBrlC,EAAM0P,QAAQxQ,QAAO,SAAComC,G,OAAgBJ,EAAcI,EAAY9zB,K,IAE7F,MAAO,CACHjsB,MAAOya,EAAMza,MACbmqB,QAAS21B,EAEjB,EAYMN,EAAkBr1B,EACnBvV,KAAI,SAACqV,G,OACFovB,GAAcpvB,GACR41B,EAAmB51B,GACnBwvB,GAAUxvB,GAPb,CAAE7pB,KAAM,UAAW+pB,QAQKF,EAdEE,QAC5BvV,KAAI,SAACqV,G,OAAYovB,GAAcpvB,GAAU41B,EAAmB51B,GAAUA,C,IACtEtQ,QAAO,SAACsQ,G,OACLovB,GAAcpvB,GAAUA,EAAOE,QAAQrT,OAAS6oC,EAAc11B,EAAOgC,K,KAYnEhC,C,IAETtQ,QAAO,SAACsQ,G,OACLovB,GAAcpvB,IAERwvB,GAAUxvB,GADVA,EAAOE,QAAQrT,OAGf6oC,EAAc11B,EAAOgC,K,IAGnCwzB,GAAmBD,EACvB,GAAG,CAACtnC,EAAaiS,IAGjB,IAAMs3B,G,QAAqBt3B,EAAAA,EACtBkjB,SAAQ,SAACzzB,GACN,OAAIy/B,GAAcz/B,GACPA,EAAKuQ,QAAQu3B,OACbjI,GAAU7/B,GACVA,EAAKuQ,QAAQkjB,SAAQ,SAACsU,G,OACzBtI,GAAcsI,GAAiBA,EAAcx3B,QAAQu3B,OAASC,C,IAG3D/nC,CAEf,IACCshB,MAAK,SAACthB,G,OAASA,EAAKpb,QAAU6gD,C,WAZRl1B,IAAAA,OAAAA,EAAAA,EAYqB8B,KAEA+zB,IAAAA,EAAAA,GAAAA,IAAY,CACxDhB,UAAAA,EACAiB,qBAAsBC,GAAAA,GACtBC,WAAY,EACR1xB,EAAAA,GAAAA,IAAO,IACP9gB,EAAAA,GAAAA,IAAK,CACDyyC,MAAAA,SAAM,G,IAAEC,EAAF,EAAEA,MAAOC,EAAT,EAASA,eAAgBC,EAAzB,EAAyBA,gBAAiBC,EAA1C,EAA0CA,SACxCvB,GAEAvqC,OAAO+rC,OAAOD,EAASE,SAAStiC,MAAO,CACnCtc,MAAO,GAAyB,OAAtBu+C,EAAMM,UAAU7+C,MAAM,QAGpCo9C,GAEAxqC,OAAO+rC,OAAOD,EAASE,SAAStiC,MAAO,CACnCxX,SAAU,GAAkB,OAAf05C,EAAe,QAIhCf,EAAcvhD,QADdmhD,EACwBoB,EAEA,MAEhC,OAxBJj0B,GAAwC0zB,GAAxC1zB,EAAGC,GAAqCyzB,GAArCzzB,EAAGo0B,GAAkCX,GAAlCW,UAAWD,GAAuBV,GAAvBU,SAAUE,GAAaZ,GAAbY,SA6BnC,OACI,gCACKxT,GACG,gBAACA,EAAAA,CACG1vC,IAAKijD,GACLzgD,GAAI,GAAM,OAAHA,EAAG,WACVS,OAAQ,GAAU,OAAPA,EAAO,WAClBiC,QAAS2+C,GACTlC,WAAYoC,GACZ9+C,SAAUA,EACVrC,QAASA,EACTwB,MAAOA,EACPgM,SAAUA,EACVlH,SAAUA,KAGhBwmC,GACE,gBAAC4T,GAAgBA,CACbtjD,IAAKijD,GACLzgD,GAAI,GAAM,OAAHA,EAAG,WACVS,OAAQ,GAAU,OAAPA,EAAO,WAClBiC,QAAS2+C,GACTlC,WAAYoC,GACZ9+C,SAAUA,EACVrC,QAASA,EACTwB,MAAOA,EACPgM,SAAUA,EACVlH,SAAUA,EACVyL,YAAa,kBAGrB,gBAACqsC,GAAIA,CACDx+C,GAAIA,EACJS,OAAQA,EACR+gB,OAAQA,EACRhkB,IAAKgjD,GACL/jC,SAAUikC,GACVt0B,EAAGA,SAAAA,GAAK,EACRC,EAAGA,SAAAA,GAAK,EACRge,UAAWgV,EAAcvhD,QACzBi9C,YAAaA,EACbhrC,KAAMA,EACNka,QAASq1B,GACTZ,UA/LM,Y,IAAGpgD,EAAAA,EAAAA,MACZkjB,SAIgB,IAAVljB,IACPA,EAAQ,IAEZ4gD,GAAU,GACViC,GAAUrjD,SAAU,EACpBslB,EAAc,CAAEljB,KAAM,gBAElBkhD,KAAmB9iD,GAIvB8kB,EAAc,CAAEljB,KAAM,eAAoCikB,QAAS,CAAE7lB,MAAAA,KACzE,EA+KYm6C,gBAAiBA,EACjBoC,mBAAoBA,EACpBC,mBAAoBA,EACpBb,WAAYA,EACZU,cAAeA,EACfF,SAAU5C,GAAU8G,QACpBjE,cAlNa,Y,IAAGp8C,EAAAA,EAAAA,MAAO29C,EAAAA,EAAAA,QAC/BvB,EAAcp8C,QACS,IAAZ29C,IACPlB,EAAYj9C,QAAUm+C,GAG1B74B,EAAc,CACVljB,KAAM,mBACNikB,QAAS,CAAEu9B,UAAWpjD,IAE9B,EAyMYutC,UAAWA,EACX5zB,eAAgBA,EAChBD,YAAaA,EACbgjC,iBAAkBA,GAClBC,oBAAqBA,GACrBwD,UAtOM,qBAuONvD,WAAYA,EACZlD,QAASA,EACT9rB,WAAYA,IAI5B,E,+hCAEAg1B,GAAW94C,YAAc,aC7bzB,IAAMuf,GAAkB3mB,EAAAA,GAAOlB,MAAK,KAEdsL,EAAQyc,SACVzc,EAAQsC,QACXrM,EAAU4B,MACR5B,EAAUU,QACV,SAACK,G,OAAyCA,EAAM0lB,UAAY,MAAQ,K,IAC1E,SAAC1lB,G,OAAyCA,EAAMhC,QAAU0C,EAAMC,QAAQC,IAAMF,EAAM+F,KAAKO,U,IACvF,SAAChH,G,OAAyCA,EAAMK,SAAW,MAAQ,G,IAG5EulB,GAA0BhnB,EAAAA,GAAOC,IAAG,KACzBI,EAAUqM,QACRrM,EAAU4B,OAChB,SAACb,G,OACNA,EAAMhC,QAAU0C,EAAMC,QAAQC,IAAMF,EAAMC,QAAQyF,K,GACvC4C,EAAQnI,OAKd0+C,GAA2E,Y,IACpF3hD,EAAAA,EAAAA,GACAyC,EAAAA,EAAAA,SACArC,EAAAA,EAAAA,QACAN,EAAAA,EAAAA,MACAuoB,EAAAA,EAAAA,kBACAP,EAAAA,EAAAA,UACG1lB,EAAAA,GAAAA,EAAAA,CANHpC,KACAyC,WACArC,UACAN,QACAuoB,oBACAP,cAGA,OACI,gCACI,gBAACH,GAAeA,CAACllB,SAAUA,EAAUrC,QAASA,EAAS0nB,UAAWA,EAAWrkB,QAAS,GAAM,OAAHzD,EAAG,YACvFF,GAEL,gBAACohD,G,uUAAUA,CAAAA,CAAClhD,GAAIA,EAAIyC,SAAUA,EAAUrC,QAASA,GAAagC,IAC7DimB,GACG,gBAACL,GAAuBA,CAAC5nB,QAASA,GAAUioB,GAI5D,E,ghEACAs5B,GAAgBv5C,YAAc,kBCvC9B,IAAMw5C,GAAwB5gD,EAAAA,GAAOC,IAAG,MAC3B,SAACmB,G,OAAsCA,EAAMR,K,GAErCiK,EAAOxC,WACJvG,EAAM+F,KAAKQ,YAE7B,SAACjH,G,OACCA,EAAMy/C,YACN,gFAI0C,OAAtB/+C,EAAM+F,KAAKQ,WAAW,oF,IAY5Cy4C,GAAkB9gD,EAAAA,GAAOqC,MAAK,MACnB,SAACjB,G,OAAoCA,EAAMgb,Q,GAG7ChS,EAAQnI,OACN,SAACb,G,OAAoCA,EAAMgb,Q,IAItD,SAAChb,G,OACCA,EAAMy/C,YACL,2D,IAMH90C,IAAuB/L,EAAAA,EAAAA,IAAO2B,EAAP3B,CAAqB2B,KACnCyI,EAAQsC,SAGVq0C,GAAkBtjD,EAAAA,YAC3B,WAEIjB,G,IADEc,EAAAA,EAAAA,MAAOiC,EAAAA,EAAAA,OAAQ,EAARA,EAAQqB,MAAAA,OAAAA,IAAQ,eAAQwb,SAAAA,OAAAA,IAAW,EAAA/b,EAAU4B,MAAK,EAAEvC,EAAAA,EAAAA,QAASD,EAAAA,EAAAA,OAAQ6nB,EAAAA,EAAAA,UAAW8C,EAAAA,EAAAA,UAAchpB,EAAAA,GAAAA,EAAAA,CAArG9D,QAAOiC,SAAQqB,QAAgBwb,WAA4B1c,UAASD,SAAQ6nB,YAAW8C,cAGjE1Y,EAAAA,IAAAA,EAAAA,EAAAA,UAA8B,WAA/CqnB,EAAiBrnB,EAAAA,GAAXoyB,EAAWpyB,EAAAA,GACUA,EAAAA,IAAAA,EAAAA,EAAAA,UAASpU,QAAAA,EAAS,OAA7C8zC,EAA2B1/B,EAAAA,GAAhBsvC,EAAgBtvC,EAAAA,GAC5BuvC,GAAW1jD,EAAAA,EAAAA,QAAyB,OAE1CwuC,EAAAA,EAAAA,qBAAsEvvC,GAAK,W,OAAMykD,EAASnkD,O,IAE1F,IAWMokD,EAAoB,W,IAEtBD,EADAnd,EAAQ,SACQ,QAAhBmd,EAAAA,EAASnkD,eAATmkD,IAAAA,GAAAA,EAAkBjxC,OACtB,EAEA,OACI,gBAAC4wC,G,uUAAAA,CAAAA,CACGhgD,MAAOA,EACPigD,WAAqB,SAAT9nB,EACZr3B,QAASw/C,EACT/hD,eAAcM,GACV2B,GAEJ,gBAAC0/C,GAAAA,CACGxjD,MAAO8zC,EACP7xC,OA1BO,SAACb,GACH,UAATq6B,IACA+K,EAAQ,QACRvkC,EAAOb,EAAE7B,OAAOS,OAExB,EAsBYgC,SApBS,SAACZ,GAClBsiD,EAAatiD,EAAE7B,OAAOS,MAC1B,EAmBY01C,QAASkO,EACT9kC,SAAUA,EACVyN,SAAmB,SAATkP,EACV8nB,WAAqB,SAAT9nB,EACZ55B,eAAc,GAAU,OAAPM,EAAO,UACxBjD,IAAKykD,EACL35B,UAAWA,EACXrgB,aAAYmjB,IAEf1qB,GACG,gBAACqM,GAAoBA,CACjBG,MAAO,QACPC,UAAWiQ,EACXhQ,WAAYgQ,EACZjd,eAAc,GAAU,OAAPM,EAAO,sBAK5C,IAEJshD,GAAgB35C,YAAc,kB,6kBCvH9B,IAYA,EAZwF,Y,IACpFP,EAAAA,EAAAA,KACA2I,EAAAA,EAAAA,MACA1I,EAAAA,EAAAA,OACAlG,EAAAA,EAAAA,MACG6pB,EAAAA,EAAAA,EAAAA,CAJH5jB,OACA2I,QACA1I,SACAlG,U,OAGA,gBAAC8pB,EAAAA,E,sUAAOA,CAAAA,CAACC,QAAQ,sBAAsB7jB,OAAQA,EAAQlG,MAAOA,EAAO4O,MAAOA,EAAO3I,KAAMA,GAAU4jB,GAC/F,gBAACG,OAAAA,CAAKC,EAAE,mX,ECjBhB,G,8jBCSA,IAYA,EAZ0F,Y,IACtFhkB,EAAAA,EAAAA,KACA2I,EAAAA,EAAAA,MACA1I,EAAAA,EAAAA,OACAlG,EAAAA,EAAAA,MACG6pB,EAAAA,EAAAA,EAAAA,CAJH5jB,OACA2I,QACA1I,SACAlG,U,OAGA,gBAAC8pB,EAAAA,E,sUAAOA,CAAAA,CAACC,QAAQ,sBAAsB7jB,OAAQA,EAAQlG,MAAOA,EAAO4O,MAAOA,EAAO3I,KAAMA,GAAU4jB,GAC/F,gBAACG,OAAAA,CAAKC,EAAE,mf,ECjBhB,G,6jBCSA,IAMA,EANa,Y,IAAGhkB,EAAAA,EAAAA,KAAM2I,EAAAA,EAAAA,MAAO1I,EAAAA,EAAAA,OAAQlG,EAAAA,EAAAA,MAAU6pB,EAAAA,EAAAA,EAAAA,CAA/B5jB,OAAM2I,QAAO1I,SAAQlG,U,OACjC,gBAAC8pB,EAAAA,E,sUAAOA,CAAAA,CAACC,QAAQ,sBAAsB7jB,OAAQA,EAAQlG,MAAOA,EAAO4O,MAAOA,EAAO3I,KAAMA,GAAU4jB,GAC/F,gBAACG,OAAAA,CAAKC,EAAE,qtB,ECXhB,G,ihCCOA,IAkDA,EAlD8F,Y,IAC1F/jB,EAAAA,EAAAA,OACAlG,EAAAA,EAAAA,MACG6pB,EAAAA,EAAAA,EAAAA,CAFH3jB,SACAlG,U,OAGA,gBAAC8pB,EAAAA,E,sUAAOA,CAAAA,CAACC,QAAQ,cAAc7jB,OAAQA,EAAQlG,MAAOA,EAAO4O,MAAO,mBAAuBib,GACvF,gBAACG,OAAAA,CACGC,EAAE,wJACFhkB,KAAK,YAET,gBAACs6C,OAAAA,CAAKt6C,KAAK,OAAOC,OAAO,SAASs6C,GAAG,QAAQxgD,MAAM,SAASwqB,EAAE,QAAQC,EAAE,WACxE,gBAACT,OAAAA,CACGC,EAAE,kpBACFhkB,KAAK,YAET,gBAAC+jB,OAAAA,CACGC,EAAE,ofACFhkB,KAAK,YAET,gBAACs6C,OAAAA,CAAKt6C,KAAK,OAAOC,OAAO,SAASs6C,GAAG,MAAMxgD,MAAM,SAASwqB,EAAE,SAASC,EAAE,WACvE,gBAAC81B,OAAAA,CAAKt6C,KAAK,OAAOC,OAAO,SAASs6C,GAAG,MAAMxgD,MAAM,SAASwqB,EAAE,QAAQC,EAAE,WACtE,gBAACT,OAAAA,CACGC,EAAE,mHACFhkB,KAAK,YAET,gBAAC+jB,OAAAA,CAAKC,EAAE,uDAAuDhkB,KAAK,YACpE,gBAAC+jB,OAAAA,CACGC,EAAE,0FACFhkB,KAAK,YAET,gBAAC+jB,OAAAA,CACGC,EAAE,oHACFhkB,KAAK,YAET,gBAACw6C,SAAAA,CAAOC,GAAG,SAASC,GAAG,SAAS16C,KAAK,OAAOkW,EAAE,UAC9C,gBAACC,IAAAA,CAAEnW,KAAK,WACJ,gBAAC+jB,OAAAA,CAAKC,EAAE,iJACR,gBAACD,OAAAA,CAAKC,EAAE,mJACR,gBAACD,OAAAA,CAAKC,EAAE,mJACR,gBAACD,OAAAA,CAAKC,EAAE,0DACR,gBAACD,OAAAA,CAAKC,EAAE,+EACR,gBAACD,OAAAA,CAAKC,EAAE,iFAEZ,gBAACD,OAAAA,CAAKC,EAAE,2EAA2EhkB,KAAK,YACxF,gBAAC+jB,OAAAA,CAAKC,EAAE,+EAA+EhkB,KAAK,YAC5F,gBAAC+jB,OAAAA,CAAKC,EAAE,yEAAyEhkB,KAAK,YACtF,gBAAC+jB,OAAAA,CAAKC,EAAE,+EAA+EhkB,KAAK,Y,ECrDpG,ICSA,I,kgBCAA,IAeA,EAfwF,Y,IACpFA,EAAAA,EAAAA,KACA2I,EAAAA,EAAAA,MACA1I,EAAAA,EAAAA,OACAlG,EAAAA,EAAAA,MACG6pB,EAAAA,EAAAA,EAAAA,CAJH5jB,OACA2I,QACA1I,SACAlG,U,OAGA,gBAAC8pB,EAAAA,E,sUAAOA,CAAAA,CAACC,QAAQ,sBAAsB7jB,OAAQA,EAAQlG,MAAOA,EAAO4O,MAAOA,EAAO3I,KAAMA,GAAU4jB,GAC/F,gBAACzN,IAAAA,KACG,gBAAC4N,OAAAA,CAAKC,EAAE,wPACR,gBAACD,OAAAA,CAAKC,EAAE,md,ECnBpB,I,4eCSA,IAYA,EAZwF,Y,IACpFhkB,EAAAA,EAAAA,KACA2I,EAAAA,EAAAA,MACA1I,EAAAA,EAAAA,OACAlG,EAAAA,EAAAA,MACG6pB,EAAAA,EAAAA,EAAAA,CAJH5jB,OACA2I,QACA1I,SACAlG,U,OAGA,gBAAC8pB,EAAAA,E,sUAAOA,CAAAA,CAACC,QAAQ,sBAAsB7jB,OAAQA,EAAQlG,MAAOA,EAAO4O,MAAOA,EAAO3I,KAAMA,GAAU4jB,GAC/F,gBAACG,OAAAA,CAAKC,EAAE,4Y,ECjBhB,I,4eCSA,IAYA,EAZkF,Y,IAC9EhkB,EAAAA,EAAAA,KACA2I,EAAAA,EAAAA,MACA1I,EAAAA,EAAAA,OACAlG,EAAAA,EAAAA,MACG6pB,EAAAA,EAAAA,EAAAA,CAJH5jB,OACA2I,QACA1I,SACAlG,U,OAGA,gBAAC8pB,EAAAA,E,sUAAOA,CAAAA,CAACC,QAAQ,oBAAoB7jB,OAAQA,EAAQlG,MAAOA,EAAO4O,MAAOA,EAAO3I,KAAMA,GAAU4jB,GAC7F,gBAACG,OAAAA,CAAKC,EAAE,0sB,ECjBhB,I,sfCSA,IAUA,EAVoB,Y,IAAGhkB,EAAAA,EAAAA,KAAM2I,EAAAA,EAAAA,MAAO1I,EAAAA,EAAAA,OAAQlG,EAAAA,EAAAA,MAAU6pB,EAAAA,EAAAA,EAAAA,CAA/B5jB,OAAM2I,QAAO1I,SAAQlG,U,OACxC,gBAAC8pB,EAAAA,E,sUAAOA,CAAAA,CAACC,QAAQ,gBAAgB7jB,OAAQA,EAAQlG,MAAOA,EAAO4O,MAAOA,EAAO3I,KAAMA,GAAU4jB,GACzF,gBAACG,OAAAA,CACG42B,SAAS,UACTC,SAAS,UACT52B,EAAE,2N,ECdd,I,4eCSA,IAUA,EAVa,Y,IAAGhkB,EAAAA,EAAAA,KAAM2I,EAAAA,EAAAA,MAAO1I,EAAAA,EAAAA,OAAQlG,EAAAA,EAAAA,MAAU6pB,EAAAA,EAAAA,EAAAA,CAA/B5jB,OAAM2I,QAAO1I,SAAQlG,U,OACjC,gBAAC8pB,EAAAA,E,sUAAOA,CAAAA,CAACC,QAAQ,gBAAgB7jB,OAAQA,EAAQlG,MAAOA,EAAO4O,MAAOA,EAAO3I,KAAMA,GAAU4jB,GACzF,gBAACG,OAAAA,CACG42B,SAAS,UACTC,SAAS,UACT52B,EAAE,sP,ECdd,I,4eCSA,IAwBA,EAxB4G,Y,IACxGhkB,EAAAA,EAAAA,KACA2I,EAAAA,EAAAA,MACA1I,EAAAA,EAAAA,OACAlG,EAAAA,EAAAA,MACG6pB,EAAAA,EAAAA,EAAAA,CAJH5jB,OACA2I,QACA1I,SACAlG,U,OAGA,gBAAC8pB,EAAAA,E,sUAAOA,CAAAA,CAACC,QAAQ,eAAe7jB,OAAQA,EAAQlG,MAAOA,EAAO4O,MAAOA,EAAO3I,KAAMA,GAAU4jB,GACxF,gBAACG,OAAAA,CACG/jB,KAAK,UACLgkB,EAAE,+LAEN,gBAACD,OAAAA,CACG/jB,KAAK,UACLgkB,EAAE,iLAEN,gBAACD,OAAAA,CACG/jB,KAAK,UACLgkB,EAAE,8WAEN,gBAACD,OAAAA,CAAK/jB,KAAK,UAAUgkB,EAAE,+D,EC7B/B,I,4eCSA,IAiEA,EAjEwG,Y,IACpGhkB,EAAAA,EAAAA,KACA2I,EAAAA,EAAAA,MACA1I,EAAAA,EAAAA,OACAlG,EAAAA,EAAAA,MACG6pB,EAAAA,EAAAA,EAAAA,CAJH5jB,OACA2I,QACA1I,SACAlG,U,OAGA,gBAAC8pB,EAAAA,E,sUAAOA,CAAAA,CAACC,QAAQ,kBAAkB7jB,OAAQA,EAAQlG,MAAOA,EAAO4O,MAAOA,EAAO3I,KAAMA,GAAU4jB,GAC3F,gBAACG,OAAAA,CAAK/jB,KAAK,UAAUgkB,EAAE,wFACvB,gBAACD,OAAAA,CACG/jB,KAAK,UACLgkB,EAAE,qNAEN,gBAACD,OAAAA,CAAK/jB,KAAK,UAAUgkB,EAAE,oDACvB,gBAACD,OAAAA,CAAK/jB,KAAK,UAAUgkB,EAAE,oDACvB,gBAACD,OAAAA,CAAK/jB,KAAK,UAAUgkB,EAAE,oDACvB,gBAACD,OAAAA,CACG/jB,KAAK,UACLgkB,EAAE,2RAEN,gBAACD,OAAAA,CACG/jB,KAAK,UACLgkB,EAAE,8OAEN,gBAACw2B,SAAAA,CAAOx6C,KAAK,UAAUy6C,GAAG,OAAOC,GAAG,QAAQxkC,EAAE,SAC9C,gBAACskC,SAAAA,CAAOx6C,KAAK,UAAUy6C,GAAG,OAAOC,GAAG,QAAQxkC,EAAE,SAC9C,gBAACskC,SAAAA,CAAOx6C,KAAK,UAAUy6C,GAAG,KAAKC,GAAG,QAAQxkC,EAAE,SAC5C,gBAAC6N,OAAAA,CACG/jB,KAAK,OACLgkB,EAAE,wiBAEN,gBAACD,OAAAA,CAAK/jB,KAAK,UAAUgkB,EAAE,6DACvB,gBAACD,OAAAA,CAAK/jB,KAAK,UAAUgkB,EAAE,6DACvB,gBAACs2B,OAAAA,CAAKt6C,KAAK,UAAUukB,EAAE,OAAOC,EAAE,QAAQzqB,MAAM,MAAMkG,OAAO,OAAOs6C,GAAG,SACrE,gBAACD,OAAAA,CAAKt6C,KAAK,UAAUukB,EAAE,QAAQC,EAAE,QAAQzqB,MAAM,MAAMkG,OAAO,OAAOs6C,GAAG,SACtE,gBAACD,OAAAA,CAAKt6C,KAAK,UAAUukB,EAAE,QAAQC,EAAE,QAAQzqB,MAAM,MAAMkG,OAAO,QAAQs6C,GAAG,SACvE,gBAACx2B,OAAAA,CACG/jB,KAAK,OACLgkB,EAAE,6cAEN,gBAACD,OAAAA,CAAK/jB,KAAK,UAAUgkB,EAAE,qEACvB,gBAACD,OAAAA,CAAK/jB,KAAK,UAAUgkB,EAAE,qEACvB,gBAACD,OAAAA,CACG/jB,KAAK,UACLgkB,EAAE,wGAEN,gBAACD,OAAAA,CACG/jB,KAAK,UACLgkB,EAAE,8FAEN,gBAACD,OAAAA,CACG/jB,KAAK,UACLgkB,EAAE,4GAEN,gBAACD,OAAAA,CACG/jB,KAAK,UACLgkB,EAAE,+JAEN,gBAACD,OAAAA,CACG/jB,KAAK,OACLgkB,EAAE,4M,ECrEd,I,4eCSA,IAuBA,EAvB4G,Y,IACxGhkB,EAAAA,EAAAA,KACA2I,EAAAA,EAAAA,MACA1I,EAAAA,EAAAA,OACAlG,EAAAA,EAAAA,MACG6pB,EAAAA,EAAAA,EAAAA,CAJH5jB,OACA2I,QACA1I,SACAlG,U,OAGA,gBAAC8pB,EAAAA,E,sUAAOA,CAAAA,CAACC,QAAQ,eAAe7jB,OAAQA,EAAQlG,MAAOA,EAAO4O,MAAOA,EAAO3I,KAAMA,GAAU4jB,GACxF,gBAACG,OAAAA,CAAK/jB,KAAK,UAAUgkB,EAAE,8EACvB,gBAACD,OAAAA,CACG/jB,KAAK,UACLgkB,EAAE,2LAEN,gBAACD,OAAAA,CACG/jB,KAAK,UACLgkB,EAAE,uMAEN,gBAACs2B,OAAAA,CAAKt6C,KAAK,UAAUukB,EAAE,QAAQC,EAAE,QAAQzqB,MAAM,OAAOkG,OAAO,OAAOs6C,GAAG,SACvE,gBAACD,OAAAA,CAAKt6C,KAAK,UAAUukB,EAAE,QAAQC,EAAE,QAAQzqB,MAAM,OAAOkG,OAAO,QAAQs6C,GAAG,SACxE,gBAACD,OAAAA,CAAKt6C,KAAK,UAAUukB,EAAE,QAAQC,EAAE,QAAQzqB,MAAM,OAAOkG,OAAO,OAAOs6C,GAAG,S,EC5B/E,I,4eCSA,IAqCA,EArCgG,Y,IAC5Fv6C,EAAAA,EAAAA,KACA2I,EAAAA,EAAAA,MACA1I,EAAAA,EAAAA,OACAlG,EAAAA,EAAAA,MACG6pB,EAAAA,EAAAA,EAAAA,CAJH5jB,OACA2I,QACA1I,SACAlG,U,OAGA,gBAAC8pB,EAAAA,E,sUAAOA,CAAAA,CAACC,QAAQ,kBAAkB7jB,OAAQA,EAAQlG,MAAOA,EAAO4O,MAAOA,EAAO3I,KAAMA,GAAU4jB,GAC3F,gBAACG,OAAAA,CACG/jB,KAAK,UACLgkB,EAAE,6vBAEN,gBAACD,OAAAA,CACG/jB,KAAK,UACLgkB,EAAE,kXAEN,gBAACs2B,OAAAA,CAAKt6C,KAAK,UAAUukB,EAAE,MAAMC,EAAE,QAAQzqB,MAAM,MAAMkG,OAAO,OAAOs6C,GAAG,SACpE,gBAACD,OAAAA,CAAKt6C,KAAK,UAAUukB,EAAE,OAAOC,EAAE,QAAQzqB,MAAM,MAAMkG,OAAO,OAAOs6C,GAAG,SACrE,gBAACD,OAAAA,CAAKt6C,KAAK,UAAUukB,EAAE,MAAMC,EAAE,QAAQzqB,MAAM,MAAMkG,OAAO,OAAOs6C,GAAG,SACpE,gBAACD,OAAAA,CAAKt6C,KAAK,UAAUukB,EAAE,OAAOC,EAAE,QAAQzqB,MAAM,MAAMkG,OAAO,OAAOs6C,GAAG,SACrE,gBAACD,OAAAA,CAAKt6C,KAAK,UAAUukB,EAAE,MAAMC,EAAE,QAAQzqB,MAAM,MAAMkG,OAAO,OAAOs6C,GAAG,SACpE,gBAACD,OAAAA,CAAKt6C,KAAK,UAAUukB,EAAE,OAAOC,EAAE,QAAQzqB,MAAM,MAAMkG,OAAO,OAAOs6C,GAAG,SACrE,gBAACD,OAAAA,CAAKt6C,KAAK,UAAUukB,EAAE,QAAQC,EAAE,QAAQzqB,MAAM,MAAMkG,OAAO,OAAOs6C,GAAG,SACtE,gBAACD,OAAAA,CAAKt6C,KAAK,UAAUukB,EAAE,OAAOC,EAAE,QAAQzqB,MAAM,MAAMkG,OAAO,OAAOs6C,GAAG,SACrE,gBAACD,OAAAA,CAAKt6C,KAAK,UAAUukB,EAAE,OAAOC,EAAE,QAAQzqB,MAAM,MAAMkG,OAAO,OAAOs6C,GAAG,SACrE,gBAACx2B,OAAAA,CAAK/jB,KAAK,UAAUgkB,EAAE,8EACvB,gBAACD,OAAAA,CACG/jB,KAAK,UACLgkB,EAAE,gKAEN,gBAACD,OAAAA,CACG/jB,KAAK,OACLgkB,EAAE,yG,ECzCd,I,4eCSA,IAgGA,EAhGyE,Y,IACrEhkB,EAAAA,EAAAA,KACA2I,EAAAA,EAAAA,MACA1I,EAAAA,EAAAA,OACAlG,EAAAA,EAAAA,MACG6pB,EAAAA,EAAAA,EAAAA,CAJH5jB,OACA2I,QACA1I,SACAlG,U,OAGA,gBAAC8pB,EAAAA,E,sUAAOA,CAAAA,CAACC,QAAQ,oBAAoB7jB,OAAQA,EAAQlG,MAAOA,EAAO4O,MAAOA,EAAO3I,KAAMA,GAAU4jB,GAC7F,gBAACzN,IAAAA,CAAEhe,GAAG,UAAU0iD,YAAU,WACtB,gBAAC1kC,IAAAA,CAAEhe,GAAG,YAAY0iD,YAAU,WACxB,gBAACP,OAAAA,CAAKt6C,KAAK,UAAUukB,EAAE,OAAOC,EAAE,OAAOzqB,MAAM,SAASkG,OAAO,SAASs6C,GAAG,SACzE,gBAACpkC,IAAAA,CAAE2kC,QAAQ,OACP,gBAAC/2B,OAAAA,CAAK/jB,KAAK,OAAOgkB,EAAE,2DAExB,gBAACw2B,SAAAA,CAAOx6C,KAAK,OAAOy6C,GAAG,QAAQC,GAAG,QAAQxkC,EAAE,SAC5C,gBAACskC,SAAAA,CAAOx6C,KAAK,OAAOy6C,GAAG,QAAQC,GAAG,QAAQxkC,EAAE,SAC5C,gBAACskC,SAAAA,CAAOx6C,KAAK,OAAOy6C,GAAG,QAAQC,GAAG,QAAQxkC,EAAE,SAC5C,gBAAC6N,OAAAA,CACG/jB,KAAK,UACLgkB,EAAE,yHACFG,UAAU,0CAEd,gBAACJ,OAAAA,CACG/jB,KAAK,UACLgkB,EAAE,8GACFG,UAAU,0CAEd,gBAACm2B,OAAAA,CACGt6C,KAAK,UACLukB,EAAE,SACFC,EAAE,QACFzqB,MAAM,OACNkG,OAAO,QACPkkB,UAAU,0CAEd,gBAACm2B,OAAAA,CACGt6C,KAAK,UACLukB,EAAE,SACFC,EAAE,QACFzqB,MAAM,OACNkG,OAAO,QACPkkB,UAAU,yCAEd,gBAAChO,IAAAA,CAAE4kC,iBAAe,WACd,gBAACh3B,OAAAA,CACG/jB,KAAK,UACLgkB,EAAE,sGAGV,gBAACw2B,SAAAA,CAAOx6C,KAAK,UAAUy6C,GAAG,QAAQC,GAAG,QAAQxkC,EAAE,UAC/C,gBAAC6N,OAAAA,CACG/jB,KAAK,OACLgkB,EAAE,0mBAEN,gBAACw2B,SAAAA,CAAOx6C,KAAK,UAAUy6C,GAAG,SAASC,GAAG,QAAQxkC,EAAE,UAChD,gBAAC6N,OAAAA,CACG/jB,KAAK,OACLgkB,EAAE,mmBAEN,gBAACD,OAAAA,CAAK/jB,KAAK,UAAUgkB,EAAE,mEACvB,gBAACD,OAAAA,CACG/jB,KAAK,UACLgkB,EAAE,mFAEN,gBAAC6d,UAAAA,CAAQ7hC,KAAK,UAAU8hC,OAAO,mEAC/B,gBAACD,UAAAA,CAAQ7hC,KAAK,UAAU8hC,OAAO,mEAC/B,gBAAC/d,OAAAA,CACG/jB,KAAK,UACLgkB,EAAE,weAEN,gBAACD,OAAAA,CACG/jB,KAAK,UACLgkB,EAAE,4aAEN,gBAACs2B,OAAAA,CACGt6C,KAAK,UACLukB,EAAE,SACFC,EAAE,SACFzqB,MAAM,OACNkG,OAAO,OACPkkB,UAAU,2CAEd,gBAACJ,OAAAA,CACG/jB,KAAK,UACLgkB,EAAE,uTAEN,gBAACD,OAAAA,CACG/jB,KAAK,UACLgkB,EAAE,uRAEN,gBAACw2B,SAAAA,CAAOx6C,KAAK,UAAUy6C,GAAG,SAASC,GAAG,QAAQxkC,EAAE,W,ECnGhE,I,4eCSA,IA8BA,GA9BwG,Y,IACpGlW,EAAAA,EAAAA,KACA2I,EAAAA,EAAAA,MACA1I,EAAAA,EAAAA,OACAlG,EAAAA,EAAAA,MACG6pB,EAAAA,EAAAA,EAAAA,CAJH5jB,OACA2I,QACA1I,SACAlG,U,OAGA,gBAAC8pB,EAAAA,E,sUAAOA,CAAAA,CAACC,QAAQ,kBAAkB7jB,OAAQA,EAAQlG,MAAOA,EAAO4O,MAAOA,EAAO3I,KAAMA,GAAU4jB,GAC3F,gBAACG,OAAAA,CACG/jB,KAAK,UACLgkB,EAAE,0sBAEN,gBAACs2B,OAAAA,CAAKt6C,KAAK,UAAUukB,EAAE,OAAOC,EAAE,QAAQzqB,MAAM,OAAOkG,OAAO,QAAQs6C,GAAG,SACvE,gBAACD,OAAAA,CAAKt6C,KAAK,UAAUukB,EAAE,QAAQC,EAAE,QAAQzqB,MAAM,OAAOkG,OAAO,QAAQs6C,GAAG,SACxE,gBAACx2B,OAAAA,CACG/jB,KAAK,UACLgkB,EAAE,4HAEN,gBAACs2B,OAAAA,CAAKt6C,KAAK,UAAUukB,EAAE,QAAQC,EAAE,QAAQzqB,MAAM,OAAOkG,OAAO,QAAQs6C,GAAG,SACxE,gBAACx2B,OAAAA,CACG/jB,KAAK,UACLgkB,EAAE,yWAEN,gBAACD,OAAAA,CACG/jB,KAAK,UACLgkB,EAAE,4H,EClCd,M,8eCSA,IAMA,GANe,Y,IAAGhkB,EAAAA,EAAAA,KAAM2I,EAAAA,EAAAA,MAAO1I,EAAAA,EAAAA,OAAQlG,EAAAA,EAAAA,MAAU6pB,EAAAA,GAAAA,EAAAA,CAA/B5jB,OAAM2I,QAAO1I,SAAQlG,U,OACnC,gBAAC8pB,EAAAA,E,uUAAOA,CAAAA,CAACC,QAAQ,cAAc7jB,OAAQA,EAAQlG,MAAOA,EAAO4O,MAAOA,EAAO3I,KAAMA,GAAU4jB,GACvF,gBAACG,OAAAA,CAAKC,EAAE,sb,ECXhB,M,8eCSA,IAeA,GAfkF,Y,IAC9EhkB,EAAAA,EAAAA,KACA2I,EAAAA,EAAAA,MACA1I,EAAAA,EAAAA,OACAlG,EAAAA,EAAAA,MACG6pB,EAAAA,GAAAA,EAAAA,CAJH5jB,OACA2I,QACA1I,SACAlG,U,OAGA,gBAAC8pB,EAAAA,E,uUAAOA,CAAAA,CAACC,QAAQ,sBAAsB7jB,OAAQA,EAAQlG,MAAOA,EAAO4O,MAAOA,EAAO3I,KAAMA,GAAU4jB,GAC/F,gBAACG,OAAAA,CACGC,EAAE,+IACFG,UAAU,4B,ECnBtB,M,ufCSA,IAkBA,GAlB4F,Y,IACxFnkB,EAAAA,EAAAA,KACA2I,EAAAA,EAAAA,MACA1I,EAAAA,EAAAA,OACAlG,EAAAA,EAAAA,MACG6pB,EAAAA,GAAAA,EAAAA,CAJH5jB,OACA2I,QACA1I,SACAlG,U,OAGA,gBAAC8pB,EAAAA,E,uUAAOA,CAAAA,CAACC,QAAQ,cAAc7jB,OAAQA,EAAQlG,MAAOA,EAAO4O,MAAOA,EAAO3I,KAAMA,GAAU4jB,GACvF,gBAACzN,IAAAA,CAAEnW,KAAMA,EAAM26C,SAAS,WACpB,gBAAC52B,OAAAA,CACGC,EAAE,ujBACFg3B,YAAY,QAEhB,gBAACj3B,OAAAA,CAAKC,EAAE,6R,ECtBpB,M,8eCSA,IAYA,GAZ0E,Y,IACtEhkB,EAAAA,EAAAA,KACA2I,EAAAA,EAAAA,MACA1I,EAAAA,EAAAA,OACAlG,EAAAA,EAAAA,MACG6pB,EAAAA,GAAAA,EAAAA,CAJH5jB,OACA2I,QACA1I,SACAlG,U,OAGA,gBAAC8pB,EAAAA,E,uUAAOA,CAAAA,CAACC,QAAQ,sBAAsB7jB,OAAQA,EAAQlG,MAAOA,EAAO4O,MAAOA,EAAO3I,KAAMA,GAAU4jB,GAC/F,gBAACG,OAAAA,CAAKC,EAAE,yF,ECjBhB,M,8eCSA,IAYA,GAZ4E,Y,IACxEhkB,EAAAA,EAAAA,KACA2I,EAAAA,EAAAA,MACA1I,EAAAA,EAAAA,OACAlG,EAAAA,EAAAA,MACG6pB,EAAAA,GAAAA,EAAAA,CAJH5jB,OACA2I,QACA1I,SACAlG,U,OAGA,gBAAC8pB,EAAAA,E,uUAAOA,CAAAA,CAACC,QAAQ,cAAc7jB,OAAQA,EAAQlG,MAAOA,EAAO4O,MAAOA,EAAO3I,KAAMA,GAAU4jB,GACvF,gBAACG,OAAAA,CAAKC,EAAE,4W,ECjBhB,K,8jBCSA,IAYA,EAZ0E,Y,IACtEhkB,EAAAA,EAAAA,KACA2I,EAAAA,EAAAA,MACA1I,EAAAA,EAAAA,OACAlG,EAAAA,EAAAA,MACG6pB,EAAAA,EAAAA,EAAAA,CAJH5jB,OACA2I,QACA1I,SACAlG,U,OAGA,gBAAC8pB,EAAAA,E,sUAAOA,CAAAA,CAACC,QAAQ,kBAAkB7jB,OAAQA,EAAQlG,MAAOA,EAAO4O,MAAOA,EAAO3I,KAAMA,GAAU4jB,GAC3F,gBAACG,OAAAA,CAAKC,EAAE,ogB,ECjBhB,G,qsBCWA,IAAMi3B,E,SAAW9hD,GAAO+hD,IAAG,KAmB3B,IAfgF,Y,IAC5Ev/C,EAAAA,EAAAA,SACAqE,EAAAA,EAAAA,KACA2I,EAAAA,EAAAA,MACA5O,EAAAA,EAAAA,MACAkG,EAAAA,EAAAA,OACA6jB,EAAAA,EAAAA,QACGF,EAAAA,EAAAA,EAAAA,CANHjoB,WACAqE,OACA2I,QACA5O,QACAkG,SACA6jB,Y,OAGA,gBAACm3B,E,sUAAAA,CAAAA,CAASn3B,QAASA,EAAS9jB,KAAMA,EAAMjG,MAAOA,EAAOkG,OAAQA,GAAY2jB,GACrEjb,GAAS,gBAACA,QAAAA,KAAOA,GACjBhN,E","sources":["webpack://spotlight.web/./ModernScripts/Spotlight/Hooks/useClickOutside.tsx","webpack://spotlight.web/./ModernScripts/Spotlight/Hooks/usePrevious.tsx","webpack://spotlight.web/./ModernScripts/Spotlight/ManageAccount/ResetPassword/forgot-password.tsx","webpack://spotlight.web/./ModernScripts/Spotlight/ManageAccount/ResetPassword/render-forgot-password.ts","webpack://spotlight.web/./ModernScripts/Spotlight/ManageAccount/shared-components.tsx","webpack://spotlight.web/./ModernScripts/Spotlight/ManageAccount/whats-new-page-template.tsx","webpack://spotlight.web/./Scripts/Spotlight/Utilities/sort.ts","webpack://spotlight.web/./Scripts/Spotlight/render.tsx","webpack://spotlight.web/./ui/components/alert/alert.tsx","webpack://spotlight.web/./ui/packages/constants/constants.ts","webpack://spotlight.web/./ui/packages/constants/themes.ts","webpack://spotlight.web/./ui/components/loading-spinner/loading-spinner.tsx","webpack://spotlight.web/./ui/components/loading-spinner/images/spinner-black.ts","webpack://spotlight.web/./ui/components/loading-spinner/images/spinner-white.ts","webpack://spotlight.web/./ui/components/button/button.tsx","webpack://spotlight.web/./ui/components/collapsible-band/collapsible-band.tsx","webpack://spotlight.web/./ui/components/collapsible-band/index.ts","webpack://spotlight.web/./ui/components/grid-row/grid-row.tsx","webpack://spotlight.web/./ui/components/grid-col/grid-col.tsx","webpack://spotlight.web/./ui/components/loading-screen/loading-screen.tsx","webpack://spotlight.web/./ui/components/modal/modal.tsx","webpack://spotlight.web/./ui/components/search-filter/search-filter.tsx","webpack://spotlight.web/./ui/components/chart-selector/atoms/chart-group/chart-group.tsx","webpack://spotlight.web/./ui/components/chart-selector/atoms/chart-icon/chart-icon.tsx","webpack://spotlight.web/./ui/components/chart-selector/atoms/chart-info/chart-info.tsx","webpack://spotlight.web/./ui/components/chart-selector/chart-selector.tsx","webpack://spotlight.web/./ui/components/tabs/tabs.tsx","webpack://spotlight.web/./ui/components/tabs/index.ts","webpack://spotlight.web/./ui/components/color-picker/atoms/color-picker-palette/color-picker-palette.tsx","webpack://spotlight.web/./ui/components/color-picker/atoms/custom-color-picker/custom-color-picker-fields.tsx","webpack://spotlight.web/./ui/components/color-picker/helper.ts","webpack://spotlight.web/./ui/components/color-picker/atoms/custom-color-picker/custom-color-picker-pointer.tsx","webpack://spotlight.web/./ui/components/color-picker/atoms/custom-color-picker/custom-color-picker.tsx","webpack://spotlight.web/./ui/components/color-picker/color-picker.tsx","webpack://spotlight.web/./ui/components/color-picker-popover/color-picker-popover.tsx","webpack://spotlight.web/./ui/components/gallery-browser/atoms/item-group/item-group.tsx","webpack://spotlight.web/./ui/components/gallery-icon/gallery-icon.tsx","webpack://spotlight.web/./ui/components/gallery-browser/gallery-browser.tsx","webpack://spotlight.web/./ui/components/gallery-item-info/gallery-item-info.tsx","webpack://spotlight.web/./ui/components/modal-confirm/modal-confirm.tsx","webpack://spotlight.web/./ui/components/breadcrumbs/breadcrumbs.tsx","webpack://spotlight.web/./ui/components/step-process/step-process.tsx","webpack://spotlight.web/./ui/components/text/text.tsx","webpack://spotlight.web/./ui/components/helper-modal/helper-modal.tsx","webpack://spotlight.web/./ui/components/text-input/text-input.tsx","webpack://spotlight.web/./ui/components/text-field-inline/text-field-inline.tsx","webpack://spotlight.web/./ui/components/radio-input/radio-input.tsx","webpack://spotlight.web/./ui/components/checkbox-input/checkbox-input.tsx","webpack://spotlight.web/./ui/components/tracking-settings/tracking-settings-enums.ts","webpack://spotlight.web/./ui/components/tree-collapse/tree-collapse.tsx","webpack://spotlight.web/./ui/components/select-field/select-field.tsx","webpack://spotlight.web/./ui/components/tracking-settings/atoms/TreeCollapseWrapper/tree-collapse-wrapper.tsx","webpack://spotlight.web/./ui/components/tracking-settings/atoms/DataWrapper/data-wrapper.tsx","webpack://spotlight.web/./ui/components/tracking-settings/tracking-settings.tsx","webpack://spotlight.web/./ui/components/tab-button-group/tab-button-group.tsx","webpack://spotlight.web/./ui/components/tab-button-group/atoms/tab-button/tab-button.tsx","webpack://spotlight.web/./ui/components/password-input/password-input.tsx","webpack://spotlight.web/./ui/components/password-field/password-field.tsx","webpack://spotlight.web/./ui/components/number-input/number-input.tsx","webpack://spotlight.web/./ui/components/number-field/number-field.tsx","webpack://spotlight.web/./ui/components/number-field-inline/number-field-inline.tsx","webpack://spotlight.web/./ui/packages/icons/sort-number-asc/sort-number-asc.tsx","webpack://spotlight.web/./ui/packages/icons/sort-number-asc/index.ts","webpack://spotlight.web/./ui/packages/icons/sort-number-desc/sort-number-desc.tsx","webpack://spotlight.web/./ui/packages/icons/sort-number-desc/index.ts","webpack://spotlight.web/./ui/components/sort-number-asc-desc-field/sort-number-asc-desc-field.tsx","webpack://spotlight.web/./ui/components/preview/atoms/thumbnail/thumbnail.tsx","webpack://spotlight.web/./ui/components/preview/atoms/thumbnail/index.ts","webpack://spotlight.web/./ui/components/preview/preview-page.tsx","webpack://spotlight.web/./ui/components/preview/preview-content.tsx","webpack://spotlight.web/./ui/components/preview/preview-navigation-buttons.tsx","webpack://spotlight.web/./ui/components/preview/preview-pagination.tsx","webpack://spotlight.web/./ui/components/preview/preview.tsx","webpack://spotlight.web/./ui/components/preview/index.ts","webpack://spotlight.web/./ui/packages/icons/circle-with-plus/circle-with-plus.tsx","webpack://spotlight.web/./ui/packages/icons/circle-with-plus/index.ts","webpack://spotlight.web/./ui/packages/icons/circle-with-minus/circle-with-minus.tsx","webpack://spotlight.web/./ui/packages/icons/circle-with-minus/index.ts","webpack://spotlight.web/./ui/packages/icons/elimination/elimination.tsx","webpack://spotlight.web/./ui/packages/icons/elimination/index.ts","webpack://spotlight.web/./ui/components/data-grid/atoms/icons/icons.tsx","webpack://spotlight.web/./ui/components/data-grid/atoms/account-row/account-row.tsx","webpack://spotlight.web/./ui/components/data-grid/atoms/account-cell/account-cell.tsx","webpack://spotlight.web/./ui/components/data-grid/atoms/account-cell-input/account-cell-input.tsx","webpack://spotlight.web/./ui/components/data-grid/atoms/accounts-list/accounts-list.tsx","webpack://spotlight.web/./ui/components/data-grid/atoms/accounts-panel/accounts-panel.tsx","webpack://spotlight.web/./ui/components/data-grid/atoms/data-grid-scroller/data-grid-scroller.tsx","webpack://spotlight.web/./ui/components/data-grid/atoms/add-fy-totals/add-fy-total.tsx","webpack://spotlight.web/./ui/components/data-grid/atoms/table/table.tsx","webpack://spotlight.web/./ui/components/data-grid/atoms/fy-total-column/fy-total-column.tsx","webpack://spotlight.web/./ui/components/data-grid/atoms/header-cell/header-cell.tsx","webpack://spotlight.web/./ui/components/data-grid/atoms/header/header.tsx","webpack://spotlight.web/./ui/components/data-grid/data-grid.tsx","webpack://spotlight.web/./ui/components/data-table/data-table.tsx","webpack://spotlight.web/./ui/packages/icons/triangle-down/triangle-down.tsx","webpack://spotlight.web/./ui/packages/icons/triangle-down/index.ts","webpack://spotlight.web/./ui/components/multi-select-input/multi-select-input.tsx","webpack://spotlight.web/./ui/components/multi-select/multi-select.tsx","webpack://spotlight.web/./ui/components/month-date-picker/month-date-picker.tsx","webpack://spotlight.web/./ui/components/month-date-picker-field/month-date-picker-field.tsx","webpack://spotlight.web/./ui/components/AutoCompleteTextInput/AutoCompleteTextInput.tsx","webpack://spotlight.web/./ui/components/AutoCompleteTextField/AutoCompleteTextField.tsx","webpack://spotlight.web/./ui/components/release-notes/atoms/icons/icons.tsx","webpack://spotlight.web/./ui/components/release-notes/atoms/article/article.tsx","webpack://spotlight.web/./ui/components/release-notes/atoms/images/images.tsx","webpack://spotlight.web/./ui/components/release-notes/release-notes.tsx","webpack://spotlight.web/./ui/components/menu-list/menu-list.tsx","webpack://spotlight.web/./ui/components/dropdown-menu/dropdown-menu.tsx","webpack://spotlight.web/./ui/components/select-menu/atoms/select-menu-button.tsx","webpack://spotlight.web/./ui/components/select-menu/select-menu.tsx","webpack://spotlight.web/./ui/components/select-menu-field/select-menu-field.tsx","webpack://spotlight.web/./ui/components/inline-text-input/inline-text-input.tsx","webpack://spotlight.web/./ui/packages/icons/chevron-left/chevron-left.tsx","webpack://spotlight.web/./ui/packages/icons/chevron-left/index.ts","webpack://spotlight.web/./ui/packages/icons/chevron-right/chevron-right.tsx","webpack://spotlight.web/./ui/packages/icons/chevron-right/index.ts","webpack://spotlight.web/./ui/packages/icons/edit/edit.tsx","webpack://spotlight.web/./ui/packages/icons/edit/index.ts","webpack://spotlight.web/./ui/packages/icons/additional-page/additional-page.tsx","webpack://spotlight.web/./ui/packages/icons/additional-page/index.ts","webpack://spotlight.web/./ui/packages/icons/arrow-right/arrow-right.tsx","webpack://spotlight.web/./ui/packages/icons/circle-with-x/circle-with-x.tsx","webpack://spotlight.web/./ui/packages/icons/circle-with-x/index.ts","webpack://spotlight.web/./ui/packages/icons/circled-tick/circled-tick.tsx","webpack://spotlight.web/./ui/packages/icons/circled-tick/index.ts","webpack://spotlight.web/./ui/packages/icons/circled-x/circled-x.tsx","webpack://spotlight.web/./ui/packages/icons/circled-x/index.ts","webpack://spotlight.web/./ui/packages/icons/exclamation/exclamation.tsx","webpack://spotlight.web/./ui/packages/icons/exclamation/index.ts","webpack://spotlight.web/./ui/packages/icons/info/info.tsx","webpack://spotlight.web/./ui/packages/icons/info/index.ts","webpack://spotlight.web/./ui/packages/icons/new-release-all-products/new-release-all-products.tsx","webpack://spotlight.web/./ui/packages/icons/new-release-all-products/index.ts","webpack://spotlight.web/./ui/packages/icons/new-release-dashboard/new-release-dashboard.tsx","webpack://spotlight.web/./ui/packages/icons/new-release-dashboard/index.ts","webpack://spotlight.web/./ui/packages/icons/new-release-forecasting/new-release-forecasting.tsx","webpack://spotlight.web/./ui/packages/icons/new-release-forecasting/index.ts","webpack://spotlight.web/./ui/packages/icons/new-release-multi/new-release-multi.tsx","webpack://spotlight.web/./ui/packages/icons/new-release-multi/index.ts","webpack://spotlight.web/./ui/packages/icons/new-release-no-data/new-release-no-data.tsx","webpack://spotlight.web/./ui/packages/icons/new-release-no-data/index.ts","webpack://spotlight.web/./ui/packages/icons/new-release-reporting/new-release-reporting.tsx","webpack://spotlight.web/./ui/packages/icons/new-release-reporting/index.ts","webpack://spotlight.web/./ui/packages/icons/search/search.tsx","webpack://spotlight.web/./ui/packages/icons/search/index.ts","webpack://spotlight.web/./ui/packages/icons/sort-down/sort-down.tsx","webpack://spotlight.web/./ui/packages/icons/sort-down/index.ts","webpack://spotlight.web/./ui/packages/icons/spotlight-logo/spotlight-logo.tsx","webpack://spotlight.web/./ui/packages/icons/spotlight-logo/index.ts","webpack://spotlight.web/./ui/packages/icons/tick/tick.tsx","webpack://spotlight.web/./ui/packages/icons/tick/index.ts","webpack://spotlight.web/./ui/packages/icons/trash/trash.tsx","webpack://spotlight.web/./ui/packages/icons/trash/index.ts","webpack://spotlight.web/./ui/packages/icons/star/star.tsx","webpack://spotlight.web/./ui/packages/icons/star/index.ts","webpack://spotlight.web/./ui/packages/icons/svg-base/svg-base.tsx"],"sourcesContent":["import { MutableRefObject, useEffect } from 'react';\r\n\r\n/**\r\n * Helper to handle reacting to a click outside a given element.\r\n * Accepts a ref to the element to monitor for clicks outside of it\r\n * and a function to execute in response.\r\n */\r\nexport const useClickOutside = (\r\n ref: MutableRefObject,\r\n handler: (event: MouseEvent) => void,\r\n): void => {\r\n useEffect(() => {\r\n const handleClickOutside = (event: MouseEvent) => {\r\n const target = event.target as Element;\r\n if (ref.current && target && !ref.current.contains(target)) {\r\n handler(event);\r\n }\r\n };\r\n window.setTimeout(() => {\r\n document.removeEventListener('click', handleClickOutside);\r\n document.addEventListener('click', handleClickOutside);\r\n }, 0);\r\n return () => {\r\n document.removeEventListener('click', handleClickOutside);\r\n };\r\n }, [ref, handler]);\r\n};\r\n","import { useEffect, useRef } from 'react';\r\n\r\nexport const usePrevious = (value: T): T | undefined => {\r\n const ref = useRef();\r\n useEffect(() => {\r\n ref.current = value;\r\n });\r\n return ref.current;\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { ActionButton, Field, Form, Input, ManageAccountView, Message } from '../shared-components';\r\nimport { WhatsNewPageTemplate } from '../whats-new-page-template';\r\n\r\nexport const ForgotPassword: React.FC> = () => {\r\n const [emailAddress, setEmailAddress] = React.useState('');\r\n const [emailAddressError, setEmailAddressError] = React.useState();\r\n const [submitting, setSubmitting] = React.useState(false);\r\n\r\n const validate = () => {\r\n const isValid = !!emailAddress && new RegExp('.+@[^.]{2,}..{2,}').test(emailAddress);\r\n\r\n if (!isValid) {\r\n setEmailAddressError('Please enter a valid email address');\r\n return false;\r\n }\r\n\r\n setEmailAddressError(null);\r\n return true;\r\n };\r\n\r\n const handleSubmit: React.FormEventHandler = (e) => {\r\n setSubmitting(true);\r\n\r\n const formValid = validate();\r\n\r\n if (!formValid) {\r\n e.preventDefault();\r\n setSubmitting(false);\r\n return false;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n return (\r\n \r\n \r\n {`Please enter your email address and we'll send you a link to reset your password.`}\r\n
\r\n \r\n setEmailAddress(e.target.value)}\r\n onBlur={validate}\r\n />\r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n","import { renderComponentByReference } from '../../../../Scripts/Spotlight/render';\r\nimport { ForgotPassword } from './forgot-password';\r\n\r\n(function () {\r\n renderComponentByReference({\r\n id: 'forgot-password-container',\r\n Component: ForgotPassword,\r\n container: document.getElementById('forgot-password-container'),\r\n });\r\n})();\r\n","import * as React from 'react';\r\n\r\nimport { COLOR, FONT_SIZE, LINE_HEIGHT, LoadingSpinner } from '@ui';\r\nimport styled from 'styled-components';\r\n\r\nimport spotlightLogo from '../../../Content/Images/Logos/Primary/spotlight-reporting--full-name.svg';\r\n\r\nconst ContentsContainer = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n row-gap: 30px;\r\n width: 100%;\r\n font-family: 'open-sans', sans-serif;\r\n`;\r\n\r\nconst HeaderContainer = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n row-gap: 40px;\r\n`;\r\n\r\nconst Heading = styled.h1`\r\n font-size: ${FONT_SIZE.X_LARGE};\r\n color: #04255b;\r\n text-align: center;\r\n`;\r\n\r\ninterface HeaderProps {\r\n heading: string;\r\n image?: JSX.Element;\r\n}\r\n\r\nconst Header: React.FC> = ({ heading, image }) => {\r\n return (\r\n \r\n {image ? image : {'Spotlight}\r\n {heading}\r\n \r\n );\r\n};\r\n\r\nexport const BackLink = styled.a`\r\n font-size: ${FONT_SIZE.MEDIUM};\r\n color: #00b1ff;\r\n margin: auto;\r\n`;\r\n\r\nconst BackToApplication = styled(BackLink)`\r\n cursor: pointer;\r\n text-decoration: underline;\r\n`;\r\n\r\ninterface MessageProps {\r\n alignment?: 'left' | 'center';\r\n}\r\n\r\nexport const Message = styled.p`\r\n line-height: ${LINE_HEIGHT.LARGE};\r\n word-break: break-word;\r\n text-align: ${(props: MessageProps) => props.alignment ?? 'center'};\r\n font-size: ${FONT_SIZE.MEDIUM};\r\n color: #04255b;\r\n`;\r\n\r\nconst ActionButtonLabel = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n`;\r\n\r\ninterface ActionButtonButtonProps {\r\n disabled: boolean;\r\n}\r\n\r\nconst ActionButtonButton = styled.button`\r\n width: 100%;\r\n margin-top: 10px;\r\n opacity: ${(props: ActionButtonButtonProps) => (props.disabled ? 0.3 : 1)};\r\n cursor: ${(props: ActionButtonButtonProps) => (props.disabled ? 'default' : 'pointer')};\r\n border: none;\r\n border-radius: 9px;\r\n padding: 15px 25px;\r\n font-size: 16px;\r\n font-weight: 500;\r\n text-transform: uppercase;\r\n background-color: #00b1ff;\r\n box-shadow: 0 1px 0 0 transparent;\r\n transition: all 200ms ease;\r\n color: #fff;\r\n\r\n &:hover,\r\n &:focus {\r\n background-color: #40c4ff;\r\n box-shadow: 0 0 10px 0 rgba(0, 177, 255, 0.5);\r\n color: #fff;\r\n text-decoration: none;\r\n }\r\n`;\r\n\r\ninterface ActionButtonProps {\r\n dataId: string;\r\n label: string;\r\n type: 'button' | 'submit';\r\n loading?: boolean;\r\n onClick?: () => void;\r\n}\r\n\r\nexport const ActionButton: React.FC> = ({\r\n dataId,\r\n label,\r\n type,\r\n loading,\r\n onClick,\r\n}) => {\r\n return (\r\n \r\n \r\n {label}\r\n {loading && }\r\n \r\n \r\n );\r\n};\r\n\r\nexport const Form = styled.form`\r\n width: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n row-gap: 30px;\r\n`;\r\n\r\nexport const ErrorMessage = styled.p`\r\n color: ${COLOR.PRIMARY.RED};\r\n font-size: ${FONT_SIZE.SMALL};\r\n text-align: ${(props: MessageProps) => props.alignment ?? 'left'};\r\n line-height: ${LINE_HEIGHT.LARGE};\r\n`;\r\n\r\nconst FieldWrapper = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n`;\r\n\r\nconst FieldLabel = styled.label`\r\n font-size: ${FONT_SIZE.SMALL};\r\n font-weight: 600;\r\n color: #04255b;\r\n margin-bottom: 2px;\r\n`;\r\n\r\nconst FieldError = styled(ErrorMessage)`\r\n margin-top: 10px;\r\n`;\r\n\r\ninterface FieldProps {\r\n label: string;\r\n id: string;\r\n children: React.ReactNode;\r\n error?: string;\r\n}\r\n\r\ninterface InputProps {\r\n invalid?: boolean;\r\n}\r\n\r\nexport const Input = styled.input`\r\n border: 1px solid;\r\n border-color: ${(props: InputProps) => (props.invalid ? COLOR.PRIMARY.RED : 'rgba(27, 163, 231, 0.6)')};\r\n border-radius: 5px;\r\n padding: 10px;\r\n font-size: ${FONT_SIZE.SMALL};\r\n color: #04255b;\r\n box-sizing: border-box;\r\n width: 100%;\r\n\r\n &:focus {\r\n border-color: ${(props: InputProps) => (props.invalid ? COLOR.PRIMARY.RED : COLOR.BRAND.REPORTING)};\r\n outline: 0;\r\n }\r\n`;\r\n\r\nexport const Field: React.FC> = ({ label, children, error, id }) => {\r\n return (\r\n \r\n {label}\r\n {children}\r\n {error && {error}}\r\n \r\n );\r\n};\r\n\r\ninterface ManageAccountViewProps {\r\n heading: string;\r\n headerImage?: JSX.Element;\r\n backTo: 'login' | 'application' | undefined;\r\n}\r\n\r\nexport const ManageAccountView: React.FC>> = ({\r\n heading,\r\n headerImage,\r\n backTo,\r\n children,\r\n}) => {\r\n return (\r\n \r\n
\r\n {children}\r\n {backTo === 'login' && Back to log in}\r\n {backTo === 'application' && (\r\n window.history.back()}>Back to application\r\n )}\r\n \r\n );\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { LatestReleaseNotes } from '../../../Scripts/Spotlight/Components/LatestReleaseNotes';\r\n\r\ninterface WhatsNewPageTemplateProps {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport const WhatsNewPageTemplate: React.FC> = ({ children }) => {\r\n const [loading, setLoading] = React.useState(true);\r\n const [articles, setArticles] = React.useState();\r\n\r\n React.useEffect(() => {\r\n let ignore = false;\r\n\r\n fetch('https://cdn.spotlightreporting.com/release-notes/ReleaseNotes.json')\r\n .then((response) => {\r\n if (!response.ok) {\r\n throw new Error(response.statusText);\r\n }\r\n return response.json();\r\n })\r\n .then((data) => {\r\n if (!ignore) {\r\n setArticles(data);\r\n localStorage.setItem('release-notes', JSON.stringify(data));\r\n }\r\n })\r\n .catch(() => {\r\n if (!ignore) {\r\n setArticles([]);\r\n localStorage.setItem('release-notes', JSON.stringify([]));\r\n }\r\n })\r\n .finally(() => {\r\n if (!ignore) {\r\n setLoading(false);\r\n }\r\n });\r\n\r\n return () => {\r\n ignore = true;\r\n };\r\n }, []);\r\n\r\n return (\r\n
\r\n {!loading && (\r\n <>\r\n
\r\n
{children}
\r\n
\r\n
\r\n
\r\n

{`What's New`}

\r\n

LATEST

\r\n \r\n
\r\n
\r\n \r\n )}\r\n
\r\n );\r\n};\r\n","import { Dayjs } from 'dayjs';\r\n\r\nexport const stringCompare = (a: string, b: string): number => (a ?? '').localeCompare(b ?? '');\r\n\r\nexport const dayjsCompare = (a: Dayjs, b: Dayjs): number => {\r\n if (!a && !b) {\r\n return 0;\r\n }\r\n\r\n if (!a) {\r\n return -1;\r\n }\r\n\r\n if (!b) {\r\n return 1;\r\n }\r\n\r\n if (a.isSame(b)) {\r\n return 0;\r\n }\r\n\r\n return a.isAfter(b) ? 1 : -1;\r\n};\r\n\r\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\r\nexport const anyCompare = (a: any, b: any): number => {\r\n if (a === b) {\r\n return 0;\r\n }\r\n\r\n return a < b ? -1 : 1;\r\n};\r\n","import React, { FunctionComponentElement } from 'react';\r\n\r\nimport { Root, createRoot } from 'react-dom/client';\r\n\r\ninterface RenderComponentProps {\r\n id: string;\r\n component: FunctionComponentElement | FunctionComponentElement[];\r\n container: Element;\r\n props?: any;\r\n}\r\n\r\ninterface RenderComponentByReferenceProps {\r\n id: string;\r\n Component: any;\r\n container: Element;\r\n props?: any;\r\n}\r\n\r\n/**\r\n * Store a React Root on the window referenced by a unique container ID\r\n * once we've rendered it so that we can fetch it again when it's time to unmount\r\n */\r\nexport const pushRoot = (id: string, root: Root) => {\r\n window.reactRoots = {\r\n ...window.reactRoots,\r\n [id]: root,\r\n };\r\n};\r\n\r\n/**\r\n * Fetch the React Root on the window by the unique container ID and unmount it\r\n */\r\nexport const popRoot = (id: string): Root => {\r\n const root = window.reactRoots?.[id];\r\n delete window.reactRoots?.[id];\r\n\r\n return root;\r\n};\r\n\r\n/**\r\n * Just a wrapper over ReactDOM.unmountComponentAtNode\r\n */\r\nexport function unmountComponentAtNode(id: string): void {\r\n const root = popRoot(id);\r\n\r\n if (root) {\r\n root.unmount();\r\n }\r\n}\r\n\r\n/**\r\n * Just a wrapper over ReactDOM.render to render a component without a store\r\n */\r\nexport const renderComponent = ({ id, component, container }: RenderComponentProps): void => {\r\n const root = createRoot(container);\r\n root.render(component);\r\n\r\n pushRoot(id, root);\r\n};\r\n\r\n/**\r\n * Just a wrapper over ReactDOM.render to render a component without a store, passing the component by reference.\r\n * This allows components to be rendered from outside of jsx|tsx files.\r\n */\r\nexport const renderComponentByReference = ({\r\n id,\r\n Component,\r\n container,\r\n props,\r\n}: RenderComponentByReferenceProps): void => {\r\n const root = createRoot(container);\r\n root.render();\r\n\r\n pushRoot(id, root);\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { Xmark } from 'iconoir-react';\r\nimport styled from 'styled-components';\r\n\r\nimport { CircledTick, Exclamation, Info } from '../../packages/icons';\r\n\r\nexport type Severity = 'error' | 'warning' | 'success' | 'info' | 'none';\r\n\r\nexport type Variant = 'outlined' | 'shadowed';\r\n\r\nexport interface AlertProps {\r\n variant: Variant;\r\n children?: React.ReactNode;\r\n dataId?: string;\r\n severity?: Severity;\r\n fadeIn?: boolean;\r\n width?: string;\r\n maxWidth?: string;\r\n /** Can be used to trigger the exit animation manually, by changing from true to false. */\r\n isVisible?: boolean;\r\n /** Function called when the dismiss button is clicked. If not provided, the dismiss button will not be rendered */\r\n onDismiss?: () => void;\r\n}\r\n\r\nconst colors = new Map([\r\n ['error', '#EE7168'],\r\n ['warning', '#FFAC5B'],\r\n ['success', '#4DC082'],\r\n ['info', '#00B1FF'],\r\n]);\r\n\r\ninterface AlertContainerProps {\r\n accentColor?: string;\r\n variant: Variant;\r\n isHidden: boolean;\r\n isDismissable: boolean;\r\n width?: string;\r\n maxWidth?: string;\r\n}\r\n\r\nconst AlertContainer = styled.div`\r\n position: relative;\r\n display: flex;\r\n column-gap: 10px;\r\n box-sizing: border-box;\r\n height: fit-content;\r\n min-width: 100px;\r\n width: ${(props) => props.width ?? 'fit-content'};\r\n max-width: ${(props) => (props.maxWidth ? `min(${props.maxWidth}, 100%)` : '100%')};\r\n font-weight: 600;\r\n font-size: 13px;\r\n line-height: 1.4;\r\n color: #1a1c25;\r\n padding-top: 11px;\r\n padding-bottom: 11px;\r\n padding-left: ${(props) => (props.accentColor ? '14px' : '12px')};\r\n padding-right: ${(props) => (props.isDismissable ? '10px' : '12px')};\r\n background-color: #fff;\r\n opacity: ${(props) => (props.isHidden ? 0 : 1)};\r\n transition: opacity 300ms ease-in-out;\r\n border-radius: 5px;\r\n border: ${(props) => (props.variant === 'outlined' ? `1px solid ${props.accentColor ?? '#CDD3DE'}` : 'none')};\r\n\r\n ${(props) =>\r\n props.variant === 'shadowed' &&\r\n `\r\n box-shadow: 0px 2px 25px rgba(0, 0, 0, 0.08), 0px 1.4px 10.4px rgba(0, 0, 0, 0.055),\r\n 0px 0.9px 5.6px rgba(0, 0, 0, 0.042), 0px 0.6px 3.1px rgba(0, 0, 0, 0.033), 0px 0.3px 1.7px rgba(0, 0, 0, 0.024),\r\n 0px 0.1px 0.7px rgba(0, 0, 0, 0.014);\r\n `}\r\n\r\n ${(props) =>\r\n props.accentColor &&\r\n `\r\n &:before {\r\n content: '';\r\n width: 4px;\r\n background: ${props.accentColor};\r\n position: absolute;\r\n left: 0px;\r\n top: 0;\r\n bottom: 0px;\r\n border-radius: 5px 0 0 5px;\r\n }\r\n `}\r\n`;\r\n\r\nconst IconContainer = styled.div`\r\n flex-shrink: 0;\r\n margin-top: 2px;\r\n`;\r\n\r\nconst ContentContainer = styled.div`\r\n flex-grow: 1;\r\n overflow-wrap: anywhere;\r\n display: flex;\r\n align-items: center;\r\n min-height: 20px;\r\n`;\r\n\r\nconst DismissButton = styled.button`\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n flex-shrink: 0;\r\n padding: 3px;\r\n height: fit-content;\r\n border: none;\r\n border-radius: 50%;\r\n background-color: transparent;\r\n cursor: pointer;\r\n\r\n &:hover {\r\n background-color: #f3f4f7;\r\n }\r\n`;\r\n\r\nexport const Alert: React.FC> = ({\r\n variant,\r\n children,\r\n dataId = 'alert',\r\n severity = 'none',\r\n fadeIn,\r\n width,\r\n maxWidth,\r\n isVisible = true,\r\n onDismiss,\r\n ...props\r\n}) => {\r\n const [isFirstRender, setIsFirstRender] = React.useState(true);\r\n const [isClosing, setIsClosing] = React.useState(false);\r\n\r\n const accentColor = colors.get(severity);\r\n\r\n const handleDismiss = () => {\r\n setIsClosing(true);\r\n onDismiss && onDismiss();\r\n };\r\n\r\n React.useEffect(() => {\r\n setIsFirstRender(false);\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n if (!isVisible) {\r\n setIsClosing(true);\r\n }\r\n\r\n if (isVisible) {\r\n setIsClosing(false);\r\n }\r\n }, [isVisible]);\r\n\r\n return (\r\n \r\n {severity !== 'none' && (\r\n \r\n {severity === 'error' && }\r\n {severity === 'warning' && }\r\n {severity === 'success' && }\r\n {severity === 'info' && }\r\n \r\n )}\r\n\r\n {children}\r\n {onDismiss && (\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nAlert.displayName = 'Alert';\r\n","import { keyframes } from 'styled-components';\r\nimport { transparentize } from 'polished';\r\n\r\nexport const COLOR = {\r\n // primary colours\r\n PRIMARY: {\r\n RED: '#e63327',\r\n GREEN: '#0dd32c',\r\n BLUE: '#0000ff',\r\n YELLOW: '#ffee00',\r\n BLACK: '#000',\r\n WHITE: '#fff',\r\n GREY: '#555',\r\n HOT_PINK: '#ff00be',\r\n HOT_PURPLE: '#CB35FC',\r\n },\r\n\r\n // main colours\r\n MAIN: {\r\n LIGHT_GREY: '#f7f9fb',\r\n MEDIUM_GREY: '#e4e8ed',\r\n DARK_GREY: '#51688d',\r\n DARK_BLUE: '#0b2a51',\r\n\r\n PRIMARY: '#1a2952',\r\n SECONDARY: '#00B1FF',\r\n ICON_BACKGROUND: '#F5F6F7',\r\n\r\n LABEL_TEXT: '#2A3F5E',\r\n FORM_FIELD: '#EDEDED',\r\n FORM_FIELD_DARK: 'rgb(130, 146, 173)',\r\n\r\n BUTTON_GROUP_BG: '#f8f9fa',\r\n BUTTON_GROUP_BORDER: '#e8e8e8',\r\n },\r\n\r\n // brand colours\r\n BRAND: {\r\n REPORTING: '#1ba3e7',\r\n FORECASTING: '#39b873',\r\n DASHBOARDS: '#e8ab36',\r\n MULTI: '#b65bd6',\r\n },\r\n\r\n // modal\r\n MODAL: {\r\n MODAL_PANEL_ACCENT: '#F6F7F9',\r\n MODAL_OVERLAY: transparentize('0.33', '#1A2952'),\r\n },\r\n\r\n // Dropdown\r\n DROPDOWN: {\r\n DROPDOWN_BORDER: '#D9DEE6',\r\n DROPDOWN_OPTION_HOVER: '#E1E5EC',\r\n DROPDOWN_OPTION_SELECTED: '#5897fb',\r\n DROPDOWN_OPTION_TEXT: '#04255B',\r\n DROPDOWN_DISABLED_OPTION_TEXT: '#CDD3DE',\r\n DROPDOWN_ARROW: '#d4d4d4',\r\n DROPDOWN_ARROW_DARK: '#647798',\r\n },\r\n\r\n // DATAGRID\r\n DATAGRID: {\r\n DATAGRID_TITLE_BG: '#F3F3F3',\r\n DATAGRID_HEADER_BG: '#E0EDF6',\r\n DATAGRID_TOTAL_BG: '#F6F9FB',\r\n DATAGRID_BUDGET_BG: '#FFF7DA',\r\n DATAGRID_DIVIDER_LINE: '#BABABA',\r\n DATAGRID_TEXT: '#2A3F5E',\r\n },\r\n\r\n LEGACY: {\r\n DATAGRID_BORDER: '#C7C7C7',\r\n DATAGRID_TH_BG: '#E0EDF6',\r\n DATAGRID_ARCHIVED_BG: '#FCF0F2',\r\n },\r\n};\r\n\r\n// fonts\r\nexport enum FONT_SIZE {\r\n XXX_LARGE = '48px',\r\n XX_LARGE = '36px',\r\n X_LARGE = '22px',\r\n LARGE = '18px',\r\n MEDIUM = '16px',\r\n SMALL = '14px',\r\n X_SMALL = '12px',\r\n XX_SMALL = '8px',\r\n}\r\n\r\nexport const SPACING_SCALE = 8;\r\n\r\nexport enum SPACING {\r\n BUTTON_DEFAULT = '3px 12px',\r\n XXX_LARGE = '58px',\r\n XX_LARGE = '28px',\r\n X_LARGE = '22px',\r\n LARGE = '18px',\r\n MEDIUM = '12px',\r\n SMALL = '6px',\r\n X_SMALL = '4px',\r\n XX_SMALL = '2px',\r\n}\r\n\r\nexport const PROXIMA_NOVA = '\"Proxima Nova\", Arial, sans-serif';\r\nexport const OPEN_SANS = 'open-sans, sans-serif';\r\n\r\nexport const FONT_STACK = `${OPEN_SANS}`;\r\n\r\nexport const FONT = {\r\n PROXIMA_NOVA,\r\n OPEN_SANS,\r\n};\r\n\r\n/**\r\n * Note: line-height is a very distinct concept from the font-size and won't map 1-to-1 with font-size.\r\n * It should also almost always be specified in unitless values.\r\n */\r\nexport enum LINE_HEIGHT {\r\n /**\r\n * line-height: 1.2; is a good standard line-height, it works well for inline text, buttons etc, should be expanded for larger sections of text\r\n */\r\n MEDIUM = 1.2,\r\n /**\r\n * line-height 1.4 lets the text breathe a bit more, which is good for paragraph text\r\n */\r\n LARGE = 1.4,\r\n}\r\n\r\n/**\r\n * Note: generally the margin-bottom of a paragraph should be 1em so it adjusts 1-to-1 with the font-size\r\n */\r\nexport enum TEXT_RELATIVE_MARGIN {\r\n XX_SMALL = '0.4em',\r\n X_SMALL = '0.6em',\r\n SMALL = '0.8em',\r\n MEDIUM = '1em',\r\n LARGE = '1.2em',\r\n X_LARGE = '1.4em',\r\n XX_LARGE = '1.6em',\r\n}\r\n\r\nexport const FONT_SET = {\r\n XX_LARGE: `font-family: ${OPEN_SANS};\r\n font-size: ${FONT_SIZE.XX_LARGE};\r\n line-height: ${LINE_HEIGHT.MEDIUM};\r\n `,\r\n X_LARGE: `font-family: ${OPEN_SANS};\r\n font-size: ${FONT_SIZE.X_LARGE};\r\n line-height: ${LINE_HEIGHT.MEDIUM};\r\n `,\r\n LARGE: `font-family: ${OPEN_SANS};\r\n font-size: ${FONT_SIZE.LARGE};\r\n line-height: ${LINE_HEIGHT.MEDIUM};\r\n `,\r\n MEDIUM: `font-family: ${OPEN_SANS};\r\n font-size: ${FONT_SIZE.MEDIUM};\r\n line-height: ${LINE_HEIGHT.MEDIUM};\r\n `,\r\n SMALL: `font-family: ${OPEN_SANS};\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${LINE_HEIGHT.MEDIUM};\r\n `,\r\n X_SMALL: `font-family: ${OPEN_SANS};\r\n font-size: ${FONT_SIZE.X_SMALL};\r\n line-height: ${LINE_HEIGHT.MEDIUM};\r\n `,\r\n XX_SMALL: `font-family: ${OPEN_SANS};\r\n font-size: ${FONT_SIZE.XX_SMALL};\r\n line-height: ${LINE_HEIGHT.MEDIUM};\r\n `,\r\n};\r\n\r\nexport const PARAGRAPH = {\r\n DEFAULT: `color: ${COLOR.MAIN.PRIMARY};\r\n font-family: ${OPEN_SANS};\r\n font-size: ${FONT_SIZE.MEDIUM};\r\n line-height: ${LINE_HEIGHT.LARGE};\r\n margin-bottom: ${TEXT_RELATIVE_MARGIN.MEDIUM};\r\n`,\r\n INDENT: `color: ${COLOR.MAIN.FORM_FIELD_DARK};\r\n font-family: ${OPEN_SANS};\r\n font-size: ${FONT_SIZE.MEDIUM};\r\n line-height: ${LINE_HEIGHT.LARGE};\r\n margin-bottom: ${TEXT_RELATIVE_MARGIN.MEDIUM};\r\n border-left: ${SPACING.MEDIUM} solid ${COLOR.MAIN.FORM_FIELD_DARK};\r\n padding-left: ${SPACING.MEDIUM};\r\n`,\r\n};\r\n\r\nexport const HEADER = {\r\n H1: `color: ${COLOR.MAIN.PRIMARY};\r\n font-family: ${OPEN_SANS};\r\n font-size: ${FONT_SIZE.X_LARGE};\r\n font-weight: 800;\r\n line-height: ${LINE_HEIGHT.LARGE};\r\n padding-bottom: ${SPACING.XX_LARGE};\r\n border-bottom: 1px solid ${COLOR.MAIN.PRIMARY};\r\n margin-bottom: ${TEXT_RELATIVE_MARGIN.MEDIUM};\r\n `,\r\n H2: `color: ${COLOR.MAIN.DARK_BLUE};\r\n font-family: ${OPEN_SANS};\r\n font-size: ${FONT_SIZE.LARGE};\r\n font-weight: 800;\r\n line-height: ${LINE_HEIGHT.LARGE};\r\n margin-bottom: ${TEXT_RELATIVE_MARGIN.MEDIUM};\r\n `,\r\n H3: `color: ${COLOR.MAIN.DARK_GREY};\r\n font-family: ${OPEN_SANS};\r\n font-size: ${FONT_SIZE.MEDIUM};\r\n font-weight: 800;\r\n line-height: ${LINE_HEIGHT.LARGE};\r\n margin-bottom: ${TEXT_RELATIVE_MARGIN.MEDIUM};\r\n `,\r\n H4: `color: ${COLOR.MAIN.LABEL_TEXT};\r\n font-family: ${OPEN_SANS};\r\n font-size: ${FONT_SIZE.SMALL};\r\n font-weight: 400;\r\n line-height: ${LINE_HEIGHT.LARGE};\r\n margin-bottom: ${TEXT_RELATIVE_MARGIN.MEDIUM};\r\n `,\r\n H5: `color: ${COLOR.MAIN.PRIMARY};\r\n font-family: ${OPEN_SANS};\r\n font-size: ${FONT_SIZE.X_SMALL};\r\n font-weight: 400;\r\n line-height: ${LINE_HEIGHT.LARGE};\r\n margin-bottom: ${TEXT_RELATIVE_MARGIN.MEDIUM};\r\n `,\r\n H6: `color: ${COLOR.MAIN.PRIMARY};\r\n font-family: ${OPEN_SANS};\r\n font-size: ${FONT_SIZE.SMALL};\r\n font-weight: 800;\r\n text-transform: uppercase;\r\n line-height: ${LINE_HEIGHT.LARGE};\r\n margin-bottom: ${TEXT_RELATIVE_MARGIN.MEDIUM};\r\n `,\r\n};\r\n\r\nexport const BREAKPOINT = {\r\n MOBILE: '320px',\r\n TABLET: '641px',\r\n DESKTOP: '769px',\r\n};\r\n\r\nexport const SPEED = {\r\n TRANSITION: '300ms',\r\n ROTATE: '600ms',\r\n};\r\n\r\nexport const RADIUS = {\r\n FORM_FIELD: '3px',\r\n DEFAULT: '3px',\r\n};\r\n\r\nexport const SHADOW = {\r\n DEFAULT: '0 1px 2px 0 rgb(0 0 0 / 8%)',\r\n};\r\n\r\nexport const ANIMATION = {\r\n FADE_IN: keyframes`\r\n 0% {\r\n opacity: 0;\r\n }\r\n 100% {\r\n opacity: 1;\r\n }\r\n `,\r\n FADE_OUT: keyframes`\r\n 0% {\r\n opacity: 0;\r\n }\r\n 100% {\r\n opacity: 1;\r\n }\r\n `,\r\n SCALE_IN: keyframes`\r\n 0% {\r\n transform: scale(.1);\r\n opacity: 0;\r\n }\r\n 100% {\r\n transform: scale(1);\r\n opacity: 1;\r\n }\r\n `,\r\n ROTATE_CLOCKWISE: keyframes`\r\n 0% {\r\n transform: rotate(0deg);\r\n }\r\n 100% {\r\n transform: rotate(360deg);\r\n }\r\n `,\r\n};\r\n\r\nexport const BUTTON_MIN_WIDTH = {\r\n SMALL: '150px',\r\n};\r\n","import { lighten } from 'polished';\r\n\r\nimport { COLOR } from './constants';\r\n\r\ninterface ThemeSet {\r\n REPORTING: Theme;\r\n FORECASTING: Theme;\r\n DASHBOARDS: Theme;\r\n MULTI: Theme;\r\n GENERIC: Theme;\r\n GENERICBLUE: Theme;\r\n}\r\n\r\nexport interface Theme {\r\n main: string;\r\n mainBorder: string;\r\n mainText: string;\r\n spinnerColor: 'black' | 'white';\r\n hover?: { main?: string; mainBorder?: string; mainText?: string };\r\n}\r\n\r\nconst THEME: ThemeSet = {\r\n REPORTING: {\r\n main: COLOR.BRAND.REPORTING,\r\n mainBorder: COLOR.BRAND.REPORTING,\r\n mainText: COLOR.PRIMARY.WHITE,\r\n spinnerColor: 'white',\r\n hover: {\r\n main: lighten(0.1, COLOR.BRAND.REPORTING),\r\n mainBorder: lighten(0.1, COLOR.BRAND.REPORTING),\r\n mainText: COLOR.PRIMARY.WHITE,\r\n },\r\n },\r\n FORECASTING: {\r\n main: COLOR.BRAND.FORECASTING,\r\n mainBorder: COLOR.BRAND.FORECASTING,\r\n mainText: COLOR.PRIMARY.WHITE,\r\n spinnerColor: 'white',\r\n hover: {\r\n main: lighten(0.1, COLOR.BRAND.FORECASTING),\r\n mainBorder: lighten(0.1, COLOR.BRAND.FORECASTING),\r\n mainText: COLOR.PRIMARY.WHITE,\r\n },\r\n },\r\n DASHBOARDS: {\r\n main: COLOR.BRAND.DASHBOARDS,\r\n mainBorder: COLOR.BRAND.DASHBOARDS,\r\n mainText: COLOR.PRIMARY.WHITE,\r\n spinnerColor: 'white',\r\n hover: {\r\n main: lighten(0.1, COLOR.BRAND.DASHBOARDS),\r\n mainBorder: lighten(0.1, COLOR.BRAND.DASHBOARDS),\r\n mainText: COLOR.PRIMARY.WHITE,\r\n },\r\n },\r\n MULTI: {\r\n main: COLOR.BRAND.MULTI,\r\n mainBorder: COLOR.BRAND.MULTI,\r\n mainText: COLOR.PRIMARY.WHITE,\r\n spinnerColor: 'white',\r\n hover: {\r\n main: lighten(0.1, COLOR.BRAND.MULTI),\r\n mainBorder: lighten(0.1, COLOR.BRAND.MULTI),\r\n mainText: COLOR.PRIMARY.WHITE,\r\n },\r\n },\r\n GENERIC: {\r\n main: COLOR.PRIMARY.WHITE,\r\n mainBorder: COLOR.MAIN.DARK_GREY,\r\n mainText: COLOR.MAIN.DARK_GREY,\r\n spinnerColor: 'black',\r\n hover: {\r\n main: COLOR.MAIN.DARK_GREY,\r\n mainBorder: COLOR.MAIN.DARK_GREY,\r\n mainText: COLOR.PRIMARY.WHITE,\r\n },\r\n },\r\n GENERICBLUE: {\r\n main: COLOR.PRIMARY.WHITE,\r\n mainBorder: COLOR.MAIN.SECONDARY,\r\n mainText: COLOR.MAIN.SECONDARY,\r\n spinnerColor: 'white',\r\n hover: {\r\n main: COLOR.MAIN.SECONDARY,\r\n mainBorder: COLOR.MAIN.SECONDARY,\r\n mainText: COLOR.PRIMARY.WHITE,\r\n },\r\n },\r\n};\r\n\r\nexport default THEME;\r\n","import * as React from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport { ANIMATION, SPACING, SPEED } from '../../packages/constants';\r\nimport blackSpinner from './images/spinner-black';\r\nimport whiteSpinner from './images/spinner-white';\r\n\r\nexport interface LoadingSpinnerProps {\r\n children?: React.ReactNode;\r\n onClick?: (e: any) => void;\r\n color?: 'black' | 'white';\r\n justify?: 'flex-start' | 'center' | 'flex-end' | 'space-between' | undefined;\r\n iconWidth?: string;\r\n iconHeight?: string;\r\n className?: string;\r\n}\r\n\r\nexport interface SpinnerIconProps {\r\n width?: string;\r\n height?: string;\r\n}\r\n\r\nconst StyledLoadingSpinner = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: ${(props: LoadingSpinnerProps): string => (props.justify ? props.justify : 'space-between')};\r\n`;\r\n\r\nexport const Icon = styled.img`\r\n width: ${(props) => props.width};\r\n height: ${(props) => props.height};\r\n margin: 0 0 0 ${SPACING.SMALL};\r\n display: inline-block;\r\n animation: ${ANIMATION.ROTATE_CLOCKWISE} ${SPEED.ROTATE} linear infinite;\r\n`;\r\n\r\nexport const LoadingSpinner = ({\r\n children,\r\n color = 'white',\r\n iconWidth = '20px',\r\n iconHeight = '20px',\r\n ...props\r\n}: LoadingSpinnerProps) => (\r\n \r\n {children}\r\n \r\n \r\n);\r\n","export default `data:image/png;base64,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`;\r\n","export default `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAygAAAMoCAMAAAATKjTDAAAC/VBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+G1NxwAAAA/3RSTlMACRUhLTlFUVxjanJ5gIePlZ6kqKqtr7G0trm8v7q3tbKwrqumn5iRioJ6dG1lXlNHOy4iFgoBDh8vQFBhlKK9vsDBp5l2QzEgDxEmPGd8u8LD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\\n`;\r\n","import * as React from 'react';\r\n\r\nimport styled, { ThemeContext } from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, FONT_STACK, SPACING, SPEED } from '../../packages/constants/';\r\nimport { LoadingSpinner } from '../loading-spinner';\r\n\r\nexport interface ButtonProps {\r\n /**\r\n * Button content\r\n */\r\n children: React.ReactNode;\r\n /**\r\n * Data Test ID\r\n */\r\n dataId: string;\r\n /**\r\n * Optional click handler\r\n */\r\n onClick?: (e: any) => void;\r\n /**\r\n * Is it disabled?\r\n */\r\n disabled?: boolean;\r\n /**\r\n * Value\r\n */\r\n value?: string;\r\n /**\r\n * Is it loading?\r\n */\r\n loading?: boolean;\r\n /**\r\n * Is it inline?\r\n */\r\n inline?: boolean;\r\n /**\r\n * Theme\r\n */\r\n theme?: {\r\n main: string;\r\n mainText: string;\r\n mainBorder: string;\r\n spinnerColor: 'black' | 'white';\r\n hover?: { main?: string; mainBorder?: string; mainText?: string };\r\n };\r\n themeProvider?: {};\r\n /**\r\n * Minimum width\r\n */\r\n minWidth?: string;\r\n /**\r\n * Color\r\n */\r\n color?: string;\r\n /**\r\n * size\r\n */\r\n size?: string;\r\n /**\r\n * Button type\r\n */\r\n type?: 'button' | 'submit' | 'reset' | undefined;\r\n className?: string;\r\n /** Allows the button to be assosciated with a form it is not a direct child of */\r\n form?: string;\r\n variant?: 'medium' | 'large';\r\n}\r\nexport interface ButtonAsTextProps {\r\n children: React.ReactNode;\r\n /**\r\n * Data Test ID cat\r\n */\r\n dataId: string;\r\n /**\r\n * Optional click handler\r\n */\r\n onClick?: (e: any) => void;\r\n /**\r\n * Is it disabled?\r\n */\r\n disabled?: boolean;\r\n /**\r\n * Value\r\n */\r\n value?: string;\r\n /**\r\n * Is it inline?\r\n */\r\n inline?: boolean;\r\n /**\r\n * Theme\r\n */\r\n theme?: {\r\n main: string;\r\n mainText: string;\r\n mainBorder: string;\r\n spinnerColor: 'black' | 'white';\r\n hover?: { main?: string; mainBorder?: string; mainText?: string };\r\n };\r\n themeProvider?: {};\r\n /**\r\n * Minimum width\r\n */\r\n minWidth?: string;\r\n /**\r\n * size\r\n */\r\n size?: string;\r\n /**\r\n * Button type\r\n */\r\n type?: 'button' | 'submit' | 'reset' | undefined;\r\n className?: string;\r\n}\r\nexport interface ButtonGroupProps {\r\n /**\r\n * ButtonGroup content\r\n */\r\n children: React.ReactNode;\r\n /**\r\n * ButtonGroup alignment\r\n */\r\n justify?: 'left' | 'center' | 'right' | 'space-between' | undefined;\r\n}\r\n\r\nconst StyledButton = styled.button.attrs(({ dataId }) => ({\r\n 'data-test-id': dataId,\r\n}))`\r\n display: ${(props) => (props.inline ? 'inline-flex' : 'flex')};\r\n justify-content: center;\r\n align-items: center;\r\n border-radius: ${(props) => (props.variant === 'large' ? '5px' : '2px')};\r\n border-width: 2px;\r\n border-style: solid;\r\n border-color: ${(props) => (props.theme ? props.theme.mainBorder : COLOR.BRAND.REPORTING)};\r\n background-color: ${(props) => (props.theme ? props.theme.main : COLOR.BRAND.REPORTING)};\r\n color: ${(props) => (props.theme ? props.theme.mainText : COLOR.PRIMARY.WHITE)};\r\n cursor: pointer;\r\n font-size: ${(props) =>\r\n props.size ? props.size : props.variant === 'large' ? FONT_SIZE.SMALL : FONT_SIZE.X_SMALL};\r\n font-weight: 700;\r\n line-height: 20px;\r\n text-decoration: none;\r\n padding: ${(props) => (props.variant === 'large' ? '10px 20px' : SPACING.BUTTON_DEFAULT)};\r\n min-width: ${(props) => props.minWidth || '0'};\r\n\r\n :disabled {\r\n opacity: 0.3;\r\n cursor: default;\r\n }\r\n\r\n :hover:not(:disabled) {\r\n border-color: ${({ theme }) => (theme && theme.hover ? theme.hover.mainBorder : COLOR.BRAND.REPORTING)};\r\n background-color: ${({ theme }) => (theme && theme.hover ? theme.hover.main : COLOR.BRAND.REPORTING)};\r\n color: ${({ theme }) => (theme && theme.hover ? theme.hover.mainText : COLOR.PRIMARY.WHITE)};\r\n }\r\n`;\r\n\r\n/**\r\n * Primary UI component for user interaction\r\n *\r\n * - Use the primary button to help users know what to access next.\r\n * - ~~Use a secondary button where the action is not compulsory and there is already a primary button.~~ (We have\r\n * yet to decide on secondary button styles)\r\n * - Use a generic button for cancelling, or configuration.\r\n * - Don't use the primary button in conjunction with another primary button.\r\n **/\r\n\r\nconst Button = React.forwardRef(\r\n (\r\n {\r\n children,\r\n onClick,\r\n disabled = false,\r\n inline,\r\n color,\r\n size,\r\n type = 'button',\r\n loading,\r\n variant = 'medium',\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const themeContext = React.useContext(ThemeContext);\r\n return (\r\n \r\n {loading ? (\r\n \r\n {children}\r\n \r\n ) : (\r\n children\r\n )}\r\n \r\n );\r\n },\r\n);\r\n\r\nButton.displayName = 'Button';\r\n\r\nconst StyledTextButton = styled.button.attrs(({ dataId }) => ({\r\n 'data-test-id': dataId,\r\n}))`\r\n background-color: transparent;\r\n display: ${(props: ButtonProps) => (props.inline ? 'inline-flex' : 'flex')};\r\n justify-content: flex-start;\r\n align-items: center;\r\n color: ${(props) =>\r\n props.theme\r\n ? props.theme.mainBorder\r\n ? props.theme.mainBorder\r\n : COLOR.BRAND.REPORTING\r\n : COLOR.BRAND.REPORTING};\r\n cursor: pointer;\r\n font-family: ${FONT_STACK};\r\n font-size: ${(props: ButtonProps) => props.size || FONT_SIZE.X_SMALL};\r\n font-weight: 700;\r\n line-height: ${FONT_SIZE.SMALL};\r\n text-decoration: none;\r\n padding: 0 0 1px;\r\n margin-right: ${SPACING.X_LARGE};\r\n border: 0;\r\n border-bottom: 1px solid transparent;\r\n transition: border-bottom-color ${SPEED.TRANSITION};\r\n\r\n &:disabled {\r\n opacity: 0.3;\r\n cursor: default;\r\n }\r\n\r\n &:last-of-type {\r\n margin-right: 0;\r\n }\r\n\r\n &:hover:not(:disabled) {\r\n border-bottom-width: 1px;\r\n border-bottom-style: solid;\r\n border-bottom-color: ${(props: ButtonProps) =>\r\n props.theme && props.theme.hover ? props.theme.hover.main : COLOR.BRAND.REPORTING};\r\n }\r\n`;\r\n\r\n/**\r\n * Text UI component for user interaction\r\n */\r\nconst ButtonAsText = React.forwardRef(\r\n ({ children, onClick, disabled, inline, size, type, ...props }, ref) => (\r\n \r\n {children}\r\n \r\n ),\r\n);\r\nButtonAsText.displayName = 'ButtonAsText';\r\n\r\nconst StyledButtonGroup = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: ${({ justify }) =>\r\n justify === 'left'\r\n ? 'flex-start'\r\n : justify === 'center'\r\n ? 'center'\r\n : justify === 'right'\r\n ? 'flex-end'\r\n : justify === 'space-between'\r\n ? 'space-between'\r\n : 'center'};\r\n\r\n ${StyledButton} {\r\n margin-right: ${SPACING.XX_LARGE};\r\n\r\n &:last-child {\r\n margin-right: 0;\r\n }\r\n }\r\n`;\r\n\r\nconst ButtonGroup = ({ children, justify, ...props }: ButtonGroupProps) => (\r\n \r\n {children}\r\n \r\n);\r\n\r\nexport { Button, ButtonAsText, ButtonGroup };\r\n","import * as React from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT, FONT_SIZE, SPACING } from '../../packages/constants';\r\nimport { ChevronRight } from '../../packages/icons';\r\n\r\nexport interface CollapsibleBandProps {\r\n heading: React.ReactNode;\r\n rightColumn?: React.ReactNode;\r\n dataId: string;\r\n onClick?: () => void;\r\n expand: boolean;\r\n theme?: {\r\n main: string;\r\n };\r\n className?: string;\r\n}\r\n\r\ninterface StyledChevronProps {\r\n isExpanded: boolean;\r\n}\r\n\r\ninterface StyledHeadingProps {\r\n isExpanded: boolean;\r\n theme?: {\r\n main: string;\r\n };\r\n}\r\n\r\nconst StyledCollapsibleBand = styled.div`\r\n display: flex;\r\n border-top: 1px solid;\r\n border-bottom: 1px solid;\r\n border-color: ${COLOR.MAIN.MEDIUM_GREY};\r\n align-items: center;\r\n`;\r\n\r\nconst StyledButton = styled.button`\r\n flex-grow: 1;\r\n border: 0;\r\n padding: 10px;\r\n cursor: pointer;\r\n text-align: left;\r\n background-color: transparent;\r\n`;\r\n\r\nconst StyledChevron = styled(ChevronRight)`\r\n display: inline-block;\r\n margin-top: -2px;\r\n margin-right: 6px;\r\n vertical-align: text-top;\r\n width: 12px;\r\n height: 12px;\r\n fill: ${COLOR.MAIN.DARK_GREY};\r\n margin-right: ${SPACING.X_SMALL};\r\n transform: ${(props: StyledChevronProps): string => (props.isExpanded ? 'rotate(-90deg)' : 'rotate(90deg)')};\r\n`;\r\n\r\nconst StyledHeading = styled.p`\r\n display: inline-block;\r\n font-family: ${FONT.OPEN_SANS};\r\n font-size: ${FONT_SIZE.LARGE};\r\n font-weight: 700;\r\n line-height: 1.2;\r\n color: ${(props: StyledHeadingProps): string =>\r\n props.isExpanded ? (props.theme ? props.theme.main : COLOR.BRAND.REPORTING) : COLOR.MAIN.DARK_GREY};\r\n`;\r\n\r\nconst RightColumnContainer = styled.div`\r\n padding: 10px;\r\n`;\r\n\r\nconst CollapsibleBand = React.forwardRef(\r\n ({ heading, rightColumn, expand = false, dataId, onClick, ...props }, ref) => {\r\n return (\r\n \r\n \r\n \r\n \r\n {heading}\r\n \r\n \r\n {rightColumn && {rightColumn}}\r\n \r\n );\r\n },\r\n);\r\nCollapsibleBand.displayName = 'CollapsibleBand';\r\n\r\nexport default CollapsibleBand;\r\n","import CollapsibleBand from './collapsible-band';\r\nexport * from './collapsible-band';\r\nexport default CollapsibleBand;\r\n","import * as React from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport { BREAKPOINT } from '../../packages/constants';\r\n\r\nexport interface GridRowProps {\r\n children: React.ReactNode;\r\n bgColor?: string;\r\n}\r\n\r\nconst GridRow = styled.div`\r\n box-sizing: border-box;\r\n display: flex;\r\n flex-direction: column;\r\n background-color: ${(props: GridRowProps): string => (props.bgColor ? props.bgColor : 'transparent')};\r\n width: 100%;\r\n\r\n @media (min-width: ${BREAKPOINT.TABLET}) {\r\n flex-direction: row;\r\n }\r\n`;\r\n\r\nexport default GridRow;\r\n","import * as React from 'react'; // eslint-disable-line\r\nimport styled from 'styled-components';\r\n\r\nimport { BREAKPOINT } from '../../packages/constants';\r\n\r\nexport interface GridColProps {\r\n children: React.ReactNode;\r\n bgColor?: string;\r\n width?: string;\r\n dev?: boolean;\r\n}\r\n\r\ninterface Widths {\r\n oneQuarter: string;\r\n oneThird: string;\r\n oneHalf: string;\r\n twoThirds: string;\r\n threeQuarters: string;\r\n full: string;\r\n [key: string]: string;\r\n}\r\n\r\nconst widths: Widths = {\r\n oneQuarter: '25%',\r\n oneThird: '33.3333%',\r\n oneHalf: '50%',\r\n twoThirds: '66.6667%',\r\n threeQuarters: '75%',\r\n full: '100%',\r\n};\r\n\r\nconst getWidth = (value: string) => widths[value];\r\n\r\n// TODO: use configurable gutter\r\nconst GridCol = styled.div`\r\n border: ${(props: GridColProps): string => (props.dev ? '1px solid red' : 'none')};\r\n background-color: ${(props: GridColProps) => props.bgColor || 'transparent'};\r\n box-sizing: border-box;\r\n padding: ${(props: GridColProps): string => (props.dev ? '5px' : '0')};\r\n margin-bottom: ${(props: GridColProps): string => (props.dev ? '5px' : '0')};\r\n width: 100%;\r\n\r\n @media (min-width: ${BREAKPOINT.TABLET}) {\r\n width: ${(props: GridColProps) => (props.width ? getWidth(props.width) : widths.full)};\r\n }\r\n`;\r\n\r\nexport default GridCol;\r\n","import * as React from 'react';\r\n\r\nimport { Portal } from 'react-portal';\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE } from '../../packages/constants';\r\nimport { LoadingSpinner } from '../loading-spinner';\r\n\r\nexport interface LoadingScreenProps {\r\n message?: string;\r\n}\r\n\r\nconst StyledLoadingScreen = styled.div`\r\n position: sticky;\r\n top: 25vh;\r\n margin-top: 20px;\r\n margin-bottom: 12px;\r\n display: flex;\r\n background: #fff;\r\n border-radius: 5px;\r\n box-shadow: 0px 0px 6px 0px rgba(0, 0, 0, 0.08), 0 2.2px 1.7px -10px rgba(0, 0, 0, 0.08),\r\n 0 5.3px 4px -10px rgba(0, 0, 0, 0.06), 0 10px 7.5px -10px rgba(0, 0, 0, 0.06),\r\n 0 17.9px 13.4px -10px rgba(0, 0, 0, 0.05), 0 33.4px 25.1px -10px rgba(0, 0, 0, 0.04),\r\n 0 80px 60px -10px rgba(0, 0, 0, 0.04);\r\n padding: 10px;\r\n padding-right: 16px; // temporary to balance because the spinner adds 6px left margin\r\n font-size: bu(2);\r\n height: fit-content;\r\n line-height: normal;\r\n`;\r\n\r\nconst Overlay = styled.div`\r\n background-color: ${COLOR.MODAL.MODAL_OVERLAY};\r\n position: fixed;\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n display: flex;\r\n justify-content: center;\r\n z-index: 9999;\r\n`;\r\n\r\nconst StyledLoadingSpinner = styled(LoadingSpinner)`\r\n margin-right: 10px;\r\n`;\r\n\r\nconst StyledMessage = styled.p`\r\n display: block;\r\n flex-grow: 1;\r\n text-align: center;\r\n font-weight: bold;\r\n font-size: ${FONT_SIZE.MEDIUM};\r\n color: ${COLOR.PRIMARY.BLACK};\r\n`;\r\n\r\nexport const LoadingScreen = React.forwardRef(\r\n ({ message = 'Loading...', ...props }, ref) => (\r\n \r\n \r\n \r\n \r\n {message}\r\n \r\n \r\n \r\n ),\r\n);\r\nLoadingScreen.displayName = 'LoadingScreen';\r\n","import * as React from 'react';\r\nimport { useEffect } from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, SPACING, THEME } from '../../packages/constants';\r\nimport type { Theme } from '../../packages/constants';\r\nimport { Button } from '../button';\r\n\r\nexport interface ModalProps {\r\n children: React.ReactNode;\r\n /**\r\n * Modal buttons\r\n */\r\n buttons?: React.ReactNode;\r\n /**\r\n * Button group arrangement type\r\n */\r\n buttonGroupType?: ButtonGroupType;\r\n theme?: Theme | string;\r\n /**\r\n * Title of modal\r\n */\r\n title?: string;\r\n /**\r\n * Cancel button text\r\n */\r\n cancelText?: string;\r\n /**\r\n * Primary button text\r\n */\r\n primaryText?: string;\r\n /**\r\n * Function to handle cancel button\r\n */\r\n handleCancelButton?: (e: any) => void;\r\n /**\r\n * Function to handle primary button\r\n */\r\n handlePrimaryButton?: (e: any) => void;\r\n /**\r\n * Width of modal (420px)\r\n */\r\n width?: string;\r\n /**\r\n * Height of modal\r\n */\r\n height?: string;\r\n /**\r\n * Focus on a particular button\r\n */\r\n focusOnButton?: string;\r\n themeProvider?: {};\r\n}\r\n\r\nexport enum ButtonGroupType {\r\n Left = 'LEFT',\r\n Right = 'RIGHT',\r\n}\r\n\r\nexport interface ButtonGroupProps {\r\n buttonGroupType?: ButtonGroupType;\r\n}\r\n\r\ninterface ModalTheme {\r\n theme?: {\r\n main: string;\r\n mainText: string;\r\n mainBorder: string;\r\n spinnerColor: 'black' | 'white';\r\n hover?: { main?: string; mainBorder?: string; mainText?: string };\r\n };\r\n}\r\n\r\nconst Overlay = styled.div`\r\n background-color: ${COLOR.MODAL.MODAL_OVERLAY};\r\n position: fixed;\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n width: 100%;\r\n height: 100%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n z-index: 9999;\r\n`;\r\n\r\nconst StyledModal = styled.div`\r\n border-radius: 4px;\r\n width: ${(props: ModalProps) => (props.width ? props.width : '900px')};\r\n height: ${(props: ModalProps) => (props.height ? props.height : '70vh')};\r\n display: flex;\r\n flex-direction: column;\r\n`;\r\n\r\nconst StyledModalTitleBar = styled.div`\r\n background-color: ${(props: ModalTheme) => (props.theme ? props.theme.main : COLOR.BRAND.REPORTING)};\r\n color: ${COLOR.PRIMARY.WHITE};\r\n padding: 12px;\r\n border-top-left-radius: 4px;\r\n border-top-right-radius: 4px;\r\n font-size: ${FONT_SIZE.MEDIUM};\r\n font-weight: 700;\r\n`;\r\n\r\nconst StyledModalContent = styled.div`\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n height: calc(100% - 42px - 65px);\r\n`; // 42px = titlebar, 65px = button bar\r\n\r\nconst StyledButton = styled(Button)``;\r\n\r\nconst StyledButtonGroup = styled.div`\r\n display: flex;\r\n justify-content: ${(props: ButtonGroupProps) =>\r\n props.buttonGroupType === ButtonGroupType.Right ? 'flex-start' : ''};\r\n flex-direction: ${(props: ButtonGroupProps) =>\r\n props.buttonGroupType === ButtonGroupType.Right ? 'row-reverse' : ''};\r\n background-color: ${COLOR.MAIN.BUTTON_GROUP_BG};\r\n border-top: 1px solid ${COLOR.MAIN.BUTTON_GROUP_BORDER};\r\n border-bottom-left-radius: 4px;\r\n border-bottom-right-radius: 4px;\r\n padding: 16px;\r\n\r\n ${StyledButton} {\r\n margin-left: ${SPACING.X_LARGE};\r\n margin-right: ${SPACING.X_LARGE};\r\n\r\n &:first-child {\r\n margin-left: 0;\r\n margin-right: 0;\r\n }\r\n }\r\n`;\r\n\r\nexport const Modal = React.forwardRef(\r\n (\r\n {\r\n children,\r\n buttons = null,\r\n buttonGroupType = ButtonGroupType.Left,\r\n title,\r\n cancelText,\r\n primaryText,\r\n handleCancelButton,\r\n handlePrimaryButton,\r\n width,\r\n focusOnButton,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const cancelButtonRef = React.useRef(null);\r\n const primaryButtonRef = React.useRef(null);\r\n\r\n useEffect(() => {\r\n if (focusOnButton === 'cancel' && cancelButtonRef.current) cancelButtonRef.current.focus();\r\n if (focusOnButton === 'primary' && primaryButtonRef.current) primaryButtonRef.current.focus();\r\n });\r\n\r\n return (\r\n \r\n {title}\r\n {children}\r\n {buttons ? (\r\n buttons\r\n ) : (\r\n \r\n \r\n {primaryText || 'Add'}\r\n \r\n \r\n {cancelText || 'Cancel'}\r\n \r\n \r\n )}\r\n \r\n );\r\n },\r\n);\r\nModal.displayName = 'Modal';\r\n\r\nexport { Overlay, StyledModal, StyledModalTitleBar, StyledModalContent, StyledButton, StyledButtonGroup };\r\n","import * as React from 'react';\r\nimport { useState } from 'react';\r\n\r\nimport { darken, lighten } from 'polished';\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, RADIUS } from '../../packages/constants';\r\nimport { CircleWithX, Search } from '../../packages/icons';\r\n\r\nexport interface SearchFilterProps {\r\n assistAccess: boolean;\r\n handleChange?: (e: any) => void;\r\n handleClearButton?: (e: any) => void;\r\n placeholder?: string;\r\n searchTerm?: string;\r\n ref?: any;\r\n isExpandable?: boolean;\r\n isRounded?: boolean;\r\n dataId?: string;\r\n hasFocus?: boolean;\r\n hasClearButton?: boolean;\r\n hasSearchIcon?: boolean;\r\n}\r\n\r\ninterface StyledInputProps {\r\n assistAccess: boolean;\r\n dataTestId: string;\r\n autoComplete?: string;\r\n hideExpandButton?: boolean;\r\n isRounded?: boolean;\r\n isExpandable?: boolean;\r\n hasEndContent: boolean;\r\n ref?: any;\r\n rel?: string;\r\n}\r\n\r\ninterface DataTestIdProps {\r\n dataTestId: string;\r\n}\r\n\r\ninterface ExpandButtonProps {\r\n isRounded?: boolean;\r\n hideExpandButton?: boolean;\r\n}\r\n\r\ninterface StyledFilterProps {\r\n isExpanded: boolean;\r\n isRounded?: boolean;\r\n}\r\n\r\nconst StyledFilter = styled.div`\r\n display: flex;\r\n min-height: 34px;\r\n border: ${(props) => (props.isExpanded ? `1px solid ${COLOR.MAIN.FORM_FIELD}` : 'none')};\r\n border-radius: ${(props): string => (props.isRounded ? '25px' : RADIUS.FORM_FIELD)};\r\n\r\n &:focus-within {\r\n border-color: ${COLOR.BRAND.REPORTING};\r\n }\r\n`;\r\n\r\nconst StyledCircleWithX = styled(CircleWithX)`\r\n width: 18px;\r\n height: 22px;\r\n`;\r\n\r\nconst StyledSearch = styled(Search)`\r\n width: 18px;\r\n height: 22px;\r\n fill: #9ba8bd;\r\n`;\r\n\r\nconst Button = styled.button.attrs(({ dataTestId }) => ({\r\n 'data-test-id': dataTestId,\r\n}))``;\r\n\r\ninterface StyledButtonProps {\r\n isRounded?: boolean;\r\n isExpandable?: boolean;\r\n assistAccess?: boolean;\r\n hideExpandButton?: boolean;\r\n}\r\n\r\nconst StyledButton = styled(Button)`\r\n fill: ${COLOR.MAIN.FORM_FIELD_DARK};\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n border-radius: ${(props): string =>\r\n props.isRounded ? '0 25px 25px 0' : `0 ${RADIUS.FORM_FIELD} ${RADIUS.FORM_FIELD} 0`};\r\n border: none;\r\n padding: 6px;\r\n cursor: pointer;\r\n display: ${(props) => (!props.isExpandable ? 'block' : props.hideExpandButton ? 'block' : 'none')};\r\n\r\n &:focus {\r\n outline: ${(props): string => (props.assistAccess ? '1px dotted #212121' : '0')};\r\n outline: ${(props): string => (props.assistAccess ? '5px auto -webkit-focus-ring-color' : '0')};\r\n\r\n ${StyledCircleWithX} {\r\n fill: ${COLOR.BRAND.REPORTING};\r\n }\r\n }\r\n\r\n &:hover {\r\n ${StyledCircleWithX} {\r\n fill: ${darken('0.2', COLOR.MAIN.FORM_FIELD_DARK)};\r\n }\r\n }\r\n\r\n &:disabled {\r\n cursor: default;\r\n\r\n ${StyledCircleWithX} {\r\n opacity: 0.15;\r\n }\r\n }\r\n`;\r\n\r\ninterface StyledSearchIconContainerProps {\r\n isRounded?: boolean;\r\n}\r\n\r\nconst StyledSearchIconContainer = styled.div`\r\n fill: ${COLOR.MAIN.FORM_FIELD_DARK};\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n border-radius: ${(props): string =>\r\n props.isRounded ? '0 25px 25px 0' : `0 ${RADIUS.FORM_FIELD} ${RADIUS.FORM_FIELD} 0`};\r\n padding: 6px;\r\n display: flex;\r\n align-items: center;\r\n`;\r\n\r\nconst TextInput = styled.input.attrs(({ dataTestId }) => ({\r\n 'data-test-id': dataTestId,\r\n}))``;\r\n\r\nconst StyledInput = styled(TextInput)`\r\n font-size: 14px;\r\n color: ${darken('0.2', COLOR.MAIN.FORM_FIELD_DARK)};\r\n border-radius: ${(props) => (props.isRounded ? '25px' : RADIUS.FORM_FIELD)};\r\n\r\n ${(props) =>\r\n props.hasEndContent &&\r\n `\r\n border-top-right-radius: 0;\r\n border-bottom-right-radius: 0;\r\n `};\r\n\r\n border: none;\r\n padding: ${(props) => (!props.isExpandable ? '2px 6px' : props.hideExpandButton ? '2px 6px' : 0)};\r\n width: ${(props) => (props.isExpandable ? (props.hideExpandButton ? '100%' : '0') : '100%')};\r\n background-color: ${(props) =>\r\n props.isExpandable ? (props.hideExpandButton ? COLOR.PRIMARY.WHITE : 'transparent') : COLOR.PRIMARY.WHITE};\r\n\r\n &::placeholder {\r\n opacity: ${(props) => (!props.isExpandable ? 1 : props.hideExpandButton ? 1 : 0)};\r\n color: ${lighten('0.2', COLOR.MAIN.FORM_FIELD_DARK)};\r\n }\r\n\r\n &:focus {\r\n border-color: ${COLOR.BRAND.REPORTING};\r\n outline: ${(props: StyledInputProps): string => (props.assistAccess ? '1px dotted #212121' : '0')};\r\n outline: ${(props: StyledInputProps): string =>\r\n props.assistAccess ? '5px auto -webkit-focus-ring-color' : '0'};\r\n\r\n ~ ${StyledButton} {\r\n border-color: ${COLOR.BRAND.REPORTING};\r\n }\r\n ~ ${StyledSearchIconContainer} {\r\n border-color: ${COLOR.BRAND.REPORTING};\r\n }\r\n }\r\n\r\n /* 'fix' for removing the internal clear button on Microsoft Edge */\r\n &::-ms-clear {\r\n display: none;\r\n }\r\n`;\r\n\r\nconst ExpandButton = styled.button`\r\n font-size: 14px;\r\n color: ${darken('0.2', COLOR.MAIN.FORM_FIELD_DARK)};\r\n cursor: pointer;\r\n border: 1px solid ${darken(0.04, COLOR.MAIN.MEDIUM_GREY)};\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n border-radius: ${(props) => (props.isRounded ? '25px' : `${RADIUS.FORM_FIELD}`)};\r\n padding: 2px 8px;\r\n min-height: 36px;\r\n display: ${({ hideExpandButton }) => (hideExpandButton ? 'none' : 'flex')};\r\n align-items: center;\r\n justify-content: center;\r\n\r\n &:hover {\r\n border-color: ${lighten(0.5, COLOR.MAIN.LABEL_TEXT)};\r\n background-color: ${lighten(0.65, COLOR.MAIN.LABEL_TEXT)};\r\n\r\n ${StyledSearch} {\r\n fill: ${darken('0.2', COLOR.MAIN.FORM_FIELD_DARK)};\r\n }\r\n }\r\n`;\r\n\r\nconst SearchFilter = React.forwardRef(\r\n (\r\n {\r\n assistAccess,\r\n placeholder,\r\n handleChange,\r\n handleClearButton,\r\n searchTerm,\r\n isRounded,\r\n isExpandable,\r\n dataId,\r\n hasFocus,\r\n hasClearButton = true,\r\n hasSearchIcon = false,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const [hideExpandButton, setHideExpandButton] = useState(false);\r\n\r\n // If the input has a search icon, only show the clear button if a search term has been entered\r\n // Otherwise, show the search icon\r\n const isExpanded = !isExpandable || hideExpandButton;\r\n const showClearButton = hasClearButton && (!hasSearchIcon || !!searchTerm);\r\n const showSearchIcon = isExpanded && hasSearchIcon && !showClearButton;\r\n\r\n const handleExpandButton = () => {\r\n setHideExpandButton(true);\r\n // @ts-ignore\r\n ref.current.focus();\r\n };\r\n\r\n const handleBlur = () => {\r\n if (!isExpandable) return;\r\n // @ts-ignore\r\n if (!ref.current.value) setHideExpandButton(false);\r\n };\r\n\r\n return (\r\n \r\n {isExpandable && (\r\n \r\n \r\n \r\n )}\r\n \r\n {showClearButton && (\r\n \r\n \r\n \r\n )}\r\n {showSearchIcon && (\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n },\r\n);\r\nSearchFilter.displayName = 'SearchFilter';\r\n\r\nexport { SearchFilter };\r\n","import * as React from 'react';\r\n\r\nimport { transparentize } from 'polished';\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT, FONT_SIZE, SPACING } from '../../../../packages/constants';\r\nimport { ChevronRight } from '../../../../packages/icons/';\r\n\r\ninterface ChartGroupProps {\r\n onChange?: (e: any) => void;\r\n chartData?: any;\r\n hideFavourites?: boolean;\r\n hideRecent?: boolean;\r\n checked?: any;\r\n assistAccess?: boolean;\r\n}\r\n\r\ninterface DataTestIdProps {\r\n dataTestId: string;\r\n}\r\n\r\ninterface StyledGroupItemProps {\r\n children: React.ReactNode;\r\n checked: boolean;\r\n radioValue: string;\r\n assistAccess?: boolean;\r\n dataTestId?: string;\r\n onChange?: (e: any) => void;\r\n onClick?: (e: any) => void;\r\n ref?: any;\r\n}\r\n\r\ninterface StyledInputProps {\r\n assistAccess?: boolean;\r\n ref?: any;\r\n rel?: string;\r\n autoComplete?: string;\r\n dataTestId?: string;\r\n}\r\n\r\ninterface StyledLabelTextProps {\r\n checked?: boolean;\r\n assistAccess?: boolean;\r\n}\r\n\r\nexport const ChartGroupScroller = styled.div`\r\n margin-top: ${SPACING.LARGE};\r\n height: 100%;\r\n overflow: auto;\r\n padding-top: 5px;\r\n padding-left: ${SPACING.SMALL};\r\n`;\r\n\r\nexport const ChartGroupTitle = styled.h3`\r\n font-weight: 700;\r\n font-family: ${FONT.OPEN_SANS};\r\n font-size: ${FONT_SIZE.SMALL};\r\n color: #6f788a;\r\n padding: 5px;\r\n margin: 0;\r\n margin-top: ${SPACING.MEDIUM};\r\n`;\r\n\r\nconst ClickableLi = styled.li.attrs(({ dataTestId }) => ({\r\n 'data-test-id': dataTestId,\r\n}))``;\r\n\r\nexport const StyledClickableListItem = styled(ClickableLi)`\r\n list-style-type: none;\r\n margin: 0;\r\n padding: 0;\r\n line-height: 1;\r\n data-test-id: ${(props: DataTestIdProps): string => props.dataTestId};\r\n`;\r\n\r\nexport const StyledListItem = styled.li`\r\n list-style-type: none;\r\n margin: 0;\r\n padding: 0;\r\n line-height: 1;\r\n`;\r\n\r\nexport const StyledList = styled.ul`\r\n list-style-type: none;\r\n margin: 0 0 ${SPACING.MEDIUM};\r\n padding: 0;\r\n\r\n ${StyledClickableListItem} {\r\n margin-right: ${SPACING.MEDIUM};\r\n\r\n ${StyledClickableListItem} {\r\n margin-right: 0;\r\n }\r\n }\r\n`;\r\n\r\nconst ChartGroupWrapperPaddingTop = `26px`;\r\n\r\nexport const ChartGroupWrapper = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n background-color: ${COLOR.MODAL.MODAL_PANEL_ACCENT};\r\n padding: ${ChartGroupWrapperPaddingTop} 0 0 ${SPACING.SMALL};\r\n width: 240px;\r\n height: calc(100% - ${ChartGroupWrapperPaddingTop});\r\n\r\n > ${StyledList}:first-child {\r\n margin-left: ${SPACING.SMALL};\r\n }\r\n`;\r\n\r\nexport const HorizontalRule = styled.hr`\r\n border: 0;\r\n border-bottom: 1px solid #b2bccd;\r\n width: calc(100% - ${SPACING.X_LARGE});\r\n margin: ${SPACING.MEDIUM} ${SPACING.X_LARGE} ${SPACING.MEDIUM} ${SPACING.SMALL};\r\n`;\r\n\r\nconst StyledLabel = styled.label`\r\n background-color: ${COLOR.MODAL.MODAL_PANEL_ACCENT};\r\n position: relative;\r\n`;\r\n\r\nconst StyledLabelText = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n font-family: ${FONT.OPEN_SANS};\r\n font-size: ${FONT_SIZE.SMALL};\r\n font-weight: 400;\r\n background-color: ${(props: StyledLabelTextProps): string => (props.checked ? COLOR.PRIMARY.WHITE : 'transparent')};\r\n color: ${COLOR.BRAND.REPORTING};\r\n padding: 5px;\r\n cursor: pointer;\r\n\r\n &:hover {\r\n background-color: ${(props: StyledLabelTextProps): string =>\r\n props.checked ? COLOR.PRIMARY.WHITE : transparentize('0.5', COLOR.PRIMARY.WHITE)};\r\n }\r\n`;\r\n\r\nconst StyledChevron = styled(ChevronRight)`\r\n fill: #b2bccd;\r\n height: 12px;\r\n width: 12px;\r\n opacity: ${(props: StyledLabelTextProps): number => (props.checked ? 1 : 0)};\r\n`;\r\n\r\nconst StyledRadio = styled.input`\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n opacity: 0;\r\n z-index: -1;\r\n\r\n &:focus ~ ${StyledLabelText} {\r\n outline: ${(props: StyledInputProps): string => (props.assistAccess ? '1px dotted #212121' : '0')};\r\n outline: ${(props: StyledInputProps): string =>\r\n props.assistAccess ? '5px auto -webkit-focus-ring-color' : '0'};\r\n }\r\n`;\r\n\r\nexport const StyledGroupItem = React.forwardRef(\r\n ({ children, onChange, onClick, radioValue, checked, assistAccess, dataTestId, ...props }, ref) => (\r\n \r\n \r\n \r\n \r\n {children} \r\n \r\n \r\n \r\n ),\r\n);\r\nStyledGroupItem.displayName = 'StyledGroupItem';\r\n\r\nconst ChartGroup = React.forwardRef(\r\n ({ onChange, chartData, hideFavourites, hideRecent, checked, assistAccess, ...props }, ref) => (\r\n \r\n \r\n \r\n Create a new chart\r\n \r\n {!hideRecent && (\r\n \r\n Recent\r\n \r\n )}\r\n {!hideFavourites && (\r\n \r\n Favourites\r\n \r\n )}\r\n \r\n\r\n \r\n \r\n \r\n \r\n All...\r\n \r\n {chartData &&\r\n Object.keys(chartData).map((groupTitle) => {\r\n return (\r\n \r\n {chartData[groupTitle].title}\r\n \r\n {Object.keys(chartData[groupTitle].groups).map((groupItem) => {\r\n return (\r\n \r\n {chartData[groupTitle].groups[groupItem].title}\r\n \r\n );\r\n })}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n ),\r\n);\r\nChartGroup.displayName = 'ChartGroup';\r\n\r\nexport default ChartGroup;\r\n","import * as React from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, SPEED, Theme } from '../../../../packages/constants';\r\n\r\ninterface ChartIconProps {\r\n iconName: string;\r\n iconLabel: string;\r\n id: string;\r\n onChange: (e: any) => void;\r\n isSelected: boolean;\r\n assistAccess?: boolean;\r\n dataTestId?: string;\r\n imagePath?: string;\r\n onKeyDown?: (e: any) => void;\r\n hasModernStyles?: boolean;\r\n}\r\n\r\ninterface StyledIconProps {\r\n iconName: string;\r\n imagePath?: string;\r\n assistAccess?: boolean;\r\n}\r\n\r\ninterface StyledInputProps {\r\n assistAccess?: boolean;\r\n ref?: any;\r\n rel?: string;\r\n autoComplete?: string;\r\n dataTestId?: string;\r\n hasModernStyles?: boolean;\r\n theme?: Theme;\r\n}\r\n\r\ninterface DataTestIdProps {\r\n dataTestId: string;\r\n}\r\n\r\nconst ChartIconWrapper = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n margin-bottom: 100px;\r\n width: 33%;\r\n flex-basis: 33%;\r\n`;\r\n\r\nconst StyledLabel = styled.label`\r\n width: 100px;\r\n height: 100px;\r\n display: block;\r\n position: relative;\r\n cursor: pointer;\r\n`;\r\n\r\nexport const StyledIcon = styled.div`\r\n box-sizing: border-box;\r\n margin-bottom: 12px;\r\n border: 3px solid ${COLOR.MAIN.ICON_BACKGROUND};\r\n border-radius: 15px;\r\n width: 100px;\r\n height: 100px;\r\n background-image: url(${(props) => `${props.imagePath ?? ''}${props.iconName}.svg`});\r\n background-color: ${COLOR.MAIN.ICON_BACKGROUND};\r\n background-repeat: no-repeat;\r\n background-position: center;\r\n background-size: 120% auto;\r\n box-shadow: 2px 2px 4px rgba(4, 37, 91, 0.15);\r\n transition: box-shadow ${SPEED.TRANSITION};\r\n`;\r\n\r\nconst StyledLabelText = styled.div`\r\n color: black;\r\n border-radius: 3px;\r\n font-size: ${FONT_SIZE.SMALL};\r\n font-family: sans-serif;\r\n line-height: ${FONT_SIZE.LARGE};\r\n padding: 5px 2px;\r\n text-align: center;\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n box-shadow: 0 0 15px rgba(4, 37, 91, 0);\r\n`;\r\n\r\nconst Radio = styled.input.attrs(({ dataTestId }) => ({\r\n 'data-test-id': dataTestId,\r\n}))``;\r\n\r\nconst StyledRadio = styled(Radio)`\r\n position: absolute;\r\n opacity: 0;\r\n top: 0;\r\n left: 0;\r\n z-index: -1;\r\n\r\n &:hover {\r\n ~ ${StyledIcon} {\r\n box-shadow: 0 0 15px rgba(4, 37, 91, 0.3);\r\n }\r\n }\r\n\r\n &:focus ~ ${StyledIcon} {\r\n outline: ${(props) => (props.assistAccess ? '1px dotted #212121' : '0')};\r\n outline: ${(props) => (props.assistAccess ? '5px auto -webkit-focus-ring-color' : '0')};\r\n }\r\n\r\n &:checked {\r\n ~ ${StyledIcon} {\r\n border-color: ${(props: StyledInputProps) =>\r\n props.hasModernStyles && props.theme?.mainBorder ? props.theme.mainBorder : COLOR.BRAND.REPORTING};\r\n box-shadow: 0 0 15px rgba(4, 37, 91, 0.3);\r\n }\r\n\r\n ${(props) =>\r\n !props.hasModernStyles &&\r\n `\r\n ~ ${StyledLabelText} {\r\n color: white;\r\n background-color: ${COLOR.BRAND.REPORTING};\r\n box-shadow: 0 0 15px rgba(4, 37, 91, 0.3);\r\n }\r\n `}\r\n }\r\n`;\r\n\r\nexport const StyledChartWrapper = styled.div`\r\n display: flex;\r\n flex-wrap: wrap;\r\n align-content: flex-start;\r\n overflow: auto;\r\n padding: 15px 0 0 0;\r\n height: calc(100% - 95px);\r\n position: relative;\r\n`;\r\n\r\nconst ChartIcon = React.forwardRef(\r\n (\r\n {\r\n iconName,\r\n iconLabel,\r\n id,\r\n onChange,\r\n onKeyDown,\r\n assistAccess,\r\n isSelected,\r\n dataTestId,\r\n imagePath,\r\n hasModernStyles,\r\n },\r\n ref,\r\n ) => (\r\n \r\n \r\n \r\n \r\n {iconLabel}\r\n \r\n \r\n ),\r\n);\r\nChartIcon.displayName = 'ChartIcon';\r\n\r\nexport default ChartIcon;\r\n","import * as React from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport { camelToKebab } from '../../../../../Scripts/Spotlight/Components/CamelToKebab';\r\nimport { COLOR, FONT, FONT_SIZE, SPACING } from '../../../../packages/constants';\r\nimport Star from '../../../../packages/icons/star';\r\nimport { StyledIcon as ChartIcon } from '../chart-icon/chart-icon';\r\n\r\nexport interface ChartInfoProps {\r\n onClick?: (e: any) => void;\r\n iconName: string;\r\n chartTitle: string;\r\n description: string;\r\n imagePath?: string;\r\n reportCodes?: any;\r\n hideFavourites?: boolean;\r\n isFavourite?: boolean;\r\n assistAccess: boolean;\r\n}\r\n\r\nexport interface StyledButtonProps {\r\n assistAccess: boolean;\r\n}\r\n\r\nconst CHART_INFO_WIDTH = '196px';\r\n\r\nconst StyledChartInfo = styled.div`\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n box-shadow: inset 7px 0 9px -7px rgba(0, 0, 0, 0.15);\r\n width: 100%;\r\n height: 100%;\r\n`;\r\n\r\nconst StyledChartInfoInner = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n padding: 23px ${SPACING.X_LARGE} ${SPACING.X_LARGE};\r\n height: 100%;\r\n`;\r\n\r\nconst StyledChartIcon = styled(ChartIcon)`\r\n margin-left: 44px;\r\n`;\r\n\r\nconst StyledChartTitle = styled.h2`\r\n font-family: ${FONT.OPEN_SANS};\r\n font-size: ${FONT_SIZE.LARGE};\r\n font-weight: 500;\r\n line-height: ${FONT_SIZE.X_LARGE};\r\n text-align: center;\r\n margin-bottom: 18px;\r\n color: ${COLOR.MAIN.LABEL_TEXT};\r\n width: ${CHART_INFO_WIDTH};\r\n`;\r\n\r\nconst StyledDescription = styled.p`\r\n font-family: ${FONT.OPEN_SANS};\r\n font-size: ${FONT_SIZE.SMALL};\r\n font-weight: 400;\r\n line-height: ${FONT_SIZE.LARGE};\r\n margin-bottom: ${SPACING.X_LARGE};\r\n align-self: flex-start;\r\n color: ${COLOR.MAIN.LABEL_TEXT};\r\n width: ${CHART_INFO_WIDTH};\r\n`;\r\n\r\nconst StyledHeading = styled.h3`\r\n font-family: ${FONT.OPEN_SANS};\r\n font-size: ${FONT_SIZE.SMALL};\r\n font-weight: 700;\r\n align-self: flex-start;\r\n color: ${COLOR.MAIN.LABEL_TEXT};\r\n margin-top: ${SPACING.X_SMALL};\r\n margin-bottom: ${SPACING.X_SMALL};\r\n width: ${CHART_INFO_WIDTH};\r\n`;\r\n\r\nconst StyledList = styled.ul`\r\n display: flex;\r\n flex-wrap: wrap;\r\n font-family: ${FONT.OPEN_SANS};\r\n font-size: ${FONT_SIZE.SMALL};\r\n font-weight: 400;\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n margin: 0;\r\n padding: 0;\r\n list-style-type: none;\r\n align-self: flex-start;\r\n color: ${COLOR.MAIN.LABEL_TEXT};\r\n width: ${CHART_INFO_WIDTH};\r\n`;\r\n\r\nconst StyledStar = styled(Star)`\r\n width: 20px;\r\n margin-right: ${SPACING.MEDIUM};\r\n`;\r\n\r\nconst StyledFavouriteButton = styled.button`\r\n font-family: ${FONT.OPEN_SANS};\r\n font-size: ${FONT_SIZE.SMALL};\r\n font-weight: 400;\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n align-self: flex-start;\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n color: ${COLOR.MAIN.DARK_GREY};\r\n border: 0;\r\n padding: ${SPACING.SMALL} ${SPACING.SMALL} ${SPACING.SMALL} 0;\r\n margin-top: auto;\r\n cursor: pointer;\r\n\r\n &:focus {\r\n outline: ${(props: StyledButtonProps): string => (props.assistAccess ? '1px dotted #212121' : '0')};\r\n outline: ${(props: StyledButtonProps): string =>\r\n props.assistAccess ? '5px auto -webkit-focus-ring-color' : '0'};\r\n }\r\n\r\n &:hover ${StyledStar} {\r\n fill: ${COLOR.PRIMARY.YELLOW};\r\n }\r\n`;\r\n\r\nconst StyledListItem = styled.li`\r\n font-family: ${FONT.OPEN_SANS};\r\n font-size: ${FONT_SIZE.X_SMALL};\r\n font-weight: 400;\r\n line-height: ${FONT_SIZE.LARGE};\r\n align-self: flex-start;\r\n color: ${COLOR.MAIN.LABEL_TEXT};\r\n margin-right: ${SPACING.X_SMALL};\r\n\r\n &::after {\r\n content: ',';\r\n }\r\n\r\n &:last-child {\r\n margin-right: 0;\r\n\r\n &::after {\r\n content: '';\r\n }\r\n }\r\n`;\r\n\r\nconst ChartInfo = React.forwardRef(\r\n (\r\n {\r\n iconName,\r\n chartTitle,\r\n description,\r\n reportCodes,\r\n isFavourite = false,\r\n hideFavourites,\r\n assistAccess,\r\n imagePath,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const [favourite, setFavourite] = React.useState(isFavourite);\r\n const handleFavourite = () => {\r\n setFavourite(!favourite);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {chartTitle}\r\n \r\n {description}\r\n {reportCodes && reportCodes.length > 0 && (\r\n <>\r\n Report codes\r\n \r\n {reportCodes.map((code: string, index: number) => (\r\n {code}\r\n ))}\r\n \r\n \r\n )}\r\n {!hideFavourites && (\r\n \r\n \r\n {favourite ? 'Remove from' : 'Add to'} favourites\r\n \r\n )}\r\n \r\n \r\n );\r\n },\r\n);\r\nChartInfo.displayName = 'ChartInfo';\r\n\r\nexport default ChartInfo;\r\n","import * as React from 'react'; // eslint-disable-line\r\nimport styled, { keyframes } from 'styled-components';\r\n\r\nimport { COLOR, FONT, FONT_SIZE, SPEED, THEME } from '../../packages/constants';\r\nimport {\r\n StyledModal,\r\n StyledModalTitleBar,\r\n StyledModalContent,\r\n StyledButton,\r\n StyledButtonGroup,\r\n ButtonGroupType,\r\n} from '../modal';\r\nimport { SearchFilter } from '../search-filter/search-filter';\r\nimport ChartGroup, {\r\n ChartGroupWrapper,\r\n StyledList,\r\n StyledListItem,\r\n ChartGroupTitle,\r\n HorizontalRule,\r\n StyledGroupItem,\r\n ChartGroupScroller,\r\n} from './atoms/chart-group/chart-group';\r\nimport ChartIcon, { StyledChartWrapper } from './atoms/chart-icon/chart-icon';\r\nimport ChartInfo from './atoms/chart-info/chart-info';\r\n\r\nexport interface ChartSelectorProps {\r\n chartData: any;\r\n assistAccess: boolean;\r\n hideFavourites?: boolean;\r\n hideRecent?: boolean;\r\n imagePath?: string;\r\n existingChart?: string;\r\n handleCancelButton?: (e: any) => void;\r\n handlePrimaryButton?: (e: any) => void;\r\n themeProvider?: {};\r\n hasModernStyles?: boolean;\r\n}\r\n\r\ninterface StyledContentProps {\r\n isChartSelected: boolean;\r\n imagePath?: string;\r\n}\r\n\r\nconst DefaultGroups = {\r\n NewChart: 'create-a-new-chart',\r\n NewTextPanel: 'create-a-new-text-panel',\r\n Recent: 'recent',\r\n Favourites: 'favourites',\r\n All: 'all',\r\n};\r\n\r\nconst exampleAnimation = keyframes`\r\n from {\r\n width: 0;\r\n }\r\n \r\n to {\r\n width: 240px;\r\n }\r\n`;\r\n\r\nconst StyledChartGroup = styled(ChartGroup)``;\r\n\r\nconst StyledChartInfo = styled(ChartInfo)`\r\n overflow: hidden;\r\n width: ${(props: StyledContentProps) => (props.isChartSelected ? '240px' : '0')};\r\n animation: ${exampleAnimation} ${SPEED.TRANSITION} ease-in 1 forwards;\r\n`;\r\n\r\nconst StyledContent = styled.div`\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n height: 100%;\r\n transition: all ${SPEED.TRANSITION} ease-in;\r\n width: ${(props: StyledContentProps) => (props.isChartSelected ? '420px' : '660px')};\r\n`;\r\n\r\nconst StyledChartSelector = styled.div`\r\n display: flex;\r\n height: 100%;\r\n width: 900px;\r\n\r\n ${StyledChartGroup} {\r\n max-width: 240px;\r\n width: 240px;\r\n min-width: 240px;\r\n }\r\n`;\r\n\r\nconst StyledFilterWrapper = styled.div`\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n padding: 22px;\r\n`;\r\n\r\nconst StyledMessage = styled.p`\r\n font-family: ${FONT.OPEN_SANS};\r\n font-size: ${FONT_SIZE.MEDIUM};\r\n text-align: center;\r\n color: ${COLOR.MAIN.FORM_FIELD_DARK};\r\n padding-top: 18vh;\r\n width: 100%;\r\n`;\r\n\r\nexport const ChartSelector = React.forwardRef(\r\n (\r\n {\r\n chartData,\r\n hideFavourites,\r\n hideRecent,\r\n assistAccess,\r\n imagePath,\r\n existingChart,\r\n handleCancelButton,\r\n handlePrimaryButton,\r\n hasModernStyles,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const [groupItemChecked, setGroupItemChecked] = React.useState(DefaultGroups.All);\r\n const [filterValue, setFilterValue] = React.useState('');\r\n const [chartList, setChartList] = React.useState([]);\r\n const [ignoreScrollIntoView, setIgnoreScrollIntoView] = React.useState(false);\r\n // tslint:disable-next-line:no-null-keyword\r\n const filterInputRef = React.useRef(null);\r\n // tslint:disable-next-line:no-null-keyword\r\n const chartWrapperRef = React.useRef(null);\r\n\r\n // create an array of all the charts\r\n const chartsArray: any = [];\r\n\r\n // if the user is changing a chart (chart is already selected), set as temp variable\r\n let temporaryChartSelected: any = {};\r\n\r\n // loop through all the charts and unselect each\r\n const unselectAllCharts = () => {\r\n Object.keys(chartData).map((groupTitle) =>\r\n Object.keys(chartData[groupTitle].groups).map((groupItem) =>\r\n Object.keys(chartData[groupTitle].groups[groupItem].charts).map((chartItem) => {\r\n const chart = chartData[groupTitle].groups[groupItem].charts[chartItem];\r\n return (chart.selected = false);\r\n }),\r\n ),\r\n );\r\n };\r\n\r\n // loop through all of the charts and build chartsArray\r\n const renderCharts = (groupItemSelected: any) => {\r\n if (groupItemSelected === DefaultGroups.All) {\r\n Object.keys(chartData).map((groupTitle) =>\r\n Object.keys(chartData[groupTitle].groups).map((groupItem) =>\r\n Object.keys(chartData[groupTitle].groups[groupItem].charts).map((chartItem) => {\r\n const chart = chartData[groupTitle].groups[groupItem].charts[chartItem];\r\n // if a chart is selected, add it to the temp variable\r\n if (chart.selected) {\r\n temporaryChartSelected = chart;\r\n }\r\n return chartsArray.push(chart);\r\n }),\r\n ),\r\n );\r\n // TODO: add favourites & recent\r\n // } else if (groupItemSelected === DefaultGroups.Favourites) {\r\n // console.log('handle favourites'); // de-scoped for the time being\r\n // } else if (groupItemSelected === DefaultGroups.Recent) {\r\n // console.log('handle recent'); // de-scoped for the time being\r\n } else if (groupItemSelected === DefaultGroups.NewChart) {\r\n chartsArray.push(\r\n {\r\n title: 'Custom Pie Chart',\r\n description:\r\n \"If you can't find the pie chart you're looking for, you can easily build your own.\",\r\n reportCodes: [],\r\n isFavourite: false,\r\n iconName: 'custom-pie',\r\n id: 'CustomPie',\r\n },\r\n {\r\n title: 'Custom Chart',\r\n description: \"If you can't find the chart you're looking for, you can easily build your own.\",\r\n reportCodes: [],\r\n isFavourite: false,\r\n iconName: 'custom-line',\r\n id: 'Custom',\r\n },\r\n );\r\n } else if (groupItemSelected === DefaultGroups.NewTextPanel) {\r\n chartsArray.push({\r\n title: 'Text Panel',\r\n description: 'Add text to your page, customise colours, and include auto-text or custom tags.',\r\n reportCodes: [],\r\n isFavourite: false,\r\n iconName: 'text-panel',\r\n id: 'TextPanel',\r\n type: 'TEXT',\r\n });\r\n }\r\n };\r\n renderCharts(groupItemChecked);\r\n\r\n // set the initial states for selected chart & isChartSelected, if one is selected\r\n const [selectedChart, setSelectedChart] = React.useState(temporaryChartSelected);\r\n const [isChartSelected, setIsChartSelected] = React.useState(\r\n Object.prototype.hasOwnProperty.call(temporaryChartSelected, 'title'),\r\n );\r\n\r\n // handle click when user clicks on chart icon\r\n const handleChartIconChange = (chart: any) => {\r\n unselectAllCharts();\r\n chart.selected = true;\r\n setSelectedChart(chart);\r\n setIsChartSelected(true);\r\n setIgnoreScrollIntoView(true);\r\n };\r\n\r\n // handle click when user clicks on left column group name\r\n const handleGroupItemClick = (event: any, charts?: any) => {\r\n setIgnoreScrollIntoView(true);\r\n setGroupItemChecked(event.target.value);\r\n if (event.target.value !== DefaultGroups.All) {\r\n setFilterValue('');\r\n }\r\n setChartList(charts);\r\n // @ts-ignore\r\n chartWrapperRef.current.scrollTop = 0;\r\n };\r\n\r\n // handle change when user starts typing in the search-filter\r\n const handleFilterChange = (event: any) => {\r\n setFilterValue(event.target.value.toLowerCase());\r\n setGroupItemChecked(DefaultGroups.All);\r\n };\r\n\r\n // handle click when user clicks the clear search-filter button\r\n const handleFilterClearButton = () => {\r\n setFilterValue('');\r\n // @ts-ignore\r\n filterInputRef.current.focus();\r\n };\r\n\r\n // searchable charts that contains the search string in the title\r\n const filteredData = chartsArray.filter((item: any) => {\r\n const isSearching = filterValue.trim().length > 0;\r\n const isSearchable = !(item.hideInSearch && isSearching);\r\n const isSearchStringInTitle = item.title.toLowerCase().includes(filterValue);\r\n return Object.keys(item).some(() => isSearchable && isSearchStringInTitle);\r\n });\r\n\r\n // scroll to selected chart\r\n React.useEffect(() => {\r\n const selectedChart = document.querySelector(`input[value=\"${temporaryChartSelected.id}\"]`);\r\n // only scroll the view if there is a preselected chart, dont scroll if user clicks a chart\r\n if (selectedChart && !ignoreScrollIntoView) {\r\n selectedChart.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'nearest' });\r\n }\r\n });\r\n\r\n return (\r\n <>\r\n \r\n {existingChart ? 'Change Chart' : 'Add Chart'}\r\n \r\n \r\n \r\n \r\n handleGroupItemClick(e)}\r\n radioValue={DefaultGroups.NewChart}\r\n checked={groupItemChecked === DefaultGroups.NewChart}\r\n assistAccess={assistAccess}\r\n dataTestId={'chart-group-name__create-a-new-chart'}\r\n >\r\n Create a new chart\r\n \r\n handleGroupItemClick(e)}\r\n radioValue={DefaultGroups.NewTextPanel}\r\n checked={groupItemChecked === DefaultGroups.NewTextPanel}\r\n assistAccess={assistAccess}\r\n dataTestId={'chart-group-name__create-a-new-text-panel'}\r\n >\r\n Create a text panel\r\n \r\n {!hideRecent && (\r\n handleGroupItemClick(e)}\r\n radioValue={DefaultGroups.Recent}\r\n checked={groupItemChecked === DefaultGroups.Recent}\r\n assistAccess={assistAccess}\r\n dataTestId={'chart-group-name__recent'}\r\n >\r\n Recent\r\n \r\n )}\r\n {!hideFavourites && (\r\n handleGroupItemClick(e)}\r\n radioValue={DefaultGroups.Favourites}\r\n checked={groupItemChecked === DefaultGroups.Favourites}\r\n assistAccess={assistAccess}\r\n dataTestId={'chart-group-name__favourites'}\r\n >\r\n Favourites\r\n \r\n )}\r\n \r\n\r\n \r\n\r\n \r\n \r\n handleGroupItemClick(e)}\r\n radioValue={DefaultGroups.All}\r\n checked={groupItemChecked === DefaultGroups.All}\r\n assistAccess={assistAccess}\r\n dataTestId={'chart-group-name__all'}\r\n >\r\n All charts...\r\n \r\n {chartData &&\r\n Object.keys(chartData).map((groupTitle: any) => {\r\n return (\r\n \r\n {\r\n \r\n {chartData[groupTitle].title}\r\n \r\n }\r\n \r\n {Object.keys(chartData[groupTitle].groups).map(\r\n (groupItem) => {\r\n const group =\r\n chartData[groupTitle].groups[groupItem];\r\n return (\r\n \r\n handleGroupItemClick(e, group.charts)\r\n }\r\n radioValue={group.id}\r\n key={`group-item-${groupItem}`}\r\n checked={groupItemChecked === group.id}\r\n assistAccess={assistAccess}\r\n dataTestId={`chart-group-name__${group.id}`}\r\n >\r\n {group.title}\r\n \r\n );\r\n },\r\n )}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {Object.values(DefaultGroups).includes(groupItemChecked) ? (\r\n filteredData.length >= 1 ? (\r\n filteredData.map((chart: any) => {\r\n return (\r\n handleChartIconChange(chart)}\r\n key={chart.id}\r\n assistAccess={assistAccess}\r\n isSelected={chart.selected}\r\n dataTestId={`chart-icon__${chart.id}`}\r\n hasModernStyles={hasModernStyles}\r\n />\r\n );\r\n })\r\n ) : (\r\n \r\n {groupItemChecked === DefaultGroups.Recent\r\n ? 'No charts have been used recently'\r\n : groupItemChecked === DefaultGroups.Favourites\r\n ? 'No favourites have been added'\r\n : `No charts found matching \"${filterValue}\"`}\r\n \r\n )\r\n ) : (\r\n chartList.map((chart: any) => {\r\n return (\r\n handleChartIconChange(chart)}\r\n key={chart.id}\r\n assistAccess={assistAccess}\r\n isSelected={chart.selected}\r\n dataTestId={`chart-icon__${chart.id}`}\r\n hasModernStyles={hasModernStyles}\r\n />\r\n );\r\n })\r\n )}\r\n \r\n \r\n\r\n {isChartSelected && (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {existingChart ? 'Select' : 'Add'}\r\n \r\n \r\n Cancel\r\n \r\n \r\n \r\n \r\n );\r\n },\r\n);\r\nChartSelector.displayName = 'ChartSelector';\r\n","import * as React from 'react';\r\n\r\nimport { darken } from 'polished';\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, RADIUS, SPACING } from '../../packages/constants';\r\n\r\ninterface TabsProps {\r\n children: React.ReactNode;\r\n onClick?: (e: any) => void;\r\n className?: string;\r\n}\r\n\r\ninterface TabListContainerProps {\r\n children: React.ReactNode;\r\n}\r\n\r\ninterface TabListProps {\r\n children: React.ReactNode;\r\n spacingRight?: number;\r\n}\r\n\r\ninterface TabListItemProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\ninterface TabTitleProps {\r\n children: React.ReactNode;\r\n onClick: (e: any) => void;\r\n selected: boolean;\r\n dataId: string;\r\n firstTab?: boolean;\r\n lastTab?: boolean;\r\n title: string;\r\n}\r\n\r\ninterface TabContentProps {\r\n children: React.ReactNode;\r\n selected: boolean;\r\n className?: string;\r\n}\r\n\r\ninterface TabListStyleProps {\r\n spacingRight?: number; // this number would typically be determined by the width of an 'add tab' button occupying the space if there is one\r\n}\r\n\r\ninterface TabTitleStyleProps {\r\n selected: boolean;\r\n firstTab?: boolean;\r\n lastTab?: boolean;\r\n}\r\n\r\nconst StyledTabs = styled.div``;\r\nconst StyledList = styled.ul`\r\n display: inline-flex;\r\n max-width: calc(100% - ${(props) => (props.spacingRight ? props.spacingRight : `0`)}px);\r\n overflow: hidden;\r\n`;\r\nconst StyledTabListContainer = styled.div`\r\n overflow: hidden;\r\n margin-bottom: -1px;\r\n`;\r\n\r\nconst StyledListItem = styled.li`\r\n &:not(:first-child) {\r\n margin-left: -1px;\r\n }\r\n`;\r\nconst StyledTitle = styled.button`\r\n margin: 0px;\r\n border-top: 1px solid ${COLOR.MAIN.MEDIUM_GREY};\r\n border-top-left-radius: ${(props) => (props.firstTab ? RADIUS.FORM_FIELD : `0`)};\r\n border-top-right-radius: ${(props) => (props.lastTab ? RADIUS.FORM_FIELD : `0`)};\r\n border-right: 1px solid ${COLOR.MAIN.MEDIUM_GREY};\r\n border-bottom: ${(props) =>\r\n props.selected ? `1px solid ${COLOR.PRIMARY.WHITE}` : `1px solid ${COLOR.MAIN.MEDIUM_GREY}`};\r\n border-left: 1px solid ${COLOR.MAIN.MEDIUM_GREY};\r\n font-size: ${FONT_SIZE.X_SMALL};\r\n font-weight: 700;\r\n line-height: 20px;\r\n padding: ${SPACING.X_SMALL} ${SPACING.MEDIUM};\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n color: ${(props) => (props.selected && props.theme ? props.theme.main : COLOR.MAIN.LABEL_TEXT)};\r\n cursor: ${(props) => (props.selected ? 'default' : 'pointer')};\r\n max-width: 130px;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n\r\n &:hover {\r\n background-color: ${(props) => (props.selected ? COLOR.PRIMARY.WHITE : darken(0.1, COLOR.PRIMARY.WHITE))};\r\n }\r\n`;\r\nconst StyledContent = styled.div`\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n border: 1px solid ${COLOR.MAIN.MEDIUM_GREY};\r\n border-top-right-radius: ${RADIUS.FORM_FIELD};\r\n border-bottom-left-radius: ${RADIUS.FORM_FIELD};\r\n border-bottom-right-radius: ${RADIUS.FORM_FIELD};\r\n padding: ${SPACING.MEDIUM} ${SPACING.SMALL};\r\n display: ${(props) => (props.selected ? 'block' : 'none')};\r\n`;\r\n\r\nconst Tabs = React.forwardRef(({ children, ...props }, ref) => (\r\n \r\n {children}\r\n \r\n));\r\nTabs.displayName = 'Tabs';\r\n\r\nconst TabListContainer = ({ children, ...props }: TabListContainerProps) => (\r\n {children}\r\n);\r\nconst TabList = ({ children, ...props }: TabListProps) => {children};\r\nconst TabListItem = ({ children, ...props }: TabListItemProps) => (\r\n {children}\r\n);\r\n\r\nconst TabTitle = React.forwardRef(\r\n ({ children, firstTab, lastTab, selected, dataId, title, ...props }, ref) => (\r\n \r\n {children}\r\n \r\n ),\r\n);\r\nTabTitle.displayName = 'TabTitle';\r\n\r\nconst TabContent = React.forwardRef(({ children, selected, ...props }, ref) => (\r\n \r\n {children}\r\n \r\n));\r\nTabContent.displayName = 'TabContent';\r\n\r\nexport default Tabs;\r\nexport { TabListContainer, TabList, TabListItem, TabTitle, TabContent };\r\n","import Tabs from './tabs';\r\nexport * from './tabs';\r\nexport default Tabs;\r\n","import * as React from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport { Color } from '../../color-picker-config';\r\n\r\nexport interface ColorPickerPaletteProps {\r\n color: string;\r\n palette: {\r\n [colorName: string]: Color;\r\n };\r\n dataId: string;\r\n onColorSelect: (color: any) => void;\r\n}\r\n\r\ninterface StyledShadeProps {\r\n color: string;\r\n}\r\n\r\nconst StyledColorPickerPalette = styled.table`\r\n padding: 16px;\r\n border-collapse: separate;\r\n width: 100%;\r\n`;\r\n\r\nconst StyledColorName = styled.td`\r\n font: 400 12px open-sans;\r\n width: 8em;\r\n`;\r\n\r\nconst StyledShade = styled.td`\r\n width: 30px;\r\n height: 20px;\r\n background-color: ${(props) => props.color};\r\n cursor: pointer;\r\n`;\r\n\r\nconst StyledDiv = styled.div`\r\n width: 100%;\r\n height: 100%;\r\n position: relative;\r\n ${StyledShade}:hover &::before, ${StyledShade}.active &::before {\r\n content: '';\r\n display: block;\r\n border: 2px solid #ffffff;\r\n position: absolute;\r\n top: -1px;\r\n bottom: -1px;\r\n left: -1px;\r\n right: -1px;\r\n }\r\n`;\r\n\r\nconst StyledDivider = styled.td`\r\n width: 5px;\r\n height: 20px;\r\n`;\r\n\r\nexport const ColorPickerPalette: React.FC> = ({\r\n color,\r\n palette,\r\n dataId,\r\n onColorSelect,\r\n ...props\r\n}) => {\r\n const tableRows = Object.keys(palette).map((colorName) => (\r\n \r\n {colorName}\r\n \r\n onColorSelect(palette[colorName].base)}\r\n >\r\n \r\n \r\n \r\n {palette[colorName].shades.map((colorShade, index) => (\r\n onColorSelect(colorShade)}\r\n >\r\n \r\n \r\n ))}\r\n \r\n {palette[colorName].tints.map((tint, index) => (\r\n onColorSelect(tint)}\r\n >\r\n \r\n \r\n ))}\r\n \r\n ));\r\n return (\r\n \r\n {tableRows}\r\n \r\n );\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { InjectedColorProps } from 'react-color';\r\nimport { EditableInput } from 'react-color/lib/components/common';\r\nimport styled from 'styled-components';\r\n\r\nimport { isValidColorHex } from '../../helper';\r\n\r\nexport interface CustomColorPickerFieldsProps extends InjectedColorProps {\r\n onChange: (color: any) => void;\r\n}\r\n\r\nconst StyledCustomColorPickerFields = styled.div`\r\n width: 80px;\r\n height: 160px;\r\n position: relative;\r\n`;\r\n\r\nconst styles = {\r\n fieldsWrap: {\r\n position: 'relative',\r\n display: 'flex',\r\n flexDirection: 'row-reverse',\r\n },\r\n input: {\r\n height: 30,\r\n width: 65,\r\n border: '1px solid #f0f0f0',\r\n paddingLeft: 5,\r\n marginBottom: '10px',\r\n boxSizing: 'border-box',\r\n },\r\n label: {\r\n position: 'absolute',\r\n top: '5px',\r\n left: '0px',\r\n width: '14px',\r\n textTransform: 'uppercase',\r\n height: '18px',\r\n lineHeight: '22px',\r\n fontSize: '14px',\r\n },\r\n} as const;\r\n\r\nexport const CustomColorPickerFields = React.forwardRef(\r\n ({ hex, rgb, onChange, ...props }, ref) => {\r\n const handleChange = (data: any) => {\r\n if (data['#']) {\r\n isValidColorHex(data['#']) &&\r\n onChange({\r\n hex: data['#'],\r\n source: 'hex',\r\n });\r\n } else if (data['R'] || data['G'] || data['B']) {\r\n onChange({\r\n r: data['R'] || rgb?.r,\r\n g: data['G'] || rgb?.g,\r\n b: data['B'] || rgb?.b,\r\n source: 'rgb',\r\n });\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n },\r\n);\r\n\r\nCustomColorPickerFields.displayName = 'CustomColorPickerFields';\r\n","import tinycolor from 'tinycolor2';\r\n\r\n// https://github.com/casesandberg/react-color/blob/master/LICENSE\r\nexport const isValidColorHex = (hex: string) => {\r\n if (hex === 'transparent') {\r\n return true;\r\n }\r\n // disable hex4 and hex8\r\n const lh = String(hex).charAt(0) === '#' ? 1 : 0;\r\n return hex.length !== 4 + lh && hex.length < 7 + lh && tinycolor(hex).isValid();\r\n};\r\n","import * as React from 'react'; // eslint-disable-line\r\nimport styled from 'styled-components';\r\n\r\nimport { InjectedColorProps } from 'react-color';\r\n\r\nconst StyledCustomColorPickerPointer = styled.div`\r\n position: absolute;\r\n cursor: pointer;\r\n height: 3px;\r\n width: 19px;\r\n top: -3px;\r\n left: -1px;\r\n right: -1px;\r\n border: 1px solid #000;\r\n background: #fff;\r\n opacity: 0.8;\r\n`;\r\n\r\nconst CustomColorPickerPointer = () => {\r\n return ;\r\n};\r\n\r\nconst StyledCustomColorPickerPointerCircle = styled.div`\r\n width: 12px;\r\n height: 12px;\r\n border-radius: 6px;\r\n box-shadow: ${({ hsl }) => {\r\n const isLight = (hsl?.l || 1) > 0.5;\r\n return isLight ? 'inset 0 0 0 1px #000' : 'inset 0 0 0 1px #fff';\r\n }};\r\n transform: translate(-6px, -6px);\r\n`;\r\n\r\nconst CustomColorPickerPointerCircle = ({ hsl }: InjectedColorProps) => (\r\n \r\n);\r\n\r\nexport { CustomColorPickerPointer, CustomColorPickerPointerCircle };\r\n","import * as React from 'react';\r\n\r\nimport { Color, CustomPicker, InjectedColorProps } from 'react-color';\r\nimport { Hue, Saturation } from 'react-color/lib/components/common';\r\nimport styled from 'styled-components';\r\n\r\nimport { CustomColorPickerFields } from './custom-color-picker-fields';\r\nimport { CustomColorPickerPointer, CustomColorPickerPointerCircle } from './custom-color-picker-pointer';\r\n\r\nexport interface SwatchProps {\r\n color: Color;\r\n}\r\n\r\nexport interface CustomColorPickerProps extends InjectedColorProps {\r\n color?: Color;\r\n dataId: string;\r\n onChange: (color: any) => void;\r\n}\r\n\r\nconst StyledSwatch = styled.div`\r\n height: 60px;\r\n width: 80px;\r\n background: ${(props) => props.color};\r\n`;\r\n\r\nconst StyledHue = styled.div`\r\n position: relative;\r\n width: 19px;\r\n margin-left: 5px;\r\n border: 1px solid #b3b3b3;\r\n margin-bottom: 2px solid #f0f0f0;\r\n`;\r\n\r\nconst StyledSaturation = styled.div`\r\n width: 250px;\r\n position: relative;\r\n border: 1px solid #b3b3b3;\r\n border-bottom: 2px solid #f0f0f0;\r\n overflow: hidden;\r\n`;\r\n\r\nconst Controls = styled.div`\r\n flex: 1;\r\n margin-left: 10px;\r\n`;\r\n\r\nconst StyledCustomColorPicker = styled.div`\r\n padding: 16px;\r\n display: flex;\r\n`;\r\n\r\nconst CustomColorPicker = React.forwardRef(\r\n ({ dataId, color, onChange, ...props }, ref) => {\r\n return (\r\n \r\n \r\n {/* @ts-ignore */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n },\r\n);\r\n\r\nCustomColorPicker.displayName = 'CustomColorPicker';\r\n\r\nexport const SpotlightPicker = CustomPicker(CustomColorPicker);\r\n","import * as React from 'react';\r\nimport { useEffect, useState } from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport { camelToKebab } from '../../../Scripts/Spotlight/Components/CamelToKebab';\r\nimport { COLOR } from '../../packages/constants';\r\nimport Tabs, { TabContent, TabListContainer, TabList, TabListItem, TabTitle } from '../tabs';\r\nimport { ColorPickerPalette } from './atoms/color-picker-palette/color-picker-palette';\r\nimport { SpotlightPicker } from './atoms/custom-color-picker';\r\nimport { Color } from './color-picker-config';\r\nimport defaultPalettes from './color-picker-config.json';\r\n\r\nexport interface ColorPickerProps {\r\n color: string;\r\n currentPalette?: string;\r\n palettes?: {\r\n [paletteName: string]: {\r\n [colorName: string]: Color;\r\n };\r\n };\r\n dataId?: string;\r\n onColorChange: (color: any) => void;\r\n}\r\n\r\nexport interface ExtendedColorPickerProps extends ColorPickerProps {\r\n selectedTab?: number;\r\n ref: any;\r\n onTabChange?: (newIndex: number) => void;\r\n}\r\n\r\nconst defaultTabData = [\r\n {\r\n id: 'tab-1',\r\n title: 'Standard',\r\n paletteName: 'Standard',\r\n content: 'Standard color palette',\r\n },\r\n {\r\n id: 'tab-2',\r\n title: 'Deep',\r\n paletteName: 'Deep',\r\n content: 'Deep color palette',\r\n },\r\n {\r\n id: 'tab-3',\r\n title: 'Custom',\r\n paletteName: '',\r\n content: 'Custom color picker',\r\n },\r\n];\r\n\r\nconst StyledTabListContainer = styled(TabListContainer)`\r\n margin: -2px;\r\n`;\r\n\r\nconst StyledTabList = styled(TabList)`\r\n max-width: unset;\r\n`;\r\n\r\nconst StyledListItem = styled(TabListItem)`\r\n &:not(:first-child) {\r\n margin-left: -2px;\r\n }\r\n\r\n &:focus-within {\r\n z-index: 1000;\r\n }\r\n`;\r\n\r\nconst StyledTabTitle = styled(TabTitle)`\r\n border-width: 2px;\r\n`;\r\n\r\nconst StyledTabContent = styled(TabContent)`\r\n border: none;\r\n border-top: 2px solid ${COLOR.MAIN.MEDIUM_GREY};\r\n border-radius: unset;\r\n padding: 0;\r\n`;\r\n\r\nconst StyledColorPicker = styled.div`\r\n width: 390px;\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n border: 2px solid ${COLOR.MAIN.MEDIUM_GREY};\r\n border-radius: 4px;\r\n`;\r\n\r\nexport const ColorPicker = React.forwardRef(\r\n (\r\n {\r\n color,\r\n palettes,\r\n currentPalette,\r\n selectedTab = 0,\r\n dataId = 'color-picker',\r\n onColorChange,\r\n onTabChange,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const [tabData, setTabData] = useState(defaultTabData);\r\n const [tabIndex, setTabIndex] = useState(\r\n // Default to last tab if selected tab exceeds number of tabs\r\n (selectedTab ?? tabData.length - 1) < tabData.length ? selectedTab : tabData.length - 1,\r\n );\r\n const [currentColor, setCurrentColor] = useState(color);\r\n\r\n const colorPalettes = palettes ?? defaultPalettes.palettes;\r\n\r\n const handleTabChange = (newTabIndex: number) => {\r\n setTabIndex(newTabIndex);\r\n onTabChange && onTabChange(newTabIndex);\r\n };\r\n\r\n const handleColorChange = (color: any) => {\r\n const hex = color.hex ? color.hex : color;\r\n\r\n setCurrentColor(hex);\r\n onColorChange(hex);\r\n };\r\n\r\n useEffect(() => {\r\n const prependCurrentPaletteTab = () => {\r\n const currentPaletteTab = {\r\n id: 'tab-0',\r\n title: 'Current Palette',\r\n paletteName: currentPalette ?? '',\r\n content: 'Current color palette',\r\n };\r\n\r\n const isNotStandardPalette = currentPalette && currentPalette !== 'Standard';\r\n const hasNoCurrentPaletteTab = !tabData.map((s) => s.id).includes(currentPaletteTab.id);\r\n const canPrependTab =\r\n isNotStandardPalette &&\r\n hasNoCurrentPaletteTab &&\r\n Object.keys(colorPalettes).includes(currentPalette);\r\n if (canPrependTab) {\r\n setTabData([currentPaletteTab, ...defaultTabData]);\r\n setTabIndex(selectedTab ?? 0);\r\n }\r\n };\r\n\r\n prependCurrentPaletteTab();\r\n }, [currentPalette, colorPalettes, selectedTab, tabData]);\r\n\r\n useEffect(() => {\r\n // Default to last tab if selected tab exceeds number of tabs\r\n setTabIndex((selectedTab ?? tabData.length - 1) < tabData.length ? selectedTab : tabData.length - 1);\r\n }, [selectedTab, tabData]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {tabData.map((tab: any, index: number) => (\r\n \r\n handleTabChange(index)}\r\n title={tab.title}\r\n >\r\n {tab.title || 'tab'}\r\n \r\n \r\n ))}\r\n \r\n \r\n {tabData.map((tab: any, index: number) => (\r\n \r\n {tab.title === 'Custom' ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n ))}\r\n \r\n \r\n );\r\n },\r\n);\r\n\r\nColorPicker.displayName = 'ColorPicker';\r\n","import * as React from 'react';\r\nimport { useCallback, useEffect, useState } from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport { useClickOutside } from '../../../ModernScripts/Spotlight/Hooks/useClickOutside';\r\nimport { ColorPicker, ColorPickerProps } from '../color-picker/color-picker';\r\n\r\nexport interface SwatchProps {\r\n color: string;\r\n width?: number;\r\n height?: number;\r\n}\r\n\r\nexport interface ColorPickerPopoverProps extends ColorPickerProps {\r\n isOpen?: boolean;\r\n width?: number;\r\n height?: number;\r\n dataId?: string;\r\n}\r\n\r\nconst Swatch = styled.div`\r\n display: inline-block;\r\n width: ${({ width }) => `${width}px`};\r\n height: ${({ height }) => `${height}px`};\r\n border: 1px solid #ededed;\r\n border-radius: 3px;\r\n background-color: ${(props) => props.color};\r\n cursor: pointer;\r\n`;\r\n\r\nconst StyledColorPicker = styled(ColorPicker)`\r\n position: absolute;\r\n z-index: 1000;\r\n`;\r\n\r\nconst StyledColorPickerPopover = styled.div``;\r\n\r\nexport const ColorPickerPopover = React.forwardRef(\r\n (\r\n {\r\n color,\r\n currentPalette,\r\n palettes,\r\n isOpen = false,\r\n width = 50,\r\n height = 25,\r\n dataId = 'color-picker-popover',\r\n onColorChange,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const colorPickerRef = React.useRef();\r\n const swatchRef = React.useRef();\r\n const [showColorPicker, setShowColorPicker] = useState(isOpen);\r\n const [currentColor, setCurrentColor] = useState(color);\r\n const [currentTab, setCurrentTab] = useState(0);\r\n\r\n const toggleColorPicker = useCallback(\r\n () => setShowColorPicker(!showColorPicker),\r\n [showColorPicker, setShowColorPicker],\r\n );\r\n\r\n const handleColorChange = (color: any) => {\r\n const hex = color.hex ? color.hex : color;\r\n\r\n setCurrentColor(hex);\r\n onColorChange(hex);\r\n };\r\n\r\n useEffect(() => {\r\n function handleKeyListener(e: any) {\r\n const canCloseOnEsc = showColorPicker && e.key === 'Escape';\r\n canCloseOnEsc && setShowColorPicker(false);\r\n\r\n const isSwatchInFocus = document.activeElement === swatchRef.current;\r\n const canToggleOnSpace = isSwatchInFocus && e.key === ' ';\r\n canToggleOnSpace && toggleColorPicker();\r\n }\r\n\r\n document.addEventListener('keydown', handleKeyListener);\r\n\r\n return function cleanupKeyListener() {\r\n document.removeEventListener('keydown', handleKeyListener);\r\n };\r\n }, [showColorPicker, setShowColorPicker, toggleColorPicker]);\r\n\r\n useEffect(() => {\r\n setCurrentColor(color);\r\n }, [color]);\r\n\r\n useClickOutside(colorPickerRef, toggleColorPicker);\r\n\r\n return (\r\n \r\n \r\n {showColorPicker && (\r\n \r\n )}\r\n \r\n );\r\n },\r\n);\r\n\r\nColorPickerPopover.displayName = 'ColorPickerPopover';\r\n","import * as React from 'react';\r\n\r\nimport { transparentize } from 'polished';\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT, FONT_SIZE, SPACING } from '../../../../packages/constants';\r\nimport { ChevronRight } from '../../../../packages/icons';\r\n\r\ninterface ItemGroupProps {\r\n onChange?: (e: any) => void;\r\n itemData?: any;\r\n hideFavourites?: boolean;\r\n hideRecent?: boolean;\r\n checked?: any;\r\n assistAccess?: boolean;\r\n}\r\n\r\ninterface DataTestIdProps {\r\n dataTestId: string;\r\n}\r\n\r\ninterface StyledGroupItemProps {\r\n children: React.ReactNode;\r\n checked: boolean;\r\n radioValue: string;\r\n assistAccess?: boolean;\r\n dataTestId?: string;\r\n onChange?: (e: any) => void;\r\n onClick?: (e: any) => void;\r\n ref?: any;\r\n}\r\n\r\ninterface StyledInputProps {\r\n assistAccess?: boolean;\r\n ref?: any;\r\n rel?: string;\r\n autoComplete?: string;\r\n dataTestId?: string;\r\n}\r\n\r\ninterface StyledLabelTextProps {\r\n checked?: boolean;\r\n assistAccess?: boolean;\r\n}\r\n\r\nexport const ItemGroupScroller = styled.div`\r\n margin-top: ${SPACING.LARGE};\r\n height: 100%;\r\n overflow: auto;\r\n padding-top: 5px;\r\n padding-left: ${SPACING.SMALL};\r\n`;\r\n\r\nexport const ItemGroupTitle = styled.h3`\r\n font-weight: 700;\r\n font-family: ${FONT.OPEN_SANS};\r\n font-size: ${FONT_SIZE.SMALL};\r\n color: #6f788a;\r\n padding: 5px;\r\n margin: 0;\r\n margin-top: ${SPACING.MEDIUM};\r\n`;\r\n\r\nexport const StyledListItem = styled.li`\r\n list-style-type: none;\r\n margin: 0;\r\n padding: 0;\r\n line-height: 1;\r\n`;\r\n\r\nexport const StyledList = styled.ul`\r\n list-style-type: none;\r\n margin: 0 0 ${SPACING.MEDIUM};\r\n padding: 0;\r\n\r\n ${StyledListItem} {\r\n margin-right: ${SPACING.MEDIUM};\r\n\r\n ${StyledListItem} {\r\n margin-right: 0;\r\n }\r\n }\r\n`;\r\n\r\nconst ItemGroupWrapperPaddingTop = `26px`;\r\n\r\nexport const ItemGroupWrapper = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n background-color: ${COLOR.MODAL.MODAL_PANEL_ACCENT};\r\n padding: ${ItemGroupWrapperPaddingTop} 0 0 ${SPACING.SMALL};\r\n width: 240px;\r\n height: auto;\r\n\r\n > ${StyledList}:first-child {\r\n margin-left: ${SPACING.SMALL};\r\n }\r\n`;\r\n\r\nexport const HorizontalRule = styled.hr`\r\n border: 0;\r\n border-bottom: 1px solid #b2bccd;\r\n width: calc(100% - ${SPACING.X_LARGE});\r\n margin: ${SPACING.MEDIUM} ${SPACING.X_LARGE} ${SPACING.MEDIUM} ${SPACING.SMALL};\r\n`;\r\n\r\nconst StyledLabel = styled.label`\r\n background-color: ${COLOR.MODAL.MODAL_PANEL_ACCENT};\r\n position: relative;\r\n`;\r\n\r\nconst StyledLabelText = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n font-family: ${FONT.OPEN_SANS};\r\n font-size: ${FONT_SIZE.SMALL};\r\n font-weight: 400;\r\n background-color: ${(props: StyledLabelTextProps): string => (props.checked ? COLOR.PRIMARY.WHITE : 'transparent')};\r\n color: ${COLOR.BRAND.REPORTING};\r\n padding: 5px;\r\n cursor: pointer;\r\n\r\n &:hover {\r\n background-color: ${(props: StyledLabelTextProps): string =>\r\n props.checked ? COLOR.PRIMARY.WHITE : transparentize('0.5', COLOR.PRIMARY.WHITE)};\r\n }\r\n`;\r\n\r\nconst StyledChevron = styled(ChevronRight)`\r\n fill: #b2bccd;\r\n height: 12px;\r\n width: 12px;\r\n opacity: ${(props: StyledLabelTextProps): number => (props.checked ? 1 : 0)};\r\n`;\r\n\r\nconst Radio = styled.input.attrs(({ dataTestId }) => ({\r\n 'data-test-id': dataTestId,\r\n}))``;\r\n\r\nconst StyledRadio = styled(Radio)`\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n opacity: 0;\r\n z-index: -1;\r\n\r\n &:focus ~ ${StyledLabelText} {\r\n outline: ${(props: StyledInputProps): string => (props.assistAccess ? '1px dotted #212121' : '0')};\r\n outline: ${(props: StyledInputProps): string =>\r\n props.assistAccess ? '5px auto -webkit-focus-ring-color' : '0'};\r\n }\r\n`;\r\n\r\nexport const StyledGroupItem = React.forwardRef(\r\n ({ children, onChange, onClick, radioValue, checked, assistAccess, dataTestId, ...props }, ref) => (\r\n \r\n \r\n \r\n \r\n {children} \r\n \r\n \r\n \r\n ),\r\n);\r\nStyledGroupItem.displayName = 'StyledGroupItem';\r\n\r\nconst ItemGroup = React.forwardRef(\r\n ({ onChange, itemData, hideFavourites, hideRecent, checked, assistAccess, ...props }, ref) => (\r\n \r\n \r\n \r\n Create a new item\r\n \r\n {!hideRecent && (\r\n \r\n Recent\r\n \r\n )}\r\n {!hideFavourites && (\r\n \r\n Favourites\r\n \r\n )}\r\n \r\n\r\n \r\n \r\n \r\n \r\n All...\r\n \r\n {itemData &&\r\n Object.keys(itemData).map((groupTitle) => {\r\n return (\r\n \r\n {itemData[groupTitle].title}\r\n \r\n {Object.keys(itemData[groupTitle].groups).map((groupItem) => {\r\n return (\r\n \r\n {itemData[groupTitle].groups[groupItem].title}\r\n \r\n );\r\n })}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n ),\r\n);\r\nItemGroup.displayName = 'ItemGroup';\r\n\r\nexport default ItemGroup;\r\n","import * as React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, SPEED, Theme } from '../../packages/constants';\r\n\r\nexport interface GalleryIconProps {\r\n iconName: string;\r\n iconLabel: string;\r\n id: string;\r\n onChange: (e: any) => void;\r\n isSelected: boolean;\r\n assistAccess?: boolean;\r\n dataTestId?: string;\r\n imagePath?: string;\r\n onKeyDown?: (e: any) => void;\r\n themeProvider?: {};\r\n hasModernStyles?: boolean;\r\n}\r\n\r\ninterface StyledIconProps {\r\n iconName: string;\r\n imagePath?: string;\r\n assistAccess?: boolean;\r\n}\r\n\r\ninterface StyledLabelProps {\r\n dataTestId?: string;\r\n}\r\n\r\ninterface StyledInputProps {\r\n assistAccess?: boolean;\r\n ref?: any;\r\n rel?: string;\r\n autoComplete?: string;\r\n hasModernStyles?: boolean;\r\n theme?: Theme;\r\n}\r\n\r\ninterface DataTestIdProps {\r\n dataTestId: string;\r\n}\r\n\r\nconst GalleryIconWrapper = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n margin-bottom: 100px;\r\n width: 33%;\r\n flex-basis: 33%;\r\n`;\r\n\r\nconst Label = styled.label.attrs(({ dataTestId }) => ({\r\n 'data-test-id': dataTestId,\r\n}))``;\r\n\r\nconst StyledLabel = styled(Label)`\r\n width: 100px;\r\n height: 100px;\r\n display: block;\r\n position: relative;\r\n cursor: pointer;\r\n`;\r\n\r\nexport const StyledIcon = styled.div`\r\n box-sizing: border-box;\r\n margin-bottom: 12px;\r\n border: 3px solid ${COLOR.MAIN.ICON_BACKGROUND};\r\n border-radius: 15px;\r\n width: 100px;\r\n height: 100px;\r\n background-image: url(${(props) => `${props.imagePath ?? ''}${props.iconName}.svg`});\r\n background-color: ${COLOR.MAIN.ICON_BACKGROUND};\r\n background-repeat: no-repeat;\r\n background-position: center;\r\n background-size: 120% auto;\r\n box-shadow: 2px 2px 4px rgba(4, 37, 91, 0.15);\r\n transition: box-shadow ${SPEED.TRANSITION};\r\n`;\r\n\r\nconst StyledLabelText = styled.div`\r\n box-sizing: border-box;\r\n position: relative;\r\n max-height: 80px;\r\n overflow: hidden;\r\n color: black;\r\n border-radius: 3px;\r\n font-size: ${FONT_SIZE.SMALL};\r\n font-family: sans-serif;\r\n line-height: ${FONT_SIZE.LARGE};\r\n padding: 5px 2px;\r\n text-align: center;\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n box-shadow: 0 0 15px rgba(4, 37, 91, 0);\r\n`;\r\n\r\nconst StyledFadeDiv = styled.div`\r\n position: absolute;\r\n top: 60px;\r\n left: 0px;\r\n right: 0px;\r\n height: 20px;\r\n background: linear-gradient(0deg, #ffffff, rgba(255, 255, 255, 0));\r\n`;\r\n\r\nconst StyledRadio = styled.input`\r\n position: absolute;\r\n opacity: 0;\r\n top: 0;\r\n left: 0;\r\n z-index: -1;\r\n\r\n &:hover {\r\n ~ ${StyledIcon} {\r\n box-shadow: 0 0 15px rgba(4, 37, 91, 0.3);\r\n }\r\n }\r\n\r\n &:focus ~ ${StyledIcon} {\r\n outline: ${(props) => (props.assistAccess ? '1px dotted #212121' : '0')};\r\n outline: ${(props) => (props.assistAccess ? '5px auto -webkit-focus-ring-color' : '0')};\r\n }\r\n\r\n &:checked {\r\n ~ ${StyledIcon} {\r\n border-color: ${(props: StyledInputProps) =>\r\n props.hasModernStyles && props.theme?.mainBorder ? props.theme.mainBorder : COLOR.BRAND.REPORTING};\r\n box-shadow: 0 0 15px rgba(4, 37, 91, 0.3);\r\n }\r\n\r\n ${(props) =>\r\n !props.hasModernStyles &&\r\n `\r\n ~ ${StyledLabelText} {\r\n color: white;\r\n background-color: ${COLOR.BRAND.REPORTING};\r\n box-shadow: 0 0 15px rgba(4, 37, 91, 0.3);\r\n }\r\n \r\n ~ ${StyledLabelText} ${StyledFadeDiv} {\r\n background: linear-gradient(0deg, ${COLOR.BRAND.REPORTING}, rgba(255, 255, 255, 0));\r\n }\r\n `}\r\n }\r\n`;\r\n\r\nexport const StyledGalleryIconWrapper = styled.div`\r\n display: flex;\r\n flex-wrap: wrap;\r\n align-content: flex-start;\r\n overflow: auto;\r\n padding: 15px 0 0 0;\r\n height: calc(100% - 95px);\r\n position: relative;\r\n`;\r\n\r\nexport const GalleryIcon = React.forwardRef(\r\n (\r\n {\r\n iconName,\r\n iconLabel,\r\n id,\r\n onChange,\r\n onKeyDown,\r\n assistAccess,\r\n isSelected,\r\n dataTestId,\r\n imagePath,\r\n hasModernStyles,\r\n },\r\n ref,\r\n ) => (\r\n \r\n \r\n \r\n \r\n \r\n {iconLabel}\r\n \r\n \r\n \r\n \r\n ),\r\n);\r\nGalleryIcon.displayName = 'GalleryIcon';\r\n","import * as React from 'react'; // eslint-disable-line\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT, FONT_SIZE, SPEED } from '../../packages/constants';\r\nimport { camelToKebab } from '../../../Scripts/Spotlight/Components/CamelToKebab';\r\nimport ItemGroup, {\r\n ItemGroupWrapper,\r\n StyledList,\r\n StyledListItem,\r\n ItemGroupTitle,\r\n HorizontalRule,\r\n StyledGroupItem,\r\n ItemGroupScroller,\r\n} from './atoms/item-group/item-group';\r\nimport { GalleryIcon, StyledGalleryIconWrapper } from '../gallery-icon/gallery-icon';\r\nimport { SearchFilter } from '../search-filter/search-filter';\r\n\r\ninterface Action {\r\n type: TType;\r\n payload?: TPayload;\r\n}\r\n\r\ninterface ItemDataItem {\r\n type: string;\r\n title: string;\r\n description: string;\r\n iconName: string;\r\n id: string;\r\n selected?: boolean;\r\n}\r\n\r\ninterface ItemDataGroup {\r\n title: string;\r\n id: string;\r\n items: ItemDataItem[];\r\n}\r\n\r\ninterface ItemDataSection {\r\n section: 'main' | 'top';\r\n title: string;\r\n groups: ItemDataGroup[];\r\n}\r\n\r\nexport type ItemData = ItemDataSection[];\r\n\r\nexport enum GalleryBrowserActionTypes {\r\n SELECTED_ITEM = 'SELECTED_ITEM',\r\n}\r\n\r\nexport interface GalleryBrowserProps {\r\n itemData: ItemDataSection[];\r\n /**\r\n * The name of the items being displayed, e.g. Chart or Page.\r\n */\r\n itemNoun: string;\r\n /**\r\n * The plural of the items being displayed, e.g. Charts or Pages.\r\n * Used for empty states / error messages etc.\r\n */\r\n itemNounPlural: string;\r\n assistAccess: boolean;\r\n hideFavourites?: boolean;\r\n hideRecent?: boolean;\r\n imagePath?: string;\r\n themeProvider?: {};\r\n galleryWidth?: string;\r\n /**\r\n * External function to dispatch actions to\r\n */\r\n actionHandler?: (action: Action) => Promise;\r\n hasModernStyles?: boolean;\r\n}\r\n\r\ninterface StyledContentProps {\r\n imagePath?: string;\r\n width?: string;\r\n}\r\n\r\nconst StyledItemGroup = styled(ItemGroup)``;\r\n\r\nconst StyledContent = styled.div`\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n height: 100%;\r\n transition: all ${SPEED.TRANSITION} ease-in;\r\n width: ${(props: StyledContentProps) => (props.width ? props.width : '660px')};\r\n`;\r\n\r\nconst StyledGalleryBrowser = styled.div`\r\n display: flex;\r\n height: 100%;\r\n width: auto;\r\n\r\n ${StyledItemGroup} {\r\n max-width: 240px;\r\n width: 240px;\r\n min-width: 240px;\r\n }\r\n`;\r\n\r\nconst StyledFilterWrapper = styled.div`\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n padding: 22px;\r\n`;\r\n\r\nconst StyledMessage = styled.p`\r\n font-family: ${FONT.OPEN_SANS};\r\n font-size: ${FONT_SIZE.MEDIUM};\r\n text-align: center;\r\n color: ${COLOR.MAIN.FORM_FIELD_DARK};\r\n padding-top: 18vh;\r\n width: 100%;\r\n`;\r\n\r\n// loop through all of the items and build itemsArray\r\nconst getAllItems = (itemData: ItemData) => {\r\n const arr = [];\r\n for (let ii = 0; ii < itemData.length; ii++) {\r\n for (let jj = 0; jj < itemData[ii].groups.length; jj++) {\r\n for (let kk = 0; kk < itemData[ii].groups[jj].items.length; kk++) {\r\n const item = itemData[ii].groups[jj].items[kk];\r\n arr.push(item);\r\n }\r\n }\r\n }\r\n return arr;\r\n};\r\n\r\nconst getSelectedItem = (itemData: ItemData) => {\r\n for (let ii = 0; ii < itemData.length; ii++) {\r\n for (let jj = 0; jj < itemData[ii].groups.length; jj++) {\r\n for (let kk = 0; kk < itemData[ii].groups[jj].items.length; kk++) {\r\n if (itemData[ii].groups[jj].items[kk].selected) {\r\n return itemData[ii].groups[jj].items[kk];\r\n }\r\n }\r\n }\r\n }\r\n return {};\r\n};\r\n\r\nexport const GalleryBrowser = React.forwardRef(\r\n (\r\n {\r\n itemData,\r\n itemNoun,\r\n itemNounPlural,\r\n hideFavourites,\r\n hideRecent,\r\n assistAccess,\r\n imagePath,\r\n galleryWidth,\r\n actionHandler,\r\n hasModernStyles,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const [groupItemChecked, setGroupItemChecked] = React.useState('all');\r\n const [filterValue, setFilterValue] = React.useState('');\r\n const [itemList, setItemList] = React.useState([]);\r\n const [ignoreScrollIntoView, setIgnoreScrollIntoView] = React.useState(false);\r\n // tslint:disable-next-line:no-null-keyword\r\n const filterInputRef = React.useRef(null);\r\n // tslint:disable-next-line:no-null-keyword\r\n const itemWrapperRef = React.useRef(null);\r\n\r\n // create a flat array of all the items\r\n const itemsArray = React.useMemo(() => {\r\n return getAllItems(itemData);\r\n }, [itemData]);\r\n\r\n const [filteredItems, setFilteredItems] = React.useState([]);\r\n\r\n // loop through all the items and unselect each\r\n const unselectAllItems = () => {\r\n for (let ii = 0; ii < itemData.length; ii++) {\r\n for (let jj = 0; jj < itemData[ii].groups.length; jj++) {\r\n for (let kk = 0; kk < itemData[ii].groups[jj].items.length; kk++) {\r\n const item = itemData[ii].groups[jj].items[kk];\r\n item.selected = false;\r\n }\r\n }\r\n }\r\n };\r\n\r\n // handle click when user clicks on item icon\r\n const handleGalleryIconChange = async (item: any) => {\r\n unselectAllItems();\r\n item.selected = true;\r\n setIgnoreScrollIntoView(true);\r\n if (typeof actionHandler !== 'function') {\r\n return;\r\n }\r\n // call function to dispatch the selected item state to parent\r\n await actionHandler({\r\n type: GalleryBrowserActionTypes.SELECTED_ITEM,\r\n payload: { itemId: item.id },\r\n });\r\n };\r\n\r\n // handle click when user clicks on left column group name\r\n const handleGroupItemClick = (event: any, items?: any) => {\r\n setIgnoreScrollIntoView(true);\r\n setGroupItemChecked(event.target.value);\r\n if (event.target.value !== 'all') {\r\n setFilterValue('');\r\n }\r\n setItemList(items);\r\n // @ts-ignore\r\n itemWrapperRef.current.scrollTop = 0;\r\n };\r\n\r\n // handle change when user starts typing in the search-filter\r\n const handleFilterChange = (event: any) => {\r\n setFilterValue(event.target.value.toLowerCase());\r\n setGroupItemChecked('all');\r\n };\r\n\r\n // handle click when user clicks the clear search-filter button\r\n const handleFilterClearButton = () => {\r\n setFilterValue('');\r\n // @ts-ignore\r\n filterInputRef.current.focus();\r\n };\r\n\r\n React.useEffect(() => {\r\n // search-filter the itemsArray data based on the filters input\r\n const filteredData = itemsArray.filter((item: any) => {\r\n return Object.keys(item).some(() => item.title.toLowerCase().includes(filterValue));\r\n });\r\n setFilteredItems(filteredData);\r\n }, [itemsArray, filterValue]);\r\n\r\n // scroll to selected item\r\n React.useEffect(() => {\r\n const temporaryItemSelected = getSelectedItem(itemData);\r\n const selectedItem = document.querySelector(`input[value=\"${(temporaryItemSelected as any).id}\"]`);\r\n // only scroll the view if there is a preselected item, dont scroll if user clicks an item\r\n if (selectedItem && !ignoreScrollIntoView) {\r\n setTimeout(() => {\r\n selectedItem.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'nearest' });\r\n }, 200);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps -- run only once\r\n }, []);\r\n\r\n const topNavItems = itemData.filter((item) => item.section === 'top');\r\n const mainNavItems = itemData.filter((item) => item.section === 'main');\r\n\r\n return (\r\n \r\n \r\n \r\n {topNavItems &&\r\n Object.entries(topNavItems).map(([, section]) => {\r\n return (\r\n \r\n {Object.entries(section.groups).map(([, group]) => {\r\n return (\r\n handleGroupItemClick(e, group.items)}\r\n radioValue={group.id}\r\n key={`top-group-item-${group.id}`}\r\n checked={groupItemChecked === group.id}\r\n assistAccess={assistAccess}\r\n dataTestId={`gallery-item-group-name__${group.id}`}\r\n >\r\n {group.title}\r\n \r\n );\r\n })}\r\n \r\n );\r\n })}\r\n \r\n\r\n \r\n\r\n \r\n \r\n handleGroupItemClick(e)}\r\n radioValue={'all'}\r\n checked={groupItemChecked === 'all'}\r\n assistAccess={assistAccess}\r\n dataTestId={'gallery-item-group-name__all'}\r\n >\r\n All {itemNounPlural}...\r\n \r\n {mainNavItems &&\r\n Object.entries(mainNavItems).map(([, section]) => {\r\n return (\r\n \r\n {{section.title}}\r\n \r\n {Object.entries(section.groups).map(([, group]) => {\r\n return (\r\n handleGroupItemClick(e, group.items)}\r\n radioValue={group.id}\r\n key={`main-group-item-${group.id}`}\r\n checked={groupItemChecked === group.id}\r\n assistAccess={assistAccess}\r\n dataTestId={`gallery-item-group-name__${group.id}`}\r\n >\r\n {group.title}\r\n \r\n );\r\n })}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {groupItemChecked === 'all' ||\r\n groupItemChecked === 'create-a-new-item' ||\r\n groupItemChecked === 'recent' ||\r\n groupItemChecked === 'favourites' ? (\r\n filteredItems.length >= 1 ? (\r\n filteredItems.map((item: any) => {\r\n return (\r\n handleGalleryIconChange(item)}\r\n key={item.id}\r\n assistAccess={assistAccess}\r\n isSelected={item.selected}\r\n dataTestId={`modal-add-${itemNoun}__label-${camelToKebab(item.title)}`}\r\n hasModernStyles={hasModernStyles}\r\n />\r\n );\r\n })\r\n ) : (\r\n \r\n {groupItemChecked === 'recent'\r\n ? `No ${itemNounPlural} have been used recently`\r\n : groupItemChecked === 'favourites'\r\n ? 'No favourites have been added'\r\n : `No ${itemNounPlural} found matching \"${filterValue}\"`}\r\n \r\n )\r\n ) : (\r\n itemList.map((item: any) => {\r\n return (\r\n handleGalleryIconChange(item)}\r\n key={item.id}\r\n assistAccess={assistAccess}\r\n isSelected={item.selected}\r\n dataTestId={`modal-add-${itemNoun}__label-${camelToKebab(item.title)}`}\r\n hasModernStyles={hasModernStyles}\r\n />\r\n );\r\n })\r\n )}\r\n \r\n \r\n \r\n );\r\n },\r\n);\r\nGalleryBrowser.displayName = 'GalleryBrowser';\r\n","import * as React from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, FONT, SPACING } from '../../packages/constants';\r\nimport Star from '../../packages/icons/star';\r\nimport { StyledIcon as GalleryIcon } from '../gallery-icon/gallery-icon';\r\n\r\nexport interface GalleryItemInfoProps {\r\n onClick?: (e: any) => void;\r\n iconName: string;\r\n title: string;\r\n description: string;\r\n imagePath?: string;\r\n reportCodes?: string[];\r\n hideFavourites?: boolean;\r\n isFavourite?: boolean;\r\n assistAccess: boolean;\r\n themeProvider?: {};\r\n}\r\n\r\nexport interface StyledButtonProps {\r\n assistAccess: boolean;\r\n}\r\n\r\nconst StyledGalleryItemInfo = styled.div`\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n box-shadow: inset 7px 0 9px -7px rgba(0, 0, 0, 0.15);\r\n width: 100%;\r\n height: 100%;\r\n overflow: auto;\r\n`;\r\n\r\nconst StyledGalleryItemInfoInner = styled.div`\r\n box-sizing: border-box;\r\n display: flex;\r\n flex-direction: column;\r\n padding: 23px ${SPACING.X_LARGE} ${SPACING.X_LARGE};\r\n max-width: 240px;\r\n width: 100%;\r\n height: 100%;\r\n overflow: auto;\r\n`;\r\n\r\nconst StyledGalleryIcon = styled(GalleryIcon)`\r\n margin-left: 44px;\r\n`;\r\n\r\nconst StyledGalleryItemTitle = styled.h2`\r\n font-family: ${FONT.OPEN_SANS};\r\n font-size: ${FONT_SIZE.LARGE};\r\n font-weight: 500;\r\n line-height: ${FONT_SIZE.X_LARGE};\r\n text-align: center;\r\n margin-bottom: 18px;\r\n color: ${COLOR.MAIN.LABEL_TEXT};\r\n width: 100%;\r\n`;\r\n\r\nconst StyledDescription = styled.p`\r\n font-family: ${FONT.OPEN_SANS};\r\n font-size: ${FONT_SIZE.SMALL};\r\n font-weight: 400;\r\n line-height: ${FONT_SIZE.LARGE};\r\n margin-bottom: ${SPACING.X_LARGE};\r\n align-self: flex-start;\r\n color: ${COLOR.MAIN.LABEL_TEXT};\r\n width: 100%;\r\n`;\r\n\r\nconst StyledHeading = styled.h3`\r\n font-family: ${FONT.OPEN_SANS};\r\n font-size: ${FONT_SIZE.SMALL};\r\n font-weight: 700;\r\n align-self: flex-start;\r\n color: ${COLOR.MAIN.LABEL_TEXT};\r\n margin-top: ${SPACING.X_SMALL};\r\n margin-bottom: ${SPACING.X_SMALL};\r\n width: 100%;\r\n`;\r\n\r\nconst StyledList = styled.ul`\r\n display: flex;\r\n flex-wrap: wrap;\r\n font-family: ${FONT.OPEN_SANS};\r\n font-size: ${FONT_SIZE.SMALL};\r\n font-weight: 400;\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n margin: 0;\r\n padding: 0;\r\n list-style-type: none;\r\n align-self: flex-start;\r\n color: ${COLOR.MAIN.LABEL_TEXT};\r\n width: 100%;\r\n`;\r\n\r\nconst StyledStar = styled(Star)`\r\n width: 20px;\r\n margin-right: ${SPACING.MEDIUM};\r\n`;\r\n\r\nconst StyledFavouriteButton = styled.button`\r\n font-family: ${FONT.OPEN_SANS};\r\n font-size: ${FONT_SIZE.SMALL};\r\n font-weight: 400;\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n align-self: flex-start;\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n color: ${COLOR.MAIN.DARK_GREY};\r\n border: 0;\r\n padding: ${SPACING.SMALL} ${SPACING.SMALL} ${SPACING.SMALL} 0;\r\n margin-top: auto;\r\n cursor: pointer;\r\n\r\n &:focus {\r\n outline: ${(props: StyledButtonProps): string => (props.assistAccess ? '1px dotted #212121' : '0')};\r\n outline: ${(props: StyledButtonProps): string =>\r\n props.assistAccess ? '5px auto -webkit-focus-ring-color' : '0'};\r\n }\r\n\r\n &:hover ${StyledStar} {\r\n fill: ${COLOR.PRIMARY.YELLOW};\r\n }\r\n`;\r\n\r\nconst StyledListItem = styled.li`\r\n font-family: ${FONT.OPEN_SANS};\r\n font-size: ${FONT_SIZE.X_SMALL};\r\n font-weight: 400;\r\n line-height: ${FONT_SIZE.LARGE};\r\n align-self: flex-start;\r\n color: ${COLOR.MAIN.LABEL_TEXT};\r\n margin-right: ${SPACING.X_SMALL};\r\n\r\n &::after {\r\n content: ',';\r\n }\r\n\r\n &:last-child {\r\n margin-right: 0;\r\n\r\n &::after {\r\n content: '';\r\n }\r\n }\r\n`;\r\n\r\nexport const GalleryItemInfo = React.forwardRef(\r\n (\r\n {\r\n iconName,\r\n title,\r\n description,\r\n reportCodes,\r\n isFavourite = false,\r\n hideFavourites,\r\n assistAccess,\r\n imagePath,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const [favourite, setFavourite] = React.useState(isFavourite);\r\n const handleFavourite = () => {\r\n setFavourite(!favourite);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n {title}\r\n {description}\r\n {reportCodes && reportCodes.length > 0 && (\r\n <>\r\n Report codes\r\n \r\n {reportCodes.map((code: string, index: number) => (\r\n {code}\r\n ))}\r\n \r\n \r\n )}\r\n {!hideFavourites && (\r\n \r\n \r\n {favourite ? 'Remove from' : 'Add to'} favourites\r\n \r\n )}\r\n \r\n \r\n );\r\n },\r\n);\r\nGalleryItemInfo.displayName = 'GalleryItemInfo';\r\n","import * as React from 'react';\r\nimport { useEffect } from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport { THEME } from '../../packages/constants';\r\nimport { StyledModal, StyledModalTitleBar, StyledModalContent, StyledButton, StyledButtonGroup } from '../modal/modal';\r\nimport type { ModalProps } from '../modal/modal';\r\n\r\nconst StyledModalConfirm = styled(StyledModal)`\r\n width: ${(props: ModalProps) => (props.width ? props.width : '500px')};\r\n height: ${(props: ModalProps) => (props.height ? props.height : 'auto')};\r\n`;\r\n\r\nexport const ModalConfirm = React.forwardRef(\r\n (\r\n {\r\n children,\r\n buttons,\r\n title,\r\n cancelText,\r\n primaryText,\r\n handleCancelButton,\r\n handlePrimaryButton,\r\n width,\r\n height,\r\n focusOnButton,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const cancelButtonRef = React.useRef(null);\r\n const primaryButtonRef = React.useRef(null);\r\n\r\n useEffect(() => {\r\n if (focusOnButton === 'cancel' && cancelButtonRef.current) cancelButtonRef.current.focus();\r\n if (focusOnButton === 'primary' && primaryButtonRef.current) primaryButtonRef.current.focus();\r\n });\r\n\r\n return (\r\n \r\n {title}\r\n {children}\r\n {buttons ? (\r\n buttons\r\n ) : (\r\n \r\n \r\n {primaryText || 'Ok'}\r\n \r\n \r\n {cancelText || 'Cancel'}\r\n \r\n \r\n )}\r\n \r\n );\r\n },\r\n);\r\nModalConfirm.displayName = 'ModalConfirm';\r\n","import * as React from 'react'; // eslint-disable-line\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, SPACING, SPACING_SCALE, SPEED } from '../../packages/constants';\r\n\r\nexport interface BreadcrumbsProps {\r\n children: React.ReactNode;\r\n}\r\n\r\ninterface BreadcrumbsLinkProps {\r\n children: React.ReactNode;\r\n dataId: string;\r\n href: string;\r\n target?: '_blank' | '_self' | '_parent' | '_top';\r\n theme?: any;\r\n}\r\n\r\nconst StyledBreadcrumbs = styled.div`\r\n margin-bottom: ${SPACING_SCALE * 8}px;\r\n padding-top: ${SPACING_SCALE * 3}px;\r\n`;\r\n\r\nconst StyledBreadcrumbsList = styled.ol`\r\n display: flex;\r\n flex-wrap: wrap;\r\n`;\r\n\r\nconst StyledBreadcrumbsListItem = styled.li`\r\n display: flex;\r\n margin-right: ${SPACING.MEDIUM};\r\n padding-right: ${SPACING.SMALL};\r\n position: relative;\r\n font-size: ${FONT_SIZE.SMALL};\r\n color: ${COLOR.MAIN.DARK_GREY};\r\n\r\n &::before,\r\n &::after {\r\n left: 100%;\r\n top: 50%;\r\n border: solid transparent;\r\n content: '';\r\n height: 0;\r\n width: 0;\r\n position: absolute;\r\n pointer-events: none;\r\n }\r\n\r\n &::after {\r\n border-color: transparent;\r\n border-left-color: ${COLOR.PRIMARY.WHITE};\r\n border-width: 5px;\r\n margin-top: -5px;\r\n }\r\n\r\n &::before {\r\n border-color: transparent;\r\n border-left-color: ${COLOR.MAIN.FORM_FIELD_DARK};\r\n border-width: 6px;\r\n margin-top: -6px;\r\n }\r\n\r\n &:last-child {\r\n &::before,\r\n &::after {\r\n display: none;\r\n }\r\n }\r\n`;\r\n\r\nconst StyledBreadcrumbsLink = styled.a.attrs(({ dataId }) => ({\r\n 'data-test-id': dataId,\r\n}))`\r\n transition: border-bottom-color ${SPEED.TRANSITION};\r\n color: ${(props) => (props.theme ? props.theme.main : COLOR.BRAND.REPORTING) || COLOR.BRAND.REPORTING};\r\n text-decoration: none;\r\n padding-bottom: 1px;\r\n border-bottom: 1px solid transparent;\r\n\r\n &:hover {\r\n border-bottom: 1px solid ${(props) => (props.theme ? props.theme.main : COLOR.BRAND.REPORTING)};\r\n }\r\n`;\r\n\r\nexport const Breadcrumbs = ({ children, ...props }: BreadcrumbsProps) => (\r\n \r\n \r\n {\r\n //\r\n // @ts-ignore\r\n children.length && children.map ? (\r\n // @ts-ignore\r\n children.map(\r\n (child: any, i: number) =>\r\n child &&\r\n (child.length || child.props) && (\r\n {child}\r\n ),\r\n )\r\n ) : (\r\n {children}\r\n )\r\n }\r\n \r\n \r\n);\r\n\r\nexport const BreadcrumbsLink = ({ children, ...props }: BreadcrumbsLinkProps) => (\r\n {children}\r\n);\r\n","import * as React from 'react'; // eslint-disable-line\r\nimport styled from 'styled-components';\r\nimport { ANIMATION, COLOR, FONT_SIZE, SPACING_SCALE, SPEED } from '../../packages/constants';\r\n\r\nexport interface StepProcessProps {\r\n /**\r\n * Step data\r\n */\r\n steps: any;\r\n /**\r\n * Index of current step\r\n */\r\n currentStep: number;\r\n}\r\n\r\ninterface StepItemsProps {\r\n childLength: number;\r\n active: boolean;\r\n complete: boolean;\r\n}\r\n\r\nconst roundelSize = 22;\r\n\r\nconst StyledStepProcess = styled.ol`\r\n margin: 0 auto ${SPACING_SCALE * 6}px;\r\n width: 100%;\r\n min-height: 64px;\r\n overflow: hidden;\r\n`;\r\n\r\nconst StyledLabel = styled.p`\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n display: inline-block;\r\n max-width: 50%;\r\n`;\r\n\r\nconst StyledStepItem = styled.li`\r\n list-style-type: none;\r\n width: ${(props: StepItemsProps): string => `${100 / props.childLength}%`};\r\n float: left;\r\n font-size: ${FONT_SIZE.SMALL};\r\n position: relative;\r\n text-align: center;\r\n text-transform: uppercase;\r\n color: ${(props) =>\r\n props.active || props.complete ? props.theme.main || COLOR.BRAND.REPORTING : COLOR.MAIN.FORM_FIELD_DARK};\r\n box-sizing: border-box;\r\n\r\n &::before {\r\n width: ${roundelSize}px;\r\n height: ${roundelSize}px;\r\n content: '';\r\n counter-increment: step;\r\n line-height: ${roundelSize}px;\r\n border-width: 2px;\r\n border-style: solid;\r\n border-color: ${(props) =>\r\n props.active || props.complete ? props.theme.main || COLOR.BRAND.REPORTING : COLOR.MAIN.FORM_FIELD_DARK};\r\n display: block;\r\n text-align: center;\r\n margin: 0 auto 10px;\r\n border-radius: 50%;\r\n background-color: ${(props) =>\r\n props.complete ? props.theme.main || COLOR.BRAND.REPORTING : COLOR.PRIMARY.WHITE};\r\n box-sizing: border-box;\r\n animation: ${SPEED.TRANSITION} ${ANIMATION.FADE_IN} linear forwards;\r\n position: relative;\r\n z-index: 1;\r\n }\r\n\r\n &::after {\r\n background-color: ${(props) => (props.complete ? props.theme.main || COLOR.BRAND.REPORTING : 'transparent')};\r\n width: 100%;\r\n height: 2px;\r\n content: '';\r\n position: absolute;\r\n border-top: ${(props: StepItemsProps): string =>\r\n props.complete ? '2px solid transparent' : `2px dashed ${COLOR.MAIN.FORM_FIELD_DARK}`};\r\n top: ${roundelSize / 2 - 1}px;\r\n right: -50%;\r\n z-index: 0;\r\n box-sizing: border-box;\r\n }\r\n\r\n &:last-child {\r\n &::after {\r\n content: none;\r\n }\r\n }\r\n\r\n ${StyledLabel} {\r\n animation: ${SPEED.TRANSITION} ${ANIMATION.FADE_IN} linear forwards;\r\n }\r\n`;\r\n\r\nexport const StepProcess = ({ steps, currentStep, ...props }: StepProcessProps) => (\r\n \r\n {steps.map(\r\n (step: any, i: number) =>\r\n step &&\r\n !step.skipStep && (\r\n !item.skipStep).length}\r\n key={step.key || i}\r\n >\r\n {step.title}\r\n \r\n ),\r\n )}\r\n \r\n);\r\n","import * as React from 'react'; // eslint-disable-line\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, LINE_HEIGHT, SPEED, TEXT_RELATIVE_MARGIN } from '../../packages/constants';\r\n\r\nexport enum Justify {\r\n Left = 'left',\r\n Right = 'right',\r\n Center = 'center',\r\n}\r\n\r\nexport interface TextProps extends React.HTMLAttributes {\r\n children: React.ReactNode;\r\n heading?: number;\r\n /**\r\n * Pass element type e.g. 'h1', 'p'\r\n * (Note: Font sizes for heading levels haven't been defined in constants yet)\r\n */\r\n as?: any;\r\n /**\r\n * Colour of text\r\n */\r\n color?: string;\r\n /**\r\n * Text justification\r\n */\r\n justify?: Justify;\r\n /**\r\n * Font-size with unit\r\n */\r\n fontSize?: string;\r\n /**\r\n * Line-height\r\n */\r\n lineHeight?: string;\r\n /**\r\n * Margin bottom with unit\r\n */\r\n marginBottom?: string;\r\n /**\r\n * Indent 28px (SPACING.XX_LARGE)\r\n */\r\n indent?: string;\r\n}\r\n\r\n// TODO: heading styles\r\nconst StyledText = styled.p`\r\n color: ${(props: TextProps) => (props.color ? props.color : COLOR.PRIMARY.BLACK)};\r\n text-align: ${(props: TextProps) =>\r\n props.justify === 'left'\r\n ? 'left'\r\n : props.justify === 'center'\r\n ? 'center'\r\n : props.justify === 'right'\r\n ? 'right'\r\n : 'left'};\r\n font-size: ${(props: TextProps) => props.fontSize || FONT_SIZE.MEDIUM};\r\n line-height: ${(props: TextProps) => props.lineHeight || LINE_HEIGHT.LARGE};\r\n margin-bottom: ${(props: TextProps) => props.marginBottom || TEXT_RELATIVE_MARGIN.MEDIUM};\r\n padding: 0 0 0 ${(props: TextProps) => (props.indent ? props.indent : '0')};\r\n`;\r\n\r\nexport const TextLink = styled.a`\r\n transition: border-bottom-color ${SPEED.TRANSITION};\r\n color: ${COLOR.BRAND.REPORTING};\r\n text-decoration: none;\r\n padding-bottom: 1px;\r\n border-bottom: 1px solid transparent;\r\n\r\n &:hover {\r\n border-bottom: 1px solid ${COLOR.BRAND.REPORTING};\r\n }\r\n`;\r\n\r\nexport const Text = ({ children, indent, heading, fontSize, ...props }: TextProps) => (\r\n \r\n {children}\r\n \r\n);\r\n","import * as React from 'react';\r\n\r\nimport { lighten } from 'polished';\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, SPACING } from '../../packages/constants';\r\n\r\nexport interface HelperModalProps {\r\n children: React.ReactNode;\r\n dataId: string;\r\n modalContent: React.ReactNode;\r\n position?: 'top' | 'bottom' | undefined;\r\n isOpen?: boolean;\r\n inline?: boolean;\r\n width?: number;\r\n}\r\n\r\ninterface ModalContentProps {\r\n position?: 'top' | 'bottom' | undefined;\r\n width?: number;\r\n}\r\n\r\ninterface StyledHelperModal {\r\n inline?: boolean;\r\n}\r\n\r\nconst StyledHelperModal = styled.div`\r\n display: ${(props: StyledHelperModal): string => (props.inline ? 'inline' : '')};\r\n position: relative;\r\n width: 15px;\r\n height: 15px;\r\n`;\r\n\r\nconst ModalContent = styled.div`\r\n position: absolute;\r\n top: ${(props) => (props.position === 'top' ? 'auto' : '32px')};\r\n bottom: ${(props) => (props.position === 'top' ? '32px' : 'auto')};\r\n left: calc(50% - ((${(props) => `${props.width}px`} / 2) + ${SPACING.LARGE}));\r\n width: ${(props) => `${props.width}px`};\r\n padding: ${SPACING.LARGE};\r\n border: 1px solid ${COLOR.PRIMARY.BLACK};\r\n background-color: #fff;\r\n z-index: 99999;\r\n white-space: normal;\r\n\r\n &::before {\r\n border-top: 1px solid black;\r\n border-right: 1px solid black;\r\n background-color: white;\r\n width: 20px;\r\n height: 20px;\r\n content: '';\r\n position: absolute;\r\n top: ${(props: ModalContentProps): string => (props.position === 'top' ? 'auto' : '-11px')};\r\n bottom: ${(props: ModalContentProps): string => (props.position === 'top' ? '-11px' : 'auto')};\r\n left: calc(50% - 10px);\r\n transform: rotate(${(props: ModalContentProps): string => (props.position === 'top' ? '135deg' : '-45deg')});\r\n }\r\n`;\r\n\r\nconst StyledButton = styled.button`\r\n border: 0;\r\n background-color: transparent;\r\n padding: 0;\r\n margin: 0;\r\n vertical-align: middle;\r\n`;\r\n\r\nconst StyledQuestionMark = styled.i`\r\n background: ${COLOR.MAIN.PRIMARY};\r\n color: ${COLOR.PRIMARY.WHITE};\r\n cursor: pointer;\r\n font-weight: 700;\r\n font-style: normal;\r\n border-radius: 10px;\r\n text-align: center;\r\n line-height: 15px;\r\n display: inline-block;\r\n transform: translateY(-2px);\r\n width: 15px;\r\n height: 15px;\r\n vertical-align: middle;\r\n\r\n &:hover {\r\n background: ${lighten(0.2, COLOR.MAIN.PRIMARY)};\r\n }\r\n`;\r\n\r\nexport const QuestionMark = () => ?;\r\n\r\nexport const HelperModal = ({\r\n children,\r\n position = 'top',\r\n modalContent,\r\n inline,\r\n width = 420,\r\n dataId,\r\n isOpen = false,\r\n ...props\r\n}: HelperModalProps) => {\r\n const elementRef = React.useRef(null);\r\n const [showContent, setShowContent] = React.useState(isOpen);\r\n const toggleContent = () => setShowContent(!showContent);\r\n\r\n React.useEffect(() => {\r\n function handleKeyListener(e: any) {\r\n if ((showContent && e.key === 'Escape') || (showContent && e.key === 'Tab')) {\r\n setShowContent(false);\r\n }\r\n }\r\n\r\n function handleClick(e: any) {\r\n if (showContent && elementRef.current && !elementRef.current.contains(e.target)) {\r\n setShowContent(false);\r\n }\r\n }\r\n\r\n document.addEventListener('keydown', handleKeyListener);\r\n document.addEventListener('click', handleClick);\r\n\r\n return function cleanupKeyListener() {\r\n document.removeEventListener('keydown', handleKeyListener);\r\n document.removeEventListener('click', handleClick);\r\n };\r\n }, [showContent, setShowContent]);\r\n\r\n return (\r\n \r\n \r\n {children}\r\n \r\n {showContent && (\r\n <>\r\n \r\n {modalContent}\r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { darken, transparentize } from 'polished';\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, RADIUS, SPACING } from '../../packages/constants';\r\nimport { HelperModal, QuestionMark } from '../helper-modal';\r\n\r\nexport interface TextInputProps {\r\n dataId: string;\r\n label: string;\r\n id: string;\r\n name: string;\r\n autofocus?: boolean;\r\n defaultValue?: string;\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n hasHelper?: boolean;\r\n helperContent?: React.ReactNode;\r\n numeralsOnly?: boolean;\r\n placeholder?: string;\r\n validationMessage?: string;\r\n value?: string;\r\n onChange?: (e: any) => void;\r\n onBlur?: (e: any) => void;\r\n maxLength?: number;\r\n minLength?: number;\r\n thinLabel?: boolean;\r\n className?: string;\r\n}\r\n\r\ninterface StyledTextLabelProps {\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n thinLabel?: boolean;\r\n}\r\n\r\ninterface StyledValidationMessageProps {\r\n invalid?: boolean;\r\n}\r\n\r\nconst wrapperStyles = `\r\n display: flex;\r\n flex-direction: column;\r\n`;\r\n\r\nconst Wrapper = styled.label`\r\n ${wrapperStyles}\r\n`;\r\n\r\nconst WrapperHasHelper = styled.div`\r\n ${wrapperStyles}\r\n`;\r\n\r\nconst StyledLabelWrapper = styled.div`\r\n display: inline-flex;\r\n`;\r\n\r\nconst StyledTextLabel = styled.span`\r\n display: block;\r\n padding-bottom: ${SPACING.XX_SMALL};\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n font-weight: ${(props: StyledTextLabelProps): string => (props.thinLabel ? '400' : '700')};\r\n color: ${(props: StyledTextLabelProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.LABEL_TEXT)};\r\n opacity: ${(props: StyledTextLabelProps): string => (props.disabled ? '0.7' : '1')};\r\n`;\r\n\r\nconst StyledLabelHasHelper = styled.label`\r\n display: inline-block;\r\n margin-right: ${SPACING.X_SMALL};\r\n padding-bottom: ${SPACING.XX_SMALL};\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n font-weight: ${(props: StyledTextLabelProps): string => (props.thinLabel ? '400' : '700')};\r\n color: ${(props: StyledTextLabelProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.LABEL_TEXT)};\r\n opacity: ${(props: StyledTextLabelProps): string => (props.disabled ? '0.7' : '1')};\r\n`;\r\n\r\nconst StyledInput = styled.input`\r\n background-color: ${(props: StyledTextLabelProps): string =>\r\n props.disabled ? darken('0.1', COLOR.PRIMARY.WHITE) : COLOR.PRIMARY.WHITE};\r\n color: ${(props: StyledTextLabelProps): string =>\r\n props.disabled ? transparentize('0.5', COLOR.PRIMARY.BLACK) : COLOR.PRIMARY.BLACK};\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n padding: ${SPACING.SMALL};\r\n border-width: 1px;\r\n border-style: solid;\r\n border-color: ${(props: StyledTextLabelProps): string =>\r\n props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.FORM_FIELD};\r\n border-radius: ${RADIUS.DEFAULT};\r\n\r\n &::placeholder {\r\n opacity: 0.65;\r\n }\r\n`;\r\n\r\nconst StyledValidationMessage = styled.div`\r\n font-size: ${FONT_SIZE.X_SMALL};\r\n line-height: ${FONT_SIZE.SMALL};\r\n color: ${(props: StyledValidationMessageProps): string =>\r\n props.invalid ? COLOR.PRIMARY.RED : COLOR.PRIMARY.BLACK};\r\n padding-top: ${SPACING.SMALL};\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n`;\r\n\r\nexport const TextInput = React.forwardRef(\r\n (\r\n {\r\n dataId,\r\n label,\r\n id,\r\n hasHelper,\r\n helperContent,\r\n placeholder,\r\n name,\r\n autofocus,\r\n defaultValue,\r\n disabled,\r\n invalid,\r\n validationMessage,\r\n onChange,\r\n onBlur,\r\n maxLength,\r\n minLength,\r\n thinLabel,\r\n value,\r\n className,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n return hasHelper ? (\r\n \r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {validationMessage && (\r\n {validationMessage}\r\n )}\r\n \r\n ) : (\r\n \r\n \r\n {label}\r\n \r\n \r\n {validationMessage && (\r\n {validationMessage}\r\n )}\r\n \r\n );\r\n },\r\n);\r\nTextInput.displayName = 'TextInput';\r\n","import * as React from 'react';\r\n\r\nimport { darken, transparentize } from 'polished';\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, RADIUS, SPACING } from '../../packages/constants';\r\nimport { HelperModal, QuestionMark } from '../helper-modal';\r\n\r\nexport interface TextFieldInlineProps {\r\n dataId: string;\r\n label: string;\r\n id: string;\r\n name: string;\r\n autofocus?: boolean;\r\n defaultValue?: string;\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n hasHelper?: boolean;\r\n helperContent?: React.ReactNode;\r\n placeholder?: string;\r\n validationMessage?: string;\r\n value?: string;\r\n onChange?: (e: any) => void;\r\n onBlur?: (e: any) => void;\r\n maxLength?: number;\r\n minLength?: number;\r\n thinLabel?: boolean;\r\n className?: string;\r\n labelWidth?: string;\r\n labelAlignment?: 'start' | 'center' | 'end' | undefined;\r\n}\r\n\r\ninterface StyledTextLabelProps {\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n thinLabel?: boolean;\r\n}\r\n\r\ninterface WrapperProps {\r\n labelWidth?: string;\r\n}\r\n\r\ninterface StyledLabelWrapperProps {\r\n labelAlignment: 'start' | 'center' | 'end';\r\n}\r\n\r\ninterface StyledValidationMessageProps {\r\n invalid?: boolean;\r\n}\r\n\r\nconst Wrapper = styled.div`\r\n display: grid;\r\n grid-template-columns:\r\n ${(props: WrapperProps): string => (props.labelWidth ? props.labelWidth : 'auto')}\r\n minmax(0, 1fr);\r\n`;\r\n\r\nconst StyledLabelWrapper = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n align-items: ${(props: StyledLabelWrapperProps): string => props.labelAlignment};\r\n flex-direction: column;\r\n padding-right: ${SPACING.LARGE};\r\n`;\r\n\r\nconst StyledTextLabel = styled.label`\r\n margin-right: ${SPACING.X_SMALL};\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${FONT_SIZE.LARGE};\r\n max-width: 100%;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n font-weight: ${(props: StyledTextLabelProps): string => (props.thinLabel ? '400' : '700')};\r\n color: ${(props: StyledTextLabelProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.LABEL_TEXT)};\r\n opacity: ${(props: StyledTextLabelProps): string => (props.disabled ? '0.7' : '1')};\r\n`;\r\n\r\nconst StyledLabelHasHelper = styled.div`\r\n display: inline-flex;\r\n max-width: 100%;\r\n`;\r\n\r\nconst StyledInput = styled.input`\r\n background-color: ${(props: StyledTextLabelProps): string =>\r\n props.disabled ? darken('0.1', COLOR.PRIMARY.WHITE) : COLOR.PRIMARY.WHITE};\r\n color: ${(props: StyledTextLabelProps): string =>\r\n props.disabled ? transparentize('0.5', COLOR.PRIMARY.BLACK) : COLOR.PRIMARY.BLACK};\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n padding: ${SPACING.SMALL};\r\n border-width: 1px;\r\n border-style: solid;\r\n border-color: ${(props: StyledTextLabelProps): string =>\r\n props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.FORM_FIELD};\r\n border-radius: ${RADIUS.DEFAULT};\r\n\r\n &::placeholder {\r\n opacity: 0.65;\r\n }\r\n`;\r\n\r\nconst StyledValidationMessage = styled.div`\r\n font-size: ${FONT_SIZE.X_SMALL};\r\n line-height: ${FONT_SIZE.SMALL};\r\n color: ${(props: StyledValidationMessageProps): string =>\r\n props.invalid ? COLOR.PRIMARY.RED : COLOR.PRIMARY.BLACK};\r\n padding-top: ${SPACING.SMALL};\r\n grid-area: 2 / 2;\r\n`;\r\n\r\nexport const TextFieldInline = React.forwardRef(\r\n (\r\n {\r\n dataId,\r\n label,\r\n id,\r\n hasHelper,\r\n helperContent,\r\n placeholder,\r\n name,\r\n autofocus,\r\n defaultValue,\r\n disabled,\r\n invalid,\r\n onChange,\r\n onBlur,\r\n maxLength,\r\n minLength,\r\n thinLabel,\r\n value,\r\n className,\r\n validationMessage,\r\n labelWidth,\r\n labelAlignment = 'start',\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n return (\r\n \r\n \r\n {hasHelper ? (\r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n {label}\r\n \r\n )}\r\n \r\n \r\n {validationMessage && (\r\n {validationMessage}\r\n )}\r\n \r\n );\r\n },\r\n);\r\n\r\nTextFieldInline.displayName = 'TextFieldInline';\r\n","import * as React from 'react'; // eslint-disable-line\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, SPACING } from '../../packages/constants';\r\nimport { HelperModal, QuestionMark } from '../helper-modal';\r\n\r\nexport interface RadioInputProps {\r\n dataId: string;\r\n id: string;\r\n label: string;\r\n name: string;\r\n value: string;\r\n autofocus?: boolean;\r\n checked?: boolean;\r\n disabled?: boolean;\r\n hasHelper?: boolean;\r\n helperContent?: React.ReactNode;\r\n inline?: boolean;\r\n invalid?: boolean;\r\n onChange?: (e: any) => void;\r\n thinLabel?: boolean;\r\n validationMessage?: string;\r\n}\r\n\r\ninterface StyledTextLabelProps {\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n inline?: boolean;\r\n thinLabel?: boolean;\r\n}\r\n\r\ninterface WrapperLabelProps {\r\n inline?: boolean;\r\n}\r\n\r\nconst Wrapper = styled.label`\r\n display: inline-flex;\r\n flex-direction: ${(props: WrapperLabelProps): string => (props.inline ? 'row-reverse' : 'column')};\r\n align-items: ${(props: WrapperLabelProps): string => (props.inline ? 'center' : '')};\r\n justify-content: ${(props: WrapperLabelProps): string => (props.inline ? 'flex-end' : '')};\r\n`;\r\n\r\nconst WrapperHasHelper = styled.div`\r\n display: inline-flex;\r\n flex-direction: ${(props: WrapperLabelProps): string => (props.inline ? 'row-reverse' : 'column')};\r\n align-items: ${(props: WrapperLabelProps): string => (props.inline ? 'center' : '')};\r\n justify-content: ${(props: WrapperLabelProps): string => (props.inline ? 'flex-end' : '')};\r\n`;\r\n\r\nconst StyledLabelWrapper = styled.div`\r\n display: inline-flex;\r\n`;\r\n\r\nconst StyledTextLabel = styled.span`\r\n display: block;\r\n margin-left: ${(props: StyledTextLabelProps): string => (props.inline ? SPACING.X_SMALL : '0')};\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n font-weight: ${(props: StyledTextLabelProps): string => (props.thinLabel ? '400' : '700')};\r\n color: ${(props: StyledTextLabelProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.LABEL_TEXT)};\r\n opacity: ${(props: StyledTextLabelProps): string => (props.disabled ? '0.7' : '1')};\r\n`;\r\n\r\nconst StyledLabelHasHelper = styled.label`\r\n display: inline-block;\r\n margin-right: ${SPACING.X_SMALL};\r\n margin-left: ${(props: StyledTextLabelProps): string => (props.inline ? SPACING.X_SMALL : '0')};\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n font-weight: ${(props: StyledTextLabelProps): string => (props.thinLabel ? '400' : '700')};\r\n color: ${(props: StyledTextLabelProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.LABEL_TEXT)};\r\n opacity: ${(props: StyledTextLabelProps): string => (props.disabled ? '0.7' : '1')};\r\n`;\r\n\r\nconst StyledRadio = styled.input``;\r\n\r\nexport const RadioInput = React.forwardRef(\r\n (\r\n {\r\n onChange,\r\n dataId,\r\n label,\r\n id,\r\n hasHelper,\r\n helperContent,\r\n name,\r\n value,\r\n autofocus,\r\n inline,\r\n thinLabel,\r\n checked,\r\n disabled,\r\n invalid,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n return hasHelper ? (\r\n \r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n );\r\n },\r\n);\r\nRadioInput.displayName = 'RadioInput';\r\n","import * as React from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, SPACING } from '../../packages/constants';\r\nimport { HelperModal, HelperModalProps, QuestionMark } from '../helper-modal';\r\n\r\nexport interface CheckboxInputProps {\r\n /**\r\n * Data-test-id\r\n */\r\n dataId: string;\r\n /**\r\n * Field label\r\n */\r\n label: string;\r\n id: string;\r\n name: string;\r\n /**\r\n * Sets the input to focus on page load\r\n */\r\n autofocus?: boolean;\r\n checked?: boolean;\r\n disabled?: boolean;\r\n /**\r\n * Shows the (?) icon\r\n */\r\n hasHelper?: boolean;\r\n /**\r\n * Content for the helper icon\r\n */\r\n helperContent?: React.ReactNode;\r\n helperProps?: HelperModalProps;\r\n inline?: boolean;\r\n invalid?: boolean;\r\n onChange?: (e: any) => void;\r\n /**\r\n * Makes the label thin\r\n */\r\n thinLabel?: boolean;\r\n className?: string;\r\n labelMaxWidth?: string;\r\n labelOverflow?: string;\r\n labelTextOverflow?: string;\r\n}\r\n\r\ninterface StyledTextLabelProps {\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n inline?: boolean;\r\n thinLabel?: boolean;\r\n labelMaxWidth?: string;\r\n labelOverflow?: string;\r\n labelTextOverflow?: string;\r\n}\r\n\r\ninterface WrapperLabelProps {\r\n inline?: boolean;\r\n}\r\n\r\nconst Wrapper = styled.label`\r\n &&& {\r\n display: inline-flex;\r\n flex-direction: ${(props: WrapperLabelProps): string => (props.inline ? 'row-reverse' : 'column')};\r\n align-items: ${(props: WrapperLabelProps): string => (props.inline ? 'center' : '')};\r\n justify-content: ${(props: WrapperLabelProps): string => (props.inline ? 'flex-end' : '')};\r\n }\r\n`;\r\n\r\nconst WrapperHasHelper = styled.div`\r\n display: inline-flex;\r\n flex-direction: ${(props: WrapperLabelProps): string => (props.inline ? 'row-reverse' : 'column')};\r\n align-items: ${(props: WrapperLabelProps): string => (props.inline ? 'center' : '')};\r\n justify-content: ${(props: WrapperLabelProps): string => (props.inline ? 'flex-end' : '')};\r\n`;\r\n\r\nconst StyledLabelWrapper = styled.div`\r\n display: inline-flex;\r\n`;\r\n\r\nconst StyledTextLabel = styled.span`\r\n display: block;\r\n margin-left: ${(props: StyledTextLabelProps): string => (props.inline ? SPACING.X_SMALL : '0')};\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n font-weight: ${(props: StyledTextLabelProps): string => (props.thinLabel ? '400' : '700')};\r\n color: ${(props: StyledTextLabelProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.LABEL_TEXT)};\r\n opacity: ${(props: StyledTextLabelProps): string => (props.disabled ? '0.7' : '1')};\r\n max-width: ${(props: StyledTextLabelProps): string => (props.labelMaxWidth ? props.labelMaxWidth : 'none')};\r\n overflow: ${(props: StyledTextLabelProps): string => (props.labelOverflow ? props.labelOverflow : 'visible')};\r\n text-overflow: ${(props: StyledTextLabelProps): string =>\r\n props.labelTextOverflow ? props.labelTextOverflow : 'clip'};\r\n`;\r\n\r\nconst StyledLabelHasHelper = styled.label`\r\n && {\r\n display: inline-block;\r\n margin-right: ${SPACING.X_SMALL};\r\n margin-left: ${(props: StyledTextLabelProps): string => (props.inline ? SPACING.X_SMALL : '0')};\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n font-weight: ${(props: StyledTextLabelProps): string => (props.thinLabel ? '400' : '700')};\r\n color: ${(props: StyledTextLabelProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.LABEL_TEXT)};\r\n opacity: ${(props: StyledTextLabelProps): string => (props.disabled ? '0.7' : '1')};\r\n max-width: ${(props: StyledTextLabelProps): string => (props.labelMaxWidth ? props.labelMaxWidth : 'none')};\r\n overflow: ${(props: StyledTextLabelProps): string => (props.labelOverflow ? props.labelOverflow : 'visible')};\r\n text-overflow: ${(props: StyledTextLabelProps): string =>\r\n props.labelTextOverflow ? props.labelTextOverflow : 'clip'};\r\n }\r\n`;\r\n\r\nconst StyledCheckbox = styled.input``;\r\n\r\nexport const CheckboxInput = React.forwardRef(\r\n (\r\n {\r\n onChange,\r\n dataId,\r\n label,\r\n id,\r\n hasHelper,\r\n helperContent,\r\n helperProps,\r\n name,\r\n autofocus,\r\n inline,\r\n thinLabel,\r\n checked,\r\n disabled,\r\n invalid,\r\n className,\r\n labelMaxWidth,\r\n labelOverflow,\r\n labelTextOverflow,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n return hasHelper ? (\r\n \r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n );\r\n },\r\n);\r\nCheckboxInput.displayName = 'CheckboxInput';\r\n","export enum TrackingSettingsTheme {\r\n Default = 'DEFAULT',\r\n DataGrid = 'DATAGRID',\r\n}\r\n\r\nexport enum TrackingItemStatus {\r\n Active = 'ACTIVE',\r\n Archived = 'ARCHIVED',\r\n}\r\n\r\nexport enum DataSourceNames {\r\n Xero = 'XERO',\r\n Quickbooks = 'QUICKBOOKS',\r\n QuickBooksDesktop = 'QUICKBOOKSDESKTOP',\r\n MyobAccountRight = 'MYOBACCOUNTRIGHT',\r\n MyobAccountRightDesktop = 'MYOBACCOUNTRIGHTDESKTOP',\r\n Sage50Desktop = 'SAGE50DESKTOP',\r\n}\r\n","import * as React from 'react'; // eslint-disable-line\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, SPACING } from '../../packages/constants';\r\nimport { ChevronRight } from '../../packages/icons';\r\nimport { TrackingSettingsTheme } from '../tracking-settings/tracking-settings-enums';\r\n\r\nexport interface TreeCollapseProps {\r\n parentProp: React.ReactNode;\r\n children: React.ReactNode;\r\n dataId: string;\r\n parentClickable?: boolean;\r\n expand?: boolean;\r\n theme?: TrackingSettingsTheme;\r\n hideSplit?: boolean;\r\n}\r\n\r\ninterface StyledChevronProps {\r\n isExpanded: boolean | undefined;\r\n}\r\n\r\ninterface StyledButtonProps {\r\n dataId: string;\r\n parentClickable?: boolean;\r\n}\r\n\r\ninterface StyledListProps {\r\n hideSplit?: boolean;\r\n}\r\n\r\nconst StyledTreeCollapse = styled.ul``;\r\n\r\nconst StyledListItem = styled.li`\r\n position: relative;\r\n\r\n &::after {\r\n border-left: 1px solid ${COLOR.LEGACY.DATAGRID_BORDER};\r\n width: 1px;\r\n height: 100%;\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n right: calc(145px + ${SPACING.MEDIUM});\r\n display: ${(props) => (props.theme === TrackingSettingsTheme.DataGrid && !props.hideSplit ? 'block' : 'none')};\r\n z-index: 2;\r\n }\r\n`;\r\n\r\nconst TreeParent = styled.div`\r\n display: flex;\r\n align-items: center;\r\n position: ${(props) => (props.theme === TrackingSettingsTheme.DataGrid ? 'sticky' : undefined)};\r\n top: ${(props) => (props.theme === TrackingSettingsTheme.DataGrid ? 0 : undefined)};\r\n z-index: ${(props) => (props.theme === TrackingSettingsTheme.DataGrid ? 1 : undefined)};\r\n background-color: ${(props) =>\r\n props.theme === TrackingSettingsTheme.DataGrid ? COLOR.LEGACY.DATAGRID_TH_BG : undefined};\r\n border-bottom: ${(props) =>\r\n props.theme === TrackingSettingsTheme.DataGrid ? `1px solid ${COLOR.LEGACY.DATAGRID_BORDER}` : 0};\r\n border-top: ${(props) =>\r\n props.theme === TrackingSettingsTheme.DataGrid ? `1px solid ${COLOR.LEGACY.DATAGRID_BORDER}` : 0};\r\n padding-left: ${(props) => (props.theme === TrackingSettingsTheme.DataGrid ? `${SPACING.MEDIUM}` : 0)};\r\n`;\r\n\r\nconst TreeChildren = styled.div`\r\n margin-top: ${SPACING.MEDIUM};\r\n`;\r\n\r\nconst StyledButton = styled.button.attrs(({ dataId }) => ({\r\n 'data-test-id': dataId,\r\n}))`\r\n border: 0;\r\n padding: 0;\r\n background-color: transparent;\r\n display: ${(props: StyledButtonProps): string => (props.parentClickable ? 'flex' : 'inline-block')};\r\n align-items: ${(props: StyledButtonProps): string => (props.parentClickable ? 'center' : '')};\r\n cursor: pointer;\r\n`;\r\n\r\nconst StyledChevron = styled(ChevronRight)`\r\n width: 12px;\r\n height: 12px;\r\n fill: ${COLOR.MAIN.LABEL_TEXT};\r\n margin-right: ${SPACING.X_SMALL};\r\n transform: ${(props: StyledChevronProps): string => (props.isExpanded ? 'rotate(90deg)' : 'rotate(0)')};\r\n`;\r\n\r\nexport const TreeCollapse = ({\r\n parentClickable,\r\n expand,\r\n parentProp,\r\n dataId,\r\n children,\r\n theme,\r\n hideSplit,\r\n ...props\r\n}: TreeCollapseProps) => {\r\n const [isExpanded, setIsExpanded] = React.useState(true);\r\n\r\n React.useEffect(() => {\r\n setIsExpanded(expand || false);\r\n }, [expand]);\r\n\r\n return (\r\n \r\n \r\n {parentClickable ? (\r\n \r\n setIsExpanded(!isExpanded)}\r\n aria-label={`${isExpanded ? 'Collapse' : 'Expand'} tree`}\r\n >\r\n \r\n {parentProp}\r\n \r\n \r\n ) : (\r\n \r\n setIsExpanded(!isExpanded)}\r\n aria-label={`${isExpanded ? 'Collapse' : 'Expand'} tree`}\r\n >\r\n \r\n \r\n {parentProp}\r\n \r\n )}\r\n {isExpanded && {children}}\r\n \r\n \r\n );\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { darken, transparentize } from 'polished';\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, FONT_STACK, RADIUS, SPACING } from '../../packages/constants';\r\nimport { HelperModal, QuestionMark } from '../helper-modal';\r\n\r\ninterface StyledSelectField {\r\n invalid?: boolean;\r\n emphasize?: boolean;\r\n hasLegacyStyles?: boolean;\r\n width?: string;\r\n minWidth?: string;\r\n maxWidth?: string;\r\n thinLabel?: boolean;\r\n}\r\n\r\nexport interface SelectFieldProps {\r\n dataId: string;\r\n id: string;\r\n name: string;\r\n options: SelectFieldOptions;\r\n value?: string;\r\n onChange?: (e: any) => void;\r\n disabled?: boolean;\r\n hasHelper?: boolean;\r\n hasLegacyStyles?: boolean;\r\n helperContent?: React.ReactNode;\r\n invalid?: boolean;\r\n label?: string;\r\n placeholder?: string;\r\n emphasize?: boolean;\r\n width?: string;\r\n minWidth?: string;\r\n maxWidth?: string;\r\n thinLabel?: boolean;\r\n}\r\n\r\nexport type SelectFieldOptions = SelectFieldOptionsItem[];\r\n\r\ninterface SelectFieldOptionsItem {\r\n name: string;\r\n value: string;\r\n}\r\n\r\ninterface StyledTextLabelProps {\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n emphasize?: boolean;\r\n hasLegacyStyles?: boolean;\r\n thinLabel?: boolean;\r\n}\r\n\r\ninterface InputWrapperProps {\r\n width?: string;\r\n minWidth?: string;\r\n maxWidth?: string;\r\n disabled?: boolean;\r\n emphasize?: boolean;\r\n}\r\n\r\nconst Wrapper = styled.label`\r\n display: flex;\r\n flex-direction: column;\r\n`;\r\n\r\nconst InputWrapper = styled.div`\r\n display: inline-flex;\r\n position: relative;\r\n margin-right: auto;\r\n width: ${(props) => (props.width ? props.width : 'auto')};\r\n min-width: ${(props) => (props.minWidth ? props.minWidth : 0)};\r\n max-width: ${(props) => (props.maxWidth ? props.maxWidth : 'none')};\r\n\r\n &::after {\r\n width: 0;\r\n height: 0;\r\n border-left: 6px solid transparent;\r\n border-right: 6px solid transparent;\r\n border-top: 6px solid\r\n ${(props) => (props.emphasize ? COLOR.DROPDOWN.DROPDOWN_ARROW_DARK : COLOR.DROPDOWN.DROPDOWN_ARROW)};\r\n content: '';\r\n position: absolute;\r\n bottom: ${SPACING.MEDIUM};\r\n right: ${SPACING.SMALL};\r\n opacity: ${(props) => (props.disabled ? '0.7' : '1')};\r\n pointer-events: none;\r\n }\r\n\r\n &:hover {\r\n &::after {\r\n border-top-color: ${(props: InputWrapperProps): string => (props.disabled ? '' : COLOR.BRAND.REPORTING)};\r\n }\r\n }\r\n`;\r\n\r\nconst WrapperHasHelper = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n position: relative;\r\n`;\r\n\r\nconst StyledLabelWrapper = styled.div`\r\n display: inline-flex;\r\n`;\r\n\r\nconst StyledTextLabel = styled.span`\r\n display: block;\r\n padding-bottom: ${(props) => (props.hasLegacyStyles ? 0 : SPACING.XX_SMALL)};\r\n font-family: ${FONT_STACK};\r\n font-weight: ${(props: StyledTextLabelProps): string => (props.thinLabel ? '400' : '700')};\r\n font-size: ${(props) => (props.hasLegacyStyles ? FONT_SIZE.X_SMALL : FONT_SIZE.SMALL)};\r\n line-height: ${(props) => (props.hasLegacyStyles ? 'normal' : FONT_SIZE.MEDIUM)};\r\n margin-bottom: ${(props) => (props.hasLegacyStyles ? '8px' : 0)};\r\n color: ${(props) =>\r\n props.invalid ? COLOR.PRIMARY.RED : props.hasLegacyStyles ? COLOR.PRIMARY.BLACK : COLOR.MAIN.LABEL_TEXT};\r\n opacity: ${(props) => (props.disabled ? '0.7' : '1')};\r\n`;\r\n\r\nconst StyledLabelHasHelper = styled.label`\r\n display: inline-block;\r\n padding-bottom: ${(props) => (props.hasLegacyStyles ? 0 : SPACING.XX_SMALL)};\r\n font-family: ${FONT_STACK};\r\n font-weight: ${(props: StyledTextLabelProps): string => (props.thinLabel ? '400' : '700')};\r\n font-size: ${(props) => (props.hasLegacyStyles ? FONT_SIZE.X_SMALL : FONT_SIZE.SMALL)};\r\n line-height: ${(props) => (props.hasLegacyStyles ? 'normal' : FONT_SIZE.MEDIUM)};\r\n margin-bottom: ${(props) => (props.hasLegacyStyles ? '8px' : 0)};\r\n margin-right: ${SPACING.X_SMALL};\r\n color: ${(props) =>\r\n props.invalid ? COLOR.PRIMARY.RED : props.hasLegacyStyles ? COLOR.PRIMARY.BLACK : COLOR.MAIN.LABEL_TEXT};\r\n opacity: ${(props) => (props.disabled ? '0.7' : '1')};\r\n`;\r\n\r\nconst StyledSelectField = styled.select`\r\n background-color: ${(props) => (props.disabled ? darken('0.1', COLOR.PRIMARY.WHITE) : COLOR.PRIMARY.WHITE)};\r\n color: ${(props) => (props.disabled ? transparentize('0.5', COLOR.PRIMARY.BLACK) : COLOR.PRIMARY.BLACK)};\r\n font-family: ${FONT_STACK};\r\n font-size: ${(props) => (props.hasLegacyStyles ? '13px' : FONT_SIZE.SMALL)};\r\n line-height: ${(props) => (props.hasLegacyStyles ? '18px' : FONT_SIZE.MEDIUM)};\r\n padding: ${SPACING.SMALL} ${SPACING.X_LARGE} ${SPACING.SMALL} ${SPACING.SMALL};\r\n border-width: 1px;\r\n border-style: solid;\r\n border-color: ${(props) =>\r\n props.invalid ? COLOR.PRIMARY.RED : props.emphasize ? COLOR.MAIN.FORM_FIELD_DARK : COLOR.MAIN.FORM_FIELD};\r\n border-radius: ${(props) => (props.hasLegacyStyles ? 0 : RADIUS.DEFAULT)};\r\n appearance: none;\r\n margin: 0;\r\n width: 100%;\r\n\r\n &:focus {\r\n box-shadow: 0 0 1px 3px rgba(59, 153, 252, 0.7);\r\n outline: none;\r\n }\r\n`;\r\n\r\nconst StyledOption = styled.option`\r\n font-weight: normal;\r\n`;\r\n\r\nexport const SelectInput = React.forwardRef(\r\n (\r\n {\r\n dataId,\r\n id,\r\n invalid,\r\n hasLegacyStyles,\r\n disabled,\r\n onChange,\r\n emphasize,\r\n width,\r\n minWidth,\r\n maxWidth,\r\n value,\r\n placeholder,\r\n options,\r\n ...props\r\n },\r\n ref,\r\n ) => (\r\n \r\n \r\n {placeholder && {placeholder}}\r\n {options.map((item: any, i: number) => (\r\n \r\n {item.name}\r\n \r\n ))}\r\n \r\n \r\n ),\r\n);\r\nSelectInput.displayName = 'SelectInput';\r\n\r\nexport const SelectField = React.forwardRef(\r\n (\r\n {\r\n dataId,\r\n id,\r\n disabled,\r\n value,\r\n onChange,\r\n placeholder = '',\r\n invalid,\r\n label,\r\n options,\r\n hasHelper,\r\n hasLegacyStyles,\r\n helperContent,\r\n emphasize,\r\n thinLabel,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n return hasHelper ? (\r\n \r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n {label && (\r\n \r\n {label}\r\n \r\n )}\r\n \r\n \r\n );\r\n },\r\n);\r\nSelectField.displayName = 'SelectField';\r\n","import * as React from 'react';\r\nimport { useCallback, useState } from 'react';\r\nimport styled from 'styled-components';\r\nimport { transparentize } from 'polished';\r\n\r\nimport { TreeCollapse } from '../../../tree-collapse';\r\nimport { CheckboxInput } from '../../../checkbox-input';\r\nimport { SelectField, SelectFieldOptions } from '../../../select-field';\r\nimport { COLOR, FONT_SIZE, SPACING, SPEED } from '../../../../packages/constants';\r\nimport { Edit } from '../../../../packages/icons';\r\nimport { TrackingSettingsTheme, TrackingItemStatus } from '../../tracking-settings-enums';\r\nimport { Text } from '../../../text';\r\nimport { DataSignature } from '../DataWrapper/data-wrapper';\r\n\r\ninterface TreeCollapseProps {\r\n handleUpdateData: (e: DataSignature) => void;\r\n handleSaveOnChange?: (data: DataSignature, e?: HTMLInputElement) => void;\r\n organisationId?: string;\r\n category: any;\r\n categoryIndex: number;\r\n data: DataSignature;\r\n dataIndex: number;\r\n dropdownData?: SelectFieldOptions;\r\n dataItem: any;\r\n isTreeExpanded: boolean;\r\n showAbbreviations?: boolean;\r\n editAbbreviationFunction?: (organisationId: string, dataItemId: string, categoryName: string) => void;\r\n theme?: TrackingSettingsTheme;\r\n filterValue?: any;\r\n}\r\n\r\ninterface ListColumnProps {\r\n alignRight?: boolean;\r\n dropdownData?: SelectFieldOptions;\r\n}\r\n\r\ninterface TrackingListItemProps {\r\n isArchived?: boolean;\r\n}\r\n\r\ninterface CategoryTitleWrapperProps {\r\n dropdownData?: SelectFieldOptions;\r\n}\r\n\r\nexport const TrackingList = styled.ul`\r\n padding-bottom: ${SPACING.MEDIUM};\r\n`;\r\n\r\nexport const TrackingListItem = styled.li`\r\n display: flex;\r\n padding: ${SPACING.XX_SMALL} ${SPACING.MEDIUM} ${SPACING.XX_SMALL} 28px;\r\n background-color: ${(props) => (props.isArchived ? COLOR.LEGACY.DATAGRID_ARCHIVED_BG : 'none')};\r\n`;\r\n\r\nconst budgetColumnWidth = '145px';\r\n\r\nexport const TrackingListColumn = styled.div`\r\n width: ${(props) =>\r\n props.dropdownData && props.dropdownData.length > 0\r\n ? props.alignRight\r\n ? `calc(${budgetColumnWidth} + ${SPACING.MEDIUM})`\r\n : `calc(100% - ${budgetColumnWidth} - ${SPACING.MEDIUM})`\r\n : '100%'};\r\n display: flex;\r\n align-items: center;\r\n justify-content: ${(props) => (props.alignRight ? 'flex-end' : 'flex-start')};\r\n`;\r\n\r\nconst StyledTextLabel = styled.span`\r\n &&& {\r\n display: flex;\r\n margin-left: 0;\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n font-weight: 700;\r\n color: ${COLOR.MAIN.LABEL_TEXT};\r\n opacity: 1;\r\n justify-content: flex-end;\r\n flex-grow: 1;\r\n margin-right: 90px;\r\n }\r\n`;\r\n\r\nconst StyledCheckbox = styled.input`\r\n margin: 2px 6px 2px 4px;\r\n`;\r\n\r\nconst StyledLabel = styled.label`\r\n &&& {\r\n color: ${COLOR.MAIN.LABEL_TEXT};\r\n display: inline;\r\n font-size: ${FONT_SIZE.SMALL};\r\n font-weight: 400;\r\n line-height: ${FONT_SIZE.LARGE};\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n }\r\n`;\r\n\r\nconst EditButton = styled.button`\r\n min-width: 0px;\r\n border: 1px solid transparent;\r\n border-radius: 15px;\r\n background-color: transparent;\r\n padding: ${SPACING.SMALL};\r\n margin-left: ${SPACING.SMALL};\r\n cursor: pointer;\r\n transition: border-color ${SPEED.TRANSITION}, background-color ${SPEED.TRANSITION};\r\n\r\n &:hover {\r\n border-color: ${transparentize(0.8, COLOR.MAIN.LABEL_TEXT)};\r\n background-color: ${transparentize(0.85, COLOR.MAIN.LABEL_TEXT)};\r\n }\r\n`;\r\n\r\nconst StyledEdit = styled(Edit)`\r\n width: 13px;\r\n height: 13px;\r\n fill: ${COLOR.MAIN.LABEL_TEXT};\r\n`;\r\n\r\nconst NoResultsFound = styled(Text)`\r\n margin-bottom: 0;\r\n`;\r\n\r\nconst StyledCheckBoxInput = styled(CheckboxInput)`\r\n min-width: 0px;\r\n`;\r\n\r\nconst CategoryCounter = styled.span`\r\n margin-left: ${SPACING.SMALL};\r\n white-space: nowrap;\r\n min-width: 0px;\r\n font-size: ${FONT_SIZE.X_SMALL};\r\n font-weight: 400;\r\n`;\r\n\r\nconst CategoryTitleWrapper = styled.div`\r\n width: ${(props) => (props.dropdownData && props.dropdownData.length ? '50%' : '100%')};\r\n display: inline-flex;\r\n align-items: center;\r\n`;\r\n\r\nconst regexString = /[^\\w-_]/g;\r\nconst lowerKebab = (value: string): string => value.replace(regexString, '-').toLowerCase();\r\n\r\nconst TreeCollapseWrapper = ({\r\n data,\r\n dataItem,\r\n dataIndex,\r\n category,\r\n categoryIndex,\r\n filterValue,\r\n isTreeExpanded,\r\n handleUpdateData,\r\n handleSaveOnChange,\r\n organisationId,\r\n dropdownData,\r\n showAbbreviations,\r\n editAbbreviationFunction,\r\n theme,\r\n}: TreeCollapseProps) => {\r\n const [itemsSelected, setItemsSelected] = useState(0);\r\n const [totalCount, setTotalCount] = useState(0);\r\n const handleParentCheckbox = (category: any, e: any) => {\r\n let count = 0;\r\n const tempTrackingData = { ...data };\r\n tempTrackingData.dataSources.forEach((dataItem: any, i: number) => {\r\n dataItem.categories.forEach((dataCategory: any, j: number) => {\r\n if (dataCategory === category) {\r\n tempTrackingData.dataSources[i].categories[j].items.forEach((catItem: any) => {\r\n if (\r\n tempTrackingData.hideArchivedTracking &&\r\n catItem.trackingItemStatusCode === TrackingItemStatus.Archived\r\n ) {\r\n return;\r\n } else {\r\n catItem.isShown = e.target.checked;\r\n if (e.target.checked) {\r\n count += 1;\r\n } else {\r\n count = 0;\r\n }\r\n }\r\n });\r\n }\r\n });\r\n });\r\n if (handleSaveOnChange) handleSaveOnChange(tempTrackingData, e.target);\r\n handleUpdateData(tempTrackingData);\r\n setItemsSelected(count);\r\n };\r\n\r\n const checkParentCheckboxState = useCallback(\r\n (hideArchivedTracking: any) => {\r\n let count = 0;\r\n const categoryCheckboxId = `checkbox__${lowerKebab(dataItem.name)}-category-${lowerKebab(category.name)}`;\r\n const categoryCheckboxElement = document.getElementById(categoryCheckboxId);\r\n const checkedValues: boolean[] = [];\r\n\r\n category.items.forEach((item: any) => {\r\n if (hideArchivedTracking && item.trackingItemStatusCode === TrackingItemStatus.Archived) {\r\n return;\r\n } else {\r\n checkedValues.push(item.isShown);\r\n if (item.isShown === true) {\r\n count += 1;\r\n }\r\n }\r\n });\r\n setItemsSelected(count);\r\n\r\n let firstValue = false;\r\n // loop over each array index\r\n for (let i = 0; checkedValues.length > i; i += 1) {\r\n if (i === 0) {\r\n // set first item to check against\r\n firstValue = checkedValues[0];\r\n // next item to check\r\n } else {\r\n // if its different to the firstValue, set indeterminate\r\n if (firstValue !== checkedValues[i]) {\r\n // set indeterminate\r\n if (categoryCheckboxElement) {\r\n // @ts-ignore\r\n categoryCheckboxElement.indeterminate = true;\r\n break;\r\n }\r\n // if first item is the same, set to true\r\n } else if (firstValue && firstValue === checkedValues[i]) {\r\n // set true\r\n if (categoryCheckboxElement) {\r\n // @ts-ignore\r\n categoryCheckboxElement.indeterminate = false;\r\n }\r\n // otherwise set false\r\n } else if (!firstValue && firstValue === checkedValues[i]) {\r\n // set false\r\n if (categoryCheckboxElement) {\r\n // @ts-ignore\r\n categoryCheckboxElement.indeterminate = false;\r\n }\r\n }\r\n }\r\n }\r\n if (categoryCheckboxElement) {\r\n // @ts-ignore\r\n categoryCheckboxElement.checked = count === checkedValues.length;\r\n }\r\n },\r\n [category.items, category.name, dataItem.name],\r\n );\r\n\r\n const countTotal = useCallback(() => {\r\n if (data.hideArchivedTracking) {\r\n let counter = 0;\r\n category.items.forEach((item: any) => {\r\n if (item.trackingItemStatusCode !== TrackingItemStatus.Archived) {\r\n counter += 1;\r\n }\r\n });\r\n setTotalCount(counter);\r\n } else {\r\n setTotalCount(category.items.length);\r\n }\r\n }, [category.items, data.hideArchivedTracking]);\r\n\r\n const handleCheckbox = (event: any, dataIndex: number, categoryIndex: number) => {\r\n const tempTrackingData = { ...data };\r\n tempTrackingData.dataSources[dataIndex].categories[categoryIndex].items.forEach((item: any) => {\r\n if (item.id === event.id) {\r\n item.isShown = !item.isShown;\r\n }\r\n });\r\n\r\n checkParentCheckboxState(data.hideArchivedTracking);\r\n\r\n if (handleSaveOnChange) handleSaveOnChange(tempTrackingData, event.target);\r\n handleUpdateData(tempTrackingData);\r\n };\r\n\r\n const handleBudgetDropdown = (event: any, itemId: string, dataIndex: number, categoryIndex: number) => {\r\n const tempTrackingData = { ...data };\r\n const option = tempTrackingData.dataSources[dataIndex].categories[categoryIndex].items.find(\r\n (x: { id: string }) => x.id === itemId,\r\n );\r\n if (!option) return;\r\n option.budget = event.target.value;\r\n // tslint:disable-next-line:no-unused-expression\r\n if (handleSaveOnChange) handleSaveOnChange(tempTrackingData, event.target);\r\n handleUpdateData(tempTrackingData);\r\n };\r\n\r\n const handleAbbreviationButton = () => {\r\n if (editAbbreviationFunction && organisationId) {\r\n editAbbreviationFunction(organisationId, dataItem.id, category.id);\r\n }\r\n };\r\n\r\n const filteredList = category.items.filter((item: any) => {\r\n if (filterValue.startsWith(' ')) {\r\n return item.name;\r\n } else {\r\n return item.name.toLowerCase().includes(filterValue);\r\n }\r\n });\r\n\r\n React.useEffect(() => {\r\n checkParentCheckboxState(data.hideArchivedTracking);\r\n countTotal();\r\n }, [data, checkParentCheckboxState, countTotal]);\r\n\r\n return (\r\n \r\n \r\n handleParentCheckbox(category, e)}\r\n labelMaxWidth={dropdownData && dropdownData.length > 0 ? '15vw' : 'none'}\r\n labelOverflow={'hidden'}\r\n labelTextOverflow={'ellipsis'}\r\n />\r\n {`(${itemsSelected} of ${totalCount})`}\r\n {showAbbreviations && (\r\n \r\n \r\n \r\n )}\r\n \r\n {dropdownData && dropdownData.length ? (\r\n \r\n Budgets\r\n \r\n ) : null}\r\n \r\n }\r\n >\r\n \r\n {filteredList.length > 0 ? (\r\n filteredList\r\n .sort((a: any, b: any) => (a.name > b.name ? 1 : -1))\r\n .map((item: any) => (\r\n \r\n {item.trackingItemStatusCode === TrackingItemStatus.Archived &&\r\n data.hideArchivedTracking ? null : (\r\n \r\n \r\n handleCheckbox(item, dataIndex, categoryIndex)}\r\n disabled={\r\n item.trackingItemStatusCode === TrackingItemStatus.Archived &&\r\n data.hideArchivedTracking\r\n }\r\n />\r\n \r\n {item.name}\r\n \r\n \r\n {dropdownData && dropdownData.length ? (\r\n \r\n \r\n handleBudgetDropdown(e, item.id, dataIndex, categoryIndex)\r\n }\r\n name={'budget'}\r\n dataId={`dropdown__${lowerKebab(\r\n dataItem.name,\r\n )}-category-${lowerKebab(category.name)}--${lowerKebab(item.name)}`}\r\n options={dropdownData}\r\n placeholder={'-'}\r\n disabled={!item.isShown}\r\n value={item.budget || ''}\r\n emphasize\r\n minWidth={'130px'}\r\n maxWidth={'130px'}\r\n />\r\n \r\n ) : null}\r\n \r\n )}\r\n \r\n ))\r\n ) : (\r\n
  • \r\n \r\n No results found.\r\n \r\n
  • \r\n )}\r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default TreeCollapseWrapper;\r\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nimport * as React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nimport { ButtonAsText } from '../../../button';\r\nimport TreeCollapseWrapper from '../TreeCollapseWrapper/tree-collapse-wrapper';\r\nimport { DataSourceNames, TrackingSettingsTheme } from '../../tracking-settings-enums';\r\nimport { COLOR, FONT_SIZE, SPACING } from '../../../../packages/constants';\r\nimport XeroLogoGenericRound from '../../../../packages/icons/xero-logo-generic-round';\r\nimport QuickbooksLogoGenericRound from '../../../../packages/icons/quickbooks-logo-generic-round';\r\nimport MyobLogoGenericRound from '../../../../packages/icons/myob-logo-generic-round';\r\nimport SageLogoGenericRound from '../../../../packages/icons/sage-logo-generic-round';\r\nimport { SearchFilter } from '../../../search-filter/search-filter';\r\nimport { useEffect, useRef, useState } from 'react';\r\n\r\ninterface CategoryItem {\r\n id: string;\r\n name: string;\r\n isShown: boolean;\r\n budget?: string;\r\n trackingItemStatusCode?: string;\r\n}\r\n\r\ninterface Category {\r\n id: string;\r\n name: string;\r\n items: CategoryItem[];\r\n}\r\n\r\ninterface TrackedBudget {\r\n name: string;\r\n value: string;\r\n}\r\n\r\nexport interface DataSource {\r\n id: string;\r\n dataSourceTypeCode: string;\r\n name: string;\r\n hasTracking?: boolean;\r\n orderPriority?: number;\r\n categories: Category[];\r\n budgets?: TrackedBudget[];\r\n}\r\n\r\ninterface BuildCategoryData {\r\n dataSource: DataSource;\r\n categoryBuilder: (c: Category, i: number) => React.ReactElement;\r\n}\r\n\r\nexport interface DataSignature {\r\n dataSources: DataSource[];\r\n hideArchivedTracking: boolean;\r\n displayUnselectedTrackingItems?: boolean;\r\n}\r\n\r\nexport interface DataWrapperProps {\r\n handleUpdateData: (e: DataSignature) => void;\r\n data: DataSignature;\r\n dataIndex: number;\r\n dataItem: DataSource;\r\n dropdownData?: {\r\n name: string;\r\n value: string;\r\n }[];\r\n editAbbreviationFunction?: any;\r\n handleSaveOnChange?: (data: DataSignature, e?: HTMLInputElement) => void;\r\n organisationId?: string;\r\n showAbbreviations?: boolean;\r\n showExpandCollapseAll?: boolean;\r\n showSearchFilter?: boolean;\r\n theme?: TrackingSettingsTheme;\r\n treesExpanded?: boolean;\r\n}\r\n\r\nconst StyledDataSourceWrapper = styled.div`\r\n margin-bottom: ${(props) => (props.theme === TrackingSettingsTheme.DataGrid ? 0 : SPACING.XX_LARGE)};\r\n`;\r\n\r\nconst ButtonWrapper = styled.div`\r\n display: flex;\r\n margin-right: ${SPACING.MEDIUM};\r\n`;\r\n\r\nconst StyledDataWrapper = styled.div`\r\n border: 1px solid\r\n ${(props) =>\r\n props.theme === TrackingSettingsTheme.DataGrid ? COLOR.LEGACY.DATAGRID_BORDER : COLOR.MAIN.MEDIUM_GREY};\r\n border-radius: ${(props) => (props.theme === TrackingSettingsTheme.DataGrid ? '3px 3px 0 0' : 0)};\r\n background-color: ${(props) => (props.theme === TrackingSettingsTheme.DataGrid ? '#fff' : '#f7f9fb')};\r\n padding: ${(props) =>\r\n props.theme === TrackingSettingsTheme.DataGrid ? COLOR.LEGACY.DATAGRID_BORDER : SPACING.MEDIUM};\r\n position: relative;\r\n`;\r\n\r\nconst HeaderWrapper = styled.div`\r\n display: flex;\r\n align-items: center;\r\n padding: ${(props) =>\r\n props.theme === TrackingSettingsTheme.DataGrid ? `8px ${SPACING.MEDIUM}` : `0 0 ${SPACING.MEDIUM}`};\r\n background-image: ${(props) =>\r\n props.theme === TrackingSettingsTheme.DataGrid ? 'linear-gradient(-180deg,#f5f5f5,#f2f1f1)' : 'none'};\r\n box-shadow: ${(props) =>\r\n props.theme === TrackingSettingsTheme.DataGrid ? 'inset 0 1px 0 hsla(0,0%,100%,.5)' : 'none'};\r\n position: relative;\r\n`;\r\n\r\nconst Header = styled.h1`\r\n &&& {\r\n font-size: ${(props) => (props.theme === TrackingSettingsTheme.DataGrid ? '12px' : FONT_SIZE.LARGE)};\r\n line-height: ${(props) => (props.theme === TrackingSettingsTheme.DataGrid ? '16px' : FONT_SIZE.X_LARGE)};\r\n font-weight: 700;\r\n margin: 0 auto 0 ${SPACING.X_SMALL};\r\n overflow: hidden;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\r\n }\r\n`;\r\n\r\nconst StyledWrapper = styled.div`\r\n padding: ${SPACING.SMALL};\r\n`;\r\n\r\nconst StyledParagraph = styled.p`\r\n &&& {\r\n font-size: ${FONT_SIZE.SMALL};\r\n padding: ${SPACING.SMALL};\r\n line-height: ${FONT_SIZE.LARGE};\r\n white-space: normal;\r\n }\r\n`;\r\n\r\nconst StyledOverflow = styled.div`\r\n overflow: auto;\r\n max-height: 60vh;\r\n`;\r\n\r\nconst StyledSearchFilter = styled(SearchFilter)`\r\n position: ${(props) => (props.theme === TrackingSettingsTheme.DataGrid ? 'absolute' : 'static')};\r\n top: ${(props) => (props.theme === TrackingSettingsTheme.DataGrid ? '3px' : undefined)};\r\n right: ${(props) => (props.theme === TrackingSettingsTheme.DataGrid ? '3px' : undefined)};\r\n\r\n button {\r\n min-height: ${(props) => (props.theme === TrackingSettingsTheme.DataGrid ? '28px' : undefined)};\r\n }\r\n\r\n svg {\r\n height: ${(props) => (props.theme === TrackingSettingsTheme.DataGrid ? '11px' : undefined)};\r\n width: ${(props) => (props.theme === TrackingSettingsTheme.DataGrid ? '11px' : undefined)};\r\n }\r\n`;\r\n\r\nconst BuildLogo = ({ name }: any) => {\r\n if (name === DataSourceNames.Xero) {\r\n return ;\r\n } else if (name === DataSourceNames.Quickbooks || name === DataSourceNames.QuickBooksDesktop) {\r\n return ; //Replace with a new icon which is wider having the word 'Quickbooks'\r\n } else if (name === DataSourceNames.MyobAccountRight || name === DataSourceNames.MyobAccountRightDesktop) {\r\n return ;\r\n } else if (name === DataSourceNames.Sage50Desktop) {\r\n return ;\r\n } else {\r\n return null;\r\n }\r\n};\r\n\r\nconst BuildContent = ({ dataSource, categoryBuilder }: BuildCategoryData) => {\r\n if (!dataSource.hasTracking) {\r\n return (\r\n \r\n No tracking category data has been imported.\r\n \r\n To import tracking category data, please navigate to the import screen and select the tracking\r\n checkboxes before importing.\r\n \r\n \r\n );\r\n } else if (!dataSource.categories || dataSource.categories.length == 0) {\r\n return (\r\n \r\n \r\n Tracking category data has not been enabled in your accounting system and therefore cannot be\r\n imported into Spotlight.\r\n \r\n \r\n );\r\n } else {\r\n return (\r\n \r\n {dataSource.categories\r\n .sort((a: Category, b: Category) => (a.name > b.name ? 1 : -1))\r\n .map(categoryBuilder)}\r\n \r\n );\r\n }\r\n};\r\n\r\nconst DataWrapper = ({\r\n data,\r\n dropdownData,\r\n dataItem,\r\n dataIndex,\r\n editAbbreviationFunction,\r\n handleUpdateData,\r\n handleSaveOnChange,\r\n organisationId,\r\n showAbbreviations,\r\n showExpandCollapseAll,\r\n showSearchFilter,\r\n theme,\r\n treesExpanded,\r\n}: DataWrapperProps): JSX.Element => {\r\n const [isTreeExpanded, setTreeExpand] = useState(false);\r\n const filterInputRef = useRef(null);\r\n const [filterValue, setFilterValue] = useState('');\r\n\r\n const buildCategory = (category: Category, categoryIndex: number) => (\r\n \r\n );\r\n\r\n const handleFilterChange = (e: any) => {\r\n setFilterValue(e.target.value.toLowerCase());\r\n };\r\n\r\n const handleClearButton = () => {\r\n setFilterValue('');\r\n if (filterInputRef.current) {\r\n filterInputRef.current.focus();\r\n }\r\n };\r\n\r\n // TODO: improve this\r\n // This parent component sets the state to all of the tree components - to be collapsed or expanded.\r\n // If user collapses a tree component, this parent component still thinks it's open\r\n // This code below forces all to be expanded (true) then sets them to collapsed (false)\r\n const handleCollapseAll = () => {\r\n setTreeExpand(true);\r\n setTimeout(() => {\r\n setTreeExpand(false);\r\n }, 0);\r\n };\r\n\r\n // TODO: improve this\r\n const handleExpandAll = () => {\r\n setTreeExpand(false);\r\n setTimeout(() => {\r\n setTreeExpand(true);\r\n }, 0);\r\n };\r\n\r\n useEffect(() => {\r\n if (treesExpanded) setTreeExpand(treesExpanded);\r\n }, [treesExpanded]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n
    \r\n {dataItem.name}\r\n
    \r\n {showExpandCollapseAll && (\r\n \r\n \r\n Expand all\r\n \r\n \r\n Collapse all\r\n \r\n \r\n )}\r\n {showSearchFilter && (\r\n \r\n )}\r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default DataWrapper;\r\n","import * as React from 'react';\r\n\r\nimport styled, { ThemeProvider } from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, SPACING, THEME } from '../../packages/constants';\r\nimport { CircleWithX, CircledTick } from '../../packages/icons';\r\nimport { Button, ButtonGroup } from '../button';\r\nimport { CheckboxInput } from '../checkbox-input';\r\nimport { Text } from '../text';\r\nimport DataWrapper, { DataSource } from './atoms/DataWrapper/data-wrapper';\r\nimport { DataSignature } from './atoms/DataWrapper/data-wrapper';\r\nimport { TrackingSettingsTheme } from './tracking-settings-enums';\r\n\r\nexport interface TrackingSettingsProps {\r\n data: DataSignature;\r\n dataId: string;\r\n handleSaveButton: (data: DataSignature, e?: HTMLInputElement) => void;\r\n editAbbreviationFunction?: any;\r\n organisationId?: string;\r\n saveOnChange?: boolean;\r\n saveButtonLoading?: boolean;\r\n saveResponse?: { status: string; message: string };\r\n showAbbreviations?: boolean;\r\n showExpandCollapseAll?: boolean;\r\n showSearchFilter?: boolean;\r\n showSingleDataSource?: string;\r\n theme?: TrackingSettingsTheme;\r\n treesExpanded?: boolean;\r\n isLoading?: boolean;\r\n}\r\n\r\nconst LoadingState = styled.div`\r\n position: absolute;\r\n background: rgba(0, 0, 0, 0.14);\r\n height: 100%;\r\n width: 100%;\r\n z-index: 1000;\r\n`;\r\n\r\nconst StyledTrackingSettings = styled.div``;\r\n\r\nconst StyledInner = styled.div`\r\n margin-bottom: ${SPACING.X_LARGE};\r\n position: relative;\r\n`;\r\n\r\nconst IconError = styled(CircleWithX)`\r\n fill: ${COLOR.PRIMARY.RED};\r\n height: 18px;\r\n width: 18px;\r\n margin-right: ${SPACING.X_SMALL};\r\n`;\r\n\r\nconst IconSuccess = styled(CircledTick)`\r\n fill: ${COLOR.PRIMARY.GREEN};\r\n height: 18px;\r\n width: 18px;\r\n margin-right: ${SPACING.X_SMALL};\r\n`;\r\n\r\nconst Message = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n`;\r\n\r\nconst Footer = styled.div`\r\n display: flex;\r\n border: ${(props) =>\r\n props.theme === TrackingSettingsTheme.DataGrid ? `1px solid ${COLOR.LEGACY.DATAGRID_BORDER}` : 0};\r\n border-top: 0;\r\n border-radius: ${(props) => (props.theme === TrackingSettingsTheme.DataGrid ? `0 0 3px 3px ` : 0)};\r\n padding: ${(props) =>\r\n props.theme === TrackingSettingsTheme.DataGrid ? `8px ${SPACING.MEDIUM}` : `0 0 ${SPACING.MEDIUM}`};\r\n background-image: ${(props) =>\r\n props.theme === TrackingSettingsTheme.DataGrid ? 'linear-gradient(-180deg,#f5f5f5,#f2f1f1)' : 'none'};\r\n box-shadow: ${(props) =>\r\n props.theme === TrackingSettingsTheme.DataGrid ? 'inset 0 1px 0 hsla(0,0%,100%,.5)' : 'none'};\r\n font-size: ${(props) => (props.theme === TrackingSettingsTheme.DataGrid ? '12px' : FONT_SIZE.LARGE)};\r\n line-height: ${(props) => (props.theme === TrackingSettingsTheme.DataGrid ? '16px' : FONT_SIZE.X_LARGE)};\r\n font-weight: 400;\r\n`;\r\n\r\nconst StyledCheckboxListItem = styled.li`\r\n padding: 2px;\r\n`;\r\n\r\nexport const TrackingSettings = ({\r\n data,\r\n dataId,\r\n editAbbreviationFunction,\r\n handleSaveButton,\r\n organisationId,\r\n saveButtonLoading,\r\n saveOnChange,\r\n saveResponse,\r\n showAbbreviations,\r\n showExpandCollapseAll = true,\r\n showSearchFilter,\r\n showSingleDataSource,\r\n theme,\r\n treesExpanded,\r\n isLoading,\r\n ...props\r\n}: TrackingSettingsProps) => {\r\n const [isDisabled, setDisabled] = React.useState(true);\r\n const [showMessage, setShowMessage] = React.useState(true);\r\n const [trackingData, setTrackingData] = React.useState(data);\r\n\r\n React.useEffect(() => {\r\n setTrackingData(data);\r\n }, [data]);\r\n\r\n const updateData = (dataToUpdate: DataSignature) => {\r\n setTrackingData(dataToUpdate);\r\n setDisabled(false);\r\n setShowMessage(false);\r\n };\r\n\r\n const handleHideArchived = () => {\r\n const trackingDataCopy = { ...trackingData };\r\n trackingDataCopy.hideArchivedTracking = !trackingDataCopy.hideArchivedTracking;\r\n updateData(trackingDataCopy);\r\n if (saveOnChange) handleSaveButton(trackingDataCopy, undefined);\r\n };\r\n\r\n const handleDisplayUnselectedTrackingItems = () => {\r\n const trackingDataCopy = { ...trackingData };\r\n trackingDataCopy.displayUnselectedTrackingItems = !trackingDataCopy.displayUnselectedTrackingItems;\r\n updateData(trackingDataCopy);\r\n if (saveOnChange) handleSaveButton(trackingDataCopy, undefined);\r\n };\r\n\r\n React.useEffect(() => {\r\n if (!saveButtonLoading) {\r\n setDisabled(true);\r\n }\r\n\r\n if (saveResponse) {\r\n setShowMessage(true);\r\n\r\n if (saveResponse.status === 'ERROR') {\r\n setDisabled(false);\r\n }\r\n }\r\n }, [saveButtonLoading, saveResponse]);\r\n\r\n React.useEffect(() => {\r\n if (!showSingleDataSource) {\r\n const trackingDataCopy = { ...trackingData };\r\n trackingDataCopy.dataSources.sort((a, b) =>\r\n a.orderPriority && b.orderPriority && a.orderPriority > b.orderPriority ? 1 : -1,\r\n );\r\n setTrackingData(trackingDataCopy);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [showSingleDataSource]);\r\n\r\n React.useEffect(() => {\r\n if (showSingleDataSource) {\r\n setTrackingData({\r\n dataSources: data.dataSources.filter((obj: DataSource) => obj.id === showSingleDataSource),\r\n hideArchivedTracking: trackingData.hideArchivedTracking,\r\n displayUnselectedTrackingItems: trackingData.displayUnselectedTrackingItems,\r\n });\r\n }\r\n }, [\r\n showSingleDataSource,\r\n data.dataSources,\r\n trackingData.hideArchivedTracking,\r\n trackingData.displayUnselectedTrackingItems,\r\n ]);\r\n\r\n const hasTracking = trackingData.dataSources.some((d) => d.hasTracking && d.categories && d.categories.length > 0);\r\n\r\n return (\r\n \r\n \r\n \r\n {isLoading && }\r\n {saveOnChange\r\n ? trackingData.dataSources.map((dataItem: DataSource, dataIndex: number) => (\r\n \r\n a.name.toLowerCase().localeCompare(b.name.toLowerCase()),\r\n )\r\n : []\r\n }\r\n dataIndex={dataIndex}\r\n dataItem={dataItem}\r\n handleUpdateData={updateData}\r\n handleSaveOnChange={handleSaveButton}\r\n treesExpanded={treesExpanded}\r\n organisationId={organisationId}\r\n showAbbreviations={showAbbreviations}\r\n editAbbreviationFunction={editAbbreviationFunction}\r\n theme={theme}\r\n />\r\n ))\r\n : trackingData.dataSources.map((dataItem: DataSource, dataIndex: number) => (\r\n \r\n a.name.toLowerCase().localeCompare(b.name.toLowerCase()),\r\n )\r\n : []\r\n }\r\n dataIndex={dataIndex}\r\n dataItem={dataItem}\r\n handleUpdateData={updateData}\r\n treesExpanded={treesExpanded}\r\n organisationId={organisationId}\r\n showAbbreviations={showAbbreviations}\r\n editAbbreviationFunction={editAbbreviationFunction}\r\n theme={theme}\r\n />\r\n ))}\r\n {hasTracking && (\r\n
    \r\n
      \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
    \r\n
    \r\n )}\r\n
    \r\n {!saveOnChange && (\r\n \r\n handleSaveButton(trackingData, undefined)}\r\n loading={saveButtonLoading}\r\n >\r\n Save\r\n \r\n {saveResponse && showMessage && (\r\n \r\n {saveResponse.status === 'ERROR' && }\r\n {saveResponse.status === 'SUCCESS' && }\r\n \r\n {saveResponse.message}\r\n \r\n \r\n )}\r\n \r\n )}\r\n
    \r\n
    \r\n );\r\n};\r\n","import * as React from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nexport interface TabButtonGroupProps {\r\n children: React.ReactNode;\r\n}\r\n\r\nconst StyledTabButtonGroup = styled.ul`\r\n list-style-type: none;\r\n > li {\r\n display: inline-block;\r\n }\r\n > li:not(:first-child) > button {\r\n border-left: none;\r\n }\r\n > li:first-child > button {\r\n border-radius: 3px 0px 0px 0px;\r\n }\r\n > li:last-child > button {\r\n border-radius: 0px 3px 0px 0px;\r\n }\r\n`;\r\n\r\nexport const TabButtonGroup = React.forwardRef(({ children, ...props }, ref) => (\r\n \r\n {children}\r\n \r\n));\r\nTabButtonGroup.displayName = 'TabButtonGroup';\r\n","import * as React from 'react';\r\n\r\nimport { darken } from 'polished';\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE } from '../../../../packages/constants';\r\n\r\nexport interface TabButtonProps {\r\n onClick?: (e: any) => void;\r\n dataId: string;\r\n children: React.ReactNode;\r\n selected: boolean;\r\n value: string;\r\n}\r\n\r\nconst StyledTabButton = styled.button.attrs(({ dataId }) => ({\r\n 'data-test-id': dataId,\r\n}))`\r\n border: 2px solid ${COLOR.MAIN.MEDIUM_GREY};\r\n padding: 9px 12px;\r\n font-size: ${FONT_SIZE.SMALL};\r\n font-weight: 700;\r\n line-height: 1.2;\r\n background-color: ${(props) => (props.selected ? COLOR.PRIMARY.WHITE : darken(0.05, COLOR.PRIMARY.WHITE))};\r\n color: ${COLOR.PRIMARY.BLACK};\r\n cursor: pointer;\r\n`;\r\n\r\nexport const TabButton = React.forwardRef(({ children, ...props }, ref) => (\r\n \r\n {children}\r\n \r\n));\r\nTabButton.displayName = 'TabButton';\r\n","import * as React from 'react';\r\n\r\nimport { darken, transparentize } from 'polished';\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, RADIUS, SPACING } from '../../packages/constants';\r\n\r\nexport interface PasswordInputProps {\r\n autoComplete?: string;\r\n autoFocus?: boolean;\r\n dataId: string;\r\n defaultValue?: string | string[];\r\n disabled?: boolean;\r\n id: string;\r\n invalid?: boolean;\r\n maxLength?: number;\r\n minLength?: number;\r\n pattern?: string;\r\n readOnly?: boolean;\r\n name: string;\r\n onChange?: (e: any) => void;\r\n placeholder?: string;\r\n required?: boolean;\r\n value?: string | string[] | number;\r\n className?: string;\r\n}\r\n\r\ninterface StyledInputProps {\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n}\r\n\r\nconst StyledInput = styled.input`\r\n background-color: ${(props: StyledInputProps): string =>\r\n props.disabled ? darken('0.1', COLOR.PRIMARY.WHITE) : COLOR.PRIMARY.WHITE};\r\n color: ${(props: StyledInputProps): string =>\r\n props.disabled ? transparentize('0.5', COLOR.PRIMARY.BLACK) : COLOR.PRIMARY.BLACK};\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n padding: ${SPACING.SMALL};\r\n border-width: 1px;\r\n border-style: solid;\r\n border-color: ${(props: StyledInputProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.FORM_FIELD)};\r\n border-radius: ${RADIUS.DEFAULT};\r\n\r\n &::placeholder {\r\n opacity: 0.65;\r\n }\r\n`;\r\n\r\nexport const PasswordInput = React.forwardRef(\r\n (\r\n {\r\n autoComplete,\r\n autoFocus,\r\n dataId,\r\n defaultValue,\r\n disabled,\r\n id,\r\n invalid,\r\n maxLength,\r\n minLength,\r\n pattern,\r\n readOnly,\r\n name,\r\n placeholder,\r\n required,\r\n value,\r\n onChange,\r\n },\r\n ref,\r\n ) => {\r\n return (\r\n \r\n );\r\n },\r\n);\r\nPasswordInput.displayName = 'PasswordInput';\r\n","import * as React from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, SPACING } from '../../packages/constants';\r\nimport { HelperModal, QuestionMark } from '../helper-modal';\r\nimport { PasswordInput } from '../password-input';\r\n\r\nexport interface PasswordFieldProps {\r\n dataId: string;\r\n label: string;\r\n id: string;\r\n name: string;\r\n autofocus?: boolean;\r\n defaultValue?: string;\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n hasHelper?: boolean;\r\n helperContent?: React.ReactNode;\r\n numeralsOnly?: boolean;\r\n placeholder?: string;\r\n value?: string;\r\n onChange?: (e: any) => void;\r\n maxLength?: number;\r\n minLength?: number;\r\n pattern?: string;\r\n readOnly?: boolean;\r\n required?: boolean;\r\n thinLabel?: boolean;\r\n className?: string;\r\n}\r\n\r\ninterface StyledTextLabelProps {\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n thinLabel?: boolean;\r\n}\r\n\r\nconst wrapperStyles = `\r\n display: flex;\r\n flex-direction: column;\r\n`;\r\n\r\nconst Wrapper = styled.label`\r\n ${wrapperStyles}\r\n`;\r\n\r\nconst WrapperHasHelper = styled.div`\r\n ${wrapperStyles}\r\n`;\r\n\r\nconst StyledLabelWrapper = styled.div`\r\n display: inline-flex;\r\n`;\r\n\r\nconst StyledTextLabel = styled.span`\r\n display: block;\r\n padding-bottom: ${SPACING.XX_SMALL};\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n font-weight: ${(props: StyledTextLabelProps): string => (props.thinLabel ? '400' : '700')};\r\n color: ${(props: StyledTextLabelProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.LABEL_TEXT)};\r\n opacity: ${(props: StyledTextLabelProps): string => (props.disabled ? '0.7' : '1')};\r\n`;\r\n\r\nconst StyledLabelHasHelper = styled.label`\r\n display: inline-block;\r\n margin-right: ${SPACING.X_SMALL};\r\n padding-bottom: ${SPACING.XX_SMALL};\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n font-weight: ${(props: StyledTextLabelProps): string => (props.thinLabel ? '400' : '700')};\r\n color: ${(props: StyledTextLabelProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.LABEL_TEXT)};\r\n opacity: ${(props: StyledTextLabelProps): string => (props.disabled ? '0.7' : '1')};\r\n`;\r\n\r\nexport const PasswordField = React.forwardRef(\r\n (\r\n {\r\n dataId,\r\n label,\r\n id,\r\n hasHelper,\r\n helperContent,\r\n placeholder,\r\n name,\r\n autofocus,\r\n defaultValue,\r\n disabled,\r\n invalid,\r\n onChange,\r\n maxLength,\r\n minLength,\r\n pattern,\r\n readOnly,\r\n required,\r\n thinLabel,\r\n value,\r\n className,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n return hasHelper ? (\r\n \r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n );\r\n },\r\n);\r\nPasswordField.displayName = 'PasswordField';\r\n","import * as React from 'react';\r\n\r\nimport { darken, transparentize } from 'polished';\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, RADIUS, SPACING } from '../../packages/constants';\r\n\r\nexport interface NumberInputProps {\r\n autoComplete?: string;\r\n autoFocus?: boolean;\r\n dataId: string;\r\n defaultValue?: string | string[];\r\n disabled?: boolean;\r\n id: string;\r\n invalid?: boolean;\r\n max?: number | string;\r\n min?: number | string;\r\n name: string;\r\n onChange?: (e: any) => void;\r\n onBlur?: (e: any) => void;\r\n placeholder?: string;\r\n required?: boolean;\r\n step?: number | string;\r\n value?: string | string[] | number;\r\n className?: string;\r\n ariaLabel?: string;\r\n}\r\n\r\ninterface StyledInputProps {\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n}\r\n\r\nconst StyledInput = styled.input`\r\n background-color: ${(props: StyledInputProps): string =>\r\n props.disabled ? darken('0.1', COLOR.PRIMARY.WHITE) : COLOR.PRIMARY.WHITE};\r\n color: ${(props: StyledInputProps): string =>\r\n props.disabled ? transparentize('0.5', COLOR.PRIMARY.BLACK) : COLOR.PRIMARY.BLACK};\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n padding: ${SPACING.SMALL};\r\n border-width: 1px;\r\n border-style: solid;\r\n border-color: ${(props: StyledInputProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.FORM_FIELD)};\r\n border-radius: ${RADIUS.DEFAULT};\r\n\r\n &::placeholder {\r\n opacity: 0.65;\r\n }\r\n`;\r\n\r\nexport const NumberInput = React.forwardRef(\r\n (\r\n {\r\n autoComplete,\r\n autoFocus,\r\n dataId,\r\n defaultValue,\r\n disabled,\r\n id,\r\n invalid,\r\n max,\r\n min,\r\n name,\r\n placeholder,\r\n required,\r\n step,\r\n value,\r\n onChange,\r\n onBlur,\r\n ariaLabel,\r\n },\r\n ref,\r\n ) => {\r\n return (\r\n \r\n );\r\n },\r\n);\r\nNumberInput.displayName = 'NumberInput';\r\n","import * as React from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, SPACING } from '../../packages/constants';\r\nimport { HelperModal, QuestionMark } from '../helper-modal';\r\nimport { NumberInput, NumberInputProps } from '../number-input';\r\n\r\nexport interface NumberFieldProps extends Omit {\r\n hasHelper?: boolean;\r\n helperContent?: React.ReactNode;\r\n label: string;\r\n validationMessage?: string;\r\n thinLabel?: boolean;\r\n}\r\n\r\ninterface StyledTextLabelProps {\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n thinLabel?: boolean;\r\n}\r\n\r\nconst wrapperStyles = `\r\n display: flex;\r\n flex-direction: column;\r\n`;\r\n\r\nconst Wrapper = styled.label`\r\n ${wrapperStyles}\r\n`;\r\n\r\nconst WrapperHasHelper = styled.div`\r\n ${wrapperStyles}\r\n`;\r\n\r\nconst StyledLabelWrapper = styled.div`\r\n display: inline-flex;\r\n`;\r\n\r\nconst StyledTextLabel = styled.span`\r\n display: block;\r\n padding-bottom: ${SPACING.XX_SMALL};\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n font-weight: ${(props: StyledTextLabelProps): string => (props.thinLabel ? '400' : '700')};\r\n color: ${(props: StyledTextLabelProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.LABEL_TEXT)};\r\n opacity: ${(props: StyledTextLabelProps): string => (props.disabled ? '0.7' : '1')};\r\n`;\r\n\r\nconst StyledLabelHasHelper = styled.label`\r\n display: inline-block;\r\n padding-bottom: ${SPACING.XX_SMALL};\r\n margin-right: ${SPACING.X_SMALL};\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n font-weight: ${(props: StyledTextLabelProps): string => (props.thinLabel ? '400' : '700')};\r\n color: ${(props: StyledTextLabelProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.LABEL_TEXT)};\r\n opacity: ${(props: StyledTextLabelProps): string => (props.disabled ? '0.7' : '1')};\r\n`;\r\n\r\nexport const NumberField = React.forwardRef(\r\n (\r\n {\r\n autoComplete,\r\n autoFocus,\r\n dataId,\r\n defaultValue,\r\n disabled,\r\n hasHelper,\r\n helperContent,\r\n id,\r\n invalid,\r\n label,\r\n max,\r\n min,\r\n name,\r\n placeholder,\r\n required = false,\r\n step,\r\n onChange,\r\n thinLabel,\r\n value,\r\n className,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n return hasHelper ? (\r\n \r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n );\r\n },\r\n);\r\nNumberField.displayName = 'NumberField';\r\n","import * as React from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, SPACING } from '../../packages/constants';\r\nimport { HelperModal, QuestionMark } from '../helper-modal';\r\nimport { NumberInput, NumberInputProps } from '../number-input';\r\n\r\nexport interface NumberFieldInlineProps extends Omit {\r\n hasHelper?: boolean;\r\n helperContent?: React.ReactNode;\r\n label: string;\r\n validationMessage?: string;\r\n thinLabel?: boolean;\r\n labelWidth?: string;\r\n labelAlignment?: 'start' | 'center' | 'end' | undefined;\r\n symbol?: string;\r\n symbolPlacement?: 'before' | 'after' | undefined;\r\n}\r\n\r\nexport interface NumberFieldProps extends Omit {\r\n hasHelper?: boolean;\r\n helperContent?: React.ReactNode;\r\n label: string;\r\n validationMessage?: string;\r\n thinLabel?: boolean;\r\n}\r\n\r\ninterface StyledTextLabelProps {\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n thinLabel?: boolean;\r\n}\r\n\r\ninterface WrapperProps {\r\n labelWidth?: string;\r\n symbolPlacement?: 'before' | 'after' | undefined;\r\n}\r\n\r\ninterface StyledLabelWrapperProps {\r\n labelAlignment: 'start' | 'center' | 'end';\r\n}\r\n\r\ninterface StyledValidationMessageProps {\r\n invalid?: boolean;\r\n symbolPlacement?: 'before' | 'after' | undefined;\r\n}\r\n\r\ninterface StyledSymbolProps {\r\n invalid?: boolean;\r\n symbolPlacement: 'before' | 'after';\r\n}\r\n\r\nconst Wrapper = styled.div`\r\n display: grid;\r\n grid-template-columns:\r\n ${(props: WrapperProps): string => (props.labelWidth ? props.labelWidth : 'auto')}\r\n ${(props: WrapperProps): string => (!props.symbolPlacement ? 'minmax(0, 1fr)' : '')}\r\n ${(props: WrapperProps): string => (props.symbolPlacement === 'before' ? 'auto minmax(0, 1fr)' : '')}\r\n ${(props: WrapperProps): string => (props.symbolPlacement === 'after' ? 'minmax(0, 1fr) auto' : '')};\r\n`;\r\n\r\nconst StyledLabelWrapper = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n align-items: ${(props: StyledLabelWrapperProps): string => props.labelAlignment};\r\n flex-direction: column;\r\n padding-right: ${SPACING.LARGE};\r\n`;\r\n\r\nconst StyledTextLabel = styled.label`\r\n margin-right: ${SPACING.X_SMALL};\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${FONT_SIZE.LARGE};\r\n max-width: 100%;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n font-weight: ${(props: StyledTextLabelProps): string => (props.thinLabel ? '400' : '700')};\r\n color: ${(props: StyledTextLabelProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.LABEL_TEXT)};\r\n opacity: ${(props: StyledTextLabelProps): string => (props.disabled ? '0.7' : '1')};\r\n`;\r\n\r\nconst StyledLabelHasHelper = styled.div`\r\n display: inline-flex;\r\n max-width: 100%;\r\n`;\r\n\r\nconst StyledValidationMessage = styled.div`\r\n font-size: ${FONT_SIZE.X_SMALL};\r\n line-height: ${FONT_SIZE.SMALL};\r\n color: ${(props: StyledValidationMessageProps): string =>\r\n props.invalid ? COLOR.PRIMARY.RED : COLOR.PRIMARY.BLACK};\r\n padding-top: ${SPACING.SMALL};\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n grid-area: ${(props: StyledValidationMessageProps): string => (!props.symbolPlacement ? '2/2' : '')}\r\n ${(props: StyledValidationMessageProps): string => (props.symbolPlacement === 'before' ? '2/3' : '')}\r\n ${(props: StyledValidationMessageProps): string => (props.symbolPlacement === 'after' ? '2/2' : '')};\r\n`;\r\n\r\nconst StyledSymbol = styled.span`\r\n font-size: ${FONT_SIZE.SMALL};\r\n color: ${(props: StyledSymbolProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.PRIMARY.BLACK)};\r\n align-self: center;\r\n margin: ${(props: StyledSymbolProps): string =>\r\n props.symbolPlacement === 'before' ? `0 ${SPACING.SMALL} 0 0` : `0 0 0 ${SPACING.SMALL}`};\r\n`;\r\nexport const NumberFieldInline = React.forwardRef(\r\n (\r\n {\r\n autoComplete,\r\n autoFocus,\r\n dataId,\r\n defaultValue,\r\n disabled,\r\n hasHelper,\r\n helperContent,\r\n id,\r\n invalid,\r\n label,\r\n max,\r\n min,\r\n name,\r\n placeholder,\r\n required = false,\r\n step,\r\n onChange,\r\n thinLabel,\r\n labelWidth,\r\n labelAlignment = 'start',\r\n value,\r\n className,\r\n validationMessage,\r\n symbol,\r\n symbolPlacement,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n return (\r\n \r\n \r\n {hasHelper ? (\r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n {label}\r\n \r\n )}\r\n \r\n {symbol && symbolPlacement === 'before' && (\r\n \r\n {symbol}\r\n \r\n )}\r\n \r\n {symbol && symbolPlacement === 'after' && (\r\n \r\n {symbol}\r\n \r\n )}\r\n {validationMessage && (\r\n \r\n {validationMessage}\r\n \r\n )}\r\n \r\n );\r\n },\r\n);\r\n\r\nNumberFieldInline.displayName = 'NumberFieldInline';\r\n","import * as React from 'react';\r\n\r\nimport SVGBase from '../svg-base/svg-base';\r\n\r\nexport interface SortNumberAscProps {\r\n fill?: string;\r\n title?: string;\r\n height?: string;\r\n width?: string;\r\n viewBox?: string;\r\n}\r\n\r\nconst SortNumberAsc: React.FunctionComponent> = ({\r\n fill = '#00b1ff',\r\n title,\r\n height,\r\n width,\r\n ...rest\r\n}): any => (\r\n \r\n \r\n \r\n \r\n \r\n 1\r\n \r\n \r\n \r\n \r\n 9\r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default SortNumberAsc;\r\n","import SortNumberAsc from './sort-number-asc';\r\n\r\nexport * from './sort-number-asc';\r\nexport default SortNumberAsc;\r\n","import * as React from 'react';\r\n\r\nimport SVGBase from '../svg-base/svg-base';\r\n\r\nexport interface SortNumberDescProps {\r\n fill?: string;\r\n title?: string;\r\n height?: string;\r\n width?: string;\r\n viewBox?: string;\r\n}\r\n\r\nconst SortNumberDesc: React.FunctionComponent> = ({\r\n fill = '#00b1ff',\r\n title,\r\n height,\r\n width,\r\n ...rest\r\n}): any => (\r\n \r\n \r\n \r\n \r\n \r\n 9\r\n \r\n \r\n \r\n \r\n 1\r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default SortNumberDesc;\r\n","import SortNumberDesc from './sort-number-desc';\r\n\r\nexport * from './sort-number-desc';\r\nexport default SortNumberDesc;\r\n","import * as React from 'react'; // eslint-disable-line\r\nimport styled, { ThemeProvider, ThemeProps } from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, SPACING } from '../../packages/constants';\r\nimport { HelperModal, QuestionMark } from '../helper-modal';\r\nimport SortNumberAsc from '../../packages/icons/sort-number-asc';\r\nimport SortNumberDesc from '../../packages/icons/sort-number-desc';\r\n\r\nexport interface SortNumberAscDescFieldProps {\r\n dataId: string;\r\n id: string;\r\n name: string;\r\n legend: string;\r\n autoFocus?: boolean;\r\n assistAccess?: boolean;\r\n value?: SortValues;\r\n disabled?: boolean;\r\n hasHelper?: boolean;\r\n helperContent?: React.ReactNode;\r\n invalid?: boolean;\r\n thinLabel?: boolean;\r\n thinLegend?: boolean;\r\n theme?: SortFieldTheme;\r\n onChange?: (e: any) => void;\r\n validationMessage?: string;\r\n className?: string;\r\n}\r\n\r\nexport enum SortValues {\r\n NONE = 'NONE',\r\n ASCENDING = 'ASC',\r\n DESCENDING = 'DESC',\r\n}\r\n\r\ninterface SortFieldTheme {\r\n selectedColor: string;\r\n}\r\n\r\ninterface StyledLegendTextProps {\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n thinLegend?: boolean;\r\n}\r\n\r\ninterface StyledLabelProps {\r\n inline?: boolean;\r\n disabled?: boolean;\r\n}\r\n\r\ninterface StyledRadioProps {\r\n assistAccess: boolean;\r\n disabled?: boolean;\r\n}\r\n\r\ninterface StyledLabelTextProps {\r\n disabled?: boolean;\r\n inline?: boolean;\r\n thinLabel?: boolean;\r\n}\r\n\r\nconst Wrapper = styled.fieldset`\r\n display: inline-flex;\r\n flex-direction: column;\r\n`;\r\n\r\nconst WrapperHasHelper = styled.fieldset`\r\n display: inline-flex;\r\n flex-direction: column;\r\n`;\r\n\r\nconst StyledLegend = styled.legend`\r\n display: inline-flex;\r\n margin-left: 0;\r\n`;\r\n\r\nconst StyledLegendText = styled.span`\r\n display: inline-block;\r\n margin-right: ${SPACING.X_SMALL};\r\n padding-bottom: ${SPACING.XX_SMALL};\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n font-weight: ${(props: StyledLegendTextProps): string => (props.thinLegend ? '400' : '700')};\r\n color: ${(props: StyledLegendTextProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.LABEL_TEXT)};\r\n opacity: ${(props: StyledLegendTextProps): string => (props.disabled ? '0.7' : '1')};\r\n`;\r\n\r\nconst StyledLabel = styled.label`\r\n position: relative;\r\n display: inline-flex;\r\n flex-direction: ${(props: StyledLabelProps): string => (props.inline ? 'row-reverse' : 'column')};\r\n align-items: ${(props: StyledLabelProps): string => (props.inline ? 'center' : '')};\r\n justify-content: ${(props: StyledLabelProps): string => (props.inline ? 'flex-end' : '')};\r\n cursor: ${(props: StyledLabelProps): string => (props.disabled ? 'default' : 'pointer')};\r\n`;\r\n\r\nconst StyledLabelText = styled.span`\r\n display: block;\r\n margin-left: ${(props: StyledLabelTextProps): string => (props.inline ? SPACING.SMALL : '0')};\r\n font-size: ${FONT_SIZE.SMALL};\r\n font-weight: 400;\r\n color: ${COLOR.MAIN.LABEL_TEXT};\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n opacity: ${(props: StyledLabelTextProps): string => (props.disabled ? '0.7' : '1')};\r\n`;\r\n\r\nconst StyledItemsWrapper = styled.div`\r\n > ${StyledLabel} {\r\n margin-right: ${SPACING.LARGE};\r\n }\r\n`;\r\n\r\nconst StyledAscIcon = styled(SortNumberAsc)`\r\n width: 30px;\r\n height: 30px;\r\n user-select: none;\r\n`;\r\n\r\nconst StyledDescIcon = styled(SortNumberDesc)`\r\n width: 30px;\r\n height: 30px;\r\n user-select: none;\r\n`;\r\n\r\nconst StyledRadio = styled.input`\r\n /* NOTE: it's important the radio position on screen matches where the label is or the browser may scroll to the radio */\r\n position: absolute;\r\n opacity: 0;\r\n top: 0;\r\n left: 0;\r\n z-index: -1;\r\n\r\n ~ ${StyledAscIcon} .sort-number-asc-icon__background,\r\n ~ ${StyledDescIcon} .sort-number-desc-icon__background {\r\n fill: #fff;\r\n }\r\n ~ ${StyledAscIcon} .sort-number-asc-icon__outline,\r\n ~ ${StyledAscIcon} .sort-number-asc-icon__1,\r\n ~ ${StyledAscIcon} .sort-number-asc-icon__9,\r\n ~ ${StyledAscIcon} .sort-number-asc-icon__arrow,\r\n ~ ${StyledDescIcon} .sort-number-desc-icon__outline,\r\n ~ ${StyledDescIcon} .sort-number-desc-icon__1,\r\n ~ ${StyledDescIcon} .sort-number-desc-icon__9,\r\n ~ ${StyledDescIcon} .sort-number-desc-icon__arrow {\r\n fill: #d5d5d5;\r\n }\r\n\r\n &:hover {\r\n ~ ${StyledAscIcon} .sort-number-asc-icon__outline,\r\n ~ ${StyledAscIcon} .sort-number-asc-icon__1,\r\n ~ ${StyledAscIcon} .sort-number-asc-icon__9,\r\n ~ ${StyledAscIcon} .sort-number-asc-icon__arrow,\r\n ~ ${StyledDescIcon} .sort-number-desc-icon__outline,\r\n ~ ${StyledDescIcon} .sort-number-desc-icon__1,\r\n ~ ${StyledDescIcon} .sort-number-desc-icon__9,\r\n ~ ${StyledDescIcon} .sort-number-desc-icon__arrow {\r\n fill: ${(props: StyledRadioProps): string => (props.disabled ? '#d5d5d5' : '#9a9a9a')};\r\n }\r\n }\r\n\r\n &:focus ~ ${StyledAscIcon}, &:focus ~ ${StyledDescIcon} {\r\n outline: ${(props: StyledRadioProps): string => (props.assistAccess ? '1px dotted #212121' : '0')};\r\n outline: ${(props: StyledRadioProps): string =>\r\n props.assistAccess ? '5px auto -webkit-focus-ring-color' : '0'};\r\n }\r\n\r\n &:checked {\r\n ~ ${StyledAscIcon} .sort-number-asc-icon__background,\r\n ~ ${StyledDescIcon} .sort-number-desc-icon__background {\r\n fill: ${(props: ThemeProps): string => props.theme.selectedColor};\r\n }\r\n ~ ${StyledAscIcon} .sort-number-asc-icon__outline,\r\n ~ ${StyledDescIcon} .sort-number-desc-icon__outline {\r\n fill: none;\r\n }\r\n ~ ${StyledAscIcon} .sort-number-asc-icon__1,\r\n ~ ${StyledAscIcon} .sort-number-asc-icon__9,\r\n ~ ${StyledAscIcon} .sort-number-asc-icon__arrow,\r\n ~ ${StyledDescIcon} .sort-number-desc-icon__1,\r\n ~ ${StyledDescIcon} .sort-number-desc-icon__9,\r\n ~ ${StyledDescIcon} .sort-number-desc-icon__arrow {\r\n fill: #fff;\r\n }\r\n }\r\n`;\r\n\r\nexport const defaultTheme: SortFieldTheme = {\r\n selectedColor: COLOR.BRAND.REPORTING,\r\n};\r\n\r\nexport const SortNumberAscDescField = React.forwardRef(\r\n (\r\n {\r\n assistAccess = false,\r\n autoFocus,\r\n dataId,\r\n disabled,\r\n hasHelper,\r\n helperContent,\r\n id,\r\n invalid,\r\n legend,\r\n name,\r\n onChange,\r\n theme = defaultTheme,\r\n thinLabel,\r\n thinLegend,\r\n value,\r\n className,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n return hasHelper ? (\r\n \r\n \r\n \r\n \r\n {legend}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Ascending\r\n \r\n \r\n \r\n \r\n \r\n \r\n Descending\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n \r\n {legend}\r\n \r\n \r\n \r\n \r\n \r\n Ascending\r\n \r\n \r\n \r\n \r\n \r\n \r\n Descending\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n },\r\n);\r\nSortNumberAscDescField.displayName = 'SortNumberAscDescField';\r\n","import * as React from 'react';\r\n\r\nimport { Link } from 'react-scroll';\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, RADIUS, SPACING, SPEED } from '../../../../packages/constants';\r\nimport { AdditionalPage, ChevronRight } from '../../../../packages/icons';\r\nimport { LoadingSpinner } from '../../../loading-spinner';\r\n\r\ninterface ThumbnailProps {\r\n href: string;\r\n title: string;\r\n additionalPageNumber?: string;\r\n activeClass?: string;\r\n className?: string;\r\n containerId?: string;\r\n duration?: number;\r\n isLoading?: boolean;\r\n isAdditionalPage?: boolean;\r\n imageSrc?: string;\r\n offset?: number;\r\n onSetActive?: (e: any) => void;\r\n onSetInactive?: (e: any) => void;\r\n ref?: any;\r\n showThumbnail?: boolean;\r\n smooth?: boolean;\r\n spy?: boolean;\r\n to?: any;\r\n}\r\n\r\ninterface StyledThumbnailProps {\r\n isAdditionalPage?: boolean;\r\n showThumbnail?: boolean;\r\n onSetInactive?: any;\r\n}\r\n\r\ninterface ImageThumbnailProps {\r\n isAdditionalPage?: boolean;\r\n}\r\n\r\nconst StyledLoadingSpinner = styled(LoadingSpinner)``;\r\n\r\nconst DROP_SHADOW_VALUE = `\r\n 0 1px 5px rgba(4, 37, 91, 0.25)\r\n`;\r\nconst PAGINATION_THUMBNAIL_WIDTH = `220px`;\r\nconst PAGINATION_THUMBNAIL_HEIGHT = `170px`;\r\nconst PAGINATION_THUMBNAIL_STYLED = `\r\n box-sizing: border-box;\r\n box-shadow: ${DROP_SHADOW_VALUE};\r\n border-style: solid;\r\n border-width: 2px;\r\n border-color: transparent;\r\n border-radius: ${RADIUS.DEFAULT};\r\n height: ${PAGINATION_THUMBNAIL_HEIGHT};\r\n margin-bottom: ${SPACING.SMALL};\r\n padding: ${SPACING.X_SMALL} ${SPACING.X_SMALL} ${SPACING.XX_SMALL};\r\n transition: border-color ${SPEED.TRANSITION};\r\n width: ${PAGINATION_THUMBNAIL_WIDTH};\r\n`;\r\n\r\nconst ImagePlaceholder = styled.div`\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n display: flex;\r\n justify-content: center;\r\n ${PAGINATION_THUMBNAIL_STYLED}\r\n`;\r\n\r\nconst ImageThumbnail = styled.img`\r\n ${PAGINATION_THUMBNAIL_STYLED}\r\n`;\r\n\r\nconst StyledImage = styled.img`\r\n display: block;\r\n width: 100%;\r\n height: auto;\r\n`;\r\n\r\nconst StyledAdditionalImage = styled(AdditionalPage)`\r\n display: block;\r\n width: 100%;\r\n height: auto;\r\n`;\r\n\r\nconst StyledThumbnailLabel = styled.div`\r\n align-self: center;\r\n background-color: transparent;\r\n border-radius: ${RADIUS.DEFAULT};\r\n color: ${COLOR.MAIN.DARK_GREY};\r\n display: inline-block;\r\n font-size: ${FONT_SIZE.SMALL};\r\n padding: ${SPACING.SMALL};\r\n transition: color ${SPEED.TRANSITION}, background-color ${SPEED.TRANSITION};\r\n`;\r\n\r\nconst StyledTextLabel = styled.div`\r\n align-items: center;\r\n background-color: transparent;\r\n color: ${COLOR.BRAND.REPORTING};\r\n display: flex;\r\n font-weight: ${'400'};\r\n font-size: ${FONT_SIZE.SMALL};\r\n justify-content: space-between;\r\n padding: 5px;\r\n text-align: left;\r\n transition: color ${SPEED.TRANSITION};\r\n`;\r\n\r\nconst StyledChevron = styled(ChevronRight)`\r\n fill: #b2bccd;\r\n height: 12px;\r\n width: 12px;\r\n opacity: 0;\r\n`;\r\n\r\nconst StyledThumbnailWrapper = styled(Link)`\r\n border: 0;\r\n cursor: pointer;\r\n display: block;\r\n margin: 0;\r\n padding: 0;\r\n text-align: center;\r\n text-decoration: none;\r\n\r\n &.active {\r\n ${ImagePlaceholder},\r\n ${ImageThumbnail} {\r\n border-color: ${COLOR.BRAND.REPORTING};\r\n }\r\n\r\n ${StyledThumbnailLabel} {\r\n background-color: ${COLOR.BRAND.REPORTING};\r\n color: ${COLOR.PRIMARY.WHITE};\r\n }\r\n ${StyledTextLabel} {\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n }\r\n ${StyledChevron} {\r\n opacity: 1;\r\n }\r\n }\r\n\r\n &:hover {\r\n ${StyledThumbnailLabel} {\r\n background-color: ${COLOR.BRAND.REPORTING};\r\n color: ${COLOR.PRIMARY.WHITE};\r\n }\r\n ${StyledTextLabel} {\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n color: ${COLOR.BRAND.REPORTING};\r\n }\r\n }\r\n`;\r\n\r\nconst Thumbnail = React.forwardRef(\r\n (\r\n {\r\n activeClass,\r\n additionalPageNumber,\r\n className,\r\n containerId,\r\n href,\r\n imageSrc,\r\n isLoading,\r\n isAdditionalPage,\r\n offset,\r\n onSetActive,\r\n onSetInactive,\r\n showThumbnail,\r\n title,\r\n to,\r\n ...props\r\n }: ThumbnailProps,\r\n ref,\r\n ) => (\r\n \r\n {showThumbnail ? (\r\n isLoading ? (\r\n <>\r\n \r\n \r\n \r\n \r\n {title}\r\n {additionalPageNumber && ` (page ${Number(additionalPageNumber) + 1})`}\r\n \r\n \r\n ) : (\r\n <>\r\n \r\n {isAdditionalPage ? : }\r\n \r\n \r\n {title}\r\n {additionalPageNumber && ` (page ${Number(additionalPageNumber) + 1})`}\r\n \r\n \r\n )\r\n ) : (\r\n \r\n {title}\r\n {additionalPageNumber && ` (page ${Number(additionalPageNumber) + 1})`}\r\n \r\n \r\n )}\r\n \r\n ),\r\n);\r\nThumbnail.displayName = 'Thumbnail';\r\n\r\nexport default Thumbnail;\r\nexport { StyledLoadingSpinner, DROP_SHADOW_VALUE, PAGINATION_THUMBNAIL_WIDTH };\r\n","import Thumbnail, { DROP_SHADOW_VALUE, PAGINATION_THUMBNAIL_WIDTH } from './thumbnail';\r\n\r\nexport default Thumbnail;\r\nexport { DROP_SHADOW_VALUE, PAGINATION_THUMBNAIL_WIDTH };\r\n","import * as React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nimport { DROP_SHADOW_VALUE } from './atoms/thumbnail';\r\nimport { SPACING } from '../../packages/constants';\r\nimport { StyledLoadingSpinner } from './atoms/thumbnail/thumbnail';\r\nimport { camelToKebab } from '../../../Scripts/Spotlight/Components/CamelToKebab';\r\n\r\nexport interface PreviewPageProps {\r\n id: string;\r\n content: string;\r\n title: string;\r\n pageType?: string;\r\n isLoading: boolean;\r\n isFixedSize: boolean;\r\n canBeFullscreen: boolean;\r\n isPortrait: boolean;\r\n maxWidth?: number;\r\n index: number;\r\n}\r\n\r\ninterface PageProps {\r\n isFixedSize?: boolean;\r\n isPortrait?: boolean;\r\n pageLoading?: boolean;\r\n canBeFullscreen?: boolean;\r\n isSinglePage?: boolean;\r\n maxWidth?: number;\r\n}\r\n\r\nconst PageItem = styled.li`\r\n background-color: #fff;\r\n box-shadow: ${DROP_SHADOW_VALUE};\r\n height: ${(props) => (props.pageLoading ? (props.isFixedSize ? '710px' : 'auto') : 'auto')};\r\n margin-bottom: ${(props) => (props.isSinglePage ? 'auto' : '20px')};\r\n max-width: ${(props) =>\r\n props.canBeFullscreen ? (props.isPortrait ? '51vw' : '71vw') : props.isPortrait ? '51vw' : undefined};\r\n min-height: ${(props) => (props.canBeFullscreen ? '48vw' : '710px')};\r\n min-width: 960px;\r\n margin-left: ${(props) => (props.canBeFullscreen || props.isPortrait ? 'auto' : undefined)};\r\n margin-right: ${(props) => (props.canBeFullscreen || props.isPortrait ? 'auto' : undefined)};\r\n width: ${(props) => (props.pageLoading ? '100%' : 'auto')};\r\n max-width: ${(props) => (props.maxWidth ? props.maxWidth : 'unset')};\r\n`;\r\n\r\nconst Page = styled.div`\r\n align-items: ${(props) => (props.pageLoading ? 'center' : 'flex-start')};\r\n box-sizing: border-box;\r\n display: flex;\r\n flex-direction: column;\r\n height: ${(props) => (props.pageLoading ? (props.isFixedSize ? '710px' : '52vw') : 'auto')};\r\n justify-content: ${(props) => (props.pageLoading ? 'center' : 'flex-start')};\r\n min-height: 710px;\r\n padding: ${SPACING.MEDIUM};\r\n width: ${(props) => (props.pageLoading ? (props.isFixedSize ? '960px' : '100%') : 'auto')};\r\n overflow-x: ${(props) => (props.pageLoading ? undefined : 'auto')};\r\n`;\r\n\r\nexport const PreviewPage = ({\r\n id,\r\n isFixedSize,\r\n canBeFullscreen,\r\n isLoading,\r\n isPortrait,\r\n maxWidth,\r\n title,\r\n index,\r\n pageType,\r\n content,\r\n}: PreviewPageProps) => {\r\n return (\r\n \r\n {isLoading ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n};\r\nPreviewPage.displayName = 'PreviewPage';\r\n","import * as React from 'react'; // eslint-disable-line\r\nimport styled from 'styled-components';\r\nimport { TransformComponent as ZoomableContent } from 'react-zoom-pan-pinch';\r\n\r\nimport { PreviewPage } from './preview-page';\r\nimport { PageDataProps } from './preview';\r\n\r\nexport interface PreviewContentProps {\r\n /**\r\n * Page data\r\n */\r\n pageData: PageDataProps[];\r\n /**\r\n * Scroll listener\r\n */\r\n scrollListener: (e: any) => void;\r\n /**\r\n * Scroll ref\r\n */\r\n scrollRef: React.RefObject;\r\n /**\r\n * Show navigation?\r\n */\r\n showNavigation: boolean;\r\n /**\r\n * Fixes the size of the page during loading.\r\n */\r\n isFixedSize: boolean;\r\n /**\r\n * Show fullscreen capability?\r\n */\r\n hasFullscreen: boolean;\r\n /**\r\n * Don't show the invisible page at bottom\r\n */\r\n isSinglePage: boolean;\r\n /**\r\n * Limit how wide a page is allowed to be\r\n */\r\n maxPageWidth?: number;\r\n /**\r\n * Is the display currently fullscreen\r\n */\r\n isFullscreen: boolean;\r\n /**\r\n * Should the pages be landscape or portrait?\r\n */\r\n isPortrait: boolean;\r\n}\r\n\r\ninterface PageWrapperProps {\r\n showNavigation: boolean;\r\n hasFullscreen: boolean;\r\n isFullscreen: boolean;\r\n isSinglePage: boolean;\r\n isPortrait: boolean;\r\n}\r\n\r\nconst PageWrapper = styled.div`\r\n box-sizing: border-box;\r\n position: relative;\r\n height: ${(props) => (props.hasFullscreen ? (props.isFullscreen ? '100%' : 'calc(100% - 44px)') : '100%')};\r\n overflow-y: ${(props) => (props.isSinglePage ? 'auto' : 'scroll')};\r\n width: ${(props) => (props.isSinglePage ? '100%' : 'fit-content')};\r\n display: ${(props) => (props.hasFullscreen && props.isSinglePage ? 'flex' : 'block')};\r\n ${(props) =>\r\n props.hasFullscreen &&\r\n (props.isSinglePage || props.isPortrait) &&\r\n `align-items: ${props.isPortrait} ? 'flex-start' : 'center'`}\r\n cursor: grab;\r\n`;\r\n\r\nconst Pages = styled.ul`\r\n margin: 0 auto;\r\n max-width: 100vw;\r\n width: 100%;\r\n padding: 6px;\r\n`;\r\n\r\nconst LastPage = styled.li`\r\n height: 60vh;\r\n max-width: 100vw;\r\n margin: 0 auto;\r\n width: 100%;\r\n`;\r\n\r\nexport const PreviewContent = ({\r\n showNavigation,\r\n hasFullscreen,\r\n isFullscreen,\r\n isSinglePage,\r\n isFixedSize,\r\n isPortrait,\r\n maxPageWidth,\r\n scrollRef,\r\n scrollListener,\r\n pageData,\r\n}: PreviewContentProps) => {\r\n return (\r\n scrollListener(e)}\r\n isPortrait={isPortrait}\r\n >\r\n \r\n \r\n {pageData.map((page: PageDataProps, index: number) => (\r\n \r\n ))}\r\n {!isSinglePage && }\r\n \r\n \r\n \r\n );\r\n};\r\nPreviewContent.displayName = 'PreviewContent';\r\n","import * as React from 'react';\r\nimport { ReactNode, useEffect, useState, useMemo } from 'react';\r\n\r\nimport { Expand } from 'iconoir-react';\r\nimport { lighten } from 'polished';\r\nimport styled, { ThemeProvider } from 'styled-components';\r\n\r\nimport { SPACING, COLOR, THEME } from '../../packages/constants';\r\nimport { Button } from '../button';\r\nimport { CheckboxInput } from '../checkbox-input';\r\nimport { ThumbnailVariants } from './preview';\r\n\r\nexport interface PreviewNavigationButtonsProps {\r\n showFullscreenButton: boolean;\r\n showNavigation: boolean;\r\n isSinglePage: boolean;\r\n showThumbnails: boolean;\r\n isFullscreen: boolean;\r\n onToggleThumbnails: () => void;\r\n onToggleNavigation: () => void;\r\n onToggleFullscreen: () => void;\r\n customNavigationBarContent?: ReactNode;\r\n reportTitle?: string;\r\n isSustain?: boolean;\r\n thumbnailVariant: ThumbnailVariants;\r\n}\r\n\r\ntype ButtonsToShow = 'none' | 'thumbnail_only' | 'fullscreen_only' | 'nav_and_fullscreen' | 'all';\r\n\r\ninterface StyledSettingsProps {\r\n fullscreenAvailable: boolean;\r\n isSustain?: boolean;\r\n}\r\n\r\nconst StyledSettings = styled.div`\r\n display: flex;\r\n justify-content: ${(props) => (props.isSustain ? 'flex-start' : 'space-between')};\r\n align-items: ${(props) => (props.isSustain ? 'flex-start' : 'center')};\r\n padding: ${(props) => (props.fullscreenAvailable ? SPACING.MEDIUM : `0 0 ${SPACING.MEDIUM} ${SPACING.XX_SMALL}`)};\r\n border-bottom: 1px solid\r\n ${(props) => (props.fullscreenAvailable ? lighten(0.3, COLOR.MAIN.FORM_FIELD_DARK) : 'transparent')};\r\n background-color: ${(props) => (props.fullscreenAvailable ? COLOR.PRIMARY.WHITE : 'transparent')};\r\n`;\r\n\r\nconst CheckboxInputContainer = styled.div`\r\n display: flex;\r\n column-gap: ${SPACING.MEDIUM};\r\n min-width: 300px;\r\n`;\r\n\r\nconst FullScreenButton = styled.div`\r\n align-self: flex-end;\r\n flex-shrink: 0;\r\n`;\r\n\r\nconst ReportTitle = styled.div`\r\n flex-grow: 1;\r\n text-align: center;\r\n line-height: 1.5;\r\n font-size: 18px;\r\n font-weight: 600;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n padding-left: 30px;\r\n padding-right: 30px;\r\n`;\r\n\r\ninterface StyledCheckbox {\r\n isSustain?: boolean;\r\n}\r\n\r\nconst StyledCheckbox = styled(CheckboxInput)`\r\n flex-shrink: 0;\r\n min-width: ${(props) => (props.isSustain ? '250px' : '')};\r\n`;\r\n\r\nconst StyledButton = styled(Button)`\r\n line-height: normal;\r\n border-radius: 5px;\r\n border-width: 0;\r\n font-weight: 600;\r\n column-gap: 5px;\r\n font-size: 13px;\r\n padding-bottom: 7px;\r\n padding-top: 8px;\r\n text-decoration: underline;\r\n text-underline-position: under;\r\n color: #031c44;\r\n background-color: #fff;\r\n\r\n &:hover:not(:disabled) {\r\n background-color: #f3f4f7;\r\n color: #031c44;\r\n }\r\n`;\r\n\r\nexport const PreviewNavigationButtons: React.FC> = ({\r\n showFullscreenButton,\r\n showNavigation,\r\n isSinglePage,\r\n showThumbnails,\r\n isFullscreen,\r\n onToggleThumbnails,\r\n onToggleNavigation,\r\n onToggleFullscreen,\r\n customNavigationBarContent,\r\n reportTitle,\r\n isSustain,\r\n thumbnailVariant,\r\n}) => {\r\n const [buttonsToShow, setButtonsToShow] = useState('none');\r\n\r\n useEffect(() => {\r\n if (isFullscreen) setButtonsToShow('none');\r\n else if (isSinglePage && showFullscreenButton) setButtonsToShow('fullscreen_only');\r\n else if (showFullscreenButton && thumbnailVariant !== 'hide') setButtonsToShow('all');\r\n else if (showFullscreenButton) setButtonsToShow('nav_and_fullscreen');\r\n else if (!isSinglePage && thumbnailVariant !== 'hide') setButtonsToShow('thumbnail_only');\r\n else setButtonsToShow('none');\r\n }, [showFullscreenButton, isSinglePage, isFullscreen]);\r\n\r\n const fullscreenButtonVisible = useMemo(() => {\r\n return buttonsToShow === 'all' || buttonsToShow === 'fullscreen_only' || buttonsToShow === 'nav_and_fullscreen';\r\n }, [buttonsToShow]);\r\n\r\n return (\r\n <>\r\n {(buttonsToShow !== 'none' || customNavigationBarContent) && (\r\n \r\n {buttonsToShow === 'thumbnail_only' && (\r\n \r\n )}\r\n {buttonsToShow === 'nav_and_fullscreen' && (\r\n \r\n )}\r\n {buttonsToShow === 'all' && (\r\n \r\n \r\n \r\n \r\n )}\r\n {customNavigationBarContent && !isFullscreen && !fullscreenButtonVisible && isSustain && (\r\n <>{customNavigationBarContent} \r\n )}\r\n {fullscreenButtonVisible && isSustain && {reportTitle}}\r\n {fullscreenButtonVisible && !isSustain && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {fullscreenButtonVisible && isSustain && (\r\n \r\n \r\n \r\n Full screen mode\r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n );\r\n};\r\n","import * as React from 'react'; // eslint-disable-line\r\nimport styled from 'styled-components';\r\n\r\nimport Thumbnail, { PAGINATION_THUMBNAIL_WIDTH } from './atoms/thumbnail';\r\nimport { SPACING } from '../../packages/constants';\r\nimport { camelToKebab } from '../../../Scripts/Spotlight/Components/CamelToKebab';\r\nimport { PageDataProps } from './preview';\r\n\r\nexport interface PreviewPaginationProps {\r\n hasFullscreenOption: boolean;\r\n isFullscreen: boolean;\r\n pageData: PageDataProps[];\r\n showThumbnails: boolean;\r\n scrollOffset: number;\r\n onPageSelect: () => void;\r\n}\r\n\r\ninterface PaginationItemProps {\r\n showThumbnails?: boolean;\r\n}\r\n\r\ninterface PaginationProps {\r\n hasFullscreenOption: boolean;\r\n isFullscreen: boolean;\r\n}\r\n\r\nconst Pagination = styled.ul`\r\n box-sizing: border-box;\r\n height: ${(props) => (props.hasFullscreenOption ? (props.isFullscreen ? '100%' : 'calc(100% - 44px)') : '100%')};\r\n overflow-y: auto;\r\n padding: ${(props) =>\r\n `${SPACING.MEDIUM} ${SPACING.MEDIUM} 0 ${props.hasFullscreenOption ? SPACING.MEDIUM : SPACING.X_SMALL};`};\r\n width: ${(props) => (props.hasFullscreenOption ? `calc(${PAGINATION_THUMBNAIL_WIDTH} + 48px)` : `258px`)};\r\n`;\r\n\r\nconst PaginationItem = styled.li`\r\n list-style-type: none;\r\n margin: 0 0 ${(props) => (props.showThumbnails ? SPACING.LARGE : SPACING.X_SMALL)};\r\n padding: 0;\r\n width: 100%;\r\n`;\r\n\r\nexport const PreviewPagination = ({\r\n hasFullscreenOption,\r\n isFullscreen,\r\n pageData,\r\n showThumbnails,\r\n scrollOffset,\r\n onPageSelect,\r\n}: PreviewPaginationProps) => {\r\n return (\r\n \r\n {pageData.map((page: PageDataProps, index: number) => (\r\n \r\n \r\n \r\n ))}\r\n \r\n );\r\n};\r\n\r\nPreviewPagination.displayName = 'PreviewPagination';\r\n","import * as React from 'react';\r\nimport { useEffect, useState, useRef, MutableRefObject } from 'react';\r\n\r\nimport { TransformWrapper as ZoomableContentWrapper, ReactZoomPanPinchRef } from 'react-zoom-pan-pinch';\r\nimport styled, { ThemeProvider } from 'styled-components';\r\n\r\nimport { SPACING, COLOR, THEME } from '../../packages/constants';\r\nimport { Button } from '../button';\r\nimport { PreviewContent } from './preview-content';\r\nimport { PreviewNavigationButtons } from './preview-navigation-buttons';\r\nimport { PreviewPagination } from './preview-pagination';\r\n\r\nexport type ThumbnailVariants = 'show' | 'available' | 'hide';\r\n\r\nexport interface PreviewProps {\r\n /**\r\n * Page data\r\n */\r\n pageData: PageDataProps[];\r\n /**\r\n * Scroll listener\r\n */\r\n scrollListener: (e: any) => void;\r\n /**\r\n * Scroll ref\r\n */\r\n scrollRef: React.RefObject;\r\n /**\r\n * Show navigation?\r\n */\r\n showNavigation?: boolean;\r\n /**\r\n * Scroll offset\r\n */\r\n scrollOffset?: number;\r\n /**\r\n * Fixes the size of the page during loading.\r\n */\r\n isFixedSize?: boolean;\r\n /**\r\n * Show fullscreen capability?\r\n */\r\n hasFullscreen?: boolean;\r\n /**\r\n * Don't show the invisible page at bottom\r\n */\r\n isSinglePage?: boolean;\r\n /**\r\n * Limit how wide a page is allowed to be\r\n */\r\n maxPageWidth?: number;\r\n isSustain?: boolean;\r\n reportTitle?: string;\r\n customNavigationBarContent?: React.ReactNode;\r\n thumbnailVariant?: ThumbnailVariants;\r\n triggerThumbnailLoad?: () => void;\r\n}\r\n\r\ninterface PageWrapperProps {\r\n showNavigation?: boolean;\r\n hasFullscreen?: boolean;\r\n isFullscreen?: boolean;\r\n isSinglePage?: boolean;\r\n isPortrait?: boolean;\r\n hasFullscreenUseState?: boolean;\r\n}\r\n\r\nexport interface PageDataProps {\r\n id: string;\r\n content: string;\r\n title: string;\r\n pageType?: string;\r\n additionalPageNumber?: string;\r\n imageSrc?: string;\r\n isLoading?: boolean;\r\n isAdditionalPage?: boolean;\r\n map?: (e: any) => React.ReactNode;\r\n thumbnailIsLoading?: boolean;\r\n}\r\n\r\ninterface StyledPreviewInnerProps {\r\n isFullscreen?: boolean;\r\n showNavigation?: boolean;\r\n isSinglePage?: boolean;\r\n}\r\n\r\nconst StyledPreview = styled.div`\r\n background-color: ${COLOR.MAIN.LIGHT_GREY};\r\n height: ${(props) => (props.isSinglePage ? 'auto' : '100%')};\r\n`;\r\n\r\nconst StyledPreviewInner = styled.div`\r\n background-color: ${COLOR.MAIN.LIGHT_GREY};\r\n display: flex;\r\n height: ${(props) => (props.isSinglePage ? 'auto' : '100%')};\r\n position: relative;\r\n padding-left: ${(props) => (props.showNavigation && props.isFullscreen ? SPACING.MEDIUM : undefined)};\r\n width: 100%;\r\n`;\r\n\r\nconst PageViewPort = styled.div`\r\n height: 100%;\r\n padding: ${(props) => (props.isSinglePage ? `0px 0px` : `${SPACING.MEDIUM} 0px 0px`)};\r\n width: ${(props) => (props.isSinglePage ? '100%' : 'calc(100% - 200px)')};\r\n overflow-y: hidden;\r\n overflow-x: auto;\r\n box-sizing: border-box;\r\n`;\r\n\r\nconst ZoomTools = styled.div.attrs((props: { isSinglePage: boolean }) => props)`\r\n display: flex;\r\n position: absolute;\r\n z-index: 2;\r\n bottom: ${(props) => (props.isSinglePage ? '-5px' : '5px')}; // if there's space below, put it there\r\n padding: 6px 6px 6px 10px;\r\n`;\r\n\r\nconst ZoomButton = styled(Button)`\r\n margin-right: 6px;\r\n font-size: 14px;\r\n padding: 6px;\r\n height: 22px;\r\n`;\r\n\r\nexport const Preview = React.forwardRef(\r\n (\r\n {\r\n pageData,\r\n showNavigation,\r\n scrollOffset = -55,\r\n scrollRef,\r\n scrollListener,\r\n isFixedSize,\r\n hasFullscreen = false,\r\n isSinglePage = false,\r\n maxPageWidth,\r\n reportTitle,\r\n customNavigationBarContent,\r\n isSustain,\r\n thumbnailVariant,\r\n triggerThumbnailLoad,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const [showNavigationToggle, setNavigationToggle] = useState(showNavigation);\r\n const [thumbnailToggle, setThumbnailToggle] = useState(thumbnailVariant === 'show');\r\n const [data, setData] = useState(pageData);\r\n const [isFullscreen, setFullscreen] = useState(false);\r\n const [hasFullscreenUseState, setHasFullscreen] = useState(hasFullscreen);\r\n const styledPreviewInnerRef = useRef() as MutableRefObject;\r\n const [isPortrait, setIsPortrait] = useState(false);\r\n const transformComponentRef = useRef(null);\r\n\r\n const handleFullscreen = () => {\r\n // taken from https://davidwalsh.name/fullscreen\r\n // i cant believe this is still a thing...\r\n function launchIntoFullscreen(element: any) {\r\n if (element.requestFullscreen) {\r\n element.requestFullscreen();\r\n } else if (element.mozRequestFullScreen) {\r\n element.mozRequestFullScreen();\r\n } else if (element.webkitRequestFullscreen) {\r\n element.webkitRequestFullscreen();\r\n } else if (element.msRequestFullscreen) {\r\n element.msRequestFullscreen();\r\n }\r\n }\r\n\r\n function exitFullscreen() {\r\n if (document.exitFullscreen) {\r\n document.exitFullscreen();\r\n // @ts-ignore\r\n } else if (document.mozCancelFullScreen) {\r\n // @ts-ignore\r\n document.mozCancelFullScreen();\r\n // @ts-ignore\r\n } else if (document.webkitExitFullscreen) {\r\n // @ts-ignore\r\n document.webkitExitFullscreen();\r\n }\r\n }\r\n\r\n if (!document.fullscreenElement) {\r\n launchIntoFullscreen(styledPreviewInnerRef.current);\r\n } else {\r\n exitFullscreen();\r\n }\r\n };\r\n\r\n const resetZoomLocation = () => {\r\n if (transformComponentRef.current) {\r\n transformComponentRef.current.resetTransform();\r\n }\r\n };\r\n\r\n const toggleThumbnails = () => {\r\n if (!thumbnailToggle && triggerThumbnailLoad) {\r\n triggerThumbnailLoad();\r\n }\r\n setThumbnailToggle(!thumbnailToggle);\r\n };\r\n\r\n useEffect(() => {\r\n setNavigationToggle(showNavigation);\r\n setHasFullscreen(hasFullscreen);\r\n setData(pageData);\r\n\r\n if (styledPreviewInnerRef.current) {\r\n // @ts-ignore\r\n styledPreviewInnerRef.current.addEventListener('fullscreenchange', () => {\r\n if (document.fullscreenElement) {\r\n setFullscreen(true);\r\n } else {\r\n setFullscreen(false);\r\n }\r\n });\r\n }\r\n }, [showNavigation, hasFullscreen, pageData, styledPreviewInnerRef]);\r\n\r\n useEffect(() => {\r\n data.forEach((page) => {\r\n if (page.id === 'Performance') setIsPortrait(true);\r\n });\r\n });\r\n\r\n return (\r\n \r\n setNavigationToggle(!showNavigationToggle)}\r\n onToggleFullscreen={handleFullscreen}\r\n customNavigationBarContent={customNavigationBarContent}\r\n reportTitle={reportTitle}\r\n isSustain={isSustain}\r\n thumbnailVariant={thumbnailVariant ?? 'show'}\r\n />\r\n \r\n {showNavigationToggle && (\r\n \r\n )}\r\n \r\n \r\n {({ zoomIn, zoomOut, resetTransform }) => (\r\n <>\r\n \r\n \r\n \r\n zoomOut(0.25)}>\r\n {'\\u2212'}\r\n \r\n zoomIn(0.25)}>\r\n {'\\u002B'}\r\n \r\n resetTransform()}>\r\n RESET\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n );\r\n },\r\n);\r\nPreview.displayName = 'Preview';\r\n","export { Preview } from './preview';\r\nexport type { ThumbnailVariants } from './preview';\r\n\r\nexport const PreviewDataStub = [\r\n {\r\n id: '0000',\r\n title: 'Cover',\r\n thumbnailIsLoading: true,\r\n isLoading: false,\r\n content: '
    0000
    ',\r\n },\r\n {\r\n id: '0000_1',\r\n title: 'Cover',\r\n thumbnailIsLoading: false,\r\n isLoading: false,\r\n isAdditionalPage: true,\r\n additionalPageNumber: '1',\r\n content: '
    0000
    ',\r\n },\r\n {\r\n id: '1111',\r\n title: 'Table of Contents',\r\n pageType: 'TableOfContents',\r\n thumbnailIsLoading: true,\r\n isLoading: true,\r\n content: '
    1111
    ',\r\n },\r\n {\r\n id: '2222',\r\n title: 'Profit and Loss',\r\n pageType: 'PandLPage',\r\n thumbnailIsLoading: true,\r\n isLoading: true,\r\n content: '
    2222
    ',\r\n },\r\n {\r\n id: '3333',\r\n title: 'Balance Sheet',\r\n pageType: 'BSPage',\r\n thumbnailIsLoading: true,\r\n isLoading: true,\r\n content: '
    3333
    ',\r\n },\r\n {\r\n id: '4444',\r\n title: 'Balance Sheet',\r\n pageType: 'BSPage',\r\n thumbnailIsLoading: true,\r\n isLoading: true,\r\n content: '
    4444
    ',\r\n },\r\n {\r\n id: '5555',\r\n title: 'Balance Sheet',\r\n pageType: 'BSPage',\r\n thumbnailIsLoading: true,\r\n isLoading: true,\r\n content: '
    5555
    ',\r\n },\r\n {\r\n id: '6666',\r\n title: 'Balance Sheet',\r\n pageType: 'BSPage',\r\n thumbnailIsLoading: true,\r\n isLoading: true,\r\n content: '
    6666
    ',\r\n },\r\n {\r\n id: '7777',\r\n title: 'Balance Sheet',\r\n pageType: 'BSPage',\r\n thumbnailIsLoading: true,\r\n isLoading: true,\r\n content: '
    7777
    ',\r\n },\r\n {\r\n id: '8888',\r\n title: 'Balance Sheet',\r\n pageType: 'BSPage',\r\n thumbnailIsLoading: true,\r\n isLoading: true,\r\n content: '
    8888
    ',\r\n },\r\n {\r\n id: '9999',\r\n title: 'Balance Sheet',\r\n pageType: 'BSPage',\r\n thumbnailIsLoading: true,\r\n isLoading: true,\r\n content: '
    9999
    ',\r\n },\r\n];\r\n\r\nexport const PreviewDashboardDataStub = [\r\n {\r\n id: '0000',\r\n title: 'Dashboard',\r\n thumbnailIsLoading: true,\r\n isLoading: false,\r\n content: '
    0000
    ',\r\n },\r\n];\r\n\r\nfunction outputText(amount = 25) {\r\n let textString = ``;\r\n for (let i = 0; i < amount; i++) {\r\n textString += `

    lorem ipsum dolor set

    `;\r\n }\r\n return textString;\r\n}\r\n\r\nexport const PreviewDashboardPerformanceDataStub = [\r\n {\r\n id: 'Performance',\r\n title: 'Performance Dashboard',\r\n thumbnailIsLoading: false,\r\n isLoading: false,\r\n content: `

    Performance layout (portrait)

    \r\n${outputText(70)}\r\n`,\r\n },\r\n];\r\n","import * as React from 'react';\r\n\r\nimport SVGBase from '../svg-base/svg-base';\r\n\r\nexport interface StarProps {\r\n fill?: string;\r\n title?: string;\r\n height?: string;\r\n width?: string;\r\n viewBox?: string;\r\n}\r\n\r\nconst CircleWithPlus: React.FunctionComponent> = ({\r\n fill,\r\n title,\r\n height,\r\n width,\r\n ...rest\r\n}): any => (\r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default CircleWithPlus;\r\n","import CircleWithPlus from './circle-with-plus';\r\n\r\nexport * from './circle-with-plus';\r\nexport default CircleWithPlus;\r\n","import * as React from 'react';\r\n\r\nimport SVGBase from '../svg-base/svg-base';\r\n\r\nexport interface CircleWithMinusProps {\r\n fill?: string;\r\n title?: string;\r\n height?: string;\r\n width?: string;\r\n viewBox?: string;\r\n}\r\n\r\nconst CircleWithMinus: React.FunctionComponent> = ({\r\n fill,\r\n title,\r\n height,\r\n width,\r\n ...rest\r\n}): any => (\r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default CircleWithMinus;\r\n","import CircleWithMinus from './circle-with-minus';\r\n\r\nexport * from './circle-with-minus';\r\nexport default CircleWithMinus;\r\n","import * as React from 'react';\r\n\r\nexport interface EliminationProps {\r\n fill?: string;\r\n title?: string;\r\n height?: string;\r\n width?: string;\r\n viewBox?: string;\r\n}\r\n\r\nconst Elimination: React.FunctionComponent> = ({\r\n height,\r\n width,\r\n ...rest\r\n}): any => (\r\n \r\n);\r\n\r\nexport default Elimination;\r\n","import Elimination from './elimination';\r\n\r\nexport * from './elimination';\r\nexport default Elimination;\r\n","import styled from 'styled-components';\r\n\r\nimport { COLOR } from '../../../../packages/constants';\r\nimport CircleWithPlus from '../../../../packages/icons/circle-with-plus';\r\nimport CircleWithMinus from '../../../../packages/icons/circle-with-minus';\r\nimport Elimination from '../../../../packages/icons/elimination';\r\nimport Edit from '../../../../packages/icons/edit';\r\nimport ChevronLeft from '../../../../packages/icons/chevron-left';\r\nimport ChevronRight from '../../../../packages/icons/chevron-right';\r\n\r\nconst iconWidth = '12px';\r\nexport const StyledPlus = styled(CircleWithPlus)`\r\n fill: ${COLOR.BRAND.REPORTING};\r\n width: ${iconWidth};\r\n height: ${iconWidth};\r\n`;\r\n\r\nexport const StyledMinus = styled(CircleWithMinus)`\r\n fill: ${COLOR.BRAND.REPORTING};\r\n width: ${iconWidth};\r\n height: ${iconWidth};\r\n`;\r\n\r\nexport const StyledElimination = styled(Elimination)`\r\n fill: ${COLOR.BRAND.REPORTING};\r\n width: ${iconWidth};\r\n height: ${iconWidth};\r\n`;\r\n\r\nexport const StyledEdit = styled(Edit)`\r\n fill: ${COLOR.DATAGRID.DATAGRID_TEXT};\r\n width: ${iconWidth};\r\n height: ${iconWidth};\r\n position: absolute;\r\n bottom: 5px;\r\n right: 2px;\r\n z-index: 0;\r\n`;\r\n\r\nconst chevronAttrs = `\r\n fill: ${COLOR.DATAGRID.DATAGRID_TEXT};\r\n width: 10px;\r\n height: 10px;\r\n`;\r\n\r\nexport const StyledChevronRight = styled(ChevronRight)`\r\n ${chevronAttrs}\r\n`;\r\n\r\nexport const StyledChevronLeft = styled(ChevronLeft)`\r\n ${chevronAttrs}\r\n`;\r\n","import styled from 'styled-components';\r\n\r\nimport { SPACING, COLOR } from '../../../../packages/constants';\r\nimport { StyledPlus, StyledMinus, StyledElimination } from '../icons/icons';\r\n\r\nexport const AccountRow = styled.tr`\r\n width: 100%;\r\n\r\n ${StyledElimination} {\r\n margin-right: ${SPACING.X_SMALL};\r\n }\r\n`;\r\n\r\nexport const ToggleAccountRow = styled.button`\r\n margin: 0;\r\n border: 0;\r\n background-color: transparent;\r\n cursor: pointer;\r\n display: flex;\r\n align-content: center;\r\n padding: 0;\r\n font-weight: 700;\r\n font-size: inherit;\r\n line-height: 15px;\r\n color: ${COLOR.DATAGRID.DATAGRID_TEXT};\r\n\r\n ${StyledPlus},\r\n ${StyledMinus},\r\n ${StyledElimination} {\r\n margin-right: ${SPACING.X_SMALL};\r\n }\r\n\r\n .icon--toggle-row {\r\n display: inline-flex;\r\n }\r\n`;\r\n\r\nexport type HandleToggleAccountRowFn = (id: string) => void;\r\n","import styled from 'styled-components';\r\nimport { COLOR, FONT_SIZE, SPACING } from '../../../../packages/constants';\r\nimport { ToggleAccountRow } from '../account-row/account-row';\r\n\r\nexport interface AccountCellProps {\r\n canBeToggled?: boolean; // can toggle visibility\r\n hasBorderRight?: boolean;\r\n hasTextAlignedLeft?: boolean;\r\n hasNoPadding?: boolean;\r\n indent?: boolean;\r\n isBudget?: boolean; // yellow cell isBudget\r\n isEditable?: boolean; // can be edited\r\n isGroup?: boolean; // is a group cell type\r\n isHeader?: boolean; // header styles\r\n isLocked?: boolean; // show lock symbol\r\n isNumber?: boolean; // text-aligned right\r\n isTotal?: boolean; // grey cell\r\n minWidth?: number;\r\n isDisplayed?: boolean;\r\n}\r\n\r\nexport const AccountCell = styled.div`\r\n box-sizing: border-box;\r\n border-top: 1px solid ${(props) => (props.isGroup ? COLOR.DATAGRID.DATAGRID_DIVIDER_LINE : COLOR.MAIN.FORM_FIELD)};\r\n border-left: 1px solid ${COLOR.MAIN.FORM_FIELD};\r\n background-color: ${(props) =>\r\n props.isHeader\r\n ? COLOR.PRIMARY.WHITE\r\n : props.isBudget\r\n ? COLOR.DATAGRID.DATAGRID_BUDGET_BG\r\n : props.isTotal\r\n ? COLOR.DATAGRID.DATAGRID_TOTAL_BG\r\n : COLOR.PRIMARY.WHITE};\r\n display: ${(props) => ((props.canBeToggled && props.isDisplayed) || !props.canBeToggled ? 'inline-flex' : 'none')};\r\n padding: ${(props) =>\r\n props.isGroup && !props.isNumber && !props.canBeToggled\r\n ? '0'\r\n : props.indent\r\n ? `${SPACING.SMALL} ${SPACING.SMALL} ${SPACING.SMALL} ${SPACING.XX_LARGE}`\r\n : props.hasNoPadding\r\n ? '0'\r\n : SPACING.SMALL};\r\n font-size: ${FONT_SIZE.X_SMALL};\r\n font-weight: ${(props) => (props.isHeader ? '700' : '400')};\r\n justify-content: ${(props) =>\r\n props.hasTextAlignedLeft\r\n ? 'flex-start'\r\n : props.isHeader && !props.isTotal\r\n ? 'center'\r\n : props.isNumber\r\n ? 'flex-end'\r\n : props.isGroup\r\n ? 'flex-end'\r\n : props.isTotal && props.isHeader\r\n ? 'space-between'\r\n : 'flex-start'};\r\n line-height: 15px;\r\n width: 100%;\r\n min-width: ${(props) => (props.minWidth ? `${props.minWidth}px` : props.isTotal ? '100%' : '95px')};\r\n position: relative;\r\n color: ${COLOR.DATAGRID.DATAGRID_TEXT};\r\n\r\n &:last-child {\r\n border-right: 1px solid ${COLOR.MAIN.FORM_FIELD};\r\n }\r\n\r\n ${ToggleAccountRow} {\r\n padding: ${SPACING.SMALL};\r\n }\r\n\r\n input[type='checkbox'] {\r\n margin: 0;\r\n margin-top: -1px;\r\n position: relative;\r\n top: 2px;\r\n height: 13px;\r\n width: 13px;\r\n }\r\n\r\n ${({ isLocked }) =>\r\n isLocked &&\r\n `\r\n padding-left ${SPACING.LARGE};\r\n \r\n &::before {\r\n position: absolute;\r\n font-family: 'FontAwesome', sans-serif;\r\n bottom: ${SPACING.X_SMALL};\r\n left: ${SPACING.X_SMALL};\r\n content: '\\f023';\r\n color: ${COLOR.MAIN.DARK_GREY};\r\n opacity: 0.3;\r\n }`}\r\n`;\r\n\r\nexport const TruncateText = styled.div`\r\n display: block;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n width: 269px;\r\n text-align: left;\r\n`;\r\n","import * as React from 'react'; // eslint-disable-line\r\nimport { useState, useEffect, useRef } from 'react';\r\nimport styled from 'styled-components';\r\nimport { COLOR, FONT_SIZE, FONT_STACK, SPACING } from '../../../../packages/constants';\r\nimport { LoadingSpinner, Icon } from '../../../loading-spinner';\r\nimport { AccountCell, AccountCellProps } from '../account-cell/account-cell';\r\nimport { StyledEdit } from '../icons/icons';\r\n\r\nexport interface AccountCellInputProps extends AccountCellInputDivProps {\r\n cellId: string;\r\n inputProps: InputProps;\r\n}\r\n\r\ninterface AccountCellInputDivProps extends AccountCellProps {\r\n isSaving?: boolean;\r\n}\r\n\r\ninterface InputProps extends React.HTMLProps {\r\n dataId: string;\r\n saveFn: SaveCallbackFn;\r\n}\r\n\r\nexport type SaveCallbackFn = ({ cellId, value }: { cellId: string; value: string }) => Promise;\r\n\r\nexport interface SaveCallbackFnResponse {\r\n data: {\r\n value: string | number;\r\n };\r\n}\r\n\r\nconst StyledLoadingSpinner = styled(LoadingSpinner)`\r\n position: absolute;\r\n bottom: 5px;\r\n right: 2px;\r\n\r\n ${Icon} {\r\n margin: 0;\r\n }\r\n`;\r\n\r\nconst AccountCellInputDiv = styled(AccountCell)``;\r\n\r\nconst InvisibleInput = styled.input`\r\n border: 1px solid transparent;\r\n background-color: transparent;\r\n font-size: ${FONT_SIZE.X_SMALL};\r\n font-family: ${FONT_STACK};\r\n padding: ${SPACING.X_SMALL} ${SPACING.SMALL};\r\n margin: 0;\r\n width: 140px;\r\n z-index: 1;\r\n color: ${COLOR.DATAGRID.DATAGRID_TEXT};\r\n\r\n &:hover + ${StyledEdit} {\r\n fill: ${COLOR.BRAND.REPORTING};\r\n }\r\n\r\n &:focus {\r\n box-shadow: 0 0 3px inset ${COLOR.BRAND.REPORTING};\r\n\r\n + ${StyledEdit} {\r\n fill: ${COLOR.BRAND.REPORTING};\r\n }\r\n }\r\n`;\r\n\r\nconst updateCell = ({\r\n e,\r\n value,\r\n setCellValue,\r\n setLastSavedValue,\r\n lastModifiedRef,\r\n}: {\r\n e: React.BaseSyntheticEvent;\r\n value: string | number;\r\n setCellValue: React.Dispatch>;\r\n setLastSavedValue: React.Dispatch>;\r\n lastModifiedRef: React.MutableRefObject;\r\n}) => {\r\n /**\r\n * Before updating the cell, ensure the user is not currently editing it\r\n * by comparing when it was lastModifed to when the event fired.\r\n * This is necessary to prevent overwriting subsequent changes the user made\r\n * while the callback was beind handled.\r\n * It's important that lastModified is a ref value so it is live rather than\r\n * when the function was called.\r\n */\r\n if (lastModifiedRef.current < e.timeStamp) {\r\n setCellValue(value); // write to the cell the new value\r\n }\r\n // always update the lastSavedValue\r\n setLastSavedValue(value);\r\n};\r\n\r\n/**\r\n * Handles saving and updating the cell saving state and value accordingly\r\n * Will save if it is passed an unsaved value\r\n * Calls a saveCallbackFn passed in to it so the value can be persisted.\r\n */\r\nconst saveHandler = async ({\r\n e,\r\n cellId,\r\n lastSavedValue,\r\n lastModifiedRef,\r\n setCellValue,\r\n setLastAttemptedSaveValue,\r\n setLastSavedValue,\r\n saveCallbackFn,\r\n isMountedRef,\r\n}: {\r\n e: React.BaseSyntheticEvent;\r\n cellId: string;\r\n lastSavedValue: string | number | string[];\r\n lastModifiedRef: React.MutableRefObject;\r\n setCellValue: React.Dispatch>;\r\n setLastAttemptedSaveValue: React.Dispatch>;\r\n setLastSavedValue: React.Dispatch>;\r\n saveCallbackFn: SaveCallbackFn;\r\n isMountedRef: React.MutableRefObject;\r\n}) => {\r\n e.persist(); // react 16 uses event pooling https://reactjs.org/docs/legacy-event-pooling.html\r\n const value = e.target.value;\r\n setLastAttemptedSaveValue(value);\r\n // only save if the value has changed from when it was last saved\r\n if (lastSavedValue !== value) {\r\n try {\r\n const { data } = await saveCallbackFn({ cellId, value });\r\n if (!isMountedRef.current) {\r\n return;\r\n }\r\n // write the value back to the cell to ensure consistency from the server to client\r\n updateCell({ e, value: data.value, setCellValue, setLastSavedValue, lastModifiedRef });\r\n } catch {\r\n console.error('Failed to save', cellId, value);\r\n }\r\n }\r\n};\r\n\r\nconst keyHandler = ({\r\n e,\r\n saveFn,\r\n restoreFn,\r\n}: {\r\n e: React.KeyboardEvent;\r\n saveFn: () => Promise;\r\n restoreFn: () => void;\r\n}) => {\r\n if (e.key === 'Enter') {\r\n saveFn();\r\n } else if (e.key === 'Escape' || e.key === 'Esc') {\r\n restoreFn();\r\n }\r\n};\r\n\r\nexport const AccountCellInput = ({\r\n cellId,\r\n inputProps,\r\n hasTextAlignedLeft,\r\n isGroup,\r\n canBeToggled,\r\n isDisplayed,\r\n hasNoPadding,\r\n}: AccountCellInputProps) => {\r\n const [cellValue, setCellValue] = useState(\r\n inputProps.value === null || typeof inputProps.value === 'undefined' ? '' : inputProps.value,\r\n ); // the current value\r\n const [lastAttemptedSaveValue, setLastAttemptedSaveValue] = useState(\r\n inputProps.value === null || typeof inputProps.value === 'undefined' ? '' : inputProps.value,\r\n );\r\n const [lastSavedValue, setLastSavedValue] = useState(\r\n inputProps.value === null || typeof inputProps.value === 'undefined' ? '' : inputProps.value,\r\n ); // so we can compare or restore the last saved value\r\n const [savingState, setSavingState] = useState({ value: false, lastAttemptedSaveDate: 0 }); // just for display purposes, may have actually completed saving as it has a minimum duration\r\n\r\n const isSaving = savingState.value;\r\n const lastModifiedRef = useRef(0);\r\n const savingTimerRef = useRef(0);\r\n const isMountedRef = useRef(false);\r\n\r\n useEffect(() => {\r\n isMountedRef.current = true;\r\n return () => {\r\n isMountedRef.current = false;\r\n };\r\n }, []);\r\n\r\n /**\r\n * if we get passed in a new value, we should use that value\r\n */\r\n useEffect(() => {\r\n setCellValue(inputProps.value || '');\r\n }, [inputProps.value]);\r\n\r\n /**\r\n * ensure that given the value has not changed (saving the most recent value), saving state isn't set false for a min duration\r\n * if the value has changed (there's a new save pending), the saving state can be cleared\r\n */\r\n useEffect(() => {\r\n if (!isMountedRef.current) {\r\n return;\r\n }\r\n\r\n const currentValueMatchesAttemptedSave = cellValue === lastAttemptedSaveValue;\r\n const attemptedSaveValueMatchesSaved = lastAttemptedSaveValue === lastSavedValue;\r\n const showAsSaving =\r\n currentValueMatchesAttemptedSave && lastAttemptedSaveValue !== null && !attemptedSaveValueMatchesSaved;\r\n const now = Date.now();\r\n const lastAttemptedSaveDate =\r\n lastAttemptedSaveValue !== null && !attemptedSaveValueMatchesSaved\r\n ? now\r\n : savingState.lastAttemptedSaveDate; // the date the user last tried to save a value different to the currently saved value\r\n const diff = now - lastAttemptedSaveDate; // how long it has been since user last tried to save\r\n const minDuration = 500; // minimum time to show saving state for\r\n\r\n // when we're saving the last entered value and clearing the save state a minimum duration must have passed\r\n if (cellValue === lastAttemptedSaveValue && showAsSaving === false) {\r\n savingTimerRef.current = window.setTimeout(() => {\r\n setSavingState({ value: showAsSaving, lastAttemptedSaveDate });\r\n }, Math.max(0, minDuration - diff));\r\n } else {\r\n setSavingState({ value: showAsSaving, lastAttemptedSaveDate });\r\n }\r\n // cleanup\r\n return () => {\r\n window.clearTimeout(savingTimerRef.current);\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [cellValue, lastAttemptedSaveValue, lastSavedValue]);\r\n\r\n return (\r\n \r\n {\r\n setCellValue(e.currentTarget.value);\r\n lastModifiedRef.current = e.timeStamp;\r\n }}\r\n onBlur={(e) =>\r\n saveHandler({\r\n e,\r\n cellId,\r\n // TODO: fix issue #292\r\n // @ts-ignore\r\n lastSavedValue,\r\n lastModifiedRef,\r\n // TODO: fix issue #292\r\n // @ts-ignore\r\n setCellValue,\r\n // TODO: fix issue #292\r\n // @ts-ignore\r\n setLastAttemptedSaveValue,\r\n // TODO: fix issue #292\r\n // @ts-ignore\r\n setLastSavedValue,\r\n saveCallbackFn: inputProps.saveFn,\r\n isMountedRef,\r\n })\r\n }\r\n onKeyDown={(e) =>\r\n keyHandler({\r\n e,\r\n // TODO: fix issue #292\r\n // @ts-ignore\r\n saveFn: saveHandler.bind(e, {\r\n e,\r\n cellId,\r\n lastSavedValue,\r\n lastModifiedRef,\r\n setCellValue,\r\n setLastAttemptedSaveValue,\r\n setLastSavedValue,\r\n saveCallbackFn: inputProps.saveFn,\r\n isMountedRef,\r\n }),\r\n restoreFn: setCellValue.bind(e, lastAttemptedSaveValue === null ? '' : lastAttemptedSaveValue),\r\n })\r\n }\r\n data-test-id={inputProps.dataId}\r\n />\r\n {!isSaving && }\r\n {isSaving && }\r\n \r\n );\r\n};\r\n","import classNames from 'classnames';\r\nimport React, { useEffect, useRef } from 'react';\r\nimport styled from 'styled-components';\r\nimport { COLOR } from '../../../../packages/constants';\r\nimport { camelToKebab } from '../../../../../Scripts/Spotlight/Components/CamelToKebab';\r\nimport {\r\n AccountChildrenType,\r\n AccountsEliminationsActions,\r\n AccountsEliminationsActionTypes,\r\n AccountsEliminationsState,\r\n AccountType,\r\n columnWidths,\r\n DataGridModes,\r\n DetailsColumns,\r\n ExpansionMode,\r\n isExpanded,\r\n} from '../../data-grid';\r\nimport { AccountCellInput, SaveCallbackFn } from '../account-cell-input/account-cell-input';\r\nimport { AccountCell, TruncateText } from '../account-cell/account-cell';\r\nimport { AccountRow, HandleToggleAccountRowFn, ToggleAccountRow } from '../account-row/account-row';\r\nimport { StyledElimination, StyledMinus, StyledPlus } from '../icons/icons';\r\n\r\nexport interface AccountsListProps {\r\n dataId: string;\r\n /**\r\n * The accounts to display\r\n */\r\n accounts: AccountType[];\r\n /**\r\n * Columns to display within the details pane\r\n */\r\n detailsColumns?: DetailsColumns[];\r\n /**\r\n * External function to update displayName\r\n */\r\n displayNameChange?: SaveCallbackFn;\r\n /**\r\n * A callback to\r\n */\r\n gridEliminationsDispatch?: any;\r\n /**\r\n * Expand/Collapse all rows\r\n */\r\n expansionMode?: ExpansionMode;\r\n /**\r\n * External function to toggle expand/collapse of a row\r\n */\r\n handleToggleAccountRow: HandleToggleAccountRowFn;\r\n /**\r\n * Display the eliminated icon on eliminated account rows\r\n */\r\n identifyEliminatedAccounts?: boolean;\r\n /**\r\n * Show details columns for accounts\r\n */\r\n showAccountDetails?: boolean;\r\n /**\r\n * The interaction mode of the grid\r\n */\r\n mode: DataGridModes;\r\n accountsEliminationsState?: AccountsEliminationsState;\r\n accountsEliminationsDispatch?: React.Dispatch;\r\n}\r\n\r\nexport const AccountsListTable = styled.table`\r\n border-top: 1px solid ${COLOR.MAIN.FORM_FIELD};\r\n\r\n ${AccountRow}:first-child ${AccountCell} {\r\n border-top: none;\r\n }\r\n`;\r\n\r\nconst AccountName = styled(TruncateText)`\r\n width: 258px;\r\n line-height: 15px;\r\n`;\r\n\r\nconst AccountChildName = styled(TruncateText)<{ identifyEliminatedAccounts: boolean }>`\r\n width: ${(props) => (props.identifyEliminatedAccounts ? '252px' : '269px')};\r\n`;\r\n\r\nconst nbsp = '\\u00A0';\r\n\r\nconst EliminateAccountCheckbox = React.forwardRef(\r\n (\r\n {\r\n dataId,\r\n account,\r\n parentAccount,\r\n checked,\r\n accountsEliminationsDispatch,\r\n }: {\r\n dataId: string;\r\n account: AccountType | AccountChildrenType;\r\n parentAccount?: AccountType;\r\n checked: boolean;\r\n accountsEliminationsDispatch: any;\r\n },\r\n ref: any,\r\n ) => {\r\n const update = () => {\r\n accountsEliminationsDispatch({\r\n type: AccountsEliminationsActionTypes.TOGGLE_ELIMINATION,\r\n account: account,\r\n parentAccount: parentAccount,\r\n });\r\n };\r\n\r\n return (\r\n \r\n );\r\n },\r\n);\r\nEliminateAccountCheckbox.displayName = 'EliminateAccountCheckbox';\r\n\r\nexport const AccountsList = ({\r\n accounts,\r\n detailsColumns = [],\r\n displayNameChange,\r\n expansionMode = ExpansionMode.expanded,\r\n handleToggleAccountRow,\r\n identifyEliminatedAccounts = false,\r\n showAccountDetails = false,\r\n mode = DataGridModes.Default,\r\n dataId,\r\n accountsEliminationsState,\r\n accountsEliminationsDispatch,\r\n}: AccountsListProps): JSX.Element => {\r\n const arrayBuffer = 100; // prevent ref collision by spacing the array, assumes no account has more than this many children\r\n const checkboxesRef = useRef<(HTMLInputElement | null)[]>([]);\r\n\r\n useEffect(() => {\r\n // set the indeterminate state of the checkbox elements\r\n checkboxesRef.current.forEach((el) => {\r\n if (!el || el.type !== 'checkbox') {\r\n return;\r\n }\r\n el.indeterminate = false;\r\n const accountId = el.getAttribute('data-account-id');\r\n if (\r\n accountId !== null &&\r\n accountsEliminationsState &&\r\n accountsEliminationsState.indeterminateEliminations.includes(accountId)\r\n ) {\r\n el.indeterminate = true;\r\n }\r\n });\r\n });\r\n\r\n return (\r\n \r\n \r\n {accounts.map((account: AccountType, i: number) => (\r\n \r\n \r\n {mode === DataGridModes.EditEliminations && (\r\n \r\n \r\n \r\n {account.canEliminate ? (\r\n (checkboxesRef.current[i] = el)}\r\n />\r\n ) : (\r\n nbsp\r\n )}\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {account.children.length ? (\r\n handleToggleAccountRow(account.id)}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n {identifyEliminatedAccounts &&\r\n account.children.find((x) => x.isEliminated) && (\r\n \r\n )}\r\n \r\n {account.name}\r\n \r\n \r\n ) : (\r\n {account.name}\r\n )}\r\n \r\n \r\n {detailsColumns.includes(DetailsColumns.ReportCode) && (\r\n \r\n \r\n {account.reportCode}\r\n \r\n \r\n )}\r\n {detailsColumns.includes(DetailsColumns.DisplayName) &&\r\n typeof displayNameChange === 'function' && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n {account.children.map((accountChild: AccountChildrenType, j: number) => (\r\n \r\n {mode === DataGridModes.EditEliminations && (\r\n \r\n \r\n \r\n {accountChild.canEliminate ? (\r\n \r\n (checkboxesRef.current[(i + 1) * arrayBuffer + j] = el)\r\n }\r\n />\r\n ) : (\r\n nbsp\r\n )}\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {identifyEliminatedAccounts && accountChild.isEliminated && (\r\n \r\n )}\r\n {`${accountChild.name}`}\r\n \r\n \r\n {detailsColumns.includes(DetailsColumns.ReportCode) && (\r\n \r\n \r\n {nbsp}\r\n \r\n \r\n )}\r\n {detailsColumns.includes(DetailsColumns.DisplayName) &&\r\n typeof displayNameChange === 'function' && (\r\n \r\n \r\n {nbsp}\r\n \r\n \r\n )}\r\n \r\n ))}\r\n \r\n ))}\r\n \r\n \r\n );\r\n};\r\n","import styled from 'styled-components';\r\nimport { COLOR } from '../../../../packages/constants';\r\n\r\ninterface AccountsPanelProps {\r\n width: number;\r\n}\r\n\r\nexport const AccountsPanel = styled.div`\r\n min-width: ${(props) => `${props.width}px`};\r\n display: flex;\r\n flex-direction: column;\r\n position: relative;\r\n\r\n &::after {\r\n border-left: 1px solid ${COLOR.MAIN.FORM_FIELD};\r\n content: '';\r\n position: absolute;\r\n bottom: 0;\r\n left: 0;\r\n width: 1px;\r\n height: 17px;\r\n }\r\n`;\r\n","import styled from 'styled-components';\r\nimport { COLOR } from '../../../../packages/constants';\r\nimport { AccountCell } from '../account-cell/account-cell';\r\n\r\ninterface StyledScrollbarProps {\r\n dataGridWidth: number | null;\r\n}\r\ninterface ScrollProps {\r\n disabled: boolean;\r\n}\r\n\r\n/* removes the default scroll bar to the data grid table for: */\r\nexport const removeScrollbar = `\r\n /* - IE and Edge */\r\n -ms-overflow-style: none;\r\n /* - Firefox */\r\n scrollbar-width: none;\r\n /* - Webkit */\r\n &::-webkit-scrollbar {\r\n display: none;\r\n }\r\n`;\r\n\r\nexport const DataGridScroller = styled.div`\r\n box-sizing: border-box;\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n border-left: 1px solid ${COLOR.MAIN.FORM_FIELD};\r\n overflow: ${(props) => (props.disabled ? 'hidden' : 'auto')};\r\n width: 100%;\r\n\r\n ${removeScrollbar}\r\n\r\n ${AccountCell} {\r\n &:last-child {\r\n border-right: 0;\r\n }\r\n }\r\n`;\r\n\r\nexport const StyledScrollbarWrapper = styled.div`\r\n height: 17px;\r\n overflow-y: hidden;\r\n overflow-x: ${(props) => (props.disabled ? 'hidden' : 'auto')};\r\n position: sticky;\r\n bottom: 0;\r\n`;\r\n\r\nexport const StyledScrollbar = styled.div`\r\n height: 17px;\r\n width: ${(props) => (props.dataGridWidth ? `${props.dataGridWidth}px` : '0')};\r\n`;\r\n\r\nexport const StyledDataGrid = styled.div`\r\n box-sizing: border-box;\r\n border-top: 1px solid ${COLOR.MAIN.FORM_FIELD};\r\n border-right: 1px solid ${COLOR.MAIN.FORM_FIELD};\r\n border-bottom: 1px solid ${COLOR.MAIN.FORM_FIELD};\r\n display: flex;\r\n justify-content: space-between;\r\n flex-direction: column;\r\n`;\r\n\r\nexport const StyledDataGridInner = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n`;\r\n","import * as React from 'react'; // eslint-disable-line\r\nimport dayjs from 'dayjs';\r\nimport isBetween from 'dayjs/plugin/isBetween';\r\n\r\ndayjs.extend(isBetween);\r\n\r\ninterface AddFYTotalsProps {\r\n dataRow: {\r\n date: string;\r\n value: number;\r\n }[];\r\n currentFinancialYear: number;\r\n financialYearStartMonth: number;\r\n isBalanceSheet: boolean;\r\n endOfForecast: string;\r\n}\r\n\r\nexport const AddFYTotals = ({\r\n dataRow,\r\n currentFinancialYear,\r\n financialYearStartMonth,\r\n isBalanceSheet,\r\n endOfForecast,\r\n}: AddFYTotalsProps) => {\r\n if (!dataRow.length) return <>{0};\r\n\r\n let total = 0;\r\n\r\n const dataRowLength = dataRow.length;\r\n const start = dayjs(`${currentFinancialYear}-${financialYearStartMonth}`, 'YYYY-MM');\r\n const end = start.add(1, 'year');\r\n const endOfForecastDate = dayjs(endOfForecast);\r\n // check if balanceStart exceeds the endOfForecast date\r\n const balanceStart = start.add(11, 'month').isAfter(endOfForecast)\r\n ? endOfForecastDate // if it does, use the final month\r\n : start.add(11, 'month'); // otherwise use the 11th month from the start\r\n const balanceEnd = start.add(11, 'month').isAfter(endOfForecast) ? endOfForecastDate : end;\r\n // set the data start and end dates\r\n const dataStart = isBalanceSheet ? balanceStart : start;\r\n const dataEnd = isBalanceSheet ? balanceEnd : end;\r\n\r\n for (let i = 0; i < dataRowLength; i++) {\r\n // isBetween inclusive of start and end using '[]'\r\n if (dayjs(dataRow[i].date).isBetween(dataStart, dataEnd, null, '[]')) {\r\n total += dataRow[i].value;\r\n }\r\n }\r\n\r\n return <>{Number(total).toFixed(0)};\r\n};\r\n","import styled from 'styled-components';\r\nimport { COLOR } from '../../../../packages/constants';\r\nimport { AccountCell } from '../account-cell/account-cell';\r\nimport { AccountRow } from '../account-row/account-row';\r\nimport { removeScrollbar } from '../data-grid-scroller/data-grid-scroller';\r\n\r\nconst shadowWidth = 8;\r\n\r\nexport const StyledTable = styled.table`\r\n border-top: 1px solid ${COLOR.MAIN.FORM_FIELD};\r\n ${AccountRow}:first-child ${AccountCell} {\r\n border-top: none;\r\n }\r\n`;\r\n\r\nexport const DataGridTotal = styled.table`\r\n border-top: 1px solid ${COLOR.MAIN.FORM_FIELD};\r\n position: relative;\r\n width: 130px;\r\n\r\n tr:first-child ${AccountCell} {\r\n border-top: none;\r\n }\r\n\r\n ${AccountCell} {\r\n border-left: 1px solid ${COLOR.DATAGRID.DATAGRID_DIVIDER_LINE};\r\n\r\n &:last-child {\r\n border-right: 0;\r\n }\r\n }\r\n\r\n &::after {\r\n background-image: linear-gradient(90deg, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.07));\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n left: -${shadowWidth}px;\r\n height: 100%;\r\n width: ${shadowWidth}px;\r\n }\r\n`;\r\n\r\nexport const StyledFloatTable = styled.table`\r\n border-top: 1px solid ${COLOR.MAIN.FORM_FIELD};\r\n border-bottom: 1px solid ${COLOR.MAIN.FORM_FIELD};\r\n`;\r\n\r\nexport const AccountHeader = styled.thead`\r\n width: 100%;\r\n`;\r\n\r\nexport const FloatTableHead = styled.div`\r\n position: sticky;\r\n z-index: 12;\r\n top: 0;\r\n`;\r\n\r\nexport const FloatHead = styled.div`\r\n box-sizing: border-box;\r\n border-left: 1px solid ${COLOR.MAIN.FORM_FIELD};\r\n position: sticky;\r\n z-index: 12;\r\n top: 0;\r\n display: flex;\r\n width: 100%;\r\n overflow: auto;\r\n\r\n ${removeScrollbar}\r\n\r\n ${AccountCell} {\r\n &:last-child {\r\n border-right: 0;\r\n }\r\n }\r\n`;\r\n","import * as React from 'react'; // eslint-disable-line\r\nimport { memo } from 'react';\r\nimport styled from 'styled-components';\r\nimport classNames from 'classnames';\r\n\r\nimport { COLOR } from '../../../../packages/constants';\r\nimport { camelToKebab } from '../../../../../Scripts/Spotlight/Components/CamelToKebab';\r\nimport { AccountChildrenType, AccountType, DataGridData, ExpansionMode, isExpanded, TitleBar } from '../../data-grid';\r\nimport { AccountCell } from '../account-cell/account-cell';\r\n\r\nimport { AddFYTotals } from '../add-fy-totals/add-fy-total';\r\nimport { DataGridTotal, StyledFloatTable, FloatTableHead } from '../table/table';\r\n\r\nconst FYTotalColumnContainer = styled.div<{ disabled: boolean }>`\r\n ${(props) => props.disabled && `opacity: 0.2;`};\r\n`;\r\n\r\nconst HeaderTable = styled(StyledFloatTable)`\r\n border-right: 0px;\r\n width: 100%;\r\n`;\r\n\r\nconst FYTotalAccountCellHeading = styled(AccountCell)`\r\n border-left-color: ${COLOR.DATAGRID.DATAGRID_DIVIDER_LINE};\r\n`;\r\n\r\nconst FYHeadingYearText = styled.span`\r\n font-weight: 400;\r\n`;\r\n\r\nconst MemoizedAddFYTotals = memo(AddFYTotals);\r\n\r\ninterface FYTotalColumn {\r\n dataId: string;\r\n gridData: DataGridData;\r\n expansionMode: ExpansionMode;\r\n currentFinancialYear: number;\r\n financialYearStartMonth: number;\r\n isBalanceSheet: boolean;\r\n disabled: boolean;\r\n}\r\n\r\nexport const FYTotalColumn: React.FC> = ({\r\n dataId,\r\n gridData,\r\n expansionMode,\r\n currentFinancialYear,\r\n financialYearStartMonth,\r\n isBalanceSheet,\r\n disabled,\r\n}) => {\r\n return (\r\n \r\n  \r\n \r\n \r\n \r\n \r\n \r\n \r\n Total{' '}\r\n \r\n FY{`${currentFinancialYear + 1}`.substring(2)}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {gridData.accounts.map((account: AccountType, accountIndex: number) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {account.children.map((accountChild: AccountChildrenType, accountChildIndex: number) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n ))}\r\n \r\n \r\n \r\n );\r\n};\r\n","import * as React from 'react'; // eslint-disable-line\r\nimport dayjs, { Dayjs } from 'dayjs';\r\nimport { AccountCell } from '../account-cell/account-cell';\r\n\r\ninterface HeaderCellProps {\r\n dataId: string;\r\n month: Dayjs;\r\n financialYearStartMonth: number;\r\n}\r\n\r\nexport const HeaderCell = ({ dataId, month, financialYearStartMonth }: HeaderCellProps) => {\r\n return (\r\n \r\n {month.format('MMM YY')}\r\n \r\n );\r\n};\r\n","import * as React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nimport { FONT_SIZE, SPACING } from '../../../../packages/constants';\r\nimport THEME from '../../../../packages/constants/themes';\r\nimport { DataGridModes } from '../../data-grid';\r\nimport { Button } from '../../../button';\r\n\r\nconst TopRow = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n padding-top: ${SPACING.X_SMALL};\r\n padding-bottom: ${SPACING.X_SMALL};\r\n`;\r\n\r\nconst TopRowLeftButtonsWrapper = styled.div`\r\n display: flex;\r\n margin-right: auto;\r\n`;\r\n\r\nconst TextAccounts = styled.p`\r\n align-self: center;\r\n font-size: ${FONT_SIZE.SMALL};\r\n`;\r\n\r\nconst TextCurrency = styled.p`\r\n align-self: center;\r\n font-size: ${FONT_SIZE.X_SMALL};\r\n`;\r\n\r\nconst EliminationsSaveButton = styled(Button)`\r\n margin: 0 0 0 10px;\r\n padding: 0 8px;\r\n`;\r\n\r\nconst EliminationsCancelButton = styled(Button)`\r\n margin: 0 0 0 10px;\r\n padding: 0 8px;\r\n`;\r\n\r\nconst EliminationsEditButton = styled(Button)`\r\n margin: 0 0 0 10px;\r\n padding: 0 8px;\r\n`;\r\n\r\nconst AdjustArapButton = styled(Button)`\r\n margin: 0 auto 0 10px;\r\n padding: 0 8px;\r\n`;\r\n\r\ninterface EliminationsControlsProps {\r\n dataId: string;\r\n mode: DataGridModes;\r\n editEliminationsHandler: () => void;\r\n saveEliminationsHandler: () => void;\r\n cancelEliminationsHandler: () => void;\r\n}\r\n\r\nexport const EliminationsControls: React.FC> = ({\r\n dataId,\r\n mode,\r\n editEliminationsHandler,\r\n saveEliminationsHandler,\r\n cancelEliminationsHandler,\r\n}) => {\r\n if (mode === DataGridModes.EditEliminations) {\r\n return (\r\n <>\r\n \r\n Save Eliminations\r\n \r\n \r\n Cancel\r\n \r\n \r\n );\r\n } else {\r\n return (\r\n \r\n Edit Eliminations\r\n \r\n );\r\n }\r\n};\r\n\r\ninterface DataGridHeaderProps {\r\n dataId: string;\r\n mode: DataGridModes;\r\n numAccounts: number;\r\n currency: string;\r\n hasEliminationsMode: boolean;\r\n hasArapAdjustments: boolean;\r\n editEliminationsHandler: () => void;\r\n saveEliminationsHandler: () => Promise;\r\n cancelEliminationsHandler: () => void;\r\n adjustArapHandler: () => void;\r\n}\r\n\r\nexport const DataGridHeader: React.FC> = ({\r\n dataId,\r\n mode,\r\n numAccounts,\r\n currency,\r\n hasEliminationsMode,\r\n hasArapAdjustments,\r\n editEliminationsHandler,\r\n saveEliminationsHandler,\r\n cancelEliminationsHandler,\r\n adjustArapHandler,\r\n}) => {\r\n return (\r\n \r\n {numAccounts} Accounts\r\n \r\n {hasEliminationsMode && (\r\n \r\n )}\r\n {hasArapAdjustments && mode != DataGridModes.EditEliminations && (\r\n \r\n Adjust AR & AP\r\n \r\n )}\r\n \r\n \r\n All values are in {currency}\r\n \r\n \r\n );\r\n};\r\n","import * as React from 'react';\r\nimport { memo, useEffect } from 'react';\r\n\r\nimport classNames from 'classnames';\r\nimport dayjs, { Dayjs } from 'dayjs';\r\nimport isSameOrAfter from 'dayjs/plugin/isSameOrAfter';\r\nimport styled from 'styled-components';\r\nimport { useDebouncedCallback } from 'use-debounce';\r\n\r\nimport { camelToKebab } from '../../../Scripts/Spotlight/Components/CamelToKebab';\r\nimport { COLOR, FONT_SIZE, SPACING } from '../../packages/constants';\r\nimport { SaveCallbackFn } from './atoms/account-cell-input/account-cell-input';\r\nimport { AccountCell } from './atoms/account-cell/account-cell';\r\nimport { AccountRow } from './atoms/account-row/account-row';\r\nimport { AccountsList } from './atoms/accounts-list/accounts-list';\r\nimport { AccountsPanel } from './atoms/accounts-panel/accounts-panel';\r\nimport {\r\n DataGridScroller,\r\n StyledDataGrid,\r\n StyledDataGridInner,\r\n StyledScrollbar,\r\n StyledScrollbarWrapper,\r\n} from './atoms/data-grid-scroller/data-grid-scroller';\r\nimport { FYTotalColumn } from './atoms/fy-total-column/fy-total-column';\r\nimport { HeaderCell } from './atoms/header-cell/header-cell';\r\nimport { DataGridHeader } from './atoms/header/header';\r\nimport { StyledChevronLeft, StyledChevronRight } from './atoms/icons/icons';\r\nimport { StyledTable, StyledFloatTable, AccountHeader, FloatHead, FloatTableHead } from './atoms/table/table';\r\n\r\ndayjs.extend(isSameOrAfter);\r\n\r\nexport interface AccountChildrenType {\r\n id: string;\r\n name: string;\r\n displayName?: string | null;\r\n reportCode?: string | null;\r\n type?: string | null;\r\n children?: AccountChildrenType[] | null;\r\n isEliminated?: boolean;\r\n canEliminate?: boolean;\r\n}\r\n\r\nexport interface AccountType {\r\n id: string;\r\n name: string;\r\n displayName: string | null;\r\n reportCode: string | null;\r\n type: string;\r\n children: AccountChildrenType[];\r\n isEliminated?: boolean;\r\n canEliminate?: boolean;\r\n}\r\n\r\nexport interface DataGridData {\r\n organisation: {\r\n id: string;\r\n name: string;\r\n currency: string;\r\n financialYearStartMonth: number;\r\n startDate: string;\r\n endDate: string;\r\n lastActualsDate: string;\r\n };\r\n accounts: AccountType[];\r\n data: MonthlyDataGroupedByKey;\r\n bandType: string;\r\n mode: string;\r\n isGroup: boolean;\r\n}\r\n\r\n/**\r\n * Columns that appear after the accounts list in a toggleable details pane\r\n */\r\nexport enum DetailsColumns {\r\n ReportCode = 'REPORTCODE',\r\n DisplayName = 'DISPLAYNAME',\r\n}\r\n\r\n/**\r\n * Columns that appear in front of the accounts list\r\n */\r\nexport enum AccountColumns {\r\n Elimination = 'ELIMINATION',\r\n}\r\n\r\n/**\r\n * Columns that appear on the grid (aligned to the end)\r\n */\r\nexport enum GridColumns {\r\n EndOfFinancialYearTotal = 'EOFYTOTAL',\r\n}\r\nexport interface DataGridProps {\r\n data: DataGridData;\r\n /**\r\n * Data Test ID\r\n */\r\n dataId: string;\r\n /**\r\n * External function to update displayName\r\n */\r\n displayNameChange?: SaveCallbackFn;\r\n /**\r\n * Choose what columns to show in the detailsColumns\r\n */\r\n detailsColumns?: DetailsColumns[];\r\n /**\r\n * Option to hide the EOFY column\r\n */\r\n gridColumns?: GridColumns[];\r\n /**\r\n * Expand/Collapse all rows\r\n */\r\n expansionMode?: ExpansionMode;\r\n /**\r\n * Change EOFY calculation method for Balance Sheet\r\n */\r\n isBalanceSheet?: boolean;\r\n /**\r\n * Display the eliminated icon on eliminated account rows\r\n */\r\n identifyEliminatedAccounts?: boolean;\r\n /**\r\n * Can enter mode to edit eliminations\r\n */\r\n hasEliminationsMode?: boolean;\r\n /**\r\n * Can adjust AR and AP\r\n */\r\n hasArapAdjustments?: boolean;\r\n themeProvider?: {};\r\n /**\r\n * External function to dispatch actions to\r\n */\r\n actionHandler?: (action: Action) => Promise;\r\n}\r\n\r\ninterface Action {\r\n type: TType;\r\n payload?: TPayload;\r\n}\r\n\r\ninterface MonthlyDataPoint {\r\n date: string;\r\n value: number;\r\n}\r\n\r\ninterface MonthlyDataGroupedByKey {\r\n [key: string]: MonthlyDataPoint[];\r\n}\r\n\r\ninterface MonthlyDataValueLookup {\r\n [k: string]: number;\r\n}\r\n\r\ninterface GetCellValueProps {\r\n isGroup?: boolean;\r\n month: Dayjs;\r\n accountId: string;\r\n actualsToDate: Dayjs;\r\n monthlyData: MonthlyDataValueLookup;\r\n accountName: string;\r\n dataId: string;\r\n}\r\n\r\n/**\r\n * Different modes control which accounts should be expanded\r\n * In future this might have several modes for having different\r\n * levels of nesting or account types expanded or not\r\n */\r\nexport enum ExpansionMode {\r\n collapsed = 'COLLAPSED', // collapses all accounts\r\n expanded = 'EXPANDED', // expands all accounts\r\n}\r\n\r\n/**\r\n * Actions dispatched to an external handler\r\n */\r\nexport enum DataGridExternalActions {\r\n FETCH_DATA = 'FETCH_DATA',\r\n SAVE_ELIMINATIONS = 'SAVE_ELIMINATIONS',\r\n ADJUST_ARAP = 'ADJUST_ARAP',\r\n}\r\n\r\n/*\r\n * Accounts Eliminations\r\n */\r\n\r\nexport type EliminationsSettings = string[];\r\n\r\nexport enum AccountsEliminationsActionTypes {\r\n TOGGLE_ELIMINATION = 'TOGGLE_ELIMINATION',\r\n RESET_SETTINGS = 'RESET_SETTINGS',\r\n}\r\n\r\nexport interface AccountsEliminationsState {\r\n eliminationsSettings: EliminationsSettings;\r\n indeterminateEliminations: string[];\r\n}\r\n\r\ninterface AccountsEliminationsResetSettingsAction {\r\n type: AccountsEliminationsActionTypes.RESET_SETTINGS;\r\n payload: {\r\n eliminationsSettings: EliminationsSettings;\r\n indeterminateEliminations: string[];\r\n };\r\n}\r\n\r\ninterface AccountsEliminationsToggleEliminationAction {\r\n type: AccountsEliminationsActionTypes.TOGGLE_ELIMINATION;\r\n account: AccountType | AccountChildrenType;\r\n parentAccount?: AccountType;\r\n}\r\n\r\nexport type AccountsEliminationsActions =\r\n | AccountsEliminationsResetSettingsAction\r\n | AccountsEliminationsToggleEliminationAction;\r\n\r\n/**\r\n * Maps accounts that are eliminated to an array.\r\n * Also determines accounts are eliminated if their children are all eliminated.\r\n * Assumes all children are returned necessary to determine the parent is eliminated.\r\n */\r\nconst getEliminatedAccounts = (accounts: AccountType[]) => {\r\n const eliminatedAccounts: string[] = [];\r\n accounts.forEach((account) => {\r\n if (account.isEliminated) {\r\n eliminatedAccounts.push(account.id);\r\n }\r\n if (account.children && account.children.length > 0) {\r\n // filter to get eliminated child accounts\r\n const eliminatedChildren = account.children.filter((item) => {\r\n return item.isEliminated;\r\n });\r\n const eliminatedChildrenIds = eliminatedChildren.map((item) => {\r\n return item.id;\r\n });\r\n /*\r\n * check if the length of the set matches account children length\r\n * if it does, push the account to eliminatedAccounts array\r\n */\r\n if (eliminatedChildren.length === account.children.length) {\r\n eliminatedAccounts.push(account.id);\r\n }\r\n // push the filtered set of child accounts to eliminatedAccounts array\r\n eliminatedAccounts.push(...eliminatedChildrenIds);\r\n }\r\n });\r\n return eliminatedAccounts;\r\n};\r\n\r\nconst getIndeterminateAccounts = (accounts: AccountType[]) => {\r\n const indeterminateAccounts = accounts.filter((account) => {\r\n // set indeterminate if not all children are checked/unchecked\r\n const checkedChildAccounts = account.children.filter((item: AccountChildrenType) => {\r\n return item.isEliminated;\r\n });\r\n if (checkedChildAccounts.length !== 0 && checkedChildAccounts.length !== account.children.length) {\r\n return true;\r\n }\r\n return false;\r\n });\r\n const indeterminateAccountIds: string[] = indeterminateAccounts.map((item) => item.id);\r\n return indeterminateAccountIds;\r\n};\r\n\r\nexport const accountsEliminationsReducer = (\r\n state: AccountsEliminationsState,\r\n action: AccountsEliminationsActions,\r\n): AccountsEliminationsState => {\r\n const handleUpdate = ({\r\n account,\r\n parentAccount,\r\n }: {\r\n account: AccountType | AccountChildrenType;\r\n parentAccount?: AccountType;\r\n }) => {\r\n // toggle state\r\n // push to eliminationsSettings array\r\n const eliminationsSettingsCopy = [...state.eliminationsSettings];\r\n const indeterminateEliminationsCopy = [...state.indeterminateEliminations];\r\n const matchedIndex = eliminationsSettingsCopy.indexOf(account.id);\r\n const isAdding = matchedIndex < 0;\r\n\r\n if (isAdding) {\r\n eliminationsSettingsCopy.push(account.id);\r\n } else {\r\n eliminationsSettingsCopy.splice(matchedIndex, 1);\r\n }\r\n\r\n // remove this account from indeterminate state\r\n const indeterminateAccountIndex = indeterminateEliminationsCopy.indexOf(account.id);\r\n if (indeterminateAccountIndex >= 0) {\r\n indeterminateEliminationsCopy.splice(indeterminateAccountIndex, 1);\r\n }\r\n\r\n if (typeof parentAccount !== 'undefined') {\r\n // remove parent from indeterminate state\r\n const indeterminateParentAccountIndex = indeterminateEliminationsCopy.indexOf(parentAccount.id);\r\n if (indeterminateParentAccountIndex >= 0) {\r\n indeterminateEliminationsCopy.splice(indeterminateParentAccountIndex, 1);\r\n }\r\n //\r\n if (isAdding) {\r\n // set indeterminate if not all children are checked\r\n const checkedItems = parentAccount.children.filter((item: any) => {\r\n const isItemChecked = eliminationsSettingsCopy.includes(item.id);\r\n return isItemChecked;\r\n });\r\n if (\r\n checkedItems.length < parentAccount.children.length &&\r\n !indeterminateEliminationsCopy.includes(parentAccount.id)\r\n ) {\r\n indeterminateEliminationsCopy.push(parentAccount.id);\r\n } else {\r\n // check if all children are checked\r\n if (!eliminationsSettingsCopy.includes(parentAccount.id)) {\r\n eliminationsSettingsCopy.push(parentAccount.id);\r\n }\r\n }\r\n } else {\r\n // uncheck\r\n const parentAccountMatchedIndex = eliminationsSettingsCopy.indexOf(parentAccount.id);\r\n if (parentAccountMatchedIndex >= 0) {\r\n eliminationsSettingsCopy.splice(parentAccountMatchedIndex, 1);\r\n }\r\n // set indeterminate if not all children are unchecked\r\n const distinct = parentAccount.children.filter((item: any) => {\r\n const isItemChecked = eliminationsSettingsCopy.includes(item.id);\r\n return isItemChecked;\r\n });\r\n if (distinct.length > 0 && !indeterminateEliminationsCopy.includes(parentAccount.id)) {\r\n indeterminateEliminationsCopy.push(parentAccount.id);\r\n }\r\n }\r\n }\r\n if (account.children) {\r\n // toggle children\r\n account.children.forEach((childAccount: any) => {\r\n const childMatchedIndex = eliminationsSettingsCopy.indexOf(childAccount.id);\r\n const alreadyHasChild = childMatchedIndex >= 0;\r\n if (isAdding && !alreadyHasChild) {\r\n eliminationsSettingsCopy.push(childAccount.id);\r\n } else if (!isAdding && alreadyHasChild) {\r\n eliminationsSettingsCopy.splice(childMatchedIndex, 1);\r\n }\r\n });\r\n }\r\n\r\n return {\r\n eliminationsSettings: eliminationsSettingsCopy,\r\n indeterminateEliminations: indeterminateEliminationsCopy,\r\n };\r\n };\r\n\r\n switch (action.type) {\r\n case AccountsEliminationsActionTypes.TOGGLE_ELIMINATION: {\r\n const newState = handleUpdate({ account: action.account, parentAccount: action.parentAccount });\r\n return { ...newState };\r\n }\r\n case AccountsEliminationsActionTypes.RESET_SETTINGS: {\r\n const newState = { ...state };\r\n newState.eliminationsSettings = action.payload.eliminationsSettings;\r\n newState.indeterminateEliminations = action.payload.indeterminateEliminations;\r\n return { ...newState };\r\n }\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport const TitleBar = styled.div`\r\n border-left: 1px solid ${COLOR.MAIN.FORM_FIELD};\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n color: ${COLOR.DATAGRID.DATAGRID_TEXT};\r\n display: flex;\r\n align-items: center;\r\n font-size: ${FONT_SIZE.X_SMALL};\r\n font-weight: 700;\r\n justify-content: space-between;\r\n padding: ${SPACING.SMALL};\r\n min-height: 18px;\r\n`;\r\n\r\nconst ToggleAccountDetails = styled.button`\r\n border: 0;\r\n background-color: transparent;\r\n color: ${COLOR.DATAGRID.DATAGRID_TEXT};\r\n cursor: pointer;\r\n line-height: 12px;\r\n font-size: inherit;\r\n border-bottom: 1px solid ${COLOR.PRIMARY.BLACK};\r\n display: flex;\r\n align-items: center;\r\n padding: 0;\r\n`;\r\n\r\nconst DataGridDataTableContainer = styled.div<{ nonDataColumnsWidth: number; disabled: boolean }>`\r\n width: calc(100% - ${(props) => props.nonDataColumnsWidth}px);\r\n position: relative;\r\n ${(props) => props.disabled && `opacity: 0.2;`};\r\n`;\r\n\r\n// flatten the monthly data\r\nconst flattenData = (data: MonthlyDataGroupedByKey) => {\r\n const flatData: MonthlyDataValueLookup = {};\r\n for (const item in data) {\r\n for (const monthlyDataPoint of data[item]) {\r\n flatData[`${item}-${dayjs(monthlyDataPoint.date).format('YYYY-MM')}`] = monthlyDataPoint.value;\r\n }\r\n }\r\n return flatData;\r\n};\r\n\r\nconst GetCellValue = ({\r\n isGroup,\r\n month,\r\n accountId,\r\n actualsToDate,\r\n monthlyData,\r\n accountName,\r\n dataId,\r\n}: GetCellValueProps) => {\r\n const formatString = 'YYYY-MM';\r\n const monthFormatted = dayjs(month).format(formatString);\r\n let value = 0;\r\n const hasVal = typeof monthlyData[`${accountId}-${monthFormatted}`] !== 'undefined';\r\n if (hasVal) {\r\n value = monthlyData[`${accountId}-${monthFormatted}`];\r\n } else {\r\n value = 0;\r\n }\r\n\r\n return (\r\n \r\n {value}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * determines if the account is expanded according to the expansion mode and type of account\r\n * @param expansionMode\r\n * @param account\r\n */\r\n// account is currently unused but should be passed through to make it possible to be used\r\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nexport const isExpanded = (expansionMode: ExpansionMode, account: AccountType | AccountChildrenType): boolean => {\r\n return expansionMode === ExpansionMode.expanded;\r\n};\r\n\r\nconst MemoizedGetCellValue = memo(GetCellValue);\r\n\r\nexport const columnWidths = {\r\n accounts: 305,\r\n eliminations: 71,\r\n reportCode: 142,\r\n displayName: 156,\r\n endOfFinancialYearTotal: 130,\r\n};\r\n\r\nexport const handleToggleAccountRow = (id: string): void => {\r\n // DOM manipulation to make performance better.\r\n const dataIds = document.querySelectorAll(`.parent-id-${id}`);\r\n const rowIcons = document.querySelectorAll(`[data-account=\"${id}\"] .icon--toggle-row`);\r\n dataIds.forEach((element) => element.classList.toggle('h-display--none'));\r\n rowIcons.forEach((element) => element.classList.toggle('h-display--none'));\r\n};\r\n\r\n/**\r\n * The interaction mode of the grid\r\n */\r\nexport enum DataGridModes {\r\n Default = 'DEFAULT',\r\n EditEliminations = 'EDIT_ELIMINATIONS',\r\n}\r\n\r\nconst DataGrid: React.FC> = ({\r\n data,\r\n dataId,\r\n detailsColumns = [],\r\n gridColumns = [],\r\n expansionMode = ExpansionMode.expanded,\r\n displayNameChange,\r\n isBalanceSheet = false,\r\n identifyEliminatedAccounts = false,\r\n hasEliminationsMode = false,\r\n hasArapAdjustments = false,\r\n actionHandler,\r\n ...props\r\n}) => {\r\n const [showAccountDetails, toggleAccountDetails] = React.useState(false);\r\n const [gridData, setGridData] = React.useState(data);\r\n const [dataGridWidth, setDataGridWidth] = React.useState(0);\r\n const [arrMonths, setArrMonths] = React.useState([]);\r\n const [monthlyData, setMonthlyData] = React.useState(flattenData(data.data));\r\n const [currentFinancialYear, setCurrentFinancialYear] = React.useState(0);\r\n const [actualsToDate, setActualsToDate] = React.useState(dayjs(data.organisation.lastActualsDate));\r\n const [mode, setMode] = React.useState(DataGridModes.Default);\r\n const [accountsEliminationsState, accountsEliminationsDispatch] = React.useReducer(accountsEliminationsReducer, {\r\n eliminationsSettings: getEliminatedAccounts(gridData.accounts),\r\n indeterminateEliminations: getIndeterminateAccounts(gridData.accounts),\r\n });\r\n\r\n const StyledDataGridRef = React.useRef(null);\r\n const DataGridScrollerRef = React.useRef(null);\r\n const DataGridTableRef = React.useRef(null);\r\n const ScrollBarRef = React.useRef(null);\r\n const FloatHeadRef = React.useRef(null);\r\n const FloatHeadRowRef = React.useRef(null);\r\n\r\n let ticking = false;\r\n\r\n const hasDetailsColumns = detailsColumns.length > 0;\r\n const hasFYTotal = gridColumns.includes(GridColumns.EndOfFinancialYearTotal);\r\n\r\n const accountsPanelWidth = (() => {\r\n const accountsWidth = columnWidths.accounts;\r\n const accountColumnsWidth = mode === DataGridModes.EditEliminations ? columnWidths.eliminations : 0;\r\n const detailsWidth = showAccountDetails\r\n ? (() => {\r\n let dw = 0;\r\n detailsColumns.includes(DetailsColumns.ReportCode) && (dw += columnWidths.reportCode);\r\n detailsColumns.includes(DetailsColumns.DisplayName) && (dw += columnWidths.displayName);\r\n return dw;\r\n })()\r\n : 0;\r\n return accountsWidth + accountColumnsWidth + detailsWidth;\r\n })();\r\n\r\n const nonDataColumnsWidth = (() => {\r\n const gridColumnsWidth = hasFYTotal ? columnWidths.endOfFinancialYearTotal : 0;\r\n return accountsPanelWidth + gridColumnsWidth;\r\n })();\r\n\r\n const cells = FloatHeadRef.current && FloatHeadRef.current.querySelectorAll('[data-fy]');\r\n\r\n function update() {\r\n const DataGridScrollerScrollLeft = DataGridScrollerRef.current && DataGridScrollerRef.current.scrollLeft;\r\n const DataGridScrollerRects = DataGridScrollerRef.current && DataGridScrollerRef.current.getClientRects();\r\n\r\n if (DataGridScrollerScrollLeft !== null && DataGridScrollerRects !== null && cells !== null && cells.length) {\r\n const cellNumber =\r\n DataGridScrollerRects[0] &&\r\n cells[0] &&\r\n Math.floor(\r\n (DataGridScrollerRects[0].width + DataGridScrollerScrollLeft) /\r\n cells[0].getBoundingClientRect().width,\r\n );\r\n const cellElement = cells[cellNumber];\r\n\r\n // @ts-ignore\r\n if (cellElement && currentFinancialYear !== Number(cellElement.dataset.fy)) {\r\n // @ts-ignore\r\n setCurrentFinancialYear(Number(cellElement.dataset.fy));\r\n }\r\n if (FloatHeadRowRef.current !== null && DataGridScrollerRef.current !== null) {\r\n if (\r\n FloatHeadRowRef.current.getBoundingClientRect().width -\r\n DataGridScrollerRef.current.getBoundingClientRect().width ===\r\n DataGridScrollerScrollLeft &&\r\n cells[cellNumber - 1]\r\n ) {\r\n // @ts-ignore\r\n setCurrentFinancialYear(Number(cells[cellNumber - 1].dataset.fy));\r\n }\r\n }\r\n }\r\n ticking = false;\r\n }\r\n\r\n function requestTick() {\r\n if (!ticking) {\r\n requestAnimationFrame(update);\r\n ticking = true;\r\n }\r\n }\r\n\r\n function handleScroll() {\r\n requestTick();\r\n }\r\n\r\n handleScroll();\r\n\r\n const handleDataGridScroll = useDebouncedCallback(() => {\r\n if (ScrollBarRef.current !== null && DataGridScrollerRef.current !== null && FloatHeadRef.current !== null) {\r\n const DataGridScrollerScrollLeft = DataGridScrollerRef.current.scrollLeft;\r\n ScrollBarRef.current.scrollLeft = DataGridScrollerScrollLeft;\r\n FloatHeadRef.current.scrollLeft = DataGridScrollerScrollLeft;\r\n }\r\n }, 10);\r\n\r\n const handleScrollBarScroll = () => {\r\n if (DataGridScrollerRef.current !== null && ScrollBarRef.current !== null && FloatHeadRef.current !== null) {\r\n handleScroll();\r\n\r\n DataGridScrollerRef.current.scrollLeft = ScrollBarRef.current.scrollLeft;\r\n FloatHeadRef.current.scrollLeft = DataGridScrollerRef.current.scrollLeft;\r\n }\r\n };\r\n\r\n // update the grid data state when data prop updates\r\n useEffect(() => {\r\n setGridData(data);\r\n }, [data]);\r\n\r\n useEffect(() => {\r\n const startDate = dayjs(gridData.organisation.startDate);\r\n const endDate = dayjs(gridData.organisation.endDate);\r\n // create monthly range between startDate and endDate\r\n const months: Dayjs[] = [];\r\n const diffBetween = endDate.diff(startDate, 'month');\r\n for (let i = 0; i <= diffBetween; i++) {\r\n months.push(startDate.add(i, 'month'));\r\n }\r\n setArrMonths(months);\r\n }, [gridData.organisation.startDate, gridData.organisation.endDate]);\r\n\r\n useEffect(() => {\r\n setActualsToDate(dayjs(gridData.organisation.lastActualsDate));\r\n }, [gridData.organisation.lastActualsDate]);\r\n\r\n useEffect(() => {\r\n setMonthlyData(flattenData(gridData.data));\r\n }, [gridData.data]);\r\n\r\n useEffect(() => {\r\n const getDimensions = () => ({\r\n width: (DataGridTableRef.current && DataGridTableRef.current.offsetWidth) || 0,\r\n });\r\n setDataGridWidth(getDimensions().width);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [DataGridTableRef.current]);\r\n\r\n /* Action handlers */\r\n\r\n const toggleAccountDetailsHandler = () => toggleAccountDetails(!showAccountDetails);\r\n\r\n const editEliminationsHandler = () => {\r\n // set the mode to eliminations mode\r\n setMode(DataGridModes.EditEliminations);\r\n };\r\n\r\n const saveEliminationsHandler = async () => {\r\n if (typeof actionHandler !== 'function') {\r\n // set the mode back to default\r\n setMode(DataGridModes.Default);\r\n return;\r\n }\r\n // save the eliminations settings\r\n await actionHandler({\r\n type: DataGridExternalActions.SAVE_ELIMINATIONS,\r\n payload: { settings: accountsEliminationsState.eliminationsSettings },\r\n });\r\n // set the mode back to default\r\n setMode(DataGridModes.Default);\r\n };\r\n\r\n const cancelEliminationsHandler = () => {\r\n const eliminationsSettings = getEliminatedAccounts(gridData.accounts);\r\n const indeterminateEliminations = getIndeterminateAccounts(gridData.accounts);\r\n\r\n accountsEliminationsDispatch({\r\n type: AccountsEliminationsActionTypes.RESET_SETTINGS,\r\n payload: {\r\n eliminationsSettings: eliminationsSettings,\r\n indeterminateEliminations: indeterminateEliminations,\r\n },\r\n });\r\n\r\n setMode(DataGridModes.Default);\r\n };\r\n\r\n const adjustArapHandler = () => {\r\n if (typeof actionHandler !== 'function') {\r\n return;\r\n }\r\n actionHandler({ type: DataGridExternalActions.ADJUST_ARAP });\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n Accounts{' '}\r\n {hasDetailsColumns && (\r\n \r\n {showAccountDetails && } {showAccountDetails ? 'Hide' : 'Show'}{' '}\r\n details️ {!showAccountDetails && }\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n {mode === DataGridModes.EditEliminations && (\r\n \r\n \r\n Eliminate\r\n \r\n \r\n )}\r\n \r\n \r\n Account Name\r\n \r\n \r\n {detailsColumns.includes(DetailsColumns.ReportCode) && (\r\n \r\n \r\n Report Code\r\n \r\n \r\n )}\r\n {detailsColumns.includes(DetailsColumns.DisplayName) && (\r\n \r\n \r\n Spotlight Display Name\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n  \r\n
    \r\n \r\n \r\n \r\n \r\n {arrMonths.map((month: Dayjs) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n handleDataGridScroll()}\r\n disabled={mode === DataGridModes.EditEliminations}\r\n >\r\n \r\n \r\n {gridData.accounts.map((account: AccountType) => (\r\n \r\n \r\n {arrMonths.map((month: Dayjs) => (\r\n \r\n \r\n \r\n ))}\r\n \r\n {account.children.map((accountChild: AccountChildrenType) => (\r\n \r\n {arrMonths.map((month: Dayjs) => (\r\n \r\n \r\n \r\n ))}\r\n \r\n ))}\r\n \r\n ))}\r\n \r\n \r\n \r\n handleScrollBarScroll()}\r\n disabled={mode === DataGridModes.EditEliminations}\r\n >\r\n \r\n \r\n \r\n {hasFYTotal && (\r\n \r\n )}{' '}\r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport { DataGrid };\r\n","import * as React from 'react';\r\nimport { useCallback, useEffect, useState } from 'react';\r\n\r\nimport { ArrowSeparateVertical, NavArrowUp, NavArrowDown } from 'iconoir-react';\r\nimport cloneDeep from 'lodash/cloneDeep';\r\nimport styled from 'styled-components';\r\nimport useDeepCompareEffect from 'use-deep-compare-effect';\r\n\r\nimport { camelToKebab } from '../../../Scripts/Spotlight/Components/CamelToKebab';\r\nimport { anyCompare, stringCompare } from '../../../Scripts/Spotlight/Utilities/sort';\r\nimport { COLOR, SPACING } from '../../packages/constants';\r\nimport { LoadingSpinner } from '../loading-spinner';\r\n\r\nexport interface DataTableColumnDefinition {\r\n name: string;\r\n header: string;\r\n hideHeader?: boolean;\r\n dataId?: string;\r\n width?: string;\r\n sortable?: boolean;\r\n compareFn?: (value1: any, value2: any) => number;\r\n render?: (row: any) => JSX.Element;\r\n}\r\n\r\ninterface RowData {\r\n id: string;\r\n [key: string]: any;\r\n}\r\n\r\nexport interface DataTableRowDefinition {\r\n data: RowData;\r\n className?: string;\r\n dataId?: string;\r\n}\r\n\r\nexport interface DataTableProps {\r\n columns: DataTableColumnDefinition[];\r\n rows: DataTableRowDefinition[];\r\n defaultSortColumn?: string;\r\n defaultSortDirection?: SortDirection;\r\n rowHeight?: string;\r\n headerFontSize?: string;\r\n dataFontSize?: string;\r\n loading?: boolean;\r\n ariaLabel?: string;\r\n dataId?: string;\r\n pinnedRows?: string[];\r\n}\r\n\r\nexport enum SortDirection {\r\n Ascending = 'ASCENDING',\r\n Descending = 'DESCENDING',\r\n}\r\n\r\ninterface StyledHeaderRowProps {\r\n fontSize?: string;\r\n}\r\n\r\ninterface StyledHeaderCellProps {\r\n width?: string;\r\n}\r\n\r\ninterface StyledRowProps {\r\n height?: string;\r\n fontSize?: string;\r\n}\r\n\r\nconst StyledDataTable = styled.table`\r\n width: 100%;\r\n table-layout: fixed;\r\n border-collapse: separate;\r\n`;\r\n\r\nconst StyledHeaderRow = styled.tr`\r\n font-size: ${(props: StyledHeaderRowProps) => props.fontSize};\r\n font-weight: 400;\r\n color: #031c44;\r\n`;\r\n\r\nconst StyledHeaderCell = styled.th`\r\n padding: 15px ${SPACING.MEDIUM};\r\n text-align: left;\r\n vertical-align: bottom;\r\n word-wrap: break-word;\r\n line-height: 1.5;\r\n ${(props: StyledHeaderCellProps) => (props.width ? `width: ${props.width}` : '')};\r\n`;\r\n\r\nconst StyledRow = styled.tr`\r\n font-size: ${(props: StyledRowProps) => props.fontSize};\r\n color: #031c44;\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n height: ${(props: StyledRowProps) => props.height};\r\n`;\r\n\r\ninterface StyledCellProps {\r\n inFirstRow: boolean;\r\n inLastRow: boolean;\r\n inFirstColumn: boolean;\r\n inLastColumn: boolean;\r\n}\r\n\r\nconst StyledCell = styled.td`\r\n padding: 0 ${SPACING.MEDIUM};\r\n vertical-align: middle;\r\n text-align: left;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n\r\n // border\r\n border-color: #cdd3de;\r\n border-style: solid;\r\n border-left-width: ${(props) => (props.inFirstColumn ? '1px' : '0')};\r\n border-right-width: ${(props) => (props.inLastColumn ? '1px' : '0')};\r\n border-bottom-width: 1px;\r\n border-top-width: ${(props) => (props.inFirstRow ? '1px' : '0')};\r\n border-top-left-radius: ${(props) => (props.inFirstRow && props.inFirstColumn ? '5px' : '0')};\r\n border-top-right-radius: ${(props) => (props.inFirstRow && props.inLastColumn ? '5px' : '0')};\r\n border-bottom-left-radius: ${(props) => (props.inLastRow && props.inFirstColumn ? '5px' : '0')};\r\n border-bottom-right-radius: ${(props) => (props.inLastRow && props.inLastColumn ? '5px' : '0')};\r\n`;\r\n\r\nconst StyledNonSortableHeaderCell = styled.div`\r\n display: flex;\r\n align-items: center;\r\n min-height: 1.4em;\r\n`;\r\n\r\nconst StyledSortableHeaderCell = styled.div`\r\n display: flex;\r\n column-gap: ${SPACING.XX_SMALL};\r\n align-items: center;\r\n cursor: pointer;\r\n user-select: none;\r\n\r\n &:hover {\r\n text-decoration: underline;\r\n text-underline-position: under;\r\n }\r\n`;\r\n\r\nconst StyledSortIcon = styled.div`\r\n align-self: flex-end;\r\n flex-shrink: 0;\r\n height: 1.4em;\r\n width: 1.4em;\r\n`;\r\n\r\nconst StyledHeaderCellText = styled.div`\r\n user-select: text;\r\n`;\r\n\r\nconst StyledLoadingSpinner = styled(LoadingSpinner)`\r\n display: flex;\r\n justify-content: center;\r\n`;\r\n\r\nconst DataTableCell = ({\r\n row,\r\n column,\r\n dataId,\r\n inFirstRow,\r\n inFirstColumn,\r\n inLastRow,\r\n inLastColumn,\r\n}: {\r\n row: DataTableRowDefinition;\r\n column: DataTableColumnDefinition;\r\n dataId?: string;\r\n inFirstRow: boolean;\r\n inFirstColumn: boolean;\r\n inLastRow: boolean;\r\n inLastColumn: boolean;\r\n}) => {\r\n return (\r\n \r\n {column.render ? column.render(row.data) : row.data[column.name] ?? ''}\r\n \r\n );\r\n};\r\n\r\nconst SortableHeaderCell = ({\r\n column,\r\n isCurrentSortColumn,\r\n sortDirection,\r\n changeSortHandler,\r\n}: {\r\n column: DataTableColumnDefinition;\r\n isCurrentSortColumn: boolean;\r\n sortDirection: SortDirection;\r\n changeSortHandler: (columnName: string) => void;\r\n}) => {\r\n return (\r\n changeSortHandler(column.name)}\r\n data-test-id={\r\n column.dataId\r\n ? `${column.dataId}-header-button-sort`\r\n : `${camelToKebab(column.header)}-header-button-sort`\r\n }\r\n >\r\n {!column.hideHeader && {column.header}}\r\n \r\n {isCurrentSortColumn && sortDirection === SortDirection.Ascending && (\r\n \r\n )}\r\n {isCurrentSortColumn && sortDirection === SortDirection.Descending && (\r\n \r\n )}\r\n {!isCurrentSortColumn && }\r\n \r\n \r\n );\r\n};\r\n\r\nexport const DataTable = React.forwardRef(\r\n (\r\n {\r\n columns = [],\r\n rows = [],\r\n defaultSortColumn,\r\n defaultSortDirection = SortDirection.Ascending,\r\n rowHeight = '80px',\r\n headerFontSize = '13px',\r\n dataFontSize = '14px',\r\n loading,\r\n dataId,\r\n ariaLabel,\r\n pinnedRows = [],\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const [sortColumnName, setSortColumnName] = useState(defaultSortColumn);\r\n const [sortDirection, setSortDirection] = useState(defaultSortDirection);\r\n\r\n const sort = useCallback(() => {\r\n const rowsClone = cloneDeep(rows);\r\n\r\n if (!sortColumnName) {\r\n return rowsClone;\r\n }\r\n const sortColumn = columns.find((column) => column.name === sortColumnName);\r\n\r\n if (!sortColumn) {\r\n return rowsClone;\r\n }\r\n\r\n const multiplier = sortDirection === SortDirection.Descending ? -1 : 1;\r\n\r\n const defaultCompareFn = (a: any, b: any) => {\r\n const valueA = a[sortColumn.name];\r\n const valueB = b[sortColumn.name];\r\n\r\n if (typeof valueA === 'string' && typeof valueB === 'string') {\r\n return stringCompare(valueA, valueB);\r\n }\r\n\r\n return anyCompare(valueA, valueB);\r\n };\r\n\r\n const sortFn = (rowA: DataTableRowDefinition, rowB: DataTableRowDefinition) => {\r\n const result = sortColumn.compareFn\r\n ? sortColumn.compareFn(rowA.data, rowB.data)\r\n : defaultCompareFn(rowA.data, rowB.data);\r\n\r\n return result * multiplier;\r\n };\r\n\r\n // Calling the sort function on cloned rows, hence mutating the array\r\n rowsClone.sort(sortFn);\r\n\r\n if (pinnedRows) {\r\n const pinnedElements = rowsClone.filter((row) => pinnedRows.includes(row.data.id));\r\n const nonPinnedElements = rowsClone.filter((row) => !pinnedRows.includes(row.data.id));\r\n\r\n const pinnedSortedRows = [...pinnedElements, ...nonPinnedElements];\r\n\r\n return pinnedSortedRows;\r\n } else {\r\n return rowsClone;\r\n }\r\n }, [sortColumnName, sortDirection, rows, columns, pinnedRows]);\r\n\r\n const [sortedRows, setSortedRows] = useState(sort());\r\n\r\n const changeSort = (selectedColumnName: string) => {\r\n const newSortDirection =\r\n sortColumnName === selectedColumnName && sortDirection === SortDirection.Ascending\r\n ? SortDirection.Descending\r\n : SortDirection.Ascending;\r\n\r\n setSortColumnName(selectedColumnName);\r\n setSortDirection(newSortDirection);\r\n };\r\n\r\n useEffect(() => {\r\n setSortColumnName(defaultSortColumn);\r\n setSortDirection(defaultSortColumn ? defaultSortDirection ?? SortDirection.Ascending : null);\r\n }, [defaultSortColumn, defaultSortDirection]);\r\n\r\n useDeepCompareEffect(() => {\r\n const newRows = sort();\r\n setSortedRows(newRows);\r\n }, [columns, rows, sortColumnName, sortDirection, pinnedRows]);\r\n\r\n return (\r\n <>\r\n {loading ? (\r\n \r\n ) : (\r\n \r\n \r\n \r\n {columns.map((column) => (\r\n \r\n {column.sortable ? (\r\n \r\n ) : (\r\n !column.hideHeader && (\r\n \r\n {column.header}\r\n \r\n )\r\n )}\r\n \r\n ))}\r\n \r\n \r\n \r\n {sortedRows.map((row, rowIndex) => {\r\n return (\r\n \r\n {columns.map((column, columnIndex) => (\r\n \r\n ))}\r\n \r\n );\r\n })}\r\n \r\n \r\n )}\r\n \r\n );\r\n },\r\n);\r\nDataTable.displayName = 'DataTable';\r\n","import * as React from 'react';\r\n\r\nimport SVGBase from '../svg-base/svg-base';\r\n\r\nexport interface TriangleDownProps {\r\n fill?: string;\r\n title?: string;\r\n height?: string;\r\n width?: string;\r\n viewBox?: string;\r\n}\r\n\r\nconst TriangleDown = ({ fill, title, height, width, ...rest }: TriangleDownProps) => (\r\n \r\n \r\n \r\n);\r\n\r\nexport default TriangleDown;\r\n","import TriangleDown from './triangle-down';\r\n\r\nexport * from './triangle-down';\r\nexport default TriangleDown;\r\n","import * as React from 'react';\r\nimport { useCallback, useEffect, useRef, useState } from 'react';\r\nimport { useImperativeHandle } from 'react';\r\n\r\nimport styled, { ThemeProvider } from 'styled-components';\r\n\r\nimport { useClickOutside } from '../../../ModernScripts/Spotlight/Hooks/useClickOutside';\r\nimport { camelToKebab } from '../../../Scripts/Spotlight/Components/CamelToKebab';\r\nimport { COLOR, FONT_SIZE, FONT_STACK, RADIUS, SHADOW, SPACING, THEME } from '../../packages/constants';\r\nimport { SortDown } from '../../packages/icons';\r\nimport TriangleDown from '../../packages/icons/triangle-down';\r\nimport { Button, ButtonAsText, ButtonGroup } from '../button';\r\nimport { CheckboxInput, CheckboxInputProps } from '../checkbox-input';\r\nimport { MultiSelectVariants } from '../multi-select/multi-select';\r\nimport { SearchFilter } from '../search-filter/search-filter';\r\n\r\nexport interface DataItem {\r\n name: string;\r\n id: string;\r\n selected: boolean;\r\n flagColour?: string;\r\n}\r\n\r\nexport interface Category {\r\n categoryName: string;\r\n options: DataItem[];\r\n}\r\n\r\ninterface StyledCheckboxProps extends CheckboxInputProps {\r\n hasMultipleCategories: boolean;\r\n hasModernVariant?: boolean;\r\n}\r\n\r\nexport interface MultiSelectInputButtonProps {\r\n dataId: string;\r\n onClick: React.MouseEventHandler;\r\n}\r\n\r\ntype triggerEl = ({ dataId, onClick }: MultiSelectInputButtonProps) => JSX.Element;\r\n\r\nexport interface MultiSelectInputProps {\r\n dataSet: Category[];\r\n dataId: string;\r\n handleApplyButton: (e?: Category[]) => void;\r\n handleCancelButton: (e?: DataItem[]) => void;\r\n disabled?: boolean;\r\n maxHeight?: string;\r\n maxWidth?: string;\r\n hasFilter?: boolean;\r\n trigger?: triggerEl;\r\n variant: MultiSelectVariants;\r\n}\r\n\r\ninterface DropDownValueProps {\r\n isDropdownOpen: boolean;\r\n disabled?: boolean;\r\n hasLegacyStyles: boolean;\r\n}\r\n\r\nconst DropDownValue = styled.button`\r\n border-radius: ${(props) =>\r\n props.hasLegacyStyles ? 0 : props.isDropdownOpen ? `${RADIUS.DEFAULT} ${RADIUS.DEFAULT} 0 0` : RADIUS.DEFAULT};\r\n border: 1px solid ${COLOR.MAIN.FORM_FIELD};\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n color: ${COLOR.PRIMARY.BLACK};\r\n padding: 6px;\r\n min-width: 120px;\r\n width: 100%;\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n font-family: ${FONT_STACK};\r\n font-size: ${(props) => (props.hasLegacyStyles ? '13px' : FONT_SIZE.SMALL)};\r\n line-height: ${(props) => (props.hasLegacyStyles ? '18px' : FONT_SIZE.MEDIUM)};\r\n opacity: ${(props) => (props.disabled ? '0.6' : '1')};\r\n cursor: pointer;\r\n position: relative;\r\n`;\r\n\r\ninterface StyledDropdownProps {\r\n maxWidth?: string;\r\n ref: any;\r\n hasModernVariant?: boolean;\r\n width: string;\r\n}\r\n\r\nconst StyledDropdown = styled.div`\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n border: 1px solid ${COLOR.DROPDOWN.DROPDOWN_BORDER};\r\n border-radius: ${RADIUS.DEFAULT};\r\n box-shadow: ${SHADOW.DEFAULT};\r\n position: absolute;\r\n z-index: 100;\r\n margin-top: ${SPACING.X_SMALL};\r\n max-width: ${(props) => props.maxWidth ?? 'none'};\r\n width: ${(props) => props.width};\r\n`;\r\n\r\nconst StyledCheckbox = styled(CheckboxInput)`\r\n &&& {\r\n align-items: flex-start;\r\n overflow-wrap: anywhere;\r\n }\r\n\r\n span {\r\n margin-top: 1px;\r\n font-size: 13px;\r\n cursor: pointer;\r\n }\r\n\r\n input {\r\n cursor: pointer;\r\n }\r\n`;\r\n\r\nconst OptionCheckbox = styled(StyledCheckbox)`\r\n &&& {\r\n margin-left: ${(props) => (props.hasMultipleCategories ? SPACING.LARGE : 0)};\r\n margin-bottom: 0;\r\n }\r\n`;\r\n\r\nconst AllCheckbox = styled(StyledCheckbox)`\r\n &&& {\r\n margin-top: ${(props) => (props.hasModernVariant ? SPACING.SMALL : SPACING.LARGE)};\r\n margin-bottom: ${(props) =>\r\n props.hasModernVariant ? 0 : props.hasMultipleCategories ? SPACING.SMALL : SPACING.LARGE};\r\n }\r\n\r\n span {\r\n font-weight: ${(props) => (props.hasModernVariant ? 700 : 400)};\r\n }\r\n`;\r\n\r\nconst NotFound = styled.p`\r\n font-size: ${FONT_SIZE.SMALL};\r\n color: ${COLOR.MAIN.FORM_FIELD_DARK};\r\n padding-left: ${SPACING.X_LARGE};\r\n`;\r\n\r\nconst StyledButtonGroup = styled(ButtonGroup)`\r\n padding: ${SPACING.MEDIUM};\r\n background-color: ${COLOR.MAIN.BUTTON_GROUP_BG};\r\n border-top: 1px solid ${COLOR.MAIN.BUTTON_GROUP_BORDER};\r\n border-radius: 0 0 ${RADIUS.DEFAULT} ${RADIUS.DEFAULT};\r\n`;\r\n\r\ninterface CheckboxScrollAreaProps {\r\n maxHeight?: string;\r\n hasModernVariant?: boolean;\r\n}\r\n\r\nconst CheckboxScrollArea = styled.div`\r\n max-height: ${(props) => props.maxHeight};\r\n overflow: auto;\r\n padding: 0 ${(props) => (props.hasModernVariant ? SPACING.SMALL : SPACING.MEDIUM)} ${SPACING.MEDIUM};\r\n`;\r\n\r\nconst CheckboxWrapper = styled.ul``;\r\n\r\nconst StyledDownArrow = styled(SortDown)`\r\n padding: 2px;\r\n align-self: center;\r\n justify-self: flex-end;\r\n pointer-events: none;\r\n`;\r\n\r\ninterface StyledTriangleDownProps {\r\n dropdownOpenState?: boolean;\r\n}\r\n\r\nconst StyledTriangleDown = styled(TriangleDown)`\r\n height: 8px;\r\n width: 8px;\r\n fill: #888;\r\n transform: rotate(${(props) => (props.dropdownOpenState ? '180deg' : 0)})\r\n translateY(${(props) => (props.dropdownOpenState ? '2px' : 0)});\r\n`;\r\n\r\ninterface StyledListItemProps {\r\n flagColour?: string;\r\n hasModernVariant?: boolean;\r\n}\r\n\r\nconst StyledListItem = styled.li`\r\n padding-top: ${SPACING.X_SMALL};\r\n padding-bottom: ${(props) => (props.hasModernVariant ? SPACING.SMALL : SPACING.X_SMALL)};\r\n position: relative;\r\n\r\n ${(props) =>\r\n props.flagColour &&\r\n `&:before {\r\n content: '';\r\n position: absolute;\r\n top: 0px;\r\n bottom: 1px;\r\n left: -12px;\r\n width: 4px;\r\n background: ${props.flagColour};\r\n }`}\r\n`;\r\n\r\ninterface StyledSearchFilterProps {\r\n variant: MultiSelectVariants;\r\n}\r\n\r\nconst StyledSearchFilter = styled(SearchFilter)`\r\n margin: ${(props) => (props.variant === 'modern' ? '10px' : SPACING.X_SMALL)};\r\n`;\r\n\r\ninterface CheckboxProps {\r\n dataId: string;\r\n category: Category;\r\n handleAllCheckboxes: (e?: any) => void;\r\n handleCheckbox: (id: string, categoryName: string) => void;\r\n filterValue: string;\r\n hasMultipleCategories: boolean;\r\n variant: MultiSelectVariants;\r\n}\r\n\r\nconst checkCheckboxState = (category: Category) => {\r\n const parentCheckboxId = `checkbox-all-${camelToKebab(category.categoryName)}`;\r\n const parentCheckboxElement = document.getElementById(parentCheckboxId);\r\n const checkedValues: boolean[] = [];\r\n let count = 0;\r\n\r\n category.options.forEach((item: DataItem) => {\r\n checkedValues.push(item.selected);\r\n if (item.selected) {\r\n count += 1;\r\n }\r\n });\r\n\r\n let firstValue = false;\r\n if (parentCheckboxElement) {\r\n for (let i = 0; checkedValues.length > i; i += 1) {\r\n if (i === 0) {\r\n firstValue = checkedValues[0];\r\n } else {\r\n if (firstValue !== checkedValues[i]) {\r\n // @ts-ignore\r\n parentCheckboxElement.indeterminate = true;\r\n break;\r\n } else if (firstValue && firstValue === checkedValues[i]) {\r\n // @ts-ignore\r\n parentCheckboxElement.indeterminate = false;\r\n } else if (!firstValue && firstValue === checkedValues[i]) {\r\n // @ts-ignore\r\n parentCheckboxElement.indeterminate = false;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (parentCheckboxElement) {\r\n // @ts-ignore\r\n parentCheckboxElement.checked = count === checkedValues.length;\r\n }\r\n};\r\n\r\nconst Checkboxes = ({\r\n dataId,\r\n category,\r\n handleAllCheckboxes,\r\n handleCheckbox,\r\n filterValue,\r\n hasMultipleCategories,\r\n variant,\r\n}: CheckboxProps) => {\r\n const filteredList = category.options.filter((item: DataItem) => {\r\n if (filterValue.startsWith(' ')) {\r\n return item.name;\r\n } else {\r\n return item.name.toLowerCase().includes(filterValue.toLowerCase());\r\n }\r\n });\r\n\r\n const hasModernVariant = variant === 'modern';\r\n\r\n useEffect(() => {\r\n checkCheckboxState(category);\r\n }, [category]);\r\n\r\n return (\r\n <>\r\n \r\n handleAllCheckboxes(e)}\r\n thinLabel\r\n inline\r\n hasModernVariant={hasModernVariant}\r\n />\r\n \r\n {filteredList.length > 0 ? (\r\n filteredList\r\n .sort((a: DataItem, b: DataItem) => a.name.trim().localeCompare(b.name.trim()))\r\n .map((item: DataItem) => (\r\n \r\n handleCheckbox(camelToKebab(item.name), category.categoryName)}\r\n checked={item.selected}\r\n hasMultipleCategories={hasMultipleCategories}\r\n thinLabel\r\n inline\r\n />\r\n \r\n ))\r\n ) : (\r\n
  • \r\n No results found.\r\n
  • \r\n )}\r\n \r\n );\r\n};\r\n\r\ninterface DropdownProps {\r\n data: Category[];\r\n dataId: string;\r\n setData: (data: Category[]) => void;\r\n handleApplyButton: () => void;\r\n handleCancelButton: () => void;\r\n hasFilter?: boolean;\r\n maxHeight?: string;\r\n maxWidth?: string;\r\n variant: MultiSelectVariants;\r\n width: string;\r\n}\r\n\r\nconst Dropdown: React.FC> = ({\r\n data,\r\n dataId,\r\n setData,\r\n handleApplyButton,\r\n handleCancelButton,\r\n hasFilter,\r\n maxHeight,\r\n maxWidth,\r\n variant,\r\n width,\r\n}) => {\r\n const [filterValue, setFilterValue] = React.useState('');\r\n const [isDirty, setDirty] = React.useState(false);\r\n\r\n const filterInputRef = useRef(null);\r\n const dropdownRef = useRef();\r\n\r\n useClickOutside(dropdownRef, () => {\r\n switch (variant) {\r\n case 'legacy':\r\n case 'normal':\r\n handleCancelButton();\r\n break;\r\n case 'modern':\r\n handleApplyButton();\r\n }\r\n });\r\n\r\n const handleFilterChange = (e: React.ChangeEvent) => {\r\n setFilterValue(e.target.value);\r\n };\r\n\r\n const handleClearButton = () => {\r\n setFilterValue('');\r\n // @ts-ignore\r\n filterInputRef.current.focus();\r\n };\r\n\r\n const handleCheckbox = (camelToKebabName: string, categoryName: string) => {\r\n const dataCopy = [...data];\r\n\r\n dataCopy.forEach((category: Category, categoryIndex: number) => {\r\n if (category.categoryName === categoryName) {\r\n dataCopy[categoryIndex].options.forEach((item) => {\r\n if (camelToKebab(item.name) === camelToKebabName) {\r\n item.selected = !item.selected;\r\n setData(dataCopy);\r\n setDirty(true);\r\n }\r\n });\r\n checkCheckboxState({ ...category });\r\n }\r\n });\r\n };\r\n\r\n const handleAllCheckboxes = (e: React.ChangeEvent, categoryIndex: number) => {\r\n const dataCopy = [...data];\r\n dataCopy[categoryIndex].options.forEach((item) => {\r\n item.selected = e.target.checked;\r\n });\r\n\r\n setData(dataCopy);\r\n setDirty(true);\r\n };\r\n\r\n useEffect(() => {\r\n function handleKeyListener(e: KeyboardEvent) {\r\n if (e.key === 'Escape') {\r\n if (variant === 'modern') {\r\n handleApplyButton();\r\n } // @ts-ignore\r\n else if (document.activeElement === filterInputRef.current && filterInputRef.current.value.length) {\r\n handleClearButton();\r\n } else {\r\n handleCancelButton();\r\n }\r\n }\r\n }\r\n\r\n document.addEventListener('keydown', handleKeyListener);\r\n\r\n return function cleanupKeyListener() {\r\n document.removeEventListener('keydown', handleKeyListener);\r\n };\r\n }, [handleCancelButton, handleApplyButton, variant]);\r\n\r\n return (\r\n \r\n {hasFilter && (\r\n handleFilterChange(e)}\r\n handleClearButton={handleClearButton}\r\n searchTerm={filterValue}\r\n assistAccess={false}\r\n data-test-id={`${dataId}-multi-select__filter`}\r\n hasClearButton={variant !== 'modern'}\r\n hasSearchIcon={variant === 'modern'}\r\n variant={variant}\r\n />\r\n )}\r\n \r\n {data &&\r\n data.map((category: Category, index: number) => (\r\n \r\n handleAllCheckboxes(e, index)}\r\n handleCheckbox={handleCheckbox}\r\n filterValue={filterValue}\r\n hasMultipleCategories={data?.length > 1}\r\n variant={variant}\r\n />\r\n \r\n ))}\r\n \r\n {variant !== 'modern' && (\r\n \r\n \r\n handleCancelButton()}\r\n >\r\n Cancel\r\n \r\n \r\n handleApplyButton()}\r\n disabled={!isDirty}\r\n >\r\n Apply\r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nconst defaultFilterString = 'No filter';\r\n\r\nexport const MultiSelectInput = React.forwardRef(\r\n (\r\n {\r\n dataSet,\r\n dataId,\r\n disabled,\r\n handleApplyButton,\r\n handleCancelButton,\r\n hasFilter = true,\r\n maxHeight = '240px',\r\n maxWidth,\r\n trigger,\r\n variant,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const [data, setData] = useState(dataSet);\r\n const [dropdownOpenState, setDropDownOpenState] = useState(false);\r\n const [dropdownValue, setDropdownValue] = useState(defaultFilterString);\r\n const [containerWidth, setContainerWidth] = useState(0);\r\n const hasLegacyStyles = variant === 'legacy';\r\n\r\n const containerRef = useRef(null);\r\n useImperativeHandle(ref, () => containerRef.current);\r\n\r\n const handleDropdownToggle = () => {\r\n setDropDownOpenState(!dropdownOpenState);\r\n };\r\n\r\n const applyButton = () => {\r\n handleApplyButton(data);\r\n setDropDownOpenState(false);\r\n };\r\n\r\n const cancelButton = useCallback(() => {\r\n const temp = () => handleCancelButton();\r\n // @ts-ignore\r\n setData(temp);\r\n setDropDownOpenState(false);\r\n }, [handleCancelButton]);\r\n\r\n const Trigger = (props: MultiSelectInputButtonProps) => {\r\n if (!trigger) {\r\n return null;\r\n }\r\n\r\n return trigger(props);\r\n };\r\n\r\n useEffect(() => {\r\n setData(dataSet);\r\n }, [dataSet]);\r\n\r\n useEffect(() => {\r\n if (!data) {\r\n return;\r\n }\r\n\r\n const items = data.flatMap((category) => category.options);\r\n const totalItemCount = items.length;\r\n const selectedItemCount = items.filter((item) => item.selected).length;\r\n\r\n const buttonText =\r\n selectedItemCount === 0\r\n ? defaultFilterString\r\n : `${selectedItemCount} of ${totalItemCount} item${totalItemCount === 1 ? '' : 's'}`;\r\n\r\n setDropdownValue(buttonText);\r\n }, [data]);\r\n\r\n const updateContainerWidth = () => {\r\n const newWidth = containerRef?.current?.children[0].clientWidth;\r\n setContainerWidth(newWidth ?? 0);\r\n };\r\n\r\n useEffect(() => {\r\n updateContainerWidth();\r\n\r\n window.addEventListener('resize', updateContainerWidth);\r\n\r\n return () => {\r\n window.removeEventListener('resize', updateContainerWidth);\r\n };\r\n }, []);\r\n\r\n return (\r\n
    \r\n {trigger && (\r\n handleDropdownToggle()}\r\n />\r\n )}\r\n {!trigger && (\r\n \r\n {dropdownValue}{' '}\r\n {hasLegacyStyles ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n )}\r\n {dropdownOpenState && (\r\n \r\n )}\r\n
    \r\n );\r\n },\r\n);\r\nMultiSelectInput.displayName = 'MultiSelectInput';\r\n","import * as React from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, FONT_STACK, SPACING } from '../../packages/constants';\r\nimport { MultiSelectInput } from '../multi-select-input';\r\n\r\nexport type MultiSelectVariants = 'legacy' | 'normal' | 'modern';\r\n\r\ninterface DataItem {\r\n name: string;\r\n id: string;\r\n selected: boolean;\r\n}\r\n\r\ninterface Category {\r\n categoryName: string;\r\n options: DataItem[];\r\n}\r\n\r\nexport interface MultiSelectProps {\r\n dataSet: Category[];\r\n dataId: string;\r\n handleApplyButton: (e?: Category[]) => void;\r\n handleCancelButton: (e?: DataItem[]) => void;\r\n label: string;\r\n disabled?: boolean;\r\n thinLabel?: boolean;\r\n maxHeight?: string;\r\n maxWidth?: string;\r\n hasFilter?: boolean;\r\n variant?: MultiSelectVariants;\r\n}\r\n\r\nconst StyledMultiSelect = styled.div``;\r\n\r\ninterface StyledLabelProps {\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n thinLabel?: boolean;\r\n hasLegacyStyles?: boolean;\r\n}\r\n\r\nconst StyledLabel = styled.label`\r\n padding-bottom: ${(props) => (props.hasLegacyStyles ? 0 : SPACING.XX_SMALL)};\r\n font-family: ${FONT_STACK};\r\n font-size: ${(props) => (props.hasLegacyStyles ? FONT_SIZE.X_SMALL : FONT_SIZE.SMALL)};\r\n font-weight: ${(props) => (props.thinLabel ? '400' : '700')};\r\n line-height: ${(props) => (props.hasLegacyStyles ? 'normal' : FONT_SIZE.MEDIUM)};\r\n margin-bottom: ${(props) => (props.hasLegacyStyles ? '8px' : 0)};\r\n display: block;\r\n color: ${(props) =>\r\n props.invalid ? COLOR.PRIMARY.RED : props.hasLegacyStyles ? COLOR.PRIMARY.BLACK : COLOR.MAIN.LABEL_TEXT};\r\n opacity: ${(props) => (props.disabled ? '0.7' : '1')};\r\n`;\r\n\r\nexport const MultiSelect = React.forwardRef(\r\n (\r\n {\r\n dataSet,\r\n dataId,\r\n label,\r\n disabled,\r\n handleApplyButton,\r\n handleCancelButton,\r\n hasFilter = true,\r\n maxHeight = '240px',\r\n maxWidth,\r\n thinLabel,\r\n variant = 'normal',\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const hasLegacyStyles = variant === 'legacy';\r\n\r\n return (\r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n );\r\n },\r\n);\r\nMultiSelect.displayName = 'MultiSelect';\r\n","import * as React from 'react';\r\nimport { useState, useEffect, useRef, useImperativeHandle } from 'react';\r\n\r\nimport dayjs from 'dayjs';\r\nimport { darken, lighten, transparentize } from 'polished';\r\nimport styled, { css } from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, FONT_STACK, RADIUS, SHADOW } from '../../packages/constants';\r\nimport { ChevronLeft, ChevronRight, SortDown } from '../../packages/icons';\r\nimport { ButtonAsText } from '../button';\r\nimport { Overlay } from '../modal';\r\n\r\n/**\r\n * Month Date Picker Calendar\r\n */\r\nexport interface MonthDatePickerCalendarProps {\r\n year?: number | null;\r\n monthIndex?: number | null;\r\n dispatch: any;\r\n dataId: string;\r\n mode: 'absolute' | 'fixed';\r\n left?: number;\r\n top?: number;\r\n}\r\n\r\ninterface StyledMonthDatePickerCalendarProps {\r\n mode: 'absolute' | 'fixed';\r\n left?: number;\r\n top?: number;\r\n}\r\n\r\nconst calendarHeight = 194;\r\nconst calendarPadding = 6;\r\nconst calendarMargin = 6;\r\n\r\nconst StyledMonthDatePickerCalendar = styled.div`\r\n ${(props) => props.mode && `position: ${props.mode};`}\r\n ${(props) => props.left && `left: ${props.left}px;`}\r\n ${(props) => props.top && `top: ${props.top}px;`}\r\n z-index: 100;\r\n box-sizing: border-box;\r\n margin-top: ${calendarMargin}px;\r\n margin-bottom: ${calendarMargin}px;\r\n border: 1px solid ${COLOR.DROPDOWN.DROPDOWN_BORDER};\r\n padding: ${calendarPadding}px;\r\n width: 280px;\r\n height: ${calendarHeight}px;\r\n border-radius: ${RADIUS.DEFAULT};\r\n background: #fff;\r\n box-shadow: ${SHADOW.DEFAULT};\r\n font-family: ${FONT_STACK};\r\n`;\r\n\r\nconst Cell = styled.li`\r\n box-sizing: border-box;\r\n display: inline-block;\r\n width: 25%;\r\n padding: 10px;\r\n border-radius: 100%;\r\n color: ${COLOR.DROPDOWN.DROPDOWN_OPTION_TEXT};\r\n`;\r\n\r\ninterface CellButtonProps {\r\n isSelected?: boolean;\r\n isGrey?: boolean;\r\n}\r\n\r\nconst CellButton = styled.button`\r\n background: none;\r\n border: none;\r\n display: block;\r\n margin: 0 auto;\r\n border-radius: 15px;\r\n padding: 6px 10px;\r\n cursor: pointer;\r\n font-family: ${FONT_STACK};\r\n ${(props) =>\r\n props.isGrey &&\r\n css`\r\n color: #b7c3d6;\r\n `};\r\n &:hover {\r\n background: ${COLOR.DROPDOWN.DROPDOWN_OPTION_HOVER};\r\n }\r\n ${(props) =>\r\n props.isSelected &&\r\n css`\r\n color: #fff;\r\n background: ${COLOR.DROPDOWN.DROPDOWN_OPTION_SELECTED};\r\n &:hover {\r\n background: ${COLOR.DROPDOWN.DROPDOWN_OPTION_SELECTED};\r\n }\r\n `};\r\n`;\r\n\r\nconst NavButton = styled.button`\r\n background: none;\r\n border: none;\r\n border-radius: 100%;\r\n height: 30px;\r\n width: 30px;\r\n display: inline-block;\r\n cursor: pointer;\r\n\r\n &:hover {\r\n background: ${COLOR.DROPDOWN.DROPDOWN_OPTION_HOVER};\r\n }\r\n &:active {\r\n background: ${darken('0.1', COLOR.DROPDOWN.DROPDOWN_OPTION_HOVER)};\r\n }\r\n`;\r\n\r\nconst PrevButton = styled(NavButton)``;\r\n\r\nconst NextButton = styled(NavButton)``;\r\n\r\nconst StyledChevronLeft = styled(ChevronLeft)`\r\n margin: 0 auto;\r\n`;\r\n\r\nconst StyledChevronRight = styled(ChevronRight)`\r\n margin: 0 auto;\r\n`;\r\n\r\nconst YearButton = styled(ButtonAsText)`\r\n display: inline-block;\r\n margin: 0 auto;\r\n position: relative;\r\n top: 1px;\r\n align-self: center;\r\n font-weight: 400;\r\n cursor: pointer;\r\n`;\r\n\r\nconst YearRangeHeading = styled.span`\r\n margin: 0 auto;\r\n font-family: ${FONT_STACK};\r\n font-size: ${FONT_SIZE.SMALL};\r\n align-self: center;\r\n`;\r\n\r\nconst CalendarHeader = styled.div`\r\n display: flex;\r\n`;\r\n\r\nconst MonthsList = styled.ol`\r\n display: block;\r\n`;\r\n\r\nconst YearsList = styled(MonthsList)``;\r\n\r\nenum ViewModes {\r\n Month = 'MONTH',\r\n Year = 'YEAR',\r\n}\r\n\r\nconst Years = ({\r\n decadeStart,\r\n clickedYear,\r\n selectedYear,\r\n dataId,\r\n}: {\r\n decadeStart: number;\r\n clickedYear: any;\r\n selectedYear: number | null;\r\n dataId: string;\r\n}) => {\r\n /**\r\n * should be the decade for the year user has navigated to\r\n * e.g. 2020-2029, then have a year either side\r\n */\r\n const yearOptions = (() => {\r\n const arr = [];\r\n for (let i = -1; i < 11; i++) {\r\n arr.push(decadeStart + i);\r\n }\r\n return arr;\r\n })();\r\n const decadeEnd = decadeStart + 9;\r\n\r\n return (\r\n \r\n {yearOptions.map((item) => {\r\n const isSelected = typeof selectedYear === 'number' && item === selectedYear;\r\n return (\r\n \r\n clickedYear(item)}\r\n isGrey={item < decadeStart || item > decadeEnd}\r\n isSelected={isSelected}\r\n data-test-id={`${dataId}__years__button-year-${item}`}\r\n data-selected={isSelected}\r\n type=\"button\"\r\n >\r\n {item}\r\n \r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst Months = ({\r\n clickedMonth,\r\n selectedMonth,\r\n isSelectedYear,\r\n dataId,\r\n}: {\r\n clickedMonth: any;\r\n selectedMonth: number | null;\r\n isSelectedYear: boolean;\r\n dataId: string;\r\n}) => {\r\n const monthOptions = [];\r\n\r\n for (let i = 0; i < 12; i++) {\r\n monthOptions.push(dayjs().month(i).format('MMM'));\r\n }\r\n\r\n return (\r\n \r\n {monthOptions.map((monthName, i) => {\r\n const isSelected = typeof selectedMonth === 'number' && i === selectedMonth && isSelectedYear;\r\n return (\r\n \r\n clickedMonth(i)}\r\n isSelected={isSelected}\r\n data-test-id={`${dataId}__months__button-month-${i}`}\r\n data-selected={isSelected}\r\n type=\"button\"\r\n >\r\n {monthName}\r\n \r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst endash = '\\u2013';\r\n\r\nexport const MonthDatePickerCalendar = React.forwardRef(\r\n ({ year = null, monthIndex = null, dispatch, dataId, ...props }, ref) => {\r\n /**\r\n * The values\r\n */\r\n const [selectedYear, setSelectedYear] = useState(year);\r\n const [selectedMonth, setSelectedMonth] = useState(monthIndex);\r\n /**\r\n * Navigation\r\n */\r\n const [navYear, setNavYear] = useState(selectedYear || dayjs().year());\r\n const [navDecadeStart, setNavDecadeStart] = useState(Math.floor(navYear / 10) * 10);\r\n const [viewMode, setViewMode] = useState(ViewModes.Month);\r\n\r\n const clickedYear = (year: number) => {\r\n setNavYear(year);\r\n setNavDecadeStart(Math.floor(year / 10) * 10);\r\n setSelectedMonth(null); // clear the month when a year is chosen\r\n setViewMode(ViewModes.Month);\r\n };\r\n\r\n const clickedMonth = (monthIndex: number) => {\r\n setSelectedMonth(monthIndex);\r\n setSelectedYear(navYear);\r\n dispatch({ type: 'SELECTED_MONTH', data: { monthIndex, year: navYear } });\r\n };\r\n\r\n const clickedPrev = () => {\r\n const newYear = (() => {\r\n if (viewMode === ViewModes.Year) {\r\n return navYear - 10;\r\n }\r\n return navYear - 1;\r\n })();\r\n\r\n setNavDecadeStart(Math.floor(newYear / 10) * 10);\r\n setNavYear(newYear);\r\n };\r\n\r\n const clickedNext = () => {\r\n const newYear = (() => {\r\n if (viewMode === ViewModes.Year) {\r\n return navYear + 10;\r\n }\r\n return navYear + 1;\r\n })();\r\n\r\n setNavDecadeStart(Math.floor(newYear / 10) * 10);\r\n setNavYear(newYear);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {viewMode === ViewModes.Month && (\r\n setViewMode(ViewModes.Year)}\r\n size={FONT_SIZE.SMALL}\r\n type=\"button\"\r\n >\r\n {navYear}\r\n \r\n )}\r\n {viewMode === ViewModes.Year && (\r\n {`${navDecadeStart} ${endash} ${\r\n navDecadeStart + 9\r\n }`}\r\n )}\r\n \r\n \r\n \r\n \r\n {viewMode === ViewModes.Month && (\r\n \r\n )}\r\n {viewMode === ViewModes.Year && (\r\n \r\n )}\r\n \r\n );\r\n },\r\n);\r\nMonthDatePickerCalendar.displayName = 'MonthDatePickerCalendar';\r\n\r\n/**\r\n * Month Date Picker\r\n */\r\n\r\nexport interface MonthDatePickerProps {\r\n value?: string;\r\n dataId: string;\r\n onChange?: ({ year, monthIndex }: { year: number; monthIndex: number }) => void;\r\n /**\r\n * Is it disabled?\r\n */\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n id?: string;\r\n /**\r\n * placeholder text to display when there is no value\r\n */\r\n placeholder?: string;\r\n initialYearView?: number;\r\n className?: string;\r\n name?: string;\r\n position?: 'fixed' | 'absolute';\r\n ariaLabel?: string;\r\n}\r\ninterface MonthDatePickerState {\r\n year: number;\r\n monthIndex: number;\r\n isOpen: boolean;\r\n initialYearView?: number;\r\n left?: number;\r\n top?: number;\r\n}\r\n\r\ninterface DatePickerButton {\r\n isOpen: boolean;\r\n invalid?: boolean;\r\n}\r\n\r\nconst StyledDatePickerButton = styled.button`\r\n position: relative;\r\n z-index: ${(props) => (props.isOpen ? 100 : 1)};\r\n border: 1px solid;\r\n border-color: ${(props) => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.FORM_FIELD)};\r\n border-radius: ${RADIUS.FORM_FIELD};\r\n background-color: ${COLOR.PRIMARY.WHITE};\r\n color: ${COLOR.PRIMARY.BLACK};\r\n width: 140px;\r\n height: 30px;\r\n cursor: pointer;\r\n padding: 8px;\r\n min-width: 120px;\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n\r\n :disabled {\r\n background-color: ${darken('0.1', COLOR.PRIMARY.WHITE)};\r\n color: ${transparentize('0.5', COLOR.PRIMARY.BLACK)};\r\n }\r\n`;\r\n\r\nconst StyledPlaceholderText = styled.span`\r\n color: ${lighten('0.2', COLOR.MAIN.FORM_FIELD_DARK)};\r\n`;\r\n\r\nconst StyledDatePickerWrapper = styled.div``;\r\n\r\nconst StyledOverlay = styled(Overlay)`\r\n background-color: transparent;\r\n z-index: 90;\r\n`;\r\n\r\nconst MonthDatePickerReducer = (state: MonthDatePickerState, action: any) => {\r\n switch (action.type) {\r\n case 'OPEN':\r\n return {\r\n ...state,\r\n left: action.data.left,\r\n top: action.data.top,\r\n isOpen: true,\r\n };\r\n case 'CLOSE':\r\n return {\r\n ...state,\r\n isOpen: false,\r\n };\r\n case 'SELECTED_MONTH':\r\n return {\r\n ...state,\r\n monthIndex: action.data.monthIndex,\r\n year: action.data.year,\r\n isOpen: false,\r\n };\r\n case 'UPDATE_DATE':\r\n return {\r\n ...state,\r\n monthIndex: action.data.monthIndex,\r\n year: action.data.year,\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\ninterface UseEscapeListenerFn {\r\n onEsc: () => void;\r\n}\r\n\r\nconst useEscapeListener = ({ onEsc }: UseEscapeListenerFn) => {\r\n useEffect(() => {\r\n function handleKeyListener(e: KeyboardEvent) {\r\n if (e.key === 'Escape') {\r\n onEsc();\r\n }\r\n }\r\n\r\n document.addEventListener('keydown', handleKeyListener);\r\n\r\n return function cleanupKeyListener() {\r\n document.removeEventListener('keydown', handleKeyListener);\r\n };\r\n }, [onEsc]);\r\n};\r\n\r\nexport const MonthDatePicker = React.forwardRef(\r\n (\r\n {\r\n value = '',\r\n dataId,\r\n name,\r\n onChange,\r\n placeholder = 'Select date',\r\n initialYearView,\r\n disabled,\r\n invalid,\r\n position = 'absolute',\r\n ariaLabel,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const [state, dispatch] = React.useReducer(MonthDatePickerReducer, {\r\n monthIndex: value ? dayjs(value).month() : undefined,\r\n year: value ? dayjs(value).year() : undefined,\r\n initialYearView: initialYearView,\r\n isOpen: false,\r\n left: undefined,\r\n top: undefined,\r\n });\r\n const { year, monthIndex } = state;\r\n\r\n const calendarRef = useRef(null);\r\n const buttonRef = useRef(null);\r\n useImperativeHandle(ref, () => buttonRef.current);\r\n\r\n const open = (left?: number, top?: number) => {\r\n dispatch({ type: 'OPEN', data: { left: left, top: top } });\r\n };\r\n\r\n const close = () => {\r\n buttonRef?.current?.focus();\r\n\r\n dispatch({ type: 'CLOSE' });\r\n };\r\n\r\n const onEsc = () => {\r\n close();\r\n };\r\n\r\n useEffect(() => {\r\n if (position === 'fixed') {\r\n window.addEventListener('resize', close);\r\n\r\n return function cleanupEventListeners() {\r\n window.removeEventListener('resize', close);\r\n };\r\n }\r\n });\r\n\r\n useEffect(() => {\r\n /* when the value prop changes, update the state by dispatching an action */\r\n // ensure there is a value and that the value has both a year and month, otherwise clear the dates\r\n const dateRegex = new RegExp(/^\\d*[-|/]\\d/);\r\n if (!value || !value.match(dateRegex)) {\r\n dispatch({ type: 'UPDATE_DATE', data: { year: undefined, monthIndex: undefined } });\r\n return;\r\n }\r\n const date = dayjs(value);\r\n const year = date.year();\r\n const month = date.month();\r\n dispatch({ type: 'UPDATE_DATE', data: { year: year, monthIndex: month } });\r\n }, [value]);\r\n\r\n useEffect(() => {\r\n if (typeof onChange === 'function') {\r\n onChange({ year: state.year, monthIndex: state.monthIndex });\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [state.year, state.monthIndex]);\r\n\r\n useEscapeListener({ onEsc });\r\n\r\n const getCalendarPosition = (): { left: number | undefined; top: number | undefined } => {\r\n let left: number | undefined;\r\n let top: number | undefined;\r\n\r\n // Only get position if the calendar is fixed\r\n if (position === 'fixed' && buttonRef?.current) {\r\n const buttonBounds = buttonRef.current.getBoundingClientRect();\r\n\r\n const calendarOuterHeight = calendarHeight + calendarPadding + calendarMargin;\r\n const calendarFitsBelow = buttonBounds.bottom + calendarOuterHeight < window.innerHeight;\r\n const calendarFitsAbove = buttonBounds.top - calendarOuterHeight > 0;\r\n\r\n // If calendar fits above but not below button, put it above.\r\n if (!calendarFitsBelow && calendarFitsAbove) {\r\n top = buttonBounds.top - calendarOuterHeight;\r\n }\r\n // By default, put the calendar below\r\n else {\r\n top = buttonBounds.bottom;\r\n }\r\n\r\n left = buttonBounds.left;\r\n }\r\n\r\n return {\r\n left: left,\r\n top: top,\r\n };\r\n };\r\n\r\n const toggle = () => {\r\n if (state.isOpen) {\r\n close();\r\n } else {\r\n const calendarPosition = getCalendarPosition();\r\n open(calendarPosition.left, calendarPosition.top);\r\n }\r\n };\r\n\r\n const buttonText = (() => {\r\n if (typeof monthIndex === 'number' && typeof year === 'number') {\r\n const monthName = dayjs().set('month', monthIndex).format('MMM');\r\n return `${monthName} ${endash} ${year}`;\r\n }\r\n return {placeholder};\r\n })();\r\n\r\n return (\r\n \r\n \r\n \r\n {buttonText} \r\n \r\n {state.isOpen && (\r\n <>\r\n dispatch({ type: 'CLOSE' })}\r\n data-test-id={`${dataId}__overlay`}\r\n />\r\n \r\n \r\n )}\r\n \r\n );\r\n },\r\n);\r\n\r\nMonthDatePicker.displayName = 'MonthDatePicker';\r\n","import * as React from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport { SPACING, FONT_SIZE, COLOR } from '../../packages/constants';\r\nimport { MonthDatePicker, MonthDatePickerProps } from '../month-date-picker';\r\n\r\nexport interface MonthDatePickerFieldProps extends MonthDatePickerProps {\r\n label: string;\r\n validationMessage?: string;\r\n thinLabel?: boolean;\r\n}\r\n\r\ninterface StyledTextLabelProps {\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n thinLabel?: boolean;\r\n}\r\n\r\ninterface StyledValidationMessageProps {\r\n invalid?: boolean;\r\n}\r\n\r\nconst StyledTextLabel = styled.label`\r\n display: inline-block;\r\n padding-bottom: ${SPACING.XX_SMALL};\r\n margin-right: ${SPACING.X_SMALL};\r\n font-size: ${FONT_SIZE.SMALL};\r\n line-height: ${FONT_SIZE.MEDIUM};\r\n font-weight: ${(props: StyledTextLabelProps): string => (props.thinLabel ? '400' : '700')};\r\n color: ${(props: StyledTextLabelProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.LABEL_TEXT)};\r\n opacity: ${(props: StyledTextLabelProps): string => (props.disabled ? '0.7' : '1')};\r\n`;\r\n\r\nconst StyledValidationMessage = styled.div`\r\n font-size: ${FONT_SIZE.X_SMALL};\r\n line-height: ${FONT_SIZE.SMALL};\r\n color: ${(props: StyledValidationMessageProps): string =>\r\n props.invalid ? COLOR.PRIMARY.RED : COLOR.PRIMARY.BLACK};\r\n padding-top: ${SPACING.SMALL};\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n`;\r\n\r\nexport const MonthDatePickerField = React.forwardRef(\r\n ({ disabled, invalid, label, validationMessage, thinLabel, ariaLabel, ...props }, ref) => {\r\n return (\r\n <>\r\n \r\n {label}\r\n \r\n \r\n {validationMessage && (\r\n {validationMessage}\r\n )}\r\n \r\n );\r\n },\r\n);\r\nMonthDatePickerField.displayName = 'MonthDatePickerField';\r\n","import React from 'react';\r\n\r\nimport { darken, transparentize } from 'polished';\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, RADIUS, SPACING } from '../../packages/constants';\r\n\r\nexport interface AutoCompleteTextInputProps {\r\n name: string;\r\n textOnChange: (value: string) => void;\r\n dropdownOnChange: (value: string, command: DropDownAction) => void;\r\n defaultItems?: string[];\r\n textValue?: string;\r\n defaultPlaceholder?: string;\r\n ariaLabel?: string;\r\n dataId?: string;\r\n fontSize?: number;\r\n lineHeight?: number;\r\n invalid?: boolean;\r\n disabled?: boolean;\r\n required?: boolean;\r\n}\r\n\r\nexport enum DropDownAction {\r\n Insert = 'INSERT',\r\n Remove = 'REMOVE',\r\n}\r\n\r\ninterface KeyboardEvent {\r\n key: string;\r\n}\r\n\r\ninterface TextBoxProps {\r\n invalid?: boolean;\r\n disabled?: boolean;\r\n name?: string;\r\n fontSize?: number;\r\n lineHeight?: number;\r\n}\r\n\r\nconst TextBox = styled.input`\r\n background-color: ${(props: TextBoxProps): string =>\r\n props.disabled ? darken('0.1', COLOR.PRIMARY.WHITE) : COLOR.PRIMARY.WHITE};\r\n color: ${(props: TextBoxProps): string =>\r\n props.disabled ? transparentize('0.5', COLOR.PRIMARY.BLACK) : COLOR.PRIMARY.BLACK};\r\n font-size: ${(props: TextBoxProps): string => (props.fontSize ? `${props.fontSize}px` : FONT_SIZE.SMALL)};\r\n line-height: ${(props: TextBoxProps): string => (props.lineHeight ? `${props.lineHeight}px` : FONT_SIZE.MEDIUM)};\r\n padding: ${SPACING.SMALL};\r\n border-width: 1px;\r\n border-style: solid;\r\n border-color: ${(props: TextBoxProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.FORM_FIELD)};\r\n border-radius: ${RADIUS.DEFAULT};\r\n\r\n &::placeholder {\r\n opacity: 0.65;\r\n }\r\n`;\r\n\r\nconst WrapperRef = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n`;\r\n\r\nconst Wrapper = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n\r\n button {\r\n padding: 7px 20px;\r\n margin: 0 auto auto 10px;\r\n }\r\n`;\r\n\r\nconst OptionWrapper = styled.div`\r\n position: relative;\r\n`;\r\n\r\nconst ControlWrapper = styled.div`\r\n position: absolute;\r\n display: flex;\r\n flex-direction: column;\r\n width: 100%;\r\n`;\r\n\r\nconst StyledOption = styled.span`\r\n font-size: ${(props: TextBoxProps): string => (props.fontSize ? `${props.fontSize}px` : FONT_SIZE.SMALL)};\r\n line-height: ${(props: TextBoxProps): string => (props.lineHeight ? `${props.lineHeight}px` : FONT_SIZE.MEDIUM)};\r\n background-color: ${(props: TextBoxProps): string =>\r\n props.disabled ? darken('0.1', COLOR.PRIMARY.WHITE) : COLOR.PRIMARY.WHITE};\r\n color: ${(props: TextBoxProps): string =>\r\n props.disabled ? transparentize('0.5', COLOR.PRIMARY.BLACK) : COLOR.PRIMARY.BLACK};\r\n padding: ${SPACING.SMALL};\r\n border-color: ${(props: TextBoxProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.FORM_FIELD)};\r\n border-radius: ${RADIUS.DEFAULT};\r\n border-left: 1px solid\r\n ${(props: TextBoxProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.FORM_FIELD)};\r\n border-right: 1px solid\r\n ${(props: TextBoxProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.FORM_FIELD)};\r\n\r\n &:last-of-type {\r\n border-bottom: 1px solid\r\n ${(props: TextBoxProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.FORM_FIELD)};\r\n }\r\n &:hover,\r\n &:focus {\r\n background-color: ${COLOR.DROPDOWN.DROPDOWN_OPTION_HOVER};\r\n outline: none;\r\n }\r\n`;\r\n\r\nexport const AutoCompleteTextInput = React.forwardRef(\r\n (\r\n {\r\n defaultItems = [],\r\n defaultPlaceholder = 'Please enter a value',\r\n ariaLabel = 'Autocomplete input',\r\n textValue = '',\r\n textOnChange,\r\n dropdownOnChange,\r\n dataId,\r\n disabled,\r\n invalid,\r\n name,\r\n required,\r\n fontSize,\r\n lineHeight,\r\n },\r\n ref,\r\n ) => {\r\n const [displayDropdownList, setDisplayDropdownList] = React.useState(false);\r\n const [placeholder, setPlaceholder] = React.useState(defaultPlaceholder);\r\n const [selectedIndex, setSelectedIndex] = React.useState(-1);\r\n const wrapperRef = React.useRef(null);\r\n const selectRef = React.useRef(null);\r\n\r\n const maxListLength = 2;\r\n const filteredList = defaultItems.filter((item: string) =>\r\n textValue ? item.toLowerCase().includes(textValue.toLowerCase()) : true,\r\n );\r\n const limitedFilteredList = filteredList.slice(0, 3);\r\n\r\n React.useEffect(() => {\r\n document.addEventListener('mousedown', hideList);\r\n\r\n return () => {\r\n document.removeEventListener('mousedown', hideList);\r\n };\r\n });\r\n\r\n React.useEffect(() => {\r\n if (!selectRef.current) return;\r\n\r\n selectRef.current.focus();\r\n }, [selectedIndex]);\r\n\r\n const removeWhiteSpace = (id: string) => {\r\n return id.trim();\r\n };\r\n\r\n const hideList = (e: { target: any }) => {\r\n const { current: wrap } = wrapperRef;\r\n if (wrap && !wrap.contains(e.target)) {\r\n setDisplayDropdownList(false);\r\n setPlaceholder(defaultPlaceholder);\r\n setSelectedIndex(-1);\r\n }\r\n };\r\n\r\n const search = (value: string) => {\r\n textOnChange(value);\r\n setDisplayDropdownList(true);\r\n };\r\n\r\n const selectNext = (e: any) => {\r\n e.preventDefault();\r\n const isLastOrUnselected =\r\n selectedIndex === limitedFilteredList.length - 1 ||\r\n selectedIndex === maxListLength ||\r\n selectedIndex === -1;\r\n const newIndex = isLastOrUnselected ? 0 : selectedIndex + 1;\r\n setSelectedIndex(newIndex);\r\n };\r\n\r\n const selectPrevious = (e: any) => {\r\n e.preventDefault();\r\n const isFirstOrUnselected = selectedIndex === 0 || selectedIndex === -1;\r\n const lastItemIndex = Math.min(limitedFilteredList.length - 1, maxListLength); // Not always showing all 3 items\r\n const newIndex = isFirstOrUnselected ? lastItemIndex : selectedIndex - 1;\r\n setSelectedIndex(newIndex);\r\n };\r\n\r\n const appendValue = (value: string) => {\r\n value = removeWhiteSpace(value);\r\n const getId = defaultItems.indexOf(value);\r\n if (getId !== -1) {\r\n // element exists, we need to remove it and move it to the start of the array\r\n defaultItems.splice(getId, 1);\r\n }\r\n if (value !== '' && value !== defaultPlaceholder) {\r\n dropdownOnChange(value, DropDownAction.Insert);\r\n }\r\n };\r\n\r\n const dropdownListKeyHandler = (event: any, item: string) => {\r\n const itemIndex = defaultItems.indexOf(item);\r\n\r\n if (event.shiftKey && event.key === 'Delete') {\r\n if (itemIndex !== -1) {\r\n dropdownOnChange(defaultItems[itemIndex], DropDownAction.Remove);\r\n setPlaceholder(limitedFilteredList[selectedIndex]);\r\n if (filteredList.length - 1 <= selectedIndex) {\r\n setSelectedIndex(selectedIndex - 1);\r\n }\r\n // If the array only one has item, and we just removed it\r\n if (defaultItems.length === 0 && itemIndex !== -1) {\r\n setPlaceholder(defaultPlaceholder);\r\n setSelectedIndex(-1); // List is empty\r\n }\r\n }\r\n }\r\n };\r\n\r\n const wrapperKeyHandler = (event: KeyboardEvent) => {\r\n switch (event.key) {\r\n case 'ArrowUp':\r\n selectPrevious(event);\r\n break;\r\n\r\n case 'ArrowDown':\r\n selectNext(event);\r\n break;\r\n\r\n case 'Enter':\r\n displayDropdownList\r\n ? selectRef.current\r\n ? selectValue(placeholder)\r\n : appendValue(textValue)\r\n : setDisplayDropdownList(true);\r\n displayDropdownList ? (placeholder == defaultPlaceholder ? setDisplayDropdownList(false) : '') : '';\r\n break;\r\n\r\n case 'Tab':\r\n displayDropdownList ? '' : setDisplayDropdownList(true);\r\n break;\r\n\r\n case 'Escape':\r\n displayDropdownList ? (setDisplayDropdownList(false), setPlaceholder(defaultPlaceholder)) : '';\r\n break;\r\n }\r\n };\r\n\r\n const selectValue = (value: string) => {\r\n if (value !== defaultPlaceholder) {\r\n textOnChange(removeWhiteSpace(value));\r\n }\r\n setDisplayDropdownList(false);\r\n setPlaceholder(defaultPlaceholder);\r\n appendValue(value);\r\n setSelectedIndex(-1);\r\n };\r\n\r\n return (\r\n \r\n \r\n setDisplayDropdownList(defaultItems.length !== 0 && !displayDropdownList)}\r\n onChange={(e: { target: { value: any } }) => search(e.target.value)}\r\n value={textValue}\r\n autoComplete={'off'}\r\n aria-label={ariaLabel}\r\n fontSize={fontSize}\r\n lineHeight={lineHeight}\r\n disabled={disabled}\r\n invalid={invalid}\r\n name={name}\r\n required={required}\r\n />\r\n \r\n \r\n {displayDropdownList\r\n ? limitedFilteredList.map((item: string, index: any) => (\r\n ''}\r\n key={index}\r\n data-index={index}\r\n onClick={() => {\r\n !disabled ? selectValue(item) : setPlaceholder(defaultPlaceholder);\r\n }}\r\n onMouseOver={() => {\r\n !disabled\r\n ? (setSelectedIndex(index), setPlaceholder(removeWhiteSpace(item)))\r\n : setPlaceholder(defaultPlaceholder);\r\n }}\r\n onMouseOut={() => {\r\n setPlaceholder(defaultPlaceholder);\r\n setSelectedIndex(-1);\r\n }}\r\n onKeyDown={(e: any) => dropdownListKeyHandler(e, item)}\r\n tabIndex={0}\r\n onFocus={() => {\r\n !disabled\r\n ? (setSelectedIndex(index), setPlaceholder(removeWhiteSpace(item)))\r\n : setPlaceholder(defaultPlaceholder);\r\n }}\r\n disabled={disabled}\r\n invalid={invalid}\r\n name={name}\r\n fontSize={fontSize}\r\n lineHeight={lineHeight}\r\n >\r\n {removeWhiteSpace(item)}\r\n \r\n ))\r\n : ''}\r\n \r\n \r\n \r\n \r\n );\r\n },\r\n);\r\n\r\nAutoCompleteTextInput.displayName = 'AutoCompleteTextInput';\r\n","import React from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport { COLOR, FONT_SIZE, Theme } from '../../packages/constants';\r\nimport { AutoCompleteTextInput, DropDownAction } from '../AutoCompleteTextInput';\r\nimport { Button } from '../button';\r\n\r\nexport interface AutoCompleteTextFieldProps {\r\n name: string;\r\n dropdownOnChange: (value: string, command: DropDownAction) => void;\r\n defaultItems?: string[];\r\n defaultPlaceholder?: string;\r\n ariaLabel?: string;\r\n buttonName?: string;\r\n dataId?: string;\r\n theme?: Theme;\r\n label?: string;\r\n thinLabel?: boolean;\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n required?: boolean;\r\n lineHeight?: number;\r\n fontSize?: number;\r\n disabledButtonHandler?: (value: string) => boolean;\r\n}\r\n\r\ninterface StyledTextLabelProps {\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n thinLabel?: boolean;\r\n lineHeight?: number;\r\n fontSize?: number;\r\n}\r\n\r\nconst Wrapper = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n gap: 1rem;\r\n`;\r\n\r\nconst WrapperBtn = styled.div`\r\n display: block;\r\n`;\r\n\r\nconst StyledTextLabel = styled.span`\r\n display: block;\r\n font-size: ${(props: StyledTextLabelProps): string => (props.fontSize ? `${props.fontSize}px` : FONT_SIZE.SMALL)};\r\n line-height: ${(props: StyledTextLabelProps): string =>\r\n props.lineHeight ? `${props.lineHeight}px` : FONT_SIZE.MEDIUM};\r\n font-weight: ${(props: StyledTextLabelProps): string => (props.thinLabel ? '400' : '700')};\r\n color: ${(props: StyledTextLabelProps): string => (props.invalid ? COLOR.PRIMARY.RED : COLOR.MAIN.LABEL_TEXT)};\r\n opacity: ${(props: StyledTextLabelProps): string => (props.disabled ? '0.7' : '1')};\r\n`;\r\n\r\nexport const AutoCompleteTextField = ({\r\n dropdownOnChange,\r\n defaultItems = [],\r\n buttonName = 'Submit',\r\n defaultPlaceholder = 'Please enter a value',\r\n ariaLabel = 'Autocomplete input',\r\n label,\r\n dataId,\r\n theme,\r\n invalid,\r\n disabled,\r\n thinLabel,\r\n name,\r\n required = false,\r\n lineHeight,\r\n fontSize,\r\n disabledButtonHandler,\r\n}: AutoCompleteTextFieldProps) => {\r\n const [value, setValue] = React.useState('');\r\n\r\n return (\r\n \r\n {label ? (\r\n \r\n {label}\r\n \r\n ) : (\r\n ''\r\n )}\r\n \r\n \r\n dropdownOnChange(value, DropDownAction.Insert)}\r\n disabled={disabledButtonHandler ? disabledButtonHandler(value) : !value}\r\n size={`${fontSize}px`}\r\n theme={theme}\r\n >\r\n {buttonName}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nAutoCompleteTextField.displayName = 'AutoCompleteTextField';\r\n","import styled from 'styled-components';\r\n\r\nimport {\r\n NewReleaseAllProducts,\r\n NewReleaseDashboard,\r\n NewReleaseForecasting,\r\n NewReleaseMulti,\r\n NewReleaseReporting,\r\n} from '../../../../packages/icons';\r\n\r\nconst iconWidth = '18px';\r\n\r\nexport const StyledNewReleaseAllProducts = styled(NewReleaseAllProducts)`\r\n display: inline-block;\r\n height: ${iconWidth};\r\n width: ${iconWidth};\r\n`;\r\n\r\nexport const StyledNewReleaseDashboard = styled(NewReleaseDashboard)`\r\n display: inline-block;\r\n height: ${iconWidth};\r\n width: ${iconWidth};\r\n`;\r\n\r\nexport const StyledNewReleaseForecasting = styled(NewReleaseForecasting)`\r\n display: inline-block;\r\n height: ${iconWidth};\r\n width: ${iconWidth};\r\n`;\r\n\r\nexport const StyledNewReleaseMulti = styled(NewReleaseMulti)`\r\n display: inline-block;\r\n height: ${iconWidth};\r\n width: ${iconWidth};\r\n`;\r\n\r\nexport const StyledNewReleaseReporting = styled(NewReleaseReporting)`\r\n display: inline-block;\r\n height: ${iconWidth};\r\n width: ${iconWidth};\r\n`;\r\n","import * as React from 'react';\r\n\r\nimport dayjs from 'dayjs';\r\nimport utc from 'dayjs/plugin/utc';\r\nimport styled from 'styled-components';\r\n\r\nimport { FONT_SIZE, SPACING } from '../../../../packages/constants';\r\nimport { Text } from '../../../text';\r\nimport { ArticleData } from '../../release-notes';\r\nimport {\r\n StyledNewReleaseAllProducts,\r\n StyledNewReleaseDashboard,\r\n StyledNewReleaseForecasting,\r\n StyledNewReleaseMulti,\r\n StyledNewReleaseReporting,\r\n} from '../icons/icons';\r\n\r\ndayjs.extend(utc);\r\n\r\nexport interface ArticleProps {\r\n /**\r\n * The article data.\r\n */\r\n data: ArticleData;\r\n /**\r\n * Show videos and images\r\n */\r\n showMedia?: boolean;\r\n /**\r\n * Handles click event on video content.\r\n */\r\n handleOpenVideo: (itemId: string, itemURL: string) => void;\r\n}\r\n\r\nexport interface ProductNameProps {\r\n colour?: string;\r\n}\r\n\r\nconst productCategories = [\r\n {\r\n id: 'all-products',\r\n name: 'All Products',\r\n colour: '#435c84',\r\n icon: ,\r\n },\r\n {\r\n id: 'dashboard',\r\n name: 'Dashboard',\r\n colour: '#ffd943',\r\n icon: ,\r\n },\r\n {\r\n id: 'forecasting',\r\n name: 'Forecasting ',\r\n colour: '#40d98c',\r\n icon: ,\r\n },\r\n {\r\n id: 'multi',\r\n name: 'Multi',\r\n colour: 'hsla(285.0980392156863, 100%, 70%, 1)',\r\n icon: ,\r\n },\r\n {\r\n id: 'reporting',\r\n name: 'Reporting ',\r\n colour: '#40c5ff',\r\n icon: ,\r\n },\r\n];\r\n\r\nconst headerColour = '#8292ad';\r\nconst Header = styled.div`\r\n display: flex;\r\n align-items: center;\r\n border-top-left-radius: 4px;\r\n border-top-right-radius: 4px;\r\n margin-bottom: 10px;\r\n font-size: ${FONT_SIZE.X_SMALL};\r\n line-height: ${FONT_SIZE.X_SMALL};\r\n letter-spacing: 0.6px;\r\n color: ${headerColour};\r\n`;\r\n\r\nconst ProductName = styled.div`\r\n margin-left: ${SPACING.SMALL};\r\n color: ${(props) => props.colour || '#435c84'};\r\n font-weight: 400;\r\n text-transform: uppercase;\r\n`;\r\n\r\nconst Divider = styled.div`\r\n width: 1px;\r\n height: 12px;\r\n margin-right: ${SPACING.MEDIUM};\r\n margin-left: ${SPACING.MEDIUM};\r\n background-color: ${headerColour};\r\n color: ${headerColour};\r\n`;\r\n\r\nconst spotlightBrandColor = '#04255b';\r\nconst Title = styled.div`\r\n white-space: nowrap;\r\n margin-bottom: 10px;\r\n font-size: ${FONT_SIZE.LARGE};\r\n font-weight: 500;\r\n line-height: 1.4;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n color: ${spotlightBrandColor};\r\n`;\r\n\r\nconst ThumbnailContainer = styled.div`\r\n max-width: 420px;\r\n height: auto;\r\n margin-bottom: 10px;\r\n`;\r\n\r\nconst StyledImage = styled.img`\r\n display: block;\r\n width: 100%;\r\n height: auto;\r\n`;\r\n\r\nconst ImageThumbnail = styled(StyledImage)`\r\n border-radius: 2px;\r\n`;\r\n\r\nconst VideoThumbnail = styled(StyledImage)`\r\n position: relative;\r\n`;\r\n\r\nconst VideoPlayContainer = styled.div`\r\n position: absolute;\r\n width: 56px;\r\n padding-right: 0;\r\n opacity: 0.6;\r\n`;\r\n\r\nconst VideoPlayImage = styled.img`\r\n border: 0;\r\n vertical-align: middle;\r\n display: inline-block;\r\n max-width: 100%;\r\n margin-top: 0;\r\n margin-bottom: 0;\r\n`;\r\n\r\nconst VideoButton = styled.button`\r\n display: flex;\r\n position: relative;\r\n overflow: hidden;\r\n width: 100%;\r\n height: 100%;\r\n max-width: none;\r\n margin-right: 20px;\r\n justify-content: center;\r\n align-items: center;\r\n border: none;\r\n padding: 0;\r\n cursor: pointer;\r\n`;\r\n\r\nconst LearnMoreLink = styled.a`\r\n text-transform: capitalize;\r\n display: inline-block;\r\n text-align: center;\r\n margin-top: ${SPACING.MEDIUM};\r\n font-size: ${FONT_SIZE.X_SMALL};\r\n font-weight: 500;\r\n letter-spacing: 0.6px;\r\n color: #00b1ff;\r\n`;\r\n\r\nexport const Article = ({ data, showMedia, handleOpenVideo }: ArticleProps) => {\r\n const defaultCategory = productCategories.find((category) => category.id === 'all-products');\r\n const product = productCategories.find((category) => category.id === data.product) || defaultCategory;\r\n\r\n const thumbnailData = data.videoThumbnails || data.thumbnailImage;\r\n\r\n const openVideo = (e: any) => {\r\n e.preventDefault();\r\n handleOpenVideo(data.videoLink?.id as string, data.videoLink?.url as string);\r\n };\r\n\r\n const video = showMedia && data.videoThumbnails && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n const image = showMedia && data.thumbnailImage && (\r\n \r\n );\r\n\r\n const thumbnail = video || image;\r\n\r\n return (\r\n
    \r\n
    \r\n {product?.icon}\r\n {`${product?.name}`} \r\n \r\n {`${dayjs.utc(data.releaseDate).format('DD MMMM YYYY')}`}\r\n
    \r\n {data.name}\r\n {thumbnailData && {thumbnail} }\r\n \r\n {data.postSummary}\r\n \r\n {data.learnMoreLink && (\r\n \r\n Learn More\r\n \r\n )}\r\n
    \r\n );\r\n};\r\n","import styled from 'styled-components';\r\n\r\nimport { NewReleaseNoData } from '../../../../packages/icons';\r\n\r\nexport const StyledNewReleaseNoData = styled(NewReleaseNoData)`\r\n display: block;\r\n width: 100%;\r\n height: auto;\r\n`;\r\n","import * as React from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport { FONT_SIZE, RADIUS, SPACING } from '../../packages/constants';\r\nimport { Article } from './atoms/article/article';\r\nimport { StyledNewReleaseNoData } from './atoms/images/images';\r\n\r\nexport interface ArticleData {\r\n releaseDate: string;\r\n isArchived: boolean;\r\n learnMoreLink?: string;\r\n isDraft: boolean;\r\n name: string;\r\n slug: string;\r\n videoLink?: MediaLink;\r\n videoThumbnails?: Thumbnail;\r\n thumbnailImage?: Thumbnail;\r\n productLabels: string;\r\n lastUpdated: string;\r\n createdOn: string;\r\n lastPublished: string;\r\n postSummary: string;\r\n id: string;\r\n product: string;\r\n cmsLocaleId: string;\r\n}\r\n\r\ninterface MediaLink {\r\n url: string;\r\n id: string;\r\n}\r\n\r\ninterface Thumbnail {\r\n fileId: string;\r\n url: string;\r\n alt: string;\r\n}\r\n\r\nexport interface ReleaseNotesProps {\r\n /**\r\n * List of articles to display in the release notes.\r\n */\r\n articles: ArticleData[];\r\n /**\r\n * URL to open in a new tab.\r\n */\r\n url?: string;\r\n /**\r\n * Label for the URL.\r\n */\r\n urlDisplayText?: string;\r\n /**\r\n * Number of articles to display.\r\n */\r\n displaySize?: number;\r\n /**\r\n * Show videos and images\r\n */\r\n showMedia?: boolean;\r\n /**\r\n * External function to dispatch actions to.\r\n */\r\n handleAction?: (action: Action) => Promise;\r\n}\r\n\r\ninterface Action {\r\n type: TType;\r\n payload?: TPayload;\r\n}\r\n\r\n/**\r\n * Actions dispatched to an external handler\r\n */\r\nexport enum ReleaseNotesExternalActions {\r\n OPEN_VIDEO = 'OPEN_VIDEO',\r\n}\r\n\r\nconst StyledReleaseNotes = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n`;\r\n\r\nconst ArticleContainer = styled.div`\r\n margin: 5px;\r\n padding: ${SPACING.LARGE};\r\n border-radius: ${RADIUS.DEFAULT};\r\n border-style: solid;\r\n border-width: 2px;\r\n box-sizing: border-box;\r\n width: 100%;\r\n background-color: #ffffff;\r\n border-color: transparent;\r\n box-shadow: 0 1px 5px rgba(4, 37, 91, 0.25);\r\n`;\r\n\r\nconst spotlightBrandColor = '#04255b';\r\nconst Link = styled.a`\r\n position: relative;\r\n text-decoration: none;\r\n text-transform: uppercase;\r\n display: inline-block;\r\n text-align: center;\r\n line-height: 2;\r\n margin-top: ${SPACING.XX_LARGE};\r\n font-size: ${FONT_SIZE.LARGE};\r\n font-weight: 500;\r\n padding: 0 1px;\r\n color: ${spotlightBrandColor};\r\n &::before,\r\n &::after {\r\n content: '';\r\n position: absolute;\r\n background-color: ${spotlightBrandColor};\r\n z-index: 1;\r\n height: 5%;\r\n width: 100%;\r\n left: 100%;\r\n bottom: 0;\r\n }\r\n &::before {\r\n width: 0%;\r\n left: 0;\r\n bottom: 0;\r\n }\r\n &::after {\r\n width: 100%;\r\n left: 0;\r\n bottom: 0;\r\n }\r\n`;\r\n\r\nconst NoNewReleasesImage = styled.div`\r\n max-width: 420px;\r\n height: auto;\r\n`;\r\n\r\nconst ReleaseNotes: React.FC> = ({\r\n displaySize,\r\n articles,\r\n url,\r\n urlDisplayText,\r\n showMedia,\r\n handleAction,\r\n ...props\r\n}) => {\r\n const activeArticles = articles.filter((a) => !a.isArchived && !a.isDraft);\r\n const itemsToDisplay = displaySize && displaySize < activeArticles.length ? activeArticles.slice(0, displaySize) : activeArticles;\r\n\r\n const handleOpenVideo = async (id: string, url: string) => {\r\n if (typeof handleAction !== 'function') {\r\n return;\r\n }\r\n\r\n await handleAction({\r\n type: ReleaseNotesExternalActions.OPEN_VIDEO,\r\n payload: {\r\n id: id,\r\n videoURL: url,\r\n },\r\n });\r\n };\r\n\r\n return (\r\n \r\n {itemsToDisplay.length > 0 ? (\r\n itemsToDisplay.map((article: ArticleData) => (\r\n \r\n
    \r\n \r\n ))\r\n ) : (\r\n \r\n \r\n \r\n )}\r\n {url && urlDisplayText && (\r\n \r\n {urlDisplayText}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport { ReleaseNotes };\r\n","import * as React from 'react';\r\n\r\nimport useMergedRef from '@react-hook/merged-ref';\r\nimport { Portal } from 'react-portal';\r\nimport styled from 'styled-components';\r\n\r\nimport { useClickOutside } from '../../../ModernScripts/Spotlight/Hooks/useClickOutside';\r\nimport { camelToKebab } from '../../../Scripts/Spotlight/Components/CamelToKebab';\r\nimport { COLOR } from '../../packages/constants';\r\nimport { SearchFilter } from '../search-filter/search-filter';\r\n\r\nexport interface Option {\r\n value: string;\r\n text: string;\r\n dataId?: string;\r\n flagColour?: string; // little highlight colour\r\n disabled?: boolean;\r\n icon?: React.ReactElement;\r\n}\r\n\r\ninterface ComponentWithDensityProps {\r\n density: Density;\r\n}\r\n\r\ninterface StyledOptionProps {\r\n interactionMode: InteractionModes;\r\n}\r\n\r\ninterface StyledOptionLabelInnerProps extends ComponentWithDensityProps {\r\n interactionMode: InteractionModes;\r\n flagColour?: string; // little highlight colour\r\n disable?: boolean;\r\n}\r\n\r\nexport interface OptionGroup {\r\n label: string;\r\n options: Option[];\r\n}\r\n\r\nexport interface Section {\r\n type: 'section';\r\n options: Array