mirror of
https://github.com/Websoft9/websoft9.git
synced 2025-01-27 21:18:39 +08:00
1 line
161 KiB
Plaintext
1 line
161 KiB
Plaintext
{"version":3,"file":"static/js/145.13333720.chunk.js","mappings":"gkBAMMA,EAAgB,SAAHC,GAA0F,IAApFC,EAAID,EAAJC,KAAMC,EAAWF,EAAXE,YAAaC,EAAWH,EAAXG,YAAaC,EAAMJ,EAANI,OAAQC,EAAQL,EAARK,SAAUC,EAASN,EAATM,UAAWC,EAAKP,EAALO,MAAOC,EAAQR,EAARQ,SACzFC,GAAwCC,EAAAA,EAAAA,WAAS,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAhDI,EAAYF,EAAA,GAAEG,EAAeH,EAAA,GAEpC,OACII,EAAAA,EAAAA,KAAAC,EAAAA,SAAA,CAAAC,UACIC,EAAAA,EAAAA,MAACC,EAAAA,EAAU,CAACb,UAAU,OAAMW,SAAA,EACxBF,EAAAA,EAAAA,KAACK,EAAAA,EAAKC,SAAOC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CACTC,KAAMV,EAAe,OAAS,WAC9BX,YAAaA,EACbD,KAAMA,EACNuB,GAAIvB,EACJwB,GAAG,QACHC,IAAK,SAACC,GACExB,GAAaA,EAAYwB,EACjC,EACArB,UAAWA,EACXsB,aAAWxB,IAAUA,EAAOH,KACvBI,EAAWA,EAASJ,GAAQ,CAAC,GAAC,IACnC4B,aAAc5B,EACd6B,aAAcvB,EACdC,SAAUA,MAEdO,EAAAA,EAAAA,KAAA,OACIT,UAAWyB,IAAW,mBAAoB,uBAAwB,CAC9D,gBAAiBlB,IAErB,gBAAeA,EAAe,OAAS,QAAQI,UAC/CF,EAAAA,EAAAA,KAAA,QACIT,UAAU,eACV0B,QAAS,WACLlB,GAAiBD,EACrB,UAKxB,EAoKA,EAnJkB,SAAHoB,GAe2C,IAdtDC,EAAKD,EAALC,MACAX,EAAIU,EAAJV,KACAtB,EAAIgC,EAAJhC,KACAM,EAAK0B,EAAL1B,MACAC,EAAQyB,EAARzB,SACAN,EAAW+B,EAAX/B,YACAG,EAAQ4B,EAAR5B,SACAD,EAAM6B,EAAN7B,OACAE,EAAS2B,EAAT3B,UACA6B,EAAcF,EAAdE,eACAC,EAAcH,EAAdG,eACAjC,EAAW8B,EAAX9B,YACAc,EAAQgB,EAARhB,SACGoB,GAAUC,EAAAA,EAAAA,GAAAL,EAAAM,GAGPC,EAAgB,aAATjB,EAAsB,WAAsB,WAATA,EAAoB,SAAW,QAE/E,OACIR,EAAAA,EAAAA,KAAAC,EAAAA,SAAA,CAAAC,SACc,WAATM,GACGR,EAAAA,EAAAA,KAAA,SAAAO,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CAAOC,KAAMA,EAAMtB,KAAMA,GAAWI,EAAWA,EAASJ,GAAQ,CAAC,GAAQoC,KAEzEtB,EAAAA,EAAAA,KAAAC,EAAAA,SAAA,CAAAC,SACc,aAATM,GACGR,EAAAA,EAAAA,KAAAC,EAAAA,SAAA,CAAAC,UACIC,EAAAA,EAAAA,MAACE,EAAAA,EAAKqB,MAAK,CAACnC,UAAW8B,EAAenB,SAAA,CACjCiB,GACGhB,EAAAA,EAAAA,MAAAF,EAAAA,SAAA,CAAAC,SAAA,CACK,KACDF,EAAAA,EAAAA,KAACK,EAAAA,EAAKsB,MAAK,CAACpC,UAAW6B,EAAelB,SAAEiB,IAAmB,IAAEjB,EAAU,OAE3E,MACJF,EAAAA,EAAAA,KAAChB,EAAa,CACVE,KAAMA,EACNC,YAAaA,EACbC,YAAaA,EACbC,OAAQA,EACRC,SAAUA,EACVC,UAAWA,EACXC,MAAOA,EACPC,SAAUA,IAGbJ,GAAUA,EAAOH,IACdc,EAAAA,EAAAA,KAACK,EAAAA,EAAKC,QAAQsB,SAAQ,CAACpB,KAAK,UAAUjB,UAAU,UAASW,SACpDb,EAAOH,GAAe,UAE3B,WAIZc,EAAAA,EAAAA,KAAAC,EAAAA,SAAA,CAAAC,SACc,WAATM,GACGR,EAAAA,EAAAA,KAAAC,EAAAA,SAAA,CAAAC,UACIC,EAAAA,EAAAA,MAACE,EAAAA,EAAKqB,MAAK,CAACnC,UAAW8B,EAAenB,SAAA,CACjCiB,GAAQnB,EAAAA,EAAAA,KAACK,EAAAA,EAAKsB,MAAK,CAACpC,UAAW6B,EAAelB,SAAEiB,IAAsB,MAEvEnB,EAAAA,EAAAA,KAACK,EAAAA,EAAKwB,QAAMtB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CACRC,KAAMA,EACNW,MAAOA,EACPjC,KAAMA,EACNuB,GAAIvB,EACJyB,IAAK,SAACC,GACExB,GAAaA,EAAYwB,EACjC,EACAa,KAAMA,EACNlC,UAAWA,EACXsB,aAAWxB,IAAUA,EAAOH,KACvBI,EAAWA,EAASJ,GAAQ,CAAC,GAC9BoC,GAAU,IAAApB,SACbA,KAGJb,GAAUA,EAAOH,IACdc,EAAAA,EAAAA,KAACK,EAAAA,EAAKC,QAAQsB,SAAQ,CAACpB,KAAK,UAASN,SAChCb,EAAOH,GAAe,UAE3B,WAIZc,EAAAA,EAAAA,KAAAC,EAAAA,SAAA,CAAAC,SACc,aAATM,GAAgC,UAATA,GACpBR,EAAAA,EAAAA,KAAAC,EAAAA,SAAA,CAAAC,UACIC,EAAAA,EAAAA,MAACE,EAAAA,EAAKqB,MAAK,CAACnC,UAAW8B,EAAenB,SAAA,EAClCF,EAAAA,EAAAA,KAACK,EAAAA,EAAKyB,OAAKvB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CACPC,KAAMA,EACNW,MAAOA,EACPjC,KAAMA,EACNuB,GAAIvB,EACJyB,IAAK,SAACC,GACExB,GAAaA,EAAYwB,EACjC,EACArB,UAAWA,EACXsB,aAAWxB,IAAUA,EAAOH,KACvBI,EAAWA,EAASJ,GAAQ,CAAC,GAC9BoC,IAGPjC,GAAUA,EAAOH,IACdc,EAAAA,EAAAA,KAACK,EAAAA,EAAKC,QAAQsB,SAAQ,CAACpB,KAAK,UAASN,SAChCb,EAAOH,GAAe,UAE3B,WAIZiB,EAAAA,EAAAA,MAACE,EAAAA,EAAKqB,MAAK,CAACnC,UAAW8B,EAAenB,SAAA,CACjCiB,GAAQnB,EAAAA,EAAAA,KAACK,EAAAA,EAAKsB,MAAK,CAACpC,UAAW6B,EAAelB,SAAEiB,IAAsB,MAEvEnB,EAAAA,EAAAA,KAACK,EAAAA,EAAKC,SAAOC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CACTC,KAAMA,EACNrB,YAAaA,EACbK,MAAOA,EACPN,KAAMA,EACNuB,GAAIvB,EACJwB,GAAIe,EACJd,IAAK,SAACC,GACExB,GAAaA,EAAYwB,EACjC,EACArB,UAAWA,EACXsB,aAAWxB,IAAUA,EAAOH,KACvBI,EAAWA,EAASJ,GAAQ,CAAC,GAC9BoC,GAAU,IACdR,aAAc5B,EAAKgB,SAClBA,GAAsB,QAG1Bb,GAAUA,EAAOH,IACdc,EAAAA,EAAAA,KAACK,EAAAA,EAAKC,QAAQsB,SAAQ,CAACpB,KAAK,UAASN,SAChCb,EAAOH,GAAe,UAE3B,eAWhD,E,UC5LM6C,EAAU,SAACC,GACb,IAAM9B,EAAW8B,EAAM9B,UAAY,KAC7B+B,EAAMD,EAAME,KAAO,MACnBC,EAAQH,EAAMG,OAAS,YACvBC,EAAOJ,EAAMI,MAAQ,GAE3B,OACIpC,EAAAA,EAAAA,KAACiC,EAAG,CACAI,KAAK,SACL9C,UAAWyB,IACP,CACI,iBAAiC,aAAfgB,EAAMxB,KACxB,eAA+B,SAAfwB,EAAMxB,MAE1B,CAAC,QAAD8B,OAASH,KAAQI,EAAAA,EAAAA,GAAA,aAAAD,OACJF,GAASA,GACtBJ,EAAMzC,WACRW,SACDA,GAGb,EAEA6B,EAAQS,aAAe,CACnBN,IAAK,MACL1B,KAAM,YAGV,ICxCIiC,EDwCJ,I,8BCxCgB,SAEDC,IAAc,OAAAC,EAAAC,MAAC,KAADC,UAAA,CAa7B,SAAAF,IAFC,OAEDA,GAAAG,EAAAA,EAAAA,IAAAC,EAAAA,EAAAA,KAAAC,MAbA,SAAAC,IAAA,IAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAAN,EAAAA,EAAAA,KAAAO,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,UAEShB,EAAY,CAADc,EAAAE,KAAA,gBAAAF,EAAAE,KAAA,EACWC,MAAM,iBAAiB,KAAD,EAA/B,OAARR,EAAQK,EAAAI,KAAAJ,EAAAE,KAAA,EACKP,EAASU,OAAO,KAAD,EAA5BT,EAAII,EAAAI,KACJP,EAAWD,EAAKU,UAAUC,mBAC1BT,EAAcF,EAAKU,UAAUE,mBACnCtB,EAAcuB,KAAKZ,EAAW,IAAMC,GAAa,eAAAE,EAAAU,OAAA,SAG9CxB,GAAW,yBAAAc,EAAAW,OAAA,GAAAjB,EAAA,MACrBL,MAAA,KAAAC,UAAA,CAGDsB,EAAAA,EAAMC,SAASC,QAAQC,KAAK,gBAAkB,mBAC9CH,EAAAA,EAAMC,SAASC,QAAQE,IAAI,gBAAkB,mBAC7CJ,EAAAA,EAAMC,SAASC,QAAQG,OAAO,iBAAmB,WACjDL,EAAAA,EAAMC,SAASC,QAAQG,OAAe,OAAI,WAC1CL,EAAAA,EAAMC,SAASC,QAAQG,OAAgB,QAAI,IAG3CL,EAAAA,EAAMM,aAAavB,SAASwB,KACxB,SAACxB,GACG,OAAOA,CACX,IACA,SAACyB,GAEG,IAAIC,EAEJ,GAAID,GAASA,EAAMzB,UAAsC,MAA1ByB,EAAMzB,SAAS2B,OACzCC,EAAAA,OACE,KAAIH,IAASA,EAAMzB,UAAsC,MAA1ByB,EAAMzB,SAAS2B,OAIjD,OADAD,EAAUD,EAAMzB,UAAYyB,EAAMzB,SAASC,KAAOwB,EAAMzB,SAASC,KAAc,QAAIwB,EAAMC,SAAWD,EAC7FI,QAAQC,OAAOJ,GAHrBE,EAAAA,EAIL,CACJ,IACF,IAEIG,GAAOC,EAAAA,EAAAA,IAAA,SAAAD,KAAAE,EAAAA,EAAAA,GAAA,KAAAF,GACT,KAGAV,IAAG,eAAAtF,GAAA6D,EAAAA,EAAAA,IAAAC,EAAAA,EAAAA,KAAAC,MAAG,SAAAoC,EAAOC,EAAKC,GAAM,IAAApC,EAAAqC,EAAA,OAAAxC,EAAAA,EAAAA,KAAAO,MAAA,SAAAkC,GAAA,cAAAA,EAAAhC,KAAAgC,EAAA/B,MAAA,cAAA+B,EAAA/B,KAAA,EAE8Cf,IAAiB,KAAD,EAWjF,OAXiF8C,EAAAC,GAAAD,EAAA7B,KAAlFQ,EAAAA,EAAMC,SAASC,QAAQG,OAAsB,cAAI,SAAQgB,EAAAC,GAErDH,GACIC,EAAcD,EACZI,OAAOC,KAAKL,GACTM,KAAI,SAACC,GAAG,OAAKA,EAAM,IAAMP,EAAOO,EAAI,IACpCC,KAAK,KACR,GACN5C,EAAWiB,EAAAA,EAAMI,IAAI,GAADjC,OAAI+C,EAAG,KAAA/C,OAAIiD,GAAeD,IAE9CpC,EAAWiB,EAAAA,EAAMI,IAAI,GAADjC,OAAI+C,GAAOC,GAClCE,EAAAvB,OAAA,SACMf,GAAQ,wBAAAsC,EAAAtB,OAAA,GAAAkB,EAAA,KAClB,gBAAAW,EAAAC,GAAA,OAAA/G,EAAA2D,MAAA,KAAAC,UAAA,EAfE,GAiBH,KAGAoD,OAAM,eAAA/E,GAAA4B,EAAAA,EAAAA,IAAAC,EAAAA,EAAAA,KAAAC,MAAG,SAAAkD,EAAOb,EAAKlC,GAAI,OAAAJ,EAAAA,EAAAA,KAAAO,MAAA,SAAA6C,GAAA,cAAAA,EAAA3C,KAAA2C,EAAA1C,MAAA,cAAA0C,EAAA1C,KAAA,EAE6Cf,IAAiB,KAAD,EAAzB,OAAyByD,EAAAV,GAAAU,EAAAxC,KAAlFQ,EAAAA,EAAMC,SAASC,QAAQG,OAAsB,cAAI,SAAQ2B,EAAAV,GAAAU,EAAAlC,OAAA,SAClDE,EAAAA,EAAMG,KAAKe,EAAKlC,IAAK,wBAAAgD,EAAAjC,OAAA,GAAAgC,EAAA,KAC/B,gBAAAE,EAAAC,GAAA,OAAAnF,EAAA0B,MAAA,KAAAC,UAAA,EAJK,EAIL,ICxECyD,EAAM,IAAIrB,EAShB,SAASsB,EAAQjB,GAEb,OAAOgB,EAAI/B,IAAI,GAADjC,OADE,sBACagD,EACjC,CAGA,SAASkB,EAAalB,GAElB,OAAOgB,EAAI/B,IAAI,GAADjC,OADE,2BACagD,EACjC,CAGA,SAASmB,EAAQnB,GAEb,OAAOgB,EAAI/B,IAAI,GAADjC,OADE,sBACagD,EACjC,CAGA,SAASoB,EAASpB,GAEd,OAAOgB,EAAI/B,IAAI,GAADjC,OADE,uBACagD,EACjC,CAGA,SAASqB,EAAWrB,GAEhB,OAAOgB,EAAI/B,IAAI,GAADjC,OADE,yBACagD,EACjC,CA2BA,SAASsB,EAAatB,GAElB,OAAOgB,EAAI/B,IAAI,GAADjC,OADE,2BACagD,EACjC,C,iICpDMuB,GAAIC,IAAAA,QAEJC,GAAaC,EAAAA,YAAiB,SAAehF,EAAOrB,GACtD,OAAOX,EAAAA,EAAAA,KAACiH,EAAAA,GAAQ1G,EAAAA,EAAAA,GAAA,CAAC2G,UAAW,EAAGvG,IAAKA,EAAKwG,QAAQ,UAAanF,GAClE,IAGMoF,GAAe,SAACpF,GAClB,IAAMqF,GAAWC,EAAAA,EAAAA,MACjB5H,GAA8BC,EAAAA,EAAAA,WAAS,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAtC6H,EAAO3H,EAAA,GAAE4H,EAAU5H,EAAA,GAC1B6H,GAAkC9H,EAAAA,EAAAA,WAAS,GAAM+H,GAAA7H,EAAAA,EAAAA,GAAA4H,EAAA,GAA1CE,EAASD,EAAA,GAAEE,EAAYF,EAAA,GAC9BG,GAAwClI,EAAAA,EAAAA,UAAS,IAAGmI,GAAAjI,EAAAA,EAAAA,GAAAgI,EAAA,GAA7CE,EAAYD,EAAA,GAAEE,EAAeF,EAAA,GAQpC,OACI3H,EAAAA,EAAAA,MAAC8H,EAAAA,EAAK,CAACC,KAAMlG,EAAMmG,YAAaC,OAAQpG,EAAMqG,QAASjG,KAAK,KACxDkG,WAAW,OAAOC,SAAS,SAASC,MAAO,CAAEC,gBAAiB,mBAAoBvI,SAAA,EAClFF,EAAAA,EAAAA,KAACiI,EAAAA,EAAMS,OAAM,CAACN,OAAQpG,EAAMqG,QAAS9I,UAAWyB,IAAW,uBAAwB,cAAcd,UAC7FF,EAAAA,EAAAA,KAAA,MAAAE,SAAK2G,GAAE,8BAEX1G,EAAAA,EAAAA,MAAC8H,EAAAA,EAAMU,KAAI,CAACpJ,UAAU,MAAKW,SAAA,EACvBC,EAAAA,EAAAA,MAAA,QAAMqI,MAAO,CAAEI,OAAQ,YAAa1I,SAAA,CAAE2G,GAAE,mDAAmD,IAAE7E,EAAM6G,cAAcC,YAAY,UAC7H9I,EAAAA,EAAAA,KAAA,OAAAE,SACKyH,IAAa3H,EAAAA,EAAAA,KAAC+I,EAAAA,EAAK,CAAC5B,QAAQ,SAAS5H,UAAU,OAAMW,SACjD6H,UAIb5H,EAAAA,EAAAA,MAAC8H,EAAAA,EAAMe,OAAM,CAAA9I,SAAA,EACTF,EAAAA,EAAAA,KAACiJ,EAAAA,EAAM,CAAC9B,QAAQ,QAAQlG,QAASe,EAAMqG,QAAQnI,SAC1C2G,GAAE,WACG,KACV1G,EAAAA,EAAAA,MAAC8I,EAAAA,EAAM,CAACC,SAAU3B,EAASJ,QAAQ,UAAUlG,SAAO6B,EAAAA,EAAAA,IAAAC,EAAAA,EAAAA,KAAAC,MAAE,SAAAoC,IAAA,IAAAlC,EAAA,OAAAH,EAAAA,EAAAA,KAAAO,MAAA,SAAAkC,GAAA,cAAAA,EAAAhC,KAAAgC,EAAA/B,MAAA,OAE7B,OAF6B+B,EAAAhC,KAAA,EAE9CgE,GAAW,GAAMhC,EAAA/B,KAAA,EDFhB6B,ECGsC,CAAE6D,OAAQnH,EAAM6G,cAAcM,OAAQC,OAAQpH,EAAM6G,cAAcC,aDDtHxC,EAAI/B,IAAI,GAADjC,OADE,8BACagD,GCC+G,KAAD,GAAjHpC,EAAQsC,EAAA7B,MACDR,KAAKkG,OACdzB,GAAa,GACbI,EAAgB9E,EAASC,KAAKkG,MAAMC,WAGpC9B,GAAW,GA/B/BxF,EAAMqG,UACNrG,EAAMuH,gBAgCW/D,EAAA/B,KAAA,gBAAA+B,EAAAhC,KAAA,EAAAgC,EAAAC,GAAAD,EAAA,SAGD6B,EAAS,cAAc,QAGL,OAHK7B,EAAAhC,KAAA,GAGvBgE,GAAW,GAAOhC,EAAAgE,OAAA,6BAAAhE,EAAAtB,ODjB1C,IAAyBoB,CCiBiB,GAAAF,EAAA,wBAExBlF,SAAA,CACGqH,IAAWvH,EAAAA,EAAAA,KAAC+B,EAAO,CAACxC,UAAU,yBAAyB2C,IAAI,OAAOC,MAAM,UAAW,IAAE0E,GAAE,kBAK5G,EA6dA,GA3dkB,SAAC7E,GAA8C,IAADyH,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACtDhE,GAAWC,EAAAA,EAAAA,MACjBgE,GAA8B3L,EAAAA,EAAAA,UAAS,IAAG4L,GAAA1L,EAAAA,EAAAA,GAAAyL,EAAA,GAAnCE,EAAOD,EAAA,GAAEE,EAAUF,EAAA,GAC1BG,GAA8B/L,EAAAA,EAAAA,WAAS,GAAMgM,GAAA9L,EAAAA,EAAAA,GAAA6L,EAAA,GAAtCE,GAAOD,EAAA,GAAEE,GAAUF,EAAA,GAE1BG,IAAkCnM,EAAAA,EAAAA,WAAS,GAAMoM,IAAAlM,EAAAA,EAAAA,GAAAiM,GAAA,GAA1CnE,GAASoE,GAAA,GAAEnE,GAAYmE,GAAA,GAC9BC,IAAwCrM,EAAAA,EAAAA,UAAS,IAAGsM,IAAApM,EAAAA,EAAAA,GAAAmM,GAAA,GAA7CjE,GAAYkE,GAAA,GAAEjE,GAAeiE,GAAA,GACpCC,IAAkCvM,EAAAA,EAAAA,UAAS,IAAGwM,IAAAtM,EAAAA,EAAAA,GAAAqM,GAAA,GAAvCE,GAASD,GAAA,GAAEE,GAAYF,GAAA,GAC9BG,IAAgD3M,EAAAA,EAAAA,WAAS,GAAM4M,IAAA1M,EAAAA,EAAAA,GAAAyM,GAAA,GAAxDE,GAAgBD,GAAA,GAAEE,GAAmBF,GAAA,GAC5CG,IAA0C/M,EAAAA,EAAAA,UAAS,MAAKgN,IAAA9M,EAAAA,EAAAA,GAAA6M,GAAA,GAAjD7D,GAAa8D,GAAA,GAAEC,GAAgBD,GAAA,GACtCE,IAAgDlN,EAAAA,EAAAA,UAAS,IAAGmN,IAAAjN,EAAAA,EAAAA,GAAAgN,GAAA,GAE5DE,IAFuBD,GAAA,GAAqBA,GAAA,GAEU9F,EAAAA,UAAe,IAAKgG,IAAAnN,EAAAA,EAAAA,GAAAkN,GAAA,GAAnEE,GAAmBD,GAAA,GAAEE,GAAsBF,GAAA,GAClDG,GAA0DnG,EAAAA,UAAe,GAAKoG,IAAAvN,EAAAA,EAAAA,GAAAsN,GAAA,GAAvEE,GAAqBD,GAAA,GAAEE,GAAwBF,GAAA,GACtDG,GAAwDvG,EAAAA,UAAe,GAAMwG,IAAA3N,EAAAA,EAAAA,GAAA0N,GAAA,GAAtEE,GAAoBD,GAAA,GAAEE,GAAuBF,GAAA,GAE9CG,GAAU,eAAAzM,GAAA4B,EAAAA,EAAAA,IAAAC,EAAAA,EAAAA,KAAAC,MAAG,SAAAkD,IAAA,IAAAhD,EAAA0K,EAAAC,EAAAC,EAAA,OAAA/K,EAAAA,EAAAA,KAAAO,MAAA,SAAA6C,GAAA,cAAAA,EAAA3C,KAAA2C,EAAA1C,MAAA,cAAA0C,EAAA3C,KAAA,EAAA2C,EAAA1C,KAAA,EDjDA6B,ECmD0B,CAAE6D,OAAQnH,EAAMmB,KAAKgG,QDjD3D7C,EAAI/B,IAAI,GAADjC,OADE,4BACagD,GCiD+C,KAAD,GAA7DpC,EAAQiD,EAAAxC,MACDR,KAAKkG,OACdzB,IAAa,GACbyE,GAAa,SACbrE,GAAgB9E,EAASC,KAAKkG,MAAMC,WAGhCsE,EAAe1K,EAASC,KAAK4K,aAAaC,WAC1CH,EAAgBD,EAAaK,gBAE7BH,EAAiBF,EAAapC,QAAQ5F,KAAI,SAAAwD,GAC1C,MAAO,CACHD,OAAQnH,EAAMmB,KAAKgG,OACnBL,YAAaM,EACb8E,eAAgB9E,EAChB+E,YAAY,EACZC,WAAW,EACXC,gBAAiBjF,IAAWyE,EAEpC,KAEeS,MAAK,SAACC,EAAGC,GACpB,OAAOA,EAAEH,gBAAkBE,EAAEF,eACjC,IACA5C,EAAWqC,IACd3H,EAAA1C,KAAA,gBAAA0C,EAAA3C,KAAA,EAAA2C,EAAAV,GAAAU,EAAA,SAGDkB,EAAS,cAAc,yBAAAlB,EAAAjC,OD/EnC,IAAuBoB,CC+EY,GAAAY,EAAA,kBAE9B,kBAhCe,OAAAhF,EAAA0B,MAAA,KAAAC,UAAA,MAkChB4L,EAAAA,EAAAA,YAAU,WACNd,IACJ,GAAG,IAGH,IAkBMe,GAAS,eAAAC,GAAA7L,EAAAA,EAAAA,IAAAC,EAAAA,EAAAA,KAAAC,MAAG,SAAAC,EAAO2L,EAAKC,GAAK,IAAAC,EAAA,OAAA/L,EAAAA,EAAAA,KAAAO,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OAC1BmL,EAAIR,WAML3B,IAAoB,GACpBG,GAAiBgC,MANXE,GAAOC,EAAAA,EAAAA,GAAOvD,IACZwD,OAAOH,EAAO,GACtBpD,EAAWqD,IAKd,wBAAAvL,EAAAW,OAAA,GAAAjB,EAAA,KACJ,gBAVc8C,EAAAC,GAAA,OAAA2I,EAAA/L,MAAA,KAAAC,UAAA,KA4BToM,GAAgB,eAAAC,GAAApM,EAAAA,EAAAA,IAAAC,EAAAA,EAAAA,KAAAC,MAAG,SAAAmM,EAAON,GAAK,IAAAO,EAAAlM,EAAA,OAAAH,EAAAA,EAAAA,KAAAO,MAAA,SAAA+L,GAAA,cAAAA,EAAA7L,KAAA6L,EAAA5L,MAAA,OAEhB,OADX2L,EAAgB5D,EAAQqD,GAAOX,eACrCrC,IAAW,GAAMwD,EAAA7L,KAAA,EAAA6L,EAAA5L,KAAA,EDhHH6B,ECkH0B,CAAE6D,OAAQnH,EAAMmB,KAAKgG,OAAQC,OAAQgG,GDhH1E9I,EAAI/B,IAAI,GAADjC,OADE,2BACagD,GCgHqE,KAAD,GAAnFpC,EAAQmM,EAAA1L,MACDR,KAAKkG,OACdzB,IAAa,GACbyE,GAAa,SACbrE,GAAgB9E,EAASC,KAAKkG,MAAMC,WAGpC1B,IAAa,GACbyE,GAAa,WACbrE,GAAgB,6BAChB2F,MACH0B,EAAA5L,KAAA,gBAAA4L,EAAA7L,KAAA,EAAA6L,EAAA5J,GAAA4J,EAAA,SAGDhI,EAAS,cAAc,QAGL,OAHKgI,EAAA7L,KAAA,GAGvBqI,IAAW,GAAOwD,EAAA7F,OAAA,6BAAA6F,EAAAnL,ODnI9B,IAAsBoB,CCmIQ,GAAA6J,EAAA,wBAEzB,gBAvBqB/I,GAAA,OAAA8I,EAAAtM,MAAA,KAAAC,UAAA,KA0BhByM,GAAO,eAAAC,GAAAzM,EAAAA,EAAAA,IAAAC,EAAAA,EAAAA,KAAAC,MAAG,SAAAwM,EAAOZ,EAAKC,GAAK,IAAAY,EAAAjQ,EAAAkQ,EAAAxM,EAAA4L,EAAAa,EAAA,OAAA5M,EAAAA,EAAAA,KAAAO,MAAA,SAAAsM,GAAA,cAAAA,EAAApM,KAAAoM,EAAAnM,MAAA,OAGoE,GAF3FgM,EAAQI,SAASC,kBAAkB,UAADxN,OAAWuM,IAAS,GACtDrP,EAAQiQ,EAAMjQ,MACdkQ,EAAQ,mFACVlQ,EAAM,CAADoQ,EAAAnM,KAAA,aACDiM,EAAMK,KAAKvQ,GAAO,CAADoQ,EAAAnM,KAAA,aACbmL,EAAIR,UAAU,CAADwB,EAAAnM,KAAA,YACTmL,EAAI9F,aAAe8F,EAAIV,eAAc,CAAA0B,EAAAnM,KAAA,SACpB,OAAjBoI,IAAW,GAAM+D,EAAApM,KAAA,EAAAoM,EAAAnM,KAAA,GD5JhB6B,EC8J0C,CAAE6D,OAAQnH,EAAMmB,KAAKgG,OAAQ6G,WAAYpB,EAAI9F,YAAamH,WAAYzQ,GD5J9H8G,EAAI/B,IAAI,GAADjC,OADE,8BACagD,GC4JiH,KAAD,IAA/GpC,EAAQ0M,EAAAjM,MACDR,KAAKkG,OACdzB,IAAa,GACbyE,GAAa,SACbrE,GAAgB9E,EAASC,KAAKkG,MAAMC,WAGpC1B,IAAa,GACbyE,GAAa,WACbrE,GAAgB,WAChB2F,MACHiC,EAAAnM,KAAA,iBAAAmM,EAAApM,KAAA,GAAAoM,EAAAnK,GAAAmK,EAAA,SAGDvI,EAAS,cAAc,QAGL,OAHKuI,EAAApM,KAAA,GAGvBqI,IAAW,GAAO+D,EAAApG,OAAA,YAAAoG,EAAAnM,KAAA,kBAIhBqL,GAAOC,EAAAA,EAAAA,GAAOvD,IACZqD,GAAOV,YAAcW,EAAQD,GAAOV,WAC5C1C,EAAWqD,GAAU,QAAAc,EAAAnM,KAAA,iBAKJ,OALImM,EAAApM,KAAA,GAKrBqI,IAAW,GAAM+D,EAAAnM,KAAA,GACMmD,EAAa,CAAEuC,OAAQnH,EAAMmB,KAAKgG,OAAQqC,QAAShM,IAAS,KAAD,IAA5E0D,EAAQ0M,EAAAjM,MACDR,KAAKkG,OACdzB,IAAa,GACbyE,GAAa,SACbrE,GAAgB9E,EAASC,KAAKkG,MAAMC,WAGpC1B,IAAa,GACbyE,GAAa,WACbrE,GAAgB,WAChB2F,MACHiC,EAAAnM,KAAA,iBAAAmM,EAAApM,KAAA,GAAAoM,EAAAM,GAAAN,EAAA,UAGDvI,EAAS,cAAc,QAGL,OAHKuI,EAAApM,KAAA,GAGvBqI,IAAW,GAAO+D,EAAApG,OAAA,YAAAoG,EAAAnM,KAAA,iBAI1BmE,IAAa,GACbyE,GAAa,SACbrE,GAAgBnB,GAAE,8EAA8E,QAAA+I,EAAAnM,KAAA,iBAKpGmE,IAAa,GACbyE,GAAa,SACbrE,GAAgBnB,GAAE,gCAAgC,yBAAA+I,EAAA1L,ODzN9D,IAAyBoB,CCyNqC,GAAAkK,EAAA,uCAEzD,gBAvEYnJ,EAAA8J,GAAA,OAAAZ,EAAA3M,MAAA,KAAAC,UAAA,KAgFb,IAAMuN,GAAmB,SAACC,EAAOC,GACd,cAAXA,IAGJ1I,IAAa,GACbI,GAAgB,IACpB,EAOAuI,IAA4B5Q,EAAAA,EAAAA,WAAS,GAAM6Q,IAAA3Q,EAAAA,EAAAA,GAAA0Q,GAAA,GAA9BC,GAAA,GAAWA,GAAA,GAexB,OACIrQ,EAAAA,EAAAA,MAAAF,EAAAA,SAAA,CAAAC,SAAA,EACIC,EAAAA,EAAAA,MAACsQ,GAAAA,EAAI,CAAAvQ,SAAA,CACA0L,KACG5L,EAAAA,EAAAA,KAAA,OAAKT,UAAU,gBAAgBiJ,MAAO,CAAEkI,OAAQ,KAAMxQ,UAClDF,EAAAA,EAAAA,KAAA,OAAKT,UAAU,4BAGvBY,EAAAA,EAAAA,MAACsQ,GAAAA,EAAK9H,KAAI,CAAAzI,SAAA,EACNC,EAAAA,EAAAA,MAACwQ,EAAAA,EAAS,CAACC,iBAAiB,EAAMC,SArBrB,SAACR,EAAOS,GACjC5D,GAAuB4D,EAC3B,EAmBkFvR,UAAU,OAAMW,SAAA,EAC9EF,EAAAA,EAAAA,KAAC+Q,GAAAA,EAAgB,CACbC,YAAYhR,EAAAA,EAAAA,KAACiR,EAAAA,EAAc,IAC3B,gBAAc,kBACdxQ,GAAG,iBAAgBP,UAEnBC,EAAAA,EAAAA,MAAC+Q,GAAAA,EAAU,CAAAhR,SAAA,EACPF,EAAAA,EAAAA,KAAA,SAAOT,UAAU,oBAAmBW,SAAE2G,GAAE,oBACxC1G,EAAAA,EAAAA,MAAA,QAAMZ,UAAU,YAAYiJ,MAAO,CAAE2I,QAASlE,GAAsB,SAAW,QAAS/M,SAAA,CACnF2G,GAAE,gGACH7G,EAAAA,EAAAA,KAAA,KAAGoR,KAAK,SAASC,OAAO,UAASnR,SAC5B2G,GAAE,mBAKnB7G,EAAAA,EAAAA,KAACsR,GAAAA,EAAgB,CAAApR,UACbF,EAAAA,EAAAA,KAACkR,GAAAA,EAAU,CAAAhR,UACPC,EAAAA,EAAAA,MAACsQ,GAAAA,EAAI,CAAAvQ,SAAA,EACDF,EAAAA,EAAAA,KAACyQ,GAAAA,EAAK/H,OAAM,CAAAxI,UACRF,EAAAA,EAAAA,KAACuR,EAAAA,EAAG,CAAChS,UAAU,0BAAyBW,UACpCC,EAAAA,EAAAA,MAACqR,EAAAA,EAAG,CAACC,GAAI,GAAIC,GAAI,GAAInS,UAAU,6BAA4BW,SAAA,EACvDF,EAAAA,EAAAA,KAACiJ,EAAAA,EAAM,CAAC9B,QAAQ,UAAU/E,KAAK,KAAK7C,UAAU,OAAO0B,QAAS,WAlNlGuK,EAAQmG,OAAS,IAEjBlG,EAAW,GAADnJ,QAAAyM,EAAAA,EAAAA,GACHvD,GAAO,CACV,CACIrC,OAAQnH,EAAMmB,KAAKgG,OACnBL,YAAa,GACboF,eAAgB,GAChBC,YAAY,EACZC,WAAW,EACXC,iBAAiB,KAwMuF,EAACnO,SAAE2G,GAAE,iBAEnE,QAAV4C,EAAAzH,EAAMmB,YAAI,IAAAsG,GAAQ,QAARC,EAAVD,EAAYmI,cAAM,IAAAlI,OAAR,EAAVA,EAAoBmI,oBAChB7R,EAAAA,EAAAA,KAAA,KAAGoR,KAAgB,QAAZzH,EAAE3H,EAAMmB,YAAI,IAAAwG,GAAQ,QAARC,EAAVD,EAAYiI,cAAM,IAAAhI,OAAR,EAAVA,EAAoBiI,iBAAkBR,OAAO,SAAS9R,UAAU,OAAMW,UAC3EF,EAAAA,EAAAA,KAACiJ,EAAAA,EAAM,CAAC9B,QAAQ,UAAU/E,KAAK,KAAIlC,SAAE2G,GAAE,mBAInD1G,EAAAA,EAAAA,MAAC8I,EAAAA,EAAM,CAAC7G,KAAK,KAAK7C,UAAU,OAAO4H,QAAQ,UACvClG,SAAO6B,EAAAA,EAAAA,IAAAC,EAAAA,EAAAA,KAAAC,MAAE,SAAA8O,IAAA,OAAA/O,EAAAA,EAAAA,KAAAO,MAAA,SAAAyO,GAAA,cAAAA,EAAAvO,KAAAuO,EAAAtO,MAAA,OACY,OAAjBoI,IAAW,GAAMkG,EAAAtO,KAAA,EACXkK,KAAa,KAAD,EAClB9B,IAAW,GAAO,wBAAAkG,EAAA7N,OAAA,GAAA4N,EAAA,KACpB5R,SAAA,CAAE,IAAE2G,GAAE,sBAKxB7G,EAAAA,EAAAA,KAACyQ,GAAAA,EAAK9H,KAAI,CAAAzI,SACLsL,EAAQ5F,KAAI,SAACgJ,EAAKC,GAAK,OACpB7O,EAAAA,EAAAA,KAACuR,EAAAA,EAAG,CAAChS,UAAU,OAAMW,UACjBC,EAAAA,EAAAA,MAACqR,EAAAA,EAAG,CAACC,GAAI,GAAIlS,UAAU,iCAAgCW,SAAA,EACnDF,EAAAA,EAAAA,KAACwR,EAAAA,EAAG,CAAAtR,UACAF,EAAAA,EAAAA,KAACgS,EAAS,CAACzS,UAAU,eAAeiB,KAAK,OACrCtB,KAAI,UAAAoD,OAAYuM,GAChBrP,MAAOoP,EAAIV,eACXhF,UAAW0F,EAAIT,WACf0C,SAAU,SAACoB,GAAC,OA5FpE,SAAsBpD,EAAOoD,GACzB,IAAMnD,GAAOC,EAAAA,EAAAA,GAAOvD,GACpBsD,EAAQD,GAAOX,eAAiB+D,EAAEZ,OAAO7R,MACzCiM,EAAWqD,EACf,CAwFyEoD,CAAarD,EAAOoD,EAAE,OAE/C9R,EAAAA,EAAAA,MAACqR,EAAAA,EAAG,CAACjS,UAAU,mBAAkBW,SAAA,EAC7BF,EAAAA,EAAAA,KAACiJ,EAAAA,EAAM,CAAC9B,QAAQ,mBAAmBqB,MAAO,CAAE2J,QAAS,OAASlR,QAAS,kBAAMyN,GAAUE,EAAKC,EAAM,EAAC3O,SAC9F2G,GAAE,YAEN+H,EAAIT,YAAcS,EAAIR,YACnBjO,EAAAA,EAAAA,MAAAF,EAAAA,SAAA,CAAAC,SAAA,EACIF,EAAAA,EAAAA,KAACiJ,EAAAA,EAAM,CAAC9B,QAAQ,oBAAoBqB,MAAO,CAAE2J,QAAS,OAASlR,QAAS,kBAAMqO,GAAQV,EAAKC,EAAM,EAAC3O,SAC7F2G,GAAE,WAEP7G,EAAAA,EAAAA,KAACiJ,EAAAA,EAAM,CAAC9B,QAAQ,oBAAoBqB,MAAO,CAAE2J,QAAS,OAASlR,QAAS,kBAnN9G,SAAC4N,GACnB,IAAMC,GAAOC,EAAAA,EAAAA,GAAOvD,GACpBsD,EAAQD,GAAOX,eAAiBY,EAAQD,GAAO/F,YAC/CgG,EAAQD,GAAOV,YAAcW,EAAQD,GAAOV,WAC5C1C,EAAWqD,EACf,CA8M0IsD,CAAcvD,EAAM,EAAC3O,SAC9F2G,GAAE,eAId+H,EAAIT,aAAeS,EAAIR,YAEpBpO,EAAAA,EAAAA,KAACiJ,EAAAA,EAAM,CAAC9B,QAAQ,oBAAoBqB,MAAO,CAAE2J,QAAS,OAASlR,QAAS,kBAAMqO,GAAQV,EAAKC,EAAM,EAAC3O,SAC7F2G,GAAE,WAGT+H,EAAIT,aACFhO,EAAAA,EAAAA,MAAAF,EAAAA,SAAA,CAAAC,SAAA,EACIF,EAAAA,EAAAA,KAACiJ,EAAAA,EAAM,CAAC9B,QAAQ,oBAAoBqB,MAAO,CAAE2J,QAAS,OAASlR,QAAS,kBAvOpH,SAAC4N,GACb,IAAMC,GAAOC,EAAAA,EAAAA,GAAOvD,GACpBsD,EAAQD,GAAOV,YAAcW,EAAQD,GAAOV,WAC5C1C,EAAWqD,EACf,CAmO0IuD,CAAQxD,EAAM,EAAC3O,SACxF2G,GAAE,WAEP7G,EAAAA,EAAAA,KAAA,KAAGoR,KAAM,UAAYxC,EAAI9F,YAAauI,OAAO,SAAQnR,UACjDF,EAAAA,EAAAA,KAACiJ,EAAAA,EAAM,CAAC9B,QAAQ,oBAAoBqB,MAAO,CAAE2J,QAAS,OAAQjS,SAAE2G,GAAE,cAGlE+H,EAAIP,iBACAlO,EAAAA,EAAAA,MAACmS,GAAAA,EAAK,CAAC/S,UAAU,kBAAiBW,SAAA,CAAC,IAAE2G,GAAE,WAAW,QAElD7G,EAAAA,EAAAA,KAACiJ,EAAAA,EAAM,CAAC9B,QAAQ,oBAAoBlG,QAAS,kBAAMgO,GAAiBJ,EAAM,EAAC3O,SACtE2G,GAAE,8BA1CRgI,EAkDrB,iBAoBf,QAAVhF,EAAA7H,EAAMmB,YAAI,IAAA0G,GAAQ,QAARC,EAAVD,EAAY+H,cAAM,IAAA9H,OAAR,EAAVA,EAAoBzE,QAAmB,QAAV0E,EAAA/H,EAAMmB,YAAI,IAAA4G,GAAQ,QAARC,EAAVD,EAAY6H,cAAM,IAAA5H,OAAR,EAAVA,EAAoBiE,mBAA6B,QAAXhE,EAACjI,EAAMmB,YAAI,IAAA8G,GAAVA,EAAYsI,oBAAgC,QAAXrI,EAAClI,EAAMmB,YAAI,IAAA+G,GAAQ,QAARC,EAAVD,EAAY0H,cAAM,IAAAzH,GAAlBA,EAAoB8D,mBAC3H9N,EAAAA,EAAAA,MAACwQ,EAAAA,EAAS,CAACC,iBAAiB,EAAMC,SAlIvB,SAACR,EAAOS,GACnCxD,GAAyBwD,EAC7B,EAgIwFvR,UAAU,OAAMW,SAAA,EAChFF,EAAAA,EAAAA,KAAC+Q,GAAAA,EAAgB,CACbC,YAAYhR,EAAAA,EAAAA,KAACiR,EAAAA,EAAc,IAC3B,gBAAc,kBACdxQ,GAAG,iBAAgBP,UAEnBC,EAAAA,EAAAA,MAAC+Q,GAAAA,EAAU,CAAAhR,SAAA,EACPF,EAAAA,EAAAA,KAAA,SAAOT,UAAU,oBAAmBW,SAAC,oCACrCF,EAAAA,EAAAA,KAAA,QAAMT,UAAU,YAAYiJ,MAAO,CAAE2I,QAAS9D,GAAwB,SAAW,QAASnN,SAAC,gIAGnGF,EAAAA,EAAAA,KAACsR,GAAAA,EAAgB,CAAApR,UACbF,EAAAA,EAAAA,KAACkR,GAAAA,EAAU,CAAAhR,UACPF,EAAAA,EAAAA,KAACyQ,GAAAA,EAAI,CAAAvQ,UACDC,EAAAA,EAAAA,MAACsQ,GAAAA,EAAK9H,KAAI,CAAAzI,SAAA,EAEQ,QAAVkK,EAAApI,EAAMmB,YAAI,IAAAiH,GAAQ,QAARC,EAAVD,EAAYwH,cAAM,IAAAvH,OAAR,EAAVA,EAAoBhF,OAEhBlF,EAAAA,EAAAA,MAAA,OAAAD,SAAA,EACIF,EAAAA,EAAAA,KAAA,SAAOT,UAAU,YAAWW,SAAC,mBAC7BF,EAAAA,EAAAA,KAAA,KAAGoR,KAAgB,QAAZ9G,EAAEtI,EAAMmB,YAAI,IAAAmH,GAAQ,QAARC,EAAVD,EAAYsH,cAAM,IAAArH,OAAR,EAAVA,EAAoBlF,IAAKgM,OAAO,SAAS9R,UAAU,OAAMW,SACnD,QADmDsK,EAC7DxI,EAAMmB,YAAI,IAAAqH,GAAQ,QAARC,EAAVD,EAAYoH,cAAM,IAAAnH,OAAR,EAAVA,EAAoBpF,UAMvB,QAAVqF,EAAA1I,EAAMmB,YAAI,IAAAuH,GAAQ,QAARC,EAAVD,EAAYkH,cAAM,IAAAjH,OAAR,EAAVA,EAAoB6H,aAEhBrS,EAAAA,EAAAA,MAAA,OAAAD,SAAA,EACIF,EAAAA,EAAAA,KAAA,SAAOT,UAAU,YAAWW,SAAC,mBAC7BF,EAAAA,EAAAA,KAAA,KAAGoR,KAAgB,QAAZxG,EAAE5I,EAAMmB,YAAI,IAAAyH,GAAQ,QAARC,EAAVD,EAAYgH,cAAM,IAAA/G,OAAR,EAAVA,EAAoB2H,UAAWnB,OAAO,SAAS9R,UAAU,OAAMW,SACzD,QADyD4K,EACnE9I,EAAMmB,YAAI,IAAA2H,GAAQ,QAARC,EAAVD,EAAY8G,cAAM,IAAA7G,OAAR,EAAVA,EAAoByH,4BAY/C,QAAVxH,EAAAhJ,EAAMmB,YAAI,IAAA6H,GAAQ,QAARC,EAAVD,EAAY4G,cAAM,IAAA3G,OAAR,EAAVA,EAAoBwH,kBACpBtS,EAAAA,EAAAA,MAACwQ,EAAAA,EAAS,CAACpR,UAAU,OAAOsR,SA3KjB,SAACR,EAAOS,GACnCpD,GAAwBoD,EAC5B,EAyKiF5Q,SAAA,EACzDF,EAAAA,EAAAA,KAAC+Q,GAAAA,EAAgB,CACbC,YAAYhR,EAAAA,EAAAA,KAACiR,EAAAA,EAAc,IAC3B,gBAAc,kBACdxQ,GAAG,iBAAgBP,UAEnBC,EAAAA,EAAAA,MAAC+Q,GAAAA,EAAU,CAAAhR,SAAA,EACPF,EAAAA,EAAAA,KAAA,SAAOT,UAAU,oBAAmBW,SAAC,8BACrCF,EAAAA,EAAAA,KAAA,QAAMT,UAAU,YAAYiJ,MAAO,CAAE2I,QAAS1D,GAAuB,SAAW,QAASvN,SAAC,mOAKlGF,EAAAA,EAAAA,KAACsR,GAAAA,EAAgB,CAAApR,UACbF,EAAAA,EAAAA,KAACkR,GAAAA,EAAU,CAAAhR,UACPF,EAAAA,EAAAA,KAACyQ,GAAAA,EAAI,CAAAvQ,UACDC,EAAAA,EAAAA,MAACsQ,GAAAA,EAAK9H,KAAI,CAAAzI,SAAA,EAINC,EAAAA,EAAAA,MAACE,EAAAA,EAAKqB,MAAK,CAAChB,GAAI6Q,EAAAA,EAAKhS,UAAU,OAAMW,SAAA,EACjCF,EAAAA,EAAAA,KAACK,EAAAA,EAAKsB,MAAK,CAAC+Q,QAAQ,WAAWC,QAAM,EAACjB,GAAI,EAAGnS,UAAU,OAAMW,SAAC,cAG9DF,EAAAA,EAAAA,KAACwR,EAAAA,EAAG,CAACE,GAAI,EAAExR,UACPF,EAAAA,EAAAA,KAACK,EAAAA,EAAKC,QAAO,CACTE,KAAK,OACLtB,KAAK,WACLuB,GAAG,WACHM,aAAwB,QAAZmK,EAAElJ,EAAMmB,YAAI,IAAA+H,GAAQ,QAARC,EAAVD,EAAY0G,cAAM,IAAAzG,OAAR,EAAVA,EAAoBsH,eAClChT,UAAQ,UAKpBU,EAAAA,EAAAA,MAACE,EAAAA,EAAKqB,MAAK,CAAChB,GAAI6Q,EAAAA,EAAKhS,UAAU,OAAMW,SAAA,EACjCF,EAAAA,EAAAA,KAACK,EAAAA,EAAKsB,MAAK,CAAC+Q,QAAQ,WAAWC,QAAM,EAACjB,GAAI,EAAGnS,UAAU,OAAMW,SAAC,cAG9DF,EAAAA,EAAAA,KAACwR,EAAAA,EAAG,CAACE,GAAI,EAAExR,UACPF,EAAAA,EAAAA,KAACgS,EAAS,CACNxR,KAAK,WACLtB,KAAK,WACLmC,eAAgB,OAChB7B,MAAiB,QAAZ4L,EAAEpJ,EAAMmB,YAAI,IAAAiI,GAAQ,QAARC,EAAVD,EAAYwG,cAAM,IAAAvG,OAAR,EAAVA,EAAoBuH,eAC3BnT,UAAQ,2BAahD+M,KACAxM,EAAAA,EAAAA,KAACoH,GAAY,CAACe,YAAaqE,GAAkBnE,QArP9B,WACvBoE,IAAoB,EACxB,EAmPsF5D,cAAeA,GAAeU,aAAcoE,KAGtHhG,KACA3H,EAAAA,EAAAA,KAAC6S,EAAAA,EAAQ,CAACC,KAAMnL,GAAWoL,iBAAkB,IAAM1K,QAAS+H,GAAkB4C,aAAc,CAAEC,SAAU,MAAOC,WAAY,UAAWhT,UAClIF,EAAAA,EAAAA,KAAC+G,GAAU,CAACsB,QAAS+H,GAAkB+C,SAAU/G,GAAWgH,GAAI,CAAEC,MAAO,QAASnT,SAC7E6H,SAMzB,E,WCniBMlB,GAAIC,IAAAA,QAiLV,GA/KqB,SAAC9E,IACDsF,EAAAA,EAAAA,MAAjB,IACA5H,GAA4CC,EAAAA,EAAAA,UAAS,IAAGC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAjD4T,EAAc1T,EAAA,GAAE2T,EAAiB3T,EAAA,GAClC4T,EAAgBxR,EAAMmB,KAAKqQ,cACjC/L,GAAsC9H,EAAAA,EAAAA,UAAS,MAAK+H,GAAA7H,EAAAA,EAAAA,GAAA4H,EAAA,GAA7CgM,EAAW/L,EAAA,GAAEgM,EAAchM,EAAA,GAG5BiM,EAAiB,eAAA1U,GAAA6D,EAAAA,EAAAA,IAAAC,EAAAA,EAAAA,KAAAC,MAAG,SAAAoC,IAAA,IAAAwO,EAAAnT,EAAAyC,EAAA0O,EAAAiC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAArR,EAAAA,EAAAA,KAAAO,MAAA,SAAAkC,GAAA,cAAAA,EAAAhC,KAAAgC,EAAA/B,MAAA,OAKlB,GALkB+B,EAAAhC,KAAA,EAEdoQ,EAAMS,OAAOC,aAAaC,QAAQ,kBAClC9T,EAAK,KAGG,OAARmT,EAAY,CAAApO,EAAA/B,KAAA,gBAAA+B,EAAA/B,KAAA,EACWU,EAAAA,EAAMI,IAAI,iBAAiB,KAAD,EAAnC,GACU,OADlBrB,EAAQsC,EAAA7B,MACDkB,OAAc,CAAAW,EAAA/B,KAAA,SAIvB,OAHImO,EAAS1O,EAASC,KAAKqR,UACnBX,EAAoFjC,EAApFiC,mBAAoBC,EAAgElC,EAAhEkC,mBAAoBC,EAA4CnC,EAA5CmC,mBAA4CnC,EAAxB6C,oBAEpEjP,EAAA/B,KAAA,GAC2BU,EAAAA,EAAMG,KAAKyP,EAAoB,CACtDW,SAAUb,EACVc,SAAUb,IACX,KAAD,GAC0B,OAJtBE,EAAYxO,EAAA7B,MAIDkB,QACb+O,EAAM,IAAOI,EAAa7Q,KAAKyQ,IAAM,IAErCS,OAAOC,aAAaM,QAAQ,iBAAmBhB,IAE/CiB,QAAQlQ,MAAM,SAAUqP,GAC3BxO,EAAA/B,KAAA,iBAGDoR,QAAQlQ,MAAM,SAAUzB,GAAU,eAAAsC,EAAA/B,KAAA,GAKdU,EAAAA,EAAMI,IAAI,2BAA4B,CAC9DF,QAAS,CACL,cAAiB,UAAYuP,EAAIkB,QAAQ,KAAM,OAEpD,KAAD,GAJiB,GAKU,OALvBb,EAAazO,EAAA7B,MAKDkB,OAAc,CAAAW,EAAA/B,KAAA,YAEK,GAA7BwQ,EAAc9Q,KAAKwO,OAAW,CAAAnM,EAAA/B,KAAA,gBAAA+B,EAAA/B,KAAA,GAEJU,EAAAA,EAAMG,KAAK,2BAA4B,CAAC,EAC9D,CACIgB,OAAQ,CACJyP,KAAM,iBACNC,qBAAsB,GAE1B3Q,QAAS,CACL,cAAiB,UAAYuP,EAAIkB,QAAQ,KAAM,OAGzD,KAAD,GAC0B,OAXrBZ,EAAW1O,EAAA7B,MAWDkB,QACZpE,EAAqB,QAAnB0T,EAAGD,EAAY/Q,YAAI,IAAAgR,OAAA,EAAhBA,EAAkBc,GACvBvB,EAAejT,IAGfoU,QAAQlQ,MAAM,SAAUuP,GAC3B1O,EAAA/B,KAAA,iBAIDhD,EAAKwT,EAAc9Q,KAAK+R,MAAK,SAAAhU,GAAM,OAAAA,EAAHiU,IAAcC,SAAS,uBAAuB,IAAEH,GAChFvB,EAAejT,GAAI,eAAA+E,EAAA/B,KAAA,GAIMU,EAAAA,EAAMI,IAAI,4BAADjC,OAA6B7B,EAAE,2BAA2B,CAC5F4D,QAAS,CACL,cAAiB,UAAYuP,EAAIkB,QAAQ,KAAM,KAEnDxP,OAAQ,CACJ+P,KAAK,EACLC,QAASC,KAAKC,UAAU,CAAE,MAAS,CAAC,8BAADlT,OAA+BkR,SAExE,QAC4B,OATxBY,EAAc5O,EAAA7B,MASDkB,OACf0O,EAAkBa,EAAejR,MAGjC0R,QAAQlQ,MAAM,SAAUyP,GAC3B5O,EAAA/B,KAAA,iBAGDoR,QAAQlQ,MAAM,SAAUsP,GAAe,QAAAzO,EAAA/B,KAAA,iBAAA+B,EAAAhC,KAAA,GAAAgC,EAAAC,GAAAD,EAAA,SAI3CqP,QAAQlQ,MAAM,SAAQa,EAAAC,IACtB,yBAAAD,EAAAtB,OAAA,GAAAkB,EAAA,mBAEP,kBA1FsB,OAAAnG,EAAA2D,MAAA,KAAAC,UAAA,KAgGvB,OAJA4L,EAAAA,EAAAA,YAAU,WACNkF,GACJ,GAAG,KAGC3T,EAAAA,EAAAA,KAACuR,EAAAA,EAAG,CAAArR,UACAF,EAAAA,EAAAA,KAACwR,EAAAA,EAAG,CAACC,GAAI,GAAGvR,UACRC,EAAAA,EAAAA,MAACsQ,GAAAA,EAAI,CAAAvQ,SAAA,EACDF,EAAAA,EAAAA,KAACyQ,GAAAA,EAAK/H,OAAM,CAAAxI,UACRC,EAAAA,EAAAA,MAACoR,EAAAA,EAAG,CAAChS,UAAU,qBAAoBW,SAAA,EAC/BC,EAAAA,EAAAA,MAACqR,EAAAA,EAAG,CAACC,GAAI,GAAIC,GAAI,GAAGxR,SAAA,EAChBF,EAAAA,EAAAA,KAAA,SAAOT,UAAU,oBAAmBW,SAAE2G,GAAE,gBACxC1G,EAAAA,EAAAA,MAAA,QAAMZ,UAAU,YAAWW,SAAA,CAAC,wFAAgBsT,EAAc,2CAE9DxT,EAAAA,EAAAA,KAACwR,EAAAA,EAAG,CAACC,GAAI,GAAIC,GAAI,EAAExR,UACfF,EAAAA,EAAAA,KAAA,KAAGoR,KAAI,iBAAA9O,OAAmBmR,EAAW,mBAAAnR,OAAkBkR,EAAa,sDAChEnC,OAAO,SAAS9R,UAAU,OAAMW,UAChCF,EAAAA,EAAAA,KAACiJ,EAAAA,EAAM,CAAC9B,QAAQ,UAAU/E,KAAK,KAAK7C,UAAU,YAAWW,SAAE2G,GAAE,oBAK7E7G,EAAAA,EAAAA,KAACyQ,GAAAA,EAAK9H,KAAI,CAAAzI,UACNC,EAAAA,EAAAA,MAACsV,GAAAA,EAAK,CAAClW,UAAU,OAAMW,SAAA,EACnBF,EAAAA,EAAAA,KAAA,SAAAE,UACIC,EAAAA,EAAAA,MAAA,MAAAD,SAAA,EACIF,EAAAA,EAAAA,KAAA,MAAAE,SAAI,UACJF,EAAAA,EAAAA,KAAA,MAAAE,SAAI,WACJF,EAAAA,EAAAA,KAAA,MAAIwI,MAAO,CAAEkN,UAAW,UAAWxV,SAAC,aACpCF,EAAAA,EAAAA,KAAA,MAAAE,SAAI,WACJF,EAAAA,EAAAA,KAAA,MAAAE,SAAI,aACJF,EAAAA,EAAAA,KAAA,MAAAE,SAAI,gBACJF,EAAAA,EAAAA,KAAA,MAAAE,SAAI,0BAGZF,EAAAA,EAAAA,KAAA,SAAAE,SACKoT,EAAe1N,KAAI,SAAC+P,EAAW9G,GAAW,IAAD+G,EAAAC,EAAAC,EAAAC,EACtC,OACI5V,EAAAA,EAAAA,MAAA,MAAAD,SAAA,EACIF,EAAAA,EAAAA,KAAA,MAAAE,SAAoB,QAApB0V,EAAKD,EAAUK,aAAK,IAAAJ,GAAK,QAALC,EAAfD,EAAkB,UAAE,IAAAC,OAAL,EAAfA,EAAsBf,QAAQ,WAAY,OAC/C9U,EAAAA,EAAAA,KAAA,MAAAE,UACIF,EAAAA,EAAAA,KAACsS,GAAAA,EAAK,CAAC/S,UAAS,GAAA+C,OAAyB,YAApBqT,EAAUM,MAAsB,aAAmC,WAApBN,EAAUM,MAAqB,YAAc,QAAS/V,SACrHyV,EAAUM,WAGnB9V,EAAAA,EAAAA,MAAA,MAAIqI,MAAO,CAAEkN,UAAW,UAAWxV,SAAA,EAC/BC,EAAAA,EAAAA,MAAA,KAAGiR,KAAI,iBAAA9O,OAAmBmR,EAAW,uBAAAnR,OAAsBqT,EAAUV,GAAE,SACnE5D,OAAO,SAAS6E,MAAM,OAAMhW,SAAA,EAC5BF,EAAAA,EAAAA,KAAA,KAAGT,UAAU,wCAA2C,OAGpC,YAApBoW,EAAUM,QACN9V,EAAAA,EAAAA,MAAA,KAAGiR,KAAI,iBAAA9O,OAAmBmR,EAAW,uBAAAnR,OAAsBqT,EAAUV,GAAE,UACnE5D,OAAO,SAAS6E,MAAM,QAAOhW,SAAA,EAC7BF,EAAAA,EAAAA,KAAA,KAAGT,UAAU,8BAAiC,WAM9DS,EAAAA,EAAAA,KAAA,MAAAE,SAAKyV,EAAUQ,SACfnW,EAAAA,EAAAA,KAAA,MAAAE,SAAK,IAAIkW,KAAyB,IAApBT,EAAUU,SAAgBC,oBACxCtW,EAAAA,EAAAA,KAAA,MAAAE,SAAKyV,EAAUY,gBAAgBC,SAASb,EAAUc,WAAWC,aAAaC,aAC1ExW,EAAAA,EAAAA,MAAA,MAAAD,SAAA,CAAqF,QAArF4V,EAAKH,EAAUiB,MAAM1B,MAAK,SAAA2B,GAAI,OAAIA,EAAKC,IAAM,0BAA0B/G,KAAK8G,EAAKC,GAAG,WAAC,IAAAhB,OAAA,EAAhFA,EAAkFiB,WAAW,IAAkF,QAAjFhB,EAACJ,EAAUiB,MAAM1B,MAAK,SAAA2B,GAAI,OAAIA,EAAKC,IAAM,0BAA0B/G,KAAK8G,EAAKC,GAAG,WAAC,IAAAf,OAAA,EAAhFA,EAAkFiB,iBAzBjLnI,EA4BjB,iBAQhC,ECjLMhI,GAAIC,IAAAA,QA8CV,GA5CoB,SAAC9E,GAA8C,IAADyH,EAAAE,EAAAE,EAAAC,EAAAC,EAAAE,EAAAC,EAC9D,OACIlK,EAAAA,EAAAA,KAACuR,EAAAA,EAAG,CAAArR,UACAF,EAAAA,EAAAA,KAACwR,EAAAA,EAAG,CAACC,GAAI,GAAGvR,UACRC,EAAAA,EAAAA,MAACsQ,GAAAA,EAAI,CAAAvQ,SAAA,EACDF,EAAAA,EAAAA,KAACyQ,GAAAA,EAAK/H,OAAM,CAAAxI,UACRF,EAAAA,EAAAA,KAAA,SAAOT,UAAU,oBAAmBW,SAAE2G,GAAE,qBAE5C7G,EAAAA,EAAAA,KAACyQ,GAAAA,EAAK9H,KAAI,CAAAzI,UACNF,EAAAA,EAAAA,KAACyV,GAAAA,EAAK,CAACwB,YAAU,EAAC1X,UAAU,OAAO2X,UAAU,EAAO1O,MAAO,CAAE2I,QAAS,QAASjR,UAC3EC,EAAAA,EAAAA,MAAA,SAAAD,SAAA,EACIC,EAAAA,EAAAA,MAAA,MAAAD,SAAA,EACIC,EAAAA,EAAAA,MAAA,MAAIqI,MAAO,CAAE2O,WAAY,QAASjX,SAAA,CAAE2G,GAAE,YAAY,QAClD7G,EAAAA,EAAAA,KAAA,MAAAE,SAAe,QAAfuJ,EAAKzH,EAAMmB,YAAI,IAAAsG,OAAA,EAAVA,EAAY2N,eAErBjX,EAAAA,EAAAA,MAAA,MAAAD,SAAA,EACIC,EAAAA,EAAAA,MAAA,MAAIqI,MAAO,CAAE2O,WAAY,QAASjX,SAAA,CAAE2G,GAAE,eAAe,QACrD7G,EAAAA,EAAAA,KAAA,MAAAE,SAAe,QAAfyJ,EAAK3H,EAAMmB,YAAI,IAAAwG,OAAA,EAAVA,EAAY0N,kBAErBlX,EAAAA,EAAAA,MAAA,MAAAD,SAAA,EACIC,EAAAA,EAAAA,MAAA,MAAIqI,MAAO,CAAE2O,WAAY,QAASjX,SAAA,CAAE2G,GAAE,YAAY,QAClD7G,EAAAA,EAAAA,KAAA,MAAAE,SAAe,QAAf2J,EAAK7H,EAAMmB,YAAI,IAAA0G,GAAQ,QAARC,EAAVD,EAAY+H,cAAM,IAAA9H,OAAR,EAAVA,EAAoB+M,WAE7B1W,EAAAA,EAAAA,MAAA,MAAAD,SAAA,EACIC,EAAAA,EAAAA,MAAA,MAAIqI,MAAO,CAAE2O,WAAY,QAASjX,SAAA,CAAE2G,GAAE,gBAAgB,QACtD7G,EAAAA,EAAAA,KAAA,MAAAE,SAAe,QAAf6J,EAAK/H,EAAMmB,YAAI,IAAA4G,OAAA,EAAVA,EAAYuN,kBAErBnX,EAAAA,EAAAA,MAAA,MAAAD,SAAA,EACIC,EAAAA,EAAAA,MAAA,MAAIqI,MAAO,CAAE2O,WAAY,QAASjX,SAAA,CAAE2G,GAAE,eAAe,QACrD7G,EAAAA,EAAAA,KAAA,MAAAE,SAAe,QAAf+J,EAAKjI,EAAMmB,YAAI,IAAA8G,OAAA,EAAVA,EAAYsN,kBAErBpX,EAAAA,EAAAA,MAAA,MAAAD,SAAA,EACIC,EAAAA,EAAAA,MAAA,MAAIqI,MAAO,CAAE2O,WAAY,QAASjX,SAAA,CAAE2G,GAAE,aAAa,QACnD7G,EAAAA,EAAAA,KAAA,MAAAE,SAAe,QAAfgK,EAAKlI,EAAMmB,YAAI,IAAA+G,OAAA,EAAVA,EAAYsN,8BASrD,ECxCM3Q,GAAIC,IAAAA,QAGJ2Q,GAAmB,SAACzV,GACtB,IAAMqF,GAAWC,EAAAA,EAAAA,MACjB5H,GAA8BC,EAAAA,EAAAA,WAAS,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAtC6H,EAAO3H,EAAA,GAAE4H,EAAU5H,EAAA,GAC1B6H,GAAkC9H,EAAAA,EAAAA,WAAS,GAAM+H,GAAA7H,EAAAA,EAAAA,GAAA4H,EAAA,GAA1CE,EAASD,EAAA,GAAEE,EAAYF,EAAA,GAC9BG,GAAwClI,EAAAA,EAAAA,UAAS,IAAGmI,GAAAjI,EAAAA,EAAAA,GAAAgI,EAAA,GAA7CE,EAAYD,EAAA,GAAEE,EAAeF,EAAA,GAWpC,OACI3H,EAAAA,EAAAA,MAAC8H,EAAAA,EAAK,CAACC,KAAMlG,EAAMmG,YAAaC,OAAQpG,EAAMqG,QAASjG,KAAK,KACxDkG,WAAW,OAAOC,SAAS,SAASC,MAAO,CAAEC,gBAAiB,mBAAoBvI,SAAA,EAClFF,EAAAA,EAAAA,KAACiI,EAAAA,EAAMS,OAAM,CAACN,OAAQpG,EAAMqG,QAASqP,aAAW,EAACnY,UAAWyB,IAAW,uBAAwB,cAAcd,UACzGC,EAAAA,EAAAA,MAAA,MAAAD,SAAA,CAAK2G,GAAE,aAAa,IAAE7E,EAAM2V,IAAInE,oBAEpCrT,EAAAA,EAAAA,MAAC8H,EAAAA,EAAMU,KAAI,CAACpJ,UAAU,MAAKW,SAAA,EACvBC,EAAAA,EAAAA,MAAA,QAAMqI,MAAO,CAAEI,OAAQ,YAAa1I,SAAA,CAAE2G,GAAE,mCAAmC,IAAE7E,EAAM2V,IAAInE,cAAc,IAAE3M,GAAE,gCACzG7G,EAAAA,EAAAA,KAAA,OAAAE,SACKyH,IAAa3H,EAAAA,EAAAA,KAAC+I,EAAAA,EAAK,CAAC5B,QAAQ,SAAS5H,UAAU,OAAMW,SACjD6H,UAIb5H,EAAAA,EAAAA,MAAC8H,EAAAA,EAAMe,OAAM,CAAA9I,SAAA,EACTF,EAAAA,EAAAA,KAACiJ,EAAAA,EAAM,CAAC9B,QAAQ,QAAQlG,QAASe,EAAMqG,QAAQnI,SAC1C2G,GAAE,WACG,KACV1G,EAAAA,EAAAA,MAAC8I,EAAAA,EAAM,CAACC,SAAU3B,EAASJ,QAAQ,UAAUlG,SAAO6B,EAAAA,EAAAA,IAAAC,EAAAA,EAAAA,KAAAC,MAAE,SAAAoC,IAAA,IAAAlC,EAAA,OAAAH,EAAAA,EAAAA,KAAAO,MAAA,SAAAkC,GAAA,cAAAA,EAAAhC,KAAAgC,EAAA/B,MAAA,OAG9C,OAH8C+B,EAAAhC,KAAA,EAE9CgE,GAAW,GACXhC,EAAA/B,KAAA,EACuB+C,EAAa,CAAE2C,OAAQnH,EAAM2V,IAAIxO,SAAU,KAAD,GAA3DjG,EAAQsC,EAAA7B,MACDR,KAAKkG,OACdzB,GAAa,GACbI,EAAgB9E,EAASC,KAAKkG,MAAMC,WAhCxDtH,EAAMqG,UACNrG,EAAM4V,qBAGN5V,EAAMuH,gBAgCW/D,EAAA/B,KAAA,gBAAA+B,EAAAhC,KAAA,EAAAgC,EAAAC,GAAAD,EAAA,SAGD6B,EAAS,cAAc,yBAAA7B,EAAAtB,OAAA,GAAAkB,EAAA,kBAE7BlF,SAAA,CACGqH,IAAWvH,EAAAA,EAAAA,KAAC+B,EAAO,CAACxC,UAAU,yBAAyB2C,IAAI,OAAOC,MAAM,UAAW,IAAE0E,GAAE,qBAK5G,EA8GA,IA3GkBgR,EAAAA,EAAAA,aAAW,SAAC7V,EAAOrB,GACjC,IAAA2K,GAAwD3L,EAAAA,EAAAA,WAAS,GAAM4L,GAAA1L,EAAAA,EAAAA,GAAAyL,EAAA,GAAhEwM,EAAoBvM,EAAA,GAAEwM,EAAuBxM,EAAA,GACpDG,GAA8B/L,EAAAA,EAAAA,WAAS,GAAMgM,GAAA9L,EAAAA,EAAAA,GAAA6L,EAAA,GAAtCnE,EAAOoE,EAAA,GAAEnE,EAAUmE,EAAA,GACpBtE,GAAWC,EAAAA,EAAAA,MAYX0Q,EAAmB,WACrBxQ,GAAW,EACf,EAGMyQ,EAAkB,WACpBzQ,GAAW,EACf,EAQA,OALA0Q,EAAAA,EAAAA,qBAAoBvX,GAAK,iBAAO,CAC5BqX,iBAAAA,EACAC,gBAAAA,EACH,KAGG9X,EAAAA,EAAAA,MAAAF,EAAAA,SAAA,CAAAC,SAAA,EACIF,EAAAA,EAAAA,KAACuR,EAAAA,EAAG,CAAChS,UAAU,OAAMW,UACjBC,EAAAA,EAAAA,MAACqR,EAAAA,EAAG,CAAC2G,GAAI,GAAGjY,SAAA,EACRF,EAAAA,EAAAA,KAAA,SAAOT,UAAU,OAAOiJ,MAAO,CAAE2O,WAAY,SAAUiB,aAAc,OAAQlY,SAAE2G,GAAE,mBACjF7G,EAAAA,EAAAA,KAAA,KAAAE,SACK2G,GAAE,+EAEgB,YAAtB7E,EAAMmB,KAAK0B,QACR1E,EAAAA,EAAAA,MAAC8I,EAAAA,EAAM,CAAC9B,QAAQ,YAAY5H,UAAU,YAAY2J,SAAU3B,EAAStG,SAAO6B,EAAAA,EAAAA,IAAAC,EAAAA,EAAAA,KAAAC,MAAE,SAAAkD,IAAA,OAAAnD,EAAAA,EAAAA,KAAAO,MAAA,SAAA6C,GAAA,cAAAA,EAAA3C,KAAA2C,EAAA1C,MAAA,OAItE,OAJsE0C,EAAA3C,KAAA,EAEtExB,EAAMqW,iBACN7Q,GAAW,GACXrB,EAAA1C,KAAA,EACuBgD,EAAQ,CAAE0C,OAAQnH,EAAMmB,KAAKgG,SAAU,KAAD,EAA/ChD,EAAAxC,KACDR,KAAKkG,MACdhC,EAAS,UAGTrF,EAAMuH,aAAavH,EAAMmB,KAAKgG,QACjChD,EAAA1C,KAAA,gBAAA0C,EAAA3C,KAAA,EAAA2C,EAAAV,GAAAU,EAAA,SAGDkB,EAAS,cAAc,QAIF,OAJElB,EAAA3C,KAAA,GAGvBgE,GAAW,GACXxF,EAAMsW,eAAenS,EAAAqD,OAAA,6BAAArD,EAAAjC,OAAA,GAAAgC,EAAA,wBAE3BhG,SAAA,CACGqH,IAAWvH,EAAAA,EAAAA,KAAC+B,EAAO,CAACxC,UAAU,yBAAyB2C,IAAI,OAAOC,MAAM,UAAW,IAAE0E,GAAE,YAG5F1G,EAAAA,EAAAA,MAAC8I,EAAAA,EAAM,CAAC9B,QAAQ,UAAU5H,UAAU,YAAY2J,SAAU3B,EACtDtG,SAAO6B,EAAAA,EAAAA,IAAAC,EAAAA,EAAAA,KAAAC,MAAE,SAAAC,IAAA,OAAAF,EAAAA,EAAAA,KAAAO,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OAEY,OADjBzB,EAAMqW,iBACN7Q,GAAW,GAAMjE,EAAAC,KAAA,EAAAD,EAAAE,KAAA,EAEUiD,EAAS,CAAEyC,OAAQnH,EAAMmB,KAAKgG,SAAU,KAAD,EAAhD5F,EAAAI,KACDR,KAAKkG,MACdhC,EAAS,UAGTrF,EAAMuH,aAAavH,EAAMmB,KAAKgG,QACjC5F,EAAAE,KAAA,gBAAAF,EAAAC,KAAA,EAAAD,EAAAkC,GAAAlC,EAAA,SAGD8D,EAAS,cAAc,QAIL,OAJK9D,EAAAC,KAAA,GAGvBxB,EAAMsW,eACN9Q,GAAW,GAAOjE,EAAAiG,OAAA,6BAAAjG,EAAAW,OAAA,GAAAjB,EAAA,wBAExB/C,SAAA,CACDqH,IAAWvH,EAAAA,EAAAA,KAAC+B,EAAO,CAACxC,UAAU,yBAAyB2C,IAAI,OAAOC,MAAM,UAAW,IAAE0E,GAAE,kBAKxG7G,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAACuR,EAAAA,EAAG,CAAChS,UAAU,OAAMW,UACjBC,EAAAA,EAAAA,MAACqR,EAAAA,EAAG,CAAC2G,GAAI,GAAGjY,SAAA,EACRF,EAAAA,EAAAA,KAAA,SAAOT,UAAU,OAAOiJ,MAAO,CAAE2O,WAAY,SAAUiB,aAAc,OAAQlY,SAAE2G,GAAE,gBACjF7G,EAAAA,EAAAA,KAAA,KAAAE,SACK2G,GAAE,oGAEP7G,EAAAA,EAAAA,KAACiJ,EAAAA,EAAM,CAAC9B,QAAQ,UAAU5H,UAAU,YAAY0B,QAAS,WAzFrE8W,GAAwB,EAyFmE,EAAE7X,SAC5E2G,GAAE,oBAIdiR,IAAwB9X,EAAAA,EAAAA,KAACyX,GAAgB,CAACtP,YAAa2P,EAAsBzP,QA3FlE,WAChB0P,GAAwB,EAC5B,EA0FYJ,IAAK3V,EAAMmB,KAAMoG,aAAcvH,EAAMuH,aAAcqO,mBAAoB5V,EAAM4V,uBAG7F,ICjKM/Q,GAAIC,IAAAA,QAiTV,GA/SuB,SAAC9E,GACpB,IAAAtC,GAA4CC,EAAAA,EAAAA,WAAS,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAApD6Y,EAAc3Y,EAAA,GAAE4Y,EAAiB5Y,EAAA,GACxC6H,GAA0C9H,EAAAA,EAAAA,WAAS,GAAM+H,GAAA7H,EAAAA,EAAAA,GAAA4H,EAAA,GAAlDgR,EAAa/Q,EAAA,GAAEsQ,EAAgBtQ,EAAA,GACtCG,GAAoClI,EAAAA,EAAAA,UAASqC,EAAM0W,aAAY5Q,GAAAjI,EAAAA,EAAAA,GAAAgI,EAAA,GAAxD8Q,EAAU7Q,EAAA,GAAE8Q,EAAa9Q,EAAA,GAChCwD,GAA8C3L,EAAAA,EAAAA,WAAS,GAAM4L,GAAA1L,EAAAA,EAAAA,GAAAyL,EAAA,GAAtDuN,EAAetN,EAAA,GAAEuN,EAAkBvN,EAAA,GAC1CG,GAA4C/L,EAAAA,EAAAA,WAAS,GAAMgM,GAAA9L,EAAAA,EAAAA,GAAA6L,EAAA,GAApDqN,EAAcpN,EAAA,GAAEqN,EAAiBrN,EAAA,GACxCG,GAAkDnM,EAAAA,EAAAA,WAAS,GAAMoM,GAAAlM,EAAAA,EAAAA,GAAAiM,EAAA,GAA1DmN,EAAiBlN,EAAA,GAAEmN,EAAoBnN,EAAA,GACxC1E,GAAWC,EAAAA,EAAAA,MACX6R,GAAWC,EAAAA,EAAAA,UAGXC,EAA4B,WAE9BF,EAASG,QAAQtB,kBACrB,EAGMuB,EAA2B,WAE7BJ,EAASG,QAAQrB,iBACrB,GAaAxJ,EAAAA,EAAAA,YAAU,WACNmK,EAAc5W,EAAM0W,YACxB,GAAG,CAAC1W,EAAM0W,cAEV,IAAMc,EAAc,CAChB,CACI/Y,GAAI,IACJyV,MAAOrP,GAAE,YACT4S,KAAM,qBACNC,MAAM1Z,EAAAA,EAAAA,KAAC2Z,GAAW,CAACxW,KAAMwV,KAE7B,CACIlY,GAAI,IACJyV,MAAOrP,GAAE,UACT4S,KAAM,oBACNC,MAAM1Z,EAAAA,EAAAA,KAAC4Z,GAAS,CAACzW,KAAMwV,KAE3B,CACIlY,GAAI,IACJyV,MAAOrP,GAAE,aACT4S,KAAM,sBACNC,MAAM1Z,EAAAA,EAAAA,KAAC6Z,GAAY,CAAC1W,KAAMwV,KAE9B,CACIlY,GAAI,IACJyV,MAAOrP,GAAE,aACT4S,KAAM,sBACNC,MAAM1Z,EAAAA,EAAAA,KAAC8Z,GAAS,CAAC3W,KAAMwV,EAAYhY,IAAKwY,EAAUd,eArCxB,WAC9BL,GAAiB,GACjBQ,GAAkB,EACtB,EAkCqGF,aAhCpE,WAC7BN,GAAiB,GACjBQ,GAAkB,EACtB,EA8BYjP,aAAcvH,EAAMuH,aAAcqO,mBAAoB5V,EAAMqG,YAIxE,OACIsQ,IAAcxY,EAAAA,EAAAA,MAAC8H,EAAAA,EAAK,CAACC,KAAMlG,EAAM+X,SAAUxR,SAAS,SAASH,OAAQpG,EAAMqG,QAASjG,KAAK,KAAKkG,WAAW,OAAO0R,gBAAgB,mBAAkB9Z,SAAA,EAC9IF,EAAAA,EAAAA,KAACiI,EAAAA,EAAMS,OAAM,CAACN,OAAQpG,EAAMqG,QAASqP,aAAW,EAAAxX,UAC5CC,EAAAA,EAAAA,MAAA,OAAKqI,MAAO,CAAE2J,QAAS,OAAQhB,QAAS,OAAQkC,MAAO,OAAQ4G,WAAY,UAAW/Z,SAAA,EAClFF,EAAAA,EAAAA,KAAA,OAAKT,UAAU,6CAA4CW,UACvDF,EAAAA,EAAAA,KAAA,OACIka,IAAKvB,EAAWwB,UAChBC,IAAI,GACJ7a,UAAU,WACV8a,QAAS,SAACpI,GAAC,OAAMA,EAAEZ,OAAO6I,IAAMI,CAAU,OAGlDna,EAAAA,EAAAA,MAAA,OAAKZ,UAAU,kBAAiBW,SAAA,EAC5BF,EAAAA,EAAAA,KAAA,MAAIT,UAAU,8BAA8BiJ,MAAO,CAAE+R,UAAW,OAAQra,SACnEyY,EAAWnF,iBAEhBxT,EAAAA,EAAAA,KAAA,MAAIT,UAAU,8BAA8BiJ,MAAO,CAAE+R,UAAW,OAAQra,SACnEyY,EAAW9T,aAGpB1E,EAAAA,EAAAA,MAAA,OAAKZ,UAAU,kBAAkBiJ,MAAO,CAAEgS,SAAU,EAAGrJ,QAAS,OAAQsJ,eAAgB,WAAYR,WAAY,UAAW/Z,SAAA,CAE7F,WAAtByY,EAAW9T,SACX7E,EAAAA,EAAAA,KAAC0a,EAAAA,EAAc,CAEXC,UAAU,SACVC,SACI5a,EAAAA,EAAAA,KAAC6a,EAAAA,EAAO,CAACpa,GAAG,iBAAgBP,SACvB2G,GAAE,eAEV3G,UACDF,EAAAA,EAAAA,KAACiJ,EAAAA,EAAM,CAAC9B,QAAQ,UAAU+B,SAAUuP,EAChCjQ,MAAO,CAAE2J,QAAS,WAAY2I,aAAc,MAAOC,YAAa,QAChE9Z,SAAO6B,EAAAA,EAAAA,IAAAC,EAAAA,EAAAA,KAAAC,MAAE,SAAAoC,IAAA,OAAArC,EAAAA,EAAAA,KAAAO,MAAA,SAAAkC,GAAA,cAAAA,EAAAhC,KAAAgC,EAAA/B,MAAA,OAGmB,OAFxB4V,IACAP,GAAmB,GACnBN,GAAkB,GAAMhT,EAAAhC,KAAA,EAAAgC,EAAA/B,KAAA,EAEGiD,EAAS,CAAEyC,OAAQwP,EAAWxP,SAAU,KAAD,EAAhD3D,EAAA7B,KACDR,KAAKkG,MACdhC,EAAS,UAGTrF,EAAMuH,eACT/D,EAAA/B,KAAA,iBAAA+B,EAAAhC,KAAA,GAAAgC,EAAAC,GAAAD,EAAA,SAGD6B,EAAS,cAAc,QAKE,OALF7B,EAAAhC,KAAA,GAGvB+V,IACAT,GAAmB,GACnBN,GAAkB,GAAOhT,EAAAgE,OAAA,6BAAAhE,EAAAtB,OAAA,GAAAkB,EAAA,yBAE/BlF,SAGE2Y,GACI7Y,EAAAA,EAAAA,KAAC+B,EAAO,CAACxC,UAAU,8BAA8B4C,MAAM,WAEvDnC,EAAAA,EAAAA,KAAA,KAAGT,UAAU,sCApCrB,WA0Cc,YAAtBoZ,EAAW9T,SACX7E,EAAAA,EAAAA,KAAC0a,EAAAA,EAAc,CAEXC,UAAU,SACVC,SACI5a,EAAAA,EAAAA,KAAC6a,EAAAA,EAAO,CAACpa,GAAG,iBAAgBP,SACvB2G,GAAE,cAEV3G,UACDF,EAAAA,EAAAA,KAACiJ,EAAAA,EAAM,CAAC9B,QAAQ,UAAU+B,SAAUuP,EAChCjQ,MAAO,CAAE2J,QAAS,WAAY2I,aAAc,MAAOC,YAAa,QAChE9Z,SAAO6B,EAAAA,EAAAA,IAAAC,EAAAA,EAAAA,KAAAC,MAAE,SAAAkD,IAAA,OAAAnD,EAAAA,EAAAA,KAAAO,MAAA,SAAA6C,GAAA,cAAAA,EAAA3C,KAAA2C,EAAA1C,MAAA,OAGmB,OAFxB4V,IACAL,GAAkB,GAClBR,GAAkB,GAAMrS,EAAA3C,KAAA,EAAA2C,EAAA1C,KAAA,EAEGgD,EAAQ,CAAE0C,OAAQwP,EAAWxP,SAAU,KAAD,EAA/ChD,EAAAxC,KACDR,KAAKkG,MACdhC,EAAS,UAGTrF,EAAMuH,eACTpD,EAAA1C,KAAA,iBAAA0C,EAAA3C,KAAA,GAAA2C,EAAAV,GAAAU,EAAA,SAGDkB,EAAS,cAAc,QAKE,OALFlB,EAAA3C,KAAA,GAGvB+V,IACAP,GAAkB,GAClBR,GAAkB,GAAOrS,EAAAqD,OAAA,6BAAArD,EAAAjC,OAAA,GAAAgC,EAAA,yBAE/BhG,SAGE6Y,GACI/Y,EAAAA,EAAAA,KAAC+B,EAAO,CAACxC,UAAU,8BAA8B4C,MAAM,WAEvDnC,EAAAA,EAAAA,KAAA,KAAGT,UAAU,iCApCrB,YAyCZS,EAAAA,EAAAA,KAAC0a,EAAAA,EAAc,CAEXC,UAAU,SACVC,SACI5a,EAAAA,EAAAA,KAAC6a,EAAAA,EAAO,CAACpa,GAAG,iBAAgBP,SACvB2G,GAAE,iBAEV3G,UACDF,EAAAA,EAAAA,KAACiJ,EAAAA,EAAM,CAACC,SAAUqP,EACd/P,MAAO,CAAE2J,QAAS,WAAY2I,aAAc,MAAOC,YAAa,QAChE9Z,SAAO6B,EAAAA,EAAAA,IAAAC,EAAAA,EAAAA,KAAAC,MAAE,SAAAC,IAAA,OAAAF,EAAAA,EAAAA,KAAAO,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OAIsB,OAJtBF,EAAAC,KAAA,EAED6V,IACAH,GAAqB,GACrBlB,GAAiB,GAAMzU,EAAAE,KAAA,EACAkD,EAAW,CAAEwC,OAAQwP,EAAWxP,SAAU,KAAD,EAAlD5F,EAAAI,KACDR,KAAKkG,MACdhC,EAAS,UAGTrF,EAAMuH,eACThG,EAAAE,KAAA,iBAAAF,EAAAC,KAAA,GAAAD,EAAAkC,GAAAlC,EAAA,SAGD8D,EAAS,cAAc,QAKC,OALD9D,EAAAC,KAAA,GAGvB+V,IACAL,GAAqB,GACrBlB,GAAiB,GAAOzU,EAAAiG,OAAA,6BAAAjG,EAAAW,OAAA,GAAAjB,EAAA,yBAE9B/C,SAGE+Y,GACIjZ,EAAAA,EAAAA,KAAC+B,EAAO,CAACxC,UAAU,8BAA8B4C,MAAM,WAEvDnC,EAAAA,EAAAA,KAAA,KAAGT,UAAU,qCApCrB,WAyCkB,YAAtBoZ,EAAW9T,SACX7E,EAAAA,EAAAA,KAAC0a,EAAAA,EAAc,CAEXC,UAAU,SACVC,SACI5a,EAAAA,EAAAA,KAAC6a,EAAAA,EAAO,CAACpa,GAAG,iBAAgBP,SACvB2G,GAAE,cAEV3G,UACDC,EAAAA,EAAAA,MAAC6a,EAAAA,GAAI,CAACC,GAAI,CAAEC,SAAU,YAAaC,OAAO,OAAD7Y,OAASqW,EAAWnF,gBACzDhL,MAAO,CAAErG,MAAO,OAAQsG,gBAAiB,UAAW0J,QAAS,WAAY2I,aAAc,MAAOM,YAAa,UAAWL,YAAa,QACnI1J,OAAO,SAAQnR,SAAA,EACfF,EAAAA,EAAAA,KAAA,KAAGT,UAAU,6BAAgC,QAV7C,YAeRS,EAAAA,EAAAA,KAAC0a,EAAAA,EAAc,CAEXC,UAAU,SACVC,SACI5a,EAAAA,EAAAA,KAAC6a,EAAAA,EAAO,CAACpa,GAAG,iBAAgBP,SACvB2G,GAAE,mBAEV3G,UACDC,EAAAA,EAAAA,MAAA,KAAGiR,KAAM,qCAAuCuH,EAAWvB,SACvD5O,MAAO,CAAErG,MAAO,OAAQsG,gBAAiB,UAAW0J,QAAS,WAAY2I,aAAc,MAAOM,YAAa,UAAWL,YAAa,QACnI1J,OAAO,SAAQnR,SAAA,EACfF,EAAAA,EAAAA,KAAA,KAAGT,UAAU,iCAAoC,QAVjD,oBAiBxBS,EAAAA,EAAAA,KAACiI,EAAAA,EAAMU,KAAI,CAACpJ,UAAU,MAAKW,UACvBC,EAAAA,EAAAA,MAACkb,EAAAA,EAAIC,UAAS,CAACC,iBAAkB1U,GAAE,YAAY3G,SAAA,EAC3CF,EAAAA,EAAAA,KAACwR,EAAAA,EAAG,CAAC2G,GAAI,EAAG5Y,UAAU,eAAcW,UAChCF,EAAAA,EAAAA,KAACwb,EAAAA,EAAG,CAACrU,QAAQ,QAAQ5H,UAAU,cAAaW,SACvCsZ,EAAY5T,KAAI,SAAC6V,EAAK5M,GACnB,IAAM6M,EAAgB,WAClB,OACI1b,EAAAA,EAAAA,KAACwb,EAAAA,EAAIG,KAAI,CAAAzb,UACLC,EAAAA,EAAAA,MAACqb,EAAAA,EAAIR,KAAI,CAACta,GAAIsa,EAAAA,GAAMC,GAAG,IAAIW,SAAUH,EAAIvF,MAAMhW,SAAA,EAC3CF,EAAAA,EAAAA,KAAA,KACIT,UAAWsc,IACPJ,EAAIhC,KACJ,YACA,UACA,WAERzZ,EAAAA,EAAAA,KAAA,QAAMT,UAAU,oBAAmBW,SAAEub,EAAIvF,YATlCrH,EAavB,EACA,MAAkB,aAAd4M,EAAIvF,OACsB,YAAtByC,EAAW9T,OAIR6W,SAJP,CAMR,SAGR1b,EAAAA,EAAAA,KAACwR,EAAAA,EAAG,CAAC2G,GAAI,GAAGjY,UACRF,EAAAA,EAAAA,KAACqb,EAAAA,EAAIS,QAAO,CAACtT,MAAO,CAAEuT,OAAQ,QAAS7b,SAClCsZ,EAAY5T,KAAI,SAAC6V,EAAK5M,GACnB,OACI7O,EAAAA,EAAAA,KAACqb,EAAAA,EAAIW,KAAI,CAACJ,SAAUH,EAAIvF,MAAOzV,GAAIgb,EAAIhb,GAAgB+H,MAAO,CAAEuT,OAAQ,QAAS7b,UAC7EF,EAAAA,EAAAA,KAACuR,EAAAA,EAAG,CAAC/I,MAAO,CAAEuT,OAAQ,QAAS7b,UAC3BF,EAAAA,EAAAA,KAACwR,EAAAA,EAAG,CAAC2G,GAAG,KAAK3P,MAAO,CAAEuT,OAAsB,aAAdN,EAAIvF,MAAuB,QAAU,IAAKhW,SACnEub,EAAI/B,UAH+B7K,EAQxD,eAO5B,EC/SMhI,GAAIC,IAAAA,QAEJC,GAAaC,EAAAA,YAAiB,SAAehF,EAAOrB,GACtD,OAAOX,EAAAA,EAAAA,KAACiH,EAAAA,GAAQ1G,EAAAA,EAAAA,GAAA,CAAC2G,UAAW,EAAGvG,IAAKA,EAAKwG,QAAQ,UAAanF,GAClE,IAGMia,GAAiB,SAACja,GACpB,OACI7B,EAAAA,EAAAA,MAAC8H,EAAAA,EAAK,CAACC,KAAMlG,EAAMmG,YAAaC,OAAQpG,EAAMqG,QAASjG,KAAK,KAAKkG,WAAW,OAAOC,SAAS,SAAQrI,SAAA,EAChGF,EAAAA,EAAAA,KAACiI,EAAAA,EAAMS,OAAM,CAACN,OAAQpG,EAAMqG,QAASqP,aAAW,EAACnY,UAAWyB,IAAW,uBAAwB,aAAad,UACxGC,EAAAA,EAAAA,MAAA,MAAAD,SAAA,CAAK2G,GAAE,iCAAiC,IAAE7E,EAAM2V,IAAInE,oBAExDxT,EAAAA,EAAAA,KAACiI,EAAAA,EAAMU,KAAI,CAACpJ,UAAU,MAAKW,SAEnB8B,EAAM2V,IAAIuE,gBACV/b,EAAAA,EAAAA,MAAAF,EAAAA,SAAA,CAAAC,SAAA,EACIC,EAAAA,EAAAA,MAAA,QAAMqI,MAAO,CAAEI,OAAQ,YAAa1I,SAAA,CAAC,KAACF,EAAAA,EAAAA,KAAA,KAAAE,SAAI2G,GAAE,YAAe7E,EAAM2V,IAAIuE,cAAcC,KAAK,QACxFhc,EAAAA,EAAAA,MAAA,QAAMqI,MAAO,CAAEI,OAAQ,YAAa1I,SAAA,CAAC,KAACF,EAAAA,EAAAA,KAAA,KAAAE,SAAI2G,GAAE,eAAkB7E,EAAM2V,IAAIuE,cAAc5S,QAAQ,QAC9FnJ,EAAAA,EAAAA,MAAA,QAAMqI,MAAO,CAAEI,OAAQ,YAAa1I,SAAA,CAAC,KAACF,EAAAA,EAAAA,KAAA,KAAAE,SAAI2G,GAAE,cAAiB7E,EAAM2V,IAAIuE,cAAcE,OAAO,aAIxGjc,EAAAA,EAAAA,MAAC8H,EAAAA,EAAMe,OAAM,CAAA9I,SAAA,EACTF,EAAAA,EAAAA,KAACiJ,EAAAA,EAAM,CAAC9B,QAAQ,QAAQlG,QAASe,EAAMqG,QAAQnI,SAC1C2G,GAAE,YAEP7G,EAAAA,EAAAA,KAACiJ,EAAAA,EAAM,CAAC9B,QAAQ,QAAQlG,QAAS,kBAAMoT,OAAOvB,KAAK,kCAAmC,SAAS,EAAC5S,SAC3F2G,GAAE,kBAKvB,EAGM4Q,GAAmB,SAACzV,GACtB,IAAMqF,GAAWC,EAAAA,EAAAA,MACjB5H,GAA8BC,EAAAA,EAAAA,WAAS,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAtC6H,EAAO3H,EAAA,GAAE4H,EAAU5H,EAAA,GAC1B6H,GAAkC9H,EAAAA,EAAAA,WAAS,GAAM+H,GAAA7H,EAAAA,EAAAA,GAAA4H,EAAA,GAA1CE,EAASD,EAAA,GAAEE,EAAYF,EAAA,GAC9BG,GAAwClI,EAAAA,EAAAA,UAAS,IAAGmI,GAAAjI,EAAAA,EAAAA,GAAAgI,EAAA,GAA7CE,EAAYD,EAAA,GAAEE,EAAeF,EAAA,GAQpC,OACI3H,EAAAA,EAAAA,MAAC8H,EAAAA,EAAK,CAACC,KAAMlG,EAAMmG,YAAaC,OAAQpG,EAAMqG,QAASjG,KAAK,KACxDkG,WAAW,OAAOC,SAAS,SAAQrI,SAAA,EACnCF,EAAAA,EAAAA,KAACiI,EAAAA,EAAMS,OAAM,CAACN,OAAQpG,EAAMqG,QAAS9I,UAAWyB,IAAW,uBAAwB,cAAcd,UAC7FC,EAAAA,EAAAA,MAAA,MAAAD,SAAA,CAAK2G,GAAE,UAAU,IAAE7E,EAAM2V,IAAInE,oBAEjCrT,EAAAA,EAAAA,MAAC8H,EAAAA,EAAMU,KAAI,CAACpJ,UAAU,MAAKW,SAAA,EACvBC,EAAAA,EAAAA,MAAA,QAAMqI,MAAO,CAAEI,OAAQ,YAAa1I,SAAA,CAAE2G,GAAE,gCAAgC,IAAE7E,EAAM2V,IAAInE,cAAc,IAAE3M,GAAE,gCACtG7G,EAAAA,EAAAA,KAAA,OAAAE,SACKyH,IAAa3H,EAAAA,EAAAA,KAAC+I,EAAAA,EAAK,CAAC5B,QAAQ,SAAS5H,UAAU,OAAMW,SACjD6H,UAIb5H,EAAAA,EAAAA,MAAC8H,EAAAA,EAAMe,OAAM,CAAA9I,SAAA,EACTF,EAAAA,EAAAA,KAACiJ,EAAAA,EAAM,CAAC9B,QAAQ,QAAQlG,QAASe,EAAMqG,QAAQnI,SAC1C2G,GAAE,WACG,KACV1G,EAAAA,EAAAA,MAAC8I,EAAAA,EAAM,CAACC,SAAU3B,EAASJ,QAAQ,UAAUlG,SAAO6B,EAAAA,EAAAA,IAAAC,EAAAA,EAAAA,KAAAC,MAAE,SAAAoC,IAAA,IAAAlC,EAAA,OAAAH,EAAAA,EAAAA,KAAAO,MAAA,SAAAkC,GAAA,cAAAA,EAAAhC,KAAAgC,EAAA/B,MAAA,OAG9C,OAH8C+B,EAAAhC,KAAA,EAE9CgE,GAAW,GACXhC,EAAA/B,KAAA,EACuB+C,EAAa,CAAE2C,OAAQnH,EAAM2V,IAAIxO,SAAU,KAAD,GAA3DjG,EAAQsC,EAAA7B,MACDR,KAAKkG,OACdzB,GAAa,GACbI,EAAgB9E,EAASC,KAAKkG,MAAMC,WA7BxDtH,EAAMqG,UACNrG,EAAMuH,gBAgCW/D,EAAA/B,KAAA,gBAAA+B,EAAAhC,KAAA,EAAAgC,EAAAC,GAAAD,EAAA,SAGD6B,EAAS,cAAc,yBAAA7B,EAAAtB,OAAA,GAAAkB,EAAA,kBAE7BlF,SAAA,CACGqH,IAAWvH,EAAAA,EAAAA,KAAC+B,EAAO,CAACxC,UAAU,yBAAyB2C,IAAI,OAAOC,MAAM,UAAW,IAAE0E,GAAE,kBAK5G,EA8XA,GA5Xe,WACX,IAuCIwV,EAvCJ/Q,GAAkC3L,EAAAA,EAAAA,WAAS,GAAM4L,GAAA1L,EAAAA,EAAAA,GAAAyL,EAAA,GAA1CgR,EAAS/Q,EAAA,GAAEgR,EAAYhR,EAAA,GAC9BG,GAAwD/L,EAAAA,EAAAA,WAAS,GAAMgM,GAAA9L,EAAAA,EAAAA,GAAA6L,EAAA,GAAhEoM,EAAoBnM,EAAA,GAAEoM,EAAuBpM,EAAA,GACpDG,GAA0CnM,EAAAA,EAAAA,WAAS,GAAMoM,GAAAlM,EAAAA,EAAAA,GAAAiM,EAAA,GAAlD0Q,EAAazQ,EAAA,GAAE0Q,EAAgB1Q,EAAA,GACtCC,GAAkDrM,EAAAA,EAAAA,WAAS,GAAMsM,GAAApM,EAAAA,EAAAA,GAAAmM,EAAA,GACjEE,GADwBD,EAAA,GAAsBA,EAAA,IACZtM,EAAAA,EAAAA,WAAS,IAAMwM,GAAAtM,EAAAA,EAAAA,GAAAqM,EAAA,GAA1CwQ,EAASvQ,EAAA,GAAEwQ,EAAYxQ,EAAA,GAC9BG,GAAkC3M,EAAAA,EAAAA,WAAS,GAAM4M,GAAA1M,EAAAA,EAAAA,GAAAyM,EAAA,GAA1C3E,EAAS4E,EAAA,GAAE3E,EAAY2E,EAAA,GAC9BG,GAAwC/M,EAAAA,EAAAA,UAAS,IAAGgN,GAAA9M,EAAAA,EAAAA,GAAA6M,EAAA,GAA7C3E,EAAY4E,EAAA,GAAE3E,EAAe2E,EAAA,GACpCE,GAAkClN,EAAAA,EAAAA,UAAS,IAAGmN,GAAAjN,EAAAA,EAAAA,GAAAgN,EAAA,GAAvCT,EAASU,EAAA,GAAET,EAAYS,EAAA,GAE9ByD,GAAsC5Q,EAAAA,EAAAA,UAAS,MAAK6Q,GAAA3Q,EAAAA,EAAAA,GAAA0Q,EAAA,GAA7CqM,GAAWpM,EAAA,GAAEqM,GAAcrM,EAAA,GAClCsM,IAAwBnd,EAAAA,EAAAA,UAAS,IAAGod,IAAAld,EAAAA,EAAAA,GAAAid,GAAA,GAA7BE,GAAID,GAAA,GAAEE,GAAOF,GAAA,GACpBG,IAAoCvd,EAAAA,EAAAA,UAAS,IAAGwd,IAAAtd,EAAAA,EAAAA,GAAAqd,GAAA,GAChDE,IADiBD,GAAA,GAAeA,GAAA,IACQxd,EAAAA,EAAAA,UAAS,KAAG0d,IAAAxd,EAAAA,EAAAA,GAAAud,GAAA,GAA7CE,GAAYD,GAAA,GAAEE,GAAeF,GAAA,GACpCG,IAA4C7d,EAAAA,EAAAA,UAAS,OAAM8d,IAAA5d,EAAAA,EAAAA,GAAA2d,GAAA,GAApDE,GAAcD,GAAA,GAAEE,GAAiBF,GAAA,GACxCG,IAAoCje,EAAAA,EAAAA,UAAS,IAAGke,IAAAhe,EAAAA,EAAAA,GAAA+d,GAAA,GAE1CE,IAFWD,GAAA,GAAeA,GAAA,IAETzE,EAAAA,EAAAA,QAAOwD,KACxBvV,IAAWC,EAAAA,EAAAA,MAEjByW,IAAwBpe,EAAAA,EAAAA,UAAS,GAAEqe,IAAAne,EAAAA,EAAAA,GAAAke,GAAA,GAA5BE,GAAID,GAAA,GAAEE,GAAOF,GAAA,GACpBG,IAA0Bxe,EAAAA,EAAAA,UAAS,MAAKye,IAAAve,EAAAA,EAAAA,GAAAse,GAAA,GAAjCxZ,GAAKyZ,GAAA,GAAEC,GAAQD,GAAA,GACtBE,IAAwC3e,EAAAA,EAAAA,UAAS,MAAK4e,IAAA1e,EAAAA,EAAAA,GAAAye,GAAA,GAAjCE,IAAFD,GAAA,GAAiBA,GAAA,IACpCE,IAA8B9e,EAAAA,EAAAA,WAAS,GAAM+e,IAAA7e,EAAAA,EAAAA,GAAA4e,GAAA,GAAtC7S,GAAO8S,GAAA,GAAE7S,GAAU6S,GAAA,GAoBpBC,GAAiB,WACnBpY,IAAUqY,MAAK,SAAC1b,GACZ,GAAIA,EAASC,KAAKkG,MACd6U,GAAQhb,EAASC,KAAKkG,MAAM8S,MAC5BkC,GAASnb,EAASC,KAAKkG,MAAMC,SAC7BkV,GAAgBtb,EAASC,KAAKkG,MAAMwV,aAEnC,CACD,IAAMC,EAAU5b,EAASC,KAAK4K,aAE9B,GADAkP,GAAQ6B,GACJhB,GAAexE,QAAS,CACxB,IAAMyF,EAAaD,EAAQ5J,MACvB,SAACyC,GAAG,OAAKA,EAAIxO,SAAW2U,GAAexE,QAAQnQ,MAAM,IAEzD0T,GAAekC,EACnB,CACJ,CACAlT,IAAW,EACf,IAAGmT,OAAM,SAACra,GACLG,EAAAA,EACL,GACJ,EA+CA,IAhBA2J,EAAAA,EAAAA,YAAU,WACNkQ,IACJ,GAAG,KAEHlQ,EAAAA,EAAAA,YAAU,WA/BN5C,IAAW,GAEXwQ,EAAQ4C,aAAY,WAChB1Y,IAAUqY,MAAK,SAAC1b,GACZ,GAAIA,EAASC,KAAKkG,MACd6U,GAAQhb,EAASC,KAAKkG,MAAM8S,MAC5BkC,GAASnb,EAASC,KAAKkG,MAAMC,SAC7BkV,GAAgBtb,EAASC,KAAKkG,MAAMwV,aAEnC,CACD,IAAMC,EAAU5b,EAASC,KAAK4K,aAE9B,GADAkP,GAAQ6B,GACJhB,GAAexE,QAAS,CACxB,IAAMyF,EAAaD,EAAQ5J,MACvB,SAACyC,GAAG,OAAKA,EAAIxO,SAAW2U,GAAexE,QAAQnQ,MAAM,IAEzD0T,GAAekC,EACnB,CACJ,CACAlT,IAAW,EACf,IAAGmT,OAAM,SAACra,GACLG,EAAAA,EACL,GACJ,GAAG,IAUP,GAAG,KAEH2J,EAAAA,EAAAA,YAAU,WACNqP,GAAexE,QAAUsD,EAC7B,GAAG,CAACA,MAEJnO,EAAAA,EAAAA,YAAU,WACN,OAAO,kBAAMyQ,cAAc7C,EAAO,CACtC,GAAG,IAECzQ,GAAS,OAAO5L,EAAAA,EAAAA,KAAC+B,EAAO,CAACxC,UAAU,YACvC,GAAI0e,GAAM,OAAO9d,EAAAA,EAAAA,MAAA,KAAAD,SAAA,CAAG,WAAS+d,GAAK,OAClC,GAAItZ,GAAO,OAAOxE,EAAAA,EAAAA,MAAA,KAAAD,SAAA,CAAG,YAAUyE,GAAM,OAGrC,IA2CMyL,GAAmB,SAACC,EAAOC,GACd,cAAXA,IAGJ1I,GAAa,GACbI,EAAgB,IACpB,EAGMmX,GAAmB,WACrBR,IACJ,EAGMS,GAAa,CACf,KAAQ,CACJ9Y,IAAKG,GAET,MAAS,CACLH,IAAKI,GAET,QAAW,CACPJ,IAAKK,GAET,UAAa,CACTL,IAAKE,IAKP6Y,GAAkB,eAAAne,GAAA4B,EAAAA,EAAAA,IAAAC,EAAAA,EAAAA,KAAAC,MAAG,SAAAkD,EAAO/E,EAAOwW,GAAG,IAAAzU,EAAA,OAAAH,EAAAA,EAAAA,KAAAO,MAAA,SAAA6C,GAAA,cAAAA,EAAA3C,KAAA2C,EAAA1C,MAAA,UAC1B,cAAVtC,EAAqB,CAAAgF,EAAA1C,KAAA,QAES,OAD9BoZ,GAAelF,GACfI,GAAwB,GAAM5R,EAAAlC,OAAA,iBAIf,OAAnB0Y,GAAa,GAAMxW,EAAA3C,KAAA,EAAA2C,EAAA1C,KAAA,EAEQ2b,GAAWje,GAAOmF,IAAI,CAAE6C,OAAQwO,EAAIxO,SAAU,KAAD,GAA9DjG,EAAQiD,EAAAxC,MACDR,KAAKkG,OACdzB,GAAa,GACbyE,EAAa,SACbrE,EAAgB9E,EAASC,KAAKkG,MAAMC,WAGpC1B,GAAa,GACbyE,EAAa,WACbrE,EAAgB,4BAChBmX,MACHhZ,EAAA1C,KAAA,iBAAA0C,EAAA3C,KAAA,GAAA2C,EAAAV,GAAAU,EAAA,SAGDkB,GAAS,cAAc,QAGH,OAHGlB,EAAA3C,KAAA,GAGvBmZ,GAAa,GAAOxW,EAAAqD,OAAA,6BAAArD,EAAAjC,OAAA,GAAAgC,EAAA,yBAE3B,gBA5BuBH,EAAAC,GAAA,OAAA9E,EAAA0B,MAAA,KAAAC,UAAA,KA8BxB,OACI1C,EAAAA,EAAAA,MAAAF,EAAAA,SAAA,CAAAC,SAAA,EACIC,EAAAA,EAAAA,MAACoR,EAAAA,EAAG,CAAChS,UAAU,0BAAyBW,SAAA,EACpCF,EAAAA,EAAAA,KAACwR,EAAAA,EAAG,CAACC,GAAI,GAAI0G,GAAI,EAAGzG,GAAI,EAAG4N,GAAI,EAAEpf,UAC7BF,EAAAA,EAAAA,KAAA,QAAMwI,MAAO,CAAE+W,SAAU,QAASrf,SAAE2G,GAAE,gBAE1C7G,EAAAA,EAAAA,KAACwR,EAAAA,EAAG,CAACC,GAAI,GAAI0G,GAAI,EAAGzG,GAAI,EAAG4N,GAAI,EAAEpf,UAC7BC,EAAAA,EAAAA,MAAC6R,EAAS,CACNxS,MAAOke,GACPxe,KAAK,SACLsB,KAAK,SACLjB,UAAU,cAEVsR,SAAU,SAACoB,GAAC,OApHX,SAACyL,GAClBC,GAAkBD,EACtB,CAkHqC8B,CAAavN,EAAEZ,OAAO7R,MAAM,EAACU,SAAA,EAE9CF,EAAAA,EAAAA,KAAA,UAAQR,MAAM,MAAKU,SAAE2G,GAAE,iBACvB7G,EAAAA,EAAAA,KAAA,UAAQR,MAAM,aAAYU,SAAC,gBAC3BF,EAAAA,EAAAA,KAAA,UAAQR,MAAM,UAASU,SAAC,aACxBF,EAAAA,EAAAA,KAAA,UAAQR,MAAM,SAAQU,SAAC,YACvBF,EAAAA,EAAAA,KAAA,UAAQR,MAAM,aAAYU,SAAC,gBAC3BF,EAAAA,EAAAA,KAAA,UAAQR,MAAM,SAAQU,SAAC,aARnB,aAWZF,EAAAA,EAAAA,KAACwR,EAAAA,EAAG,CAACC,GAAI,GAAI0G,GAAI,GAAIzG,GAAI,EAAG4N,GAAI,EAAEpf,UAC9BF,EAAAA,EAAAA,KAACgS,EAAS,CACNxR,KAAK,OACLtB,KAAK,SACLC,YAAa0H,GAAE,kEACfgK,SAAU,SAACoB,GAAC,OA9HN,SAACqL,GACvBC,GAAgBD,EACpB,CA4HqCmC,CAAkBxN,EAAEZ,OAAO7R,MAAM,OAG1DQ,EAAAA,EAAAA,KAACwR,EAAAA,EAAG,CAACC,GAAI,GAAI0G,GAAI,GAAIzG,GAAI,GAAI4N,GAAI,EAAEpf,UAC/BF,EAAAA,EAAAA,KAACiJ,EAAAA,EAAM,CACH9B,QAAQ,UACR5H,UAAU,YACV0B,QAAS,WACLoT,OAAOqL,SAASC,QAAO,EAC3B,EAAEzf,SAED2G,GAAE,kBAMX,EAAC,GAAM,GAAOjB,KAAI,SAACga,GAEf,IAAMC,EAAe7C,GAAK8C,QAAO,SAACnI,GAAG,MAAwB,QAAnB+F,IAA4B/F,EAAI9S,SAAW6Y,EAAc,IAC9FoC,QAAO,SAACnI,GAAG,OAAKA,EAAIiI,eAAiBA,CAAY,IACjDE,QAAO,SAACnI,GAAG,OAAKA,EAAInE,cAAc4B,SAASkI,GAAa,IAE7D,OAAOuC,EAAalO,OAAS,GACzBxR,EAAAA,EAAAA,MAACoR,EAAAA,EAAG,CAAArR,SAAA,EAEAF,EAAAA,EAAAA,KAAA,MAAIwI,MAAOoX,EAAe,CAAC,EAAI,CAAEG,WAAY,QAAS7f,SAAiB2G,GAAf+Y,EAAiB,kBAAuB,gBAC/FC,EAAaja,KAAI,SAAC+R,EAAKqI,GAAC,OACrBhgB,EAAAA,EAAAA,KAACwR,EAAAA,EAAG,CAACyO,IAAK,EAAGvO,GAAI,EAAwBnS,UAAU,gBAAeW,UAC9DC,EAAAA,EAAAA,MAAA,OAAKZ,UAAU,oDAAmDW,SAAA,EAExD0f,IAAgC,YAAfjI,EAAI9S,QAAuC,WAAf8S,EAAI9S,UACnD1E,EAAAA,EAAAA,MAAC+f,EAAAA,EAAQ,CAAC3gB,UAAU,YAAWW,SAAA,EAC3BF,EAAAA,EAAAA,KAACkgB,EAAAA,EAASC,OAAM,CAACzf,GAAIsa,EAAAA,GAAMC,GAAG,IAAI1b,UAAU,uBAAsBW,SAC7Dwc,GAAY1c,EAAAA,EAAAA,KAAC+B,EAAO,CAACxC,UAAU,iCAAmCS,EAAAA,EAAAA,KAAA,KAAGT,UAAU,gCAEpFS,EAAAA,EAAAA,KAACkgB,EAAAA,EAASE,KAAI,CAACC,MAAM,MAAKngB,UAlQnDogB,EAmQyC3I,EAAI9S,OAlQrD,CACH,CAAE1D,MAAO,OAAQsY,KAAM,4BAA6B8G,UAAyB,YAAdD,GAC/D,CAAEnf,MAAO,QAASsY,KAAM,iCAAkC8G,UAAyB,WAAdD,GACrE,CAAEnf,MAAO,UAAWsY,KAAM,gCAAiC8G,UAAyB,YAAdD,GAAyC,WAAdA,GACjG,CACInf,MAAO,YACPsY,KAAM,4BACNtS,QAAS,cACTqZ,YAAY,EACZD,WAAW,KAyPoD,IAAI3a,KAAI,SAAC6a,EAAM5R,GACtC,OACI1O,EAAAA,EAAAA,MAAC6G,EAAAA,SAAc,CAAA9G,SAAA,CACVugB,EAAKF,WAAaE,EAAKD,aAAcxgB,EAAAA,EAAAA,KAACkgB,EAAAA,EAASQ,QAAO,CAAChgB,GAAG,QAEvD+f,EAAKF,YAAapgB,EAAAA,EAAAA,MAAC+f,EAAAA,EAASvE,KAAI,CAACpc,UAAWyB,IAAWyf,EAAKtZ,QAAUsZ,EAAKtZ,QAAU,IACjFlG,QAAS,kBAAMoe,GAAmBoB,EAAKtf,MAAOwW,EAAI,EAACzX,SAAA,CAElDugB,EAAKhH,OAAQzZ,EAAAA,EAAAA,KAAA,KAAGT,UAAWyB,IAAWyf,EAAKhH,KAAM,UAEjDgH,EAAKtf,WARG0N,EAa7B,SAKP+Q,IAAgC,YAAfjI,EAAI9S,QAAuC,WAAf8S,EAAI9S,UAClD1E,EAAAA,EAAAA,MAAAF,EAAAA,SAAA,CAAAC,SAAA,EACIF,EAAAA,EAAAA,KAAA,OAAKT,UAAU,qCAAqC0B,QAAS,YApLrF,SAAC0W,GACjBkF,GAAelF,GACf4E,GAAa,EACjB,CAiLiHoE,CAAYhJ,EAAK,EAAEzX,UACpFF,EAAAA,EAAAA,KAAA,KAAGT,UAAU,gCAEjBS,EAAAA,EAAAA,KAAA,OAAKT,UAAU,gBAIlBqgB,GAA+B,eAAfjI,EAAI9S,SACrB1E,EAAAA,EAAAA,MAAAF,EAAAA,SAAA,CAAAC,SAAA,EACIF,EAAAA,EAAAA,KAAA,OAAKT,UAAU,qCAAoCW,UAC/CF,EAAAA,EAAAA,KAAA,KAAGT,UAAU,iCAEjBS,EAAAA,EAAAA,KAAA,OAAKT,UAAU,gBAIJ,WAAfoY,EAAI9S,SACJ1E,EAAAA,EAAAA,MAAAF,EAAAA,SAAA,CAAAC,SAAA,EACIC,EAAAA,EAAAA,MAAA,OAAKZ,UAAU,qCAAoCW,SAAA,EAC/CF,EAAAA,EAAAA,KAAA,KAAGT,UAAU,kCAAkCiJ,MAAO,CAAEoY,aAAc,QAAU3f,QAAS,YA3LvH,SAAC0W,GACfkF,GAAelF,GACf8E,GAAiB,EACrB,CAwLiJoE,CAAUlJ,EAAK,KAChH3X,EAAAA,EAAAA,KAAA,KAAGT,UAAU,4BAA4B0B,QAAS,YAlMhF,SAAC0W,GACfkF,GAAelF,GACfI,GAAwB,EAC5B,CA+L0G+I,CAAUnJ,EAAK,QAE7E3X,EAAAA,EAAAA,KAAA,OAAKT,UAAU,iBAGvBS,EAAAA,EAAAA,KAAA,OAAAE,UACIF,EAAAA,EAAAA,KAAA,OACIka,IAAKvC,EAAIwC,UACTC,IAAKzC,EAAIP,SACT7X,UAAU,WACViJ,MAAO,CAAEI,OAAQ,uBACjByR,QAAS,SAACpI,GAAC,OAAMA,EAAEZ,OAAO6I,IAAMI,CAAU,OAGlDna,EAAAA,EAAAA,MAAA,OAAAD,SAAA,EACIF,EAAAA,EAAAA,KAAA,MAAIT,UAAU,8BAA8BiJ,MAAO,CAAErG,MAAO,WAAYjC,SACnEyX,EAAInE,iBAETrT,EAAAA,EAAAA,MAAA,OAAKqI,MAAO,CAAErG,MAAsB,WAAfwV,EAAI9S,OAAsB,MAAQ,UAAWsM,QAAS,OAAQ8I,WAAY,SAAUQ,eAAgB,UAAWva,SAAA,CAC/HyX,EAAI9S,QAAyB,eAAf8S,EAAI9S,SAA2B7E,EAAAA,EAAAA,KAAC+B,EAAO,CAACxC,UAAU,0BAChE,KACDS,EAAAA,EAAAA,KAAA,OAAKT,UAAU,MAAKW,SAAEyX,EAAI9S,mBAxEjB8S,EAAIxO,OAAS6W,GA1PhD,IAACM,CAsUe,OAGd,IACR,IAGAhE,IAAatc,EAAAA,EAAAA,KAAC+gB,GAAc,CAACrI,YAAakE,GAAa7C,SAAUuC,EAAWjU,QA5MpE,WAChBkU,GAAa,GACbM,GAAe,KACnB,EAyM8GtT,aAAc4V,KAGhHrH,IACA9X,EAAAA,EAAAA,KAACyX,GAAgB,CAACtP,YAAa2P,EAAsBzP,QArNzC,WACpB0P,GAAwB,EAC5B,EAmN2FJ,IAAKiF,GAAarT,aAAc4V,KAG/G3C,IACAxc,EAAAA,EAAAA,KAACic,GAAc,CAAC9T,YAAaqU,EAAenU,QA9NhC,WACpBoU,GAAiB,EACrB,EA4NkF9E,IAAKiF,KAG3EjV,IACA3H,EAAAA,EAAAA,KAAC6S,EAAAA,EAAQ,CAACC,KAAMnL,EAAWoL,iBAAkB,IAAM1K,QAAS+H,GAAkB4C,aAAc,CAAEC,SAAU,MAAOC,WAAY,UAAWhT,UAClIF,EAAAA,EAAAA,KAAC+G,GAAU,CAACsB,QAAS+H,GAAkB+C,SAAU/G,EAAWgH,GAAI,CAAEC,MAAO,QAASnT,SAC7E6H,QAMzB,C","sources":["components/FormInput.js","components/Spinner.js","helpers/api/apiCore.js","helpers/api/appManager.js","pages/appdetailtabs/appaccess.js","pages/appdetailtabs/appcontainer.js","pages/appdetailtabs/appoverview.js","pages/appdetailtabs/appuninstall.js","pages/appdetail.js","pages/myapps.js"],"sourcesContent":["// @flow\nimport classNames from 'classnames';\nimport React, { useState } from 'react';\nimport { Form, InputGroup } from 'react-bootstrap';\n\n/* Password Input */\nconst PasswordInput = ({ name, placeholder, refCallback, errors, register, className, value, readOnly }) => {\n const [showPassword, setShowPassword] = useState(false);\n\n return (\n <>\n <InputGroup className=\"mb-0\">\n <Form.Control\n type={showPassword ? 'text' : 'password'}\n placeholder={placeholder}\n name={name}\n id={name}\n as=\"input\"\n ref={(r) => {\n if (refCallback) refCallback(r);\n }}\n className={className}\n isInvalid={errors && errors[name] ? true : false}\n {...(register ? register(name) : {})}\n autoComplete={name}\n defaultValue={value}\n readOnly={readOnly}\n />\n <div\n className={classNames('input-group-text', 'input-group-password', {\n 'show-password': showPassword,\n })}\n data-password={showPassword ? 'true' : 'false'}>\n <span\n className=\"password-eye\"\n onClick={() => {\n setShowPassword(!showPassword);\n }}></span>\n </div>\n </InputGroup>\n </>\n );\n};\n\ntype FormInputProps = {\n label?: string,\n type?: string,\n name?: string,\n value?: string,\n placeholder?: string,\n register?: any,\n errors?: any,\n className?: string,\n labelClassName?: string,\n containerClass?: string,\n refCallback?: any,\n children?: any,\n};\n\nconst FormInput = ({\n label,\n type,\n name,\n value,\n readOnly,\n placeholder,\n register,\n errors,\n className,\n labelClassName,\n containerClass,\n refCallback,\n children,\n ...otherProps\n}: FormInputProps): React$Element<React$FragmentType> => {\n // handle input type\n const comp = type === 'textarea' ? 'textarea' : type === 'select' ? 'select' : 'input';\n\n return (\n <>\n {type === 'hidden' ? (\n <input type={type} name={name} {...(register ? register(name) : {})} {...otherProps} />\n ) : (\n <>\n {type === 'password' ? (\n <>\n <Form.Group className={containerClass}>\n {label ? (\n <>\n {' '}\n <Form.Label className={labelClassName}>{label}</Form.Label> {children}{' '}\n </>\n ) : null}\n <PasswordInput\n name={name}\n placeholder={placeholder}\n refCallback={refCallback}\n errors={errors}\n register={register}\n className={className}\n value={value}\n readOnly={readOnly}\n />\n\n {errors && errors[name] ? (\n <Form.Control.Feedback type=\"invalid\" className=\"d-block\">\n {errors[name]['message']}\n </Form.Control.Feedback>\n ) : null}\n </Form.Group>\n </>\n ) : (\n <>\n {type === 'select' ? (\n <>\n <Form.Group className={containerClass}>\n {label ? <Form.Label className={labelClassName}>{label}</Form.Label> : null}\n\n <Form.Select\n type={type}\n label={label}\n name={name}\n id={name}\n ref={(r) => {\n if (refCallback) refCallback(r);\n }}\n comp={comp}\n className={className}\n isInvalid={errors && errors[name] ? true : false}\n {...(register ? register(name) : {})}\n {...otherProps}>\n {children}\n </Form.Select>\n\n {errors && errors[name] ? (\n <Form.Control.Feedback type=\"invalid\">\n {errors[name]['message']}\n </Form.Control.Feedback>\n ) : null}\n </Form.Group>\n </>\n ) : (\n <>\n {type === 'checkbox' || type === 'radio' ? (\n <>\n <Form.Group className={containerClass}>\n <Form.Check\n type={type}\n label={label}\n name={name}\n id={name}\n ref={(r) => {\n if (refCallback) refCallback(r);\n }}\n className={className}\n isInvalid={errors && errors[name] ? true : false}\n {...(register ? register(name) : {})}\n {...otherProps}\n />\n\n {errors && errors[name] ? (\n <Form.Control.Feedback type=\"invalid\">\n {errors[name]['message']}\n </Form.Control.Feedback>\n ) : null}\n </Form.Group>\n </>\n ) : (\n <Form.Group className={containerClass}>\n {label ? <Form.Label className={labelClassName}>{label}</Form.Label> : null}\n\n <Form.Control\n type={type}\n placeholder={placeholder}\n value={value}\n name={name}\n id={name}\n as={comp}\n ref={(r) => {\n if (refCallback) refCallback(r);\n }}\n className={className}\n isInvalid={errors && errors[name] ? true : false}\n {...(register ? register(name) : {})}\n {...otherProps}\n autoComplete={name}>\n {children ? children : null}\n </Form.Control>\n\n {errors && errors[name] ? (\n <Form.Control.Feedback type=\"invalid\">\n {errors[name]['message']}\n </Form.Control.Feedback>\n ) : null}\n </Form.Group>\n )}\n </>\n )}\n </>\n )}\n </>\n )}\n </>\n );\n};\n\nexport default FormInput;\n","// @flow\nimport React from 'react';\nimport classNames from 'classnames';\n\ntype SpinnerProps = {\n tag?: string,\n className?: string,\n size?: 'lg' | 'md' | 'sm',\n type?: 'bordered' | 'grow',\n color?: string,\n children?: any,\n};\n\n/**\n * Spinner\n */\nconst Spinner = (props: SpinnerProps): React$Element<any> => {\n const children = props.children || null;\n const Tag = props.tag || 'div';\n const color = props.color || 'secondary';\n const size = props.size || '';\n\n return (\n <Tag\n role=\"status\"\n className={classNames(\n {\n 'spinner-border': props.type === 'bordered',\n 'spinner-grow': props.type === 'grow',\n },\n [`text-${color}`],\n { [`avatar-${size}`]: size },\n props.className\n )}>\n {children}\n </Tag>\n );\n};\n\nSpinner.defaultProps = {\n tag: 'div',\n type: 'bordered',\n};\n\nexport default Spinner;\n","import axios from 'axios';\nimport { Navigate } from \"react-router-dom\";\n\n// 定义一个全局变量来存储 config.json 的内容\nlet credentials;\n\nasync function getCredentials() {\n // 如果 credentials 不存在,就从 config.json 中获取它\n if (!credentials) {\n const response = await fetch('./config.json');\n const data = await response.json();\n const userName = data.APPMANAGE.APPMANAGE_USERNAME;\n const uerPassword = data.APPMANAGE.APPMANAGE_PASSWORD;\n credentials = btoa(userName + \":\" + uerPassword);\n }\n // 返回 credentials\n return credentials;\n}\n\n// 设置 axios 的默认配置\naxios.defaults.headers.post['Content-Type'] = 'application/json';\naxios.defaults.headers.get['Content-Type'] = 'application/json';\naxios.defaults.headers.common['Cache-Control'] = 'no-cache';\naxios.defaults.headers.common['Pragma'] = 'no-cache';\naxios.defaults.headers.common['Expires'] = '0';\n\n// 拦截响应以捕获错误\naxios.interceptors.response.use(\n (response) => {\n return response;\n },\n (error) => {\n // 任何不在 2xx 范围内的状态码都会触发这个函数\n let message;\n\n if (error && error.response && error.response.status === 404) {\n <Navigate to=\"/error-404\" />\n } else if (error && error.response && error.response.status === 500) {\n <Navigate to=\"/error-500\" />\n } else {\n message = error.response && error.response.data ? error.response.data['message'] : error.message || error;\n return Promise.reject(message);\n }\n }\n);\n\nclass APICore {\n /**\n * Fetches data from given url\n */\n get = async (url, params) => {\n // 等待获取凭证并设置授权头\n axios.defaults.headers.common['Authorization'] = 'Basic ' + await getCredentials();\n let response;\n if (params) {\n var queryString = params\n ? Object.keys(params)\n .map((key) => key + '=' + params[key])\n .join('&')\n : '';\n response = axios.get(`${url}?${queryString}`, params);\n } else {\n response = axios.get(`${url}`, params);\n }\n return response;\n };\n\n /**\n * post given data to url\n */\n create = async (url, data) => {\n // 等待获取凭证并设置授权头\n axios.defaults.headers.common['Authorization'] = 'Basic ' + await getCredentials();\n return axios.post(url, data);\n };\n}\n\nexport { APICore };\n","import { APICore } from './apiCore';\n\nconst api = new APICore();\n\n//App 安装\nfunction AppInstall(params: any): Promise<any> {\n const baseUrl = '/AppManage/AppInstall';\n return api.get(`${baseUrl}`, params);\n}\n\n//App 列表查询\nfunction AppList(params: any): Promise<any> {\n const baseUrl = '/AppManage/AppList';\n return api.get(`${baseUrl}`, params);\n}\n\n//App 卸载\nfunction AppUninstall(params: any): Promise<any> {\n const baseUrl = '/AppManage/AppUninstall';\n return api.get(`${baseUrl}`, params);\n}\n\n//App 停止\nfunction AppStop(params: any): Promise<any> {\n const baseUrl = '/AppManage/AppStop';\n return api.get(`${baseUrl}`, params);\n}\n\n//App 启动\nfunction AppStart(params: any): Promise<any> {\n const baseUrl = '/AppManage/AppStart';\n return api.get(`${baseUrl}`, params);\n}\n\n//App 重启\nfunction AppRestart(params: any): Promise<any> {\n const baseUrl = '/AppManage/AppRestart';\n return api.get(`${baseUrl}`, params);\n}\n\n//App 状态查询\nfunction AppStatus(params: any): Promise<any> {\n const baseUrl = '/AppManage/AppStatus';\n return api.get(`${baseUrl}`, params);\n}\n\n//查询APP对应的域名\nfunction AppDomainList(params: any): Promise<any> {\n const baseUrl = '/AppManage/AppDomainList';\n return api.get(`${baseUrl}`, params);\n}\n\n//删除APP绑定的域名\nfunction AppDomainDelete(params: any): Promise<any> {\n const baseUrl = '/AppManage/AppDomainDelete';\n return api.get(`${baseUrl}`, params);\n}\n\n//修改APP绑定的域名\nfunction AppDomainUpdate(params: any): Promise<any> {\n const baseUrl = '/AppManage/AppDomainUpdate';\n return api.get(`${baseUrl}`, params);\n}\n\n//APP绑定域名\nfunction AppDomainAdd(params: any): Promise<any> {\n const baseUrl = '/AppManage/AppDomainAdd';\n return api.get(`${baseUrl}`, params);\n}\n\n//设定默认域名\nfunction AppDomainSet(params: any): Promise<any> {\n const baseUrl = '/AppManage/AppDomainSet';\n return api.get(`${baseUrl}`, params);\n}\n\nexport { AppInstall, AppList, AppUninstall, AppStop, AppStart, AppRestart, AppStatus, AppDomainList, AppDomainDelete, AppDomainUpdate, AppDomainAdd, AppDomainSet };\n\n","import ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport Accordion from '@mui/material/Accordion';\nimport AccordionDetails from '@mui/material/AccordionDetails';\nimport AccordionSummary from '@mui/material/AccordionSummary';\nimport MuiAlert from '@mui/material/Alert';\nimport Snackbar from '@mui/material/Snackbar';\nimport Typography from '@mui/material/Typography';\nimport classNames from 'classnames';\nimport cockpit from 'cockpit';\nimport { default as React, useEffect, useState } from 'react';\nimport { Alert, Badge, Button, Card, Col, Form, Modal, Row } from 'react-bootstrap';\nimport { useNavigate } from 'react-router-dom';\nimport FormInput from '../../components/FormInput';\nimport Spinner from '../../components/Spinner';\nimport { AppDomainAdd, AppDomainDelete, AppDomainList, AppDomainSet, AppDomainUpdate } from '../../helpers';\n\nconst _ = cockpit.gettext;\n\nconst MyMuiAlert = React.forwardRef(function Alert(props, ref) {\n return <MuiAlert elevation={6} ref={ref} variant=\"filled\" {...props} />;\n});\n\n//删除绑定的域名\nconst RemoveDomain = (props): React$Element<React$FragmentType> => {\n const navigate = useNavigate(); //用于页面跳转\n const [disable, setDisable] = useState(false);//用于按钮禁用\n const [showAlert, setShowAlert] = useState(false); //用于是否显示错误提示\n const [alertMessage, setAlertMessage] = useState(\"\");//用于显示错误提示消息\n\n function closeAllModals() {\n //关闭所有弹窗\n props.onClose();\n props.onDataChange();\n }\n\n return (\n <Modal show={props.showConform} onHide={props.onClose} size=\"lg\"\n scrollable=\"true\" backdrop=\"static\" style={{ backgroundColor: \"rgba(0,0,0,0.8)\" }}>\n <Modal.Header onHide={props.onClose} className={classNames('modal-colored-header', 'bg-warning')}>\n <h4>{_(\"Delete domain binding\")}</h4>\n </Modal.Header>\n <Modal.Body className=\"row\" >\n <span style={{ margin: \"10px 0px\" }}>{_(\"Are you sure you want to delete the domain for:\")} {props.deleteRowData.domainValue} ? </span>\n <div>\n {showAlert && <Alert variant=\"danger\" className=\"my-2\">\n {alertMessage}\n </Alert>}\n </div>\n </Modal.Body>\n <Modal.Footer>\n <Button variant=\"light\" onClick={props.onClose}>\n {_(\"Close\")}\n </Button>{\" \"}\n <Button disabled={disable} variant=\"warning\" onClick={async () => {\n try {\n setDisable(true);\n const response = await AppDomainDelete({ app_id: props.deleteRowData.app_id, domain: props.deleteRowData.domainValue });\n if (response.data.Error) {\n setShowAlert(true);\n setAlertMessage(response.data.Error.Message);\n }\n else { //删除成功\n setDisable(false);\n closeAllModals();\n }\n }\n catch (error) {\n navigate(\"/error-500\");\n }\n finally {\n setDisable(false);\n }\n }}>\n {disable && <Spinner className=\"spinner-border-sm me-1\" tag=\"span\" color=\"white\" />} {_(\"Delete\")}\n </Button>\n </Modal.Footer>\n </Modal >\n );\n}\n\nconst AppAccess = (props): React$Element<React$FragmentType> => {\n const navigate = useNavigate(); //用于页面跳转\n const [domains, setDomains] = useState([]); // 定义域名数组\n const [loading, setLoading] = useState(false); // 定义执行操作时的加载转态\n\n const [showAlert, setShowAlert] = useState(false); //用于是否显示错误提示\n const [alertMessage, setAlertMessage] = useState(\"\"); //用于显示错误提示消息\n const [alertType, setAlertType] = useState(\"\"); //用于确定弹窗的类型:error\\success\n const [showRemoveDomain, setShowRemoveDomain] = useState(false); //用于显示状态为failed时显示确定删除的弹窗\n const [deleteRowData, setDeleteRowData] = useState(null); //用于保存将要删除的行数据\n const [inputDomainValue, setInputDomainValue] = useState(\"\");//用户保存用户输入的域名\n\n const [isExpandedForDomain, setIsExpandedForDomain] = React.useState(true); //用于保存“域名绑定”的折叠状态\n const [isExpandedForNoDomain, setIsExpandedForNoDomain] = React.useState(true);//用于保存“无域名访问”的折叠状态\n const [isExpandedForAccount, setIsExpandedForAccount] = React.useState(false);//用于保存“无域名访问”的折叠状态\n\n const getDomains = async () => {\n try {\n const response = await AppDomainList({ app_id: props.data.app_id });\n if (response.data.Error) {\n setShowAlert(true);\n setAlertType(\"error\")\n setAlertMessage(response.data.Error.Message);\n }\n else {\n let responseData = response.data.ResponseData.Domain_set;\n let defaultdomain = responseData.default_domain; //获取返回的默认域名数据\n\n let resturnDomains = responseData.domains.map(domain => {\n return {\n app_id: props.data.app_id,\n domainValue: domain,\n newDomainValue: domain,\n isEditable: false,\n isFromAPI: true,\n isDefaultDomain: domain === defaultdomain ? true : false\n };\n });\n //排序:将默认域名放前面\n resturnDomains.sort((a, b) => {\n return b.isDefaultDomain - a.isDefaultDomain;\n });\n setDomains(resturnDomains);\n }\n }\n catch (error) {\n navigate(\"/error-500\");\n }\n }\n\n useEffect(() => {\n getDomains();\n }, []);\n\n //添加域名\n const addRow = () => {\n if (domains.length < 10) {\n // 限制最多只能有10个domain\n setDomains([\n ...domains,\n {\n app_id: props.data.app_id,\n domainValue: \"\",\n newDomainValue: \"\",\n isEditable: true,\n isFromAPI: false,\n isDefaultDomain: false\n },\n ]);\n }\n }\n\n //删除域名\n const deleteRow = async (row, index) => {\n if (!row.isFromAPI) { //如果是点“添加”产生的记录行,则直接删除,不需要调用接口\n const newRows = [...domains]; // 复制状态数组\n newRows.splice(index, 1); // 删除指定索引的对象\n setDomains(newRows); // 更新状态数组\n }\n else { //表示记录是从接口获取的,删除时需要调用接口删除\n setShowRemoveDomain(true);\n setDeleteRowData(row);\n }\n }\n\n //编辑\n const editRow = (index) => {\n const newRows = [...domains]; // 复制状态数组\n newRows[index].isEditable = !newRows[index].isEditable; // 切换isEditable属性\n setDomains(newRows); // 更新状态数组\n }\n\n //取消编辑\n const cancelEditRow = (index) => {\n const newRows = [...domains]; // 复制状态数组\n newRows[index].newDomainValue = newRows[index].domainValue; // 用户有修改但是取消编辑,需要将数据还原\n newRows[index].isEditable = !newRows[index].isEditable; // 切换isEditable属性\n setDomains(newRows); // 更新状态数组\n }\n\n //设为默认域名\n const setDefaultDomain = async (index) => {\n const defaultDomain = domains[index].newDomainValue; //获取域名\n setLoading(true);\n try { //调用设定默认域名接口\n const response = await AppDomainSet({ app_id: props.data.app_id, domain: defaultDomain });\n if (response.data.Error) {\n setShowAlert(true);\n setAlertType(\"error\")\n setAlertMessage(response.data.Error.Message);\n }\n else {\n setShowAlert(true);\n setAlertType(\"success\")\n setAlertMessage(\"设置成功!\");\n getDomains();\n }\n }\n catch (error) {\n navigate(\"/error-500\");\n }\n finally {\n setLoading(false);\n }\n }\n\n //保存\n const saveRow = async (row, index) => {\n const input = document.getElementsByName(`domain-${index}`)[0]; // 获取搜索框元素\n const value = input.value; // 获取搜索框的值\n const regex = /^(?!https?:\\/\\/)([\\da-z\\.-]+\\.)*([\\da-z\\.-]+)\\.([a-z\\.]{2,6})([\\/\\w \\.-]*)*\\/?$/; // 定义一个正则表达式,用来验证域名的格式\n if (value) {\n if (regex.test(value)) {\n if (row.isFromAPI) { //如果取到isFromAPI为true,表示要修改数据\n if (row.domainValue != row.newDomainValue) { //如果修改前的数据不等于修改后的数据,则调用修改接口\n setLoading(true);\n try {\n const response = await AppDomainUpdate({ app_id: props.data.app_id, domain_old: row.domainValue, domain_new: value });\n if (response.data.Error) {\n setShowAlert(true);\n setAlertType(\"error\")\n setAlertMessage(response.data.Error.Message);\n }\n else {\n setShowAlert(true);\n setAlertType(\"success\")\n setAlertMessage(\"Success\");\n getDomains();\n }\n }\n catch (error) {\n navigate(\"/error-500\");\n }\n finally {\n setLoading(false);\n }\n }\n else {\n const newRows = [...domains]; // 复制状态数组\n newRows[index].isEditable = !newRows[index].isEditable; // 切换isEditable属性\n setDomains(newRows); // 更新状态数组\n }\n }\n else { //如果取到isFromAPI为false,表示是绑定数据 \n try {\n setLoading(true);\n const response = await AppDomainAdd({ app_id: props.data.app_id, domains: value });\n if (response.data.Error) {\n setShowAlert(true);\n setAlertType(\"error\")\n setAlertMessage(response.data.Error.Message);\n }\n else {\n setShowAlert(true);\n setAlertType(\"success\")\n setAlertMessage(\"Success\");\n getDomains();\n }\n }\n catch (error) {\n navigate(\"/error-500\");\n }\n finally {\n setLoading(false);\n }\n }\n } else {\n setShowAlert(true);\n setAlertType(\"error\")\n setAlertMessage(_(\"Please enter the correct domain name and cannot start with http or https!\"));\n }\n }\n else {\n // 如果搜索框的值为空\n setShowAlert(true);\n setAlertType(\"error\")\n setAlertMessage(_(\"Domain name cannot be empty\"));\n }\n }\n\n //处理输入\n function handleChange(index, e) {\n const newRows = [...domains]; // 复制状态数组\n newRows[index].newDomainValue = e.target.value; // 修改inputValue属性\n setDomains(newRows); // 更新状态数组\n }\n\n const handleAlertClose = (event, reason) => {\n if (reason === 'clickaway') {\n return;\n }\n setShowAlert(false);\n setAlertMessage(\"\");\n };\n\n //用于取消删除域名弹窗\n const cancelRemoveDomain = () => {\n setShowRemoveDomain(false);\n };\n\n const [isOpen, setIsOpen] = useState(false);\n const toggle = () => setIsOpen(!isOpen);\n\n const handleChangefordomin = (event, newExpanded) => {\n setIsExpandedForDomain(newExpanded);\n };\n\n const handleChangefornodomin = (event, newExpanded) => {\n setIsExpandedForNoDomain(newExpanded);\n };\n\n const handleChangeforaccount = (event, newExpanded) => {\n setIsExpandedForAccount(newExpanded);\n };\n\n return (\n <>\n <Card>\n {loading && (\n <div className=\"card-disabled\" style={{ zIndex: 999 }}>\n <div className=\"card-portlets-loader\"></div>\n </div>\n )}\n <Card.Body>\n <Accordion defaultExpanded={true} onChange={handleChangefordomin} className='mb-2'>\n <AccordionSummary\n expandIcon={<ExpandMoreIcon />}\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\"\n >\n <Typography>\n <label className=\"me-2 fs-5 d-block\">{_(\"Domain Access\")}</label>\n <span className=\"me-2 fs-6\" style={{ display: isExpandedForDomain ? 'inline' : 'none' }}>\n {_(\"Domain access for better application performance. HTTPS and custom configurations available\")}\n <a href=\"/nginx\" target=\"_parent\">\n {_(\"More\")}\n </a>\n </span>\n </Typography>\n </AccordionSummary>\n <AccordionDetails>\n <Typography>\n <Card>\n <Card.Header>\n <Row className=\"mb-2 align-items-center\">\n <Col xs={12} md={12} className=\"d-flex justify-content-end\">\n <Button variant=\"primary\" size=\"sm\" className=\"me-2\" onClick={() => addRow()}>{_(\"Add Domain\")}</Button>\n {\n props.data?.config?.admin_domain_url && (\n <a href={props.data?.config?.admin_domain_url} target=\"_blank\" className=\"me-2\">\n <Button variant=\"primary\" size=\"sm\">{_(\"Admin Page\")}</Button>\n </a>\n )\n }\n <Button size=\"sm\" className=\"me-2\" variant=\"primary\"\n onClick={async () => {\n setLoading(true);\n await getDomains();\n setLoading(false);\n }} > {_(\"Refresh\")}\n </Button>\n </Col>\n </Row>\n </Card.Header>\n <Card.Body>\n {domains.map((row, index) => (\n <Row className=\"mb-2\" key={index}>\n <Col xs={12} className=\"d-flex justify-content-between\">\n <Col>\n <FormInput className=\"mb-2 mb-md-0\" type=\"text\"\n name={`domain-${index}`}\n value={row.newDomainValue}\n disabled={!row.isEditable}\n onChange={(e) => handleChange(index, e)} />\n </Col>\n <Col className='col-auto ms-auto'>\n <Button variant=\"link text-danger\" style={{ padding: \"5px\" }} onClick={() => deleteRow(row, index)}>\n {_(\"delete\")}\n </Button>\n {row.isEditable && row.isFromAPI && (\n <>\n <Button variant=\"link text-success\" style={{ padding: \"5px\" }} onClick={() => saveRow(row, index)}>\n {_(\"save\")}\n </Button>\n <Button variant=\"link text-success\" style={{ padding: \"5px\" }} onClick={() => cancelEditRow(index)}>\n {_(\"cancel\")}\n </Button>\n </>\n )}\n {row.isEditable && !row.isFromAPI && (\n\n <Button variant=\"link text-success\" style={{ padding: \"5px\" }} onClick={() => saveRow(row, index)}>\n {_(\"save\")}\n </Button>\n )}\n {!row.isEditable && (\n <>\n <Button variant=\"link text-primary\" style={{ padding: \"5px\" }} onClick={() => editRow(index)}>\n {_(\"edit\")}\n </Button>\n <a href={'http://' + row.domainValue} target=\"_blank\">\n <Button variant=\"link text-primary\" style={{ padding: \"5px\" }}>{_(\"access\")}</Button>\n </a>\n {\n row.isDefaultDomain ? (\n <Badge className=\"ms-2 bg-success\"> {_(\"default\")} </Badge>\n ) : (\n <Button variant=\"link text-primary\" onClick={() => setDefaultDomain(index)}>\n {_(\"set as default\")}\n </Button>\n )\n }\n </>\n )}\n </Col>\n </Col>\n </Row>\n ))}\n </Card.Body>\n {/* <Card.Footer>\n <Row className=\"mb-2 mt-2\">\n <Col sm={12}>\n <span>\n 如要需要进行Https设置,或者更多自定义配置,请点击更多\n </span>\n <a href=\"/nginx\" target=\"_parent\" className=\"me-2 float-end\">\n <Button variant=\"primary\" size=\"sm\">{_(\"More\")}</Button>\n </a>\n </Col>\n </Row>\n </Card.Footer> */}\n </Card >\n </Typography>\n </AccordionDetails>\n </Accordion>\n {\n (props.data?.config?.url && ((props.data?.config?.default_domain && !props.data?.app_replace_url) || (!props.data?.config?.default_domain))) &&\n <Accordion defaultExpanded={true} onChange={handleChangefornodomin} className='mb-2'>\n <AccordionSummary\n expandIcon={<ExpandMoreIcon />}\n aria-controls=\"panel2a-content\"\n id=\"panel2a-header\"\n >\n <Typography>\n <label className=\"me-2 fs-5 d-block\">无域名访问</label>\n <span className=\"me-2 fs-6\" style={{ display: isExpandedForNoDomain ? 'inline' : 'none' }}>没有域名可以通过IP+端口的方式临时访问应用</span>\n </Typography>\n </AccordionSummary>\n <AccordionDetails>\n <Typography>\n <Card>\n <Card.Body>\n {\n props.data?.config?.url &&\n (\n <div>\n <label className=\"me-2 fs-5\">前台:</label>\n <a href={props.data?.config?.url} target=\"_blank\" className=\"me-2\">\n {props.data?.config?.url}\n </a>\n </div>\n )\n }\n {\n props.data?.config?.admin_url &&\n (\n <div>\n <label className=\"me-2 fs-5\">后台:</label>\n <a href={props.data?.config?.admin_url} target=\"_blank\" className=\"me-2\">\n {props.data?.config?.admin_url}\n </a>\n </div>\n )\n }\n </Card.Body>\n </Card>\n </Typography>\n </AccordionDetails>\n </Accordion>\n }\n {\n props.data?.config?.admin_username &&\n <Accordion className='mb-2' onChange={handleChangeforaccount}>\n <AccordionSummary\n expandIcon={<ExpandMoreIcon />}\n aria-controls=\"panel3a-content\"\n id=\"panel3a-header\"\n >\n <Typography>\n <label className=\"me-2 fs-5 d-block\">初始账号</label>\n <span className=\"me-2 fs-6\" style={{ display: isExpandedForAccount ? 'inline' : 'none' }}>\n 此应用程序是使用管理员帐户预先设置的,请立即更改管理员密码。初始凭据为:\n </span>\n </Typography>\n </AccordionSummary>\n <AccordionDetails>\n <Typography>\n <Card>\n <Card.Body>\n {/* <p>\n This app is pre-setup with an admin account,Please change the admin password immediately. The initial credentials are:\n </p> */}\n <Form.Group as={Row} className=\"mb-3\">\n <Form.Label htmlFor=\"username\" column md={2} className='fs-5'>\n UserName\n </Form.Label>\n <Col md={4}>\n <Form.Control\n type=\"text\"\n name=\"username\"\n id=\"username\"\n defaultValue={props.data?.config?.admin_username}\n readOnly\n />\n </Col>\n </Form.Group>\n\n <Form.Group as={Row} className=\"mb-3\">\n <Form.Label htmlFor=\"password\" column md={2} className='fs-5'>\n Password\n </Form.Label>\n <Col md={4}>\n <FormInput\n type=\"password\"\n name=\"password\"\n containerClass={'mb-3'}\n value={props.data?.config?.admin_password}\n readOnly\n />\n </Col>\n </Form.Group>\n </Card.Body>\n </Card>\n </Typography>\n </AccordionDetails>\n </Accordion>\n }\n </Card.Body>\n </Card >\n {\n showRemoveDomain &&\n <RemoveDomain showConform={showRemoveDomain} onClose={cancelRemoveDomain} deleteRowData={deleteRowData} onDataChange={getDomains} />\n }\n {\n showAlert &&\n <Snackbar open={showAlert} autoHideDuration={5000} onClose={handleAlertClose} anchorOrigin={{ vertical: 'top', horizontal: 'center' }}>\n <MyMuiAlert onClose={handleAlertClose} severity={alertType} sx={{ width: '100%' }}>\n {alertMessage}\n </MyMuiAlert>\n </Snackbar>\n }\n </>\n );\n}\n\nexport default AppAccess;","import axios from 'axios';\nimport cockpit from \"cockpit\";\nimport React, { useEffect, useState } from 'react';\nimport { Badge, Button, Card, Col, Row, Table } from 'react-bootstrap';\nimport { useNavigate } from 'react-router-dom';\n\nconst _ = cockpit.gettext;\n\nconst AppContainer = (props): React$Element<React$FragmentType> => {\n const navigate = useNavigate(); //用于页面跳转\n const [containersInfo, setContainersInfo] = useState([]);\n const customer_name = props.data.customer_name;\n const [endpointsId, setEndpointsId] = useState(null);\n\n //通过Portainer的接口获取容器数据\n const getContainersData = async () => {\n try {\n let jwt = window.localStorage.getItem(\"portainer.JWT2\"); //获取存储在本地的JWT数据 \n let id = null;\n\n //如果获取不到jwt,则模拟登录并写入新的jwt\n if (jwt === null) {\n const response = await axios.get('./config.json'); //从项目下读取配置文件\n if (response.status === 200) {\n let config = response.data.PORTAINER;\n const { PORTAINER_USERNAME, PORTAINER_PASSWORD, PORTAINER_AUTH_URL, PORTAINER_HOME_PAGE } = config;\n\n //调用portainer的登录API,模拟登录\n const authResponse = await axios.post(PORTAINER_AUTH_URL, {\n username: PORTAINER_USERNAME,\n password: PORTAINER_PASSWORD\n });\n if (authResponse.status === 200) {\n jwt = \"\\\"\" + authResponse.data.jwt + \"\\\"\";\n //jwt = authResponse.data.jwt\n window.localStorage.setItem('portainer\\.JWT2', jwt); //关键是将通过API登录后获取的jwt,存储到本地localStorage\n } else {\n console.error('Error:', authResponse);\n }\n }\n else {\n console.error('Error:', response);\n }\n }\n\n //从portainer接口获取endpoints\n const endpointsData = await axios.get('/portainer/api/endpoints', {\n headers: {\n 'Authorization': 'Bearer ' + jwt.replace(/\"/g, '')\n }\n });\n if (endpointsData.status === 200) {\n //先判断是否获取了“本地”endpoint\n if (endpointsData.data.length == 0) { //没有“本地”endpoint\n //调用添加\"本地\"环境的接口\n const addEndpoint = await axios.post('/portainer/api/endpoints', {},\n {\n params: {\n Name: \"websoft9-local\",\n EndpointCreationType: 1\n },\n headers: {\n 'Authorization': 'Bearer ' + jwt.replace(/\"/g, '')\n }\n }\n );\n if (addEndpoint.status === 200) {\n id = addEndpoint.data?.Id;\n setEndpointsId(id);\n }\n else {\n console.error('Error:', addEndpoint);\n }\n }\n else {\n //应该可能会返回“远程”的endpoint,这里只获取“本地”endpoint,条件为URL包含'/var/run/docker.sock'\n id = endpointsData.data.find(({ URL }) => URL.includes('/var/run/docker.sock')).Id;\n setEndpointsId(id);\n }\n\n //调用接口获取\n const containersData = await axios.get(`/portainer/api/endpoints/${id}/docker/containers/json`, {\n headers: {\n 'Authorization': 'Bearer ' + jwt.replace(/\"/g, '')\n },\n params: {\n all: true,\n filters: JSON.stringify({ \"label\": [`com.docker.compose.project=${customer_name}`] })\n }\n })\n if (containersData.status === 200) {\n setContainersInfo(containersData.data);\n }\n else {\n console.error('Error:', containersData);\n }\n }\n else {\n console.error('Error:', endpointsData);\n }\n }\n catch (error) {\n console.error('Error:', error);\n //navigate(\"/error-500\");\n }\n }\n\n useEffect(() => {\n getContainersData();\n }, []);\n\n return (\n <Row>\n <Col xs={12}>\n <Card>\n <Card.Header>\n <Row className=\"align-items-center\">\n <Col xs={12} md={10}>\n <label className=\"me-2 fs-5 d-block\">{_(\"Container\")}</label>\n <span className=\"me-2 fs-6\">本应用由如下容器组成,名称为 {customer_name} 的为主容器 </span>\n </Col>\n <Col xs={12} md={2}>\n <a href={`/portainer/#!/${endpointsId}/docker/stacks/${customer_name}?type=2®ular=false&external=true&orphaned=false`}\n target=\"_blank\" className=\"me-2\">\n <Button variant=\"primary\" size=\"sm\" className=\"float-end\">{_(\"More\")}</Button>\n </a>\n </Col>\n </Row>\n </Card.Header>\n <Card.Body>\n <Table className=\"mb-0\">\n <thead>\n <tr>\n <th>Name</th>\n <th>State</th>\n <th style={{ textAlign: 'center' }}>Actions</th>\n <th>Image</th>\n <th>Created</th>\n <th>Ip Address</th>\n <th>Published Ports</th>\n </tr>\n </thead>\n <tbody>\n {containersInfo.map((container, index) => {\n return (\n <tr key={index}>\n <td>{container.Names?.[0]?.replace(/^\\/|\\/$/g, '')}</td>\n <td>\n <Badge className={`${container.State === 'running' ? 'bg-success' : container.State === 'exited' ? 'bg-danger' : 'info'}`}>\n {container.State}\n </Badge>\n </td>\n <td style={{ textAlign: 'center' }}>\n <a href={`/portainer/#!/${endpointsId}/docker/containers/${container.Id}/logs`}\n target=\"_blank\" title='Logs'>\n <i className=\"dripicons-document-remove noti-icon\"></i>{' '}\n </a>\n {\n container.State === \"running\" && (\n <a href={`/portainer/#!/${endpointsId}/docker/containers/${container.Id}/stats`}\n target=\"_blank\" title='Stats'>\n <i className=\"dripicons-pulse noti-icon\"></i>{' '}\n </a>\n )\n }\n\n </td>\n <td>{container.Image}</td>\n <td>{new Date(container.Created * 1000).toLocaleString()}</td>\n <td>{container.NetworkSettings.Networks[container.HostConfig.NetworkMode].IPAddress}</td>\n <td>{container.Ports.find(port => port.IP && /^(\\d{1,3}\\.){3}\\d{1,3}$/.test(port.IP))?.PublicPort}:{container.Ports.find(port => port.IP && /^(\\d{1,3}\\.){3}\\d{1,3}$/.test(port.IP))?.PrivatePort}</td>\n </tr>\n );\n })}\n </tbody>\n </Table>\n </Card.Body>\n </Card>\n </Col>\n </Row >\n );\n}\n\nexport default AppContainer;","import cockpit from \"cockpit\";\nimport React from 'react';\nimport { Card, Col, Row, Table } from 'react-bootstrap';\n\nconst _ = cockpit.gettext;\n\nconst AppOverview = (props): React$Element<React$FragmentType> => {\n return (\n <Row>\n <Col xs={12}>\n <Card>\n <Card.Header>\n <label className=\"me-2 fs-5 d-block\">{_(\"App Overview\")}</label>\n </Card.Header>\n <Card.Body>\n <Table responsive className=\"mb-0\" bordered={false} style={{ display: 'flex' }}>\n <tbody>\n <tr>\n <td style={{ fontWeight: \"bold\" }}>{_(\"App Name\")}:</td>\n <td>{props.data?.app_name}</td>\n </tr>\n <tr>\n <td style={{ fontWeight: \"bold\" }}>{_(\"App Version\")}:</td>\n <td>{props.data?.app_version}</td>\n </tr>\n <tr>\n <td style={{ fontWeight: \"bold\" }}>{_(\"App Port\")}:</td>\n <td>{props.data?.config?.port}</td>\n </tr>\n <tr>\n <td style={{ fontWeight: \"bold\" }}>{_(\"Created Time\")}:</td>\n <td>{props.data?.create_time}</td>\n </tr>\n <tr>\n <td style={{ fontWeight: \"bold\" }}>{_(\"Config Path\")}:</td>\n <td>{props.data?.config_path}</td>\n </tr>\n <tr>\n <td style={{ fontWeight: \"bold\" }}>{_(\"Data Path\")}:</td>\n <td>{props.data?.volume_data}</td>\n </tr>\n </tbody>\n </Table>\n </Card.Body>\n </Card>\n </Col>\n </Row>\n );\n}\n\nexport default AppOverview;","import classNames from 'classnames';\nimport cockpit from 'cockpit';\nimport React, { forwardRef, useImperativeHandle, useState } from 'react';\nimport { Alert, Button, Col, Modal, Row } from 'react-bootstrap';\nimport { useNavigate } from 'react-router-dom';\nimport Spinner from '../../components/Spinner';\nimport { AppStart, AppStop, AppUninstall } from '../../helpers';\n\nconst _ = cockpit.gettext;\n\n//卸载应用时的确定/取消弹窗\nconst UninstallConform = (props) => {\n const navigate = useNavigate(); //用于页面跳转\n const [disable, setDisable] = useState(false);//用于按钮禁用\n const [showAlert, setShowAlert] = useState(false); //用于是否显示错误提示\n const [alertMessage, setAlertMessage] = useState(\"\");//用于显示错误提示消息\n\n function closeAllModals() {\n //关闭弹窗\n props.onClose();\n props.onCloseFatherModal();\n\n //更新主页APP的数据\n props.onDataChange();\n }\n\n return (\n <Modal show={props.showConform} onHide={props.onClose} size=\"lg\"\n scrollable=\"true\" backdrop=\"static\" style={{ backgroundColor: \"rgba(0,0,0,0.8)\" }}>\n <Modal.Header onHide={props.onClose} closeButton className={classNames('modal-colored-header', 'bg-warning')}>\n <h4>{_(\"Uninstall\")} {props.app.customer_name}</h4>\n </Modal.Header>\n <Modal.Body className=\"row\" >\n <span style={{ margin: \"10px 0px\" }}>{_(\"This will immediately uninstall\")} {props.app.customer_name} {_(\"and remove all its data.\")}</span>\n <div>\n {showAlert && <Alert variant=\"danger\" className=\"my-2\">\n {alertMessage}\n </Alert>}\n </div>\n </Modal.Body>\n <Modal.Footer>\n <Button variant=\"light\" onClick={props.onClose}>\n {_(\"Close\")}\n </Button>{\" \"}\n <Button disabled={disable} variant=\"warning\" onClick={async () => {\n try {\n setDisable(true);\n //调用卸载应用接口\n const response = await AppUninstall({ app_id: props.app.app_id });\n if (response.data.Error) {\n setShowAlert(true);\n setAlertMessage(response.data.Error.Message);\n }\n else {\n closeAllModals(); //关闭弹窗并更新数据\n }\n }\n catch (error) {\n navigate(\"/error-500\");\n }\n }}>\n {disable && <Spinner className=\"spinner-border-sm me-1\" tag=\"span\" color=\"white\" />} {_(\"Uninstall\")}\n </Button>\n </Modal.Footer>\n </Modal >\n );\n}\n\n//卸载应用选项卡\nconst Uninstall = forwardRef((props, ref): React$Element<React$FragmentType> => {\n const [showUninstallConform, setShowUninstallConform] = useState(false);//用于确认卸载弹窗的标识\n const [disable, setDisable] = useState(false);//用于按钮禁用\n const navigate = useNavigate(); //用于页面跳转\n\n //用于显示确定/取消卸载应用的弹窗\n const handleClick = () => {\n setShowUninstallConform(true);\n };\n //用于关闭确定/取消卸载应用的弹窗\n const handleClose = () => {\n setShowUninstallConform(false);\n };\n\n //设置按钮禁用\n const setButtonDisable = () => {\n setDisable(true);\n };\n\n //设置按钮启用\n const setButtonEnable = () => {\n setDisable(false);\n };\n\n //提供给父组件调用的方法,用于在父组件中调用子组件的方法\n useImperativeHandle(ref, () => ({\n setButtonDisable,\n setButtonEnable,\n }));\n\n return (\n <>\n <Row className=\"mb-2\">\n <Col sm={12}>\n <label className=\"me-1\" style={{ fontWeight: \"bolder\", marginBottom: \"5px\" }}>{_(\"Start / Stop\")}</label>\n <p>\n {_(\"Apps can be stopped to conserve server resources instead of uninstalling.\")}\n </p>\n {props.data.status === \"running\" ?\n <Button variant=\"secondary\" className=\"float-end\" disabled={disable} onClick={async () => {\n try {\n props.disabledButton();\n setDisable(true);\n //调用应用停止接口\n const response = await AppStop({ app_id: props.data.app_id });\n if (response.data.Error) {\n navigate(\"/error\")\n }\n else {\n props.onDataChange(props.data.app_id);\n }\n }\n catch (error) {\n navigate(\"/error-500\");\n }\n finally {\n setDisable(false);\n props.enableButton();\n }\n }}>\n {disable && <Spinner className=\"spinner-border-sm me-1\" tag=\"span\" color=\"white\" />} {_(\"Stop\")}\n </Button>\n :\n <Button variant=\"primary\" className=\"float-end\" disabled={disable}\n onClick={async () => {\n props.disabledButton();\n setDisable(true);\n try {\n const response = await AppStart({ app_id: props.data.app_id });\n if (response.data.Error) {\n navigate(\"/error\")\n }\n else {\n props.onDataChange(props.data.app_id);\n }\n }\n catch (error) {\n navigate(\"/error-500\");\n }\n finally {\n props.enableButton();\n setDisable(false);\n }\n }}>\n {disable && <Spinner className=\"spinner-border-sm me-1\" tag=\"span\" color=\"white\" />} {_(\"Start\")}\n </Button>\n }\n </Col>\n </Row>\n <hr></hr>\n <Row className=\"mb-2\">\n <Col sm={12}>\n <label className=\"me-1\" style={{ fontWeight: \"bolder\", marginBottom: \"5px\" }}>{_(\"Uninstall\")}</label>\n <p>\n {_(\"This will uninstall the app immediately and remove all its data.The app will be inaccessible.\")}\n </p>\n <Button variant=\"warning\" className=\"float-end\" onClick={() => { handleClick() }} >\n {_(\"Uninstall\")}\n </Button>\n </Col>\n </Row>\n {showUninstallConform && <UninstallConform showConform={showUninstallConform} onClose={handleClose}\n app={props.data} onDataChange={props.onDataChange} onCloseFatherModal={props.onCloseFatherModal} />}\n </>\n );\n});\n\nexport default Uninstall;","import classnames from \"classnames\";\nimport cockpit from 'cockpit';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { Button, Col, Modal, Nav, OverlayTrigger, Row, Tab, Tooltip } from 'react-bootstrap';\nimport { Link, useNavigate } from 'react-router-dom';\nimport DefaultImg from '../assets/images/default.png';\nimport Spinner from '../components/Spinner';\nimport { AppRestart, AppStart, AppStop } from '../helpers';\nimport AppAccess from './appdetailtabs/appaccess';\nimport AppContainer from './appdetailtabs/appcontainer';\nimport AppOverview from './appdetailtabs/appoverview';\nimport Uninstall from './appdetailtabs/appuninstall';\n\nconst _ = cockpit.gettext;\n\nconst AppDetailModal = (props): React$Element<React$FragmentType> => {\n const [restartDisable, setRestartDisable] = useState(false);//用于重启按钮的按钮禁用\n const [buttonDisable, setButtonDisable] = useState(false); //用于启动/停止按钮禁用\n const [currentApp, setCurrentApp] = useState(props.current_app);\n const [startAppLoading, setStartAppLoading] = useState(false); //用户显示启动应用的加载状态\n const [stopAppLoading, setStopAppLoading] = useState(false); //用户显示停止时应用的加载状态\n const [restartAppLoading, setRestartAppLoading] = useState(false); //用户显示重启时应用的加载状态\n const navigate = useNavigate(); //用于页面跳转\n const childRef = useRef();\n\n //设置卸载页面的按钮禁用\n const setUninstallButtonDisable = () => {\n // 通过ref调用子组件的方法\n childRef.current.setButtonDisable();\n };\n\n //设置卸载页面的按钮启用\n const setUninstallButtonEnable = () => {\n // 通过ref调用子组件的方法\n childRef.current.setButtonEnable();\n };\n\n //设置启动/停止按钮禁用,用于传递给卸载页面\n const setAppdetailButtonDisable = () => {\n setButtonDisable(true);\n setRestartDisable(true);\n };\n //设置启动/停止按钮启用,用于传递给卸载页面\n const setAppdetailButtonEnable = () => {\n setButtonDisable(false);\n setRestartDisable(false);\n };\n\n useEffect(() => {\n setCurrentApp(props.current_app);\n }, [props.current_app]);\n\n const tabContents = [\n {\n id: '1',\n title: _(\"Overview\"),\n icon: 'mdi dripicons-home',\n text: <AppOverview data={currentApp} />,\n },\n {\n id: '2',\n title: _(\"Access\"),\n icon: 'mdi dripicons-web',\n text: <AppAccess data={currentApp} />,\n },\n {\n id: '3',\n title: _(\"Container\"),\n icon: 'mdi dripicons-stack',\n text: <AppContainer data={currentApp} />,\n },\n {\n id: '4',\n title: _(\"Uninstall\"),\n icon: 'mdi mdi-cog-outline',\n text: <Uninstall data={currentApp} ref={childRef} disabledButton={setAppdetailButtonDisable} enableButton={setAppdetailButtonEnable}\n onDataChange={props.onDataChange} onCloseFatherModal={props.onClose} />,\n },\n ];\n\n return (\n currentApp && <Modal show={props.showFlag} backdrop=\"static\" onHide={props.onClose} size=\"lg\" scrollable=\"true\" dialogClassName=\"modal-full-width\" >\n <Modal.Header onHide={props.onClose} closeButton>\n <div style={{ padding: \"10px\", display: \"flex\", width: \"100%\", alignItems: \"center\" }}>\n <div className='appstore-item-content-icon col-same-height'>\n <img\n src={currentApp.image_url}\n alt=\"\"\n className=\"app-icon\"\n onError={(e) => (e.target.src = DefaultImg)}\n />\n </div>\n <div className='col-same-height'>\n <h4 className=\"appstore-item-content-title\" style={{ marginTop: \"5px\" }}>\n {currentApp.customer_name}\n </h4>\n <h5 className=\"appstore-item-content-title\" style={{ marginTop: \"5px\" }}>\n {currentApp.status}\n </h5>\n </div>\n <div className='col-same-height' style={{ flexGrow: 1, display: \"flex\", justifyContent: \"flex-end\", alignItems: \"center\" }}>\n {\n currentApp.status === \"exited\" &&\n <OverlayTrigger\n key=\"bottom1\"\n placement=\"bottom\"\n overlay={\n <Tooltip id=\"tooltip-bottom\">\n {_(\"Start App\")}\n </Tooltip>\n }>\n <Button variant=\"primary\" disabled={buttonDisable}\n style={{ padding: \"5px 10px\", borderRadius: \"3px\", marginRight: \"10px\" }}\n onClick={async () => {\n setUninstallButtonDisable();\n setStartAppLoading(true);\n setRestartDisable(true);\n try {\n const response = await AppStart({ app_id: currentApp.app_id });\n if (response.data.Error) {\n navigate(\"/error\")\n }\n else {\n props.onDataChange();\n }\n }\n catch (error) {\n navigate(\"/error-500\");\n }\n finally {\n setUninstallButtonEnable();\n setStartAppLoading(false);\n setRestartDisable(false);\n }\n }}\n >\n {\n startAppLoading ?\n <Spinner className=\"spinner-border-sm noti-icon\" color=\"light\" />\n :\n <i className=\"dripicons-media-play noti-icon\"></i>\n }\n </Button>\n </OverlayTrigger>\n }\n {\n currentApp.status === \"running\" &&\n <OverlayTrigger\n key=\"bottom2\"\n placement=\"bottom\"\n overlay={\n <Tooltip id=\"tooltip-bottom\">\n {_(\"Stop App\")}\n </Tooltip>\n }>\n <Button variant=\"primary\" disabled={buttonDisable}\n style={{ padding: \"5px 10px\", borderRadius: \"3px\", marginRight: \"10px\" }}\n onClick={async () => {\n setUninstallButtonDisable();\n setStopAppLoading(true);\n setRestartDisable(true);\n try {\n const response = await AppStop({ app_id: currentApp.app_id });\n if (response.data.Error) {\n navigate(\"/error\");\n }\n else {\n props.onDataChange();\n }\n }\n catch (error) {\n navigate(\"/error-500\");\n }\n finally {\n setUninstallButtonEnable();\n setStopAppLoading(false);\n setRestartDisable(false);\n }\n }}\n >\n {\n stopAppLoading ?\n <Spinner className=\"spinner-border-sm noti-icon\" color=\"light\" />\n :\n <i className=\"dripicons-power noti-icon\"></i>\n }\n </Button>\n </OverlayTrigger>\n }\n <OverlayTrigger\n key=\"bottom3\"\n placement=\"bottom\"\n overlay={\n <Tooltip id=\"tooltip-bottom\">\n {_(\"Restart App\")}\n </Tooltip>\n }>\n <Button disabled={restartDisable}\n style={{ padding: \"5px 10px\", borderRadius: \"3px\", marginRight: \"10px\" }}\n onClick={async () => {\n try {\n setUninstallButtonDisable();\n setRestartAppLoading(true);\n setButtonDisable(true);\n const response = await AppRestart({ app_id: currentApp.app_id });\n if (response.data.Error) {\n navigate(\"/error\");\n }\n else {\n props.onDataChange();\n }\n }\n catch (error) {\n navigate(\"/error-500\");\n }\n finally {\n setUninstallButtonEnable();\n setRestartAppLoading(false);\n setButtonDisable(false);\n }\n }}\n >\n {\n restartAppLoading ?\n <Spinner className=\"spinner-border-sm noti-icon\" color=\"light\" />\n :\n <i className=\"dripicons-clockwise noti-icon\"></i>\n }\n </Button>\n </OverlayTrigger>\n {\n currentApp.status === \"running\" &&\n <OverlayTrigger\n key=\"bottom4\"\n placement=\"bottom\"\n overlay={\n <Tooltip id=\"tooltip-bottom\">\n {_(\"Terminal\")}\n </Tooltip>\n }>\n <Link to={{ pathname: '/terminal', search: `?id=${currentApp.customer_name}` }}\n style={{ color: \"#fff\", backgroundColor: \"#727cf5\", padding: \"5px 10px\", borderRadius: \"3px\", borderColor: \"#727cf5\", marginRight: \"10px\" }}\n target=\"_blank\">\n <i className=\"dripicons-code noti-icon\"></i>{' '}\n </Link>\n </OverlayTrigger>\n }\n {\n <OverlayTrigger\n key=\"bottom5\"\n placement=\"bottom\"\n overlay={\n <Tooltip id=\"tooltip-bottom\">\n {_(\"Documentation\")}\n </Tooltip>\n }>\n <a href={'https://support.websoft9.com/docs/' + currentApp.app_name}\n style={{ color: \"#fff\", backgroundColor: \"#727cf5\", padding: \"5px 10px\", borderRadius: \"3px\", borderColor: \"#727cf5\", marginRight: \"10px\" }}\n target=\"_blank\">\n <i className=\"dripicons-document noti-icon\"></i>{' '}\n </a>\n </OverlayTrigger>\n }\n </div>\n </div>\n </Modal.Header>\n <Modal.Body className=\"row\">\n <Tab.Container defaultActiveKey={_(\"Overview\")}>\n <Col sm={2} className=\"mb-2 mb-sm-0\">\n <Nav variant=\"pills\" className=\"flex-column\">\n {tabContents.map((tab, index) => {\n const renderElement = () => {\n return (\n <Nav.Item key={index}>\n <Nav.Link as={Link} to=\"#\" eventKey={tab.title}>\n <i\n className={classnames(\n tab.icon,\n 'd-md-none',\n 'd-block',\n 'me-1'\n )}></i>\n <span className=\"d-none d-md-block\">{tab.title}</span>\n </Nav.Link>\n </Nav.Item>\n );\n }\n if (tab.title === \"Terminal\") {\n if (currentApp.status === \"running\") {\n return renderElement();\n }\n } else {\n return renderElement();\n }\n })}\n </Nav>\n </Col>\n <Col sm={10}>\n <Tab.Content style={{ height: \"100%\" }}>\n {tabContents.map((tab, index) => {\n return (\n <Tab.Pane eventKey={tab.title} id={tab.id} key={index} style={{ height: \"100%\" }}>\n <Row style={{ height: \"100%\" }}>\n <Col sm=\"12\" style={{ height: tab.title === \"Terminal\" ? \"600px\" : \"\" }}>\n {tab.text}\n </Col>\n </Row>\n </Tab.Pane>\n );\n })}\n </Tab.Content>\n </Col>\n </Tab.Container>\n </Modal.Body>\n </Modal >\n );\n}\n\nexport default AppDetailModal;","import MuiAlert from '@mui/material/Alert';\nimport Snackbar from '@mui/material/Snackbar';\nimport classNames from 'classnames';\nimport cockpit from 'cockpit';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { Alert, Button, Col, Dropdown, Modal, Row } from 'react-bootstrap';\nimport { Link, Navigate, useNavigate } from 'react-router-dom';\nimport DefaultImg from '../assets/images/default.png';\nimport FormInput from '../components/FormInput';\nimport Spinner from '../components/Spinner';\nimport { AppList, AppRestart, AppStart, AppStop, AppUninstall } from '../helpers';\nimport AppDetailModal from './appdetail';\n\nconst _ = cockpit.gettext;\n\nconst MyMuiAlert = React.forwardRef(function Alert(props, ref) {\n return <MuiAlert elevation={6} ref={ref} variant=\"filled\" {...props} />;\n});\n\n//应用状态为failed时,显示错误消息\nconst ErrorInfoModal = (props): React$Element<React$FragmentType> => {\n return (\n <Modal show={props.showConform} onHide={props.onClose} size=\"lg\" scrollable=\"true\" backdrop=\"static\">\n <Modal.Header onHide={props.onClose} closeButton className={classNames('modal-colored-header', 'bg-danger')}>\n <h4>{_(\"This is the error message for\")} {props.app.customer_name}</h4>\n </Modal.Header>\n <Modal.Body className=\"row\" >\n {\n props.app.status_reason &&\n <>\n <span style={{ margin: \"10px 0px\" }}> <b>{_(\"Code: \")}</b>{props.app.status_reason.Code} </span>\n <span style={{ margin: \"10px 0px\" }}> <b>{_(\"Message: \")}</b>{props.app.status_reason.Message} </span>\n <span style={{ margin: \"10px 0px\" }}> <b>{_(\"Detail: \")}</b>{props.app.status_reason.Detail} </span>\n </>\n }\n </Modal.Body>\n <Modal.Footer>\n <Button variant=\"light\" onClick={props.onClose}>\n {_(\"Close\")}\n </Button>\n <Button variant=\"light\" onClick={() => window.open('https://www.websoft9.com/ticket', '_blank')}>\n {_(\"Support\")}\n </Button>\n </Modal.Footer>\n </Modal >\n );\n}\n\n//删除应用弹窗\nconst UninstallConform = (props): React$Element<React$FragmentType> => {\n const navigate = useNavigate(); //用于页面跳转\n const [disable, setDisable] = useState(false);//用于按钮禁用\n const [showAlert, setShowAlert] = useState(false); //用于是否显示错误提示\n const [alertMessage, setAlertMessage] = useState(\"\");//用于显示错误提示消息\n\n function closeAllModals() {\n //关闭所有弹窗\n props.onClose();\n props.onDataChange();\n }\n\n return (\n <Modal show={props.showConform} onHide={props.onClose} size=\"lg\"\n scrollable=\"true\" backdrop=\"static\">\n <Modal.Header onHide={props.onClose} className={classNames('modal-colored-header', 'bg-warning')}>\n <h4>{_(\"Remove\")} {props.app.customer_name}</h4>\n </Modal.Header>\n <Modal.Body className=\"row\" >\n <span style={{ margin: \"10px 0px\" }}>{_(\"This will immediately remove\")} {props.app.customer_name} {_(\"and remove all its data.\")}</span>\n <div>\n {showAlert && <Alert variant=\"danger\" className=\"my-2\">\n {alertMessage}\n </Alert>}\n </div>\n </Modal.Body>\n <Modal.Footer>\n <Button variant=\"light\" onClick={props.onClose}>\n {_(\"Close\")}\n </Button>{\" \"}\n <Button disabled={disable} variant=\"warning\" onClick={async () => {\n try {\n setDisable(true);\n //调用卸载应用接口\n const response = await AppUninstall({ app_id: props.app.app_id });\n if (response.data.Error) {\n setShowAlert(true);\n setAlertMessage(response.data.Error.Message);\n }\n else {\n closeAllModals(); //关闭弹窗并更新数据\n }\n }\n catch (error) {\n navigate(\"/error-500\");\n }\n }}>\n {disable && <Spinner className=\"spinner-border-sm me-1\" tag=\"span\" color=\"white\" />} {_(\"Remove\")}\n </Button>\n </Modal.Footer>\n </Modal >\n );\n}\n\nconst MyApps = (): React$Element<React$FragmentType> => {\n const [showModal, setShowModal] = useState(false); //用于显示状态为running或exited弹窗的标识\n const [showUninstallConform, setShowUninstallConform] = useState(false); //用于显示状态为failed时显示确定删除的弹窗\n const [showErrorInfo, setShowErrorInfo] = useState(false); //用于显示状态为failed时显示错误消息的弹窗\n const [showOtherAppModal, setShowOtherAppModal] = useState(false); //用于显示非websoft9应用的的弹窗的标识\n const [isLoading, setIsLoading] = useState(false); //用于非官方应用启动 停止 重启 卸载时,显示加载中\n const [showAlert, setShowAlert] = useState(false); //用于是否显示错误提示\n const [alertMessage, setAlertMessage] = useState(\"\");//用于显示错误提示消息\n const [alertType, setAlertType] = useState(\"\");//用于确定弹窗的类型:error\\success\n\n const [selectedApp, setSelectedApp] = useState(null); //用于存储被选中的产品(点击应用详情时使用)\n const [apps, setApps] = useState([]); //所有“我的应用”\n const [statusApps, setStatusApps] = useState([]);//根据状态筛选的应用\n const [searchString, setSearchString] = useState(\"\");//用户输入的筛选字符串\n const [selectedStatus, setSelectedStatus] = useState(\"all\"); //用于存储用户筛选应用状态的标识\n const [progressId, setProgressId] = useState([]); //用于存储当前正在安装的应用ID,用于做进度查询的参数\n\n const selectedAppRef = useRef(selectedApp);\n const navigate = useNavigate(); //用于页面跳转\n\n const [code, setCode] = useState(0);\n const [error, setError] = useState(null);\n const [errorDetails, setErrorDetails] = useState(null)\n const [loading, setLoading] = useState(false);\n\n const menuItems = (appStatus) => {\n return [\n { label: 'Stop', icon: 'dripicons-power noti-icon', condition: appStatus === \"running\" },\n { label: 'Start', icon: 'dripicons-media-play noti-icon', condition: appStatus === \"exited\" },\n { label: 'Restart', icon: 'dripicons-clockwise noti-icon', condition: appStatus === \"running\" || appStatus === \"exited\" },\n {\n label: 'Uninstall',\n icon: 'dripicons-trash noti-icon',\n variant: 'text-danger',\n hasDivider: true,\n condition: true\n }\n ]\n };\n\n let timer;\n\n //获取所有已安装的App(只执行一次)\n const getAllAppsOnce = () => {\n AppList().then((response) => {\n if (response.data.Error) {\n setCode(response.data.Error.Code);\n setError(response.data.Error.Message);\n setErrorDetails(response.data.Error.Details);\n }\n else {\n const newApps = response.data.ResponseData;\n setApps(newApps);\n if (selectedAppRef.current) {\n const updatedApp = newApps.find(\n (app) => app.app_id === selectedAppRef.current.app_id\n );\n setSelectedApp(updatedApp);\n }\n }\n setLoading(false);\n }).catch((error) => {\n <Navigate to=\"/error-500\" />\n });\n }\n\n //获取所有已安装的App(每隔5秒执行一次)\n const getAllApps = () => {\n setLoading(true);\n //调用接口获取已经安装应用\n timer = setInterval(() => {\n AppList().then((response) => {\n if (response.data.Error) {\n setCode(response.data.Error.Code);\n setError(response.data.Error.Message);\n setErrorDetails(response.data.Error.Details);\n }\n else {\n const newApps = response.data.ResponseData;\n setApps(newApps);\n if (selectedAppRef.current) {\n const updatedApp = newApps.find(\n (app) => app.app_id === selectedAppRef.current.app_id\n );\n setSelectedApp(updatedApp);\n }\n }\n setLoading(false);\n }).catch((error) => {\n <Navigate to=\"/error-500\" />\n });\n }, 5000);\n return () => clearInterval(timer);\n }\n\n useEffect(() => {\n getAllAppsOnce();\n }, []);\n\n useEffect(() => {\n getAllApps();\n }, []);\n\n useEffect(() => {\n selectedAppRef.current = selectedApp;\n }, [selectedApp]);\n\n useEffect(() => {\n return () => clearInterval(timer); //用于清除定时器\n }, []);\n\n if (loading) return <Spinner className='dis_mid' />;\n if (code) return <p>Code : ${code} </p>;\n if (error) return <p>Error : ${error} </p>;\n\n //用于根据应用“状态”过滤应用\n const changeStatus = (selectedStatus) => {\n setSelectedStatus(selectedStatus);\n };\n\n //用于根据用户输入搜索应用\n const handleInputChange = (searchString) => {\n setSearchString(searchString);\n }\n\n //用于用户点击应用详情\n const handleClick = (app) => {\n setSelectedApp(app);\n setShowModal(true);\n };\n\n //用于应用为failed时删除应用\n const deleteApp = (app) => {\n setSelectedApp(app);\n setShowUninstallConform(true);\n };\n\n //用于应用为failed时显示错误信息弹窗\n const showError = (app) => {\n setSelectedApp(app);\n setShowErrorInfo(true);\n };\n\n //用于关闭显示错误消息弹窗\n const cancelShowError = () => {\n setShowErrorInfo(false);\n };\n\n //用于取消删除应用\n const canceldeleteApp = () => {\n setShowUninstallConform(false);\n };\n\n //用于关闭应用详情的弹窗\n const handleClose = () => {\n setShowModal(false);\n setSelectedApp(null);\n };\n\n const handleAlertClose = (event, reason) => {\n if (reason === 'clickaway') {\n return;\n }\n setShowAlert(false);\n setAlertMessage(\"\");\n };\n\n //用于立即刷新数据\n const handleDataChange = () => {\n getAllAppsOnce();\n };\n\n //非官方应用的操作\n const appActions = {\n \"Stop\": {\n api: AppStop,\n },\n \"Start\": {\n api: AppStart,\n },\n \"Restart\": {\n api: AppRestart,\n },\n \"Uninstall\": {\n api: AppUninstall,\n }\n }\n\n //处理非官方应用的操作\n const NoOfficialAppClick = async (label, app) => {\n if (label === \"Uninstall\") {\n setSelectedApp(app);\n setShowUninstallConform(true);\n return;\n }\n\n setIsLoading(true);\n try {\n const response = await appActions[label].api({ app_id: app.app_id });\n if (response.data.Error) {\n setShowAlert(true);\n setAlertType(\"error\")\n setAlertMessage(response.data.Error.Message);\n }\n else {\n setShowAlert(true);\n setAlertType(\"success\")\n setAlertMessage(\"执行成功\");\n handleDataChange();\n }\n }\n catch (error) {\n navigate(\"/error-500\");\n }\n finally {\n setIsLoading(false);\n }\n }\n\n return (\n <>\n <Row className=\"mb-2 align-items-center\">\n <Col xs={12} sm={6} md={3} lg={2}>\n <span style={{ fontSize: \"28px\" }}>{_(\"My Apps\")}</span>\n </Col>\n <Col xs={12} sm={6} md={3} lg={2}>\n <FormInput\n value={selectedStatus}\n name=\"select\"\n type=\"select\"\n className=\"form-select\"\n key=\"select\"\n onChange={(e) => changeStatus(e.target.value)}\n >\n <option value=\"all\">{_(\"All States\")}</option>\n <option value=\"installing\">installing</option>\n <option value=\"running\">running</option>\n <option value=\"exited\">exited</option>\n <option value=\"restarting\">restarting</option>\n <option value=\"failed\">failed</option>\n </FormInput>\n </Col>\n <Col xs={12} sm={12} md={6} lg={7}>\n <FormInput\n type=\"text\"\n name=\"search\"\n placeholder={_(\"Search for apps like WordPress, Dropbox, Slack, Trello, …\")}\n onChange={(e) => handleInputChange(e.target.value)}\n />\n </Col>\n <Col xs={12} sm={12} md={12} lg={1}>\n <Button\n variant=\"primary\"\n className=\"float-end\"\n onClick={() => {\n window.location.reload(false);\n }}\n >\n {_(\"Refresh\")}\n </Button>\n </Col>\n </Row>\n\n {\n [true, false].map((official_app) => {\n // 过滤出符合条件的apps\n const filteredApps = apps.filter((app) => selectedStatus === 'all' || app.status === selectedStatus)\n .filter((app) => app.official_app === official_app)\n .filter((app) => app.customer_name.includes(searchString));\n // 如果有数据,返回一个Row组件,否则返回null\n return filteredApps.length > 0 ? (\n <Row>\n {/* 根据official_app的值显示不同的标题 */}\n <h4 style={official_app ? {} : { paddingTop: \"10px\" }}>{official_app ? _(\"Websoft9's Apps\") : _(\"Other Apps\")}</h4>\n {filteredApps.map((app, i) => (\n <Col xxl={2} md={3} key={app.app_id + i} className=\"appstore-item\">\n <div className='appstore-item-content highlight text-align-center'>\n {\n (!official_app && (app.status === \"running\" || app.status === \"exited\")) &&\n <Dropdown className=\"float-end\">\n <Dropdown.Toggle as={Link} to=\"#\" className=\"arrow-none card-drop\">\n {isLoading ? <Spinner className=\"spinner-border-sm noti-icon\" /> : <i className=\"dripicons-gear noti-icon\" />}\n </Dropdown.Toggle>\n <Dropdown.Menu align=\"end\">\n {(menuItems(app.status) || []).map((item, index) => {\n return (\n <React.Fragment key={index}>\n {item.condition && item.hasDivider && <Dropdown.Divider as=\"div\" />}\n {\n item.condition && <Dropdown.Item className={classNames(item.variant ? item.variant : '')}\n onClick={() => NoOfficialAppClick(item.label, app)}\n >\n {item.icon && <i className={classNames(item.icon, 'me-1')}></i>}\n {/* {isLoading ? <Spinner className=\"spinner-border-sm noti-icon\" /> : item.icon && <i className={classNames(item.icon, 'me-1')}></i>} */}\n {item.label}\n </Dropdown.Item>\n }\n </React.Fragment>\n );\n })}\n </Dropdown.Menu>\n </Dropdown>\n }\n {\n (official_app && (app.status === \"running\" || app.status === \"exited\")) &&\n <>\n <div className=\"float-end arrow-none card-drop p-0\" onClick={() => { handleClick(app) }}>\n <i className=\"dripicons-gear noti-icon\"></i>\n </div>\n <div className=\"clearfix\"></div>\n </>\n }\n {\n (official_app && app.status === \"installing\") &&\n <>\n <div className=\"float-end arrow-none card-drop p-0\">\n <i className=\"dripicons-empty noti-icon\"></i>\n </div>\n <div className=\"clearfix\"></div>\n </>\n }\n {\n app.status === 'failed' &&\n <>\n <div className=\"float-end arrow-none card-drop p-0\" >\n <i className=\"dripicons-information noti-icon\" style={{ paddingRight: \"10px\" }} onClick={() => { showError(app) }}></i>\n <i className=\"dripicons-trash noti-icon\" onClick={() => { deleteApp(app) }}></i>\n </div>\n <div className=\"clearfix\"></div>\n </>\n }\n <div>\n <img\n src={app.image_url}\n alt={app.app_name}\n className=\"app-icon\"\n style={{ margin: \"20px 10px 20px 10px\" }}\n onError={(e) => (e.target.src = DefaultImg)}\n />\n </div>\n <div>\n <h3 className=\"appstore-item-content-title\" style={{ color: \"#2196f3\" }}>\n {app.customer_name}\n </h3>\n <div style={{ color: app.status === 'failed' ? 'red' : 'inherit', display: 'flex', alignItems: 'center', justifyContent: 'center' }}>\n {app.status && app.status === \"installing\" && <Spinner className=\"spinner-border-sm m-2\" />}\n {\" \"}\n <div className=\"m-2\">{app.status}</div>\n </div>\n </div>\n </div >\n </Col>\n ))}\n </Row >\n ) : null;\n })\n }\n {\n showModal && <AppDetailModal current_app={selectedApp} showFlag={showModal} onClose={handleClose} onDataChange={handleDataChange} />\n }\n {\n showUninstallConform &&\n <UninstallConform showConform={showUninstallConform} onClose={canceldeleteApp} app={selectedApp} onDataChange={handleDataChange} />\n }\n {\n showErrorInfo &&\n <ErrorInfoModal showConform={showErrorInfo} onClose={cancelShowError} app={selectedApp} />\n }\n {\n showAlert &&\n <Snackbar open={showAlert} autoHideDuration={5000} onClose={handleAlertClose} anchorOrigin={{ vertical: 'top', horizontal: 'center' }}>\n <MyMuiAlert onClose={handleAlertClose} severity={alertType} sx={{ width: '100%' }}>\n {alertMessage}\n </MyMuiAlert>\n </Snackbar>\n }\n </>\n );\n};\n\nexport default MyApps;\n"],"names":["PasswordInput","_ref","name","placeholder","refCallback","errors","register","className","value","readOnly","_useState","useState","_useState2","_slicedToArray","showPassword","setShowPassword","_jsx","_Fragment","children","_jsxs","InputGroup","Form","Control","_objectSpread","type","id","as","ref","r","isInvalid","autoComplete","defaultValue","classNames","onClick","_ref2","label","labelClassName","containerClass","otherProps","_objectWithoutProperties","_excluded","comp","Group","Label","Feedback","Select","Check","Spinner","props","Tag","tag","color","size","role","concat","_defineProperty","defaultProps","credentials","getCredentials","_getCredentials","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee3","response","data","userName","uerPassword","wrap","_context3","prev","next","fetch","sent","json","APPMANAGE","APPMANAGE_USERNAME","APPMANAGE_PASSWORD","btoa","abrupt","stop","axios","defaults","headers","post","get","common","interceptors","use","error","message","status","Navigate","Promise","reject","APICore","_createClass","_classCallCheck","_callee","url","params","queryString","_context","t0","Object","keys","map","key","join","_x","_x2","create","_callee2","_context2","_x3","_x4","api","AppList","AppUninstall","AppStop","AppStart","AppRestart","AppDomainAdd","_","cockpit","MyMuiAlert","React","MuiAlert","elevation","variant","RemoveDomain","navigate","useNavigate","disable","setDisable","_useState3","_useState4","showAlert","setShowAlert","_useState5","_useState6","alertMessage","setAlertMessage","Modal","show","showConform","onHide","onClose","scrollable","backdrop","style","backgroundColor","Header","Body","margin","deleteRowData","domainValue","Alert","Footer","Button","disabled","app_id","domain","Error","Message","onDataChange","finish","_props$data","_props$data$config","_props$data2","_props$data2$config","_props$data3","_props$data3$config","_props$data4","_props$data4$config","_props$data5","_props$data6","_props$data6$config","_props$data7","_props$data7$config","_props$data8","_props$data8$config","_props$data9","_props$data9$config","_props$data10","_props$data10$config","_props$data11","_props$data11$config","_props$data12","_props$data12$config","_props$data13","_props$data13$config","_props$data14","_props$data14$config","_props$data15","_props$data15$config","_useState7","_useState8","domains","setDomains","_useState9","_useState10","loading","setLoading","_useState11","_useState12","_useState13","_useState14","_useState15","_useState16","alertType","setAlertType","_useState17","_useState18","showRemoveDomain","setShowRemoveDomain","_useState19","_useState20","setDeleteRowData","_useState21","_useState22","_React$useState","_React$useState2","isExpandedForDomain","setIsExpandedForDomain","_React$useState3","_React$useState4","isExpandedForNoDomain","setIsExpandedForNoDomain","_React$useState5","_React$useState6","isExpandedForAccount","setIsExpandedForAccount","getDomains","responseData","defaultdomain","resturnDomains","ResponseData","Domain_set","default_domain","newDomainValue","isEditable","isFromAPI","isDefaultDomain","sort","a","b","useEffect","deleteRow","_ref3","row","index","newRows","_toConsumableArray","splice","setDefaultDomain","_ref4","_callee4","defaultDomain","_context4","saveRow","_ref5","_callee5","input","regex","_response","_context5","document","getElementsByName","test","domain_old","domain_new","t1","_x5","handleAlertClose","event","reason","_useState23","_useState24","Card","zIndex","Accordion","defaultExpanded","onChange","newExpanded","AccordionSummary","expandIcon","ExpandMoreIcon","Typography","display","href","target","AccordionDetails","Row","Col","xs","md","length","config","admin_domain_url","_callee6","_context6","FormInput","e","handleChange","padding","cancelEditRow","editRow","Badge","app_replace_url","admin_url","admin_username","htmlFor","column","admin_password","Snackbar","open","autoHideDuration","anchorOrigin","vertical","horizontal","severity","sx","width","containersInfo","setContainersInfo","customer_name","endpointsId","setEndpointsId","getContainersData","jwt","PORTAINER_USERNAME","PORTAINER_PASSWORD","PORTAINER_AUTH_URL","authResponse","endpointsData","addEndpoint","_addEndpoint$data","containersData","window","localStorage","getItem","PORTAINER","PORTAINER_HOME_PAGE","username","password","setItem","console","replace","Name","EndpointCreationType","Id","find","URL","includes","all","filters","JSON","stringify","Table","textAlign","container","_container$Names","_container$Names$","_container$Ports$find","_container$Ports$find2","Names","State","title","Image","Date","Created","toLocaleString","NetworkSettings","Networks","HostConfig","NetworkMode","IPAddress","Ports","port","IP","PublicPort","PrivatePort","responsive","bordered","fontWeight","app_name","app_version","create_time","config_path","volume_data","UninstallConform","closeButton","app","onCloseFatherModal","forwardRef","showUninstallConform","setShowUninstallConform","setButtonDisable","setButtonEnable","useImperativeHandle","sm","marginBottom","disabledButton","enableButton","restartDisable","setRestartDisable","buttonDisable","current_app","currentApp","setCurrentApp","startAppLoading","setStartAppLoading","stopAppLoading","setStopAppLoading","restartAppLoading","setRestartAppLoading","childRef","useRef","setUninstallButtonDisable","current","setUninstallButtonEnable","tabContents","icon","text","AppOverview","AppAccess","AppContainer","Uninstall","showFlag","dialogClassName","alignItems","src","image_url","alt","onError","DefaultImg","marginTop","flexGrow","justifyContent","OverlayTrigger","placement","overlay","Tooltip","borderRadius","marginRight","Link","to","pathname","search","borderColor","Tab","Container","defaultActiveKey","Nav","tab","renderElement","Item","eventKey","classnames","Content","height","Pane","ErrorInfoModal","status_reason","Code","Detail","timer","showModal","setShowModal","showErrorInfo","setShowErrorInfo","isLoading","setIsLoading","selectedApp","setSelectedApp","_useState25","_useState26","apps","setApps","_useState27","_useState28","_useState29","_useState30","searchString","setSearchString","_useState31","_useState32","selectedStatus","setSelectedStatus","_useState33","_useState34","selectedAppRef","_useState35","_useState36","code","setCode","_useState37","_useState38","setError","_useState39","_useState40","setErrorDetails","_useState41","_useState42","getAllAppsOnce","then","Details","newApps","updatedApp","catch","setInterval","clearInterval","handleDataChange","appActions","NoOfficialAppClick","lg","fontSize","changeStatus","handleInputChange","location","reload","official_app","filteredApps","filter","paddingTop","i","xxl","Dropdown","Toggle","Menu","align","appStatus","condition","hasDivider","item","Divider","handleClick","paddingRight","showError","deleteApp","AppDetailModal"],"sourceRoot":""} |