@ytsaurus/ui 1.75.1 → 1.77.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/public/build/assets-manifest.json +75 -75
- package/dist/public/build/css/{job.c7c99207.chunk.css → job.9757ff68.chunk.css} +2 -2
- package/dist/public/build/css/job.9757ff68.chunk.css.map +1 -0
- package/dist/public/build/css/main.0efa9da5.css +10 -0
- package/dist/public/build/css/main.0efa9da5.css.map +1 -0
- package/dist/public/build/css/navigation.c199c4f2.chunk.css +2 -0
- package/dist/public/build/css/navigation.c199c4f2.chunk.css.map +1 -0
- package/dist/public/build/js/{1260.534f3f75.chunk.js → 1260.a1e22005.chunk.js} +2 -2
- package/dist/public/build/js/{1260.534f3f75.chunk.js.map → 1260.a1e22005.chunk.js.map} +1 -1
- package/dist/public/build/js/{1879.23423388.chunk.js → 1879.3975650a.chunk.js} +3 -3
- package/dist/public/build/js/{1879.23423388.chunk.js.map → 1879.3975650a.chunk.js.map} +1 -1
- package/dist/public/build/js/{1983.666923be.chunk.js → 1983.64a2e22f.chunk.js} +2 -2
- package/dist/public/build/js/{1983.666923be.chunk.js.map → 1983.64a2e22f.chunk.js.map} +1 -1
- package/dist/public/build/js/{2447.b2877275.chunk.js → 2447.eb8fde89.chunk.js} +2 -2
- package/dist/public/build/js/{2447.b2877275.chunk.js.map → 2447.eb8fde89.chunk.js.map} +1 -1
- package/dist/public/build/js/3724.3e5848f0.chunk.js +2 -0
- package/dist/public/build/js/{3724.425d01ec.chunk.js.map → 3724.3e5848f0.chunk.js.map} +1 -1
- package/dist/public/build/js/6729.39d7cf60.chunk.js +2 -0
- package/dist/public/build/js/6729.39d7cf60.chunk.js.map +1 -0
- package/dist/public/build/js/{7959.95ebd185.chunk.js → 7959.faac2ff8.chunk.js} +2 -2
- package/dist/public/build/js/{7959.95ebd185.chunk.js.map → 7959.faac2ff8.chunk.js.map} +1 -1
- package/dist/public/build/js/{8390.83f4531a.chunk.js → 8390.c3d2de6a.chunk.js} +2 -2
- package/dist/public/build/js/{8390.83f4531a.chunk.js.map → 8390.c3d2de6a.chunk.js.map} +1 -1
- package/dist/public/build/js/{8460.2d4d237e.chunk.js → 8460.fc8e2238.chunk.js} +2 -2
- package/dist/public/build/js/{8460.2d4d237e.chunk.js.map → 8460.fc8e2238.chunk.js.map} +1 -1
- package/dist/public/build/js/{8778.e18e655b.chunk.js → 8778.f3ea089f.chunk.js} +2 -2
- package/dist/public/build/js/{8778.e18e655b.chunk.js.map → 8778.f3ea089f.chunk.js.map} +1 -1
- package/dist/public/build/js/{9558.a6ea64c9.chunk.js → 9558.6a4bf9a9.chunk.js} +2 -2
- package/dist/public/build/js/{9558.a6ea64c9.chunk.js.map → 9558.6a4bf9a9.chunk.js.map} +1 -1
- package/dist/public/build/js/9569.aac48f3b.chunk.js +2 -0
- package/dist/public/build/js/9569.aac48f3b.chunk.js.map +1 -0
- package/dist/public/build/js/{accounts.2ba221c2.chunk.js → accounts.aa7ed73f.chunk.js} +2 -2
- package/dist/public/build/js/accounts.aa7ed73f.chunk.js.map +1 -0
- package/dist/public/build/js/{acl.c948c339.chunk.js → acl.4cd54663.chunk.js} +2 -2
- package/dist/public/build/js/{acl.c948c339.chunk.js.map → acl.4cd54663.chunk.js.map} +1 -1
- package/dist/public/build/js/{app-navigation.b062662b.chunk.js → app-navigation.13c65573.chunk.js} +2 -2
- package/dist/public/build/js/app-navigation.13c65573.chunk.js.map +1 -0
- package/dist/public/build/js/chyt.0ee6bfa2.chunk.js +2 -0
- package/dist/public/build/js/chyt.0ee6bfa2.chunk.js.map +1 -0
- package/dist/public/build/js/cluster-page-wrapper.bdc8607f.chunk.js +2 -0
- package/dist/public/build/js/cluster-page-wrapper.bdc8607f.chunk.js.map +1 -0
- package/dist/public/build/js/{components.bbe331cb.chunk.js → components.b39828bc.chunk.js} +2 -2
- package/dist/public/build/js/components.b39828bc.chunk.js.map +1 -0
- package/dist/public/build/js/job.ea2ba82d.chunk.js +2 -0
- package/dist/public/build/js/job.ea2ba82d.chunk.js.map +1 -0
- package/dist/public/build/js/main.6375dbc6.js +3 -0
- package/dist/public/build/js/main.6375dbc6.js.map +1 -0
- package/dist/public/build/js/manage-tokens.e1e791fc.chunk.js +2 -0
- package/dist/public/build/js/manage-tokens.e1e791fc.chunk.js.map +1 -0
- package/dist/public/build/js/{navigation-flow.eeb01518.chunk.js → navigation-flow.6d67215a.chunk.js} +2 -2
- package/dist/public/build/js/{navigation-flow.eeb01518.chunk.js.map → navigation-flow.6d67215a.chunk.js.map} +1 -1
- package/dist/public/build/js/navigation.529208de.chunk.js +2 -0
- package/dist/public/build/js/navigation.529208de.chunk.js.map +1 -0
- package/dist/public/build/js/odin.c4c4ef6f.chunk.js +2 -0
- package/dist/public/build/js/odin.c4c4ef6f.chunk.js.map +1 -0
- package/dist/public/build/js/{path-viewer.b1b3328d.chunk.js → path-viewer.c091d9f4.chunk.js} +2 -2
- package/dist/public/build/js/{path-viewer.b1b3328d.chunk.js.map → path-viewer.c091d9f4.chunk.js.map} +1 -1
- package/dist/public/build/js/{query-navigation.9964bfcf.chunk.js → query-navigation.b1574290.chunk.js} +2 -2
- package/dist/public/build/js/{query-navigation.9964bfcf.chunk.js.map → query-navigation.b1574290.chunk.js.map} +1 -1
- package/dist/public/build/js/{query-results.733b1795.chunk.js → query-results.0a05cc41.chunk.js} +2 -2
- package/dist/public/build/js/{query-results.733b1795.chunk.js.map → query-results.0a05cc41.chunk.js.map} +1 -1
- package/dist/public/build/js/query-tracker.515069f6.chunk.js +2 -0
- package/dist/public/build/js/query-tracker.515069f6.chunk.js.map +1 -0
- package/dist/public/build/js/{runtime.481a6d3a.js → runtime.09217c31.js} +2 -2
- package/dist/public/build/js/{runtime.481a6d3a.js.map → runtime.09217c31.js.map} +1 -1
- package/dist/public/build/js/{scheduling.b70d4627.chunk.js → scheduling.6448eabd.chunk.js} +2 -2
- package/dist/public/build/js/{scheduling.b70d4627.chunk.js.map → scheduling.6448eabd.chunk.js.map} +1 -1
- package/dist/public/build/js/system.1114aa96.chunk.js +2 -0
- package/dist/public/build/js/system.1114aa96.chunk.js.map +1 -0
- package/dist/public/build/js/{yt-df-dialog.9ddda260.chunk.js → yt-df-dialog.4ad719bf.chunk.js} +2 -2
- package/dist/public/build/js/yt-df-dialog.4ad719bf.chunk.js.map +1 -0
- package/dist/public/build/manifest.json +70 -70
- package/dist/shared/constants/settings-types.d.ts +1 -0
- package/package.json +3 -2
- package/dist/public/build/css/job.c7c99207.chunk.css.map +0 -1
- package/dist/public/build/css/main.2d3cbfcd.css +0 -10
- package/dist/public/build/css/main.2d3cbfcd.css.map +0 -1
- package/dist/public/build/css/navigation.0a9042b3.chunk.css +0 -2
- package/dist/public/build/css/navigation.0a9042b3.chunk.css.map +0 -1
- package/dist/public/build/js/3724.425d01ec.chunk.js +0 -2
- package/dist/public/build/js/5177.b4cec253.chunk.js +0 -2
- package/dist/public/build/js/5177.b4cec253.chunk.js.map +0 -1
- package/dist/public/build/js/6729.da9aa02f.chunk.js +0 -2
- package/dist/public/build/js/6729.da9aa02f.chunk.js.map +0 -1
- package/dist/public/build/js/accounts.2ba221c2.chunk.js.map +0 -1
- package/dist/public/build/js/app-navigation.b062662b.chunk.js.map +0 -1
- package/dist/public/build/js/chyt.7f99f87d.chunk.js +0 -2
- package/dist/public/build/js/chyt.7f99f87d.chunk.js.map +0 -1
- package/dist/public/build/js/cluster-page-wrapper.894fbacc.chunk.js +0 -2
- package/dist/public/build/js/cluster-page-wrapper.894fbacc.chunk.js.map +0 -1
- package/dist/public/build/js/components.bbe331cb.chunk.js.map +0 -1
- package/dist/public/build/js/job.4fc50056.chunk.js +0 -2
- package/dist/public/build/js/job.4fc50056.chunk.js.map +0 -1
- package/dist/public/build/js/main.7981a440.js +0 -3
- package/dist/public/build/js/main.7981a440.js.map +0 -1
- package/dist/public/build/js/manage-tokens.286a4da9.chunk.js +0 -2
- package/dist/public/build/js/manage-tokens.286a4da9.chunk.js.map +0 -1
- package/dist/public/build/js/navigation.d891266d.chunk.js +0 -2
- package/dist/public/build/js/navigation.d891266d.chunk.js.map +0 -1
- package/dist/public/build/js/odin.df1cfe56.chunk.js +0 -2
- package/dist/public/build/js/odin.df1cfe56.chunk.js.map +0 -1
- package/dist/public/build/js/query-tracker.06cc4fdc.chunk.js +0 -2
- package/dist/public/build/js/query-tracker.06cc4fdc.chunk.js.map +0 -1
- package/dist/public/build/js/system.f759d3f0.chunk.js +0 -2
- package/dist/public/build/js/system.f759d3f0.chunk.js.map +0 -1
- package/dist/public/build/js/yt-df-dialog.9ddda260.chunk.js.map +0 -1
- /package/dist/public/build/js/{1879.23423388.chunk.js.LICENSE.txt → 1879.3975650a.chunk.js.LICENSE.txt} +0 -0
- /package/dist/public/build/js/{main.7981a440.js.LICENSE.txt → main.6375dbc6.js.LICENSE.txt} +0 -0
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"js/odin.df1cfe56.chunk.js","mappings":"iOAWMA,GAAQC,EAAAA,EAAAA,GAAG,0BAqBjB,SAASC,EAAoBC,GASlB,IARPC,EAASD,EAATC,UACAC,EAAeF,EAAfE,gBACAC,EAAQH,EAARG,SACAC,EAAKJ,EAALI,MACAC,EAAWL,EAAXK,YACAC,EAAQN,EAARM,SAAQC,EAAAP,EACRQ,gBAAAA,OAAe,IAAAD,EAAG,kBAAM,CAAI,EAAAA,EAC5BE,EAAKT,EAALS,MAEMC,EAAWC,EAAAA,SAAc,WAM3B,OALYC,IAAKC,IAAQC,EAAAA,EAAGJ,SAAUF,IAAkB,SAAAO,GAAA,IAAEC,EAAID,EAAJC,KAAQ,MAAO,CACrEZ,MAD8DW,EAAFE,GAE5DC,KAAMF,EACT,GAGL,GAAG,CAACR,IAEEW,EAAQR,EAAAA,SAAc,WACxB,GAAKT,UAAAA,EAAiBkB,OAClB,OAAOV,EAGX,IAAMW,EAAS,IAAIC,IAAIpB,GACvB,OAAOW,IAAQH,GAAU,SAAAa,GAAc,IAAZnB,EAAKmB,EAALnB,MACvB,OAAQiB,EAAOG,IAAIpB,EACvB,GACJ,GAAG,CAACM,EAAUR,IAERuB,EAAed,EAAAA,aACjB,SAACP,GACGD,EAASC,EAAM,GACnB,GACA,CAACD,IAGL,OACIuB,EAAAA,EAAAA,KAACf,EAAAA,SAAc,CAAAgB,UACXD,EAAAA,EAAAA,KAACE,EAAAA,EAAM,CACHxB,MAAO,CAACA,GACRH,UAAWJ,EAAM,CAACgC,OAAQzB,GAAQH,GAClC6B,SAAUL,EACVN,MAAOA,EACPd,YAAaA,QAAAA,EAAe,aAC5BC,SAAUA,EACVG,MAAOA,KAIvB,CAEAV,EAAqBgC,gBAAkB,WACnC,MAAO,EACX,EAEAhC,EAAqBiC,QAAU,SAAC5B,GAC5B,OAAQA,CACZ,EAEA,S,gKCjFaP,GAAQC,EAAAA,EAAAA,GAAG,qBAEjB,SAASmC,EAAqBC,GAA+D,IAAnCC,EAA2BC,UAAAhB,OAAA,QAAAiB,IAAAD,UAAA,GAAAA,UAAA,GAAG,GACrFE,EAAwB,GACxBC,EAAsB,GACtBC,EAAyB,GACzBC,EAA6B,GACnCC,IAASR,GAAO,SAACS,GACb,IAAOC,EAAwDD,EAAxDC,eAAgBC,EAAwCF,EAAxCE,YAAaC,EAA2BH,EAA3BG,WAAYC,EAAeJ,EAAfI,YAC5CH,EACAH,EAAaO,KAAKL,GACXI,EACPP,EAASQ,KAAKL,GACPG,GAAcD,EACrBN,EAAMS,KAAKL,GAEXL,EAAQU,KAAKL,EAErB,IAEA,IAAMM,EAAaX,EAAQY,KAAI,SAACP,GAAI,OAAKQ,EAAqBR,EAAK,IAC7DS,EAAWjB,EAAae,KAAI,SAACP,GAAI,MAAM,CACzCU,MAAOV,EACPW,KAAM,CAAC,EACPC,QAAQ,EACX,IAED,MAAO,CACHC,SAAU,GACVlB,QAAS,CAACe,MAAO,UAAWC,KAAML,EAAWQ,OAAOL,IACpDb,MAAO,CACHc,MAAO,gBACPK,cAAe7D,EAAM,eACrByD,KAAMf,EAAMW,KAAI,SAACP,GAAI,OAAKQ,EAAqBR,EAAM,CAACY,QAAQ,GAAM,KAExEf,SAAU,CACNa,MAAO,kBACPK,cAAe7D,EAAM,kBACrByD,KAAMd,EAASU,KAAI,SAACP,GAAI,OAAKQ,EAAqBR,EAAM,CAACY,QAAQ,GAAM,KAE3Ed,aAAc,CACVY,MAAO,eACPK,cAAe7D,EAAM,qBACrByD,KAAMb,EAAaS,KAAI,SAACP,GAAI,OAAKQ,EAAqBR,EAAM,CAACY,QAAQ,GAAM,KAGvF,CAEA,SAASJ,EAAqBQ,GAA2C,IAAvBC,EAAexB,UAAAhB,OAAA,QAAAiB,IAAAD,UAAA,GAAAA,UAAA,GAAG,CAAC,EACjE,OAAAyB,EAAAA,EAAAA,GAAA,CACIR,MAAOM,EAAKzC,MAAQyC,EAAKvD,MACzBkD,KAAMK,GACHC,EAEX,CAEO,SAASE,EACZ1D,GAEA,IAAOkC,EAA4BlC,EAA5BkC,QAASkB,EAAmBpD,EAAnBoD,SAAUjB,EAASnC,EAATmC,MAC1B,MAAM,GAANkB,QAAAM,EAAAA,EAAAA,GACOP,IAAQO,EAAAA,EAAAA,GACRC,EAA8B1B,KAAQyB,EAAAA,EAAAA,GACtCC,EAA8BzB,IAEzC,CAEA,SAASyB,EACLC,GAEA,IAAOX,GAAQW,GAAoB,CAAC,GAA7BX,KACP,OAAO1C,IACHC,IAAQyC,GAAM,SAAAvC,GAAS,OAAAA,EAAPmD,OAAqB,KACrC,SAAA3C,GAAa,IACT4C,EADE5C,EAAJ+B,MACgC,CAAC,EAC/B,MAAO,CAACc,KADGD,EAAJC,KACchE,MADH+D,EAAL/D,MAEjB,GAER,CAEO,SAASiE,EAAuBjE,GAOnC,IAAOkC,EAAqBlC,EAArBkC,QACDgC,EADsBlE,EAAZoD,UACU,GACpBU,GAAY5B,GAAWA,EAAQgB,MAAS,IAAIiB,QAAO,SAAAC,GAAS,OAAAA,EAAPN,OAAoB,IAC/E,MAAO,CACHI,MAAOA,EAAMpB,KAAI,SAAAuB,GAAoB,IAAlBL,EAAIK,EAAJL,KAAMhE,EAAKqE,EAALrE,MACrB,MAAgB,UAATgE,EAAmB,CAACM,KAAMtE,GAAS,CAACuE,MAAOvE,EACtD,IACA8D,QAASA,EAAQhB,KAAI,SAAA0B,GAAa,IAC9BC,EADuBD,EAAJtB,MACW,CAAC,EAAxBlD,EAAKyE,EAALzE,MACP,MAAgB,UADEyE,EAAJT,KACY,CAACM,KAAMtE,GAAU,CAACuE,MAAOvE,EACvD,IAER,C,sRCnGMP,GAAQC,EAAAA,EAAAA,GAAG,mBAEV,SAASgF,EAAYC,GACxB,OAAOrD,EAAAA,EAAAA,KAACsD,EAAAA,GAAKnB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAKkB,GAAK,IAAE9E,UAAWJ,MACxC,CAEO,SAASoF,EAAgBC,GAC5B,OAAOC,IACHvE,IAAKsE,GAAQ,SAACE,EAAOC,GACjB,OAAOD,EACD,CACIpE,KAAK,SAADyC,OAAW4B,GACfjB,KAAM,QACNkB,OAAQ,CACJ3D,UAAUD,EAAAA,EAAAA,KAACoD,EAAW,CAACM,MAAOA,WAGtC/C,CACV,IAER,CAEA,IAAMkD,EAAmC,wBAElC,SAASC,EAAoBJ,GAChC,MAAO,CACHK,kBAAgBC,EAAAA,EAAAA,GAAA,GACXH,GAAa7D,EAAAA,EAAAA,KAACoD,EAAW,CAACM,MAAOA,KAG9C,C,eC3BO,SAASO,IACZ,OAAO,gTACX,CAEO,ICVyDC,EDUnDC,GCVmDD,GDW5DE,EAAAA,EAAAA,GACInF,EAAAA,MAAUoF,EAAAA,EAAAA,GAAAC,IAAAA,MAAC,SAAAC,IAAA,OAAAD,IAAAA,MAAA,SAAAE,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EACiBT,IAAkB,OAAU,OAAVO,EAAAG,GAAAH,EAAAI,KAAEC,SAAQL,EAAAM,OAAA,kBAAAN,EAAAG,KAAA,wBAAAH,EAAAO,OAAA,GAAAR,EAAA,MAExD,ICdG,SAA6BlB,GAChC,IAAA2B,EAA8B/F,EAAAA,UAAe,GAAMgG,GAAAC,EAAAA,EAAAA,GAAAF,EAAA,GAA5CG,EAAOF,EAAA,GAAEG,EAAUH,EAAA,GAM1B,OALAhG,EAAAA,WAAgB,YACPkG,GAAW9B,EAAMgC,SAClBD,GAAW,EAEnB,GAAG,CAAC/B,EAAMgC,QAASF,IACXA,GAAiBnF,EAAAA,EAAAA,KAACkE,GAAS/B,EAAAA,EAAAA,GAAA,GAAKkB,IAAtB,IACtB,IDsB2Be,EAAAA,EAAAA,GAC3BnF,EAAAA,MAAUoF,EAAAA,EAAAA,GAAAC,IAAAA,MAAC,SAAAgB,IAAA,OAAAhB,IAAAA,MAAA,SAAAiB,GAAA,cAAAA,EAAAd,KAAAc,EAAAb,MAAA,cAAAa,EAAAb,KAAA,EACiBT,IAAkB,OAAiB,OAAjBsB,EAAAZ,GAAAY,EAAAX,KAAEY,gBAAeD,EAAAT,OAAA,kBAAAS,EAAAZ,KAAA,wBAAAY,EAAAR,OAAA,GAAAO,EAAA,MAE/D,IAJG,IAOMG,GAAerB,EAAAA,EAAAA,GACxBnF,EAAAA,MAAUoF,EAAAA,EAAAA,GAAAC,IAAAA,MAAC,SAAAoB,IAAA,OAAApB,IAAAA,MAAA,SAAAqB,GAAA,cAAAA,EAAAlB,KAAAkB,EAAAjB,MAAA,cAAAiB,EAAAjB,KAAA,EACiBT,IAAkB,OAAc,OAAd0B,EAAAhB,GAAAgB,EAAAf,KAAEa,aAAYE,EAAAb,OAAA,kBAAAa,EAAAhB,KAAA,wBAAAgB,EAAAZ,OAAA,GAAAW,EAAA,MAE5D,IAGSE,GAAmBxB,EAAAA,EAAAA,GAC5BnF,EAAAA,MAAUoF,EAAAA,EAAAA,GAAAC,IAAAA,MAAC,SAAAuB,IAAA,OAAAvB,IAAAA,MAAA,SAAAwB,GAAA,cAAAA,EAAArB,KAAAqB,EAAApB,MAAA,cAAAoB,EAAApB,KAAA,EACiBT,IAAkB,OAAkB,OAAlB6B,EAAAnB,GAAAmB,EAAAlB,KAAEgB,iBAAgBE,EAAAhB,OAAA,kBAAAgB,EAAAnB,KAAA,wBAAAmB,EAAAf,OAAA,GAAAc,EAAA,MAEhE,G,qJEhDEE,EAAU,IAAIC,EAAAA,EAUCC,EAAe,SAAAC,IAAAC,EAAAA,EAAAA,GAAAF,EAAAC,GAAA,IAAAE,GAAAC,EAAAA,EAAAA,GAAAJ,GAAA,SAAAA,IAAA,OAAAK,EAAAA,EAAAA,GAAA,KAAAL,GAAAG,EAAAG,MAAA,KAAA7F,UAAA,CA+B/B,OA/B+B8F,EAAAA,EAAAA,GAAAP,EAAA,EAAAQ,IAAA,qBAAA/H,MAChC,WACI,IAAAgI,EAAmCC,KAAKtD,MAAjCK,EAAKgD,EAALhD,MAAOkD,EAAMF,EAANE,OAAQC,EAASH,EAATG,UAElBnD,GAASkD,GACTb,EAAQe,IAAI,CACRC,MAAO,SACPzH,KAAM,UACN0H,WAAY,IACZrF,MAAO,8BACPsF,QAASJ,EAAaA,EAAsBK,QAAUC,EAAAA,EAAOC,OAAOC,SACpEC,QAAS,CACL,CACIC,MAAO,QACPC,QAAS,kBAAMC,EAAAA,EAAAA,IAAeZ,EAAqB,KAKvE,GAAC,CAAAJ,IAAA,SAAA/H,MAED,WACI,IAAAgJ,EAAsEf,KAAKtD,MAAKsE,EAAAD,EAAzEE,gBAAAA,OAAe,IAAAD,GAAQA,EAAEjE,EAAKgE,EAALhE,MAAOmD,EAASa,EAATb,UAAWD,EAAMc,EAANd,OAAQ3G,EAAQyH,EAARzH,SAI1D,OAAIyD,IAAUkE,GAFUhB,EAMjB3G,GAHID,EAAAA,EAAAA,KAAC6H,EAAAA,EAAK,CAACnE,MAAOmD,GAI7B,KAACZ,CAAA,CA/B+B,CAAS/B,EAAAA,U,iHCVvC/F,GAAQC,EAAAA,EAAAA,GAAG,oBAEF,SAAS0J,EAAOxJ,GAM3B,IAADyJ,EAAAzJ,EALCyI,MAAAA,OAAK,IAAAgB,EAAG,UAASA,EAAAC,EAAA1J,EACjB2J,UAAAA,OAAS,IAAAD,GAAQA,EACjBE,EAAe5J,EAAf4J,gBACAjB,EAAO3I,EAAP2I,QACAkB,EAAO7J,EAAP6J,QAEA,OACIC,EAAAA,EAAAA,MAAA,OAAK7J,UAAWJ,EAAM,CAAC4I,MAAAA,IAAQ9G,SAAA,CAC1BgI,IACGjI,EAAAA,EAAAA,KAAA,OAAKzB,UAAWJ,EAAM,SAAS8B,UAC3BD,EAAAA,EAAAA,KAACqI,EAAAA,EAAM,CAACC,KAAK,IAAIC,KAAK,iBAAiB5G,MAAM,QAAQ6F,QAASU,EAAgBjI,UAC1ED,EAAAA,EAAAA,KAACwI,EAAAA,EAAI,CAAC9F,KAAK,cAKtBzD,EAAAA,eAAqBgI,GAChB,CAACA,QAAAA,GACD/H,IAAK+H,GAAS,SAACrF,EAAM+B,GAAK,OACtB3D,EAAAA,EAAAA,KAAA,KAAezB,UAAWJ,EAAM,aAAa8B,SACxC2B,GADG+B,EAEJ,IAGbwE,IACGnI,EAAAA,EAAAA,KAAA,OAAKzB,UAAWJ,EAAM,WAAW8B,SAC5Bf,IAAKiJ,GAAS,SAACM,GAAM,OAClBzI,EAAAA,EAAAA,KAAA,QAAMzB,UAAWJ,EAAM,UAAU8B,UAC7BD,EAAAA,EAAAA,KAACqI,EAAAA,EAAM,CAACC,KAAK,IAAI3G,MAAO8G,EAAOjJ,KAAMgI,QAASiB,EAAOC,SAASzI,SACzDwI,EAAOjJ,QAFuBiJ,EAAOjJ,KAIvC,QAM/B,C,gFC3CiCmJ,EAAAA,C,wKCO3BxK,GAAQC,EAAAA,EAAAA,GAAG,mBAWXwK,GAAqC5E,EAAAA,EAAAA,GAAA,GACtC6E,EAAAA,GAAKC,mBAAqB,CAACxJ,KAAM,YAG/B,SAASyJ,EAAWzK,GAAqE,IAAnE0K,EAAI1K,EAAJ0K,KAAM1J,EAAIhB,EAAJgB,KAAMf,EAASD,EAATC,UAAW0B,EAAQ3B,EAAR2B,SAAUgJ,EAAY3K,EAAZ2K,aAAcC,EAAS5K,EAAT4K,UAClEC,GAAUC,EAAAA,EAAAA,IAAYC,EAAAA,IACtBC,GAAOF,EAAAA,EAAAA,IAAYG,EAAAA,IAAqBP,IAASJ,EAAMI,GACvDrH,EAAQrC,IAAQgK,aAAI,EAAJA,EAAMhK,MACtBkK,GAAMC,EAAAA,EAAAA,IAAc,IAAD1H,OAAKoH,EAAO,KAAApH,OAAIiH,GAAQE,GACjD,OACId,EAAAA,EAAAA,MAAA,OAAK7J,UAAWJ,EAAM,KAAMI,GAAW0B,SAAA,CAClC0B,IACG3B,EAAAA,EAAAA,KAAA,MAAIzB,UAAWJ,EAAM,QAAQ8B,UACzBD,EAAAA,EAAAA,KAAC0J,EAAAA,EAAI,CAACC,QAAM,EAAC5C,MAAO,UAAWyC,IAAKA,EAAIvJ,SACnC0B,MAIZsH,IAAgBjJ,EAAAA,EAAAA,KAAA,OAAKzB,UAAWJ,EAAM,YACtC8B,IAGb,CAEA,IAAM2J,EAAkB3K,EAAAA,KAAW8J,GAEpB,SAASc,EAAWxK,GAM/B,IALAd,EAASc,EAATd,UACA0B,EAAQZ,EAARY,SAMa+I,GACTc,EAAAA,EAAAA,MADAC,OAASf,KAGb,OACIhJ,EAAAA,EAAAA,KAAC4J,EAAe,CAACrL,UAAWA,EAAWyK,KAAMA,EAAK/I,SAC7CA,GAGb,C,iQChDM+J,GAAI7L,EAAAA,EAAAA,GAAM,gBAkCV8L,EAA6C,CAC/CC,iBAAkB,CAAC,EACnBC,eAAgB,IAAIvK,KAOxB,SAASwK,EAAQC,EAA6BC,GAC1C,OAAQA,EAAO5H,MACX,IAAK,oBACD,OAAAP,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAWkI,GAAK,IAAEH,kBAAgB/H,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAMkI,EAAMH,kBAAqBI,EAAO1I,QAC9E,IAAK,sBAED,OADAZ,IAASsJ,EAAO1I,MAAM,SAAC2I,GAAI,OAAKF,EAAMF,eAAerD,IAAIyD,EAAK,KAC9DpI,EAAAA,EAAAA,GAAA,GAAWkI,GACf,QACI,OAAOA,EAEnB,CAqCO,SAASG,EAAWlM,GAAkC,IAAhCmM,EAAUnM,EAAVmM,WAAYC,EAASpM,EAAToM,UAC/BjL,EApCV,SAAsBA,GAClB,IAAAkL,EAAuD1L,EAAAA,WACnDmL,EACAH,GACHW,GAAA1F,EAAAA,EAAAA,GAAAyF,EAAA,GAAAE,EAAAD,EAAA,GAHOV,EAAgBW,EAAhBX,iBAAkBC,EAAcU,EAAdV,eAAiBW,EAAQF,EAAA,GAKnDG,EAAwB9L,EAAAA,SAAc,WAClC,OAAO+L,IAAWvL,GAAO,SAACwB,GACtB,OAAQA,EAAKgK,YAAcf,EAAiBjJ,EAAKsJ,KACrD,GACJ,GAAG,CAAC9K,EAAOyK,IAAkBgB,GAAAhG,EAAAA,EAAAA,GAAA6F,EAAA,GAJtB1F,EAAO6F,EAAA,GAAEC,EAAID,EAAA,GA0BpB,OApBAjM,EAAAA,WAAgB,WACZ,IAAMmM,EAAYjM,IAAQgM,GAAM,SAAClK,GAAI,OAAMkJ,EAAerK,IAAImB,EAAKsJ,KAAK,IAExE,GAAKa,EAAU1L,OAAf,CAIAoL,EAAS,CAACpI,KAAM,sBAAuBd,KAAM1C,IAAKkM,GAAW,SAACnK,GAAI,OAAKA,EAAKsJ,IAAI,MAChF,IAAMc,EAAqC,CAAC,EAC5CC,QAAQC,IACJrM,IAAKkM,GAAW,SAACnK,GACb,OAlEhB,SAAkCA,GAC9B,OAAKA,EAAKgK,YAIHO,EAAAA,EAAAA,IAAwBvK,EAAKgK,aAAc,CAC9CQ,YAAa,wBAA0BxK,EAAKsJ,KAC5CmB,kBAAkB,EAClBC,cAAcvD,EAAAA,EAAAA,MAAA,QAAAnI,SAAA,CAAM,2BAAyBgB,EAAKsJ,KAAK,UAEtDqB,MAAK,SAACvG,GACH,OAAOA,CACX,IAAE,OACK,WACH,OAAO,CACX,IAbOiG,QAAQO,SAAQ,EAc/B,CAkDuBC,CAAyB7K,GAAM2K,MAAK,SAAClN,GACxC2M,EAAUpK,EAAKsJ,MAAQ7L,CAC3B,GACJ,KACFkN,MAAK,WACHd,EAAS,CAACpI,KAAM,oBAAqBd,KAAMyJ,GAC/C,GAZA,CAaJ,GAAG,CAACF,IAEG9F,CACX,CAGkB0G,CAAaC,EAAAA,IAC3BC,EAA2BhN,EAAAA,SACvB,kBAAM+L,IAAWvL,GAAO,SAAAJ,GAAM,OAAAA,EAAJkL,OAAmBE,CAAU,GAAC,GACxD,CAAChL,EAAOgL,IACXyB,GAAAhH,EAAAA,EAAAA,GAAA+G,EAAA,GAHMrD,EAAKsD,EAAA,GAAGtL,GAAHsE,EAAAA,EAAAA,GAAAgH,EAAA,MAAU,GAKtB,OACI9D,EAAAA,EAAAA,MAACnJ,EAAAA,SAAc,CAAAgB,SAAA,CACVyK,GAAayB,QAAQvL,KAAYZ,EAAAA,EAAAA,KAAA,OAAKzB,UAAWyL,EAAE,aAAa/J,SAAEW,EAAQpB,QAC3EQ,EAAAA,EAAAA,KAAA,OAAKzB,UAAWyL,EAAE,QAAS,CAACjD,MAAO,aAAa9G,UAC5CD,EAAAA,EAAAA,KAAA,MAAIzB,UAAWyL,EAAE,cAAc7L,EAAAA,EAAAA,GAAM,gBAANA,CAAuB,CAACuE,KAAM,cAAczC,SACtEf,IAAK0J,GAAO,SAACwD,GAAI,OACdpM,EAAAA,EAAAA,KAAA,MAAAC,UACID,EAAAA,EAAAA,KAAC0J,EAAAA,EAAI,CAACC,OAAQyC,EAAKzC,OAAQH,IAAK4C,EAAK7B,KAAMhM,UAAWyL,EAAE,cAAc/J,SACjEmM,EAAK5M,QAFL4M,EAAK5M,KAIT,SAIjBQ,EAAAA,EAAAA,KAAA,OAAKzB,UAAWyL,EAAE,QAAS,CAACjD,MAAO,cAAc9G,UAC7CD,EAAAA,EAAAA,KAACqM,EAAAA,EAAY,CACTC,WAAY,CAAC/N,UAAWyL,EAAE,UAC1BuC,UACInE,EAAAA,EAAAA,MAACC,EAAAA,EAAM,CAAApI,SAAA,CAAC,UAEJD,EAAAA,EAAAA,KAACwI,EAAAA,EAAI,CAACgE,QAAS,oBAGvB/M,MAAOP,IAAKO,GAAO,SAACwB,GAChB,OAAAkB,EAAAA,EAAAA,GAAA,CAAQmI,OAAM,WAAI,GAAMrJ,EAC5B,IACAqH,KAAM,UAK1B,CAOA,SAASmE,EAAU5M,GAAuE,IAArE4K,EAAU5K,EAAV4K,WAAYC,EAAS7K,EAAT6K,UAC7B,OACI1K,EAAAA,EAAAA,KAAA,OAAKzB,UAAWyL,EAAE,SAAU,yBAAyB/J,UACjDD,EAAAA,EAAAA,KAACwK,EAAW,CAACC,WAAYA,EAAYC,UAAWA,KAG5D,CAEO,IAAMgC,EAAkBzN,EAAAA,KAAWwN,E,oKC7J7BE,EAAO,WAUhB,SAAAA,EAAYjE,EAAyBkE,EAAiBC,GAAkC,IAADC,EAAA,MAAAxG,EAAAA,EAAAA,GAAA,KAAAqG,GAAA,KAT/EjE,cAAQ,OACRkE,aAAO,OACPG,aAAO,OAEPC,YAAa,EAAM,KACnBC,aAAe,EAAE,KACjBpL,QAAS,EAAM,KACfqL,aAAO,OAmBPC,mBAAqB,WACrBC,SAASC,OACTP,EAAKQ,SAELR,EAAKS,UAEb,EAAE,KAEMD,OAAS,WACbR,EAAKjL,QAAS,CAClB,EAAE,KAEM0L,SAAW,WACfT,EAAKjL,QAAS,GACTiL,EAAKE,YAAcQ,KAAKC,MAAQX,EAAKG,cAAgBH,EAAKF,SAC3DE,EAAKY,QAEb,EAAE,KAEMA,QAAMrJ,EAAAA,EAAAA,GAAAC,IAAAA,MAAG,SAAAC,IAAA,IAAAoJ,EAAAC,EAAA,OAAAtJ,IAAAA,MAAA,SAAAE,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OACqB,GAAlCmJ,OAAOC,aAAahB,EAAKI,UAErBJ,EAAKjL,OAAO,CAAD2C,EAAAE,KAAA,eAAAF,EAAAM,OAAA,iBAKY,GALZN,EAAAC,KAAA,EAKXqI,EAAKE,YAAa,EACQ,IAAtBF,EAAKG,cAAmC,QAAbU,EAACb,EAAKC,eAAO,IAAAY,GAAZA,EAAcI,kBAAiB,CAAAvJ,EAAAE,KAAA,eAAAF,EAAAE,KAAA,EACxC,QADwCkJ,EACrDd,EAAKpE,gBAAQ,IAAAkF,OAAA,EAAbA,EAAAI,KAAAlB,GAAkB,KAAD,EAKiC,OALjCtI,EAAAC,KAAA,EAG3BqI,EAAKE,YAAa,EAClBF,EAAKG,aAAeO,KAAKC,MACzBX,EAAKI,QAAUW,OAAOI,WAAWnB,EAAKY,OAAQZ,EAAKF,SAASpI,EAAA0J,OAAA,4BAAA1J,EAAAO,OAAA,GAAAR,EAAA,sBAlDhEoC,KAAK+B,SAAWA,EAChB/B,KAAKiG,QAAUuB,KAAKC,IAAI,IAAMxB,GAC9BjG,KAAKoG,QAAUF,EAEfO,SAASiB,iBAAiB,mBAAoB1H,KAAKwG,oBAEnDxG,KAAK+G,QACT,CAOC,OAPAlH,EAAAA,EAAAA,GAAAmG,EAAA,EAAAlG,IAAA,UAAA/H,MAED,WACI0O,SAASkB,oBAAoB,mBAAoB3H,KAAKwG,oBACtDU,OAAOC,aAAanH,KAAKuG,gBAClBvG,KAAK+B,gBACL/B,KAAKoG,OAChB,KAACJ,CAAA,CAzBe,G,WCGP4B,EAA0B,IAiBhC,SAASC,EACZC,GAED,IAADnQ,EAAAoC,UAAAhB,OAAA,QAAAiB,IAAAD,UAAA,GAAAA,UAAA,GADiF,CAAC,EAACgO,EAAApQ,EAAhFsO,QAAAA,OAAO,IAAA8B,EAAGH,EAAuBG,EAAEC,EAAUrQ,EAAVqQ,WAAYC,EAAQtQ,EAARsQ,SAE1CC,GAAiBzF,EAAAA,EAAAA,IAAY0F,EAAAA,IAC7BC,EAAa9P,EAAAA,OAAa,CAAC+P,cAAeH,IAEhDE,EAAWnO,QAAQoO,cAAgBH,EAEnC5P,EAAAA,WAAgB,WACZ,IAAIgQ,EAaJ,OAZIL,EACAH,SAAAA,IAEAQ,EAAUR,EACJ,IAAI9B,EAAQ8B,EAAI7B,EAAS,CACrBmB,gBAAe,WACX,OAAOgB,EAAWnO,QAAQoO,YAC9B,SAEJrO,EAGH,WAAO,IAADuO,EACF,QAAPA,EAAAD,SAAO,IAAAC,GAAPA,EAASC,UACTR,SAAAA,GACJ,CACJ,GAAG,CAACF,EAAI7B,EAAS+B,EAAYC,GACjC,CAEO,SAASQ,EACZX,EACA1B,GAED,IAAD,IAAAsC,EAAA3O,UAAAhB,OADK4P,EAAI,IAAAC,MAAAF,EAAA,EAAAA,EAAA,KAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAJF,EAAIE,EAAA,GAAA9O,UAAA8O,GAEP,IAAMzF,EAAS0F,EAAkBlJ,WAAC,EAAG+I,GAMrCd,EAJiBvP,EAAAA,aAAkB,WAC/BwP,SAAAA,EAAElI,WAAA,GAAAlE,EAAAA,EAAAA,GAAM0H,GACZ,GAAG,CAAC0E,EAAI1E,IAEagD,EACzB,CAEO,SAAS0C,IAAkE,IAAD,IAAAC,EAAAhP,UAAAhB,OAAb4P,EAAI,IAAAC,MAAAG,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJL,EAAIK,GAAAjP,UAAAiP,GACpE,IAAMC,EAAM3Q,EAAAA,OAAoBqQ,GAShC,OAPerQ,EAAAA,SAAc,WAIzB,OAHK4Q,IAASD,EAAIhP,QAAS0O,KACvBM,EAAIhP,QAAU0O,GAEXM,EAAIhP,OACf,GAAG,CAAC0O,GAGR,C,wYC9EA,QADuB,SAAAjM,GAAK,OAAIrD,EAAAA,EAAAA,KAAA,OAAAmC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CAAK2N,MAAM,6BAA6BC,KAAK,OAAOC,QAAQ,aAAgB3M,GAAK,IAAApD,UAAED,EAAAA,EAAAA,KAAA,QAAM+P,KAAK,eAAeE,SAAS,UAAUC,EAAE,mIAAmIC,SAAS,cAAmB,E,0BCCjU,MAEA,EAFkB9M,GAAW,gBAAoB,MAAO+M,OAAOC,OAAO,CAAEP,MAAO,6BAA8B/Q,MAAO,GAAIuR,OAAQ,GAAIP,KAAM,OAAQC,QAAS,aAAe3M,GACtK,gBAAoB,OAAQ,CAAE0M,KAAM,eAAgBE,SAAU,UAAWC,EAAG,uUAAwUC,SAAU,aCCla,EAFe9M,GAAW,gBAAoB,MAAO+M,OAAOC,OAAO,CAAEP,MAAO,6BAA8B/Q,MAAO,GAAIuR,OAAQ,GAAIP,KAAM,OAAQC,QAAS,aAAe3M,GACnK,gBAAoB,OAAQ,CAAE0M,KAAM,eAAgBE,SAAU,UAAWC,EAAG,8KAA+KC,SAAU,a,2DCGzQ,MAAMnG,GAAI,E,SAAA,IAAM,gBACT,SAASuG,GAAY,KAAEjI,EAAO,GAAE,UAAEkI,EAAY,SAAQ,UAAEjS,EAAS,GAAEkS,IACtE,OAAQ,gBAAoB,OAAQ,CAAEC,MAAO,CAAE3R,MAAOuJ,EAAMgI,OAAQhI,GAAQ/J,UAAWyL,EAAE,CAAEwG,aAAajS,GAAY,UAAWkS,GAC3H,gBAAoBjI,EAAAmI,EAAM,CAAE/O,KAAMgP,EAAA,EAAatI,KAAMA,IAC7D,CCRO,MAAMuI,EAAY,UACZ1S,GAAQ,E,SAAA2S,YAAW,CAAEC,EAAGF,EAAWG,EAAG,KAAMC,EAAG,M,2dCE/CC,GAAO,EAAAC,EAAA,GAAoB,CAAEC,GAAE,KAAI,GAAI,GAAGP,aCDjDQ,EAA0B,uCAyGhC,SAASC,EAAgCC,EAAMC,GAC3C,MAAMC,EAAgBD,EAAeE,QAAQH,GAAQ,EAErD,GADmBE,IAAkBD,EAAe9R,OAWpD,MAPqB,CACjBiS,KAAM,GACNC,OAAQV,EAAK,yBACbW,SAAUX,EAAK,2BACfY,MAAOZ,EAAK,yBAECM,EAAeC,GAEpC,C,eCzHO,SAASM,EAAerT,EAAOsT,EAAUC,GAC5C,OAAID,GAAYtT,EAAMwT,SAASF,GACpBA,EAEPC,GAAYA,EAASC,SAASxT,GACvBuT,EAEJvT,CACX,CA8BO,MAAMyT,GAAkB,CAAC,OAAQ,SAAU,WAAY,SC5BxD,GAAIhU,EAAM,YACHiU,GAAe,cAAiB,SAAkB/O,EAAOuM,GAClE,MAAM,MAAEvF,GAAUhH,GACZ,cAAEgP,EAAa,gBAAEC,EAAe,gBAAEC,EAAe,oBAAEC,GFTtD,SAA0BnP,EAAOgH,GACpC,MAAM1I,EAAuB,UAAf0I,EAAMkH,MAAmC,aAAflH,EAAMkH,KACxC,GAAGlH,EAAMoI,UAAUC,YAAYrI,EAAMsI,QAAQD,SAC7CrI,EAAMuI,YAAYxL,OAAsB,SAAfiD,EAAMkH,KAAkB,YAAc,SAC/D,iBAAEsB,IAAqB,EAAAC,EAAA,GAAe,CACxCC,cAAe1P,EAAM2P,QACrBC,aAAc5P,EAAM6P,SAElBb,EAAgBjC,OAAOC,OAAO,CAAEpO,KAAM,QAAS1C,GAAI8D,EAAM9D,GAAI,aAAc,CAAC8D,EAAM,cAAe1B,GAAOkB,OAAOsJ,SAASgH,KAAK,MAAO,kBAAmB9P,EAAM,yBAAsB1C,EAAW,mBAAoB0C,EAAM,0BAAuB1C,EAAW,eAAgB0C,EAAM,sBAAmB1C,EAAW,gBAAiB0J,EAAMzL,eAAY+B,GAAakS,GAC9VO,EAAY/I,EAAMmH,eAAeE,QAAQrH,EAAMkH,MAC/C8B,EAAaD,EAAY,IAAM/I,EAAMmH,eAAe9R,OACpD4T,EAAiBF,EAAY,IAAM/I,EAAMmH,eAAe9R,OACxD6T,EAAelJ,EAAMzL,UAAYyU,EACjCf,EAAkB,CACpB1T,SAAUyL,EAAMzL,SAEhBL,UAAWgV,EAAelC,OAA0B1Q,EACpD6G,QAAS+L,OACH5S,EACA,KACE0J,EAAMmJ,UACFF,GACAjJ,EAAMoJ,YAAW,EACrB,EAERvR,WAAY,CACR,gBAAiBqR,EAAe,YAAS5S,EACzC,mBAAoB2Q,EAAgCjH,EAAMkH,KAAMlH,EAAMmH,gBACtE,YAAa,UAEjBvR,SAAU0B,GAER+R,EAAkB,UAAa,GAC/BC,EAAmBtJ,EAAMzL,UAAYyL,EAAMuJ,wBACjD,mBAAsB,KACdD,GAAoBD,EAAgB9S,UACpC8S,EAAgB9S,SAAU,EAC1ByJ,EAAMoJ,YAAW,GACrB,IAEJ,MAAMjB,EAAsB,CACxB5T,SAAUyL,EAAMzL,SAEhBL,UAAWoV,EAAmBtC,OAA0B1Q,EACxD6G,QAASmM,OACHhT,EACA,KACE0J,EAAMwJ,mBAAmB,EAEjCb,QAASW,OACHhT,EACA,KACE+S,EAAgB9S,SAAU,CAAI,EAEtCsS,OAAQS,OACFhT,EACA,KACE+S,EAAgB9S,SAAU,CAAK,EAEvCsB,WAAY,CACR,aAAcgP,EAAK,YACnB,gBAAiByC,EAAmB,YAAShT,IAG/CmT,EAAc,UAAa,GAC3BC,EAAe1J,EAAMzL,UAAYyL,EAAM2J,oBA+B7C,OA9BA,mBAAsB,KACdD,GAAgBD,EAAYlT,UAC5BkT,EAAYlT,SAAU,EACtByJ,EAAMoJ,YAAW,GACrB,IA0BG,CACHpB,gBACAC,kBACAC,gBA3BoB,CACpB3T,SAAUyL,EAAMzL,SAEhBL,UAAWwV,EAAe1C,OAA0B1Q,EACpD6G,QAASuM,OACHpT,EACA,KACE0J,EAAM4J,eAAe,EAE7BjB,QAASe,OACHpT,EACA,KACEmT,EAAYlT,SAAU,CAAI,EAElCsS,OAAQa,OACFpT,EACA,KACEmT,EAAYlT,SAAU,CAAK,EAEnCsB,WAAY,CACR,aAAcgP,EAAK,QACnB,gBAAiByC,EAAmB,YAAShT,IAOjD6R,sBAER,CE7FqF0B,CAAiB7Q,EAAOgH,GAMzG,OALA,sBAA0BuF,GAAK,KAAM,CACjC,KAAAuE,GACI9J,EAAMoJ,YAAW,EACrB,OAEI,UAAM,MAAOrD,OAAOC,OAAO,CAAC,EAAGgC,EAAe,CAAE9T,UAAW,GAAE,CAAE+J,KAAMjF,EAAMiF,OAASrI,SAAU,EAAC,UAAM,MAAO,CAAE1B,UAAW,GAAE,UAAW0B,SAAU,EAAC,SAAKoI,EAAA,EAAQ+H,OAAOC,OAAO,CAAC,EAAGiC,EAAiB,CAAE/J,KAAM,OAAQD,KAAMjF,EAAMiF,KAAMrI,SAAUoK,EAAMmH,eAAeE,QAAQrH,EAAMkH,MAAQ,IACxQlH,EAAMmH,eAAe9R,QAAU,SAAK,OAAQ,CAAEnB,UAAW,GAAE,aAAc,GAAE,gBAAiB0B,SAAUqS,EAAgBrS,UAAY,SAAY,EAC9I,SAAK,OAAQ,CAAE1B,UAAW,GAAE,cAAe0B,SAAUqS,EAAgBrS,UAAY,UACjF,SAAKoI,EAAA,EAAOG,KAAM,CAAEvI,UAAU,SAAKsQ,EAAa,CAAEC,UAAW,YAAe,aACxE,UAAM,MAAO,CAAEjS,UAAW,GAAE,YAAa0B,SAAU,EAAC,SAAKoI,EAAA,EAAQ+H,OAAOC,OAAO,CAAC,EAAGmC,EAAqB,CAAEjK,KAAM,OAAQD,KAAMjF,EAAMiF,KAAMrI,UAAU,SAAKoI,EAAA,EAAOG,KAAM,CAAEvI,UAAU,SAAKmU,EAAA,EAAa,CAAE7V,UAAW,GAAE,wBAA2B,SAAK8J,EAAA,EAAQ+H,OAAOC,OAAO,CAAC,EAAGkC,EAAiB,CAAEhK,KAAM,OAAQD,KAAMjF,EAAMiF,KAAMrI,UAAU,SAAKoI,EAAA,EAAOG,KAAM,CAAEvI,UAAU,SAAKoU,EAAA,EAAc,CAAE9V,UAAW,GAAE,8BAAmC,SAAK+V,GAAc,CAAEjK,MAAOA,OACze,IACA,SAASiK,IAAa,MAAEjK,IACpB,MAAOkK,EAAWC,GAAgB,YAAe,IAAOpE,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGhG,GAAQ,CAAEoK,WAAW,MACvGC,EAAcrK,EAAMkH,OAASgD,EAAUhD,KACvCoD,GAAoBtK,EAAMoI,UAAUmC,OAAOL,EAAU9B,UAAW,QACtE,IAAIoC,EACAH,EAEIG,EADA1C,GAAgBT,QAAQ6C,EAAUhD,MAAQY,GAAgBT,QAAQrH,EAAMkH,MAC5D,WAGA,UAGXoD,IAEDE,EADAxK,EAAMoI,UAAUP,SAASqC,EAAU9B,WACvB,UAGA,YAGpB,MAAM,UAAEqC,GC9CL,SAA8BzK,GACjC,MAAM,iBAAEwI,IAAqB,EAAAC,EAAA,GAAe,CACxCiC,oBAAsBN,IAClBpK,EAAMoJ,WAAWgB,EAAU,IAmDnC,MAAO,CACHK,UAjDc1E,OAAOC,OAAOD,OAAOC,OAAO,CAAEpO,KAAM,OAAQ,aAA6B,UAAfoI,EAAMkH,MAAmC,aAAflH,EAAMkH,KAClG,GAAGlH,EAAMoI,UAAUC,YAAYrI,EAAMsI,QAAQD,SAC7CrI,EAAMuI,YAAYxL,OAAsB,SAAfiD,EAAMkH,KAAkB,YAAc,QAAS,gBAAiBlH,EAAMzL,SAAW,YAAS+B,EAAW,gBAAiB0J,EAAM2K,SAAW,YAASrU,GAAakS,GAAmB,CAAEoC,UAAYjE,IAC3M,eAAVA,EAAEvK,KACFuK,EAAEkE,iBACF7K,EAAM8K,iBAES,cAAVnE,EAAEvK,KACPuK,EAAEkE,iBACF7K,EAAM+K,qBAES,cAAVpE,EAAEvK,KACPuK,EAAEkE,iBACF7K,EAAMgL,gBAES,YAAVrE,EAAEvK,KACPuK,EAAEkE,iBACF7K,EAAMiL,oBAES,aAAVtE,EAAEvK,KACPuK,EAAEkE,iBACF7K,EAAM4J,cAAcjD,EAAEuE,WAEP,WAAVvE,EAAEvK,KACPuK,EAAEkE,iBACF7K,EAAMwJ,kBAAkB7C,EAAEuE,WAEX,QAAVvE,EAAEvK,KACPuK,EAAEkE,iBACF7K,EAAMmL,mBAES,SAAVxE,EAAEvK,KACPuK,EAAEkE,iBACF7K,EAAMoL,qBAEU,UAAXzE,EAAE0E,MACP1E,EAAEkE,iBACF7K,EAAMmJ,WAEU,UAAXxC,EAAE0E,MACP1E,EAAEkE,iBACF7K,EAAMsL,UAES,UAAV3E,EAAEvK,KAA6B,MAAVuK,EAAEvK,MAC5BuK,EAAEkE,iBACF7K,EAAMuL,WAAWvL,EAAMuI,aAC3B,IAKZ,CDX0BiD,CAAqBxL,GAC3C,OAAQ,UAAM,MAAO+F,OAAOC,OAAO,CAAE9R,UAAW,GAAE,SAAWuW,EAAW,CAAE7U,SAAU,CAAC4U,IAAc,SAAKiB,GAAS,CAAEvX,UAAW,GAAE,kBAAmB8L,MAAOkK,EAAWM,UAAWA,KAAe,SAAKiB,GAAS,CAAEvX,UAAW,GAAE,iBAAkB8L,MAAOA,EAAOwK,UAAWA,EAAWkB,eAAgB,KAClRvB,EAAapE,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGhG,GAAQ,CAAEoK,WAAW,IAAS,GAC1E,cACrB,CACA,SAASqB,IAAQ,UAAEvX,EAAS,MAAE8L,EAAK,UAAEwK,EAAS,eAAEkB,IAC5C,OAAQ,UAAM,MAAO,CAAExX,UAAW,GAAE,UAAW,CAAEsW,aAAatW,GAAYwX,eAAgBA,EAAgB9T,KAAM,eAAgBhC,SAAU,CAAgB,SAAfoK,EAAMkH,OAAmB,SAAKyE,GAAU,CAAE3L,MAAOA,KAAU,SAAK4L,GAAmB,CAAE5L,MAAOA,MAC3O,CACA,SAAS2L,IAAS,MAAE3L,IAChB,MAAM6L,ED1BH,WACH,MAAMC,EAAW,GACXC,GAAY,UAAWC,QAAQ,QACrC,IAAK,IAAIC,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,MAAMC,EAAOH,EAAUtP,IAAI,CAAE6K,KAAM2E,IACnCH,EAAS7U,KAAKiV,EAClB,CACA,OAAOJ,CACX,CCkBqBK,GACjB,OAAQ,SAAK,MAAO,CAAEjY,UAAW,GAAE,YAAa0D,KAAM,MAAOhC,SAAUiW,EAAS1U,KAAK+U,IACrE,SAAK,MAAO,CAAEhY,UAAW,GAAE,UAAW,CAAEkY,QAASpM,EAAMqM,UAAUH,KAAUtU,KAAM,eAAgB,aAAcsU,EAAKnP,OAAO,QAASnH,SAAUsW,EAAKnP,OAAO,OAASmP,EAAKI,UAE5L,CACA,SAASV,IAAkB,MAAE5L,IACzB,MAAMuM,EAA8B,SAAfvM,EAAMkH,KAAkB,EAAI,EAC3CsF,EAA8B,SAAfxM,EAAMkH,KAAkB,EAAI,GAAoB,aAAflH,EAAMkH,KAAsB,EAAI,GAChFI,EDtDH,SAAyBc,EAAWqE,EAAUvF,GACjD,MAAMI,EAAO,GACb,GAAa,SAATJ,EAAiB,CACjB,MAAMwF,EAActE,EAAU4D,QAAQ,QACtC,IAAK,IAAIC,EAAI,EAAGA,EAAI,GAAIA,IACpB3E,EAAKrQ,KAAKyV,EAAYjQ,IAAI,CAAE6K,KAAM2E,IAE1C,MACK,GAAa,aAAT/E,EACL,IAAK,IAAI+E,EAAI,EAAGA,EAAI,GAAIA,IACpB3E,EAAKrQ,KAAKmR,EAAU3L,IAAIwP,EAAG,kBAI/B,IAAK,IAAIA,EAAI,EAAGA,EAAI,GAAIA,IACpB3E,EAAKrQ,KAAKmR,EAAU3L,IAAI,CAAE,CAACyK,GAAO+E,KAG1C,OAAO3E,CACX,CCmCiBqF,CAAgB3M,EAAMoI,UAAWpI,EAAMsI,QAAStI,EAAMkH,MACnE,OAAQ,SAAK,MAAO,CAAEhT,UAAW,GAAE,gBAAiB,CAAEgT,KAAMlH,EAAMkH,OAAStP,KAAM,WAAYhC,SAAU,IAAI,IAAIsP,MAAMqH,GAAcK,QAAQzV,KAAK0V,IAAc,UAAM,MAAO,CAAE3Y,UAAW,GAAE,YAAa0D,KAAM,MAAOhC,SAAU,CAAgB,aAAfoK,EAAMkH,MAAuB,SAAK,OAAQ,CAAEtP,KAAM,YAAa1D,UAAW,GAAE,wBAAyB0B,SAAU0R,EAAKuF,EAAWL,GAAczP,OAAO,UAAc,KAAMuK,EACtXwF,MAAMD,EAAWL,GAAeK,EAAW,GAAKL,GAChDrV,KAAK+U,IACC,SAAKa,GAAc,CAAEb,KAAMA,EAAMlM,MAAOA,GAASkM,EAAKc,YAC1DH,MACvB,CACA,SAASE,IAAa,KAAEb,EAAI,MAAElM,IAC1B,MAAM,UAAEiN,EAAS,YAAEC,EAAW,cAAEC,EAAa,WAAEC,EAAU,WAAEC,EAAU,iBAAEC,EAAgB,iBAAEC,EAAgB,eAAEC,EAAc,sBAAEC,EAAqB,cAAEC,EAAa,UAAEC,EAAS,UAAEtB,GEvEzK,SAA8BH,EAAMlM,GACvC,MAAMuF,EAAM,SAAa,MACnB6E,EAAYpK,EAAM4N,cAAc1B,GACtC,aAAgB,KACZ,IAAI2B,EACAzD,IACuB,QAAtByD,EAAKtI,EAAIhP,eAA4B,IAAPsX,GAAyBA,EAAG/D,MAAM,CAAEgE,eAAe,IACtF,GACD,CAAC1D,IACJ,MAAM2D,EAAW/N,EAAMuI,YAAYgC,OAAO2B,EAAMlM,EAAMkH,MAAQ,GAAK,EAC7DkG,EAAapN,EAAMgO,eAAe9B,GAClCmB,EAAarN,EAAMqN,WAAWnB,GAC9B+B,EAAmB,qBAAsBjO,GAASA,EAAMiO,iBACxDX,EAAmBxL,QAAQmM,GAAoBZ,GAC/CE,EAAmBF,GAAcY,GAAoB/B,EAAK3B,OAAO0D,EAAiBC,MAAOlO,EAAMkH,MAC/FsG,EAAiBH,GAAcY,GAAoB/B,EAAK3B,OAAO0D,EAAiBE,IAAKnO,EAAMkH,MAC3FuG,EAAuC,SAAfzN,EAAMkH,OAAmBlH,EAAMuI,YAAYgC,OAAO2B,EAAM,SAChFwB,EAAgB1N,EAAMoO,kBAAkBlC,GACxCmC,GAAgBjB,IAAeM,EAC/BC,EAAY3N,EAAM2N,UAAUzB,GAC5BG,EAAYrM,EAAMqM,UAAUH,GAC5BhP,EAyDV,SAAsBgP,EAAMhF,GACxB,IAAIhK,EAAQ,GAaZ,MAZa,SAATgK,EACAhK,EAAQ,GAAGgP,EAAKnP,OAAO,YAAYmP,EAAKnP,OAAO,QAEjC,WAATmK,EACLhK,EAAQ,GAAGgP,EAAKnP,OAAO,eAET,aAATmK,EACLhK,EAAQ,GAAGgP,EAAKnP,OAAO,eAET,UAATmK,IACLhK,EAAQ,GAAGgP,EAAKnP,OAAO,WAEpBG,CACX,CAxEkBoR,CAAapC,EAAMlM,EAAMkH,MACjC+F,EAAY,CACdrV,KAAM,WACN,gBAAiByV,EAAa,YAAS/W,EACvC,gBAAiB8W,EAAa,YAAS9W,GAErC4W,EAAc,CAChB3H,MACA3N,KAAM,SACNmW,SAAUX,OAAa9W,EAAYyX,EACnC,gBAAiBM,OAAe/X,EAAY,OAC5C,aAAc4G,EACdC,QAASkR,EACH,KACErO,EAAMuO,eAAerC,GACrBlM,EAAMuL,WAAWW,EAAK,OAExB5V,EACN,cAAAkY,GACI,GAAI,kBAAmBxO,GAASqO,EAC5B,GAAIZ,EAAuB,CACvB,MAAMgB,EAAUvC,EAAKrE,SAAS7H,EAAMuI,aAC9BvI,EAAMuI,YAAYyD,QAAQ,SAC1BhM,EAAMuI,YAAYmG,MAAM,SAAS1C,QAAQ,QAC/ChM,EAAM2O,cAAcF,EACxB,MAEIzO,EAAM2O,cAAczC,EAGhC,GAEJ,IAAIiB,EAAgBjB,EAAKnP,OAAO,KAUhC,MATmB,WAAfiD,EAAMkH,KACNiG,EAAgBjB,EAAKnP,OAAO,OAER,aAAfiD,EAAMkH,KACXiG,EAAgBjB,EAAKnP,OAAO,QAER,UAAfiD,EAAMkH,OACXiG,EAAgBjB,EAAKnP,OAAO,SAEzB,CACHkQ,YACAC,cACAC,gBACAC,aACAC,aACAC,mBACAC,mBACAC,iBACAC,wBACAC,gBACAC,YACAtB,YAER,CFN+LuC,CAAqB1C,EAAMlM,GACtN,OAAQ,SAAK,MAAO+F,OAAOC,OAAO,CAAC,EAAGiH,EAAW,CAAErX,UAAU,SAAK,MAAOmQ,OAAOC,OAAO,CAAC,EAAGkH,EAAa,CAAEhZ,UAAW,GAAE,SAAU,CACrHK,SAAU6Y,EACVyB,SAAUxB,EACV,kBAAmBC,EACnB,kBAAmBC,EACnB,gBAAiBC,EACjB,kBAAmBC,EACnBqB,YAAapB,EACbnX,QAASoX,EACTvB,QAASC,IACTzW,SAAUuX,OAC1B,C,gBGnFO,SAAS4B,IAAuB,iBAAEC,EAAgB,SAAEC,IACvD,OAAQD,QAA2DA,GAAmB,QAAS,CAAEC,aAAYC,IAAI,OAAQ,GAAGA,IAAI,SAAU,GAAGA,IAAI,SAAU,EAC/J,CAaO,SAASC,GAAcjD,EAAMkD,GAChC,OAAOlD,EACFgD,IAAI,QAASE,EAAKC,QAClBH,IAAI,UAAWE,EAAKE,UACpBJ,IAAI,UAAWE,EAAKG,SAC7B,CCpBO,SAASC,GAAmBtD,GAC/B,MAAMuD,EAAkBvD,EAAOA,EAAK+C,WAAa,WAC1CS,EAAWC,GAAgB,WAAeF,GAKjD,OAJIvD,GAAQuD,IAAoBC,GAC5BC,EAAaF,GAEAvD,EAAOuD,EAAkBC,CAE9C,CCHA,MAAME,GAAe,CACjBtI,MAAM,EACNC,QAAQ,EACRC,UAAU,EACVC,OAAO,GAmMX,SAASoI,GAAa3D,EAAMhF,GACxB,GAAa,SAATA,EACA,OAAOgF,EAAKF,QAAQ,SAExB,GAAa,WAAT9E,EACA,OAAOgF,EAAKF,QAAQ,QAExB,GAAa,aAAT9E,EAAqB,CACrB,MAAMmB,EAAqC,EAA9BvE,KAAKgM,MAAM5D,EAAK7D,OAAS,GACtC,OAAO6D,EAAKF,QAAQ,QAAQkD,IAAI,OAAQ7G,EAC5C,CACA,MAAMA,EAAsC,GAA/BvE,KAAKgM,MAAM5D,EAAK7D,OAAS,IACtC,OAAO6D,EAAKF,QAAQ,QAAQkD,IAAI,OAAQ7G,EAC5C,CACA,SAAS0H,GAAW7D,EAAMhF,GACtB,GAAa,SAATA,EACA,OAAOgF,EAAKwC,MAAM,SAAS1C,QAAQ,OAEvC,GAAa,WAAT9E,EACA,OAAOgF,EAAKwC,MAAM,QAAQ1C,QAAQ,SAEtC,MAAM5D,EAAYyH,GAAa3D,EAAMhF,GACrC,MAAa,aAATA,EACOkB,EAAU3L,IAAI,GAAI,YAEtB2L,EAAU3L,IAAI,CAAE,CAACyK,GAAO,IACnC,CACA,SAAS,GAAUgF,EAAMvE,EAAUC,EAAUV,EAAO,QAEhD,OADwBQ,EAAewE,EAAMvE,EAAUC,GAC/B2C,OAAO2B,EAAMhF,EACzC,CCrOO,MAAM,GAAW,cAAiB,SAAkBlO,EAAOuM,GAC9D,MAAMvF,EDKH,SAA0BhH,GAC7B,IAAI6U,EAAImC,EAAIC,EACZ,MAAM,SAAE1b,EAAQ,SAAEoW,EAAQ,MAAEuF,EAAQN,IAAiB5W,GAC9C3E,EAAO8b,IAAY,EAAAC,GAAA,GAAmBpX,EAAM3E,MAAqC,QAA7BwZ,EAAK7U,EAAMqX,oBAAiC,IAAPxC,EAAgBA,EAAK,KAAM7U,EAAMjD,UAC3HoR,EAAiBW,GAAgBtP,QAAQ8X,GAAMJ,EAAMI,KACrDC,EAAUpJ,EAAe,IAAM,QAC9BD,EAAMsJ,IAAW,EAAAJ,GAAA,GAAmBpX,EAAMkO,KAAmC,QAA5B8I,EAAKhX,EAAMyX,mBAAgC,IAAPT,EAAgBA,EAAKO,EAASvX,EAAM0X,cAC1HC,EAAczJ,GAAQC,EAAeyJ,SAAS1J,GAAQA,EAAOqJ,EAC7DM,EAAgBrB,GAAmBxW,EAAM3E,OAAS2E,EAAMqX,cAAgBrX,EAAM8X,cAAgB9X,EAAM+X,qBACpG9B,EAAWjW,EAAMiW,UAAY4B,EAC7BlJ,EAAW,WAAc,IAAO3O,EAAM2O,SAAW3O,EAAM2O,SAASsH,SAASA,QAAY3Y,GAAY,CAAC2Y,EAAUjW,EAAM2O,WAClHC,EAAW,WAAc,IAAO5O,EAAM4O,SAAW5O,EAAM4O,SAASqH,SAASA,QAAY3Y,GAAY,CAAC2Y,EAAUjW,EAAM4O,WAClHkJ,EAAe,WAAc,IAC1B9X,EAAM8X,aAGJpJ,EAAe1O,EAAM8X,aAAa7B,SAASA,GAAWtH,EAAUC,GAF5D5O,EAAM8X,cAGlB,CAAC9X,EAAM8X,aAAcnJ,EAAUC,EAAUqH,IACtC8B,EAAsB,WAAc,KACtC,IAAIlD,EAGJ,OAAOnG,GAF0F,QAA1EmG,EAAM7U,EAAM+X,oBAAsB/X,EAAM+X,oBAAsB1c,SAA2B,IAAPwZ,OAAgB,EAASA,EAAGoB,SAASA,KAC1IF,GAAuB,CAAEE,aAAYjD,QAAQuE,GACb5I,EAAUC,EAAS,GACxD,CAACA,EAAUD,EAAU3O,EAAM+X,oBAAqB9B,EAAU5a,EAAOkc,KAC7DS,EAAkBzC,IAAkB,EAAA6B,GAAA,GAAmBU,EAAcC,GAAsB7E,IAC9F,IAAI2B,EAC2B,QAA9BA,EAAK7U,EAAMiY,qBAAkC,IAAPpD,GAAyBA,EAAGlK,KAAK3K,EAAOkT,EAAK+C,SAAS4B,GAAe,IAE1GtI,EAAiI,QAAlH0H,EAAKe,aAA2D,EAASA,EAAiB/B,SAASA,UAA8B,IAAPgB,EAAgBA,EAAKvI,EAAeqH,GAAuB,CAAEE,aAAatH,EAAUC,GAKnO,SAASsJ,EAAUhF,GACfqC,EAAe7G,EAAewE,EAAKF,QAAQ2E,GAAchJ,EAAUC,GACvE,CANI,GAAUW,EAAaZ,EAAUC,IAEjC2G,EAAe7G,EAAea,EAAaZ,EAAUC,IAKzD,MAAOwC,EAAWhB,GAAc,WAAepQ,EAAMmY,YAAa,GAC5D/I,EAAYyH,GAAatH,EAAaoI,GACtCrI,EAAUyH,GAAWxH,EAAaoI,GACxC,MAAO,CACHpc,WACAoW,WACAtW,QACA,QAAA8b,CAASjE,GACL,IAAK3X,IAAaoW,EAAU,CACxB,IAAIyG,EAAW1J,EAAewE,EAAMvE,EAAUC,GAC9C,GAAItL,KAAK8R,kBAAkBgD,GACvB,OAEA/c,IAEA+c,EAAWjC,GAAciC,EAAU/c,EAAM4a,SAASA,KAEtDkB,EAASiB,EAASnC,SAAS4B,GAC/B,CACJ,EACA5B,WACA,UAAA1D,CAAWW,EAAMmF,GAAQ,GAChB9c,IACIoW,IAAa0G,GAAS/U,KAAK4K,OAASqJ,EAOrCjU,KAAKgP,UANLhP,KAAK6T,SAASjE,EAAKF,QAAQuE,IACvBc,GAASV,IAAgBJ,GACzBC,EAAQD,IAOxB,EACA5I,WACAC,WACAW,cACAH,YACAE,UACA,cAAAiG,CAAerC,GACXgF,EAAUhF,GACV9C,GAAW,EACf,EACA,aAAA0B,GACIoG,EAAU3I,EAAY9L,IAAI,EAAGH,KAAK4K,MACtC,EACA,iBAAA6D,GACImG,EAAU3I,EAAY+I,SAAS,EAAGhV,KAAK4K,MAC3C,EACA,YAAA8D,GACsB,SAAd1O,KAAK4K,KACLgK,EAAU3I,EAAY9L,IAAI,EAAG,SAEV,aAAdH,KAAK4K,KACVgK,EAAU3I,EAAY9L,IAAI,EAAG,UAG7ByU,EAAU3I,EAAY9L,IAAI,EAAGH,KAAK4K,MAE1C,EACA,gBAAA+D,GACsB,SAAd3O,KAAK4K,KACLgK,EAAU3I,EAAY+I,SAAS,EAAG,SAEf,aAAdhV,KAAK4K,KACVgK,EAAU3I,EAAY+I,SAAS,EAAG,UAGlCJ,EAAU3I,EAAY+I,SAAS,EAAGhV,KAAK4K,MAE/C,EACA,aAAA0C,CAAc2H,GACQ,SAAdjV,KAAK4K,KACLgK,EAAU3I,EAAY9L,IAAI,CAAE8K,OAAQgK,EAAS,GAAK,KAE/B,aAAdjV,KAAK4K,KACVgK,EAAU3I,EAAY9L,IAAI,EAAG,UAG7ByU,EAAU3I,EAAY9L,IAAI,GAAIH,KAAK4K,MAE3C,EACA,iBAAAsC,CAAkB+H,GACI,SAAdjV,KAAK4K,KACLgK,EAAU3I,EAAY+I,SAAS,CAAE/J,OAAQgK,EAAS,GAAK,KAEpC,aAAdjV,KAAK4K,KACVgK,EAAU3I,EAAY+I,SAAS,EAAG,UAGlCJ,EAAU3I,EAAY+I,SAAS,GAAIhV,KAAK4K,MAEhD,EACA,iBAAAkE,GACI8F,EAAUrB,GAAatH,EAAajM,KAAK4K,MAC7C,EACA,eAAAiE,GACI+F,EAAUnB,GAAWxH,EAAajM,KAAK4K,MAC3C,EACA,MAAAoE,GACI,MAAMkG,EAAWrK,EAAeA,EAAeE,QAAQ/K,KAAK4K,MAAQ,GAChEsK,GACAlV,KAAKkU,QAAQgB,EAErB,EACA,OAAArI,GACI,MAAMqI,EAAWrK,EAAeA,EAAeE,QAAQ/K,KAAK4K,MAAQ,GAChEsK,GACAlV,KAAKkU,QAAQgB,EAErB,EACA,iBAAAC,GACInV,KAAKiP,WAAWhD,GAAa,EACjC,EACA6B,YACAhB,aACA,SAAAsI,CAAUxF,GACN,OAAO,GAAUA,EAAM5P,KAAKqL,SAAUrL,KAAKsL,SAAUtL,KAAK4K,KAC9D,EACA,qBAAAqC,GACI,MAAMnP,EAAOkC,KAAK8L,UAAUkJ,SAAS,EAAG,OACxC,OAAOhV,KAAKoV,UAAUtX,EAC1B,EACA,iBAAAuP,GACI,MAAMtP,EAAOiC,KAAKgM,QAAQoG,MAAMpS,KAAK4K,MAAMzK,IAAI,EAAG,OAClD,OAAOH,KAAKoV,UAAUrX,EAC1B,EACA,UAAAgT,CAAWnB,GACP,OAAOpK,QAAQzN,GACX6X,EAAK3B,OAAOlW,EAAM4a,SAASA,GAAW0B,KACrCrU,KAAK0R,eAAe9B,GAC7B,EACA,iBAAAkC,CAAkBlC,GACd,OAAI5P,KAAK4K,OAASqJ,GACPzO,QAAQ9I,EAAM2Y,mBAAqB3Y,EAAM2Y,kBAAkBzF,GAK1E,EACA,aAAA0B,CAAc1B,GACV,OAAO5P,KAAK8N,WAAa7B,GAAe2D,EAAK3B,OAAOhC,EAAaoI,EACrE,EACA,cAAA3C,CAAe9B,GACX,OAAO5P,KAAK/H,UAAY+H,KAAKoV,UAAUxF,EAC3C,EACA,SAAAG,CAAUH,GACN,MAAqB,SAAd5P,KAAK4K,MAAmB,CAAC,EAAG,GAAG0J,SAAS1E,EAAKI,MACxD,EACA,SAAAqB,CAAUzB,GACN,OAAO,QAAS,CAAE+C,aAAY1E,OAAO2B,EAAM5P,KAAK4K,KACpD,EACAA,KAAMyJ,EACNH,UACArJ,iBAER,CCrMkByK,CAAiB5Y,GAC/B,OAAO,SAAK+O,GAAchC,OAAOC,OAAO,CAAET,IAAKA,GAAOvM,EAAO,CAAEgH,MAAOA,IAC1E,ICPO,SAAS6R,IAAY,KAAE5c,EAAI,MAAEZ,EAAK,QAAEyd,EAAO,KAAEC,EAAI,SAAExd,EAAQ,cAAEyd,IAChE,MAAMzM,EAOH,UAA6B,aAAE0M,EAAY,QAAEH,IAChD,MAAOI,EAAaC,GAAkB,WAAe,MAC/CC,EAAa,SAAaH,GAChC,aAAgB,KACZ,IAAKC,IAAgBJ,EACjB,OAEJ,MAAMO,EAAc,KAChBP,EAAQM,EAAW7b,QAAQ,EAG/B,OADA2b,EAAYlO,iBAAiB,QAASqO,GAC/B,KACHH,EAAYjO,oBAAoB,QAASoO,EAAY,CACxD,GACF,CAACH,EAAaJ,IAKjB,OAJY,eAAmBQ,IAC3B,IAAIzE,EACJsE,EAAgF,QAAhEtE,EAAKyE,aAAmC,EAASA,EAAKP,YAAyB,IAAPlE,EAAgBA,EAAK,KAAK,GACnH,GAEP,CA3BgB0E,CAAoB,CAAEN,aAAc5d,EAAOyd,YACvD,IAAK7c,EACD,OAAO,KAEX,MAAMud,EAAIR,EAAgBA,EAAc3d,GAAS,GAAGA,QAAqCA,EAAQ,KACjG,OAAO,SAAK,QAAS,CAAEkR,IAAKA,EAAKlN,KAAM,SAAUpD,KAAMA,EAAMZ,MAAOme,EAAGje,SAAUA,EAAUwd,KAAMA,GACrG,C,2bCLa,IAAO,EAAAjL,EAAA,GAAoB,CAAEC,GAAE,MAAI,IAAI,GAAGP,eCA1CiM,GAAoB,CAC7BpK,MAAM,EACNqK,OAAO,EACPpG,KAAK,EACL+C,MAAM,EACNC,QAAQ,EACRC,QAAQ,EACRoD,WAAW,EACXC,SAAS,GAEPC,GAAoB,CAAE3E,MAAO,IAAKC,IAAK,KACvC2E,GAAiB,CAEnBC,GAAI,OACJC,KAAM,OAENC,EAAG,QACHC,GAAI,QACJC,IAAK,CAAEC,YAAa,QAASC,YAAa,UAC1CC,KAAM,CAAEF,YAAa,QAASC,YAAa,UAE3CE,EAAG,MACHC,GAAI,MACJC,GAAI,MAEJ5N,EAAG,UACH6N,GAAI,CAAEN,YAAa,UAAWC,YAAa,UAC3CM,IAAK,CAAEP,YAAa,UAAWC,YAAa,UAC5CO,KAAM,CAAER,YAAa,UAAWC,YAAa,UAE7CQ,EAAG,CAAET,YAAa,YAAaC,YAAa,UAC5CS,EAAG,CAAEV,YAAa,YAAaC,YAAa,UAE5CU,EAAG,OACHC,GAAI,OACJC,EAAG,OACHC,GAAI,OAEJtN,EAAG,SACHuN,GAAI,SAEJC,EAAG,SACHC,GAAI,SAEJC,EAAG,CAAElB,YAAa,eAAgBC,YAAa,UAC/CkB,IAAK,CAAEnB,YAAa,eAAgBC,YAAa,UACjDmB,EAAG,CAAEpB,YAAa,eAAgBC,YAAa,UAC/CoB,GAAI,CAAErB,YAAa,eAAgBC,YAAa,WA0BpD,SAASqB,GAAsB3X,GAC3B,OAA4C,KAArC,UAAWA,OAAOA,GAAQ1H,MACrC,CAuDO,SAASsf,GAAgBC,EAAS1I,GACrC,MAAM7T,EAAOuc,EAAQvc,KACrB,OAAQA,GACJ,IAAK,OACD,OAAOqc,GAAsBE,EAAQ7X,QAC/BmP,EAAK7D,OACLwM,OAAO3I,EAAKnP,OAAO6X,EAAQ7X,SAErC,IAAK,QACL,IAAK,OACL,IAAK,SACL,IAAK,SACD,OAAOmP,EAAK7T,KAEhB,IAAK,MACD,OAAO6T,EAAKA,OAEhB,IAAK,UACD,OAAOA,EAAKI,MAEhB,IAAK,YACD,OAAOJ,EAAKmD,QAAU,GAAK,GAAK,EAI5C,CACA,MAAMyF,GAAe,CACjBlC,QAAS,MACTtG,IAAK,OACLqG,UAAW,QAER,SAASoC,GAA+B1c,GAC3C,GAAa,YAATA,GAA+B,iBAATA,GAAoC,YAATA,EACjD,MAAM,IAAImF,MAAM,GAAGnF,0CAEvB,OAAIA,KAAQyc,GACDA,GAAazc,GAEjBA,CACX,CAyGA,SAAS2c,GAAsBC,EAAeC,GAC1C,OAAQD,EAAc5c,MAClB,IAAK,OACD,OAAO,GAAK,oBAAoBgL,QAAO,UAAWtG,OAAOmY,GAAmB7f,QAEhF,IAAK,QACD,OAAO,GAAK,qBAAqBgO,OAAqC,WAA9B4R,EAAc5B,YAA2B,EAAI,GAEzF,IAAK,MACD,OAAO,GAAK,mBAAmBhQ,OAAO,GAE1C,IAAK,UACD,OAAO,GAAK,uBAAuBA,OAAqC,WAA9B4R,EAAc5B,YAA2B,EAAI,GAE3F,IAAK,OACD,OAAO,GAAK,oBAAoBhQ,OAAO,GAE3C,IAAK,SACD,OAAO,GAAK,sBAAsBA,OAAO,GAE7C,IAAK,SACD,OAAO,GAAK,sBAAsBA,OAAO,GAE7C,IAAK,YACD,OAAO,GAAK,yBAEhB,QACI,OAAO6R,EAGnB,CACO,SAASC,GAAwBpY,GACpC,MAAMqY,EAAW,GACXC,GAAiB,QAAatY,GACpC,IAAImY,EAAoB,GACpBI,GAAc,EACdC,GAAqB,EACzB,IAAK,IAAItJ,EAAI,EAAGA,EAAIoJ,EAAehgB,OAAQ4W,IAAK,CAC5C,MAAMuJ,EAAOH,EAAepJ,IAAM,GAClC,GAAIsJ,EAAoB,CACpB,GAAIC,IAAS3C,GAAkB1E,IAAK,CAChCoH,GAAqB,EACrB,QACJ,CACAL,GAAqBM,CACzB,MACSA,EAAKC,MAAM,aACZH,IACAI,GAAkBN,EAAUF,GAC5BA,EAAoB,IAExBI,GAAc,EACdJ,GAAqBM,IAGhBF,IACDK,GAAiBP,EAAUF,GAC3BA,EAAoB,IAExBI,GAAc,EACVE,IAAS3C,GAAkB3E,MAC3BqH,GAAqB,EAGrBL,GAAqBM,EAGjC,CASA,OARIN,IACII,EACAI,GAAkBN,EAAUF,GAG5BS,GAAiBP,EAAUF,IAG5BE,CACX,CACA,SAASO,GAAiBP,EAAUQ,GAChC,IAAKA,EACD,OAEJ,MAAMX,EAnTV,SAA6CY,GACzC,MAAMC,EAAShD,GAAe+C,GAC9B,OAAKC,EAWiB,iBAAXA,EACA,CACHzd,KAAMyd,EACNzC,YAAa,SAGd,CACHhb,KAAMyd,EAAO1C,YACbC,YAAayC,EAAOzC,cAjBpB0C,QAAQ1c,MAAM,CACV,cAAcwc,yCACd,mCACF/M,KAAK,OACA,CACHzQ,KAAM,UACNgb,YAAa,UAazB,CA4R0B2C,CAAoCJ,GACpDK,EAvHV,SAAqC5C,EAAaD,EAAarW,GAC3D,GAAoB,UAAhBsW,EACA,OAAO,EAEX,OAAQD,GACJ,IAAK,OACD,OAAIsB,GAAsB3X,GAEG,UADH,UAAWmS,IAAI,OAAQ,GAAGnS,OAAOA,GAIlC,QADH,UAAWmS,IAAI,OAAQ,MAAMnS,OAAOA,GAG9D,IAAK,QACD,OAAO,UAAWiP,QAAQ,QAAQjP,OAAOA,GAAQ1H,OAAS,EAE9D,IAAK,MACD,OAAO,UAAW2W,QAAQ,SAASjP,OAAOA,GAAQ1H,OAAS,EAE/D,IAAK,UACD,OAAO,UAAW2W,QAAQ,QAAQjP,OAAOA,GAAQ1H,OAAS,EAE9D,IAAK,OACD,OAAO,UAAW6Z,IAAI,OAAQ,GAAGnS,OAAOA,GAAQ1H,OAAS,EAE7D,IAAK,SACD,OAAO,UAAW6Z,IAAI,SAAU,GAAGnS,OAAOA,GAAQ1H,OAAS,EAE/D,IAAK,SACD,OAAO,UAAW6Z,IAAI,SAAU,GAAGnS,OAAOA,GAAQ1H,OAAS,EAE/D,QACI,MAAM,IAAImI,MAAM,wBAG5B,CAoF4B0Y,CAA4BjB,EAAc5B,YAAa4B,EAAc5c,KAAMud,GACnGR,EAASne,KAAK8O,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGiP,GAAgB,CAAElY,OAAQ6Y,EAAOthB,YAAa0gB,GAAsBC,EAAeW,GAAQlT,QAASyT,GAAkBlB,EAAeW,GAAQK,oBAC/L,CACA,SAASP,GAAkBN,EAAUQ,GAC5BA,GAGLR,EAASne,KAAK,CACVoB,KAAM,UACNgb,YAAa,SACbtW,OAAQ6Y,EACRthB,YAAashB,EACbK,iBAAiB,GAEzB,CACA,SAASE,GAAkBvB,EAASgB,GAChC,OAAQhB,EAAQvc,MACZ,IAAK,QAAS,CACV,MAAM0E,EAAiC,WAAxB6X,EAAQvB,YAA2BuC,EAAQ,OAC1D,IAAI1J,GAAO,UAAWF,QAAQ,QAC9B,MAAMtJ,EAAU,GAChB,IAAK,IAAIuJ,EAAI,EAAGA,EAAI,GAAIA,IACpBvJ,EAAQzL,KAAKiV,EAAKnP,OAAOA,GAAQqZ,qBACjClK,EAAOA,EAAKzP,IAAI,EAAG,UAEvB,OAAOiG,CACX,CACA,IAAK,YAAa,CACd,MAAM2T,GAAc,UAAWhH,KAAK,GAC9BiH,EAAcD,EAAYhH,KAAK,IAKrC,MAJgB,CACZgH,EAAYtZ,OAAO6Y,GAAOQ,oBAC1BE,EAAYvZ,OAAO6Y,GAAOQ,oBAGlC,CACA,IAAK,UAAW,CACZ,MAAMrZ,EAAiC,WAAxB6X,EAAQvB,YAA2BuC,EAAQ,OAC1D,IAAI1J,GAAO,UAAWI,IAAI,GAC1B,MAAM5J,EAAU,GAChB,IAAK,IAAIuJ,EAAI,EAAGA,EAAI,EAAGA,IACnBvJ,EAAQzL,KAAKiV,EAAKnP,OAAOA,GAAQqZ,qBACjClK,EAAOA,EAAKzP,IAAI,EAAG,OAEvB,OAAOiG,CACX,EAGR,CAIO,SAAS6T,GAAoBnB,EAAU/gB,EAAOmiB,GACjD,IAAIC,EAAW,EACf,MAAMC,EAAc,GACpB,IAAIC,GAA2B,EAC/B,IAAK,IAAI1K,EAAI,EAAGA,EAAImJ,EAAS/f,OAAQ4W,IAAK,CACtC,MAAM2I,EAAUQ,EAASnJ,GACzB,IAAK2I,EACD,SAEJ,MAAMgC,EAAaC,GAAkBjC,EAASvgB,EAAOmiB,EAAeC,EAAUE,GAE9E,GADAD,EAAYzf,KAAK2f,GACbE,GAAkBlC,GAAU,CAC5B,IAAK,IAAImC,EAAIjT,KAAKC,IAAI,EAAG4S,GAA0BI,GAAK9K,EAAG8K,IAAK,CAC5D,MAAMC,EAAcN,EAAYK,GAC5BC,IACAA,EAAYC,oBAAsBhL,GACW,IAAzC+K,EAAYL,0BACZK,EAAYL,wBAA0B1K,GAGlD,CACA0K,EAA0B1K,CAC9B,CACAwK,GAAYG,EAAWM,UAAU7hB,MACrC,CACA,OAAOqhB,CACX,CACO,SAASI,GAAkBlC,GAC9B,IAAI/G,EACJ,OAAkD,QAA1CA,EAAK4E,GAAkBmC,EAAQvc,aAA0B,IAAPwV,GAAgBA,CAC9E,CACO,SAASgJ,GAAkBjC,EAASvgB,EAAOmiB,EAAeC,EAAUE,GACvE,MAAMQ,EAAaL,GAAkBlC,GACrC,IAAIwC,EAAgBxC,EAAQtgB,aACvB6iB,GAAcX,EAAc5B,EAAQvc,OAA2B,iBAAjBuc,EAAQvc,QACvD+e,EAAgB/iB,EAAM0I,OAAO6X,EAAQ7X,QACT,UAAxB6X,EAAQvB,aAA2B+D,EAAc/hB,OAASuf,EAAQtgB,YAAYe,SAC9E+hB,EAAgBA,EAAcC,SAASzC,EAAQtgB,YAAYe,OAAQ,OAI3E+hB,EAAgB,IAAWA,EAAgB,IAC3C,MAAME,EAAgBF,EAAc/hB,OAEpC,OADmB0Q,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG4O,GAAU,CAAEvgB,MAAOsgB,GAAgBC,EAASvgB,GAAQ6iB,UAAWE,EAAelJ,MAAOuI,EAAUtI,IAAKsI,EAAWa,EAAeC,UAAU,EAAOZ,0BAAyBM,oBAAqBN,IArX3P,SAA0B/B,EAAS1I,GACtC,MAAM,KAAE7T,EAAI,OAAE0E,GAAW6X,EACzB,OAAQvc,GACJ,IAAK,OAAQ,CACT,MAAMmf,EAAc9C,GAAsB3X,GAC1C,MAAO,CACH4K,SAAU6P,EAAc,EAAI,EAC5B5P,SAAU4P,EAAc,KAAO,GAEvC,CACA,IAAK,QACD,MAAO,CACH7P,SAAU,EACVC,SAAU,IAGlB,IAAK,UACD,MAAO,CACHD,SAAU,EACVC,SAAU,GAGlB,IAAK,MACD,MAAO,CACHD,SAAU,EACVC,SAAUsE,EAAOA,EAAKuL,cAAgB,IAG9C,IAAK,OACD,GAhCZ,SAAkB1a,GACd,MAAqD,QAA9C,UAAWmS,IAAI,OAAQ,IAAInS,OAAOA,EAC7C,CA8BgB2a,CAAS3a,GAAS,CAClB,MAAM4a,EAAOzL,EAAKmD,QAAU,GAC5B,MAAO,CACH1H,SAAUgQ,EAAO,GAAK,EACtB/P,SAAU+P,EAAO,GAAK,GAE9B,CACA,MAAO,CACHhQ,SAAU,EACVC,SAAU,IAGlB,IAAK,SACL,IAAK,SACD,MAAO,CACHD,SAAU,EACVC,SAAU,IAItB,MAAO,CAAC,CACZ,CAmU8RgQ,CAAiBhD,EAASvgB,GAExT,CACO,SAASwjB,GAA+BzC,EAAU0C,GACrD,MAAMC,EAAoC,QAArBD,IAAoD,IAAtBA,EAA0B,EAAIA,EAC3ElD,EAAUQ,EAAS2C,GACzB,OAAInD,IAAYnC,GAAkBmC,EAAQvc,MAC/Buc,EAAQqC,oBAEZrC,EAAUmD,GAAgB,CACrC,CAKA,SAASC,GAAUtV,GACf,IAAIwJ,GAAO,QAASxJ,GAIpB,OAHK,QAAQwJ,KACTA,GAAO,QAASnG,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGtD,GAAU,CAAE3F,YAAQzG,MAEjE4V,CACX,CAcO,SAAS+L,GAAmBC,EAAa1B,GAC5C,OAAOzQ,OAAO6G,KAAKsL,GAAaC,OAAO/b,GAAQoa,EAAcpa,IACjE,CC3eO,SAASgc,GAAkBpY,EAAOhH,GACrC,MAAMqf,EAAW,SAAa,OACvB,CAAEC,GAAiB,WAAe,CAAC,GAC1C,SAASC,EAAoB3D,GACzB5U,EAAMuY,oBAAoB3D,GAC1B0D,EAAc,CAAC,EACnB,CA0BA,SAASE,IACL,IAAI3K,EAAImC,EACJhQ,EAAM2K,SACN4N,GAAqB,IAGzBvY,EAAMyY,uBAAiH,QAAzFzI,EAAiC,QAA3BnC,EAAKwK,EAAS9hB,eAA4B,IAAPsX,OAAgB,EAASA,EAAG6K,sBAAmC,IAAP1I,EAAgBA,EAAK,GACpJsI,EAAc,CAAC,GACnB,CAjCA,mBAAsB,KAClB,MAAMK,EAAeN,EAAS9hB,QAC9B,IAAKoiB,EACD,OAEJ,GAAqC,OAAjC3Y,EAAM4Y,uBAON,YANID,EAAaE,aAIbF,EAAaE,WAAa,IAIlC,MAAMC,EAAuB9Y,EAAMoV,SAASpV,EAAM4Y,uBAAuBG,YACnEC,EAAsBhZ,EAAMoV,SAASpV,EAAM4Y,uBAAuBK,UACxE,GAAIH,GAAwBE,EAAqB,CAC7C,MAAMN,EAAiBI,EAAqB5K,MACtCgL,EAAeF,EAAoB7K,IACrCuK,IAAmBC,EAAaD,gBAChCQ,IAAiBP,EAAaO,cAC9BP,EAAaQ,kBAAkBT,EAAgBQ,EAEvD,KAWJ,MAAME,EAAY,WAAc,KAC5B,IAAKpZ,EAAM4Y,uBACP,MAAO,OAEX,MAAMS,EAAgBrZ,EAAMoV,SAASpV,EAAM4Y,uBAAuBG,YAClE,OAAKM,GAA+C,WAA9BA,EAAchG,YAG7B,MAFI,MAEC,GACb,CAACrT,EAAM4Y,uBAAwB5Y,EAAMoV,WACxC,MAAO,CACHkE,WAAY,CACRjlB,MAAO2L,EAAM7K,KACb+I,KAAMlF,EAAMkF,KACZD,KAAMjF,EAAMiF,KACZ1J,SAAUyL,EAAMzL,SAChBglB,UAAWvZ,EAAM2K,WAAa3K,EAAM/J,SAAW+C,EAAMugB,SACrDjlB,YAAa0E,EAAM1E,YACnBY,GAAI8D,EAAM9D,GACVgI,MAAOlE,EAAMkE,MACbsc,aAAcxgB,EAAMwgB,aACpBC,WAAYzgB,EAAMygB,WAClBC,IAAK1gB,EAAM0gB,IACXvI,UAAWnY,EAAMmY,UACjBwI,WAAYtB,EACZuB,aAAc,MACdvhB,KAAM,OACNwhB,gBAAiB7Z,EAAM6Z,gBACvBC,aAAc9gB,EAAM8gB,aACpBC,eAAgB/gB,EAAM+gB,eACtB,QAAAhkB,CAAS1B,GACAA,GACD2L,EAAMga,UAEd,EACA,OAAArR,CAAQhC,GACJ,IAAIkH,EAEJ,GADyB,QAAxBA,EAAK7U,EAAM2P,eAA4B,IAAPkF,GAAyBA,EAAGlK,KAAK3K,EAAO2N,GACpC,OAAjC3G,EAAM4Y,uBACN,OAEJ,MAAMqB,EAAQtT,EAAEuT,OACVC,GAAe9B,EAAS9hB,QAC9BqN,YAAW,KACFqW,GAASA,IAAU5B,EAAS9hB,UAG7B4jB,EACAna,EAAMyY,uBAAuB,GAIjCwB,EAAM5lB,MAAMgB,QACRwf,OAAOoF,EAAMf,cAAgBrE,OAAOoF,EAAMvB,kBACtCuB,EAAM5lB,MAAMgB,OAChBkjB,EAAoB,OAGpBC,IACJ,GAER,EACA,MAAA3P,CAAOlC,GACH,IAAIkH,EACoB,QAAvBA,EAAK7U,EAAM6P,cAA2B,IAAPgF,GAAyBA,EAAGlK,KAAK3K,EAAO2N,GACxE4R,GAAqB,EACzB,EACA,SAAA3N,CAAUjE,GACN,IAAIkH,EACuB,QAA1BA,EAAK7U,EAAM4R,iBAA8B,IAAPiD,GAAyBA,EAAGlK,KAAK3K,EAAO2N,GAC7D,cAAVA,EAAEvK,KACFuK,EAAEkE,iBACF7K,EAAMoa,wBAES,eAAVzT,EAAEvK,KACPuK,EAAEkE,iBACF7K,EAAMqa,oBAES,SAAV1T,EAAEvK,KACPuK,EAAEkE,iBACF7K,EAAMsa,kBAES,QAAV3T,EAAEvK,KACPuK,EAAEkE,iBACF7K,EAAMua,kBAES,YAAV5T,EAAEvK,KAAsBuK,EAAE6T,OAIhB,cAAV7T,EAAEvK,KAAwBuK,EAAE6T,OAIlB,WAAV7T,EAAEvK,KACPuK,EAAEkE,iBACF7K,EAAMya,iBAES,aAAV9T,EAAEvK,KACPuK,EAAEkE,iBACF7K,EAAM0a,iBAES,cAAV/T,EAAEvK,KAAiC,WAAVuK,EAAEvK,KAChCuK,EAAEkE,iBACF7K,EAAM2a,gBAES,MAAVhU,EAAEvK,MAAgBuK,EAAW,SAAKA,EAAW,WAClDA,EAAEkE,iBACF0N,EAAoB,SAjBpB5R,EAAEkE,iBACF7K,EAAM4a,cALNjU,EAAEkE,iBACF7K,EAAM6a,YAsBd,EACAC,QAAS9hB,EAAM8hB,QACfC,aAAc,CACV,aAAc/hB,EAAM,oBAAiB1C,EACrC,kBAAmB0C,EAAM,yBAAsB1C,EAC/C,mBAAoB0C,EAAM,0BAAuB1C,EACjD,eAAgB0C,EAAM,sBAAmB1C,EACzC,gBAAiB0J,EAAMzL,eAAY+B,EACnC8iB,YACA,OAAAjc,GACIqb,GACJ,EACA,SAAAwC,CAAUrU,GACNA,EAAEkE,gBACN,EACA,aAAAoQ,CAActU,GACVA,EAAEkE,iBAEF,MAAMzO,EAAMuK,EAAEpP,KACV6E,SACA4D,EAAMkb,QAAQ9e,EAEtB,EACA,OAAA+e,CAAQxU,GAEJ,GADAA,EAAEkE,iBACE7K,EAAM2K,SACN,OAEJ,MAAMyQ,EAA0BzU,EAAE0U,cAAcC,QAAQ,QDsOrDC,QAAQ,8BAA+B,ICrO1C,GAAIvb,EAAM4Y,wBACN5Y,EAAM4Y,uBAAuBG,aACzB/Y,EAAM4Y,uBAAuBK,SAAU,CAC3C,MAAMI,EAAgBrZ,EAAMoV,SAASpV,EAAM4Y,uBAAuBG,YAC5DyC,EAAa,QAAQC,KAAKL,GAC1BM,EAAc,cAAcD,KAAKL,GAIvC,GAHqBtZ,QAAQuX,IACO,UAA9BA,EAAchG,aAA2BmI,GACR,WAA9BnC,EAAchG,aAA4BqI,IAG/C,YADA1b,EAAMkb,QAAQE,GAGlB,GAAII,GAAcE,EACd,MAER,CACA1b,EAAM2b,mBAAmBP,EAC7B,IAIhB,CCzMA,MAAMQ,GAAY,CACdvT,KAAM,EACNqK,MAAO,EACPE,QAAS,EACTtG,IAAK,EACL+C,KAAM,EACNC,OAAQ,GACRC,OAAQ,ICHL,SAASsM,GAAkB7iB,GAC9B,IAAI6U,EAAImC,EACR,MAAO3b,EAAOynB,IAAW,EAAA1L,GAAA,GAAmBpX,EAAM3E,MAAqC,QAA7BwZ,EAAK7U,EAAMqX,oBAAiC,IAAPxC,EAAgBA,EAAK,KAAM7U,EAAMjD,UAC1H8a,EAAgBrB,GAAmBxW,EAAM3E,OAAS2E,EAAMqX,cAAgBrX,EAAMgW,kBAC9EC,EAAWjW,EAAMiW,UAAY4B,EAC7BkL,EAAoBvJ,IACtBsJ,EAAQtJ,EAAIA,EAAEvD,SAAS4B,GAAiB2B,EAAE,GAEvCwJ,EAAiBC,GAAsB,YAAe,IAClDlN,GAAuB,CAC1BC,iBAAkBhW,EAAMgW,iBACxBC,eAGFlS,EAAS/D,EAAM+D,QAAU,IACzBqY,EHwdH,SAA2BrY,GAC9B,MAAMmf,EAAanf,GACZqY,EAAU+G,GAAe,YAAe,IAAMhH,GAAwB+G,MACtEE,EAAgBC,GAAa,WAAeH,GAKnD,OAJIA,IAAeE,IACfC,EAAUH,GACVC,EAAYhH,GAAwB+G,KAEjC9G,CACX,CGjeqBkH,CAAkBvf,GAC7Bmb,EAAc,WAAc,IAAM9C,EACnC5c,QAAQ+jB,GAAQ9J,GAAkB8J,EAAIlkB,QACtCmkB,QAAO,CAACC,EAAGF,IAASxW,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGyW,GAAI,CAAE,CAACF,EAAIlkB,OAAO,KAAU,CAAC,IAAI,CAAC+c,IACrFsH,EAAqB,YAAe,IAAMroB,EAAQ0R,OAAOC,OAAO,CAAC,EAAGkS,GAAe,CAAC,IAC1F,IAAI1B,EAAgBkG,EAAmB,GACvC,MAAMC,EAAmBD,EAAmB,GACxCroB,IAAU4jB,GAAmBC,EAAa1B,IAC1CmG,EAAiB5W,OAAOC,OAAO,CAAC,EAAGkS,KAElC7jB,GACD4jB,GAAmBC,EAAa1B,IAChCzQ,OAAO6G,KAAK4J,GAAenhB,SAAW0Q,OAAO6G,KAAKsL,GAAa7iB,SAC/DmhB,EAAgB,CAAC,EACjBmG,EAAiBnG,GACjByF,EAAmBlN,GAAuB,CACtCC,iBAAkBhW,EAAMgW,iBACxBC,eAGR,MAAM2N,EAAevoB,IAAS,QAAQA,IAAU4jB,GAAmBC,EAAa1B,GAC1EniB,EAAM4a,SAASA,GACf+M,EAAgB/M,SAASA,GACzB4N,EA+HV,SAA0BzH,EAAU/gB,EAAOmiB,GACvC,MAAOxW,EAAO8c,GAAY,YAAe,KAC9B,CACHzoB,QACA+gB,WACAoB,gBACAuG,iBAAkBxG,GAAoBnB,EAAU/gB,EAAOmiB,OAc/D,OAXIpB,IAAapV,EAAMoV,UACnBoB,IAAkBxW,EAAMwW,eACvBniB,EAAMkW,OAAOvK,EAAM3L,QACpBA,EAAM4a,aAAejP,EAAM3L,MAAM4a,YACjC6N,EAAS,CACLzoB,QACA+gB,WACAoB,gBACAuG,iBAAkBxG,GAAoBnB,EAAU/gB,EAAOmiB,KAGxDxW,CACX,CApJ0Bgd,CAAiB5H,EAAUwH,EAAcpG,IACxDsB,EAAkBS,GAAuB,YAAgB,GAC1DK,EAAyB,WAAc,KACzC,IAA0B,IAAtBd,EACA,OAAO,KAEX,GAAyB,QAArBA,EACA,MAAO,CACHiB,WAAY,EACZE,SAAU4D,EAAcE,iBAAiB1nB,OAAS,GAG1D,GAAgC,iBAArByiB,EACP,MAAO,CAAEiB,WAAYjB,EAAkBmB,SAAUnB,GAErD,GAAgC,iBAArBA,EAA+B,CACtC,MAAMmF,EAAuBJ,EAAcE,iBAAiBG,WAAWtI,GAAYA,EAAQvc,OAASyf,IACpG,MAAO,CAAEiB,WAAYkE,EAAsBhE,SAAUgE,EACzD,CACA,OAAOnF,CAAgB,GACxB,CAACA,EAAkB+E,EAAcE,mBACpC,SAAS5M,EAASiB,GACVpY,EAAMzE,UAAYyE,EAAM2R,WAGxBsN,GAAmBC,EAAa1B,GAC3BniB,GAAU+c,EAAS7G,OAAOlW,IAC3B0nB,EAAiB3K,IAIjB/c,GACA0nB,EAAiB,MAErBE,EAAmB7K,IAE3B,CACA,SAAS+L,EAAUC,GACf5G,EAAc4G,IAAQ,EAClB5G,EAAclK,KAAOkK,EAAc9D,OAAS8D,EAAcnO,MAAQ6P,EAAYtF,UAC9E4D,EAAc5D,SAAU,GAExB4D,EAAcnH,MAAQ6I,EAAYvF,YAClC6D,EAAc7D,WAAY,GAE9BgK,EAAiB5W,OAAOC,OAAO,CAAC,EAAGwQ,GACvC,CAqDA,MAAMqD,EAAkB7gB,EAAM6gB,kBT5I3B,SAAmBxlB,EAAOsT,EAAUC,GACvC,SAAKvT,KAGDsT,GAAYtT,EAAMwT,SAASF,IAG3BC,GAAYA,EAASC,SAASxT,IAItC,CSkISqd,CAAUrd,EAAO2E,EAAM2O,SAAU3O,EAAM4O,UAAY,eAAYtR,KAC/DjC,IAA6C,QAAlC2b,EAAKhX,EAAM2Y,yBAAsC,IAAP3B,OAAgB,EAASA,EAAGrM,KAAK3K,EAAO3E,IAAU,eAAYiC,GACxH,ODvIG,SAA+B0C,GAClC,MAAM,MAAE3E,EAAK,gBAAEwlB,EAAe,aAAE+C,EAAY,iBAAEG,EAAgB,uBAAEnE,EAAsB,iBAAEd,EAAgB,QAAE7hB,EAAO,sBAAEonB,EAAqB,kBAAEC,EAAiB,oBAAE/E,EAAmB,SAAEpI,EAAQ,QAAE2L,EAAO,cAAEyB,EAAa,WAAEC,EAAU,gBAAE7I,EAAe,gBAAE8I,EAAe,kBAAEC,EAAiB,mBAAE/B,GAAwB3iB,EACvS2kB,EAAc,SAAa,KAC3B,QAAEC,EAAO,QAAEC,GAAY,WAAc,KACvC,IAAIC,GAAe,EACfC,GAAe,EACnB,IAAK,MAAM3J,KAAK2I,EACZgB,IAAiBA,EAAe,CAAC,OAAQ,SAAU,UAAUnN,SAASwD,EAAE/b,OACxEylB,IAAiBA,EAAe,CAAC,MAAO,QAAS,QAAQlN,SAASwD,EAAE/b,OAExE,MAAO,CACHwlB,QAASE,EACTH,QAASE,EACZ,GACF,CAACf,IACJ,MAAO,CACH1oB,QACA4B,UACA2mB,eACAzM,WACA2L,UACA3mB,MFkbuBigB,EElbF2H,EFoblB,IAAW3H,EAASje,KAAKid,GAAMA,EAAE8C,YAAWpO,KAAK,IAAM,KEnb1D6B,SAAU3R,EAAM2R,SAChBpW,SAAUyE,EAAMzE,SAChB6gB,SAAU2H,EACVa,UACAC,UACAjF,yBACAiB,kBACA,mBAAAtB,CAAoB9B,GAChBkH,EAAYpnB,QAAU,GACtBgiB,EAAoB9B,EACxB,EACA,sBAAAgC,CAAuBhC,GACnB,MAAMuH,EAAmB1hB,KAAK8Y,SAAS8H,WAAW9I,GAAMA,EAAEjG,KAAOsI,IAC3Dnd,GAA8B,IAAtB0kB,EAA0B,EAAIA,EACtCC,EAAc3hB,KAAK8Y,SAAS9b,GAC9B2kB,GACA3hB,KAAKic,oBAAoB9F,GAAkBwL,EAAY5lB,MAAQiB,EAAQ2kB,EAAYhH,oBAE3F,EACA,gBAAAoD,GACI,IAAIxM,EAAImC,EACR,MAAM+H,EAAoC,QAArBD,EAA6B,EAAIA,EAChDoG,EAAqH,QAAzGlO,EAA4C,QAAtCnC,EAAKvR,KAAK8Y,SAAS2C,UAAkC,IAAPlK,OAAgB,EAASA,EAAGoJ,2BAAwC,IAAPjH,EAAgBA,GAAM,GACvI,IAAdkO,GACA5hB,KAAKic,oBAAoB2F,EAEjC,EACA,oBAAA9D,GACI,IAAIvM,EAAImC,EACR,MAAM+H,EAAoC,QAArBD,EAA6B,EAAIA,EAChDoG,EAAyH,QAA7GlO,EAA4C,QAAtCnC,EAAKvR,KAAK8Y,SAAS2C,UAAkC,IAAPlK,OAAgB,EAASA,EAAG8I,+BAA4C,IAAP3G,EAAgBA,GAAM,GAC3I,IAAdkO,GACA5hB,KAAKic,oBAAoB2F,EAEjC,EACA,iBAAAC,GACI,IAAItQ,EAAImC,EACR,MAAMkO,EAA8G,QAAlGlO,EAAiC,QAA3BnC,EAAKvR,KAAK8Y,SAAS,UAAuB,IAAPvH,OAAgB,EAASA,EAAG8I,+BAA4C,IAAP3G,EAAgBA,GAAM,GAChI,IAAdkO,GACA3F,EAAoB2F,EAE5B,EACA,gBAAAE,GACI,IAAIvQ,EAAImC,EACR,MAAMkO,EAAiI,QAArHlO,EAAwD,QAAlDnC,EAAKvR,KAAK8Y,SAAS9Y,KAAK8Y,SAAS/f,OAAS,UAAuB,IAAPwY,OAAgB,EAASA,EAAGoJ,2BAAwC,IAAPjH,EAAgBA,GAAM,GACnJ,IAAdkO,GACA5hB,KAAKic,oBAAoB2F,EAEjC,EACA,SAAArD,GACI,GAAIve,KAAKqO,UAAYrO,KAAK/H,SACtB,OAEJopB,EAAYpnB,QAAU,GACtB,MAAM8nB,EAAexG,GAA+Bvb,KAAK8Y,SAAU0C,IAC7C,IAAlBuG,GACAd,EAAcc,EAAc,EAEpC,EACA,SAAAzD,GACI,GAAIte,KAAKqO,UAAYrO,KAAK/H,SACtB,OAEJopB,EAAYpnB,QAAU,GACtB,MAAM8nB,EAAexG,GAA+Bvb,KAAK8Y,SAAU0C,IAC7C,IAAlBuG,GACAd,EAAcc,GAAe,EAErC,EACA,aAAA5D,GACI,GAAIne,KAAKqO,UAAYrO,KAAK/H,SACtB,OAEJopB,EAAYpnB,QAAU,GACtB,MAAM8nB,EAAexG,GAA+Bvb,KAAK8Y,SAAU0C,IAC7C,IAAlBuG,GACAd,EAAcc,EAAczC,GAAUtf,KAAK8Y,SAASiJ,GAAchmB,OAAS,EAEnF,EACA,aAAAqiB,GACI,GAAIpe,KAAKqO,UAAYrO,KAAK/H,SACtB,OAEJopB,EAAYpnB,QAAU,GACtB,MAAM8nB,EAAexG,GAA+Bvb,KAAK8Y,SAAU0C,IAC7C,IAAlBuG,GACAd,EAAcc,IAAgBzC,GAAUtf,KAAK8Y,SAASiJ,GAAchmB,OAAS,GAErF,EACA,cAAAkiB,GACI,GAAIje,KAAKqO,UAAYrO,KAAK/H,SACtB,OAEJopB,EAAYpnB,QAAU,GACtB,MAAM8nB,EAAexG,GAA+Bvb,KAAK8Y,SAAU0C,GACnE,IAAsB,IAAlBuG,EAAqB,CACrB,MAAMzJ,EAAUtY,KAAK8Y,SAASiJ,GACE,iBAArBzJ,EAAQhN,UACf4V,EAAWa,EAAczJ,EAAQhN,SAEzC,CACJ,EACA,cAAA0S,GACI,GAAIhe,KAAKqO,UAAYrO,KAAK/H,SACtB,OAEJopB,EAAYpnB,QAAU,GACtB,MAAM8nB,EAAexG,GAA+Bvb,KAAK8Y,SAAU0C,GACnE,IAAsB,IAAlBuG,EAAqB,CACrB,MAAMzJ,EAAUtY,KAAK8Y,SAASiJ,GACE,iBAArBzJ,EAAQjN,UACf6V,EAAWa,EAAczJ,EAAQjN,SAEzC,CACJ,EACA,YAAAgT,GACI,GAAIre,KAAKqO,UAAYrO,KAAK/H,SACtB,OAGJ,GADAopB,EAAYpnB,QAAU,GACG,QAArBuhB,EAEA,YADAxb,KAAK0d,WAGT,MAAMqE,EAAexG,GAA+Bvb,KAAK8Y,SAAU0C,GACnE,IAAsB,IAAlBuG,EACA,OAEJf,EAAkBe,GAClB,MAAMzJ,EAAUtY,KAAK8Y,SAASiJ,GACxB/pB,EAAcya,GAAuB,CACvCC,iBAAkBhW,EAAMgW,iBACxBC,SAAUjW,EAAMiW,WACjBA,SAASjW,EAAMiW,UACZqP,EAAiB3J,EAAgB0J,GACvC,IAAIE,EAAeD,EAEnB,GAAqB,cAAjB1J,EAAQvc,KAAsB,CAC9B,MAAMsf,EAAO2G,EAAejP,QAAU,GAChCmP,EAAalqB,EAAY+a,QAAU,GACrCsI,IAAS6G,EACTD,EAAeD,EAAepP,IAAI,OAAQoP,EAAejP,OAAS,KAE5DsI,GAAQ6G,IACdD,EAAeD,EAAepP,IAAI,OAAQoP,EAAejP,OAAS,IAE1E,KACK,CACD,MAAMhX,EAAO0c,GAA+BH,EAAQvc,MACpDkmB,EAAeD,EAAepP,IAAI7W,EAAM/D,EAAY+D,KACxD,CACAolB,EAAgBY,EAAcE,EAClC,EACA,QAAAvE,GACI,GAAI1d,KAAKqO,UAAYrO,KAAK/H,SACtB,OAEJopB,EAAYpnB,QAAU,GACtB8mB,IACc,OAAVhpB,GACAynB,EAAQ,MAEZ,MAAM5P,EAAOwR,IACbvN,EAASjE,EACb,EACA,OAAAgP,CAAQ9e,GACJ,GAAIE,KAAKqO,UAAYrO,KAAK/H,SACtB,OAEJ,MAAM8pB,EAAexG,GAA+Bvb,KAAK8Y,SAAU0C,GACnE,IAAsB,IAAlBuG,EACA,OAEJ,MAAMzJ,EAAUtY,KAAK8Y,SAASiJ,GAC9B,IAAIjN,EAAWuM,EAAYpnB,QAAU6F,EACrC,MAAMqiB,EAAiBC,IACnB,IAAI7Q,EAAImC,EAAIC,EACZ,IAAI0O,EAAgC,UAAjB/J,EAAQvc,KAAmBqmB,EAAc,EAAIA,EAChE,MAAME,EAAkC,IAArBhK,EAAQjN,SAC3B,GAAqB,SAAjBiN,EAAQvc,MACc,KAArBuc,EAAQjN,UAAwC,KAArBiN,EAAQhN,UAQnC,GAAI+W,GAA4C,QAA3B9Q,EAAK+G,EAAQhN,gBAA6B,IAAPiG,EAAgBA,EAAK,KAC9E8Q,EAAe9J,OAAOzY,IAAyB,UAAjBwY,EAAQvc,KAAmB,EAAI,GAC7D+Y,EAAWhV,EACPuiB,GAA4C,QAA3B3O,EAAK4E,EAAQhN,gBAA6B,IAAPoI,EAAgBA,EAAK,IAEzE,YADA2N,EAAYpnB,QAAU,SAXtBmoB,EAAc,KACdC,EAAe9J,OAAOzY,IAED,KAArBwY,EAAQjN,UAAmBgX,EAAe,IAC1CA,GAAgB,IAWxB,MAAME,EAAiBF,EAAe,GAAuB,IAAjBA,GAAsBC,EAC9DC,GACArB,EAAWa,EAAcM,GAEzB9J,OAAO6J,EAAc,MAAoC,QAA3BzO,EAAK2E,EAAQhN,gBAA6B,IAAPqI,EAAgBA,EAAK,IACtFmB,EAAS/b,QAAUypB,OAAOlK,EAAQhN,UAAUvS,QAC5CsoB,EAAYpnB,QAAU,GAClBsoB,GACAviB,KAAK+d,oBAITsD,EAAYpnB,QAAU6a,CAC1B,EAEE2N,EAAiBC,IACnB,IAAInR,EACJ,MAAMnL,EAAqC,QAA1BmL,EAAK+G,EAAQlS,eAA4B,IAAPmL,EAAgBA,EAAK,GACxE,IAAI8Q,EAAeK,EAAY5I,oBAC3B6I,EAAevc,EAAQlK,QAAQga,GAAMA,EAAE0M,WAAWP,KACtD,GAA4B,IAAxBM,EAAa5pB,SACT2pB,IAAgB5iB,IAChBuiB,EAAeviB,EAAIga,oBACnB6I,EAAevc,EAAQlK,QAAQga,GAAMA,EAAE0M,WAAWP,MAE1B,IAAxBM,EAAa5pB,QAEb,YADAsoB,EAAYpnB,QAAU,IAI9B,MAAM4oB,EAAaF,EAAa,GAC1B3lB,EAAQoJ,EAAQ2E,QAAQ8X,GACT,cAAjBvK,EAAQvc,KACRmlB,EAAWa,EAAwB,IAAV/kB,EAAc,GAAK,GAG5CkkB,EAAWa,EAAc/kB,GAEzB2lB,EAAa5pB,OAAS,EACtBsoB,EAAYpnB,QAAU6a,GAGtBuM,EAAYpnB,QAAU,GACtB+F,KAAK+d,mBACT,EAEJ,OAAQzF,EAAQvc,MACZ,IAAK,MACL,IAAK,OACL,IAAK,SACL,IAAK,SACL,IAAK,OACD,IAAKwc,OAAOuK,UAAUvK,OAAOzD,IACzB,OAGJqN,EADoB5J,OAAOzD,IAE3B,MAEJ,IAAK,YACD2N,EAAc3N,GACd,MAEJ,IAAK,UACL,IAAK,QACGyD,OAAOuK,UAAUvK,OAAOzD,IAExBqN,EADoB5J,OAAOzD,IAI3B2N,EAAc3N,GAK9B,EACAuK,mBAAmB0D,IACf1B,EAAYpnB,QAAU,GACfolB,EAAmB0D,KF+J/B,IAAwBjK,CE5J/B,CCpKWkK,CAAsB,CACzBjrB,QACAuoB,eACA5N,iBAAkBhW,EAAMgW,iBACxBC,WACA4K,kBACAkD,iBAAkBF,EAAcE,iBAChCpS,SAAU3R,EAAM2R,SAChBpW,SAAUyE,EAAMzE,SAChBqkB,yBACAd,mBACA7hB,QAA+C,IAAtC8P,OAAO6G,KAAK4J,GAAenhB,OACpCgoB,sBAvCJ,WACI7G,EAAgB,CAAC,EACjBmG,EAAiB,CAAC,EACtB,EAqCIW,kBA/CJ,SAA2Be,GACvB,MAAMzJ,EAAUiI,EAAcE,iBAAiBsB,GAC3CzJ,UACO4B,EAAc5B,EAAQvc,MAEjCskB,EAAiB5W,OAAOC,OAAO,CAAC,EAAGwQ,GACvC,EA0CI+B,sBACApI,WACA2L,QAASC,EACTwB,cAjEJ,SAAuBc,EAAckB,GACjC,MAAM3K,EAAUiI,EAAcE,iBAAiBsB,GAC3CzJ,IACI4B,EAAc5B,EAAQvc,MACtB8X,EHuET,SAAoByE,EAAS1I,EAAMqT,GACtC,IAAI1R,EACJ,IAAI2R,EAA+B,QAAxB3R,EAAK+G,EAAQvgB,aAA0B,IAAPwZ,EAAgBA,EAAK,EAChE,GAAqB,cAAjB+G,EAAQvc,KACRmnB,EAAMtT,EAAKmD,QAAUnD,EAAKmD,QAAU,IAAM,GAAK,QAE9C,CACDmQ,GAAYD,EACZ,MAAME,EAAM7K,EAAQjN,SACd5D,EAAM6Q,EAAQhN,SACpB,GAAmB,iBAAR6X,GAAmC,iBAAR1b,EAAkB,CACpD,MAAM1O,EAAS0O,EAAM0b,EAAM,EAC3BD,GAAQA,EAAMC,EAAMpqB,GAAUA,EAAUoqB,CAC5C,CACJ,CACqB,SAAjB7K,EAAQvc,MAAoBqc,GAAsBE,EAAQ7X,UAC1DyiB,GAAM,QAAS,CAAEvF,MAAO,GAAGuF,IAAMnI,SAAS,EAAG,KAAMta,OAAQ6X,EAAQ7X,SAAUsL,QAEjF,MAAMhQ,EAAO0c,GAA+BH,EAAQvc,MACpD,OAAO6T,EAAKgD,IAAI7W,EAAMmnB,EAC1B,CG3FyBE,CAAW9K,EAASgI,EAAc2C,KAG3CpC,EAAUvI,EAAQvc,MACd0N,OAAO6G,KAAK4J,GAAenhB,QAAU0Q,OAAO6G,KAAKsL,GAAa7iB,QAC9D8a,EAASyM,IAIzB,EAqDIY,WAzEJ,SAAoBa,EAAckB,GAC9B,MAAM3K,EAAUiI,EAAcE,iBAAiBsB,GAC3CzJ,IACAuI,EAAUvI,EAAQvc,MAClB8X,EHmGL,SAAoByE,EAAS1I,EAAMqT,GACtC,MAAMlnB,EAAOuc,EAAQvc,KACrB,OAAQA,GACJ,IAAK,OACD,OAAO6T,EAAKgD,IAAI,OAAQwF,GAAsBE,EAAQ7X,QAChDwiB,GACA,QAAS,CACPtF,MAAO,GAAGsF,IAASlI,SAAS,EAAG,KAC/Bta,OAAQ6X,EAAQ7X,SACjBsL,QAEX,IAAK,MACL,IAAK,UACL,IAAK,QACD,OAAO6D,EAAKgD,IAAI6F,GAA+B1c,GAAOknB,GAE1D,IAAK,YAAa,CACd,MAAMI,EAAQzT,EAAKmD,OACbuQ,EAAQD,GAAS,GAEvB,OADaJ,GAAU,KACVK,EACF1T,EAEJA,EAAKgD,IAAI,OAAQ0Q,EAAQD,EAAQ,GAAKA,EAAQ,GACzD,CACA,IAAK,OAAQ,CAET,IAAIE,EAAgBN,EACpB,GAAyB,KAArB3K,EAAQjN,UAAwC,KAArBiN,EAAQhN,SAAiB,CACpD,MACMgY,EADQ1T,EAAKmD,QACI,GAClBuQ,GAA2B,KAAlBC,IACVA,EAAgB,GAEhBD,GAASC,EAAgB,KACzBA,GAAiB,GAEzB,CACA,OAAO3T,EAAKgD,IAAI,OAAQ2Q,EAC5B,CACA,IAAK,SACL,IAAK,SACD,OAAO3T,EAAKgD,IAAI7W,EAAMknB,GAG9B,OAAOrT,CACX,CGjJqB4T,CAAWlL,EAASgI,EAAc2C,IAEnD,EAoEI5K,gBA1CJ,SAAyBoL,GACrB,OAAOnD,CACX,EAyCIa,gBAxCJ,SAAyBsC,EAAexB,GACpCpO,EAASoO,EACb,EAuCIb,kBAtCJ,WACI,OAAO3O,GAAuB,CAC1BC,iBAAkBhW,EAAMgW,iBACxBC,aACDA,SAASA,EAChB,EAkCI0M,mBAjCJ,SAA4B0D,GACxB,MAAMnT,EHwVP,SAA6BmT,EAAKtiB,EAAQkS,GAC7C,IAAI/C,EAAO8L,GAAU,CAAEiC,MAAOoF,EAAKtiB,SAAQkS,aAO3C,OANI,QAAQ/C,IACJ+C,IANZ,SAAkCoQ,GAC9B,MAAO,MAAM5D,KAAK4D,IAAQ,iBAAiB5D,KAAK4D,EACpD,CAIyBW,CAAyBX,KAEtCnT,EAAOiD,GAAcjD,EADR8L,GAAU,CAAEiC,MAAOoF,EAAKtiB,aAItCmP,CACX,CGjWqB+T,CAAoBZ,EAAKtiB,EAAQkS,GAC9C,SAAI,QAAQ/C,KACR6P,EAAiB7P,IACV,EAGf,GA4BJ,CCjKA,MAAM,GAAIpY,EAAM,cACT,SAASosB,GAAUrS,GACtB,IAAI,UAAE3Z,GAAc2Z,EAAI7U,GAAQ,QAAO6U,EAAI,CAAC,cAC5C,MAAM7N,EAAQ6b,GAAkB7iB,IAC1B,WAAEsgB,GAAelB,GAAkBpY,EAAOhH,IACzCmnB,EAAUC,GAAa,YAAe,IACvC,iBAAE5X,IAAqB,EAAAC,EAAA,GAAe,CACxC,mBAAAiC,CAAoB2V,GAChBD,EAAUC,EACd,IAEJ,OAAQ,UAAM,MAAOta,OAAOC,OAAO,CAAE9R,UAAW,GAAE,KAAMA,GAAYmS,MAAOrN,EAAMqN,OAASmC,EAAkB,CAAE5S,SAAU,EAAC,SAAK0qB,EAAA,EAAWva,OAAOC,OAAO,CAAC,EAAGsT,EAAY,CAAEjlB,MAAO2L,EAAM/J,UAAYkqB,GAAYnnB,EAAM1E,YAAc,GAAKglB,EAAWjlB,UAAW,SAAKwd,GAAa,CAAE5c,KAAM+D,EAAM/D,KAAMZ,MAAO2L,EAAM3L,MAAO2d,cAAgB3d,IAAY,IAAIwZ,EAAI,OAAoF,QAA5EA,EAAKxZ,aAAqC,EAASA,EAAMksB,qBAAkC,IAAP1S,EAAgBA,EAAK,EAAE,EAAKiE,QAAUzd,IAC7c2L,EAAM8b,QAAQznB,EAAM,EACrBE,SAAUyL,EAAMzL,SAAUwd,KAAM/Y,EAAM+Y,UACzD,CClBA,MAAM,GAAIje,EAAM,mBACT,SAAS0sB,IAAe,MAAExnB,EAAK,MAAEgH,IACpC,IAAI6N,EAAImC,EACR,IAAI3X,EAAO,OAOX,OANI2H,EAAM6d,SAAW7d,EAAM4d,QACvBvlB,EAAO,iBAEF2H,EAAM6d,UACXxlB,EAAO,SAEH,SAAK,QAAS,CAAEnE,UAAW,KAAKK,SAAUyE,EAAMzE,SAAU8D,KAAMA,EAAMhE,MAAOosB,GAAazgB,EAAM0gB,eAAe9D,aAAcvkB,GAAOnD,GAAI8D,EAAM9D,GAAIuqB,IAAKgB,GAAuC,QAAzB5S,EAAK7U,EAAM2O,gBAA6B,IAAPkG,OAAgB,EAASA,EAAGoB,SAASjP,EAAMiP,UAAW5W,GAAO0L,IAAK0c,GAAuC,QAAzBzQ,EAAKhX,EAAM4O,gBAA6B,IAAPoI,OAAgB,EAASA,EAAGf,SAASjP,EAAMiP,UAAW5W,GAAO0V,UAAW,EAAG3Z,SAAWuS,IAC7Y,IAAIkH,EAAImC,EACR,GAAIhX,EAAM2R,SACN,OAEJ,MAAMyG,EAAWzK,EAAEuT,OAAO7lB,MAC1B,GAAI+c,EAAU,CACV,MAAMuP,GAAY,QAAS,CACvB1G,MAAO7I,EACPrU,OAAQ6jB,GAAcvoB,GACtB4W,SAAU,WACXA,SAASjP,EAAMiP,UAAU,GAC5B,IAAIR,EAAUzO,EAAM4d,QACd+C,EACA5R,GAAuB,CACrBC,iBAAoD,QAAjCnB,EAAK7U,EAAMgW,wBAAqC,IAAPnB,OAAgB,EAASA,EAAGoB,SAASjP,EAAMiP,UACvGA,SAAUjP,EAAMiP,WAGpBR,EADAzO,EAAM6d,QACI1O,GAAcV,EAASkS,GAE5B3gB,EAAM3L,MACD8a,GAAcV,EAASzO,EAAM3L,MAAM4a,SAASjP,EAAMiP,WAGlDE,GAAcV,EAASM,GAAuB,CACpDC,iBAAoD,QAAjCgB,EAAKhX,EAAMgW,wBAAqC,IAAPgB,OAAgB,EAASA,EAAGf,SAASjP,EAAMiP,UACvGA,SAAUjP,EAAMiP,YAGxBjP,EAAMmQ,SAAS1B,EACnB,MAEIzO,EAAMmQ,SAAS,KACnB,GAEZ,CACA,SAASyQ,GAAcvoB,GACnB,OAAQA,GACJ,IAAK,OACD,MAAO,QAEX,IAAK,iBACD,MAAO,mBAEX,QACI,MAAO,aAGnB,CACA,SAASooB,GAAavU,EAAM7T,GACxB,IAAK6T,EACD,MAAO,GAEX,MAAMnP,EAAS6jB,GAAcvoB,GAC7B,OAAO6T,EAAKnP,OAAOA,EACvB,CCpEA,MAAM,GAAIjJ,EAAM,eACT,SAAS+sB,IAAW,KAAE5iB,EAAI,KAAE6iB,IAC/B,OAAQ,SAAK,OAAQ,CAAE5sB,UAAW,GAAE,CAAE+J,SAASrI,UAAU,SAAK,OAAQ,CAAE1B,UAAW,GAAE,QAAS0B,UAAU,SAAKuI,EAAAmI,EAAM,CAAE/O,KAAMupB,OAC/H,C,gBCPO,SAASC,GAAsB9iB,GAClC,OAAQA,GACJ,IAAK,KACD,MAAO,IAEX,IAAK,IACD,MAAO,IAEX,IAAK,IACD,MAAO,KAEX,QACI,MAAO,IAGnB,CCfO,SAAS+iB,MAAc/b,GAC1B,MAAMgc,EAASlb,OAAOC,OAAO,CAAC,EAAGf,EAAK,IACtC,IAAK,IAAIgH,EAAI,EAAGA,EAAIhH,EAAK5P,OAAQ4W,IAAK,CAClC,MAAMjT,EAAQiM,EAAKgH,GACnB,GAAKjT,EAGL,IAAK,MAAMoD,KAAO2J,OAAO6G,KAAK5T,GAAQ,CAClC,MAAMkoB,EAAOD,EAAO7kB,GACd+kB,EAAQnoB,EAAMoD,GACA,mBAAT8kB,GACU,mBAAVC,GACP/kB,EAAI8iB,WAAW,OACf9iB,EAAIglB,WAAW,IAAc,IAC7BhlB,EAAIglB,WAAW,IAAc,GAC7BH,EAAO7kB,GAAOilB,GAAMH,EAAMC,GAK1BF,EAAO7kB,GAHM,cAARA,GACW,iBAAT8kB,GACU,iBAAVC,EACOD,EAAO,IAAMC,EAEd,iBAAR/kB,GACW,iBAAT8kB,GACU,iBAAVC,EACOH,GAAWE,EAAMC,QAGP7qB,IAAV6qB,EAAsBD,EAAOC,CAEnD,CACJ,CACA,OAAOF,CACX,CACA,SAASI,MAASC,GACd,MAAO,IAAIrc,KACP,IAAK,MAAMb,KAAMkd,EACK,mBAAPld,GACPA,KAAMa,EAEd,CAER,C,yFCtCa,IAAO,EAAA6B,EAAA,GAAoB,CAAEC,GAAE,MAAI,IAAI,GAAGP,gBCJhD,SAAS+a,GAAiBltB,GAC7B,GAAKA,EAGL,MAAO,UAAWA,GAAS,QAASA,EAAQA,EAAM6Z,MAAQ7Z,CAC9D,CCDO,MAAMmtB,GCDN,UAAgC,mBAAEC,EAAkB,cAAEtS,EAAa,YAAEuS,EAAW,YAAEC,EAAW,kBAAE9F,IAClG,OAAO,SAA4B7iB,GAC/B,IAAI6U,EACJ,MAAM,SAAEtZ,EAAQ,SAAEoW,GAAa3R,GACxB4oB,EAAQC,GAAW,YAAe,IAClCxtB,EAAO8b,IAAY,EAAAC,GAAA,GAAmBpX,EAAM3E,MAAqC,QAA7BwZ,EAAK7U,EAAMqX,oBAAiC,IAAPxC,EAAgBA,EAAK,KAAM7U,EAAMjD,WAC1H+rB,EAAmBC,GAAmB,WAAe,OACrDC,EAAmBC,GAAmB,WAAe,MACtDpR,EAAgBrB,GAAmBmS,EAAY3oB,EAAM3E,QAAUstB,EAAY3oB,EAAMqX,eAAiBrX,EAAMgW,kBACxGC,EAAWjW,EAAMiW,UAAY4B,EACnC,IAAIqR,EAAeJ,EACfK,EAAeH,EACnB,MAAMjlB,EAAS/D,EAAM+D,QAAU,IACzBqlB,EAAc,CAAClW,EAAMkD,KACnB7a,GAAYoW,IAGhBwF,EAASuR,EAAYvS,EAAcjD,EAAMkD,GAAOyB,IAChDkR,EAAgB,MAChBE,EAAgB,MAAK,EAEnBvB,EAAiB7E,EAAkB9V,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGhN,GAAQ,CAAE3E,QAC/E,QAAA0B,CAASmW,GACDA,EACAkW,EAAYlW,EAAMA,GAGlBiE,EAAS,KAEjB,EACA5b,WACAoW,WAAUkP,gBAAiB7gB,EAAM6gB,gBAAiBlS,SAAU3O,EAAM2O,SAAUC,SAAU5O,EAAM4O,SAAU+J,kBAAmB3Y,EAAM2Y,kBAAmB5U,SAAQiS,iBAAkBhW,EAAMgW,iBAAkBC,cAClMoT,EAAa,WAAc,IACV3B,EAAetL,SAASkN,MAAMlO,GAAiB,WAAXA,EAAE/b,OACrC,MAAQ,MAC7B,CAACqoB,EAAetL,WA2CnB,OA1CI/gB,IACA6tB,EAAeR,EAAYrtB,EAAO4a,GAC9ByR,EAAe7C,UACfsE,EAAeT,EAAYrtB,EAAO4a,KAoCtCyR,EAAe7C,UAAYsE,IAC3BA,EAAezB,EAAe9D,cAE3B,CACHvoB,QACA,QAAA8b,CAAS1B,GACDzV,EAAM2R,UAAY3R,EAAMzE,UAIxB4b,EADA1B,EACSiT,EAAYjT,EAASoC,GAGrB,KAEjB,EACA0R,UAAWL,EACXM,UAAWL,EACXM,aAlDgBrR,IAChB,GAAI7c,GAAYoW,EACZ,OAEJ,MAAM+X,GAAehC,EAAe7C,QAChC6C,EAAe7C,QACXsE,GAAgBO,EAChBN,EAAYhR,EAAU+Q,GAAgB/Q,GAGtC2Q,EAAgB3Q,GAIpBgR,EAAYhR,EAAUA,GAEtBsR,GACAb,GAAQ,EACZ,EAiCAc,aA/BgBvR,IAChB,GAAI7c,GAAYoW,EACZ,OAEJ,MAAMiY,EAAUxR,QAA2CA,EAAWqQ,EAAmBzoB,EAAMgW,iBAAkBC,GAC7GiT,EACAE,EAAYF,EAAcU,GAG1BX,EAAgBW,EACpB,EAsBAruB,WACAoW,WACA5N,SACA6gB,QAAS8C,EAAe9C,QACxBC,QAAS6C,EAAe7C,QACxBwE,aACApT,WACA2S,SACA,OAAAC,CAAQgB,IACCA,IAAcxuB,GAAS6tB,GAAgBxB,EAAe7C,SACvDuE,EAAYF,EAAcC,GAAgBV,EAAmBzoB,EAAMgW,iBAAkBhW,EAAMiW,WAE/F4S,EAAQgB,EACZ,EACAnC,iBAER,CACJ,CD/GkCoC,CAAuB,CACrDrB,mBAMJ,SAA4BzS,EAAkBC,GAC1C,OAAOF,GAAuB,CAAEC,mBAAkBC,YACtD,EAPIE,cAAa,GACbuS,YAAa,CAACxV,EAAM+C,IAAa/C,EAAK+C,SAASA,GAC/C0S,YAAaJ,GACb1F,kBAAiB,KERR,GAAI/nB,EAAM,eCchB,SAASivB,GAAWlV,GACvB,IAAI,UAAE3Z,GAAc2Z,EAAI7U,GAAQ,QAAO6U,EAAI,CAAC,cAC5C,MAAMmV,EAAY,SAAa,MACzBhjB,EAAQwhB,GAAmBxoB,IAC3B,WAAEiqB,EAAU,WAAEC,EAAU,oBAAEC,EAAmB,WAAElhB,EAAU,cAAE+F,EAAa,eAAEob,GCX7E,SAA4BpjB,EAAO6N,GACtC,IAAI,QAAElF,EAAO,OAAEE,GAAWgF,EAAI7U,GAAQ,QAAO6U,EAAI,CAAC,UAAW,WAC7D,MAAOsS,EAAUC,GAAa,YAAe,IACvC,iBAAE5X,IAAqB,EAAAC,EAAA,GAAe,CACxCC,cAAeC,EACfC,aAAcC,EACd,mBAAA6B,CAAoB2V,GAChBD,EAAUC,GACLA,GACDrgB,EAAM6hB,SAAQ,EAEtB,KAEE,WAAEvI,GAAelB,GAAkBpY,EAAM0gB,eAAgB1nB,GACzDqf,EAAW,SAAa,MACxBgL,GAAY,EAAAC,GAAA,GAAWjL,EAAUiB,EAAWK,YAC5C4J,EAAc,SAAa,MAC3BC,EAAoB,SAAa,MACjCC,EAAW,SAAa,MAC9B,SAASC,IACL9f,YAAW,KACP,IAAIiK,EACwB,QAA3BA,EAAKwK,EAAS9hB,eAA4B,IAAPsX,GAAyBA,EAAG/D,OAAO,GAE/E,CACA,MAAM6Z,EAAW3jB,EAAM6d,UAAY7d,EAAM4d,QACzC,MAAO,CACHqF,WAAYld,OAAOC,OAAOD,OAAOC,OAAO,CAAET,IAAKke,EAAU1V,UAAW,EAAGnW,KAAM,SAAW4Q,GAAmB,CAAEnC,MAAOrN,EAAMqN,MAAO,gBAAiBrG,EAAMzL,eAAY+B,EAAWsU,UAAYjE,IAC9Kgd,IAAYhd,EAAE6T,QAAqB,cAAV7T,EAAEvK,KAAiC,YAAVuK,EAAEvK,MACrDuK,EAAEkE,iBACFlE,EAAEid,kBACF5jB,EAAM6hB,SAAQ,GAClB,IAERqB,WAAYlC,GAAW1H,EAAYtZ,EAAM0gB,eAAezqB,UAAYkqB,GAAYnnB,EAAM1E,YAChF,CAAED,MAAO,SACTiC,EAAW,CAAEqjB,WAAY0J,IAC/BF,oBAAqB,CACjB5d,IAAKie,EACLvlB,KAAM8iB,GAAsB/nB,EAAMiF,MAClC1J,SAAUyL,EAAMzL,SAChBsD,WAAY,CACR,aAAc,GAAK,YACnB,gBAAiB,SACjB,gBAAiBmI,EAAM4hB,QAE3B1jB,KAAM,iBACNf,QAAS,KACLijB,GAAU,GACVpgB,EAAM6hB,SAAS7hB,EAAM4hB,OAAO,GAGpC3f,WAAY,CACR4hB,KAAM7jB,EAAM4hB,OACZkC,gBAAiB,KACb9jB,EAAM6hB,SAAQ,GACd6B,GAAY,EAEhBK,eAAiBpd,IACb,IAAIkH,EACAlH,EAAEuT,SAAWsJ,EAAkBjtB,SAC/ByJ,EAAM6hB,SAAQ,GAEdlb,EAAEuT,SAAuC,QAA3BrM,EAAK4V,EAASltB,eAA4B,IAAPsX,OAAgB,EAASA,EAAGmW,SAASrd,EAAEuT,UACxFwJ,GACJ,EAEJO,WAAW,GAEfjc,cAAe,CACXzC,IAAKge,EACLpS,WAAW,EACXlT,KAAqB,MAAfjF,EAAMiF,KAAe,IAAMjF,EAAMiF,KACvC1J,SAAUyE,EAAMzE,SAChBoW,SAAU3R,EAAM2R,SAChB5U,SAAW8P,IACP7F,EAAMyiB,aAAa5c,GACd7F,EAAM6d,SACP6F,GACJ,EAEJrvB,MAAO2L,EAAM0gB,eAAe9D,aAC5BjV,SAAU3O,EAAM2O,SAChBC,SAAU5O,EAAM4O,SAChB+J,kBAAmB3Y,EAAM2Y,kBACzB1C,SAAUjP,EAAMiP,UAEpBmU,eAAgB,CACZ/uB,MAAO2L,EAAMwiB,UACbxT,iBAAkBuS,GAAiBvhB,EAAM0gB,eAAe9D,cACxD7mB,SAAUiK,EAAM2iB,aAChB5lB,OAAQiD,EAAMqiB,WACd1X,SAAU3K,EAAM2K,SAChBpW,SAAUyL,EAAMzL,SAChB0a,SAAUjP,EAAMiP,SAChBsK,SAAUvgB,EAAMugB,SAChBtb,KAAMjF,EAAMiF,MAGxB,CDxFuGimB,CAAmBlkB,EAAOhH,GACvHmrB,GAAW,EAAAC,EAAA,KACXC,EAAarkB,EAAM6d,UAAY7d,EAAM4d,QAC3C,OAAQ,UAAM,MAAO7X,OAAOC,OAAO,CAAE9R,UAAW,GAAE,KAAMA,IAAc+uB,EAAY,CAAErtB,SAAU,CAACuuB,GAAY,SAAK3D,GAAgB,CAAExnB,MAAOA,EAAOgH,MAAOA,KAAcqkB,IAAe,SAAK,MAAO,CAAE9e,IAAKyd,EAAW9uB,UAAW,GAAE,gBAAiB0B,UAAU,SAAK0uB,EAAA,EAAOve,OAAOC,OAAO,CAAEgd,UAAWA,GAAa/gB,EAAY,CAAErM,UAAU,UAAM,MAAO,CAAE1B,UAAW,GAAE,iBAAkB0B,SAAU,CAA2B,mBAAnBoD,EAAMpD,SAA2BoD,EAAMpD,SAASoS,IAAmB,SAAK,GAAUjC,OAAOC,OAAO,CAAC,EAAGgC,IAAkBhI,EAAM6d,UAAY,SAAK,MAAO,CAAE3pB,UAAW,GAAE,sBAAuB0B,UAAU,SAAKsqB,GAAWna,OAAOC,OAAO,CAAC,EAAGod,eAAmC,SAAK9C,EAAA,EAAWva,OAAOC,OAAO,CAAC,EAAGkd,EAAY,CAAEhvB,UAAW,GAAE,QAAS,CAAEqwB,OAAQJ,IAAa5K,UAAW4K,GAAYjB,EAAW3J,SAAUE,YAAY,UAAM,WAAgB,CAAE7jB,SAAU,EAAEuuB,IAAaE,IAAe,SAAKrmB,EAAA,EAAQ+H,OAAOC,OAAO,CAAC,EAAGmd,EAAqB,CAAEvtB,UAAU,SAAKuI,EAAAmI,EAAM,CAAE/O,KAAM,QAAuB4sB,GAAYE,IAAe,SAAKxD,GAAY,CAAE5iB,KAAMklB,EAAoBllB,KAAM6iB,KAAM,IAAeqD,IAAa,SAAKtD,GAAY,CAAE5iB,KAAMklB,EAAoBllB,KAAM6iB,KAAMuD,EAAa,EAAY,WAA0B,SAAKxS,GAAa,CAAE5c,KAAM+D,EAAM/D,KAAMZ,MAAO2L,EAAM3L,MAAO2d,cAAgB3d,IAAY,IAAIwZ,EAAI,OAAoF,QAA5EA,EAAKxZ,aAAqC,EAASA,EAAMksB,qBAAkC,IAAP1S,EAAgBA,EAAK,EAAE,EAAKiE,QAAUzd,IAC13C2L,EAAMmQ,SAAS9b,EAAM,EACtBE,SAAUyL,EAAMzL,SAAUwd,KAAM/Y,EAAM+Y,UACzD,CEzBO,SAASyS,GAASC,EAAkBC,GACvC,GAAoB,MAAhBD,EAAS,GACT,OAAOA,EAGc,IAADE,OAAXruB,IAATouB,IACAA,GAAa,QAANC,EAAAnhB,cAAM,IAAAmhB,OAAA,EAANA,EAAQC,SAASC,WAAY,IAGxC,IAAMC,EAAQJ,EAAKK,MAAM,KACnBC,EAAQP,EAASM,MAAM,KAC7BD,EAAMG,MACN,IAAK,IAAIhZ,EAAI,EAAGA,EAAI+Y,EAAM3vB,OAAQ4W,IACd,KAAZ+Y,EAAM/Y,KAGM,MAAZ+Y,EAAM/Y,GACN6Y,EAAMG,MAENH,EAAM7tB,KAAK+tB,EAAM/Y,KAGzB,OAAO6Y,EAAMhc,KAAK,IACtB,C,IC+BUoc,G,yJCpDJC,IAAOC,E,SAAAA,IAAe,OAAQC,GAAAA,GAAWC,QAElCC,GAA8B,uBAC9BC,GAAwB,iBAExBC,GAAgB,CAACN,KAAAA,I,YDKjBO,GAAY,SAAC1lB,GAAoB,OAAKA,EAAM2lB,KAAKC,QAAQC,MAAO,EAChEC,GAAoB,SAAC9lB,GAAoB,OAAKA,EAAM2lB,KAAKC,QAAQG,cAAe,EAGhFC,GAAwB,SAAChmB,GAAoB,OACtDA,EAAM2lB,KAAKC,QAAQK,kBAAmB,EAE7BC,GAAU,SAAClmB,GACpB,OAAI8lB,GAAkB9lB,IACX0M,EAAAA,GAAAA,MAEJ1M,EAAM2lB,KAAKC,QAAQ1Z,IAC9B,EAEaia,IAAUC,EAAAA,GAAAA,IAAe,CAACJ,KAAwB,SAACK,GAC5D,OAAOC,GAAAA,GAAMC,YAAYF,EAC7B,IAEaG,IAAkBJ,EAAAA,GAAAA,IAC3B,CAACJ,GAAuBE,GAjBJ,SAAClmB,GAAoB,OAAKA,EAAM2lB,KAAKC,QAAQjG,KAAM,EACjD,SAAC3f,GAAoB,OAAKA,EAAM2lB,KAAKC,QAAQa,OAAQ,IAiB3E,SAACJ,EAAcna,EAAMyT,EAAO8G,GACxB,IAAIxnB,EAeJ,OAde,IAAX0gB,IAA6B,IAAb8G,IAGhBxnB,EAAOonB,EAFO1G,EAAQ+G,EAAAA,GAAcD,MAIhCxnB,GAAInH,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACGmH,GAAI,IACPiN,KAAMya,IAAOza,GACRgD,IAAI,CAACG,KAAMsQ,EAAOrQ,OAAQmX,IAC1B1pB,OAAO,uBAKjBkC,CACX,IAGS2nB,GAAiB,SAAC5mB,GAAoB,OAAKA,EAAM2lB,KAAKC,QAAQiB,WAAY,EAY1EC,IAVH5B,GAAQrwB,IAAKE,GAAAA,EAAGJ,SAAU,MAAMoyB,OAC/BlyB,IAAKqwB,IAAO,SAACjwB,GAChB,MAAO,CACHmH,IAAKnH,EACLZ,MAAOY,EACPqC,OAAQvC,GAAAA,EAAGJ,SAASM,IAAS,CAACA,KAAAA,IAAOA,KAE7C,KAKS+xB,IAAuCZ,EAAAA,GAAAA,IAAea,GAAAA,IAAgB,SAACC,GAChF,OAAOA,EAAW3B,GAA6BE,GAAcN,OAAS,EAC1E,IEzDagC,GAAgC,SAACnnB,GAAoB,OAC9DA,EAAM2lB,KAAKyB,SAASC,cAAe,EAC1BC,GAA0B,SAACtnB,GAAoB,OAAKA,EAAM2lB,KAAKyB,SAASG,QAAS,EACjFC,GAAwB,SAACxnB,GAAoB,OAAKA,EAAM2lB,KAAKyB,SAASK,MAAO,EAC7EC,GAAyB,SAAC1nB,GAAoB,OAAKA,EAAM2lB,KAAKyB,SAASO,OAAQ,EAC/EC,GAAsB,SAAC5nB,GAAoB,OAAKA,EAAM2lB,KAAKyB,SAAS7vB,IAAK,EACzEswB,GAA6B,SAAC7nB,GAAoB,OAAKA,EAAM2lB,KAAKyB,SAASU,WAAY,EAEvFC,GAAwC,SAAC/nB,GAAoB,OACtEA,EAAM2lB,KAAKyB,SAASY,sBAAuB,EAGlCC,GAAgC,SAACjoB,GAAoB,OAC9DA,EAAM2lB,KAAKyB,SAASc,cAAe,EAK1BC,IAAgC/B,EAAAA,GAAAA,IACzC,CAACY,KACD,SAACoB,GACG,OAAOA,GAAO,EAClB,IAGSC,IAA+BjC,EAAAA,GAAAA,IACxC,CAAC+B,KACD,SAACG,GACG,OAAOA,EAAQC,MAAK,SAAC3xB,GAAI,OAAKA,EAAK4xB,SAAS,GAChD,IAUSC,IAA+BrC,EAAAA,GAAAA,IACxC,CAjCoC,SAACpmB,GAAoB,OAAKA,EAAM2lB,KAAKyB,SAASsB,aAAc,EAGrD,SAAC1oB,GAAoB,OAChEA,EAAM2lB,KAAKyB,SAASuB,gBAAiB,EAgCjCN,KAEJ,SAACK,EAAeC,EAAkBC,GAC9B,OAAKA,GAAkBD,EAIhBC,EAAcC,kBAAkBrM,QACnC,SAACsM,EAAK7zB,GAEF,OADA6zB,EAAI7zB,IAAQ,EACL6zB,CACX,GACA,CAAC,GARMJ,CAUf,IAGSK,IAAgC3C,EAAAA,GAAAA,IACzC,CA9CqC,SAACpmB,GAAoB,OAC1DA,EAAM2lB,KAAKyB,SAAS4B,cAAe,EA6CAP,KACnC,SAACrzB,EAAOszB,GACJ,IAAMO,EAASC,KAAQ9zB,EAAO,gBAC9B+zB,EAA0BxoB,KAAWsoB,GAAQ,SAAAh1B,GAAA,IAAEgB,EAAIhB,EAAJgB,KAAI,OAAMyzB,EAAczzB,EAAK,IAACm0B,GAAAvuB,EAAAA,EAAAA,GAAAsuB,EAAA,GAAtEnmB,EAAMomB,EAAA,GACb,OADsBA,EAAA,GACP1xB,OAAOsL,EAC1B,IAGSqmB,IAAwBjD,EAAAA,GAAAA,IACjCa,GAAAA,IACA,SAACC,GAAU,OAAKA,EAAW1B,GAAuBH,GAAAA,GAAWC,SAAWgE,EAAAA,GAAQC,QAAQ,I,mCC/C5F,SAASC,GAAiBC,GACtB,OAAO5B,GAA2B4B,IACtC,CAEA,IAAMC,GAAmB,GAEZC,GAA8C,GAAnBD,GAAwB,IAE5DE,GAAsC,CAACC,OAAQ,WAAO,GA6FnD,SAASC,GAA8B1a,GAC1C,MAAO,CAAC/W,KAAM0xB,EAAAA,GAAuBxyB,KAAM,CAAC8vB,eAAgBjY,GAChE,CAiBA,SAAS4a,GACLlrB,EACA7J,EACAg1B,EACAC,GAEA,OAAO,SAACzpB,EAAU0pB,GACd,IAAKN,GAAUjC,GAAoBuC,KAAYl1B,IAAS,CAAC,GAApD40B,OAKL,OAJIA,GACAA,IAGGvD,GAAAA,GAAMZ,UAAU5mB,EAAS7J,EAAMg1B,EAAMC,GAAI,SAACE,GAC7CP,EAASO,EAAEP,MACf,IACKtoB,MAAK,SAACsE,GACH,GAAI2jB,GAAiBW,KAAcrrB,EAAnC,CAIA,IAAMvH,GAAIO,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACH8vB,GAAoBuC,MAAW,IAAAxwB,EAAAA,GAAAA,GAAA,GACjC1E,EAAO,CACJ40B,OAAAA,EACAQ,WAAY/D,GAAAA,GAAMgE,wBAAwBzkB,EAAG6jB,OAGrDjpB,EAAS,CAACpI,KAAM0xB,EAAAA,GAAuBxyB,KAAM,CAACA,KAAAA,IAT9C,CAUJ,IAAE,OACK,SAAC8B,GACJ,IAAKitB,GAAAA,GAAMiE,kBAAkBlxB,GAAQ,CACjC,IAAM9B,GAAIO,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACH8vB,GAAoBuC,MAAW,IAAAxwB,EAAAA,GAAAA,GAAA,GACjC1E,EAAO,CAACoE,MAAAA,KAEboH,EAAS,CAACpI,KAAM0xB,EAAAA,GAAuBxyB,KAAM,CAACA,KAAAA,IAClD,CACJ,GACR,CACJ,CAEO,SAASizB,GAA6BC,GACzC,OAAO,SAAChqB,EAAU0pB,GACd,IAAMnqB,EAAQmqB,IACRrrB,EAAU+oB,GAA2B7nB,GACrCiqB,EAAO3C,GAAwBtnB,GAC/BkqB,EAAK1C,GAAsBxnB,GAC7BiqB,GAAQC,GACRzpB,EAASupB,GAAgBlrB,EAAS2rB,EAAYR,EAAMC,GAE5D,CACJ,CAoBO,SAASQ,GAAiCr2B,GAC7C,OAAO,SAACoM,EAAU0pB,GACd,IAAMnqB,EAAQmqB,IACRQ,EAAoBlC,GAA6BzoB,GACnD4qB,EAA0B,GACxBlC,EAA0C,CAAC,EAC5Cr0B,EAMDu2B,EAAW/1B,IAAK81B,GAAmB,SAACE,EAAa51B,GAAY,OAAKA,CAAI,IALtD8zB,GAA8B/oB,GACtC8qB,SAAQ,SAAAt1B,GAAa,IAAXP,EAAIO,EAAJP,KACdyzB,EAAczzB,IAAQ,CAC1B,IAKJwL,EAAS,CACLpI,KAAM0yB,EAAAA,GACNxzB,KAAM,CAACmxB,cAAAA,KAGXkC,EAASE,SAAQ,SAAC71B,GACdwL,EAAS+pB,GAA6Bv1B,GAC1C,GACJ,CACJ,CAEO,SAAS+1B,GACZhD,GAEA,MAAO,CAAC3vB,KAAM0xB,EAAAA,GAAuBxyB,KAAM,CAACywB,uBAAAA,GAChD,CAuCO,SAASiD,GACZh2B,GAEA,OAAO,SAACwL,GACJA,EAAS,CACLpI,KAAM0xB,EAAAA,GACNxyB,KAAM,CAAC2wB,eAAgBjzB,IAE/B,CACJ,CAEO,SAASi2B,GAAyBj2B,GACrC,OAAO,SAACwL,EAAU0pB,GACd,OAAO1pB,GAAS0qB,EAAAA,GAAAA,IAAc5F,GAA6BE,GAAcN,OACpE5jB,MAAK,WACF,IACM+mB,EADaH,GAA8BgC,KACtB3xB,QAAO,SAAC5B,GAAI,OAAKA,EAAK3B,OAASA,CAAI,IAC9D,OAAOwL,GACH2qB,EAAAA,GAAAA,IAAW7F,GAA6BE,GAAcN,KAAMmD,GAEpE,IAAE,OACK,SAACjvB,GAAgB,IAADgyB,EACb9zB,GAAO8B,SAAe,QAAVgyB,EAALhyB,EAAOiyB,gBAAQ,IAAAD,OAAA,EAAfA,EAAiB9zB,OAAQ8B,EAC/BwD,EAAWtF,EAAXsF,SAEP,IAAIlB,GAAAA,GAAUc,IAAI,CACdxH,KAAM,gBACN0H,YAAY,EACZD,MAAO,SACPE,QAASC,EACTvF,MAAO,8BACP2F,QAAS,CAAC,CAACC,MAAO,QAASC,QAAS,kBAAMC,EAAAA,GAAAA,IAAe7F,EAAK,KAEtE,GACR,CACJ,CAEO,SAASg0B,GAAgCt2B,GAC5C,OAAO,SAACwL,EAAU0pB,GACd,OAAO1pB,GAAS0qB,EAAAA,GAAAA,IAAc5F,GAA6BE,GAAcN,OAAO5jB,MAAK,WAEjF,IADA,IAAM+mB,GAAOtwB,EAAAA,GAAAA,GAAOmwB,GAA8BgC,MACzCle,EAAI,EAAGA,EAAIqc,EAAQjzB,SAAU4W,EAAG,CACrC,IAAMrV,EAAO0xB,EAAQrc,GACjBrV,EAAK3B,OAASA,EACdqzB,EAAQrc,IAAEnU,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAOlB,GAAI,IAAE4xB,WAAY5xB,EAAK4xB,YACjC5xB,EAAK4xB,YACZF,EAAQrc,IAAEnU,EAAAA,EAAAA,GAAA,GAAOlB,UACV0xB,EAAQrc,GAAc,UAErC,CACA,OAAOxL,GACH2qB,EAAAA,GAAAA,IAAW7F,GAA6BE,GAAcN,KAAMmD,IAC/D,OAAO,SAACjvB,GAAgB,IAADmyB,EACdj0B,GAAO8B,SAAe,QAAVmyB,EAALnyB,EAAOiyB,gBAAQ,IAAAE,OAAA,EAAfA,EAAiBj0B,OAAQ8B,EAC/BwD,EAAWtF,EAAXsF,SAEP,IAAIlB,GAAAA,GAAUc,IAAI,CACdxH,KAAM,oBACN0H,YAAY,EACZD,MAAO,SACPE,QAASC,EACTvF,MAAO,sCACP2F,QAAS,CAAC,CAACC,MAAO,QAASC,QAAS,kBAAMC,EAAAA,GAAAA,IAAe7F,EAAK,KAEtE,GACJ,GACJ,CACJ,CA4BO,SAASk0B,GAAsBC,GAClC,OAAO,SAACjrB,EAAU0pB,GACEd,GAAsBc,OACtBuB,GACZjrB,GAAS2qB,EAAAA,GAAAA,IAAW5F,GAAuBH,GAAAA,GAAWC,OAAQoG,GAEtE,CACJ,C,wCC9XMC,GAAW,I,SAAIC,GAEd,SAASC,GAAUhG,GACtB,MAAO,CACHxtB,KAAMyzB,EAAAA,GACNv0B,KAAM,CAACsuB,OAAAA,GAEf,CAsBO,SAASkG,GAAsB93B,GAA2B,IAAzB6K,EAAO7K,EAAP6K,QAAS+mB,EAAM5xB,EAAN4xB,OAAQ3Z,EAAIjY,EAAJiY,KACrD,OAAO,SAACzL,GACJA,EAAS,CAACpI,KAAM2zB,EAAAA,GAAgBC,UAChCN,GAASO,oBAET5F,GAAAA,GAAM6F,mBAAmBrtB,EAAS+mB,EAAQ3Z,EAAMyf,GAASS,iBACpD7qB,MAAK,SAAChK,GACH,IAAM0uB,EAAqBK,GAAAA,GAAMgE,wBAC7B/yB,EACA80B,EAAAA,GAAc3F,EAAAA,IAElBjmB,EAAS,CACLpI,KAAM2zB,EAAAA,GAAgBM,QACtB/0B,KAAM,CAAC0uB,mBAAAA,IAEf,IAAE,OACK,SAAC5sB,GACAitB,GAAAA,GAAMiE,kBAAkBlxB,GACxBoH,EAAS,CAACpI,KAAM2zB,EAAAA,GAAgBO,YAEhC9rB,EAAS,CACLpI,KAAM2zB,EAAAA,GAAgBQ,QACtBj1B,KAAM,CAAC8B,MAAAA,IAGnB,GACR,CACJ,CAEO,SAASozB,GAAe5F,GAC3B,OAAO,SAACpmB,EAAU0pB,GACd,IAAMnqB,EAAQmqB,IACRtE,EAASH,GAAU1lB,GACnBkM,EAAOga,GAAQlmB,GAGrB,OADAS,EAAS,CAACpI,KAAMq0B,EAAAA,GAAkBn1B,KAAM,CAACsvB,YAAAA,KAClCpmB,EAASsrB,GAAuB,CAACjtB,QAAS+nB,EAAahB,OAAAA,EAAQ3Z,KAAAA,IAC1E,CACJ,C,gBC3Ee,SAASygB,KACpB,IAAMlsB,GAAWmsB,EAAAA,EAAAA,MAEX5xB,GAAU+D,EAAAA,EAAAA,IAAYgpB,IAEtB8E,EAAc,WAAH,OAASpsB,EAASuqB,IAAmC,GAAQ,EAExE1C,GAAUvpB,EAAAA,EAAAA,IAAYioB,IACtB8F,EAAel4B,EAAAA,aACjB,SAACK,GACG,IAAK,IAAIgX,EAAI,EAAGA,EAAIqc,EAAQjzB,SAAU4W,EAClC,GAAIhX,IAASqzB,EAAQrc,GAAGhX,KACpB,MAAO,yBAInB,GACA,CAACqzB,IAGL,OACI3yB,EAAAA,EAAAA,KAACmE,GAAAA,GAAU,CACPkB,QAASA,EACT+xB,YAAa,CACTz1B,MAAO,iBAEX01B,MAAO,SAACjb,GACJ,IAAAkb,EAA0Blb,EAAKoY,WAAW+C,OAAnCj4B,EAAIg4B,EAAJh4B,KAAMuzB,EAASyE,EAATzE,UACPJ,EAAM3nB,EF+NrB,SAA+BxL,EAAcuzB,GAChD,OAAO,SAAC/nB,EAAU0pB,GACd,IAAMgD,EAAS1E,GAA6B0B,KAC5C,OAAO1pB,GAAS0qB,EAAAA,GAAAA,IAAc5F,GAA6BE,GAAcN,OAAO5jB,MAAK,WACjF,IAAM+mB,GAAOtwB,EAAAA,GAAAA,GAAOmwB,GAA8BgC,MAKlD,OAJA7B,EAAQrxB,KAAK,CACThC,KAAAA,EACA4zB,kBAAmBh0B,IAAKs4B,GAAQ,SAACC,EAAGn4B,GAAI,OAAKA,CAAI,MAE9CwL,GAAS2qB,EAAAA,GAAAA,IAAW7F,GAA6BE,GAAcN,KAAMmD,IACvE/mB,MAAK,WACF,GAAIinB,EACA,OAAO/nB,EAAS8qB,GAAgCt2B,GAExD,IAAE,OACK,SAACoE,GAAgB,IAADg0B,EACb91B,GAAO8B,SAAe,QAAVg0B,EAALh0B,EAAOiyB,gBAAQ,IAAA+B,OAAA,EAAfA,EAAiB91B,OAAQ8B,EAC/BwD,EAAWtF,EAAXsF,SAEP,IAAIlB,GAAAA,GAAUc,IAAI,CACdxH,KAAM,aACN0H,YAAY,EACZD,MAAO,SACPE,QAASC,EACTvF,MAAO,yBACP2F,QAAS,CACL,CACIC,MAAO,QACPC,QAAS,kBAAMC,EAAAA,GAAAA,IAAe7F,EAAK,KAInD,GACR,GACJ,CACJ,CElQqC+1B,CAAsBr4B,EAAMuzB,IACjD,OAAQJ,EAAY7mB,KAAKsrB,EAC7B,EACAU,QAASV,EACTW,cAAe,CACXv4B,KAAM,GACNw4B,WAAW,GAEfC,OAAQ,CACJ,CACIz4B,KAAM,OACNoD,KAAM,OACNs1B,QAAS,cACTC,UAAU,EACVC,UAAWf,GAEf,CACI73B,KAAM,YACNoD,KAAM,UACNs1B,QAAS,oBAK7B,C,4BCOM75B,IAAQC,EAAAA,EAAAA,GAAG,iBAaX+5B,GAAc,SACdC,GAAc,QACdC,GAAe,WAaN,SAASC,GAAsBh6B,GAAgC,IAA9B6K,EAAO7K,EAAP6K,QACtC2B,GAAWmsB,EAAAA,EAAAA,MAIjB,OAHAh4B,EAAAA,WAAgB,WACZ6L,EAASgrB,GAAsBnC,EAAAA,GAAQC,UAC3C,GAAG,KAECxrB,EAAAA,EAAAA,MAACnJ,EAAAA,SAAc,CAAAgB,SAAA,EACXD,EAAAA,EAAAA,KAACu4B,GAAmB,KACpBv4B,EAAAA,EAAAA,KAACw4B,GAAY,CAACrvB,QAASA,KACvBnJ,EAAAA,EAAAA,KAACg3B,GAA8B,MAG3C,CAEA,SAASuB,KACL,IAAM5F,GAAUvpB,EAAAA,EAAAA,IAAYopB,IAC5B,OACIxyB,EAAAA,EAAAA,KAAA,OAAKzB,UAAWJ,GAAM,WAAW8B,SAC5Bf,IAAKyzB,GAAS,SAAC1xB,GAAI,OAChBjB,EAAAA,EAAAA,KAACy4B,IAAsBt2B,EAAAA,EAAAA,GAAA,GAAqBlB,GAAfA,EAAK3B,KAAkB,KAIpE,CAEA,SAASm5B,GAAsBp5B,GAAyC,IAAvCC,EAAID,EAAJC,KAAMuzB,EAASxzB,EAATwzB,UAC7B/nB,GAAWmsB,EAAAA,EAAAA,MACjB,OACI7uB,EAAAA,EAAAA,MAAA,OAAK7J,UAAWJ,GAAM,UAAWqJ,QAAS,kBAAMsD,EHkPjD,SAAkCxL,GACrC,OAAO,SAACwL,EAAU0pB,GACd,IAAMnqB,EAAQmqB,IAERkE,EADUlG,GAA8BnoB,GACvBuoB,MAAK,SAAC3xB,GAAI,OAAKA,EAAK3B,OAASA,CAAI,IACxD,GAAIo5B,EAAQ,CACR,IAAOxF,EAAqBwF,EAArBxF,kBACDH,EAAoD,CAAC,EAC3DG,EAAkBiC,SAAQ,SAAC71B,GACvByzB,EAAczzB,IAAQ,CAC1B,IACAwL,EAAS,CACLpI,KAAM0yB,EAAAA,GACNxzB,KAAM,CAACmxB,cAAAA,KAGX,IAAM4F,EAAmB7F,GAA6BzoB,GACtDrJ,KAAS23B,GAAkB,SAAClB,EAAGn4B,GACtByzB,EAAczzB,IACfwL,EAAS+pB,GAA6Bv1B,GAE9C,GACJ,CACJ,CACJ,CG1QiEs5B,CAAyBt5B,GAAM,EAACW,SAAA,EACrFD,EAAAA,EAAAA,KAAC64B,GAAAA,EAAa,CACVt6B,UAAWJ,GAAM,eACjB26B,MAAO,YACPtxB,QAAS,WACLsD,EAAS8qB,GAAgCt2B,GAC7C,EACAqC,MAAOkxB,EAAY,oBAAsB,kBAAkB5yB,UAE3DD,EAAAA,EAAAA,KAACwI,GAAAA,EAAI,CAACgE,QAAS,OAAQusB,KAAMlG,EAAY,QAAU,eAEvD7yB,EAAAA,EAAAA,KAAA,QAAMzB,UAAWJ,GAAM,eAAgBwD,MAAOrC,EAAKW,SAC9CX,KAELU,EAAAA,EAAAA,KAAC64B,GAAAA,EAAa,CACVt6B,UAAWJ,GAAM,iBACjB26B,MAAO,YACPtxB,QAAS,SAACwJ,GACNA,EAAEid,kBACFnjB,EAASwqB,GAA8Bh2B,GAC3C,EACAqC,MAAO,SAAS1B,UAEhBD,EAAAA,EAAAA,KAACwI,GAAAA,EAAI,CAACgE,QAAS,cAI/B,CAEA,SAASwsB,KACL,IAAMzG,GAAiBnpB,EAAAA,EAAAA,IAAYkpB,IAC7BxnB,GAAWmsB,EAAAA,EAAAA,MAEXgC,EAAch6B,EAAAA,aAAkB,WAClC6L,EAASwqB,QAA8B30B,GAC3C,GAAG,IAEGu4B,EAAYj6B,EAAAA,aAAiBoF,EAAAA,EAAAA,GAAAC,IAAAA,MAAC,SAAAC,IAAA,OAAAD,IAAAA,MAAA,SAAAE,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,WAC5B6tB,EAAe,CAAD/tB,EAAAE,KAAA,eAAAF,EAAAE,KAAA,EACRoG,EAASyqB,GAAyBhD,IAAiB,KAAD,SAAA/tB,EAAAM,OAAA,wBAAAN,EAAAM,OAAA,SAGrDwG,QAAQO,WAAS,wBAAArH,EAAAO,OAAA,GAAAR,EAAA,KACzB,CAACguB,EAAgBznB,IAEpB,OACI9K,EAAAA,EAAAA,KAACmE,GAAAA,GAAU,CACPg1B,qBAAmB,EACnB9zB,QAAS8G,QAAQomB,GACjBqF,QAASqB,EACT5B,MAAO6B,EACPnB,OAAQ,CACJ,CACIr1B,KAAM,QACNpD,KAAM,OACNsE,OAAQ,CACJ3D,UACImI,EAAAA,EAAAA,MAAA,OAAAnI,SAAA,CAAK,mCAEDmI,EAAAA,EAAAA,MAAA,QAAM7J,UAAWJ,GAAM,oBAAoB8B,SAAA,CACtC,IACAsyB,EAAgB,OACd,eAO3B6E,YAAa,CACTz1B,MAAM,WAADI,OAAawwB,EAAc,MAEpC6G,YAAa,CACTC,UAAW,WAI3B,CAEA,SAASb,GAAan1B,IArItB,SAAmC8F,GAC/B,IAAM2B,GAAWmsB,EAAAA,EAAAA,MAEXvF,GAAiBtoB,EAAAA,EAAAA,IAAYooB,IAC7B8H,EAAWr6B,EAAAA,aAAkB,WAC/B6L,EHmED,SACH3B,EACAuoB,GAEA,OAAO,SAAC5mB,EAAU0pB,GACd,IAAMnqB,EAAQmqB,IACR+E,EAAa/H,GAA8BnnB,GAC3CunB,EAAWD,GAAwBtnB,GAEpCkvB,GAAcA,IAAe3H,GAC9B9mB,EAzGZ,SAA2B3B,EAAiBsQ,GACxC,OAAO,SAAC3O,EAAU0pB,GACdP,GAAcC,SACd,IAAMtyB,EAAOqwB,GAAoBuC,KACjCxzB,KAASY,GAAM,SAACX,GAAI,IAAAu4B,EAAA,OAAgB,QAAhBA,EAAKv4B,EAAKizB,cAAM,IAAAsF,OAAA,EAAXA,EAAAxrB,KAAA/M,EAAe,IAExC,IAAMw4B,EAAa5F,GAAiBW,GAapC,OAXA1pB,EAAS,CACLpI,KAAMg3B,EAAAA,KAGND,IAAetwB,GACf2B,EAAS,CACLpI,KAAM0xB,EAAAA,GACNxyB,KAAM,CAACA,KAAM,CAAC,EAAGyxB,eAAgB,GAAIlB,YAAahpB,KAInDwnB,GAAAA,GAAMgJ,YAAYxwB,GAAS,SAACsrB,GAC/BR,GAAgBQ,CACpB,IACK7oB,MAAK,SAACynB,GACH,GAAIQ,GAAiBW,KAAcrrB,EAAnC,CAIA,IAAMyoB,EAAWnY,GAAcjM,KAAKC,MAAQumB,GACtClC,EAASF,EAAWoC,GAE1BlpB,EAAS,CACLpI,KAAM0xB,EAAAA,GACNxyB,KAAM,CACFyxB,eAAAA,EACAzB,SAAAA,EACAE,OAAAA,KAIR,IAAMiB,EAAgBD,GAA6B0B,KACnDlpB,QAAQC,IACJ8nB,EAAe7xB,KAAI,SAAAlD,GAAa,IAAXgB,EAAIhB,EAAJgB,KACjB,OAAKyzB,EAAczzB,GAGRgM,QAAQO,UAFRf,EAASupB,GAAgBlrB,EAAS7J,EAAMsyB,EAAUE,GAIjE,KACFlmB,MAAK,WACHd,EAAS,CAACpI,KAAMk3B,EAAAA,IACpB,GAzBA,CA0BJ,IAAE,OACK,SAACl2B,GACAitB,GAAAA,GAAMiE,kBAAkBlxB,GACxBoH,EAAS,CAACpI,KAAMm3B,EAAAA,KAEhB/uB,EAAS,CAACpI,KAAMo3B,EAAAA,GAAsBl4B,KAAM8B,GAEpD,GACR,CACJ,CA6CqBq2B,CAAkB5wB,EAASuoB,GAE5C,CACJ,CGhFiBsI,CAAmB7wB,EAASuoB,GACzC,GAAG,CAACvoB,EAASuoB,EAAgB5mB,KAE7B0D,EAAAA,GAAAA,IAAW8qB,EAAU,CAAC1sB,QAAS,KACnC,CA8HIqtB,CADkB52B,EAAX8F,SAGP,IAAM+wB,GAAa9wB,EAAAA,EAAAA,IAAYooB,IACzB8C,GAAOlrB,EAAAA,EAAAA,IAAYuoB,IACnB4C,GAAKnrB,EAAAA,EAAAA,IAAYyoB,IACjBG,GAAU5oB,EAAAA,EAAAA,IAAY2oB,IAEtBsB,GAAiBjqB,EAAAA,EAAAA,IAAYgqB,IAC7BxxB,GAAOwH,EAAAA,EAAAA,IAAY6oB,IACnBkI,GAAY/wB,EAAAA,EAAAA,IAAY0pB,IAE9B9tB,EAAkC/F,EAAAA,SAAsC,CAAC,GAAEgG,GAAAC,EAAAA,EAAAA,GAAAF,EAAA,GAApEo1B,EAAWn1B,EAAA,GAAEo1B,EAAUp1B,EAAA,GAC9Bq1B,EAAoCr7B,EAAAA,SAAkC,MAAKs7B,GAAAr1B,EAAAA,EAAAA,GAAAo1B,EAAA,GAApEE,EAAUD,EAAA,GAAEE,EAAaF,EAAA,GAE1BG,EAAYz7B,EAAAA,aACd,SAACK,EAAc4Q,EAAgByqB,EAAch3B,GACzC,GAAIg3B,EAAI,CACJ,IAAAC,EAAwBD,EAAGE,wBAApB97B,EAAK67B,EAAL77B,MAAOuR,EAAMsqB,EAANtqB,OACbqqB,EAAWG,YAAc/7B,EACzB47B,EAAWI,aAAezqB,EAC3B+pB,EAAW,CACPvF,WAAYx1B,EACZo1B,WAAYxkB,EACZ8qB,gBAAiBr3B,EACjBs3B,OAAQN,GAEhB,MACIN,EAAW,CAAC,EAEpB,GACA,CAACA,IAGC7yB,EAAUvI,EAAAA,aACZ,SAAC61B,EAAoBJ,EAAwBsG,GACzCP,EAAc,CAAC3F,WAAAA,EAAYJ,WAAAA,EAAYsG,gBAAAA,GAC3C,GACA,CAACP,IAGC7C,EAAU34B,EAAAA,aAAkB,WAC9Bw7B,EAAc,KAClB,GAAG,CAACA,IAEE3vB,GAAWmsB,EAAAA,EAAAA,MAEjB,IAAK3C,IAASC,EACV,OAAO,KAGX,IAEMntB,EA5KV,SAAuBktB,EAAYC,GAE/B,OADgBvD,IAAOuD,GAAIntB,OAAOixB,MAAkBrH,MAAS5pB,OAAOixB,KAClDrH,IAAOsD,GAAMltB,OAAO+wB,MAAiBnH,IAAOuD,GAAIntB,OAAO+wB,IACnEC,GACAD,GAAcC,EACxB,CAuKmB8C,CAFE,IAAI1tB,KAAK8mB,GACX,IAAI9mB,KAAK+mB,IAGxB,OACIv0B,EAAAA,EAAAA,KAACm7B,EAAAA,EAAa,CAAAl7B,UACVD,EAAAA,EAAAA,KAACo7B,GAAAA,GAAiB,CACdC,SACIjzB,EAAAA,EAAAA,MAAA,OAAK7J,UAAWJ,GAAM,cAAc8B,SAAA,EAChCD,EAAAA,EAAAA,KAACqI,EAAAA,EAAM,CACHE,KAAK,WACLf,QAAS,WACLsD,GH7JrB,SAACA,EAAU0pB,GACd,IAAMnqB,EAAQmqB,IACR9C,EAAiBF,GAA8BnnB,GAIjDS,EAASqpB,GAHRzC,EAGsCA,EAAiBsC,GAFjBxmB,KAAKC,MAAQ,EAAIumB,IAIhE,GGsJwB,EACAjQ,IAAI,cAAa9jB,UAEjBD,EAAAA,EAAAA,KAACs7B,EAAAA,EAAS,CAAC15B,KAAM25B,OAErBv7B,EAAAA,EAAAA,KAACotB,GAAU,CACP7uB,UAAWJ,GAAM,0BACjBmK,KAAK,IACLlB,OAAO,mBACP6K,UAAUupB,EAAAA,EAAAA,IAAS,CAAClX,MAAO9W,KAAKC,MAAQumB,KACxC5zB,SAAU,SAAC1B,GACPoM,EAASqpB,GAA8Bz1B,aAAK,EAALA,EAAO+8B,WAClD,EACA/8B,OAAO88B,EAAAA,EAAAA,IAAS,CAAClX,MAAOpF,OAAOgb,QAAAA,EAAc5F,KAC7CvQ,IAAI,iBAER/jB,EAAAA,EAAAA,KAACqI,EAAAA,EAAM,CACHE,KAAK,WACLf,QAAS,WACLsD,GHrKrB,SAACA,EAAU0pB,GACd,IAAMnqB,EAAQmqB,IACR9C,EAAiBF,GAA8BnnB,GACrD,GAAKqnB,EAAL,CAGI,IAAMgK,EAAahK,EAAiBsC,GAChCxmB,KAAKC,MAAQiuB,EAAa1H,GAC1BlpB,EAASqpB,QAA8BxzB,IAEvCmK,EAASqpB,GAA8BuH,GAE/C,CACJ,GGyJwB,EACA98B,cAAyB+B,IAAfu5B,EACVnW,IAAI,cAAa9jB,UAEjBD,EAAAA,EAAAA,KAACs7B,EAAAA,EAAS,CAAC15B,KAAM+5B,EAAAA,OAGrB37B,EAAAA,EAAAA,KAACqI,EAAAA,EAAM,CACHE,KAAK,cACL3J,cAAyB+B,IAAfu5B,EACV1yB,QAAS,WACLsD,EAASqpB,QAA8BxzB,GAC3C,EACApC,UAAWJ,GAAM,kBAAkB8B,SACtC,QAIA+xB,IAAWhyB,EAAAA,EAAAA,KAAC47B,EAAAA,EAAM,OAG3B30B,SACImB,EAAAA,EAAAA,MAAAyzB,EAAAA,SAAA,CAAA57B,SAAA,EACID,EAAAA,EAAAA,KAAA,OAAKzB,UAAWJ,KAAQ8B,UACpBmI,EAAAA,EAAAA,MAAA,OAAK7J,UAAWJ,GAAM,QAAQ8B,SAAA,EAC1BmI,EAAAA,EAAAA,MAAA,OAAK7J,UAAWJ,GAAM,SAAS8B,SAAA,EAC3BD,EAAAA,EAAAA,KAAA,OAAKzB,UAAWJ,GAAM,cAAc8B,UAChCD,EAAAA,EAAAA,KAAA,QAAAC,SAAO+wB,IAAOsD,GAAMltB,OAAOA,QAE/BpH,EAAAA,EAAAA,KAAA,OAAKzB,UAAWJ,GAAM,cAAc8B,UAChCD,EAAAA,EAAAA,KAAA,QAAMzB,UAAWJ,GAAM,iBAAiB8B,SACnC+wB,IAAOuD,GAAIztB,KAAK,EAAG,UAAUM,OAAOA,WAIjDgB,EAAAA,EAAAA,MAAA,OAAK7J,UAAWJ,GAAM,iBAAiB8B,SAAA,EACnCD,EAAAA,EAAAA,KAAC64B,GAAAA,EAAa,CACVC,MAAO,YACPtxB,QAAS,kBACLsD,EAASiqB,IAAiC,GAAM,EACnD90B,SACJ,cAGDD,EAAAA,EAAAA,KAAA,QAAAC,SAAM,SACND,EAAAA,EAAAA,KAAC64B,GAAAA,EAAa,CACVC,MAAO,YACPtxB,QAAS,kBACLsD,EAASiqB,IAAiC,GAAO,EACpD90B,SACJ,iBAILD,EAAAA,EAAAA,KAAA,OAAKzB,UAAWJ,GAAM,QAAQ8B,UAC1BD,EAAAA,EAAAA,KAAC64B,GAAAA,EAAa,CACVC,MAAO,YACPtxB,QAAS,kBACLsD,EAASuqB,IAAmC,GAAM,EACrDp1B,UAEDD,EAAAA,EAAAA,KAACwI,GAAAA,EAAI,CAACgE,QAAS,aAGtB6mB,EAAe7xB,KAAI,SAACP,GACjB,OACIjB,EAAAA,EAAAA,KAAC87B,GAAW,CAER76B,KAAMA,EACNW,KAAMA,EAAKX,EAAK3B,MAChBo7B,UAAWA,EACXlzB,QAASA,EACT6F,OAAQ8sB,EAAUl5B,EAAK3B,OALlB2B,EAAK3B,KAQtB,UAGRU,EAAAA,EAAAA,KAAC+7B,IAAmB55B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAKi4B,GAAW,IAAE9F,KAAM,IAAI9mB,KAAK8mB,MACpDkG,IACGx6B,EAAAA,EAAAA,KAACg8B,IAAyB75B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAClBq4B,GAAU,IACdlG,KAAM,IAAI9mB,KAAK8mB,GACfsD,QAASA,MAGjB53B,EAAAA,EAAAA,KAACg5B,GAAoC,UAM7D,CAEA,SAASiD,GAAY3H,EAAY3wB,GAC7B,OAAOqtB,IAAOsD,GACTxtB,IAAInD,EAAO,UACXyD,OAAO+wB,GAAcC,GAC9B,CAeA,SAAS2D,GAAoB14B,GACzB,IAAO43B,EAAyD53B,EAAzD43B,OAAQ3G,EAAiDjxB,EAAjDixB,KAAM0G,EAA2C33B,EAA3C23B,gBAAiBlG,EAA0BzxB,EAA1ByxB,WAAYJ,EAAcrxB,EAAdqxB,WAClD,OAAKuG,QAAUt6B,IAAcq6B,GAIzBh7B,EAAAA,EAAAA,KAAC2uB,EAAAA,EAAK,CACFtB,UAAW,CAACzsB,QAASq6B,GACrBiB,UAAW,CAAC,MAAO,UAAW,YAAa,SAAU,aAAc,gBACnEhO,MAAM,EAAKjuB,UAEXmI,EAAAA,EAAAA,MAAA,OAAAnI,SAAA,EACImI,EAAAA,EAAAA,MAAA,OAAAnI,SAAA,CACKg8B,GAAY3H,EAAM0G,IACnBh7B,EAAAA,EAAAA,KAAA,QACIzB,UAAWJ,GAAM,SAAU,CACvBkM,MAAOqqB,aAAU,EAAVA,EAAYrqB,QACpBpK,SAEFkH,GAAAA,EAAOC,OAAO+0B,SAASzH,aAAU,EAAVA,EAAYrqB,YAG3CyqB,OAnBF,IAuBf,CAEA,SAASkH,GAA0B34B,GAC/B,IAAOyxB,EAA0DzxB,EAA1DyxB,WAAYJ,EAA8CrxB,EAA9CqxB,WAAYsG,EAAkC33B,EAAlC23B,gBAAiB1G,EAAiBjxB,EAAjBixB,KAAMsD,EAAWv0B,EAAXu0B,QAEhDwE,GACFp8B,EAAAA,EAAAA,KAAA,QAAMzB,UAAWJ,GAAM,SAAU,CAACkM,MAAOqqB,EAAWrqB,QAAQpK,SACvDkH,GAAAA,EAAOC,OAAO+0B,SAASzH,EAAWrqB,SAI3C,OACIjC,EAAAA,EAAAA,MAACi0B,EAAAA,EAAM,CAACzE,QAASA,EAAS1J,MAAM,EAAM3vB,UAAWJ,GAAM,UAAU8B,SAAA,EAC7DD,EAAAA,EAAAA,KAACq8B,EAAAA,EAAOC,OAAM,CACVtE,SACI5vB,EAAAA,EAAAA,MAAA,OAAK7J,UAAWJ,GAAM,iBAAiB8B,SAAA,EACnCD,EAAAA,EAAAA,KAAA,QAAMzB,UAAWJ,GAAM,eAAe8B,SACjCg8B,GAAY3H,EAAM0G,KAEtBlG,EACAsH,QAIbp8B,EAAAA,EAAAA,KAACq8B,EAAAA,EAAOE,QAAO,KACfv8B,EAAAA,EAAAA,KAACq8B,EAAAA,EAAOG,KAAI,CAAAv8B,UACRD,EAAAA,EAAAA,KAAA,OAAKzB,UAAWJ,GAAM,kBAAkB8B,SAAEy0B,EAAWxtB,SAAWk1B,QAIhF,CAUA,SAASK,GAAgBp5B,GACrB,IAAOpC,EAA0CoC,EAA1CpC,KAAMW,EAAoCyB,EAApCzB,KAAM84B,EAA8Br3B,EAA9Bq3B,UAAWlzB,EAAmBnE,EAAnBmE,QAAS6F,EAAUhK,EAAVgK,OACjCqvB,EAAgBz9B,EAAAA,aAClB,SAACiR,EAAgByqB,EAAch3B,GAC3B+2B,EAAUz5B,EAAK07B,aAAczsB,EAAGyqB,EAAIh3B,EACxC,GACA,CAAC1C,EAAK07B,aAAcjC,IAGlBkC,EAAc39B,EAAAA,aAChB,SAACiR,EAAevM,GACZ6D,EAAQvG,EAAK07B,aAAczsB,EAAGvM,EAClC,GACA,CAAC6D,EAASvG,EAAK07B,eAGb7xB,GAAWmsB,EAAAA,EAAAA,MACX4F,EAAkB59B,EAAAA,aAAkB,WACtC6L,EAASorB,GAAUj1B,EAAK3B,MAC5B,GAAG,CAAC2B,EAAK3B,OAEHw9B,EAAa79B,EAAAA,aAAkB,WHtRlC,IAA4C61B,EGuR3ChqB,GHvR2CgqB,EGuRC7zB,EAAK3B,KHtR9C,SAACwL,EAAU0pB,GACd,IAAMzB,GAAa5wB,EAAAA,EAAAA,GAAA,GAAO2wB,GAA6B0B,MACnDzB,EAAc+B,UACP/B,EAAc+B,GAErB/B,EAAc+B,IAAc,EAEhChqB,EAAS,CACLpI,KAAM0yB,EAAAA,GACNxzB,KAAM,CAACmxB,cAAAA,KAENA,EAAc+B,IACfhqB,EAAS+pB,GAA6BC,GAE9C,GGyQA,GAAG,CAAC7zB,EAAK3B,OAET,OACI8I,EAAAA,EAAAA,MAACnJ,EAAAA,SAAc,CAAAgB,SAAA,EACXD,EAAAA,EAAAA,KAAA,OAAKzB,UAAWJ,GAAM,cAAc8B,SAC/BoN,GACGrN,EAAAA,EAAAA,KAAA,OAAKzB,UAAWJ,GAAM,gBAAgB8B,SAAC,YAEvCD,EAAAA,EAAAA,KAAC+8B,IAAe56B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACRP,GAAI,IACRtC,KAAM2B,EAAK3B,KACX09B,OAAQ,CACJC,QAASP,EACTQ,MAAON,SAKvB58B,EAAAA,EAAAA,KAAA,OAAKzB,UAAWJ,GAAM,aAAa8B,UAC/BD,EAAAA,EAAAA,KAAC0J,GAAAA,EAAI,CACDF,IAAG,GAAAzH,OAAK8sB,GAAS,aAAY,YAAA9sB,OAAWd,EAAK3B,MAC7CkI,QAASq1B,EACTM,wBAAsB,EACtBxzB,QAAM,EAAA1J,SAELgB,EAAK07B,kBAGd38B,EAAAA,EAAAA,KAAA,OAAKzB,UAAWJ,GAAM,gBAAgB8B,UAClCD,EAAAA,EAAAA,KAAC64B,GAAAA,EAAa,CACVC,MAAM,YACNtxB,QAASs1B,EACTn7B,MAAO,aAAe0L,EAAS,UAAY,QAAQpN,UAEnDD,EAAAA,EAAAA,KAACwI,GAAAA,EAAI,CAACgE,QAASa,EAAS,YAAc,cAK1D,CAEA,IAAMyuB,GAAc78B,EAAAA,KAAWw9B,IAO/B,SAASM,GAAgB15B,GACrB,IAAOK,EAAmCL,EAAnCK,MAAOgxB,EAA4BrxB,EAA5BqxB,WAAYp1B,EAAgB+D,EAAhB/D,KAAM09B,EAAU35B,EAAV25B,OAEhC,OACIh9B,EAAAA,EAAAA,KAAA,OAAKzB,UAAWJ,GAAM,YAAY8B,SAC7ByD,GACG1D,EAAAA,EAAAA,KAACo9B,GAAgB,CAAC99B,KAAMA,EAAMoE,MAAOA,KAErC1D,EAAAA,EAAAA,KAACq9B,GAAoB,CAAC59B,MAAOi1B,EAAYsI,OAAQA,KAIjE,CAEA,SAASI,GAAgB36B,GAA6C,IAA3CiB,EAAKjB,EAALiB,MAAOpE,EAAImD,EAAJnD,KACxBwL,GAAWmsB,EAAAA,EAAAA,MACX2F,EAAc39B,EAAAA,aAAkB,WAClC6L,EAAS+pB,GAA6Bv1B,GAC1C,GAAG,CAACA,IACJ,OACI8I,EAAAA,EAAAA,MAAA,OAAK7J,UAAW,QAAQ0B,SAAA,EACpBD,EAAAA,EAAAA,KAAC64B,GAAAA,EAAa,CAACrxB,QAASo1B,EAAY38B,SAAC,aACpCkpB,OAAOzlB,KAGpB,CAEA,SAAS25B,GAAoBv6B,GAAuE,IAArErD,EAAKqD,EAALrD,MAAOu9B,EAAMl6B,EAANk6B,OAC5BptB,EAAM3Q,EAAAA,YAEZ,OAGJ,SACI2Q,EACAnQ,EACAu9B,GAEA/9B,EAAAA,WAAgB,WACR2Q,EAAIhP,SAAWnB,GAW3B,SAAoB69B,EAAqB79B,EAA0Bu9B,GAC/D,IAAMO,EAASC,EAAAA,IAAUF,GACzBC,EAAOE,UAAU,OAAO77B,KAAK,CAAC,OAAO87B,QAAQC,OAAO,OAAOC,KAAK,QAASz/B,GAAM,QAE/E,IAAM0/B,EAAMN,EAAOO,OAAmB,OACtCC,EAAwBF,EAAIlhB,OAAQke,wBAA7B97B,EAAKg/B,EAALh/B,MAAOuR,EAAMytB,EAANztB,OACR0tB,EAAQC,EAAAA,GACRC,EAAUn/B,EAAQi/B,EAAQv+B,EAAMC,OAEhCy+B,EAAQN,EAAIJ,UAAsC,QAAQ77B,KAAKnC,GACrE0+B,EAAMC,OAAOC,SACb,IAAMz7B,EAAQu7B,EAAMT,QAAQC,OAAO,QAC7BW,EAAYH,EACbI,MAAM37B,GACNg7B,KAAK,QAASI,EAAQ,GACtBJ,KAAK,SAAUttB,EAAS,GACxBstB,KAAK,KAAK,SAAC1I,EAAIvxB,GACZ,OAAOu6B,EAAUF,EAAQr6B,CAC7B,IACCi6B,KAAK,SAAS,SAAC1tB,GACZ,OAAO/R,GAAM,OAAQ,CAACkM,MAAO6F,EAAE7F,OACnC,IAEJi0B,EACKE,GAAG,SAAS,SAAUC,EAAiBvuB,GACpC,IAAMvM,EAAQ26B,EAAUI,QAAQhtB,QAAQ/K,MACxCq2B,EAAOE,MAAMhtB,EAAGvM,EACpB,IACC66B,GAAG,cAAc,SAAUC,EAAiBvuB,GACzC,IAAMvM,EAAQ26B,EAAUI,QAAQhtB,QAAQ/K,MACxCq2B,EAAOC,QAAQ/sB,EAAGvJ,KAAMhD,EAC5B,IACC66B,GAAG,YAAY,WACZxB,EAAOC,SACX,GACR,CA7CY0B,CAAW/uB,EAAIhP,QAASnB,EAAOu9B,EAEvC,GAAG,CAACptB,EAAKnQ,GACb,CAdIm/B,CAAgBhvB,EAAKnQ,EAAOu9B,IACrBh9B,EAAAA,EAAAA,KAAA,OAAKzB,UAAWJ,GAAM,SAAUyR,IAAKA,GAChD,C,+DCtiBMivB,IAAS1gC,EAAAA,EAAAA,GAAM,QAEf2gC,IAAU3gC,EAAAA,EAAAA,GAAM,oBAoBtB,SAAS4gC,KACL,IAAM7O,GAAS9mB,EAAAA,EAAAA,IAAY2mB,IACrBjlB,GAAWmsB,EAAAA,EAAAA,MACX+H,EArBV,WACI,IAAAC,GAA8BC,EAAAA,EAAAA,UAAS,IAAGC,GAAAj6B,EAAAA,EAAAA,GAAA+5B,EAAA,GAAnCD,EAAOG,EAAA,GAAEC,EAAUD,EAAA,GACpBh2B,GAAUC,EAAAA,EAAAA,IAAY6nB,IAa5B,OAXAoO,EAAAA,EAAAA,YAAU,WACN1O,GAAAA,GAAMgJ,YAAYxwB,GAASyC,MAAK,SAACozB,GAC7BI,EACIlgC,IAAK8/B,GAAS,SAAA1gC,GAAoB,MAAa,CAC3CI,MADgBJ,EAAJgB,KAEZE,KAFoClB,EAAlBq+B,aAGrB,IAET,GACJ,GAAG,IAEIqC,CACX,CAKoBM,GACVv/B,GAAew/B,EAAAA,EAAAA,cAAY,SAAC7gC,GAC9BoM,EAASorB,GAAUx3B,GACvB,GAAG,IAMH,OAJIsgC,EAAQt/B,OAAS,IAA6D,IAAxD8/B,KAAWR,GAAS,SAAA3/B,GAAO,OAAAA,EAALX,QAAqBwxB,CAAM,KACvEplB,EAASorB,GAAU8I,EAAQ,GAAGtgC,SAI9BsB,EAAAA,EAAAA,KAACE,GAAAA,EAAM,CACHxB,MAAO,CAACwxB,GACR3oB,MAAM,SACN9H,MAAOu/B,EACP5+B,SAAU,SAACq/B,GAAI,OAAK1/B,EAAa0/B,EAAK,GAAG,EACzCC,YAAY,EACZ3gC,MAAM,OAGlB,CAEA,SAAS4gC,KACL,IAAMvP,GAAiBhnB,EAAAA,EAAAA,IAAY+mB,IAC7BrlB,GAAWmsB,EAAAA,EAAAA,MACXl3B,GAAew/B,EAAAA,EAAAA,cAAY,WAC7Bz0B,EH1CG,CACHpI,KAAMk9B,EAAAA,IG0CV,GAAG,IAEH,OACI5/B,EAAAA,EAAAA,KAAC6/B,GAAAA,EAAQ,CACLv3B,KAAK,IACLrB,QAAQ,eACR64B,QAAS1P,EACT3xB,SAAUsB,GAGtB,CAEA,SAASggC,KACL,IAAMxpB,GAAOnN,EAAAA,EAAAA,IAAYmnB,IACnBzlB,GAAWmsB,EAAAA,EAAAA,MACXl3B,GAAew/B,EAAAA,EAAAA,cAAY,SAAA1/B,GAAa,IAAXy0B,EAAIz0B,EAAJy0B,KAC/BxpB,EHtDD,SAAiByL,GACpB,MAAO,CACH7T,KAAMs9B,EAAAA,GACNp+B,KAAM,CAAC2U,KAAAA,GAEf,CGiDiB4P,CAAQmO,GACrB,GAAG,IAEH,OACIt0B,EAAAA,EAAAA,KAACigC,GAAAA,GAAU,CACPC,OAAO,EACP5L,KAAM/d,EACNge,GAAIhe,EACJ4pB,MAAM,MACNvc,UAAU,EACVwc,aAAc,IACdhgC,SAAUL,GAGtB,CA2BA,SAzBA,SAAgB0C,GAAe,IAAblE,EAASkE,EAATlE,UACR8hC,GAAOj3B,EAAAA,EAAAA,IAAYonB,IACzB,OACIpoB,EAAAA,EAAAA,MAAA,OAAK7J,UAAWA,EAAU0B,SAAA,EACtBD,EAAAA,EAAAA,KAAA,OAAKzB,UAAWsgC,GAAO,wBAAyBC,GAAQ,cAAc7+B,UAClED,EAAAA,EAAAA,KAAC++B,GAAc,OAEnB/+B,EAAAA,EAAAA,KAAA,OAAKzB,UAAWsgC,GAAO,sBAAuBC,GAAQ,cAAc7+B,UAChED,EAAAA,EAAAA,KAAC+/B,GAAU,OAEf//B,EAAAA,EAAAA,KAAA,OAAKzB,UAAWsgC,GAAO,uBAAwBC,GAAQ,cAAc7+B,UACjED,EAAAA,EAAAA,KAAC2/B,GAAc,OAEnB3/B,EAAAA,EAAAA,KAAA,OAAKzB,UAAWsgC,GAAO,+BAAgCC,GAAQ,cAAc7+B,UACzED,EAAAA,EAAAA,KAAA,OAAKzB,UAAU,+CAA8C0B,UACzDmI,EAAAA,EAAAA,MAAA,KAAG7J,UAAU,8BAA6B0B,SAAA,CAAC,2BAChBD,EAAAA,EAAAA,KAAA,MAAAC,SAAKkH,GAAAA,EAAOC,OAAOk5B,QAAoB,IAAZD,EAAK/L,QAAiB,MAAI,KAC5Et0B,EAAAA,EAAAA,KAAA,MAAAC,SAAKkH,GAAAA,EAAOC,OAAOk5B,QAAkB,IAAVD,EAAK9L,MAAe,qBAMvE,E,gBCpHMjsB,GAAO,GAEPi4B,GAAe,GAAfA,GAA2B,GAA3BA,GAAqC,GAArCA,GAAgD,GAEhDxhC,GAAQgyB,EAAAA,GAAczoB,GACtBgI,GAASomB,EAAAA,GAAcpuB,GAEvBk4B,GAAc,SAAUtwB,GAC1B,MAAmB,cAAZA,EAAE7F,KACb,EAEMo2B,GAAuB,SAAUvwB,GACnC,MAAmB,wBAAZA,EAAE7F,KACb,EAEM0N,GAAgB,SAAU7H,GAC5B,MAAmB,gBAAZA,EAAE7F,OAAuC,cAAZ6F,EAAE7F,OAAqC,YAAZ6F,EAAE7F,KACrE,EAEMq2B,GAAW,SAAUxwB,EAAGoG,GAC1B,OAAOhO,IAAQgO,EAAIya,EAAAA,GACvB,EACM4P,GAAW,SAAUzwB,EAAGoG,GAC1B,OAAOhO,GAAO6F,KAAKgM,MAAM7D,EAAIya,EAAAA,GACjC,EAsIA,SAAS6P,GAAiBC,EAASj/B,EAAMk/B,IACrCzB,EAAAA,EAAAA,YAAU,WACFwB,GA5DZ,SAAgBA,EAASj/B,EAAMk/B,GAC3B,IAAOC,EAAyCF,EAAzCE,OAAQC,EAAiCH,EAAjCG,UAAWC,EAAsBJ,EAAtBI,UAAWhE,EAAW4D,EAAX5D,QAE/Bx9B,EAAQshC,EAAOtD,UAAU,qBAAqB77B,KAAKA,GACzDnC,EACKyhC,QAAQ,oBAAqBV,IAC7BU,QAAQ,sBAAuBT,IAC/BS,QAAQ,mBAAoBnpB,IAC5BymB,GAAG,SAAS,SAAUxtB,EAAGd,GACtB,GAAwB,mBAAb4wB,EAAyB,CAChC,IAAMxqB,EAAI7W,EAAMi/B,QAAQhtB,QAAQ/K,MAChCm6B,EAAS5wB,EAtFR,SAAUA,EAAGoG,GAC1B,OAAOnI,KAAKgM,MAAM7D,EAAIya,EAAAA,GAC1B,CAoF4BoQ,CAASjxB,EAAGoG,GAnFrB,SAAUpG,EAAGoG,GAC5B,OAAOA,EAAIya,EAAAA,EACf,CAiF4CqQ,CAAWlxB,EAAGoG,GAC9C,CACJ,IACCkoB,GAAG,YAAY,WACZvB,EAAQvsB,MAAM,UAAW,GAAGA,MAAM,iBAAkB,OACxD,IACC8tB,GAAG,aAAa,SAAUxtB,EAAGd,GAC1B,IAAMoG,EAAI7W,EAAMi/B,QAAQhtB,QAAQ/K,MAChClH,EAAMyhC,QAAQ,0BAA0B,SAACpa,EAAG1F,GACxC,OACIjT,KAAKgM,MAAM7D,EAAIya,EAAAA,MAAiB5iB,KAAKgM,MAAMiH,EAAI2P,EAAAA,KAC/Cza,EAAIya,EAAAA,IAAgB3P,EAAI2P,EAAAA,EAEhC,IAEAiQ,EAAUE,QAAQ,0BAA0B,SAACpa,EAAG1F,GAC5C,OAAOjT,KAAKgM,MAAM7D,EAAIya,EAAAA,MAAiB3P,CAC3C,IAEA6f,EAAUC,QAAQ,0BAA0B,SAACpa,EAAG1F,GAC5C,OAAO9K,EAAIya,EAAAA,KAAgB3P,CAC/B,IAEA,IAAMigB,EAAMlzB,KAAKgM,MAAM7D,EAAIya,EAAAA,IACrBuQ,EAAMhrB,EAAIya,EAAAA,GACVwQ,EAAMF,EAAM/4B,GAAOi4B,GACnBhV,EAAO+V,EAAMh5B,GAAOA,IAAWi4B,GACrCtD,EACKz9B,KAAK2H,GAAAA,EAAOC,OAAO+0B,SAASjsB,EAAE7F,MAAO,CAACm3B,KAAM,SAC5C9wB,MAAM,UAAW,GACjBA,MAAM,iBAAkB,OACxBA,MAAM,MAAO6wB,EAAM,MACnB7wB,MAAM,OAAQ6a,EAAO,KAC9B,GACR,CAgBYkW,CAAOZ,EAASj/B,EAAMk/B,EAE9B,GAAG,CAACD,EAASj/B,EAAMk/B,GACvB,CAgBA,SAdA,SAA4BxiC,GAAoB,IAnBxBsR,EACpBqvB,EAA4CE,EAArC0B,EAASa,EAkBU9/B,EAAItD,EAAJsD,KAAMk/B,EAAQxiC,EAARwiC,SAC1Ba,GAAaC,EAAAA,EAAAA,UAKnB,OAFAhB,IAvBoBhxB,EAqBW+xB,EApB/B1C,GAA8BC,EAAAA,EAAAA,UAAS,MAAKC,GAAAj6B,EAAAA,EAAAA,GAAA+5B,EAAA,GAArC4B,EAAO1B,EAAA,GAAEuC,EAAUvC,EAAA,IAE1BE,EAAAA,EAAAA,YAAU,WACN,IAvHMwC,EACJd,EAQAC,EAeAC,EAeAhE,EAgFI4D,GAvHAgB,EAuHejyB,EAAIhP,QA9GvBogC,GARAD,EAASvD,EAAAA,IACHqE,GACPlE,OAAO,OACPC,KAAK,QAAS7+B,GAAQwhC,GAAcA,IACpC3C,KAAK,SAAUttB,GAASiwB,GAAaA,IACrC5C,OAAO,KACPC,KAAK,YAAa,aAAe2C,GAAc,IAAMA,GAAa,MAGlE9C,UAAU,+BACV77B,KAAK47B,EAAAA,IAAS,EAAG9G,EAAAA,KACjBgH,QACAC,OAAO,QACPC,KAAK,QAAS,0BACdA,KAAK,cAAe,OACpBA,KAAK,KA/CF,GAgDHA,KAAK,KAAK,SAAC1tB,GACR,OAAO5H,IAAQ,EAAI4H,GAjDnB,CAkDJ,IACC1Q,MAAK,SAAC0Q,GACH,OAAOA,EAAE4xB,UACb,IAEEb,EAAYF,EACbtD,UAAU,+BACV77B,KAAK47B,EAAAA,IAAS,EAAGzM,EAAAA,KACjB2M,QACAC,OAAO,QACPC,KAAK,QAAS,0BACdA,KAAK,cAAe,UACpBA,KAAK,KAAK,SAAC1tB,GACR,OAAO5H,IAAQ,GAAM4H,EACzB,IACC0tB,KAAK,KAjEF,GAkEHp+B,MAAK,SAAC0Q,GACH,OAAOA,EAAE4xB,UACb,IAEE7E,EAAUO,EAAAA,IACJqE,GACPlE,OAAO,OACPC,KAAK,QAAS,cACdltB,MAAM,WAAY,YAClBA,MAAM,UAAW,MACjBA,MAAM,UAAW,GAERqwB,EACTtD,UAAU,qBACV77B,KAAK47B,EAAAA,IAAS,EAAGzM,EAAAA,GAAc2F,EAAAA,KAG/BgH,QACAC,OAAO,QACPuD,QAAQ,gBAAgB,GACxBtD,KAAK,QAASt1B,IACds1B,KAAK,SAAUt1B,IACfs1B,KAAK,IAAK8C,IACV9C,KAAK,IAAK+C,IAER,CACHI,OAAAA,EACAC,UAAAA,EACAC,UAAAA,EACAhE,QAAAA,IAwDAyE,EAAWb,EACf,GAAG,IAEIA,GAemBj/B,EAAMk/B,IAEzB9gC,EAAAA,EAAAA,KAAA,OAAKzB,UAAU,gBAAgBqR,IAAK+xB,GAC/C,EC1KA,IAAMxjC,IAAQC,EAAAA,EAAAA,GAAG,gBAqCjB,SAnCA,WACI,IAAM0M,GAAWmsB,EAAAA,EAAAA,MACXvG,GAAetnB,EAAAA,EAAAA,IAAYinB,IAC3B0R,GAAe34B,EAAAA,EAAAA,IAAYynB,IAC3BxtB,GAAQ+F,EAAAA,EAAAA,KAAY,SAACiB,GACvB,IAAA23B,EAA4C33B,EAAM2lB,KAClD,MAAO,CAACgC,QADMgQ,EAAPhQ,QACUprB,OADKo7B,EAANp7B,OACSlD,MADIs+B,EAALt+B,MACQmD,UADQm7B,EAATn7B,UAEnC,IAEMo7B,GAAiB1C,EAAAA,EAAAA,cAAY,SAAC9H,EAAGzN,EAAO8G,GAC1ChmB,ELeD,SAAqBkf,EAAO8G,GAC/B,MAAO,CACHpuB,KAAMw/B,EAAAA,GACNtgC,KAAM,CAACooB,MAAAA,EAAO8G,QAAAA,GAEtB,CKpBiBqR,CAAYnY,EAAO8G,GAChC,GAAG,IAEH,OACI1oB,EAAAA,EAAAA,MAACnC,GAAAA,GAAe9D,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAKkB,GAAK,IAAApD,SAAA,EACtBD,EAAAA,EAAAA,KAACoiC,GAAmB,CAACxgC,KAAM8uB,EAAcoQ,SAAUmB,IAClDF,IACG35B,EAAAA,EAAAA,MAAA,OAAK7J,UAAWJ,GAAM,aAAa8B,SAAA,EAC/BmI,EAAAA,EAAAA,MAAA,MAAI7J,UAAU,+EAA8E0B,SAAA,EACxFmI,EAAAA,EAAAA,MAAA,MAAAnI,SAAA,CAAI,UACMD,EAAAA,EAAAA,KAAA,QAAAC,SAAO8hC,EAAaxrB,WAE9BnO,EAAAA,EAAAA,MAAA,MAAAnI,SAAA,CAAI,WACOD,EAAAA,EAAAA,KAAA,QAAAC,SAAO8hC,EAAa13B,eAGnCrK,EAAAA,EAAAA,KAAA,OAAKzB,UAAU,4CAA2C0B,SACrD8hC,EAAa76B,gBAMtC,E,kGCjCM/I,IAAQC,EAAAA,EAAAA,GAAG,gBAQjB,SAASikC,GAAQ/jC,GAA6C,IAA3CqD,EAAKrD,EAALqD,MAAO1B,EAAQ3B,EAAR2B,SAChBivB,EADyC5wB,EAAfgkC,iBACIz0B,OAAOohB,SAASC,SAC9CjuB,EAAOhC,EAAAA,SAAc,WACvB,OAAI0C,EACO,CAACnC,KAAMmC,GAGX4gC,KAAMv2B,GAAAA,IAAiB,SAAA3M,GAAA,IAAEkL,EAAIlL,EAAJkL,KAAI,OAAMA,aAAI,EAAJA,EAAMgf,WAAW2F,EAAS,GACxE,GAAG,CAACvtB,IAEJ,OACIyG,EAAAA,EAAAA,MAACnJ,EAAAA,SAAc,CAAAgB,SAAA,EACXD,EAAAA,EAAAA,KAACwiC,GAAAA,EAAQ,CAAC7gC,OAAOV,aAAI,EAAJA,EAAMzB,OAAQ,MAC/BQ,EAAAA,EAAAA,KAAC0M,GAAAA,EAAe,CAACjC,WAAYykB,EAAUxkB,WAAS,KAChD1K,EAAAA,EAAAA,KAAA,OAAKzB,UAAWJ,GAAM,WAAW8B,UAC7BD,EAAAA,EAAAA,KAAA,OAAKzB,UAAW,wBAAwB0B,SAAEA,MAE7CwiC,GAAAA,GAAUC,oBAGvB,CAEA,SAAezjC,EAAAA,KAAWojC,I,gBCFpBxD,IAAS1gC,EAAAA,EAAAA,GAAM,QAerB,SAASwkC,GAAWrkC,GAAa,IAAX6K,EAAO7K,EAAP6K,QACZ2B,GAAWmsB,EAAAA,EAAAA,MAMjB,OALAh4B,EAAAA,WAAgB,WACZ6L,EAASgrB,GAAsBnC,EAAAA,GAAQiP,SAC3C,GAAG,IAjBP,SAAmCz5B,GAC/B,IAAM2B,GAAWmsB,EAAAA,EAAAA,MACX1gB,GAAOnN,EAAAA,EAAAA,IAAYmnB,IACnBH,GAAiBhnB,EAAAA,EAAAA,IAAY+mB,IAC7BD,GAAS9mB,EAAAA,EAAAA,IAAY2mB,IAErBuJ,EAAWr6B,EAAAA,aAAkB,WAC/B6L,EAASsrB,GAAuB,CAACjtB,QAAAA,EAAS+mB,OAAAA,EAAQ3Z,KAAAA,IACtD,GAAG,CAACzL,EAAU3B,EAASoN,EAAM2Z,KAE7B1hB,EAAAA,GAAAA,IAAW8qB,EAAU,CAAC1sB,QAAS,IAAWgC,UAAWwhB,GACzD,CAOIyS,CAA0B15B,IAGtBnJ,EAAAA,EAAAA,KAACo7B,GAAAA,GAAiB,CACdC,SAASr7B,EAAAA,EAAAA,KAAC8iC,GAAO,CAACvkC,UAAWsgC,GAAO,aACpC53B,SAASjH,EAAAA,EAAAA,KAAC+iC,GAAO,KAG7B,CA0BA,SAASC,GAAQ3jC,GAAa,IAAX8J,EAAO9J,EAAP8J,QACT2W,GAAQhW,EAAAA,EAAAA,MACRm5B,GAAiB75B,EAAAA,EAAAA,IAAYsqB,IAE7BrwB,GAAQ6/B,EAAAA,EAAAA,IAAapjB,EAAMtW,IAAKmqB,EAAAA,IAEtC,OACIvrB,EAAAA,EAAAA,MAACnJ,EAAAA,SAAc,CAAAgB,SAAA,EACXD,EAAAA,EAAAA,KAACmjC,EAAAA,GAAIhhC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CACD5D,UAAWsgC,GAAO,SACdx7B,GAAK,IACTsG,QAAM,EACNwzB,wBAAsB,EACtB70B,KAAM86B,GAAAA,OAEVh7B,EAAAA,EAAAA,MAACi7B,EAAAA,GAAM,CAAApjC,SAAA,EACHD,EAAAA,EAAAA,KAACsjC,EAAAA,GAAK,CAACC,KAAI,GAAAxhC,OAAK+d,EAAMyjB,KAAI,YAAWtjC,UACjCD,EAAAA,EAAAA,KAAC2iC,GAAW,CAACx5B,QAASA,OAE1BnJ,EAAAA,EAAAA,KAACsjC,EAAAA,GAAK,CAACC,KAAI,GAAAxhC,OAAK+d,EAAMyjB,KAAI,aAAYtjC,UAClCD,EAAAA,EAAAA,KAACw4B,GAAY,CAACrvB,QAASA,OAE3BnJ,EAAAA,EAAAA,KAACwjC,EAAAA,GAAQ,CAAClP,KAAMxU,EAAMyjB,KAAMhP,GAAE,GAAAxyB,OAAK+d,EAAMyjB,KAAI,KAAAxhC,OAAIkhC,UAIjE,CAOA,SAASQ,GAAI5jC,GAAuB,IAArBsJ,EAAOtJ,EAAPsJ,QAASnK,EAAQa,EAARb,SACdo9B,EA1DV,SAA4BjzB,GACxB,IAAA81B,GAA4BC,EAAAA,EAAAA,UAAS,IAAGC,GAAAj6B,EAAAA,EAAAA,GAAA+5B,EAAA,GAAjC7C,EAAM+C,EAAA,GAAEuE,EAASvE,EAAA,GAgBxB,OAdAE,EAAAA,EAAAA,YAAU,WACFl2B,EACAwnB,GAAAA,GAAMgT,YAAYx6B,GACbyC,MAAK,SAACwwB,GACHsH,EAAUtH,EAAS,YAAc,cACrC,IAAE,OACK,WACHsH,EAAU,QACd,IAEJA,EAAU,GAElB,GAAG,CAACv6B,IAEGizB,CACX,CAwCmBwH,CAAmBz6B,GAC5B2B,GAAWmsB,EAAAA,EAAAA,MASjB,OAPAh4B,EAAAA,iBAAsB,WAElB,OADAgP,YAAW,kBAAMnD,GAAS+4B,EAAAA,EAAAA,IAAoB16B,GAAS,GAAE,GAClD,WACH2B,GAAS+4B,EAAAA,EAAAA,IAAoB,IACjC,CACJ,GAAG,CAAC/4B,EAAU3B,KAGVnJ,EAAAA,EAAAA,KAACm7B,EAAAA,EAAa,CAAAl7B,UACVmI,EAAAA,EAAAA,MAAA,OAAK7J,UAAWsgC,GAAO,KAAM,yBAAyB5+B,SAAA,CACjDjB,IACGoJ,EAAAA,EAAAA,MAAA,OAAK7J,UAAWsgC,GAAO,mBAAmB5+B,SAAA,EACtCD,EAAAA,EAAAA,KAAC3B,EAAAA,EAAoB,CACjBE,UAAWsgC,GAAO,kBAClBngC,MAAOyK,EACP1K,SAAU,SAACgd,GAAQ,OAAK3Q,EAASgsB,GAAerb,GAAU,EAC1D9c,YAAa,qBACbK,SAAUA,EACVD,MAAM,QAEToK,IACGnJ,EAAAA,EAAAA,KAAC8jC,GAAAA,GAAwB,CAACC,cAAe3kC,GAAAA,EAAGJ,SAASmK,QAIhEA,GAAsB,cAAXizB,IAA0Bp8B,EAAAA,EAAAA,KAACgjC,GAAQ,CAAC75B,QAASA,IACxDA,GAAsB,gBAAXizB,IACRp8B,EAAAA,EAAAA,KAAC8H,EAAAA,EAAO,CACJf,MAAM,UACNE,QAAS,CAAC,yCAA0C+8B,GAAAA,MAG3D76B,GAAsB,UAAXizB,IACRp8B,EAAAA,EAAAA,KAAC8H,EAAAA,EAAO,CACJf,MAAM,QACNE,QAAS,CAAC,6BAA8B+8B,GAAAA,UAMhE,CAoBA,IAUaC,IAAkBC,EAAAA,EAAAA,KAVQ,SAAC75B,GACpC,IAAMlB,EAAU8nB,GAAe5mB,GAE/B,MAAO,CACH/K,MAFWuO,OAAOzO,GAAGJ,SAASmK,IAAY,CAAC7J,KAAM6J,IAA9C7J,KAGH6J,QAAAA,EACAnK,SAAUmyB,GAElB,GAE+B+S,EAtB/B,SAA4BzhC,GAA6B,IAA3BzD,EAAQyD,EAARzD,SAAUmK,EAAO1G,EAAP0G,QAAS7J,EAAImD,EAAJnD,KACvCqC,EAAQrC,EAAI,UAAAyC,OAAazC,GAAS,OAExC,OACIU,EAAAA,EAAAA,KAACqiC,GAAQ,CAAC1gC,MAAOA,EAAO2gC,gBAAe,IAAAvgC,OAAMoiC,EAAAA,IAAelkC,UACxDD,EAAAA,EAAAA,KAAA,OAAKzB,UAAWsgC,GAAO,WAAW5+B,UAC9BD,EAAAA,EAAAA,KAACyjC,GAAI,CAACW,oBAAkB,EAACj7B,QAASA,EAASnK,SAAUA,OAIrE,IAyBA,SAXA,WACI,IAAMmK,GAAUC,EAAAA,EAAAA,IAAYC,EAAAA,IACtByB,GAAWmsB,EAAAA,EAAAA,MAMjB,OAJAoI,EAAAA,EAAAA,YAAU,WACNv0B,EAASgsB,GAAe3tB,GAC5B,GAAG,KAEInJ,EAAAA,EAAAA,KAACyjC,GAAI,CAACt6B,QAASA,GAC1B,E,gBC9MA,SAASk7B,KACL,OACIrkC,EAAAA,EAAAA,KAAC+I,GAAAA,EAAW,CAACC,KAAMm7B,EAAAA,GAAc7kC,KAAM,OAAOW,UAC1CD,EAAAA,EAAAA,KAACskC,GAAAA,GAA+B,KAG5C,CAEA,SAAerlC,EAAAA,KAAWolC,G,2JCDpBlmC,GAAQC,EAAAA,EAAAA,GAAG,0BAEjB,SAASmmC,IACL,OACIvkC,EAAAA,EAAAA,KAAC+I,EAAAA,EAAW,CAACxK,UAAWJ,IAAS6K,KAAMH,EAAAA,GAAK27B,OAAOvkC,UAC/CD,EAAAA,EAAAA,KAACskC,EAA+B,KAG5C,CAEO,SAASA,IACZ,IAAMP,GAAgB36B,EAAAA,EAAAA,IAAYq7B,EAAAA,IAClC,OAAOzkC,EAAAA,EAAAA,KAAC8jC,EAAwB,CAACC,cAAeA,GACpD,CAEO,SAASD,EAAwBxlC,GAAmD,IAAjDylC,EAAazlC,EAAbylC,cAChCv6B,EAAMi5B,EAAAA,GAAUiC,sBAAsBX,GAC5C,OAAKv6B,GAKDxJ,EAAAA,EAAAA,KAAA,OAAKzB,UAAWJ,EAAM,uBAAuB8B,UACzCD,EAAAA,EAAAA,KAACqI,EAAAA,EAAM,CAACE,KAAK,SAAS5G,MAAM,sBAAsB4I,KAAMf,EAAK+a,OAAQ,SAAStkB,SAAC,0BAL5E,IAUf,CAEA,QAAehB,EAAAA,KAAWslC,E,6DC3C1B,QADwB,SAAAlhC,GAAK,OAAIrD,EAAAA,EAAAA,KAAA,OAAAmC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CAAK2N,MAAM,6BAA6BC,KAAK,OAAOC,QAAQ,aAAgB3M,GAAK,IAAApD,UAAED,EAAAA,EAAAA,KAAA,QAAM+P,KAAK,eAAeE,SAAS,UAAUC,EAAE,mIAAmIC,SAAS,cAAmB,C","sources":["webpack://@ytsaurus/ui/./src/ui/components/Dialog/controls/ClusterSelectControl/ClusterSelectControl.tsx","webpack://@ytsaurus/ui/./src/ui/components/Dialog/controls/RoleListControl/utils.ts","webpack://@ytsaurus/ui/./src/ui/components/Dialog/DialogError.tsx","webpack://@ytsaurus/ui/./src/ui/components/Dialog/index.tsx","webpack://@ytsaurus/ui/./src/ui/hocs/withDelayedMount.tsx","webpack://@ytsaurus/ui/./src/ui/components/LoadDataHandler/LoadDataHandler.tsx","webpack://@ytsaurus/ui/./src/ui/components/Message/Message.js","webpack://@ytsaurus/ui/./src/ui/components/common/Datepicker/index.tsx","webpack://@ytsaurus/ui/./src/ui/containers/AppNavigation/TopRowContent/SectionName.tsx","webpack://@ytsaurus/ui/./src/ui/containers/ClustersMenu/HeaderLinks.tsx","webpack://@ytsaurus/ui/./src/ui/utils/hammer/updater.ts","webpack://@ytsaurus/ui/./src/ui/hooks/use-updater.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/svgs/chevron-left.svg","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/Calendar.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/Clock.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/ArrowToggle/ArrowToggle.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/date-components/dist/esm/utils/cn.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/date-components/dist/esm/components/CalendarView/i18n/index.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/date-components/dist/esm/components/CalendarView/hooks/useCalendarProps.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/date-components/dist/esm/components/CalendarView/utils.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/date-components/dist/esm/components/CalendarView/CalendarView.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/date-components/dist/esm/components/CalendarView/hooks/useCalendarGridProps.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/date-components/dist/esm/components/CalendarView/hooks/useCalendarCellProps.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/date-components/dist/esm/components/utils/dates.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/date-components/dist/esm/components/utils/useDefaultTimeZone.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/date-components/dist/esm/components/CalendarView/hooks/useCalendarState.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/date-components/dist/esm/components/Calendar/Calendar.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/date-components/dist/esm/components/HiddenInput/HiddenInput.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/date-components/dist/esm/components/DateField/i18n/index.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/date-components/dist/esm/components/DateField/utils.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/date-components/dist/esm/components/DateField/hooks/useDateFieldProps.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/date-components/dist/esm/components/DateField/hooks/useBaseDateFieldState.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/date-components/dist/esm/components/DateField/hooks/useDateFieldState.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/date-components/dist/esm/components/DateField/DateField.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/date-components/dist/esm/components/DatePicker/MobileCalendar.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/date-components/dist/esm/components/DatePicker/StubButton.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/date-components/dist/esm/components/utils/getButtonSizeForInput.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/date-components/dist/esm/components/utils/mergeProps.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/date-components/dist/esm/components/DatePicker/i18n/index.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/date-components/dist/esm/components/DatePicker/utils/getDateTimeValue.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/date-components/dist/esm/components/DatePicker/hooks/useDatePickerState.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/date-components/dist/esm/components/DatePicker/hooks/datePickerStateFactory.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/date-components/dist/esm/components/DatePicker/utils/cn.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/date-components/dist/esm/components/DatePicker/DatePicker.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/date-components/dist/esm/components/DatePicker/hooks/useDatePickerProps.js","webpack://@ytsaurus/ui/./src/ui/common/utils/url-ts.ts","webpack://@ytsaurus/ui/./src/ui/pages/odin/_selectors/index.ts","webpack://@ytsaurus/ui/./src/ui/pages/odin/odin-settings.ts","webpack://@ytsaurus/ui/./src/ui/pages/odin/_selectors/odin-overview.ts","webpack://@ytsaurus/ui/./src/ui/pages/odin/_actions/odin-overview.ts","webpack://@ytsaurus/ui/./src/ui/pages/odin/_actions/index.js","webpack://@ytsaurus/ui/./src/ui/pages/odin/controls/OdinOverviewCreatePresetDialog.tsx","webpack://@ytsaurus/ui/./src/ui/pages/odin/controls/OdinOverview.tsx","webpack://@ytsaurus/ui/./src/ui/pages/odin/controls/OdinToolbar.js","webpack://@ytsaurus/ui/./src/ui/pages/odin/controls/AvailabilityMonitor.js","webpack://@ytsaurus/ui/./src/ui/pages/odin/controls/OdinMonitor.js","webpack://@ytsaurus/ui/./src/ui/containers/RootPage/RootPage.tsx","webpack://@ytsaurus/ui/./src/ui/pages/odin/controls/Odin.js","webpack://@ytsaurus/ui/./src/ui/pages/odin/controls/OdinTopRowContent.tsx","webpack://@ytsaurus/ui/./src/ui/pages/system/System/SystemTopRowContent.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/svgs/chevron-right.svg"],"sourcesContent":["import React from 'react';\nimport cn from 'bem-cn-lite';\nimport map_ from 'lodash/map';\nimport filter_ from 'lodash/filter';\n\nimport Select, {YTSelectProps} from '../../../../components/Select/Select';\n\nimport './ClusterSelectControl.scss';\nimport {ClusterConfig} from '../../../../../shared/yt-types';\nimport YT from '../../../../config/yt-config';\n\nconst block = cn('cluster-select-control');\n\ninterface Props {\n className?: string;\n\n value: string;\n onChange: (value: Props['value']) => void;\n\n isLanding?: boolean;\n\n placeholder?: string;\n\n disabled?: boolean;\n\n excludeClusters?: Array<string>;\n\n filterPredicate?: (cluster: ClusterConfig) => boolean;\n\n width?: YTSelectProps['width'];\n}\n\nfunction ClusterSelectControl({\n className,\n excludeClusters,\n onChange,\n value,\n placeholder,\n disabled,\n filterPredicate = () => true,\n width,\n}: Props) {\n const clusters = React.useMemo(() => {\n const res = map_(filter_(YT.clusters, filterPredicate), ({name, id}) => ({\n value: id,\n text: name,\n }));\n\n return res;\n }, [filterPredicate]);\n\n const items = React.useMemo(() => {\n if (!excludeClusters?.length) {\n return clusters;\n }\n\n const toSkip = new Set(excludeClusters);\n return filter_(clusters, ({value}) => {\n return !toSkip.has(value);\n });\n }, [clusters, excludeClusters]);\n\n const handleChange = React.useCallback(\n (value: Array<string>) => {\n onChange(value[0]);\n },\n [onChange],\n );\n\n return (\n <React.Fragment>\n <Select\n value={[value]}\n className={block({empty: !value}, className)}\n onUpdate={handleChange}\n items={items}\n placeholder={placeholder ?? 'Cluster...'}\n disabled={disabled}\n width={width}\n />\n </React.Fragment>\n );\n}\n\nClusterSelectControl.getDefaultValue = () => {\n return '';\n};\n\nClusterSelectControl.isEmpty = (value: string) => {\n return !value;\n};\n\nexport default ClusterSelectControl;\n","import cn from 'bem-cn-lite';\n\nimport filter_ from 'lodash/filter';\nimport forEach_ from 'lodash/forEach';\nimport map_ from 'lodash/map';\n\nimport type {EditableManyListsItemType} from '../../../../components/Dialog';\nimport type {ResponsibleType, RoleConverted, Subject} from '../../../../utils/acl/acl-types';\nimport type {PreparedRole} from '../../../../utils/acl';\nimport {RoleListControlProps} from './RoleListControl';\n\nexport const block = cn('role-list-control');\n\nexport function prepareRoleListValue(roles: Array<PreparedRole>, otherMembers: Array<string> = []) {\n const current: typeof roles = [];\n const toAdd: typeof roles = [];\n const toRemove: typeof roles = [];\n const unrecognized: typeof roles = [];\n forEach_(roles, (item) => {\n const {isUnrecognized, isRequested, isApproved, isDepriving} = item;\n if (isUnrecognized) {\n unrecognized.push(item);\n } else if (isDepriving) {\n toRemove.push(item);\n } else if (isApproved || isRequested) {\n toAdd.push(item);\n } else {\n current.push(item);\n }\n });\n\n const currentArr = current.map((item) => prepareItemOfCurrent(item));\n const otherArr = otherMembers.map((item) => ({\n title: item,\n data: {},\n frozen: true,\n }));\n\n return {\n newItems: [],\n current: {title: 'Current', data: currentArr.concat(otherArr)},\n toAdd: {\n title: 'Will be added',\n itemClassName: block('item-to-add'),\n data: toAdd.map((item) => prepareItemOfCurrent(item, {frozen: true})),\n },\n toRemove: {\n title: 'Will be removed',\n itemClassName: block('item-to-remove'),\n data: toRemove.map((item) => prepareItemOfCurrent(item, {frozen: true})),\n },\n unrecognized: {\n title: 'Unrecognized',\n itemClassName: block('item-unrecognized'),\n data: unrecognized.map((item) => prepareItemOfCurrent(item, {frozen: true})),\n },\n };\n}\n\nfunction prepareItemOfCurrent(role: PreparedRole, extraProps: any = {}) {\n return {\n title: role.text || role.value,\n data: role,\n ...extraProps,\n };\n}\n\nexport function roleListValueToSubjectList(\n value: RoleListControlProps['value'],\n): Array<ResponsibleType> {\n const {current, newItems, toAdd} = value;\n return [\n ...newItems,\n ...manyListDataItemToSubjectList(current),\n ...manyListDataItemToSubjectList(toAdd),\n ];\n}\n\nfunction manyListDataItemToSubjectList(\n manyListDataItem: EditableManyListsItemType<RoleConverted>,\n): Array<ResponsibleType> {\n const {data} = manyListDataItem || {};\n return map_(\n filter_(data, ({removed}) => !removed),\n ({data}) => {\n const {type, value} = data || {};\n return {type: type!, value: value!};\n },\n );\n}\n\nexport function extractChangedSubjects(value: {\n current: EditableManyListsItemType<RoleConverted>;\n newItems: Array<ResponsibleType>;\n}): {\n added: Subject[];\n removed: Subject[];\n} {\n const {current, newItems} = value;\n const added = newItems || [];\n const removed = ((current && current.data) || []).filter(({removed}) => removed);\n return {\n added: added.map(({type, value}) => {\n return type === 'users' ? {user: value} : {group: value};\n }),\n removed: removed.map(({data}) => {\n const {value, type} = data || {};\n return type === 'users' ? {user: value!} : {group: value!};\n }),\n };\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport type {FORM_ERROR as FormErrorType} from './index';\n\nimport {FIX_MY_TYPE, YTError} from '../../types';\nimport Block from '../../components/Block/Block';\n\nimport compact_ from 'lodash/compact';\nimport map_ from 'lodash/map';\n\nconst block = cn('yt-dialog-error');\n\nexport function DialogError(props: FIX_MY_TYPE) {\n return <Block {...props} className={block()} />;\n}\n\nexport function makeErrorFields(errors: Array<YTError | Error | undefined>) {\n return compact_(\n map_(errors, (error, index) => {\n return error\n ? {\n name: `error_${index}`,\n type: 'block' as const,\n extras: {\n children: <DialogError error={error} />,\n },\n }\n : undefined;\n }),\n );\n}\n\nconst FORM_ERROR: typeof FormErrorType = 'FINAL_FORM/form-error';\n\nexport function makeFormSubmitError(error: YTError) {\n return {\n validationErrors: {\n [FORM_ERROR]: <DialogError error={error} />,\n },\n };\n}\n","import React from 'react';\nimport withLazyLoading from '../../hocs/withLazyLoading';\nimport {withDelayedMount} from '../../hocs/withDelayedMount';\n\nimport type {\n registerDialogControl as RegisterDialogControlFn,\n registerDialogTabControl as RegisterDialogTabControlFn,\n YTDialogType,\n} from './Dialog';\n\nexport type * from './Dialog';\nexport * from './DialogError';\nexport * from './controls/RoleListControl/utils';\n\nexport function importYTDFDialog() {\n return import(/* webpackChunkName: \"yt-df-dialog\" */ './Dialog');\n}\n\nexport const YTDFDialog = withDelayedMount(\n withLazyLoading(\n React.lazy(async () => {\n return {default: (await importYTDFDialog()).YTDialog};\n }),\n '',\n ),\n) as YTDialogType;\n\nexport function useControlRegistration(\n fn: (params: {\n registerDialogControl: typeof RegisterDialogControlFn;\n registerDialogTabControl: typeof RegisterDialogTabControlFn;\n }) => void,\n) {\n importYTDFDialog().then(({registerDialogControl, registerDialogTabControl}) => {\n fn({registerDialogControl, registerDialogTabControl});\n });\n}\n\nexport type {RoleListControlProps} from './controls/RoleListControl/RoleListControl';\nexport const RoleListControl = withLazyLoading(\n React.lazy(async () => {\n return {default: (await importYTDFDialog()).RoleListControl};\n }),\n '',\n);\n\nexport const EditableList = withLazyLoading(\n React.lazy(async () => {\n return {default: (await importYTDFDialog()).EditableList};\n }),\n '',\n);\n\nexport const TabFieldVertical = withLazyLoading(\n React.lazy(async () => {\n return {default: (await importYTDFDialog()).TabFieldVertical};\n }),\n '',\n);\n","import React from 'react';\n\n/**\n * The hoc allows to delay mounting until `props.visible == true`.\n * The hoc might be useful to wrap components wrapped by React.lazy\n * @param Component\n * @returns\n */\nexport function withDelayedMount<P extends {visible?: boolean}>(Component: React.ComponentType<P>) {\n return function MountOnFirstVisible(props: P) {\n const [mounted, setMounted] = React.useState(false);\n React.useEffect(() => {\n if (!mounted && props.visible) {\n setMounted(true);\n }\n }, [props.visible, mounted]);\n return !mounted ? null : <Component {...props} />;\n };\n}\n","import React, {Component} from 'react';\n\nimport {Toaster} from '@gravity-ui/uikit';\nimport Error from '../../components/Error/Error';\nimport hammer from '../../common/hammer';\n\nimport {showErrorPopup} from '../../utils/utils';\nimport {YTError} from '../../types';\n\nconst toaster = new Toaster();\n\ninterface LoadDataHandlerProps {\n alwaysShowError?: boolean;\n loaded: boolean;\n error: boolean;\n errorData?: YTError;\n children: React.ReactNode;\n}\n\nexport default class LoadDataHandler extends Component<LoadDataHandlerProps> {\n componentDidUpdate() {\n const {error, loaded, errorData} = this.props;\n\n if (error && loaded) {\n toaster.add({\n theme: 'danger',\n name: 'network',\n autoHiding: 500000,\n title: 'Oops! something went wrong.',\n content: errorData ? (errorData as YTError).message : hammer.format.NO_VALUE,\n actions: [\n {\n label: ' view',\n onClick: () => showErrorPopup(errorData as YTError),\n },\n ],\n });\n }\n }\n\n render() {\n const {alwaysShowError = false, error, errorData, loaded, children} = this.props;\n\n const initialLoading = !loaded;\n\n if (error && (alwaysShowError || initialLoading)) {\n return <Error error={errorData} />;\n }\n\n return children;\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport map_ from 'lodash/map';\n\nimport Button from '../../components/Button/Button';\nimport Icon from '../../components/Icon/Icon';\n\nconst block = cn('elements-message');\n\nexport default function Message({\n theme = 'default',\n showClose = false,\n dismissCallback,\n content,\n buttons,\n}) {\n return (\n <div className={block({theme})}>\n {showClose && (\n <div className={block('close')}>\n <Button size=\"m\" view=\"flat-secondary\" title=\"Close\" onClick={dismissCallback}>\n <Icon type=\"close\" />\n </Button>\n </div>\n )}\n\n {React.isValidElement(content)\n ? {content}\n : map_(content, (data, index) => (\n <p key={index} className={block('paragraph')}>\n {data}\n </p>\n ))}\n\n {buttons && (\n <div className={block('buttons')}>\n {map_(buttons, (button) => (\n <span className={block('button')} key={button.text}>\n <Button size=\"m\" title={button.text} onClick={button.callback}>\n {button.text}\n </Button>\n </span>\n ))}\n </div>\n )}\n </div>\n );\n}\n\nMessage.propTypes = {\n theme: PropTypes.string,\n showClose: PropTypes.bool,\n dismissCallback: (props, propName, componentName) => {\n if (props.showClose && typeof props[propName] !== 'function') {\n return new Error(\n `You have to provide dismissCallback to ${componentName} when showClose is true`,\n );\n }\n },\n content: PropTypes.oneOfType([PropTypes.node, PropTypes.arrayOf(PropTypes.string)]).isRequired,\n buttons: PropTypes.arrayOf(PropTypes.object),\n};\n","import React, {FC} from 'react';\nimport {Datepicker, DatepickerProps, datepickerDefaultProps} from './Datepicker';\n\nexport * from './Datepicker';\n\nexport const DatePickerWrapper: FC<DatepickerProps> = (props) => <Datepicker {...props} />;\nDatePickerWrapper.defaultProps = datepickerDefaultProps;\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {useSelector} from 'react-redux';\nimport {useRouteMatch} from 'react-router';\nimport {getPagesInfoMapById} from '../../../store/selectors/slideoutMenu';\n\nimport Link from '../../../components/Link/Link';\nimport {getCluster} from '../../../store/selectors/global';\nimport {makeRoutedURL} from '../../../store/location';\nimport {Page} from '../../../../shared/constants/settings';\n\nimport './SectionName.scss';\nconst block = cn('top-row-section');\n\ninterface Props {\n page: string;\n name?: string;\n className?: string;\n children?: React.ReactNode;\n urlParams?: object;\n showSplitter?: boolean;\n}\n\nconst other: Record<string, {name: string}> = {\n [Page.CHAOS_CELL_BUNDLES]: {name: 'Bundles'},\n};\n\nexport function RowWithName({page, name, className, children, showSplitter, urlParams}: Props) {\n const cluster = useSelector(getCluster);\n const info = useSelector(getPagesInfoMapById)[page] || other[page];\n const title = name || info?.name;\n const url = makeRoutedURL(`/${cluster}/${page}`, urlParams);\n return (\n <div className={block(null, className)}>\n {title && (\n <h1 className={block('name')}>\n <Link routed theme={'primary'} url={url}>\n {title}\n </Link>\n </h1>\n )}\n {showSplitter && <div className={block('spacer')} />}\n {children}\n </div>\n );\n}\n\nconst RowWithNameMemo = React.memo(RowWithName);\n\nexport default function SectionName({\n className,\n children,\n}: {\n className?: string;\n children: React.ReactNode;\n}) {\n const {\n params: {page},\n } = useRouteMatch<{page: string}>();\n\n return (\n <RowWithNameMemo className={className} page={page}>\n {children}\n </RowWithNameMemo>\n );\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport block from 'bem-cn-lite';\n\nimport filter_ from 'lodash/filter';\nimport forEach_ from 'lodash/forEach';\nimport map_ from 'lodash/map';\nimport partition_ from 'lodash/partition';\n\nimport Link from '../../components/Link/Link';\nimport './ClusterMenuHeader.scss';\nimport {DropdownMenu} from '@gravity-ui/uikit';\nimport Button from '../../components/Button/Button';\nimport Icon from '../../components/Icon/Icon';\nimport {ALL_LINKS_ITEMS, HeaderLinkItem} from './header-links-items';\nimport {wrapApiPromiseByToaster} from '../../utils/utils';\nimport {ActionD} from '../../types';\n\nconst b = block('cluster-menu');\n\nHeaderLinks.propTypes = {\n currentUrl: PropTypes.string,\n showTitle: PropTypes.bool,\n};\n\ninterface Props {\n currentUrl?: string;\n showTitle?: boolean;\n}\n\nfunction getItemVisibilityOrFalse(item: HeaderLinkItem) {\n if (!item.getVisible) {\n return Promise.resolve(false);\n }\n\n return wrapApiPromiseByToaster(item.getVisible(), {\n toasterName: 'link_item_visibility_' + item.href,\n skipSuccessToast: true,\n errorContent: <span>Cannot get visibity for {item.href}. </span>,\n })\n .then((visible) => {\n return visible;\n })\n .catch(() => {\n return false;\n });\n}\n\ninterface LinksVisibilityState {\n visibilityByHref: {[href: string]: boolean};\n requestedHrefs: Set<string>;\n}\nconst linksVisibilityState: LinksVisibilityState = {\n visibilityByHref: {},\n requestedHrefs: new Set(),\n};\n\ntype LinksVisibilityAction =\n | ActionD<'add-visible-items', LinksVisibilityState['visibilityByHref']>\n | ActionD<'add-requested-hrefs', Array<string>>;\n\nfunction reducer(state: LinksVisibilityState, action: LinksVisibilityAction) {\n switch (action.type) {\n case 'add-visible-items':\n return {...state, visibilityByHref: {...state.visibilityByHref, ...action.data}};\n case 'add-requested-hrefs':\n forEach_(action.data, (href) => state.requestedHrefs.add(href));\n return {...state};\n default:\n return state;\n }\n}\n\nfunction useLinkItems(items: Array<HeaderLinkItem>) {\n const [{visibilityByHref, requestedHrefs}, dispatch] = React.useReducer(\n reducer,\n linksVisibilityState,\n );\n\n const [visible, rest] = React.useMemo(() => {\n return partition_(items, (item) => {\n return !item.getVisible || visibilityByHref[item.href];\n });\n }, [items, visibilityByHref]);\n\n React.useEffect(() => {\n const toRequest = filter_(rest, (item) => !requestedHrefs.has(item.href));\n\n if (!toRequest.length) {\n return;\n }\n\n dispatch({type: 'add-requested-hrefs', data: map_(toRequest, (item) => item.href)});\n const collected: typeof visibilityByHref = {};\n Promise.all(\n map_(toRequest, (item) => {\n return getItemVisibilityOrFalse(item).then((value) => {\n collected[item.href] = value;\n });\n }),\n ).then(() => {\n dispatch({type: 'add-visible-items', data: collected});\n });\n }, [rest]);\n\n return visible;\n}\n\nexport function HeaderLinks({currentUrl, showTitle}: Props) {\n const items = useLinkItems(ALL_LINKS_ITEMS);\n const [other, [current]] = React.useMemo(\n () => partition_(items, ({href}) => href !== currentUrl),\n [items, currentUrl],\n );\n\n return (\n <React.Fragment>\n {showTitle && Boolean(current) && <div className={b('page-name')}>{current.text}</div>}\n <div className={b('links', {theme: 'expanded'})}>\n <ul className={b('links-list', block('elements-list')({type: 'unstyled'}))}>\n {map_(other, (link) => (\n <li key={link.text}>\n <Link routed={link.routed} url={link.href} className={b('links-item')}>\n {link.text}\n </Link>\n </li>\n ))}\n </ul>\n </div>\n <div className={b('links', {theme: 'collapsed'})}>\n <DropdownMenu\n popupProps={{className: b('popup')}}\n switcher={\n <Button>\n Links \n <Icon awesome={'chevron-down'} />\n </Button>\n }\n items={map_(items, (item) => {\n return {action() {}, ...item};\n })}\n size={'l'}\n />\n </div>\n </React.Fragment>\n );\n}\n\nHeaderImpl.propTypes = {\n // own Props\n currentUrl: PropTypes.string,\n};\n\nfunction HeaderImpl({currentUrl, showTitle}: {currentUrl?: string; showTitle?: boolean}) {\n return (\n <div className={b('header', 'elements-page__header')}>\n <HeaderLinks currentUrl={currentUrl} showTitle={showTitle} />\n </div>\n );\n}\n\nexport const HeaderWithLinks = React.memo(HeaderImpl);\n","export type UpdaterOptions = {\n getSkipNextCall: () => boolean;\n};\n\nexport class Updater {\n private callback?: () => unknown;\n private timeout: number;\n private options?: UpdaterOptions;\n\n private inProgress = false;\n private lastCallTime = 0;\n private frozen = false;\n private timerId?: number;\n\n constructor(callback: () => unknown, timeout: number, dynamicOptions?: UpdaterOptions) {\n this.callback = callback;\n this.timeout = Math.max(3000, timeout);\n this.options = dynamicOptions;\n\n document.addEventListener('visibilitychange', this.onVisibilityChange);\n\n this.repeat();\n }\n\n destroy() {\n document.removeEventListener('visibilitychange', this.onVisibilityChange);\n window.clearTimeout(this.timerId);\n delete this.callback;\n delete this.options;\n }\n\n private onVisibilityChange = () => {\n if (document.hidden) {\n this.freeze();\n } else {\n this.unfreeze();\n }\n };\n\n private freeze = () => {\n this.frozen = true;\n };\n\n private unfreeze = () => {\n this.frozen = false;\n if (!this.inProgress && Date.now() - this.lastCallTime >= this.timeout) {\n this.repeat();\n }\n };\n\n private repeat = async () => {\n window.clearTimeout(this.timerId);\n\n if (this.frozen) {\n return;\n }\n\n try {\n this.inProgress = true;\n if (this.lastCallTime === 0 || !this.options?.getSkipNextCall()) {\n await this.callback?.();\n }\n } finally {\n this.inProgress = false;\n this.lastCallTime = Date.now();\n this.timerId = window.setTimeout(this.repeat, this.timeout);\n }\n };\n}\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport isEqual_ from 'lodash/isEqual';\n\nimport {Updater} from '../utils/hammer/updater';\nimport {getUseAutoRefresh} from '../store/selectors/settings';\n\nexport const DEFAULT_UPDATER_TIMEOUT = 30 * 1000;\n\nexport type UseUpdaterOptions = {\n /**\n * polling interval\n */\n timeout?: number;\n /**\n * a callback that will be called at destruction stage of React.useEffect(...)\n */\n destructFn?: () => void;\n /**\n * if `true` then `fn()` will be called only once\n */\n onlyOnce?: boolean;\n};\n\nexport function useUpdater(\n fn?: () => unknown,\n {timeout = DEFAULT_UPDATER_TIMEOUT, destructFn, onlyOnce}: UseUpdaterOptions = {},\n) {\n const useAutoRefresh = useSelector(getUseAutoRefresh) as boolean;\n const optionsRef = React.useRef({skipNextCall: !useAutoRefresh});\n\n optionsRef.current.skipNextCall = !useAutoRefresh;\n\n React.useEffect(() => {\n let updater: Updater | undefined;\n if (onlyOnce) {\n fn?.();\n } else {\n updater = fn\n ? new Updater(fn, timeout, {\n getSkipNextCall() {\n return optionsRef.current.skipNextCall;\n },\n })\n : undefined;\n }\n\n return () => {\n updater?.destroy();\n destructFn?.();\n };\n }, [fn, timeout, destructFn, onlyOnce]);\n}\n\nexport function useUpdaterWithMemoizedParams<ArgsT extends Array<unknown>>(\n fn: undefined | ((...args: ArgsT) => unknown),\n options?: UseUpdaterOptions,\n ...args: ArgsT\n) {\n const params = useMemoizedIfEqual(...args);\n\n const updateFn = React.useCallback(() => {\n fn?.(...params);\n }, [fn, params]);\n\n useUpdater(updateFn, options);\n}\n\nexport function useMemoizedIfEqual<ArgsT extends Array<unknown>>(...args: ArgsT) {\n const ref = React.useRef<ArgsT>(args);\n\n const params = React.useMemo(() => {\n if (!isEqual_(ref.current, args)) {\n ref.current = args;\n }\n return ref.current;\n }, [args]);\n\n return params;\n}\n","const SvgChevronLeft = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...props}><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M10.53 2.97a.75.75 0 0 1 0 1.06L6.56 8l3.97 3.97a.75.75 0 1 1-1.06 1.06l-4.5-4.5a.75.75 0 0 1 0-1.06l4.5-4.5a.75.75 0 0 1 1.06 0\" clipRule=\"evenodd\" /></svg>;\nexport default SvgChevronLeft;","import * as React from 'react';\nconst Calendar = (props) => (React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: 16, height: 16, fill: \"none\", viewBox: \"0 0 16 16\" }, props),\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M5.25 5.497a.75.75 0 0 1-.75-.75V4A1.5 1.5 0 0 0 3 5.5v1h10v-1A1.5 1.5 0 0 0 11.5 4v.75a.75.75 0 0 1-1.5 0V4H6v.747a.75.75 0 0 1-.75.75ZM10 2.5H6v-.752a.75.75 0 1 0-1.5 0V2.5a3 3 0 0 0-3 3v6a3 3 0 0 0 3 3h7a3 3 0 0 0 3-3v-6a3 3 0 0 0-3-3v-.75a.75.75 0 0 0-1.5 0v.75ZM3 8v3.5A1.5 1.5 0 0 0 4.5 13h7a1.5 1.5 0 0 0 1.5-1.5V8H3Z\", clipRule: \"evenodd\" })));\nexport default Calendar;\n","import * as React from 'react';\nconst Clock = (props) => (React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: 16, height: 16, fill: \"none\", viewBox: \"0 0 16 16\" }, props),\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M13.5 8a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0ZM15 8A7 7 0 1 1 1 8a7 7 0 0 1 14 0ZM8.75 4.5a.75.75 0 0 0-1.5 0V8a.75.75 0 0 0 .3.6l2 1.5a.75.75 0 1 0 .9-1.2l-1.7-1.275V4.5Z\", clipRule: \"evenodd\" })));\nexport default Clock;\n","import React from 'react';\nimport { ChevronDown } from '@gravity-ui/icons';\nimport { Icon } from '../Icon';\nimport { block } from '../utils/cn';\nimport './ArrowToggle.css';\nconst b = block('arrow-toggle');\nexport function ArrowToggle({ size = 16, direction = 'bottom', className, qa }) {\n return (React.createElement(\"span\", { style: { width: size, height: size }, className: b({ direction }, className), \"data-qa\": qa },\n React.createElement(Icon, { data: ChevronDown, size: size })));\n}\n","import { withNaming } from '@bem-react/classname';\nexport const NAMESPACE = 'g-date-';\nexport const block = withNaming({ n: NAMESPACE, e: '__', m: '_' });\n","import { addComponentKeysets } from '@gravity-ui/uikit/i18n';\nimport { NAMESPACE } from '../../../utils/cn';\nimport en from './en.json';\nimport ru from './ru.json';\nexport const i18n = addComponentKeysets({ en, ru }, `${NAMESPACE}calendar`);\n","import React from 'react';\nimport { useFocusWithin } from '@gravity-ui/uikit';\nimport { i18n } from '../i18n';\nconst buttonDisabledClassName = 'yc-button_disabled g-button_disabled';\n// eslint-disable-next-line complexity\nexport function useCalendarProps(props, state) {\n const title = state.mode === 'years' || state.mode === 'quarters'\n ? `${state.startDate.year()} — ${state.endDate.year()}`\n : state.focusedDate.format(state.mode === 'days' ? 'MMMM YYYY' : 'YYYY');\n const { focusWithinProps } = useFocusWithin({\n onFocusWithin: props.onFocus,\n onBlurWithin: props.onBlur,\n });\n const calendarProps = Object.assign({ role: 'group', id: props.id, 'aria-label': [props['aria-label'], title].filter(Boolean).join(', '), 'aria-labelledby': props['aria-labelledby'] || undefined, 'aria-describedby': props['aria-describedby'] || undefined, 'aria-details': props['aria-details'] || undefined, 'aria-disabled': state.disabled || undefined }, focusWithinProps);\n const modeIndex = state.availableModes.indexOf(state.mode);\n const isModeLast = modeIndex + 1 === state.availableModes.length;\n const isNextModeLast = modeIndex + 2 === state.availableModes.length;\n const modeDisabled = state.disabled || isModeLast;\n const modeButtonProps = {\n disabled: state.disabled,\n // FIXME: do not use button class name\n className: modeDisabled ? buttonDisabledClassName : undefined,\n onClick: modeDisabled\n ? undefined\n : () => {\n state.zoomOut();\n if (isNextModeLast) {\n state.setFocused(true);\n }\n },\n extraProps: {\n 'aria-disabled': modeDisabled ? 'true' : undefined,\n 'aria-description': getAriaDescriptionForModeButton(state.mode, state.availableModes),\n 'aria-live': 'polite',\n },\n children: title,\n };\n const previousFocused = React.useRef(false);\n const previousDisabled = state.disabled || state.isPreviousPageInvalid();\n React.useLayoutEffect(() => {\n if (previousDisabled && previousFocused.current) {\n previousFocused.current = false;\n state.setFocused(true);\n }\n });\n const previousButtonProps = {\n disabled: state.disabled,\n // FIXME: do not use button class name\n className: previousDisabled ? buttonDisabledClassName : undefined,\n onClick: previousDisabled\n ? undefined\n : () => {\n state.focusPreviousPage();\n },\n onFocus: previousDisabled\n ? undefined\n : () => {\n previousFocused.current = true;\n },\n onBlur: previousDisabled\n ? undefined\n : () => {\n previousFocused.current = false;\n },\n extraProps: {\n 'aria-label': i18n('Previous'),\n 'aria-disabled': previousDisabled ? 'true' : undefined,\n },\n };\n const nextFocused = React.useRef(false);\n const nextDisabled = state.disabled || state.isNextPageInvalid();\n React.useLayoutEffect(() => {\n if (nextDisabled && nextFocused.current) {\n nextFocused.current = false;\n state.setFocused(true);\n }\n });\n const nextButtonProps = {\n disabled: state.disabled,\n // FIXME: do not use button class name\n className: nextDisabled ? buttonDisabledClassName : undefined,\n onClick: nextDisabled\n ? undefined\n : () => {\n state.focusNextPage();\n },\n onFocus: nextDisabled\n ? undefined\n : () => {\n nextFocused.current = true;\n },\n onBlur: nextDisabled\n ? undefined\n : () => {\n nextFocused.current = false;\n },\n extraProps: {\n 'aria-label': i18n('Next'),\n 'aria-disabled': previousDisabled ? 'true' : undefined,\n },\n };\n return {\n calendarProps,\n modeButtonProps,\n nextButtonProps,\n previousButtonProps,\n };\n}\nfunction getAriaDescriptionForModeButton(mode, availableModes) {\n const nextModeIndex = availableModes.indexOf(mode) + 1;\n const isModeLast = nextModeIndex === availableModes.length;\n if (isModeLast) {\n return undefined;\n }\n const ariaLabelMap = {\n days: '',\n months: i18n('Switch to months view'),\n quarters: i18n('Switch to quarters view'),\n years: i18n('Switch to years view'),\n };\n const nextMode = availableModes[nextModeIndex];\n return ariaLabelMap[nextMode];\n}\n","import { dateTime } from '@gravity-ui/date-utils';\nexport function constrainValue(value, minValue, maxValue) {\n if (minValue && value.isBefore(minValue)) {\n return minValue;\n }\n if (maxValue && maxValue.isBefore(value)) {\n return maxValue;\n }\n return value;\n}\nexport function getDaysInPeriod(startDate, _endDate, mode) {\n const days = [];\n if (mode === 'days') {\n const currentDate = startDate.startOf('week');\n for (let i = 0; i < 42; i++) {\n days.push(currentDate.add({ days: i }));\n }\n }\n else if (mode === 'quarters') {\n for (let i = 0; i < 16; i++) {\n days.push(startDate.add(i, 'quarters'));\n }\n }\n else {\n for (let i = 0; i < 12; i++) {\n days.push(startDate.add({ [mode]: i }));\n }\n }\n return days;\n}\nexport function getWeekDays() {\n const weekDays = [];\n const weekStart = dateTime().startOf('week');\n for (let i = 0; i < 7; i++) {\n const date = weekStart.add({ days: i });\n weekDays.push(date);\n }\n return weekDays;\n}\nexport const calendarLayouts = ['days', 'months', 'quarters', 'years'];\n","'use client';\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React from 'react';\nimport { ChevronLeft, ChevronRight } from '@gravity-ui/icons';\nimport { ArrowToggle, Button } from '@gravity-ui/uikit';\nimport { block } from '../../utils/cn';\nimport { useCalendarCellProps } from './hooks/useCalendarCellProps';\nimport { useCalendarGridProps } from './hooks/useCalendarGridProps';\nimport { useCalendarProps } from './hooks/useCalendarProps';\nimport { calendarLayouts, getDaysInPeriod, getWeekDays } from './utils';\nimport './Calendar.css';\nconst b = block('calendar');\nexport const CalendarView = React.forwardRef(function Calendar(props, ref) {\n const { state } = props;\n const { calendarProps, modeButtonProps, nextButtonProps, previousButtonProps } = useCalendarProps(props, state);\n React.useImperativeHandle(ref, () => ({\n focus() {\n state.setFocused(true);\n },\n }));\n return (_jsxs(\"div\", Object.assign({}, calendarProps, { className: b({ size: props.size }), children: [_jsxs(\"div\", { className: b('header'), children: [_jsx(Button, Object.assign({}, modeButtonProps, { view: \"flat\", size: props.size, children: state.availableModes.indexOf(state.mode) + 1 ===\n state.availableModes.length ? (_jsx(\"span\", { className: b('mode-label', b(`years-label`)), children: modeButtonProps.children }, \"label\")) : ([\n _jsx(\"span\", { className: b('mode-label'), children: modeButtonProps.children }, \"label\"),\n _jsx(Button.Icon, { children: _jsx(ArrowToggle, { direction: \"bottom\" }) }, \"icon\"),\n ]) })), _jsxs(\"div\", { className: b('controls'), children: [_jsx(Button, Object.assign({}, previousButtonProps, { view: \"flat\", size: props.size, children: _jsx(Button.Icon, { children: _jsx(ChevronLeft, { className: b('control-icon') }) }) })), _jsx(Button, Object.assign({}, nextButtonProps, { view: \"flat\", size: props.size, children: _jsx(Button.Icon, { children: _jsx(ChevronRight, { className: b('control-icon') }) }) }))] })] }), _jsx(CalendarGrid, { state: state })] })));\n});\nfunction CalendarGrid({ state }) {\n const [prevState, setPrevState] = React.useState(() => (Object.assign(Object.assign({}, state), { isFocused: false })));\n const modeChanged = state.mode !== prevState.mode;\n const startDateChanged = !state.startDate.isSame(prevState.startDate, 'days');\n let animation;\n if (modeChanged) {\n if (calendarLayouts.indexOf(prevState.mode) > calendarLayouts.indexOf(state.mode)) {\n animation = 'zoom-out';\n }\n else {\n animation = 'zoom-in';\n }\n }\n else if (startDateChanged) {\n if (state.startDate.isBefore(prevState.startDate)) {\n animation = 'forward';\n }\n else {\n animation = 'backward';\n }\n }\n const { gridProps } = useCalendarGridProps(state);\n return (_jsxs(\"div\", Object.assign({ className: b('grid') }, gridProps, { children: [animation && (_jsx(Content, { className: b('previous-state'), state: prevState, animation: animation })), _jsx(Content, { className: b('current-state'), state: state, animation: animation, onAnimationEnd: () => {\n setPrevState(Object.assign(Object.assign({}, state), { isFocused: false }));\n } }, \"current\")] })));\n}\nfunction Content({ className, state, animation, onAnimationEnd }) {\n return (_jsxs(\"div\", { className: b('content', { animation }, className), onAnimationEnd: onAnimationEnd, role: \"presentation\", children: [state.mode === 'days' && _jsx(Weekdays, { state: state }), _jsx(CalendarGridCells, { state: state })] }));\n}\nfunction Weekdays({ state }) {\n const weekdays = getWeekDays();\n return (_jsx(\"div\", { className: b('grid-row'), role: \"row\", children: weekdays.map((date) => {\n return (_jsx(\"div\", { className: b('weekday', { weekend: state.isWeekend(date) }), role: \"columnheader\", \"aria-label\": date.format('dddd'), children: date.format('dd') }, date.day()));\n }) }));\n}\nfunction CalendarGridCells({ state }) {\n const rowsInPeriod = state.mode === 'days' ? 6 : 4;\n const columnsInRow = state.mode === 'days' ? 7 : 3 + (state.mode === 'quarters' ? 1 : 0);\n const days = getDaysInPeriod(state.startDate, state.endDate, state.mode);\n return (_jsx(\"div\", { className: b('grid-rowgroup', { mode: state.mode }), role: \"rowgroup\", children: [...new Array(rowsInPeriod).keys()].map((rowIndex) => (_jsxs(\"div\", { className: b('grid-row'), role: \"row\", children: [state.mode === 'quarters' ? (_jsx(\"span\", { role: \"rowheader\", className: b('grid-rowgroup-header'), children: days[rowIndex * columnsInRow].format('YYYY') })) : null, days\n .slice(rowIndex * columnsInRow, (rowIndex + 1) * columnsInRow)\n .map((date) => {\n return _jsx(CalendarCell, { date: date, state: state }, date.unix());\n })] }, rowIndex))) }));\n}\nfunction CalendarCell({ date, state }) {\n const { cellProps, buttonProps, formattedDate, isDisabled, isSelected, isRangeSelection, isSelectionStart, isSelectionEnd, isOutsideCurrentRange, isUnavailable, isCurrent, isWeekend, } = useCalendarCellProps(date, state);\n return (_jsx(\"div\", Object.assign({}, cellProps, { children: _jsx(\"div\", Object.assign({}, buttonProps, { className: b('button', {\n disabled: isDisabled,\n selected: isSelected,\n 'range-selection': isRangeSelection,\n 'selection-start': isSelectionStart,\n 'selection-end': isSelectionEnd,\n 'out-of-boundary': isOutsideCurrentRange,\n unavailable: isUnavailable,\n current: isCurrent,\n weekend: isWeekend,\n }), children: formattedDate })) })));\n}\n","import { useFocusWithin } from '@gravity-ui/uikit';\nexport function useCalendarGridProps(state) {\n const { focusWithinProps } = useFocusWithin({\n onFocusWithinChange: (isFocused) => {\n state.setFocused(isFocused);\n },\n });\n const gridProps = Object.assign(Object.assign({ role: 'grid', 'aria-label': state.mode === 'years' || state.mode === 'quarters'\n ? `${state.startDate.year()} — ${state.endDate.year()}`\n : state.focusedDate.format(state.mode === 'days' ? 'MMMM YYYY' : 'YYYY'), 'aria-disabled': state.disabled ? 'true' : undefined, 'aria-readonly': state.readOnly ? 'true' : undefined }, focusWithinProps), { onKeyDown: (e) => {\n if (e.key === 'ArrowRight') {\n e.preventDefault();\n state.focusNextCell();\n }\n else if (e.key === 'ArrowLeft') {\n e.preventDefault();\n state.focusPreviousCell();\n }\n else if (e.key === 'ArrowDown') {\n e.preventDefault();\n state.focusNextRow();\n }\n else if (e.key === 'ArrowUp') {\n e.preventDefault();\n state.focusPreviousRow();\n }\n else if (e.key === 'PageDown') {\n e.preventDefault();\n state.focusNextPage(e.shiftKey);\n }\n else if (e.key === 'PageUp') {\n e.preventDefault();\n state.focusPreviousPage(e.shiftKey);\n }\n else if (e.key === 'End') {\n e.preventDefault();\n state.focusSectionEnd();\n }\n else if (e.key === 'Home') {\n e.preventDefault();\n state.focusSectionStart();\n }\n else if (e.code === 'Minus') {\n e.preventDefault();\n state.zoomOut();\n }\n else if (e.code === 'Equal') {\n e.preventDefault();\n state.zoomIn();\n }\n else if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n state.selectDate(state.focusedDate);\n }\n } });\n return {\n gridProps,\n };\n}\n","import React from 'react';\nexport function useCalendarCellProps(date, state) {\n const ref = React.useRef(null);\n const isFocused = state.isCellFocused(date);\n React.useEffect(() => {\n var _a;\n if (isFocused) {\n (_a = ref.current) === null || _a === void 0 ? void 0 : _a.focus({ preventScroll: true });\n }\n }, [isFocused]);\n const tabIndex = state.focusedDate.isSame(date, state.mode) ? 0 : -1;\n const isDisabled = state.isCellDisabled(date);\n const isSelected = state.isSelected(date);\n const highlightedRange = 'highlightedRange' in state && state.highlightedRange;\n const isRangeSelection = Boolean(highlightedRange && isSelected);\n const isSelectionStart = isSelected && highlightedRange && date.isSame(highlightedRange.start, state.mode);\n const isSelectionEnd = isSelected && highlightedRange && date.isSame(highlightedRange.end, state.mode);\n const isOutsideCurrentRange = state.mode === 'days' ? !state.focusedDate.isSame(date, 'month') : false;\n const isUnavailable = state.isCellUnavailable(date);\n const isSelectable = !isDisabled && !isUnavailable;\n const isCurrent = state.isCurrent(date);\n const isWeekend = state.isWeekend(date);\n const label = getDateLabel(date, state.mode);\n const cellProps = {\n role: 'gridcell',\n 'aria-selected': isSelected ? 'true' : undefined,\n 'aria-disabled': isDisabled ? 'true' : undefined,\n };\n const buttonProps = {\n ref,\n role: 'button',\n tabIndex: isDisabled ? undefined : tabIndex,\n 'aria-disabled': isSelectable ? undefined : 'true',\n 'aria-label': label,\n onClick: isSelectable\n ? () => {\n state.setFocusedDate(date);\n state.selectDate(date);\n }\n : undefined,\n onPointerEnter() {\n if ('highlightDate' in state && isSelectable) {\n if (isOutsideCurrentRange) {\n const newDate = date.isBefore(state.focusedDate)\n ? state.focusedDate.startOf('month')\n : state.focusedDate.endOf('month').startOf('date');\n state.highlightDate(newDate);\n }\n else {\n state.highlightDate(date);\n }\n }\n },\n };\n let formattedDate = date.format('D');\n if (state.mode === 'months') {\n formattedDate = date.format('MMM');\n }\n else if (state.mode === 'quarters') {\n formattedDate = date.format('[Q]Q');\n }\n else if (state.mode === 'years') {\n formattedDate = date.format('YYYY');\n }\n return {\n cellProps,\n buttonProps,\n formattedDate,\n isDisabled,\n isSelected,\n isRangeSelection,\n isSelectionStart,\n isSelectionEnd,\n isOutsideCurrentRange,\n isUnavailable,\n isCurrent,\n isWeekend,\n };\n}\nfunction getDateLabel(date, mode) {\n let label = '';\n if (mode === 'days') {\n label = `${date.format('dddd')}, ${date.format('LL')}`;\n }\n else if (mode === 'months') {\n label = `${date.format('MMMM YYYY')}`;\n }\n else if (mode === 'quarters') {\n label = `${date.format('[Q]Q YYYY')}`;\n }\n else if (mode === 'years') {\n label = `${date.format('YYYY')}`;\n }\n return label;\n}\n","import { dateTime } from '@gravity-ui/date-utils';\nexport function createPlaceholderValue({ placeholderValue, timeZone }) {\n return (placeholderValue !== null && placeholderValue !== void 0 ? placeholderValue : dateTime({ timeZone }).set('hour', 0).set('minute', 0).set('second', 0));\n}\nexport function isInvalid(value, minValue, maxValue) {\n if (!value) {\n return false;\n }\n if (minValue && value.isBefore(minValue)) {\n return true;\n }\n if (maxValue && maxValue.isBefore(value)) {\n return true;\n }\n return false;\n}\nexport function mergeDateTime(date, time) {\n return date\n .set('hours', time.hour())\n .set('minutes', time.minute())\n .set('seconds', time.second());\n}\n","import React from 'react';\nexport function useDefaultTimeZone(date) {\n const defaultTimeZone = date ? date.timeZone() : 'default';\n const [lastValue, setLastValue] = React.useState(defaultTimeZone);\n if (date && defaultTimeZone !== lastValue) {\n setLastValue(defaultTimeZone);\n }\n const timeZone = date ? defaultTimeZone : lastValue;\n return timeZone;\n}\n","import React from 'react';\nimport { dateTime } from '@gravity-ui/date-utils';\nimport { useControlledState } from '@gravity-ui/uikit';\nimport { createPlaceholderValue, mergeDateTime } from '../../utils/dates';\nimport { useDefaultTimeZone } from '../../utils/useDefaultTimeZone';\nimport { calendarLayouts, constrainValue } from '../utils';\nconst defaultModes = {\n days: true,\n months: true,\n quarters: false,\n years: true,\n};\nexport function useCalendarState(props) {\n var _a, _b, _c;\n const { disabled, readOnly, modes = defaultModes } = props;\n const [value, setValue] = useControlledState(props.value, (_a = props.defaultValue) !== null && _a !== void 0 ? _a : null, props.onUpdate);\n const availableModes = calendarLayouts.filter((l) => modes[l]);\n const minMode = availableModes[0] || 'days';\n const [mode, setMode] = useControlledState(props.mode, (_b = props.defaultMode) !== null && _b !== void 0 ? _b : minMode, props.onUpdateMode);\n const currentMode = mode && availableModes.includes(mode) ? mode : minMode;\n const inputTimeZone = useDefaultTimeZone(props.value || props.defaultValue || props.focusedValue || props.defaultFocusedValue);\n const timeZone = props.timeZone || inputTimeZone;\n const minValue = React.useMemo(() => (props.minValue ? props.minValue.timeZone(timeZone) : undefined), [timeZone, props.minValue]);\n const maxValue = React.useMemo(() => (props.maxValue ? props.maxValue.timeZone(timeZone) : undefined), [timeZone, props.maxValue]);\n const focusedValue = React.useMemo(() => {\n if (!props.focusedValue) {\n return props.focusedValue;\n }\n return constrainValue(props.focusedValue.timeZone(timeZone), minValue, maxValue);\n }, [props.focusedValue, minValue, maxValue, timeZone]);\n const defaultFocusedValue = React.useMemo(() => {\n var _a;\n const defaultValue = ((_a = (props.defaultFocusedValue ? props.defaultFocusedValue : value)) === null || _a === void 0 ? void 0 : _a.timeZone(timeZone)) ||\n createPlaceholderValue({ timeZone }).startOf(minMode);\n return constrainValue(defaultValue, minValue, maxValue);\n }, [maxValue, minValue, props.defaultFocusedValue, timeZone, value, minMode]);\n const [focusedDateInner, setFocusedDate] = useControlledState(focusedValue, defaultFocusedValue, (date) => {\n var _a;\n (_a = props.onFocusUpdate) === null || _a === void 0 ? void 0 : _a.call(props, date.timeZone(inputTimeZone));\n });\n const focusedDate = (_c = focusedDateInner === null || focusedDateInner === void 0 ? void 0 : focusedDateInner.timeZone(timeZone)) !== null && _c !== void 0 ? _c : constrainValue(createPlaceholderValue({ timeZone }), minValue, maxValue);\n if (isInvalid(focusedDate, minValue, maxValue)) {\n // If the focused date was moved to an invalid value, it can't be focused, so constrain it.\n setFocusedDate(constrainValue(focusedDate, minValue, maxValue));\n }\n function focusCell(date) {\n setFocusedDate(constrainValue(date.startOf(currentMode), minValue, maxValue));\n }\n const [isFocused, setFocused] = React.useState(props.autoFocus || false);\n const startDate = getStartDate(focusedDate, currentMode);\n const endDate = getEndDate(focusedDate, currentMode);\n return {\n disabled,\n readOnly,\n value,\n setValue(date) {\n if (!disabled && !readOnly) {\n let newValue = constrainValue(date, minValue, maxValue);\n if (this.isCellUnavailable(newValue)) {\n return;\n }\n if (value) {\n // If there is a date already selected, then we want to keep its time\n newValue = mergeDateTime(newValue, value.timeZone(timeZone));\n }\n setValue(newValue.timeZone(inputTimeZone));\n }\n },\n timeZone,\n selectDate(date, force = false) {\n if (!disabled) {\n if (!readOnly && (force || this.mode === minMode)) {\n this.setValue(date.startOf(minMode));\n if (force && currentMode !== minMode) {\n setMode(minMode);\n }\n }\n else {\n this.zoomIn();\n }\n }\n },\n minValue,\n maxValue,\n focusedDate,\n startDate,\n endDate,\n setFocusedDate(date) {\n focusCell(date);\n setFocused(true);\n },\n focusNextCell() {\n focusCell(focusedDate.add(1, this.mode));\n },\n focusPreviousCell() {\n focusCell(focusedDate.subtract(1, this.mode));\n },\n focusNextRow() {\n if (this.mode === 'days') {\n focusCell(focusedDate.add(1, 'week'));\n }\n else if (this.mode === 'quarters') {\n focusCell(focusedDate.add(1, 'years'));\n }\n else {\n focusCell(focusedDate.add(3, this.mode));\n }\n },\n focusPreviousRow() {\n if (this.mode === 'days') {\n focusCell(focusedDate.subtract(1, 'week'));\n }\n else if (this.mode === 'quarters') {\n focusCell(focusedDate.subtract(1, 'years'));\n }\n else {\n focusCell(focusedDate.subtract(3, this.mode));\n }\n },\n focusNextPage(larger) {\n if (this.mode === 'days') {\n focusCell(focusedDate.add({ months: larger ? 12 : 1 }));\n }\n else if (this.mode === 'quarters') {\n focusCell(focusedDate.add(4, 'years'));\n }\n else {\n focusCell(focusedDate.add(12, this.mode));\n }\n },\n focusPreviousPage(larger) {\n if (this.mode === 'days') {\n focusCell(focusedDate.subtract({ months: larger ? 12 : 1 }));\n }\n else if (this.mode === 'quarters') {\n focusCell(focusedDate.subtract(4, 'years'));\n }\n else {\n focusCell(focusedDate.subtract(12, this.mode));\n }\n },\n focusSectionStart() {\n focusCell(getStartDate(focusedDate, this.mode));\n },\n focusSectionEnd() {\n focusCell(getEndDate(focusedDate, this.mode));\n },\n zoomIn() {\n const nextMode = availableModes[availableModes.indexOf(this.mode) - 1];\n if (nextMode) {\n this.setMode(nextMode);\n }\n },\n zoomOut() {\n const nextMode = availableModes[availableModes.indexOf(this.mode) + 1];\n if (nextMode) {\n this.setMode(nextMode);\n }\n },\n selectFocusedDate() {\n this.selectDate(focusedDate, true);\n },\n isFocused,\n setFocused,\n isInvalid(date) {\n return isInvalid(date, this.minValue, this.maxValue, this.mode);\n },\n isPreviousPageInvalid() {\n const prev = this.startDate.subtract(1, 'day');\n return this.isInvalid(prev);\n },\n isNextPageInvalid() {\n const next = this.endDate.endOf(this.mode).add(1, 'day');\n return this.isInvalid(next);\n },\n isSelected(date) {\n return Boolean(value &&\n date.isSame(value.timeZone(timeZone), currentMode) &&\n !this.isCellDisabled(date));\n },\n isCellUnavailable(date) {\n if (this.mode === minMode) {\n return Boolean(props.isDateUnavailable && props.isDateUnavailable(date));\n }\n else {\n return false;\n }\n },\n isCellFocused(date) {\n return this.isFocused && focusedDate && date.isSame(focusedDate, currentMode);\n },\n isCellDisabled(date) {\n return this.disabled || this.isInvalid(date);\n },\n isWeekend(date) {\n return this.mode === 'days' && [0, 6].includes(date.day());\n },\n isCurrent(date) {\n return dateTime({ timeZone }).isSame(date, this.mode);\n },\n mode: currentMode,\n setMode,\n availableModes,\n };\n}\nfunction getStartDate(date, mode) {\n if (mode === 'days') {\n return date.startOf('month');\n }\n if (mode === 'months') {\n return date.startOf('year');\n }\n if (mode === 'quarters') {\n const year = Math.floor(date.year() / 4) * 4;\n return date.startOf('year').set('year', year);\n }\n const year = Math.floor(date.year() / 12) * 12;\n return date.startOf('year').set('year', year);\n}\nfunction getEndDate(date, mode) {\n if (mode === 'days') {\n return date.endOf('month').startOf('day');\n }\n if (mode === 'months') {\n return date.endOf('year').startOf('month');\n }\n const startDate = getStartDate(date, mode);\n if (mode === 'quarters') {\n return startDate.add(15, 'quarters');\n }\n return startDate.add({ [mode]: 11 });\n}\nfunction isInvalid(date, minValue, maxValue, mode = 'days') {\n const constrainedDate = constrainValue(date, minValue, maxValue);\n return !constrainedDate.isSame(date, mode);\n}\n","'use client';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport React from 'react';\nimport { CalendarView } from '../CalendarView/CalendarView';\nimport { useCalendarState } from '../CalendarView/hooks/useCalendarState';\nimport '../CalendarView/Calendar.css';\nexport const Calendar = React.forwardRef(function Calendar(props, ref) {\n const state = useCalendarState(props);\n return _jsx(CalendarView, Object.assign({ ref: ref }, props, { state: state }));\n});\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport React from 'react';\nexport function HiddenInput({ name, value, onReset, form, disabled, toStringValue, }) {\n const ref = useFormResetHandler({ initialValue: value, onReset });\n if (!name) {\n return null;\n }\n const v = toStringValue ? toStringValue(value) : `${value !== null && value !== void 0 ? value : ''}`;\n return _jsx(\"input\", { ref: ref, type: \"hidden\", name: name, value: v, disabled: disabled, form: form });\n}\nexport function useFormResetHandler({ initialValue, onReset, }) {\n const [formElement, setFormElement] = React.useState(null);\n const resetValue = React.useRef(initialValue);\n React.useEffect(() => {\n if (!formElement || !onReset) {\n return undefined;\n }\n const handleReset = () => {\n onReset(resetValue.current);\n };\n formElement.addEventListener('reset', handleReset);\n return () => {\n formElement.removeEventListener('reset', handleReset);\n };\n }, [formElement, onReset]);\n const ref = React.useCallback((node) => {\n var _a;\n setFormElement((_a = node === null || node === void 0 ? void 0 : node.form) !== null && _a !== void 0 ? _a : null);\n }, []);\n return ref;\n}\n","import { addComponentKeysets } from '@gravity-ui/uikit/i18n';\nimport { NAMESPACE } from '../../../utils/cn';\nimport en from './en.json';\nimport ru from './ru.json';\nexport const i18n = addComponentKeysets({ en, ru }, `${NAMESPACE}date-field`);\n","import React from 'react';\nimport { dateTime, expandFormat, isValid } from '@gravity-ui/date-utils';\nimport { mergeDateTime } from '../utils/dates';\nimport { i18n } from './i18n';\nexport const EDITABLE_SEGMENTS = {\n year: true,\n month: true,\n day: true,\n hour: true,\n minute: true,\n second: true,\n dayPeriod: true,\n weekday: true,\n};\nconst escapedCharacters = { start: '[', end: ']' };\nconst formatTokenMap = {\n // Year\n YY: 'year',\n YYYY: 'year',\n // Month\n M: 'month',\n MM: 'month',\n MMM: { sectionType: 'month', contentType: 'letter' },\n MMMM: { sectionType: 'month', contentType: 'letter' },\n // Day of the month\n D: 'day',\n DD: 'day',\n Do: 'day',\n // Day of the week\n d: 'weekday',\n dd: { sectionType: 'weekday', contentType: 'letter' },\n ddd: { sectionType: 'weekday', contentType: 'letter' },\n dddd: { sectionType: 'weekday', contentType: 'letter' },\n // Day period AM, PM\n A: { sectionType: 'dayPeriod', contentType: 'letter' },\n a: { sectionType: 'dayPeriod', contentType: 'letter' },\n // Hours\n H: 'hour',\n HH: 'hour',\n h: 'hour',\n hh: 'hour',\n // Minutes\n m: 'minute',\n mm: 'minute',\n // Seconds\n s: 'second',\n ss: 'second',\n // Timezone\n z: { sectionType: 'timeZoneName', contentType: 'letter' },\n zzz: { sectionType: 'timeZoneName', contentType: 'letter' },\n Z: { sectionType: 'timeZoneName', contentType: 'letter' },\n ZZ: { sectionType: 'timeZoneName', contentType: 'letter' },\n};\nfunction getDateSectionConfigFromFormatToken(formatToken) {\n const config = formatTokenMap[formatToken];\n if (!config) {\n // eslint-disable-next-line no-console\n console.error([\n `The token \"${formatToken}\" is not supported by the Date field.`,\n 'Please try using another token.',\n ].join('\\n'));\n return {\n type: 'literal',\n contentType: 'letter',\n };\n }\n if (typeof config === 'string') {\n return {\n type: config,\n contentType: 'digit',\n };\n }\n return {\n type: config.sectionType,\n contentType: config.contentType,\n };\n}\nfunction isFourDigitYearFormat(format) {\n return dateTime().format(format).length === 4;\n}\nfunction isHour12(format) {\n return dateTime().set('hour', 15).format(format) !== '15';\n}\nexport function getSectionLimits(section, date) {\n const { type, format } = section;\n switch (type) {\n case 'year': {\n const isFourDigit = isFourDigitYearFormat(format);\n return {\n minValue: isFourDigit ? 1 : 0,\n maxValue: isFourDigit ? 9999 : 99,\n };\n }\n case 'month': {\n return {\n minValue: 0,\n maxValue: 11,\n };\n }\n case 'weekday': {\n return {\n minValue: 0,\n maxValue: 6,\n };\n }\n case 'day': {\n return {\n minValue: 1,\n maxValue: date ? date.daysInMonth() : 31,\n };\n }\n case 'hour': {\n if (isHour12(format)) {\n const isPM = date.hour() >= 12;\n return {\n minValue: isPM ? 12 : 0,\n maxValue: isPM ? 23 : 11,\n };\n }\n return {\n minValue: 0,\n maxValue: 23,\n };\n }\n case 'minute':\n case 'second': {\n return {\n minValue: 0,\n maxValue: 59,\n };\n }\n }\n return {};\n}\nexport function getSectionValue(section, date) {\n const type = section.type;\n switch (type) {\n case 'year': {\n return isFourDigitYearFormat(section.format)\n ? date.year()\n : Number(date.format(section.format));\n }\n case 'month':\n case 'hour':\n case 'minute':\n case 'second': {\n return date[type]();\n }\n case 'day': {\n return date.date();\n }\n case 'weekday': {\n return date.day();\n }\n case 'dayPeriod': {\n return date.hour() >= 12 ? 12 : 0;\n }\n }\n return undefined;\n}\nconst TYPE_MAPPING = {\n weekday: 'day',\n day: 'date',\n dayPeriod: 'hour',\n};\nexport function getDurationUnitFromSectionType(type) {\n if (type === 'literal' || type === 'timeZoneName' || type === 'unknown') {\n throw new Error(`${type} section does not have duration unit.`);\n }\n if (type in TYPE_MAPPING) {\n return TYPE_MAPPING[type];\n }\n return type;\n}\nexport function addSegment(section, date, amount) {\n var _a;\n let val = (_a = section.value) !== null && _a !== void 0 ? _a : 0;\n if (section.type === 'dayPeriod') {\n val = date.hour() + (date.hour() >= 12 ? -12 : 12);\n }\n else {\n val = val + amount;\n const min = section.minValue;\n const max = section.maxValue;\n if (typeof min === 'number' && typeof max === 'number') {\n const length = max - min + 1;\n val = ((val - min + length) % length) + min;\n }\n }\n if (section.type === 'year' && !isFourDigitYearFormat(section.format)) {\n val = dateTime({ input: `${val}`.padStart(2, '0'), format: section.format }).year();\n }\n const type = getDurationUnitFromSectionType(section.type);\n return date.set(type, val);\n}\nexport function setSegment(section, date, amount) {\n const type = section.type;\n switch (type) {\n case 'year': {\n return date.set('year', isFourDigitYearFormat(section.format)\n ? amount\n : dateTime({\n input: `${amount}`.padStart(2, '0'),\n format: section.format,\n }).year());\n }\n case 'day':\n case 'weekday':\n case 'month': {\n return date.set(getDurationUnitFromSectionType(type), amount);\n }\n case 'dayPeriod': {\n const hours = date.hour();\n const wasPM = hours >= 12;\n const isPM = amount >= 12;\n if (isPM === wasPM) {\n return date;\n }\n return date.set('hour', wasPM ? hours - 12 : hours + 12);\n }\n case 'hour': {\n // In 12 hour time, ensure that AM/PM does not change\n let sectionAmount = amount;\n if (section.minValue === 12 || section.maxValue === 11) {\n const hours = date.hour();\n const wasPM = hours >= 12;\n if (!wasPM && sectionAmount === 12) {\n sectionAmount = 0;\n }\n if (wasPM && sectionAmount < 12) {\n sectionAmount += 12;\n }\n }\n return date.set('hour', sectionAmount);\n }\n case 'minute':\n case 'second': {\n return date.set(type, amount);\n }\n }\n return date;\n}\nfunction doesSectionHaveLeadingZeros(contentType, sectionType, format) {\n if (contentType !== 'digit') {\n return false;\n }\n switch (sectionType) {\n case 'year': {\n if (isFourDigitYearFormat(format)) {\n const formatted0001 = dateTime().set('year', 1).format(format);\n return formatted0001 === '0001';\n }\n const formatted2001 = dateTime().set('year', 2001).format(format);\n return formatted2001 === '01';\n }\n case 'month': {\n return dateTime().startOf('year').format(format).length > 1;\n }\n case 'day': {\n return dateTime().startOf('month').format(format).length > 1;\n }\n case 'weekday': {\n return dateTime().startOf('week').format(format).length > 1;\n }\n case 'hour': {\n return dateTime().set('hour', 1).format(format).length > 1;\n }\n case 'minute': {\n return dateTime().set('minute', 1).format(format).length > 1;\n }\n case 'second': {\n return dateTime().set('second', 1).format(format).length > 1;\n }\n default: {\n throw new Error('Invalid section type');\n }\n }\n}\nfunction getSectionPlaceholder(sectionConfig, currentTokenValue) {\n switch (sectionConfig.type) {\n case 'year': {\n return i18n('year_placeholder').repeat(dateTime().format(currentTokenValue).length);\n }\n case 'month': {\n return i18n('month_placeholder').repeat(sectionConfig.contentType === 'letter' ? 4 : 2);\n }\n case 'day': {\n return i18n('day_placeholder').repeat(2);\n }\n case 'weekday': {\n return i18n('weekday_placeholder').repeat(sectionConfig.contentType === 'letter' ? 4 : 2);\n }\n case 'hour': {\n return i18n('hour_placeholder').repeat(2);\n }\n case 'minute': {\n return i18n('minute_placeholder').repeat(2);\n }\n case 'second': {\n return i18n('second_placeholder').repeat(2);\n }\n case 'dayPeriod': {\n return i18n('dayPeriod_placeholder');\n }\n default: {\n return currentTokenValue;\n }\n }\n}\nexport function splitFormatIntoSections(format) {\n const sections = [];\n const expandedFormat = expandFormat(format);\n let currentTokenValue = '';\n let isSeparator = false;\n let isInEscapeBoundary = false;\n for (let i = 0; i < expandedFormat.length; i++) {\n const char = expandedFormat[i] || '';\n if (isInEscapeBoundary) {\n if (char === escapedCharacters.end) {\n isInEscapeBoundary = false;\n continue;\n }\n currentTokenValue += char;\n }\n else if (char.match(/[a-zA-Z]/)) {\n if (isSeparator) {\n addLiteralSection(sections, currentTokenValue);\n currentTokenValue = '';\n }\n isSeparator = false;\n currentTokenValue += char;\n }\n else {\n if (!isSeparator) {\n addFormatSection(sections, currentTokenValue);\n currentTokenValue = '';\n }\n isSeparator = true;\n if (char === escapedCharacters.start) {\n isInEscapeBoundary = true;\n }\n else {\n currentTokenValue += char;\n }\n }\n }\n if (currentTokenValue) {\n if (isSeparator) {\n addLiteralSection(sections, currentTokenValue);\n }\n else {\n addFormatSection(sections, currentTokenValue);\n }\n }\n return sections;\n}\nfunction addFormatSection(sections, token) {\n if (!token) {\n return;\n }\n const sectionConfig = getDateSectionConfigFromFormatToken(token);\n const hasLeadingZeros = doesSectionHaveLeadingZeros(sectionConfig.contentType, sectionConfig.type, token);\n sections.push(Object.assign(Object.assign({}, sectionConfig), { format: token, placeholder: getSectionPlaceholder(sectionConfig, token), options: getSectionOptions(sectionConfig, token), hasLeadingZeros }));\n}\nfunction addLiteralSection(sections, token) {\n if (!token) {\n return;\n }\n sections.push({\n type: 'literal',\n contentType: 'letter',\n format: token,\n placeholder: token,\n hasLeadingZeros: false,\n });\n}\nfunction getSectionOptions(section, token) {\n switch (section.type) {\n case 'month': {\n const format = section.contentType === 'letter' ? token : 'MMMM';\n let date = dateTime().startOf('year');\n const options = [];\n for (let i = 0; i < 12; i++) {\n options.push(date.format(format).toLocaleUpperCase());\n date = date.add(1, 'months');\n }\n return options;\n }\n case 'dayPeriod': {\n const amDayPeriod = dateTime().hour(0);\n const pmDayPeriod = amDayPeriod.hour(12);\n const options = [\n amDayPeriod.format(token).toLocaleUpperCase(),\n pmDayPeriod.format(token).toLocaleUpperCase(),\n ];\n return options;\n }\n case 'weekday': {\n const format = section.contentType === 'letter' ? token : 'dddd';\n let date = dateTime().day(0);\n const options = [];\n for (let i = 0; i < 7; i++) {\n options.push(date.format(format).toLocaleUpperCase());\n date = date.add(1, 'day');\n }\n return options;\n }\n }\n return undefined;\n}\nexport function cleanString(dirtyString) {\n return dirtyString.replace(/[\\u2066\\u2067\\u2068\\u2069]/g, '');\n}\nexport function getEditableSections(sections, value, validSegments) {\n let position = 1;\n const newSections = [];\n let previousEditableSection = -1;\n for (let i = 0; i < sections.length; i++) {\n const section = sections[i];\n if (!section) {\n continue;\n }\n const newSection = toEditableSection(section, value, validSegments, position, previousEditableSection);\n newSections.push(newSection);\n if (isEditableSection(section)) {\n for (let j = Math.max(0, previousEditableSection); j <= i; j++) {\n const prevSection = newSections[j];\n if (prevSection) {\n prevSection.nextEditableSection = i;\n if (prevSection.previousEditableSection === -1) {\n prevSection.previousEditableSection = i;\n }\n }\n }\n previousEditableSection = i;\n }\n position += newSection.textValue.length;\n }\n return newSections;\n}\nexport function isEditableSection(section) {\n var _a;\n return (_a = EDITABLE_SEGMENTS[section.type]) !== null && _a !== void 0 ? _a : false;\n}\nexport function toEditableSection(section, value, validSegments, position, previousEditableSection) {\n const isEditable = isEditableSection(section);\n let renderedValue = section.placeholder;\n if ((isEditable && validSegments[section.type]) || section.type === 'timeZoneName') {\n renderedValue = value.format(section.format);\n if (section.contentType === 'digit' && renderedValue.length < section.placeholder.length) {\n renderedValue = renderedValue.padStart(section.placeholder.length, '0');\n }\n }\n // use bidirectional context to allow the browser autodetect text direction\n renderedValue = '\\u2068' + renderedValue + '\\u2069';\n const sectionLength = renderedValue.length;\n const newSection = Object.assign(Object.assign(Object.assign({}, section), { value: getSectionValue(section, value), textValue: renderedValue, start: position, end: position + sectionLength, modified: false, previousEditableSection, nextEditableSection: previousEditableSection }), getSectionLimits(section, value));\n return newSection;\n}\nexport function getCurrentEditableSectionIndex(sections, selectedSections) {\n const currentIndex = selectedSections === 'all' || selectedSections === -1 ? 0 : selectedSections;\n const section = sections[currentIndex];\n if (section && !EDITABLE_SEGMENTS[section.type]) {\n return section.nextEditableSection;\n }\n return section ? currentIndex : -1;\n}\nexport function formatSections(sections) {\n // use ltr direction context to get predictable navigation inside input\n return '\\u2066' + sections.map((s) => s.textValue).join('') + '\\u2069';\n}\nfunction parseDate(options) {\n let date = dateTime(options);\n if (!isValid(date)) {\n date = dateTime(Object.assign(Object.assign({}, options), { format: undefined }));\n }\n return date;\n}\nfunction isDateStringWithTimeZone(str) {\n return /z$/i.test(str) || /[+-]\\d\\d:\\d\\d$/.test(str);\n}\nexport function parseDateFromString(str, format, timeZone) {\n let date = parseDate({ input: str, format, timeZone });\n if (isValid(date)) {\n if (timeZone && !isDateStringWithTimeZone(str)) {\n const time = parseDate({ input: str, format });\n date = mergeDateTime(date, time);\n }\n }\n return date;\n}\nexport function isAllSegmentsValid(allSegments, validSegments) {\n return Object.keys(allSegments).every((key) => validSegments[key]);\n}\nexport function useFormatSections(format) {\n const usedFormat = format;\n const [sections, setSections] = React.useState(() => splitFormatIntoSections(usedFormat));\n const [previousFormat, setFormat] = React.useState(usedFormat);\n if (usedFormat !== previousFormat) {\n setFormat(usedFormat);\n setSections(splitFormatIntoSections(usedFormat));\n }\n return sections;\n}\n","import React from 'react';\nimport { cleanString } from '../utils';\nexport function useDateFieldProps(state, props) {\n const inputRef = React.useRef(null);\n const [, setInnerState] = React.useState({});\n function setSelectedSections(section) {\n state.setSelectedSections(section);\n setInnerState({});\n }\n React.useLayoutEffect(() => {\n const inputElement = inputRef.current;\n if (!inputElement) {\n return;\n }\n if (state.selectedSectionIndexes === null) {\n if (inputElement.scrollLeft) {\n // Ensure that input content is not marked as selected.\n // setting selection range to 0 causes issues in Safari.\n // https://bugs.webkit.org/show_bug.cgi?id=224425\n inputElement.scrollLeft = 0;\n }\n return;\n }\n const firstSelectedSection = state.sections[state.selectedSectionIndexes.startIndex];\n const lastSelectedSection = state.sections[state.selectedSectionIndexes.endIndex];\n if (firstSelectedSection && lastSelectedSection) {\n const selectionStart = firstSelectedSection.start;\n const selectionEnd = lastSelectedSection.end;\n if (selectionStart !== inputElement.selectionStart ||\n selectionEnd !== inputElement.selectionEnd) {\n inputElement.setSelectionRange(selectionStart, selectionEnd);\n }\n }\n });\n function syncSelectionFromDOM() {\n var _a, _b;\n if (state.readOnly) {\n setSelectedSections(-1);\n return;\n }\n state.focusSectionInPosition((_b = (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.selectionStart) !== null && _b !== void 0 ? _b : 0);\n setInnerState({});\n }\n const inputMode = React.useMemo(() => {\n if (!state.selectedSectionIndexes) {\n return 'text';\n }\n const activeSection = state.sections[state.selectedSectionIndexes.startIndex];\n if (!activeSection || activeSection.contentType === 'letter') {\n return 'text';\n }\n return 'tel';\n }, [state.selectedSectionIndexes, state.sections]);\n return {\n inputProps: {\n value: state.text,\n view: props.view,\n size: props.size,\n disabled: state.disabled,\n hasClear: !state.readOnly && !state.isEmpty && props.hasClear,\n placeholder: props.placeholder,\n id: props.id,\n label: props.label,\n startContent: props.startContent,\n endContent: props.endContent,\n pin: props.pin,\n autoFocus: props.autoFocus,\n controlRef: inputRef,\n autoComplete: 'off',\n type: 'text',\n validationState: state.validationState,\n errorMessage: props.errorMessage,\n errorPlacement: props.errorPlacement,\n onUpdate(value) {\n if (!value) {\n state.clearAll();\n }\n },\n onFocus(e) {\n var _a;\n (_a = props.onFocus) === null || _a === void 0 ? void 0 : _a.call(props, e);\n if (state.selectedSectionIndexes !== null) {\n return;\n }\n const input = e.target;\n const isAutofocus = !inputRef.current;\n setTimeout(() => {\n if (!input || input !== inputRef.current) {\n return;\n }\n if (isAutofocus) {\n state.focusSectionInPosition(0);\n }\n else if (\n // avoid selecting all sections when focusing empty field without value\n input.value.length &&\n Number(input.selectionEnd) - Number(input.selectionStart) ===\n input.value.length) {\n setSelectedSections('all');\n }\n else {\n syncSelectionFromDOM();\n }\n });\n },\n onBlur(e) {\n var _a;\n (_a = props.onBlur) === null || _a === void 0 ? void 0 : _a.call(props, e);\n setSelectedSections(-1);\n },\n onKeyDown(e) {\n var _a;\n (_a = props.onKeyDown) === null || _a === void 0 ? void 0 : _a.call(props, e);\n if (e.key === 'ArrowLeft') {\n e.preventDefault();\n state.focusPreviousSection();\n }\n else if (e.key === 'ArrowRight') {\n e.preventDefault();\n state.focusNextSection();\n }\n else if (e.key === 'Home') {\n e.preventDefault();\n state.decrementToMin();\n }\n else if (e.key === 'End') {\n e.preventDefault();\n state.incrementToMax();\n }\n else if (e.key === 'ArrowUp' && !e.altKey) {\n e.preventDefault();\n state.increment();\n }\n else if (e.key === 'ArrowDown' && !e.altKey) {\n e.preventDefault();\n state.decrement();\n }\n else if (e.key === 'PageUp') {\n e.preventDefault();\n state.incrementPage();\n }\n else if (e.key === 'PageDown') {\n e.preventDefault();\n state.decrementPage();\n }\n else if (e.key === 'Backspace' || e.key === 'Delete') {\n e.preventDefault();\n state.clearSection();\n }\n else if (e.key === 'a' && (e['ctrlKey'] || e['metaKey'])) {\n e.preventDefault();\n setSelectedSections('all');\n }\n },\n onKeyUp: props.onKeyUp,\n controlProps: {\n 'aria-label': props['aria-label'] || undefined,\n 'aria-labelledby': props['aria-labelledby'] || undefined,\n 'aria-describedby': props['aria-describedby'] || undefined,\n 'aria-details': props['aria-details'] || undefined,\n 'aria-disabled': state.disabled || undefined,\n inputMode,\n onClick() {\n syncSelectionFromDOM();\n },\n onMouseUp(e) {\n e.preventDefault();\n },\n onBeforeInput(e) {\n e.preventDefault();\n // @ts-expect-error\n const key = e.data;\n if (key !== undefined && key !== null) {\n state.onInput(key);\n }\n },\n onPaste(e) {\n e.preventDefault();\n if (state.readOnly) {\n return;\n }\n const pastedValue = cleanString(e.clipboardData.getData('text'));\n if (state.selectedSectionIndexes &&\n state.selectedSectionIndexes.startIndex ===\n state.selectedSectionIndexes.endIndex) {\n const activeSection = state.sections[state.selectedSectionIndexes.startIndex];\n const digitsOnly = /^\\d+$/.test(pastedValue);\n const lettersOnly = /^[a-zA-Z]+$/.test(pastedValue);\n const isValidValue = Boolean(activeSection &&\n ((activeSection.contentType === 'digit' && digitsOnly) ||\n (activeSection.contentType === 'letter' && lettersOnly)));\n if (isValidValue) {\n state.onInput(pastedValue);\n return;\n }\n if (digitsOnly || lettersOnly) {\n return;\n }\n }\n state.setValueFromString(pastedValue);\n },\n },\n },\n };\n}\n","import React from 'react';\nimport { createPlaceholderValue } from '../../utils/dates';\nimport { EDITABLE_SEGMENTS, formatSections, getCurrentEditableSectionIndex, getDurationUnitFromSectionType, } from '../utils';\nconst PAGE_STEP = {\n year: 5,\n month: 2,\n weekday: 3,\n day: 7,\n hour: 2,\n minute: 15,\n second: 15,\n};\nexport function useBaseDateFieldState(props) {\n const { value, validationState, displayValue, editableSections, selectedSectionIndexes, selectedSections, isEmpty, flushAllValidSections, flushValidSection, setSelectedSections, setValue, setDate, adjustSection, setSection, getSectionValue, setSectionValue, createPlaceholder, setValueFromString, } = props;\n const enteredKeys = React.useRef('');\n const { hasDate, hasTime } = React.useMemo(() => {\n let hasDateInner = false;\n let hasTimeInner = false;\n for (const s of editableSections) {\n hasTimeInner || (hasTimeInner = ['hour', 'minute', 'second'].includes(s.type));\n hasDateInner || (hasDateInner = ['day', 'month', 'year'].includes(s.type));\n }\n return {\n hasTime: hasTimeInner,\n hasDate: hasDateInner,\n };\n }, [editableSections]);\n return {\n value,\n isEmpty,\n displayValue,\n setValue,\n setDate,\n text: formatSections(editableSections),\n readOnly: props.readOnly,\n disabled: props.disabled,\n sections: editableSections,\n hasDate,\n hasTime,\n selectedSectionIndexes,\n validationState,\n setSelectedSections(position) {\n enteredKeys.current = '';\n setSelectedSections(position);\n },\n focusSectionInPosition(position) {\n const nextSectionIndex = this.sections.findIndex((s) => s.end >= position);\n const index = nextSectionIndex === -1 ? 0 : nextSectionIndex;\n const nextSection = this.sections[index];\n if (nextSection) {\n this.setSelectedSections(EDITABLE_SEGMENTS[nextSection.type] ? index : nextSection.nextEditableSection);\n }\n },\n focusNextSection() {\n var _a, _b;\n const currentIndex = selectedSections === 'all' ? 0 : selectedSections;\n const newIndex = (_b = (_a = this.sections[currentIndex]) === null || _a === void 0 ? void 0 : _a.nextEditableSection) !== null && _b !== void 0 ? _b : -1;\n if (newIndex !== -1) {\n this.setSelectedSections(newIndex);\n }\n },\n focusPreviousSection() {\n var _a, _b;\n const currentIndex = selectedSections === 'all' ? 0 : selectedSections;\n const newIndex = (_b = (_a = this.sections[currentIndex]) === null || _a === void 0 ? void 0 : _a.previousEditableSection) !== null && _b !== void 0 ? _b : -1;\n if (newIndex !== -1) {\n this.setSelectedSections(newIndex);\n }\n },\n focusFirstSection() {\n var _a, _b;\n const newIndex = (_b = (_a = this.sections[0]) === null || _a === void 0 ? void 0 : _a.previousEditableSection) !== null && _b !== void 0 ? _b : -1;\n if (newIndex !== -1) {\n setSelectedSections(newIndex);\n }\n },\n focusLastSection() {\n var _a, _b;\n const newIndex = (_b = (_a = this.sections[this.sections.length - 1]) === null || _a === void 0 ? void 0 : _a.nextEditableSection) !== null && _b !== void 0 ? _b : -1;\n if (newIndex !== -1) {\n this.setSelectedSections(newIndex);\n }\n },\n increment() {\n if (this.readOnly || this.disabled) {\n return;\n }\n enteredKeys.current = '';\n const sectionIndex = getCurrentEditableSectionIndex(this.sections, selectedSections);\n if (sectionIndex !== -1) {\n adjustSection(sectionIndex, 1);\n }\n },\n decrement() {\n if (this.readOnly || this.disabled) {\n return;\n }\n enteredKeys.current = '';\n const sectionIndex = getCurrentEditableSectionIndex(this.sections, selectedSections);\n if (sectionIndex !== -1) {\n adjustSection(sectionIndex, -1);\n }\n },\n incrementPage() {\n if (this.readOnly || this.disabled) {\n return;\n }\n enteredKeys.current = '';\n const sectionIndex = getCurrentEditableSectionIndex(this.sections, selectedSections);\n if (sectionIndex !== -1) {\n adjustSection(sectionIndex, PAGE_STEP[this.sections[sectionIndex].type] || 1);\n }\n },\n decrementPage() {\n if (this.readOnly || this.disabled) {\n return;\n }\n enteredKeys.current = '';\n const sectionIndex = getCurrentEditableSectionIndex(this.sections, selectedSections);\n if (sectionIndex !== -1) {\n adjustSection(sectionIndex, -(PAGE_STEP[this.sections[sectionIndex].type] || 1));\n }\n },\n incrementToMax() {\n if (this.readOnly || this.disabled) {\n return;\n }\n enteredKeys.current = '';\n const sectionIndex = getCurrentEditableSectionIndex(this.sections, selectedSections);\n if (sectionIndex !== -1) {\n const section = this.sections[sectionIndex];\n if (typeof section.maxValue === 'number') {\n setSection(sectionIndex, section.maxValue);\n }\n }\n },\n decrementToMin() {\n if (this.readOnly || this.disabled) {\n return;\n }\n enteredKeys.current = '';\n const sectionIndex = getCurrentEditableSectionIndex(this.sections, selectedSections);\n if (sectionIndex !== -1) {\n const section = this.sections[sectionIndex];\n if (typeof section.minValue === 'number') {\n setSection(sectionIndex, section.minValue);\n }\n }\n },\n clearSection() {\n if (this.readOnly || this.disabled) {\n return;\n }\n enteredKeys.current = '';\n if (selectedSections === 'all') {\n this.clearAll();\n return;\n }\n const sectionIndex = getCurrentEditableSectionIndex(this.sections, selectedSections);\n if (sectionIndex === -1) {\n return;\n }\n flushValidSection(sectionIndex);\n const section = this.sections[sectionIndex];\n const placeholder = createPlaceholderValue({\n placeholderValue: props.placeholderValue,\n timeZone: props.timeZone,\n }).timeZone(props.timeZone);\n const displayPortion = getSectionValue(sectionIndex);\n let currentValue = displayPortion;\n // Reset day period to default without changing the hour.\n if (section.type === 'dayPeriod') {\n const isPM = displayPortion.hour() >= 12;\n const shouldBePM = placeholder.hour() >= 12;\n if (isPM && !shouldBePM) {\n currentValue = displayPortion.set('hour', displayPortion.hour() - 12);\n }\n else if (!isPM && shouldBePM) {\n currentValue = displayPortion.set('hour', displayPortion.hour() + 12);\n }\n }\n else {\n const type = getDurationUnitFromSectionType(section.type);\n currentValue = displayPortion.set(type, placeholder[type]());\n }\n setSectionValue(sectionIndex, currentValue);\n },\n clearAll() {\n if (this.readOnly || this.disabled) {\n return;\n }\n enteredKeys.current = '';\n flushAllValidSections();\n if (value !== null) {\n setDate(null);\n }\n const date = createPlaceholder();\n setValue(date);\n },\n onInput(key) {\n if (this.readOnly || this.disabled) {\n return;\n }\n const sectionIndex = getCurrentEditableSectionIndex(this.sections, selectedSections);\n if (sectionIndex === -1) {\n return;\n }\n const section = this.sections[sectionIndex];\n let newValue = enteredKeys.current + key;\n const onInputNumber = (numberValue) => {\n var _a, _b, _c;\n let sectionValue = section.type === 'month' ? numberValue - 1 : numberValue;\n const allowsZero = section.minValue === 0;\n if (section.type === 'hour' &&\n (section.minValue === 12 || section.maxValue === 11)) {\n if (numberValue > 12) {\n sectionValue = Number(key);\n }\n if (section.minValue === 12 && sectionValue > 1) {\n sectionValue += 12;\n }\n }\n else if (sectionValue > ((_a = section.maxValue) !== null && _a !== void 0 ? _a : 0)) {\n sectionValue = Number(key) - (section.type === 'month' ? 1 : 0);\n newValue = key;\n if (sectionValue > ((_b = section.maxValue) !== null && _b !== void 0 ? _b : 0)) {\n enteredKeys.current = '';\n return;\n }\n }\n const shouldSetValue = sectionValue > 0 || (sectionValue === 0 && allowsZero);\n if (shouldSetValue) {\n setSection(sectionIndex, sectionValue);\n }\n if (Number(numberValue + '0') > ((_c = section.maxValue) !== null && _c !== void 0 ? _c : 0) ||\n newValue.length >= String(section.maxValue).length) {\n enteredKeys.current = '';\n if (shouldSetValue) {\n this.focusNextSection();\n }\n }\n else {\n enteredKeys.current = newValue;\n }\n };\n const onInputString = (stringValue) => {\n var _a;\n const options = (_a = section.options) !== null && _a !== void 0 ? _a : [];\n let sectionValue = stringValue.toLocaleUpperCase();\n let foundOptions = options.filter((v) => v.startsWith(sectionValue));\n if (foundOptions.length === 0) {\n if (stringValue !== key) {\n sectionValue = key.toLocaleUpperCase();\n foundOptions = options.filter((v) => v.startsWith(sectionValue));\n }\n if (foundOptions.length === 0) {\n enteredKeys.current = '';\n return;\n }\n }\n const foundValue = foundOptions[0];\n const index = options.indexOf(foundValue);\n if (section.type === 'dayPeriod') {\n setSection(sectionIndex, index === 1 ? 12 : 0);\n }\n else {\n setSection(sectionIndex, index);\n }\n if (foundOptions.length > 1) {\n enteredKeys.current = newValue;\n }\n else {\n enteredKeys.current = '';\n this.focusNextSection();\n }\n };\n switch (section.type) {\n case 'day':\n case 'hour':\n case 'minute':\n case 'second':\n case 'year': {\n if (!Number.isInteger(Number(newValue))) {\n return;\n }\n const numberValue = Number(newValue);\n onInputNumber(numberValue);\n break;\n }\n case 'dayPeriod': {\n onInputString(newValue);\n break;\n }\n case 'weekday':\n case 'month': {\n if (Number.isInteger(Number(newValue))) {\n const numberValue = Number(newValue);\n onInputNumber(numberValue);\n }\n else {\n onInputString(newValue);\n }\n break;\n }\n }\n },\n setValueFromString(str) {\n enteredKeys.current = '';\n return setValueFromString(str);\n },\n };\n}\n","import React from 'react';\nimport { isValid } from '@gravity-ui/date-utils';\nimport { useControlledState } from '@gravity-ui/uikit';\nimport { createPlaceholderValue, isInvalid } from '../../utils/dates';\nimport { useDefaultTimeZone } from '../../utils/useDefaultTimeZone';\nimport { EDITABLE_SEGMENTS, addSegment, getEditableSections, isAllSegmentsValid, parseDateFromString, setSegment, useFormatSections, } from '../utils';\nimport { useBaseDateFieldState } from './useBaseDateFieldState';\nexport function useDateFieldState(props) {\n var _a, _b;\n const [value, setDate] = useControlledState(props.value, (_a = props.defaultValue) !== null && _a !== void 0 ? _a : null, props.onUpdate);\n const inputTimeZone = useDefaultTimeZone(props.value || props.defaultValue || props.placeholderValue);\n const timeZone = props.timeZone || inputTimeZone;\n const handleUpdateDate = (v) => {\n setDate(v ? v.timeZone(inputTimeZone) : v);\n };\n const [placeholderDate, setPlaceholderDate] = React.useState(() => {\n return createPlaceholderValue({\n placeholderValue: props.placeholderValue,\n timeZone,\n });\n });\n const format = props.format || 'L';\n const sections = useFormatSections(format);\n const allSegments = React.useMemo(() => sections\n .filter((seg) => EDITABLE_SEGMENTS[seg.type])\n .reduce((p, seg) => (Object.assign(Object.assign({}, p), { [seg.type]: true })), {}), [sections]);\n const validSegmentsState = React.useState(() => value ? Object.assign({}, allSegments) : {});\n let validSegments = validSegmentsState[0];\n const setValidSegments = validSegmentsState[1];\n if (value && !isAllSegmentsValid(allSegments, validSegments)) {\n setValidSegments(Object.assign({}, allSegments));\n }\n if (!value &&\n isAllSegmentsValid(allSegments, validSegments) &&\n Object.keys(validSegments).length === Object.keys(allSegments).length) {\n validSegments = {};\n setValidSegments(validSegments);\n setPlaceholderDate(createPlaceholderValue({\n placeholderValue: props.placeholderValue,\n timeZone,\n }));\n }\n const displayValue = value && isValid(value) && isAllSegmentsValid(allSegments, validSegments)\n ? value.timeZone(timeZone)\n : placeholderDate.timeZone(timeZone);\n const sectionsState = useSectionsState(sections, displayValue, validSegments);\n const [selectedSections, setSelectedSections] = React.useState(-1);\n const selectedSectionIndexes = React.useMemo(() => {\n if (selectedSections === -1) {\n return null;\n }\n if (selectedSections === 'all') {\n return {\n startIndex: 0,\n endIndex: sectionsState.editableSections.length - 1,\n };\n }\n if (typeof selectedSections === 'number') {\n return { startIndex: selectedSections, endIndex: selectedSections };\n }\n if (typeof selectedSections === 'string') {\n const selectedSectionIndex = sectionsState.editableSections.findIndex((section) => section.type === selectedSections);\n return { startIndex: selectedSectionIndex, endIndex: selectedSectionIndex };\n }\n return selectedSections;\n }, [selectedSections, sectionsState.editableSections]);\n function setValue(newValue) {\n if (props.disabled || props.readOnly) {\n return;\n }\n if (isAllSegmentsValid(allSegments, validSegments)) {\n if (!value || !newValue.isSame(value)) {\n handleUpdateDate(newValue);\n }\n }\n else {\n if (value) {\n handleUpdateDate(null);\n }\n setPlaceholderDate(newValue);\n }\n }\n function markValid(part) {\n validSegments[part] = true;\n if (validSegments.day && validSegments.month && validSegments.year && allSegments.weekday) {\n validSegments.weekday = true;\n }\n if (validSegments.hour && allSegments.dayPeriod) {\n validSegments.dayPeriod = true;\n }\n setValidSegments(Object.assign({}, validSegments));\n }\n function setSection(sectionIndex, amount) {\n const section = sectionsState.editableSections[sectionIndex];\n if (section) {\n markValid(section.type);\n setValue(setSegment(section, displayValue, amount));\n }\n }\n function adjustSection(sectionIndex, amount) {\n const section = sectionsState.editableSections[sectionIndex];\n if (section) {\n if (validSegments[section.type]) {\n setValue(addSegment(section, displayValue, amount));\n }\n else {\n markValid(section.type);\n if (Object.keys(validSegments).length >= Object.keys(allSegments).length) {\n setValue(displayValue);\n }\n }\n }\n }\n function flushValidSection(sectionIndex) {\n const section = sectionsState.editableSections[sectionIndex];\n if (section) {\n delete validSegments[section.type];\n }\n setValidSegments(Object.assign({}, validSegments));\n }\n function flushAllValidSections() {\n validSegments = {};\n setValidSegments({});\n }\n function getSectionValue(_sectionIndex) {\n return displayValue;\n }\n function setSectionValue(_sectionIndex, currentValue) {\n setValue(currentValue);\n }\n function createPlaceholder() {\n return createPlaceholderValue({\n placeholderValue: props.placeholderValue,\n timeZone,\n }).timeZone(timeZone);\n }\n function setValueFromString(str) {\n const date = parseDateFromString(str, format, timeZone);\n if (isValid(date)) {\n handleUpdateDate(date);\n return true;\n }\n return false;\n }\n const validationState = props.validationState ||\n (isInvalid(value, props.minValue, props.maxValue) ? 'invalid' : undefined) ||\n (value && ((_b = props.isDateUnavailable) === null || _b === void 0 ? void 0 : _b.call(props, value)) ? 'invalid' : undefined);\n return useBaseDateFieldState({\n value,\n displayValue,\n placeholderValue: props.placeholderValue,\n timeZone,\n validationState,\n editableSections: sectionsState.editableSections,\n readOnly: props.readOnly,\n disabled: props.disabled,\n selectedSectionIndexes,\n selectedSections,\n isEmpty: Object.keys(validSegments).length === 0,\n flushAllValidSections,\n flushValidSection,\n setSelectedSections,\n setValue,\n setDate: handleUpdateDate,\n adjustSection,\n setSection,\n getSectionValue,\n setSectionValue,\n createPlaceholder,\n setValueFromString,\n });\n}\nfunction useSectionsState(sections, value, validSegments) {\n const [state, setState] = React.useState(() => {\n return {\n value,\n sections,\n validSegments,\n editableSections: getEditableSections(sections, value, validSegments),\n };\n });\n if (sections !== state.sections ||\n validSegments !== state.validSegments ||\n !value.isSame(state.value) ||\n value.timeZone() !== state.value.timeZone()) {\n setState({\n value,\n sections,\n validSegments,\n editableSections: getEditableSections(sections, value, validSegments),\n });\n }\n return state;\n}\n","'use client';\nimport { __rest } from \"tslib\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React from 'react';\nimport { TextInput, useFocusWithin } from '@gravity-ui/uikit';\nimport { block } from '../../utils/cn';\nimport { HiddenInput } from '../HiddenInput/HiddenInput';\nimport { useDateFieldProps } from './hooks/useDateFieldProps';\nimport { useDateFieldState } from './hooks/useDateFieldState';\nimport './DateField.css';\nconst b = block('date-field');\nexport function DateField(_a) {\n var { className } = _a, props = __rest(_a, [\"className\"]);\n const state = useDateFieldState(props);\n const { inputProps } = useDateFieldProps(state, props);\n const [isActive, setActive] = React.useState(false);\n const { focusWithinProps } = useFocusWithin({\n onFocusWithinChange(isFocusWithin) {\n setActive(isFocusWithin);\n },\n });\n return (_jsxs(\"div\", Object.assign({ className: b(null, className), style: props.style }, focusWithinProps, { children: [_jsx(TextInput, Object.assign({}, inputProps, { value: state.isEmpty && !isActive && props.placeholder ? '' : inputProps.value })), _jsx(HiddenInput, { name: props.name, value: state.value, toStringValue: (value) => { var _a; return (_a = value === null || value === void 0 ? void 0 : value.toISOString()) !== null && _a !== void 0 ? _a : ''; }, onReset: (value) => {\n state.setDate(value);\n }, disabled: state.disabled, form: props.form })] })));\n}\n","'use client';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { dateTime } from '@gravity-ui/date-utils';\nimport { block } from '../../utils/cn';\nimport { createPlaceholderValue, mergeDateTime } from '../utils/dates';\nimport './MobileCalendar.css';\nconst b = block('mobile-calendar');\nexport function MobileCalendar({ props, state }) {\n var _a, _b;\n let type = 'date';\n if (state.hasTime && state.hasDate) {\n type = 'datetime-local';\n }\n else if (state.hasTime) {\n type = 'time';\n }\n return (_jsx(\"input\", { className: b(), disabled: props.disabled, type: type, value: formatNative(state.dateFieldState.displayValue, type), id: props.id, min: formatNative((_a = props.minValue) === null || _a === void 0 ? void 0 : _a.timeZone(state.timeZone), type), max: formatNative((_b = props.maxValue) === null || _b === void 0 ? void 0 : _b.timeZone(state.timeZone), type), tabIndex: -1, onChange: (e) => {\n var _a, _b;\n if (props.readOnly) {\n return;\n }\n const newValue = e.target.value;\n if (newValue) {\n const localDate = dateTime({\n input: newValue,\n format: getDateFormat(type),\n timeZone: 'system',\n }).timeZone(state.timeZone, true);\n let newDate = state.hasDate\n ? localDate\n : createPlaceholderValue({\n placeholderValue: (_a = props.placeholderValue) === null || _a === void 0 ? void 0 : _a.timeZone(state.timeZone),\n timeZone: state.timeZone,\n });\n if (state.hasTime) {\n newDate = mergeDateTime(newDate, localDate);\n }\n else if (state.value) {\n newDate = mergeDateTime(newDate, state.value.timeZone(state.timeZone));\n }\n else {\n newDate = mergeDateTime(newDate, createPlaceholderValue({\n placeholderValue: (_b = props.placeholderValue) === null || _b === void 0 ? void 0 : _b.timeZone(state.timeZone),\n timeZone: state.timeZone,\n }));\n }\n state.setValue(newDate);\n }\n else {\n state.setValue(null);\n }\n } }));\n}\nfunction getDateFormat(type) {\n switch (type) {\n case 'time': {\n return 'HH:mm';\n }\n case 'datetime-local': {\n return 'YYYY-MM-DDTHH:mm';\n }\n default: {\n return 'YYYY-MM-DD';\n }\n }\n}\nfunction formatNative(date, type) {\n if (!date) {\n return '';\n }\n const format = getDateFormat(type);\n return date.format(format);\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Icon } from '@gravity-ui/uikit';\nimport { block } from '../../utils/cn';\nimport './StubButton.css';\nconst b = block('stub-button');\nexport function StubButton({ size, icon }) {\n return (_jsx(\"span\", { className: b({ size }), children: _jsx(\"span\", { className: b('icon'), children: _jsx(Icon, { data: icon }) }) }));\n}\n","export function getButtonSizeForInput(size) {\n switch (size) {\n case 'xl': {\n return 'l';\n }\n case 'l': {\n return 'm';\n }\n case 's': {\n return 'xs';\n }\n default: {\n return 's';\n }\n }\n}\n","export function mergeProps(...args) {\n const result = Object.assign({}, args[0]);\n for (let i = 1; i < args.length; i++) {\n const props = args[i];\n if (!props) {\n continue;\n }\n for (const key of Object.keys(props)) {\n const left = result[key];\n const right = props[key];\n if (typeof left === 'function' &&\n typeof right === 'function' &&\n key.startsWith('on') &&\n key.charCodeAt(2) >= /* A */ 65 &&\n key.charCodeAt(2) <= /* Z */ 90) {\n result[key] = chain(left, right);\n }\n else if (key === 'className' &&\n typeof left === 'string' &&\n typeof right === 'string') {\n result[key] = left + ' ' + right;\n }\n else if (key === 'controlProps' &&\n typeof left === 'object' &&\n typeof right === 'object') {\n result[key] = mergeProps(left, right);\n }\n else {\n result[key] = right === undefined ? left : right;\n }\n }\n }\n return result;\n}\nfunction chain(...fns) {\n return (...args) => {\n for (const fn of fns) {\n if (typeof fn === 'function') {\n fn(...args);\n }\n }\n };\n}\n","import { addComponentKeysets } from '@gravity-ui/uikit/i18n';\nimport { NAMESPACE } from '../../../utils/cn';\nimport en from './en.json';\nimport ru from './ru.json';\nexport const i18n = addComponentKeysets({ en, ru }, `${NAMESPACE}date-picker`);\n","export function getDateTimeValue(value) {\n if (!value) {\n return undefined;\n }\n return 'start' in value && 'end' in value ? value.start : value;\n}\n","import { useDateFieldState } from '../../DateField';\nimport { createPlaceholderValue, mergeDateTime } from '../../utils/dates';\nimport { getDateTimeValue } from '../utils';\nimport { datePickerStateFactory } from './datePickerStateFactory';\nexport const useDatePickerState = datePickerStateFactory({\n getPlaceholderTime,\n mergeDateTime,\n setTimezone: (date, timeZone) => date.timeZone(timeZone),\n getDateTime: getDateTimeValue,\n useDateFieldState,\n});\nfunction getPlaceholderTime(placeholderValue, timeZone) {\n return createPlaceholderValue({ placeholderValue, timeZone });\n}\n","import React from 'react';\nimport { useControlledState } from '@gravity-ui/uikit';\nimport { useDefaultTimeZone } from '../../utils/useDefaultTimeZone';\nexport function datePickerStateFactory({ getPlaceholderTime, mergeDateTime, setTimezone, getDateTime, useDateFieldState, }) {\n return function useDatePickerState(props) {\n var _a;\n const { disabled, readOnly } = props;\n const [isOpen, setOpen] = React.useState(false);\n const [value, setValue] = useControlledState(props.value, (_a = props.defaultValue) !== null && _a !== void 0 ? _a : null, props.onUpdate);\n const [selectedDateInner, setSelectedDate] = React.useState(null);\n const [selectedTimeInner, setSelectedTime] = React.useState(null);\n const inputTimeZone = useDefaultTimeZone(getDateTime(props.value) || getDateTime(props.defaultValue) || props.placeholderValue);\n const timeZone = props.timeZone || inputTimeZone;\n let selectedDate = selectedDateInner;\n let selectedTime = selectedTimeInner;\n const format = props.format || 'L';\n const commitValue = (date, time) => {\n if (disabled || readOnly) {\n return;\n }\n setValue(setTimezone(mergeDateTime(date, time), inputTimeZone));\n setSelectedDate(null);\n setSelectedTime(null);\n };\n const dateFieldState = useDateFieldState(Object.assign(Object.assign({}, props), { value,\n onUpdate(date) {\n if (date) {\n commitValue(date, date);\n }\n else {\n setValue(null);\n }\n },\n disabled,\n readOnly, validationState: props.validationState, minValue: props.minValue, maxValue: props.maxValue, isDateUnavailable: props.isDateUnavailable, format, placeholderValue: props.placeholderValue, timeZone }));\n const timeFormat = React.useMemo(() => {\n const hasSeconds = dateFieldState.sections.some((s) => s.type === 'second');\n return hasSeconds ? 'LTS' : 'LT';\n }, [dateFieldState.sections]);\n if (value) {\n selectedDate = setTimezone(value, timeZone);\n if (dateFieldState.hasTime) {\n selectedTime = setTimezone(value, timeZone);\n }\n }\n // Intercept setValue to make sure the Time section is not changed by date selection in Calendar\n const selectDate = (newValue) => {\n if (disabled || readOnly) {\n return;\n }\n const shouldClose = !dateFieldState.hasTime;\n if (dateFieldState.hasTime) {\n if (selectedTime || shouldClose) {\n commitValue(newValue, selectedTime || newValue);\n }\n else {\n setSelectedDate(newValue);\n }\n }\n else {\n commitValue(newValue, newValue);\n }\n if (shouldClose) {\n setOpen(false);\n }\n };\n const selectTime = (newValue) => {\n if (disabled || readOnly) {\n return;\n }\n const newTime = newValue !== null && newValue !== void 0 ? newValue : getPlaceholderTime(props.placeholderValue, timeZone);\n if (selectedDate) {\n commitValue(selectedDate, newTime);\n }\n else {\n setSelectedTime(newTime);\n }\n };\n if (dateFieldState.hasTime && !selectedTime) {\n selectedTime = dateFieldState.displayValue;\n }\n return {\n value,\n setValue(newDate) {\n if (props.readOnly || props.disabled) {\n return;\n }\n if (newDate) {\n setValue(setTimezone(newDate, inputTimeZone));\n }\n else {\n setValue(null);\n }\n },\n dateValue: selectedDate,\n timeValue: selectedTime,\n setDateValue: selectDate,\n setTimeValue: selectTime,\n disabled,\n readOnly,\n format,\n hasDate: dateFieldState.hasDate,\n hasTime: dateFieldState.hasTime,\n timeFormat,\n timeZone,\n isOpen,\n setOpen(newIsOpen) {\n if (!newIsOpen && !value && selectedDate && dateFieldState.hasTime) {\n commitValue(selectedDate, selectedTime || getPlaceholderTime(props.placeholderValue, props.timeZone));\n }\n setOpen(newIsOpen);\n },\n dateFieldState,\n };\n };\n}\n","import { block } from '../../../utils/cn';\nexport const b = block('date-picker');\n","'use client';\nimport { __rest } from \"tslib\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React from 'react';\nimport { Calendar as CalendarIcon, Clock as ClockIcon } from '@gravity-ui/icons';\nimport { Button, Icon, Popup, TextInput, useMobile } from '@gravity-ui/uikit';\nimport { Calendar } from '../Calendar';\nimport { DateField } from '../DateField';\nimport { HiddenInput } from '../HiddenInput/HiddenInput';\nimport { MobileCalendar } from './MobileCalendar';\nimport { StubButton } from './StubButton';\nimport { useDatePickerProps } from './hooks/useDatePickerProps';\nimport { useDatePickerState } from './hooks/useDatePickerState';\nimport { b } from './utils';\nimport './DatePicker.css';\nexport function DatePicker(_a) {\n var { className } = _a, props = __rest(_a, [\"className\"]);\n const anchorRef = React.useRef(null);\n const state = useDatePickerState(props);\n const { groupProps, fieldProps, calendarButtonProps, popupProps, calendarProps, timeInputProps } = useDatePickerProps(state, props);\n const isMobile = useMobile();\n const isOnlyTime = state.hasTime && !state.hasDate;\n return (_jsxs(\"div\", Object.assign({ className: b(null, className) }, groupProps, { children: [isMobile ? (_jsx(MobileCalendar, { props: props, state: state })) : (!isOnlyTime && (_jsx(\"div\", { ref: anchorRef, className: b('popup-anchor'), children: _jsx(Popup, Object.assign({ anchorRef: anchorRef }, popupProps, { children: _jsxs(\"div\", { className: b('popup-content'), children: [typeof props.children === 'function' ? (props.children(calendarProps)) : (_jsx(Calendar, Object.assign({}, calendarProps))), state.hasTime && (_jsx(\"div\", { className: b('time-field-wrapper'), children: _jsx(DateField, Object.assign({}, timeInputProps)) }))] }) })) }))), _jsx(TextInput, Object.assign({}, fieldProps, { className: b('field', { mobile: isMobile }), hasClear: !isMobile && fieldProps.hasClear, endContent: _jsxs(React.Fragment, { children: [!isMobile && !isOnlyTime && (_jsx(Button, Object.assign({}, calendarButtonProps, { children: _jsx(Icon, { data: CalendarIcon }) }))), !isMobile && isOnlyTime && (_jsx(StubButton, { size: calendarButtonProps.size, icon: ClockIcon })), isMobile && (_jsx(StubButton, { size: calendarButtonProps.size, icon: isOnlyTime ? ClockIcon : CalendarIcon }))] }) })), _jsx(HiddenInput, { name: props.name, value: state.value, toStringValue: (value) => { var _a; return (_a = value === null || value === void 0 ? void 0 : value.toISOString()) !== null && _a !== void 0 ? _a : ''; }, onReset: (value) => {\n state.setValue(value);\n }, disabled: state.disabled, form: props.form })] })));\n}\n","import { __rest } from \"tslib\";\nimport React from 'react';\nimport { useFocusWithin, useForkRef } from '@gravity-ui/uikit';\nimport { useDateFieldProps } from '../../DateField';\nimport { getButtonSizeForInput } from '../../utils/getButtonSizeForInput';\nimport { mergeProps } from '../../utils/mergeProps';\nimport { i18n } from '../i18n';\nimport { getDateTimeValue } from '../utils';\nexport function useDatePickerProps(state, _a) {\n var { onFocus, onBlur } = _a, props = __rest(_a, [\"onFocus\", \"onBlur\"]);\n const [isActive, setActive] = React.useState(false);\n const { focusWithinProps } = useFocusWithin({\n onFocusWithin: onFocus,\n onBlurWithin: onBlur,\n onFocusWithinChange(isFocusWithin) {\n setActive(isFocusWithin);\n if (!isFocusWithin) {\n state.setOpen(false);\n }\n },\n });\n const { inputProps } = useDateFieldProps(state.dateFieldState, props);\n const inputRef = React.useRef(null);\n const handleRef = useForkRef(inputRef, inputProps.controlRef);\n const calendarRef = React.useRef(null);\n const calendarButtonRef = React.useRef(null);\n const groupRef = React.useRef(null);\n function focusInput() {\n setTimeout(() => {\n var _a;\n (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();\n });\n }\n const onlyTime = state.hasTime && !state.hasDate;\n return {\n groupProps: Object.assign(Object.assign({ ref: groupRef, tabIndex: -1, role: 'group' }, focusWithinProps), { style: props.style, 'aria-disabled': state.disabled || undefined, onKeyDown: (e) => {\n if (!onlyTime && e.altKey && (e.key === 'ArrowDown' || e.key === 'ArrowUp')) {\n e.preventDefault();\n e.stopPropagation();\n state.setOpen(true);\n }\n } }),\n fieldProps: mergeProps(inputProps, state.dateFieldState.isEmpty && !isActive && props.placeholder\n ? { value: '' }\n : undefined, { controlRef: handleRef }),\n calendarButtonProps: {\n ref: calendarButtonRef,\n size: getButtonSizeForInput(props.size),\n disabled: state.disabled,\n extraProps: {\n 'aria-label': i18n('Calendar'),\n 'aria-haspopup': 'dialog',\n 'aria-expanded': state.isOpen,\n },\n view: 'flat-secondary',\n onClick: () => {\n setActive(true);\n state.setOpen(!state.isOpen);\n },\n },\n popupProps: {\n open: state.isOpen,\n onEscapeKeyDown: () => {\n state.setOpen(false);\n focusInput();\n },\n onOutsideClick: (e) => {\n var _a;\n if (e.target !== calendarButtonRef.current) {\n state.setOpen(false);\n }\n if (e.target && ((_a = groupRef.current) === null || _a === void 0 ? void 0 : _a.contains(e.target))) {\n focusInput();\n }\n },\n focusTrap: true,\n },\n calendarProps: {\n ref: calendarRef,\n autoFocus: true,\n size: props.size === 's' ? 'm' : props.size,\n disabled: props.disabled,\n readOnly: props.readOnly,\n onUpdate: (d) => {\n state.setDateValue(d);\n if (!state.hasTime) {\n focusInput();\n }\n },\n value: state.dateFieldState.displayValue,\n minValue: props.minValue,\n maxValue: props.maxValue,\n isDateUnavailable: props.isDateUnavailable,\n timeZone: state.timeZone,\n },\n timeInputProps: {\n value: state.timeValue,\n placeholderValue: getDateTimeValue(state.dateFieldState.displayValue),\n onUpdate: state.setTimeValue,\n format: state.timeFormat,\n readOnly: state.readOnly,\n disabled: state.disabled,\n timeZone: state.timeZone,\n hasClear: props.hasClear,\n size: props.size,\n },\n };\n}\n","export function absolute(relative: string, base?: string) {\n if (relative[0] === '/') {\n return relative;\n }\n\n if (base === undefined) {\n base = window?.location.pathname || '';\n }\n\n const stack = base.split('/');\n const parts = relative.split('/');\n stack.pop();\n for (let i = 0; i < parts.length; i++) {\n if (parts[i] == '.') {\n continue;\n }\n if (parts[i] == '..') {\n stack.pop();\n } else {\n stack.push(parts[i]);\n }\n }\n return stack.join('/');\n}\n","import map_ from 'lodash/map';\n\nimport moment from 'moment';\nimport {createSelector} from 'reselect';\n\nimport Utils, {currentDate} from '../odin-utils';\nimport {COLS_NUMBER} from '../odin-constants';\nimport {makeGetSetting} from '../../../store/selectors/settings';\nimport {ODIN_VISIBLE_METRIC_PRESETS, YA_NAMESPACES} from '../odin-settings';\nimport {OdinRootState} from '../_reducers';\nimport YT from '../../../config/yt-config';\n\nexport const getMetric = (state: OdinRootState) => state.odin.details.metric;\nexport const getUseCurrentDate = (state: OdinRootState) => state.odin.details.useCurrentDate;\nexport const getHours = (state: OdinRootState) => state.odin.details.hours;\nexport const getMinutes = (state: OdinRootState) => state.odin.details.minutes;\nexport const getMetricAvailability = (state: OdinRootState) =>\n state.odin.details.metricAvailability;\n\nexport const getDate = (state: OdinRootState) => {\n if (getUseCurrentDate(state)) {\n return currentDate();\n }\n return state.odin.details.date;\n};\n\nexport const getStat = createSelector([getMetricAvailability], (availability) => {\n return Utils.computeStat(availability);\n});\n\nexport const getExtendedInfo = createSelector(\n [getMetricAvailability, getDate, getHours, getMinutes],\n (availability, date, hours, minutes) => {\n let info;\n if (hours !== -1 && minutes !== -1) {\n const index = hours * COLS_NUMBER + minutes;\n\n info = availability[index];\n if (info) {\n info = {\n ...info,\n date: moment(date)\n .set({hour: hours, minute: minutes})\n .format('DD-MM-YYYY HH:mm'),\n };\n }\n }\n\n return info;\n },\n);\n\nexport const getOdinCluster = (state: OdinRootState) => state.odin.details.odinCluster;\nfunction makeClusterNameItems() {\n const names = map_(YT.clusters, 'id').sort();\n return map_(names, (name) => {\n return {\n key: name,\n value: name,\n title: (YT.clusters[name] || {name}).name,\n };\n });\n}\n\nexport const ODIN_CLUSTER_NAMES_ITEMS = makeClusterNameItems();\n\nexport const getSettingOdinOverviewVisiblePresets = createSelector(makeGetSetting, (getSetting) => {\n return getSetting(ODIN_VISIBLE_METRIC_PRESETS, YA_NAMESPACES.ODIN) || [];\n});\n","import {NAMESPACES} from '../../../shared/constants/settings';\nimport {createNestedNS} from '../../../shared/utils/settings';\nconst ODIN = createNestedNS('odin', NAMESPACES.GLOBAL);\n\nexport const ODIN_VISIBLE_METRIC_PRESETS = 'visibleMetricPresets';\nexport const ODIN_LAST_VISITED_TAB = 'lastVisitedTab';\n\nexport const YA_NAMESPACES = {ODIN};\n","import partition_ from 'lodash/partition';\nimport sortBy_ from 'lodash/sortBy';\n\nimport {createSelector} from 'reselect';\nimport {getSettingOdinOverviewVisiblePresets} from './index';\nimport {OdinRootState} from '../_reducers';\nimport {makeGetSetting} from '../../../store/selectors/settings';\nimport {OdinTab} from '../odin-constants';\nimport {ODIN_LAST_VISITED_TAB} from '../odin-settings';\nimport {NAMESPACES} from '../../../../shared/constants/settings';\n\nexport const getOdinOverviewTimeFromFilter = (state: OdinRootState) =>\n state.odin.overview.timeFromFilter;\nexport const getOdinOverviewTimeFrom = (state: OdinRootState) => state.odin.overview.timeFrom;\nexport const getOdinOverviewTimeTo = (state: OdinRootState) => state.odin.overview.timeTo;\nexport const getOdinOverviewLoading = (state: OdinRootState) => state.odin.overview.loading;\nexport const getOdinOverviewData = (state: OdinRootState) => state.odin.overview.data;\nexport const getOdinOverviewDataCluster = (state: OdinRootState) => state.odin.overview.dataCluster;\nconst getOdinOverviewHiddenMetricsRaw = (state: OdinRootState) => state.odin.overview.hiddenMetrics;\nexport const getOdinOverviewShowCreatePresetDialog = (state: OdinRootState) =>\n state.odin.overview.showCreatePresetDialog;\nexport const getOdinOverviewUseDefaultPreset = (state: OdinRootState) =>\n state.odin.overview.useDefaultPreset;\nexport const getOdinOverviewPresetToRemove = (state: OdinRootState) =>\n state.odin.overview.presetToRemove;\n\nconst getOdinOverviewClusterMetricsRaw = (state: OdinRootState) =>\n state.odin.overview.clusterMetrics;\n\nexport const getOdinOverviewVisiblePresets = createSelector(\n [getSettingOdinOverviewVisiblePresets],\n (res?: Array<OdinOverviewPreset>) => {\n return res || [];\n },\n);\n\nexport const getOdinOverviewDefaultPreset = createSelector(\n [getOdinOverviewVisiblePresets],\n (presets) => {\n return presets.find((item) => item.isDefault);\n },\n);\n\nexport interface OdinOverviewPreset {\n name: string;\n hiddenMetricNames: Array<string>;\n\n isDefault?: boolean;\n}\n\nexport const getOdinOverviewHiddenMetrics = createSelector(\n [\n getOdinOverviewHiddenMetricsRaw,\n getOdinOverviewUseDefaultPreset,\n getOdinOverviewDefaultPreset,\n ],\n (hiddenMetrics, useDefaultPreset, defaultPreset) => {\n if (!defaultPreset || !useDefaultPreset) {\n return hiddenMetrics;\n }\n\n return defaultPreset.hiddenMetricNames.reduce(\n (acc, name) => {\n acc[name] = true;\n return acc;\n },\n {} as typeof hiddenMetrics,\n );\n },\n);\n\nexport const getOdinOverviewClusterMetrics = createSelector(\n [getOdinOverviewClusterMetricsRaw, getOdinOverviewHiddenMetrics],\n (items, hiddenMetrics) => {\n const sorted = sortBy_(items, 'display_name');\n const [hidden, visible] = partition_(sorted, ({name}) => hiddenMetrics[name]);\n return visible.concat(hidden);\n },\n);\n\nexport const getOdinLastVisitedTab = createSelector(\n makeGetSetting,\n (getSetting) => getSetting(ODIN_LAST_VISITED_TAB, NAMESPACES.GLOBAL) || OdinTab.OVERVIEW,\n);\n","import {ThunkAction} from 'redux-thunk';\nimport forEach_ from 'lodash/forEach';\nimport map_ from 'lodash/map';\n\nimport Utils from '../odin-utils';\nimport {RootState} from '../../../store/reducers';\nimport {OdinOverviewAction, OdinOverviewState} from '../_reducers/odin-overview';\nimport {\n ODIN_OVERVIEW_CANCELLED,\n ODIN_OVERVIEW_FAILED,\n ODIN_OVERVIEW_HIDDEN_METRICS,\n ODIN_OVERVIEW_PARTIAL,\n ODIN_OVERVIEW_REQUEST,\n ODIN_OVERVIEW_SUCCESS,\n} from '../odin-constants';\nimport {\n getOdinLastVisitedTab,\n getOdinOverviewClusterMetrics,\n getOdinOverviewData,\n getOdinOverviewDataCluster,\n getOdinOverviewHiddenMetrics,\n getOdinOverviewTimeFrom,\n getOdinOverviewTimeFromFilter,\n getOdinOverviewTimeTo,\n getOdinOverviewVisiblePresets,\n} from '../_selectors/odin-overview';\nimport {reloadSetting, setSetting} from '../../../store/actions/settings';\nimport {Toaster} from '@gravity-ui/uikit';\nimport {showErrorPopup} from '../../../utils/utils';\nimport {NAMESPACES} from '../../../../shared/constants/settings';\nimport {ODIN_LAST_VISITED_TAB, ODIN_VISIBLE_METRIC_PRESETS, YA_NAMESPACES} from '../odin-settings';\nimport {OdinRootState} from '../_reducers';\n\ntype OdinOverviewThunkAction = ThunkAction<any, OdinRootState & RootState, any, OdinOverviewAction>;\n\nfunction getClusterHelper(gs: () => OdinRootState) {\n return getOdinOverviewDataCluster(gs());\n}\n\nconst COUNT_OF_MINUTES = 30;\n\nexport const ODIN_OVERVIEW_TIME_RANGE = COUNT_OF_MINUTES * 60 * 1000;\n\nlet cancelMetrics: {cancel: () => void} = {cancel: () => {}};\n\nfunction fetchOdinOverview(cluster: string, time?: number): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n cancelMetrics.cancel();\n const data = getOdinOverviewData(getState());\n forEach_(data, (item) => item.cancel?.());\n\n const oldCluster = getClusterHelper(getState);\n\n dispatch({\n type: ODIN_OVERVIEW_REQUEST,\n });\n\n if (oldCluster !== cluster) {\n dispatch({\n type: ODIN_OVERVIEW_PARTIAL,\n data: {data: {}, clusterMetrics: [], dataCluster: cluster},\n });\n }\n\n return Utils.listMetrics(cluster, (c) => {\n cancelMetrics = c;\n })\n .then((clusterMetrics) => {\n if (getClusterHelper(getState) !== cluster) {\n return;\n }\n\n const timeFrom = time ? time : Date.now() - ODIN_OVERVIEW_TIME_RANGE;\n const timeTo = timeFrom + ODIN_OVERVIEW_TIME_RANGE;\n\n dispatch({\n type: ODIN_OVERVIEW_PARTIAL,\n data: {\n clusterMetrics,\n timeFrom,\n timeTo,\n },\n });\n\n const hiddenMetrics = getOdinOverviewHiddenMetrics(getState());\n Promise.all(\n clusterMetrics.map(({name}) => {\n if (!hiddenMetrics[name]) {\n return dispatch(fetchMetricData(cluster, name, timeFrom, timeTo));\n } else {\n return Promise.resolve();\n }\n }),\n ).then(() => {\n dispatch({type: ODIN_OVERVIEW_SUCCESS});\n });\n })\n .catch((error) => {\n if (Utils.isRequestCanceled(error)) {\n dispatch({type: ODIN_OVERVIEW_CANCELLED});\n } else {\n dispatch({type: ODIN_OVERVIEW_FAILED, data: error});\n }\n });\n };\n}\n\nexport function odinOverviewSetPreviousTimeRange(): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const timeFromFilter = getOdinOverviewTimeFromFilter(state);\n if (!timeFromFilter) {\n dispatch(setOdinOverviewFromTimeFilter(Date.now() - 2 * ODIN_OVERVIEW_TIME_RANGE));\n } else {\n dispatch(setOdinOverviewFromTimeFilter(timeFromFilter - ODIN_OVERVIEW_TIME_RANGE));\n }\n };\n}\n\nexport function odinOverviewSetNextTimeRange(): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const timeFromFilter = getOdinOverviewTimeFromFilter(state);\n if (!timeFromFilter) {\n return;\n } else {\n const nextFilter = timeFromFilter + ODIN_OVERVIEW_TIME_RANGE;\n if (Date.now() - nextFilter < ODIN_OVERVIEW_TIME_RANGE) {\n dispatch(setOdinOverviewFromTimeFilter(undefined));\n } else {\n dispatch(setOdinOverviewFromTimeFilter(nextFilter));\n }\n }\n };\n}\n\nexport function setOdinOverviewFromTimeFilter(time: number | undefined): OdinOverviewAction {\n return {type: ODIN_OVERVIEW_PARTIAL, data: {timeFromFilter: time}};\n}\n\nexport function reloadOdinOverview(\n cluster: string,\n timeFromFilter: number | undefined,\n): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const timeFilter = getOdinOverviewTimeFromFilter(state);\n const timeFrom = getOdinOverviewTimeFrom(state);\n\n if (!timeFilter || timeFilter !== timeFrom) {\n dispatch(fetchOdinOverview(cluster, timeFromFilter));\n }\n };\n}\n\nfunction fetchMetricData(\n cluster: string,\n name: string,\n from: number,\n to: number,\n): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n let {cancel} = getOdinOverviewData(getState())[name] || {};\n if (cancel) {\n cancel();\n }\n\n return Utils.getMetric(cluster, name, from, to, (c) => {\n cancel = c.cancel;\n })\n .then((d) => {\n if (getClusterHelper(getState) !== cluster) {\n return;\n }\n\n const data = {\n ...getOdinOverviewData(getState()),\n [name]: {\n cancel,\n metricData: Utils.prepareAvailabilityData(d, COUNT_OF_MINUTES),\n },\n };\n dispatch({type: ODIN_OVERVIEW_PARTIAL, data: {data}});\n })\n .catch((error) => {\n if (!Utils.isRequestCanceled(error)) {\n const data = {\n ...getOdinOverviewData(getState()),\n [name]: {error},\n };\n dispatch({type: ODIN_OVERVIEW_PARTIAL, data: {data}});\n }\n });\n };\n}\n\nexport function reloadOdinOverviewMetricData(metricName: string): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const cluster = getOdinOverviewDataCluster(state);\n const from = getOdinOverviewTimeFrom(state);\n const to = getOdinOverviewTimeTo(state);\n if (from && to) {\n dispatch(fetchMetricData(cluster, metricName, from, to));\n }\n };\n}\n\nexport function toggleOdinOverviewMetricVisibility(metricName: string): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n const hiddenMetrics = {...getOdinOverviewHiddenMetrics(getState())};\n if (hiddenMetrics[metricName]) {\n delete hiddenMetrics[metricName];\n } else {\n hiddenMetrics[metricName] = true;\n }\n dispatch({\n type: ODIN_OVERVIEW_HIDDEN_METRICS,\n data: {hiddenMetrics},\n });\n if (!hiddenMetrics[metricName]) {\n dispatch(reloadOdinOverviewMetricData(metricName));\n }\n };\n}\n\nexport function odinOverviewSetAllMetricsVisible(value: boolean): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const oldHhiddenMetrics = getOdinOverviewHiddenMetrics(state);\n let toReload: Array<string> = [];\n const hiddenMetrics: typeof oldHhiddenMetrics = {};\n if (!value) {\n const metrics = getOdinOverviewClusterMetrics(state);\n metrics.forEach(({name}) => {\n hiddenMetrics[name] = true;\n });\n } else {\n toReload = map_(oldHhiddenMetrics, (__: boolean, name: string) => name);\n }\n\n dispatch({\n type: ODIN_OVERVIEW_HIDDEN_METRICS,\n data: {hiddenMetrics},\n });\n\n toReload.forEach((name) => {\n dispatch(reloadOdinOverviewMetricData(name));\n });\n };\n}\n\nexport function odinOverviewShowCreatePresetDialog(\n showCreatePresetDialog: boolean,\n): OdinOverviewAction {\n return {type: ODIN_OVERVIEW_PARTIAL, data: {showCreatePresetDialog}};\n}\n\nexport function odinOverviewAddPreset(name: string, isDefault: boolean): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n const toHide = getOdinOverviewHiddenMetrics(getState());\n return dispatch(reloadSetting(ODIN_VISIBLE_METRIC_PRESETS, YA_NAMESPACES.ODIN)).then(() => {\n const presets = [...getOdinOverviewVisiblePresets(getState())];\n presets.push({\n name,\n hiddenMetricNames: map_(toHide, (_, name) => name),\n });\n return dispatch(setSetting(ODIN_VISIBLE_METRIC_PRESETS, YA_NAMESPACES.ODIN, presets))\n .then(() => {\n if (isDefault) {\n return dispatch(odinOverviewToggleDefaultPreset(name));\n }\n })\n .catch((error: any) => {\n const data = error?.response?.data || error;\n const {message} = data;\n\n new Toaster().add({\n name: 'add-preset',\n autoHiding: false,\n theme: 'danger',\n content: message,\n title: 'Failed to crete preset',\n actions: [\n {\n label: ' view',\n onClick: () => showErrorPopup(data),\n },\n ],\n });\n });\n });\n };\n}\n\nexport function odinOverviewSetPresetToRemove(\n name: OdinOverviewState['presetToRemove'],\n): OdinOverviewThunkAction {\n return (dispatch) => {\n dispatch({\n type: ODIN_OVERVIEW_PARTIAL,\n data: {presetToRemove: name},\n });\n };\n}\n\nexport function odinOverviewRemovePreset(name: string): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n return dispatch(reloadSetting(ODIN_VISIBLE_METRIC_PRESETS, YA_NAMESPACES.ODIN))\n .then(() => {\n const oldPresets = getOdinOverviewVisiblePresets(getState());\n const presets = oldPresets.filter((item) => item.name !== name);\n return dispatch(\n setSetting(ODIN_VISIBLE_METRIC_PRESETS, YA_NAMESPACES.ODIN, presets),\n );\n })\n .catch((error: any) => {\n const data = error?.response?.data || error;\n const {message} = data;\n\n new Toaster().add({\n name: 'delete-preset',\n autoHiding: false,\n theme: 'danger',\n content: message,\n title: 'Failed to delete the preset',\n actions: [{label: ' view', onClick: () => showErrorPopup(data)}],\n });\n });\n };\n}\n\nexport function odinOverviewToggleDefaultPreset(name: string): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n return dispatch(reloadSetting(ODIN_VISIBLE_METRIC_PRESETS, YA_NAMESPACES.ODIN)).then(() => {\n const presets = [...getOdinOverviewVisiblePresets(getState())];\n for (let i = 0; i < presets.length; ++i) {\n const item = presets[i];\n if (item.name === name) {\n presets[i] = {...item, isDefault: !item.isDefault};\n } else if (item.isDefault) {\n presets[i] = {...item};\n delete presets[i]['isDefault'];\n }\n }\n return dispatch(\n setSetting(ODIN_VISIBLE_METRIC_PRESETS, YA_NAMESPACES.ODIN, presets),\n ).catch((error: any) => {\n const data = error?.response?.data || error;\n const {message} = data;\n\n new Toaster().add({\n name: 'set-deault-preset',\n autoHiding: false,\n theme: 'danger',\n content: message,\n title: 'Failed to set the preset as default',\n actions: [{label: ' view', onClick: () => showErrorPopup(data)}],\n });\n });\n });\n };\n}\n\nexport function odinOverviewSelectPreset(name: string): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const presets = getOdinOverviewVisiblePresets(state);\n const preset = presets.find((item) => item.name === name);\n if (preset) {\n const {hiddenMetricNames} = preset;\n const hiddenMetrics: OdinOverviewState['hiddenMetrics'] = {};\n hiddenMetricNames.forEach((name) => {\n hiddenMetrics[name] = true;\n });\n dispatch({\n type: ODIN_OVERVIEW_HIDDEN_METRICS,\n data: {hiddenMetrics},\n });\n\n const oldHiddenMetrics = getOdinOverviewHiddenMetrics(state);\n forEach_(oldHiddenMetrics, (_, name) => {\n if (!hiddenMetrics[name]) {\n dispatch(reloadOdinOverviewMetricData(name));\n }\n });\n }\n };\n}\n\nexport function setOdinLastVisitedTab(tab: string): ThunkAction<any, any, RootState, any> {\n return (dispatch, getState) => {\n const current = getOdinLastVisitedTab(getState());\n if (current !== tab) {\n dispatch(setSetting(ODIN_LAST_VISITED_TAB, NAMESPACES.GLOBAL, tab));\n }\n };\n}\n","import {\n COLS_NUMBER,\n GET_METRIC_DATA,\n ODIN_DATA_FIELDS,\n ROWS_NUMBER,\n SET_DATE,\n SET_HOURS_MINUTES,\n SET_METRIC,\n TOGGLE_USE_CURRENT_DATE,\n} from '../odin-constants';\nimport {getDate, getMetric} from '../_selectors';\nimport CancelHelper from '../../../utils/cancel-helper';\n\nimport Utils from '../odin-utils';\n\nconst requests = new CancelHelper();\n\nexport function setMetric(metric) {\n return {\n type: SET_METRIC,\n data: {metric},\n };\n}\n\nexport function toggleUseCurrentDate() {\n return {\n type: TOGGLE_USE_CURRENT_DATE,\n };\n}\n\nexport function setDate(date) {\n return {\n type: SET_DATE,\n data: {date},\n };\n}\n\nexport function setShowInfo(hours, minutes) {\n return {\n type: SET_HOURS_MINUTES,\n data: {hours, minutes},\n };\n}\n\nexport function loadMetricAvailability({cluster, metric, date}) {\n return (dispatch) => {\n dispatch({type: GET_METRIC_DATA.REQUEST});\n requests.removeAllRequests();\n\n Utils.getMetricOfThisDay(cluster, metric, date, requests.saveCancelToken)\n .then((data) => {\n const metricAvailability = Utils.prepareAvailabilityData(\n data,\n ROWS_NUMBER * COLS_NUMBER,\n );\n dispatch({\n type: GET_METRIC_DATA.SUCCESS,\n data: {metricAvailability},\n });\n })\n .catch((error) => {\n if (Utils.isRequestCanceled(error)) {\n dispatch({type: GET_METRIC_DATA.CANCELLED});\n } else {\n dispatch({\n type: GET_METRIC_DATA.FAILURE,\n data: {error},\n });\n }\n });\n };\n}\n\nexport function setOdinCluster(odinCluster) {\n return (dispatch, getState) => {\n const state = getState();\n const metric = getMetric(state);\n const date = getDate(state);\n\n dispatch({type: ODIN_DATA_FIELDS, data: {odinCluster}});\n return dispatch(loadMetricAvailability({cluster: odinCluster, metric, date}));\n };\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {getOdinOverviewShowCreatePresetDialog} from '../_selectors/odin-overview';\nimport {YTDFDialog} from '../../../components/Dialog';\nimport {odinOverviewAddPreset, odinOverviewShowCreatePresetDialog} from '../_actions/odin-overview';\nimport {getSettingOdinOverviewVisiblePresets} from '../_selectors';\n\nexport default function OdinOverviewCreatePresetDialog() {\n const dispatch = useDispatch();\n\n const visible = useSelector(getOdinOverviewShowCreatePresetDialog);\n\n const closeDialog = () => dispatch(odinOverviewShowCreatePresetDialog(false));\n\n const presets = useSelector(getSettingOdinOverviewVisiblePresets);\n const validateName = React.useCallback(\n (name: string) => {\n for (let i = 0; i < presets.length; ++i) {\n if (name === presets[i].name) {\n return 'The name must be unique';\n }\n }\n return undefined;\n },\n [presets],\n );\n\n return (\n <YTDFDialog\n visible={visible}\n headerProps={{\n title: 'Create preset',\n }}\n onAdd={(form: any) => {\n const {name, isDefault} = form.getState().values;\n const res = dispatch(odinOverviewAddPreset(name, isDefault));\n return (res as any).then(closeDialog);\n }}\n onClose={closeDialog}\n initialValues={{\n name: '',\n asDefault: false,\n }}\n fields={[\n {\n name: 'name',\n type: 'text',\n caption: 'Preset name',\n required: true,\n validator: validateName,\n },\n {\n name: 'isDefault',\n type: 'tumbler',\n caption: 'Use as default',\n },\n ]}\n />\n );\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport * as d3 from 'd3';\nimport moment from 'moment';\nimport map_ from 'lodash/map';\n\nimport {Button, Dialog, Loader, Popup, Icon as UIKitIcon} from '@gravity-ui/uikit';\n\nimport chevronLeftSvg from '@gravity-ui/icons/svgs/chevron-left.svg';\nimport chevronRightSvg from '@gravity-ui/icons/svgs/chevron-right.svg';\n\nimport {DatePicker} from '@gravity-ui/date-components';\n\nimport {absolute} from '../../../common/utils/url-ts';\n\nimport hammer from '../../../common/hammer';\n\nimport {dateTime} from '@gravity-ui/date-utils';\n\nimport {useDispatch, useSelector} from 'react-redux';\nimport {\n ODIN_OVERVIEW_TIME_RANGE,\n odinOverviewRemovePreset,\n odinOverviewSelectPreset,\n odinOverviewSetAllMetricsVisible,\n odinOverviewSetNextTimeRange,\n odinOverviewSetPresetToRemove,\n odinOverviewSetPreviousTimeRange,\n odinOverviewShowCreatePresetDialog,\n odinOverviewToggleDefaultPreset,\n reloadOdinOverview,\n reloadOdinOverviewMetricData,\n setOdinLastVisitedTab,\n setOdinOverviewFromTimeFilter,\n toggleOdinOverviewMetricVisibility,\n} from '../_actions/odin-overview';\nimport {\n OdinOverviewPreset,\n getOdinOverviewClusterMetrics,\n getOdinOverviewData,\n getOdinOverviewHiddenMetrics,\n getOdinOverviewLoading,\n getOdinOverviewPresetToRemove,\n getOdinOverviewTimeFrom,\n getOdinOverviewTimeFromFilter,\n getOdinOverviewTimeTo,\n getOdinOverviewVisiblePresets,\n} from '../_selectors/odin-overview';\nimport {MetricData, MetricListItem} from '../odin-utils';\nimport {OdinOverviewStateDataItem} from '../_reducers/odin-overview';\nimport {ClickableText} from '../../../components/ClickableText/ClickableText';\nimport Link from '../../../components/Link/Link';\n// @ts-ignore\nimport {YTDFDialog} from '../../../components/Dialog';\n\nimport ErrorBoundary from '../../../components/ErrorBoundary/ErrorBoundary';\nimport {setMetric} from '../_actions';\nimport Icon from '../../../components/Icon/Icon';\nimport OdinOverviewCreatePresetDialog from './OdinOverviewCreatePresetDialog';\n\nimport {ODIN_CELL_SIZE, OdinTab} from '../odin-constants';\n\nimport './OdinOverview.scss';\nimport WithStickyToolbar from '../../../components/WithStickyToolbar/WithStickyToolbar';\nimport {useUpdater} from '../../../hooks/use-updater';\n\nconst block = cn('odin-overview');\n\nfunction useOdinOverviewDataLoader(cluster: string) {\n const dispatch = useDispatch();\n\n const timeFromFilter = useSelector(getOdinOverviewTimeFromFilter);\n const updateFn = React.useCallback(() => {\n dispatch(reloadOdinOverview(cluster, timeFromFilter));\n }, [cluster, timeFromFilter, dispatch]);\n\n useUpdater(updateFn, {timeout: 60 * 1000});\n}\n\nconst DATE_FORMAT = 'D MMM ';\nconst TIME_FORMAT = 'HH:mm';\nconst D_O_Y_FORMAT = 'DDD YYYY';\n\nfunction formatByDates(from: Date, to: Date) {\n const isToday = moment(to).format(D_O_Y_FORMAT) === moment().format(D_O_Y_FORMAT);\n return isToday && moment(from).format(DATE_FORMAT) === moment(to).format(DATE_FORMAT)\n ? TIME_FORMAT\n : DATE_FORMAT + TIME_FORMAT;\n}\n\ninterface OdinOverviewProps {\n cluster: string;\n}\n\nexport default function OdinOverviewWithPreset({cluster}: OdinOverviewProps) {\n const dispatch = useDispatch();\n React.useEffect(() => {\n dispatch(setOdinLastVisitedTab(OdinTab.OVERVIEW));\n }, []);\n return (\n <React.Fragment>\n <OdinOverviewPresets />\n <OdinOverview cluster={cluster} />\n <OdinOverviewCreatePresetDialog />\n </React.Fragment>\n );\n}\n\nfunction OdinOverviewPresets() {\n const presets = useSelector(getOdinOverviewVisiblePresets);\n return (\n <div className={block('presets')}>\n {map_(presets, (item) => (\n <OdinOverviewPresetItem key={item.name} {...item} />\n ))}\n </div>\n );\n}\n\nfunction OdinOverviewPresetItem({name, isDefault}: OdinOverviewPreset) {\n const dispatch = useDispatch();\n return (\n <div className={block('preset')} onClick={() => dispatch(odinOverviewSelectPreset(name))}>\n <ClickableText\n className={block('preset-star')}\n color={'secondary'}\n onClick={() => {\n dispatch(odinOverviewToggleDefaultPreset(name));\n }}\n title={isDefault ? 'Unmark as default' : 'Mark as default'}\n >\n <Icon awesome={'star'} face={isDefault ? 'solid' : 'regular'} />\n </ClickableText>\n <span className={block('preset-name')} title={name}>\n {name}\n </span>\n <ClickableText\n className={block('preset-remove')}\n color={'secondary'}\n onClick={(e) => {\n e.stopPropagation();\n dispatch(odinOverviewSetPresetToRemove(name));\n }}\n title={'Remove'}\n >\n <Icon awesome={'times'} />\n </ClickableText>\n </div>\n );\n}\n\nfunction OdinOverviewRemoveConfirmationDialog() {\n const presetToRemove = useSelector(getOdinOverviewPresetToRemove);\n const dispatch = useDispatch();\n\n const handleClose = React.useCallback(() => {\n dispatch(odinOverviewSetPresetToRemove(undefined));\n }, []);\n\n const handleAdd = React.useCallback(async () => {\n if (presetToRemove) {\n await dispatch(odinOverviewRemovePreset(presetToRemove));\n return;\n }\n return Promise.resolve();\n }, [presetToRemove, dispatch]);\n\n return (\n <YTDFDialog\n pristineSubmittable\n visible={Boolean(presetToRemove)}\n onClose={handleClose}\n onAdd={handleAdd}\n fields={[\n {\n type: 'block',\n name: 'text',\n extras: {\n children: (\n <div>\n Are you sure you want to remove\n <span className={block('preset-to-remove')}>\n {' '}\n {presetToRemove}{' '}\n </span>\n preset\n </div>\n ),\n },\n },\n ]}\n headerProps={{\n title: `Remove \"${presetToRemove}\"`,\n }}\n footerProps={{\n textApply: 'Remove',\n }}\n />\n );\n}\n\nfunction OdinOverview(props: OdinOverviewProps) {\n const {cluster} = props;\n useOdinOverviewDataLoader(cluster);\n\n const fromFilter = useSelector(getOdinOverviewTimeFromFilter);\n const from = useSelector(getOdinOverviewTimeFrom);\n const to = useSelector(getOdinOverviewTimeTo);\n const loading = useSelector(getOdinOverviewLoading);\n\n const clusterMetrics = useSelector(getOdinOverviewClusterMetrics);\n const data = useSelector(getOdinOverviewData);\n const hiddenMap = useSelector(getOdinOverviewHiddenMetrics);\n\n const [tooltipData, setTooltip] = React.useState<Partial<TooltipState>>({});\n const [dialogData, setDialogData] = React.useState<DialogData | null>(null);\n\n const onTooltip = React.useCallback(\n (name: string, d?: MetricData, el?: Element, index?: number) => {\n if (el) {\n const {width, height} = el.getBoundingClientRect();\n (el as any).offsetWidth = width;\n (el as any).offsetHeight = height;\n setTooltip({\n metricName: name,\n metricData: d,\n metricDataIndex: index,\n anchor: el,\n });\n } else {\n setTooltip({});\n }\n },\n [setTooltip],\n );\n\n const onClick = React.useCallback(\n (metricName: string, metricData: MetricData, metricDataIndex: number) => {\n setDialogData({metricName, metricData, metricDataIndex});\n },\n [setDialogData],\n );\n\n const onClose = React.useCallback(() => {\n setDialogData(null);\n }, [setDialogData]);\n\n const dispatch = useDispatch();\n\n if (!from || !to) {\n return null;\n }\n\n const fromDate = new Date(from);\n const toDate = new Date(to);\n const format = formatByDates(fromDate, toDate);\n\n return (\n <ErrorBoundary>\n <WithStickyToolbar\n toolbar={\n <div className={block('navigation')}>\n <Button\n view=\"outlined\"\n onClick={() => {\n dispatch(odinOverviewSetPreviousTimeRange());\n }}\n pin=\"round-brick\"\n >\n <UIKitIcon data={chevronLeftSvg} />\n </Button>\n <DatePicker\n className={block('navigation-date-picker')}\n size=\"m\"\n format=\"DD.MM.YYYY HH:mm\"\n maxValue={dateTime({input: Date.now() - ODIN_OVERVIEW_TIME_RANGE})}\n onUpdate={(value) => {\n dispatch(setOdinOverviewFromTimeFilter(value?.valueOf()));\n }}\n value={dateTime({input: Number(fromFilter ?? from)})}\n pin=\"clear-clear\"\n />\n <Button\n view=\"outlined\"\n onClick={() => {\n dispatch(odinOverviewSetNextTimeRange());\n }}\n disabled={fromFilter === undefined}\n pin=\"brick-round\"\n >\n <UIKitIcon data={chevronRightSvg} />\n </Button>\n\n <Button\n view=\"flat-action\"\n disabled={fromFilter === undefined}\n onClick={() => {\n dispatch(setOdinOverviewFromTimeFilter(undefined));\n }}\n className={block('navigation-now')}\n >\n Now\n </Button>\n\n {loading && <Loader />}\n </div>\n }\n content={\n <>\n <div className={block()}>\n <div className={block('grid')}>\n <div className={block('dates')}>\n <div className={block('dates-item')}>\n <span>{moment(from).format(format)}</span>\n </div>\n <div className={block('dates-item')}>\n <span className={block('dates-item-to')}>\n {moment(to).add(-1, 'minute').format(format)}\n </span>\n </div>\n </div>\n <div className={block('show-hide-all')}>\n <ClickableText\n color={'secondary'}\n onClick={() =>\n dispatch(odinOverviewSetAllMetricsVisible(true))\n }\n >\n Show all\n </ClickableText>\n <span> / </span>\n <ClickableText\n color={'secondary'}\n onClick={() =>\n dispatch(odinOverviewSetAllMetricsVisible(false))\n }\n >\n Hide all\n </ClickableText>\n </div>\n <div className={block('save')}>\n <ClickableText\n color={'secondary'}\n onClick={() =>\n dispatch(odinOverviewShowCreatePresetDialog(true))\n }\n >\n <Icon awesome={'save'} />\n </ClickableText>\n </div>\n {clusterMetrics.map((item) => {\n return (\n <OverviewRow\n key={item.name}\n item={item}\n data={data[item.name]}\n onTooltip={onTooltip}\n onClick={onClick}\n hidden={hiddenMap[item.name]}\n />\n );\n })}\n </div>\n </div>\n <OdinOverviewTooltip {...tooltipData} from={new Date(from)} />\n {dialogData && (\n <OdinOverviewDetailsDialog\n {...dialogData}\n from={new Date(from)}\n onClose={onClose}\n />\n )}\n <OdinOverviewRemoveConfirmationDialog />\n </>\n }\n />\n </ErrorBoundary>\n );\n}\n\nfunction dateByIndex(from: Date, index: number) {\n return moment(from)\n .add(index, 'minute')\n .format(DATE_FORMAT + TIME_FORMAT);\n}\n\ninterface TooltipState {\n metricName?: string;\n metricData?: MetricData;\n metricDataIndex?: number;\n anchor?: Element;\n}\n\ninterface DialogData {\n metricName: string;\n metricData: MetricData;\n metricDataIndex: number;\n}\n\nfunction OdinOverviewTooltip(props: TooltipState & {from: Date}) {\n const {anchor, from, metricDataIndex, metricName, metricData} = props;\n if (!anchor || undefined === metricDataIndex) {\n return null;\n }\n return (\n <Popup\n anchorRef={{current: anchor as HTMLElement}}\n placement={['top', 'top-end', 'top-start', 'bottom', 'bottom-end', 'bottom-start']}\n open={true}\n >\n <div>\n <div>\n {dateByIndex(from, metricDataIndex)}\n <span\n className={block('status', {\n state: metricData?.state,\n })}\n >\n {hammer.format.Readable(metricData?.state)}\n </span>\n </div>\n {metricName}\n </div>\n </Popup>\n );\n}\n\nfunction OdinOverviewDetailsDialog(props: DialogData & {from: Date; onClose: () => void}) {\n const {metricName, metricData, metricDataIndex, from, onClose} = props;\n\n const status = (\n <span className={block('status', {state: metricData.state})}>\n {hammer.format.Readable(metricData.state)}\n </span>\n );\n\n return (\n <Dialog onClose={onClose} open={true} className={block('dialog')}>\n <Dialog.Header\n caption={\n <div className={block('dialog-header')}>\n <span className={block('dialog-time')}>\n {dateByIndex(from, metricDataIndex)}\n </span>\n {metricName}\n {status}\n </div>\n }\n />\n <Dialog.Divider />\n <Dialog.Body>\n <pre className={block('dialog-message')}>{metricData.message || status}</pre>\n </Dialog.Body>\n </Dialog>\n );\n}\n\ninterface OverviewRowProps {\n item: MetricListItem;\n data: OdinOverviewStateDataItem;\n onTooltip: (name: string, d?: MetricData, el?: Element, index?: number) => void;\n onClick: (name: string, d: MetricData, index: number) => void;\n hidden: boolean;\n}\n\nfunction OverviewRowImpl(props: OverviewRowProps) {\n const {item, data, onTooltip, onClick, hidden} = props;\n const handleTooltip = React.useCallback(\n (d?: MetricData, el?: Element, index?: number) => {\n onTooltip(item.display_name, d, el, index);\n },\n [item.display_name, onTooltip],\n );\n\n const handleClick = React.useCallback(\n (d: MetricData, index: number) => {\n onClick(item.display_name, d, index);\n },\n [onClick, item.display_name],\n );\n\n const dispatch = useDispatch();\n const handleNameClick = React.useCallback(() => {\n dispatch(setMetric(item.name));\n }, [item.name]);\n\n const handleHide = React.useCallback(() => {\n dispatch(toggleOdinOverviewMetricVisibility(item.name));\n }, [item.name]);\n\n return (\n <React.Fragment>\n <div className={block('graph-cell')}>\n {hidden ? (\n <div className={block('hidden-graph')}>hidden</div>\n ) : (\n <OverviewRowData\n {...data}\n name={item.name}\n handle={{\n tooltip: handleTooltip,\n click: handleClick,\n }}\n />\n )}\n </div>\n <div className={block('name-cell')}>\n <Link\n url={`${absolute('./details')}?metric=${item.name}`}\n onClick={handleNameClick}\n routedPreserveLocation\n routed\n >\n {item.display_name}\n </Link>\n </div>\n <div className={block('actions-cell')}>\n <ClickableText\n color=\"secondary\"\n onClick={handleHide}\n title={'Click to ' + (hidden ? 'display' : 'hide')}\n >\n <Icon awesome={hidden ? 'eye-slash' : 'eye'} />\n </ClickableText>\n </div>\n </React.Fragment>\n );\n}\n\nconst OverviewRow = React.memo(OverviewRowImpl);\n\ninterface OverviewRowDataProps extends OdinOverviewStateDataItem {\n name: string;\n handle: EventHandlers;\n}\n\nfunction OverviewRowData(props: OverviewRowDataProps) {\n const {error, metricData, name, handle} = props;\n\n return (\n <div className={block('row-data')}>\n {error ? (\n <OverviewRowError name={name} error={error} />\n ) : (\n <OverviewRowDataGraph items={metricData} handle={handle} />\n )}\n </div>\n );\n}\n\nfunction OverviewRowError({error, name}: {error: any; name: string}) {\n const dispatch = useDispatch();\n const handleClick = React.useCallback(() => {\n dispatch(reloadOdinOverviewMetricData(name));\n }, [name]);\n return (\n <div className={'error'}>\n <ClickableText onClick={handleClick}>Reload. </ClickableText>\n {String(error)}\n </div>\n );\n}\n\nfunction OverviewRowDataGraph({items, handle}: {items?: Array<MetricData>; handle: EventHandlers}) {\n const ref = React.createRef<HTMLDivElement>();\n useDataRenderer(ref, items, handle);\n return <div className={block('graph')} ref={ref} />;\n}\n\nfunction useDataRenderer(\n ref: React.RefObject<HTMLDivElement>,\n items: Array<MetricData> | undefined,\n handle: EventHandlers,\n) {\n React.useEffect(() => {\n if (ref.current && items) {\n renderData(ref.current, items, handle);\n }\n }, [ref, items]);\n}\n\ninterface EventHandlers {\n click: (d: MetricData, index: number) => void;\n tooltip: (d?: MetricData, el?: Element, index?: number) => void;\n}\n\nfunction renderData(div: HTMLDivElement, items: Array<MetricData>, handle: EventHandlers) {\n const selDiv = d3.select(div);\n selDiv.selectAll('svg').data([null]).enter().append('svg').attr('class', block('svg'));\n\n const svg = selDiv.select<SVGElement>('svg');\n const {width, height} = svg.node()!.getBoundingClientRect();\n const itemW = ODIN_CELL_SIZE;\n const offsetX = width - itemW * items.length;\n\n const rects = svg.selectAll<SVGRectElement, MetricData>('rect').data(items);\n rects.exit().remove();\n const added = rects.enter().append('rect');\n const selection = rects\n .merge(added)\n .attr('width', itemW - 1)\n .attr('height', height - 1)\n .attr('x', (__, index: number) => {\n return offsetX + itemW * index;\n })\n .attr('class', (d: MetricData) => {\n return block('rect', {state: d.state});\n });\n\n selection\n .on('click', function (_event: unknown, d: MetricData) {\n const index = selection.nodes().indexOf(this);\n handle.click(d, index);\n })\n .on('mouseenter', function (_event: unknown, d: MetricData) {\n const index = selection.nodes().indexOf(this);\n handle.tooltip(d, this, index);\n })\n .on('mouseout', () => {\n handle.tooltip();\n });\n}\n","import React, {useCallback, useEffect, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport {Checkbox} from '@gravity-ui/uikit';\nimport Select from '../../../components/Select/Select';\nimport {Datepicker} from '../../../components/common/Datepicker';\n\nimport block from 'bem-cn-lite';\n\nimport map_ from 'lodash/map';\nimport findIndex_ from 'lodash/findIndex';\n\nimport {getDate, getMetric, getOdinCluster, getStat, getUseCurrentDate} from '../_selectors';\nimport {setDate, setMetric, toggleUseCurrentDate} from '../_actions';\nimport Utils from '../odin-utils';\nimport hammer from '../../../common/hammer';\n\nconst odinCN = block('odin');\n\nconst tbBlock = block('elements-toolbar');\n\nfunction useLoadMetricsList() {\n const [metrics, setMetrics] = useState([]);\n const cluster = useSelector(getOdinCluster);\n\n useEffect(() => {\n Utils.listMetrics(cluster).then((metrics) => {\n setMetrics(\n map_(metrics, ({name, display_name: text}) => ({\n value: name,\n text,\n })),\n );\n });\n }, []);\n\n return metrics;\n}\n\nfunction MetricSelector() {\n const metric = useSelector(getMetric);\n const dispatch = useDispatch();\n const metrics = useLoadMetricsList();\n const handleChange = useCallback((value) => {\n dispatch(setMetric(value));\n }, []);\n\n if (metrics.length > 0 && findIndex_(metrics, ({value}) => value === metric) === -1) {\n dispatch(setMetric(metrics[0].value));\n }\n\n return (\n <Select\n value={[metric]}\n label=\"Check:\"\n items={metrics}\n onUpdate={(vals) => handleChange(vals[0])}\n showSearch={true}\n width=\"max\"\n />\n );\n}\n\nfunction UseCurrentDate() {\n const useCurrentDate = useSelector(getUseCurrentDate);\n const dispatch = useDispatch();\n const handleChange = useCallback(() => {\n dispatch(toggleUseCurrentDate());\n }, []);\n\n return (\n <Checkbox\n size=\"l\"\n content=\"Current date\"\n checked={useCurrentDate}\n onChange={handleChange}\n />\n );\n}\n\nfunction CustomDate() {\n const date = useSelector(getDate);\n const dispatch = useDispatch();\n const handleChange = useCallback(({from}) => {\n dispatch(setDate(from));\n }, []);\n\n return (\n <Datepicker\n range={false}\n from={date}\n to={date}\n scale=\"day\"\n hasClear={false}\n controlWidth={180}\n onUpdate={handleChange}\n />\n );\n}\n\nfunction Toolbar({className}) {\n const stat = useSelector(getStat);\n return (\n <div className={className}>\n <div className={odinCN('toolbar-metric-filter', tbBlock('component'))}>\n <MetricSelector />\n </div>\n <div className={odinCN('toolbar-date-filter', tbBlock('component'))}>\n <CustomDate />\n </div>\n <div className={odinCN('toolbar-current-date', tbBlock('component'))}>\n <UseCurrentDate />\n </div>\n <div className={odinCN('toolbar-availability-message', tbBlock('component'))}>\n <div className=\"elements-message elements-message_theme_info\">\n <p className=\"elements-message__paragraph\">\n We were available from <em>{hammer.format.Percent(stat.from * 100)}</em> to{' '}\n <em>{hammer.format.Percent(stat.to * 100)}</em> of time.\n </p>\n </div>\n </div>\n </div>\n );\n}\n\nexport default Toolbar;\n","import React, {useEffect, useRef, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport * as d3 from 'd3';\n\nimport {COLS_NUMBER, ROWS_NUMBER} from '../odin-constants';\nimport hammer from '../../../common/hammer';\n\nconst size = 19;\nconst pad = 4;\nconst margin = {top: 20, bottom: 20, left: 20, right: 20};\n\nconst width = COLS_NUMBER * size;\nconst height = ROWS_NUMBER * size;\n\nconst isAvailable = function (d) {\n return d.state === 'available';\n};\n\nconst isPartiallyAvailable = function (d) {\n return d.state === 'partially_available';\n};\n\nconst isUnavailable = function (d) {\n return d.state === 'unavailable' || d.state === 'timed_out' || d.state === 'unknown';\n};\n\nconst computeX = function (d, i) {\n return size * (i % COLS_NUMBER);\n};\nconst computeY = function (d, i) {\n return size * Math.floor(i / COLS_NUMBER);\n};\nconst getHours = function (d, i) {\n return Math.floor(i / COLS_NUMBER);\n};\nconst getMinutes = function (d, i) {\n return i % COLS_NUMBER;\n};\n\nfunction init(element) {\n const canvas = d3\n .select(element)\n .append('svg')\n .attr('width', width + margin.left + margin.right)\n .attr('height', height + margin.top + margin.bottom)\n .append('g')\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\n\n const rowLabels = canvas\n .selectAll('text.availability-row-label')\n .data(d3.range(0, ROWS_NUMBER))\n .enter()\n .append('text')\n .attr('class', 'availability-row-label')\n .attr('text-anchor', 'end')\n .attr('x', -pad)\n .attr('y', (d) => {\n return size * (1 + d) - pad;\n })\n .text((d) => {\n return d.toString();\n });\n\n const colLabels = canvas\n .selectAll('text.availability-col-label')\n .data(d3.range(0, COLS_NUMBER))\n .enter()\n .append('text')\n .attr('class', 'availability-col-label')\n .attr('text-anchor', 'middle')\n .attr('x', (d) => {\n return size * (0.5 + d);\n })\n .attr('y', -pad)\n .text((d) => {\n return d.toString();\n });\n\n const tooltip = d3\n .select(element)\n .append('div')\n .attr('class', 'd3-tooltip')\n .style('position', 'absolute')\n .style('z-index', '10')\n .style('opacity', 0);\n\n const items = canvas\n .selectAll('rect.availability')\n .data(d3.range(0, COLS_NUMBER * ROWS_NUMBER));\n\n items\n .enter()\n .append('rect')\n .classed('availability', true)\n .attr('width', size)\n .attr('height', size)\n .attr('x', computeX)\n .attr('y', computeY);\n\n return {\n canvas,\n rowLabels,\n colLabels,\n tooltip,\n };\n}\n\nfunction update(domData, data, showInfo) {\n const {canvas, rowLabels, colLabels, tooltip} = domData;\n\n const items = canvas.selectAll('rect.availability').data(data);\n items\n .classed('availability-high', isAvailable)\n .classed('availability-medium', isPartiallyAvailable)\n .classed('availability-low', isUnavailable)\n .on('click', function (e, d) {\n if (typeof showInfo === 'function') {\n const i = items.nodes().indexOf(this);\n showInfo(d, getHours(d, i), getMinutes(d, i));\n }\n })\n .on('mouseout', function () {\n tooltip.style('opacity', 0).style('pointer-events', 'none');\n })\n .on('mouseover', function (e, d) {\n const i = items.nodes().indexOf(this);\n items.classed('availability-mouseover', (p, j) => {\n return (\n Math.floor(i / COLS_NUMBER) === Math.floor(j / COLS_NUMBER) ||\n i % COLS_NUMBER === j % COLS_NUMBER\n );\n });\n\n rowLabels.classed('availability-mouseover', (p, j) => {\n return Math.floor(i / COLS_NUMBER) === j;\n });\n\n colLabels.classed('availability-mouseover', (p, j) => {\n return i % COLS_NUMBER === j;\n });\n\n const row = Math.floor(i / COLS_NUMBER);\n const col = i % COLS_NUMBER;\n const top = row * size + margin.top;\n const left = col * size + size / 2 + margin.left;\n tooltip\n .text(hammer.format.Readable(d.state, {caps: 'all'}))\n .style('opacity', 1)\n .style('pointer-events', 'all')\n .style('top', top + 'px')\n .style('left', left + 'px');\n });\n}\n\nfunction useInitMonitor(ref) {\n const [domData, setDomData] = useState(null);\n\n useEffect(() => {\n const domData = init(ref.current);\n setDomData(domData);\n }, []);\n\n return domData;\n}\n\nfunction useUpdateMonitor(domData, data, showInfo) {\n useEffect(() => {\n if (domData) {\n update(domData, data, showInfo);\n }\n }, [domData, data, showInfo]);\n}\n\nfunction AvailabilityMonitor({data, showInfo}) {\n const monitorRef = useRef();\n const domData = useInitMonitor(monitorRef);\n\n useUpdateMonitor(domData, data, showInfo);\n\n return <div className=\"odin__monitor\" ref={monitorRef} />;\n}\n\nAvailabilityMonitor.propTypes = {\n data: PropTypes.array.isRequired,\n showInfo: PropTypes.func,\n};\n\nexport default AvailabilityMonitor;\n","import React, {useCallback} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport LoadDataHandler from '../../../components/LoadDataHandler/LoadDataHandler';\nimport AvailabilityMonitor from './AvailabilityMonitor';\n\nimport {getExtendedInfo, getMetricAvailability} from '../_selectors';\nimport {setShowInfo} from '../_actions';\n\nconst block = cn('odin-monitor');\n\nfunction Monitor() {\n const dispatch = useDispatch();\n const availability = useSelector(getMetricAvailability);\n const extendedInfo = useSelector(getExtendedInfo);\n const props = useSelector((state) => {\n const {loading, loaded, error, errorData} = state.odin;\n return {loading, loaded, error, errorData};\n });\n\n const handleShowInfo = useCallback((_, hours, minutes) => {\n dispatch(setShowInfo(hours, minutes));\n }, []);\n\n return (\n <LoadDataHandler {...props}>\n <AvailabilityMonitor data={availability} showInfo={handleShowInfo} />\n {extendedInfo && (\n <div className={block('item-info')}>\n <ul className=\"elements-heading_size_s elements-list_inline_yes elements-list_type_unstyled\">\n <li>\n Date: <span>{extendedInfo.date}</span>\n </li>\n <li>\n State: <span>{extendedInfo.state}</span>\n </li>\n </ul>\n <pre className=\"elements-code elements-code_theme_default\">\n {extendedInfo.message}\n </pre>\n </div>\n )}\n </LoadDataHandler>\n );\n}\n\nexport default Monitor;\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport find_ from 'lodash/find';\n\nimport PageHead from '../../components/PageHead/PageHead';\nimport {HeaderWithLinks} from '../../containers/ClustersMenu/HeaderLinks';\nimport {ALL_LINKS_ITEMS} from '../../containers/ClustersMenu/header-links-items';\n\nimport './RootPage.scss';\nimport UIFactory from '../../UIFactory';\n\nconst block = cn('yt-root-page');\n\ninterface Props {\n title?: string;\n children?: React.ReactNode;\n currentPathname?: string;\n}\n\nfunction RootPage({title, children, currentPathname}: Props) {\n const pathname = currentPathname || window.location.pathname;\n const item = React.useMemo(() => {\n if (title) {\n return {text: title};\n }\n\n return find_(ALL_LINKS_ITEMS, ({href}) => href?.startsWith(pathname));\n }, [title]);\n\n return (\n <React.Fragment>\n <PageHead title={item?.text || ''} />\n <HeaderWithLinks currentUrl={pathname} showTitle />\n <div className={block('content')}>\n <div className={'elements-main-section'}>{children}</div>\n </div>\n {UIFactory.renderAppFooter()}\n </React.Fragment>\n );\n}\n\nexport default React.memo(RootPage);\n","import React, {useEffect, useState} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect, useDispatch, useSelector} from 'react-redux';\nimport block from 'bem-cn-lite';\nimport {Redirect, Route, Switch, useRouteMatch} from 'react-router';\n\nimport Message from '../../../components/Message/Message';\nimport ErrorBoundary from '../../../components/ErrorBoundary/ErrorBoundary';\nimport ClusterSelectControl from '../../../components/Dialog/controls/ClusterSelectControl/ClusterSelectControl';\nimport {setRootPagesCluster} from '../../../store/actions/global';\nimport {getCluster} from '../../../store/selectors/global';\nimport Tabs from '../../../components/Tabs/Tabs';\nimport {ODIN_PAGE_ID, OdinTab} from '../odin-constants';\nimport {makeTabProps} from '../../../utils';\nimport OdinOverview from './OdinOverview';\nimport Toolbar from './OdinToolbar';\nimport Monitor from './OdinMonitor';\n\nimport Utils from '../odin-utils';\nimport {useUpdater} from '../../../hooks/use-updater';\nimport {loadMetricAvailability, setOdinCluster} from '../_actions';\nimport {\n ODIN_CLUSTER_NAMES_ITEMS,\n getDate,\n getMetric,\n getOdinCluster,\n getUseCurrentDate,\n} from '../_selectors';\nimport {GENERIC_ERROR_MESSAGE} from '../../../constants/index';\n\nimport {setOdinLastVisitedTab} from '../_actions/odin-overview';\nimport {getOdinLastVisitedTab} from '../_selectors/odin-overview';\nimport {CreateNotificationButton} from '../../system/System/SystemTopRowContent';\nimport YT from '../../../config/yt-config';\nimport RootPage from '../../../containers/RootPage/RootPage';\nimport WithStickyToolbar from '../../../components/WithStickyToolbar/WithStickyToolbar';\n\nimport './Odin.scss';\nimport {UI_TAB_SIZE} from '../../../constants/global';\n\nconst odinCN = block('odin');\n\nfunction useLoadMetricAvailability(cluster) {\n const dispatch = useDispatch();\n const date = useSelector(getDate);\n const useCurrentDate = useSelector(getUseCurrentDate);\n const metric = useSelector(getMetric);\n\n const updateFn = React.useCallback(() => {\n dispatch(loadMetricAvailability({cluster, metric, date}));\n }, [dispatch, cluster, date, metric]);\n\n useUpdater(updateFn, {timeout: 60 * 1000, onlyOnce: !useCurrentDate});\n}\n\nfunction OdinDetails({cluster}) {\n const dispatch = useDispatch();\n React.useEffect(() => {\n dispatch(setOdinLastVisitedTab(OdinTab.DETAILS));\n }, []);\n useLoadMetricAvailability(cluster);\n\n return (\n <WithStickyToolbar\n toolbar={<Toolbar className={odinCN('toolbar')} />}\n content={<Monitor />}\n />\n );\n}\n\nfunction useCheckOdinStatus(cluster) {\n const [status, setStatus] = useState('');\n\n useEffect(() => {\n if (cluster) {\n Utils.checkStatus(cluster)\n .then((status) => {\n setStatus(status ? 'available' : 'unavailable');\n })\n .catch(() => {\n setStatus('error');\n });\n } else {\n setStatus('');\n }\n }, [cluster]);\n\n return status;\n}\n\nOdinTabs.propTypes = {\n cluster: PropTypes.string,\n};\n\nfunction OdinTabs({cluster}) {\n const match = useRouteMatch();\n const lastVisitedTab = useSelector(getOdinLastVisitedTab);\n\n const props = makeTabProps(match.url, OdinTab);\n\n return (\n <React.Fragment>\n <Tabs\n className={odinCN('tabs')}\n {...props}\n routed\n routedPreserveLocation\n size={UI_TAB_SIZE}\n />\n <Switch>\n <Route path={`${match.path}/details`}>\n <OdinDetails cluster={cluster} />\n </Route>\n <Route path={`${match.path}/overview`}>\n <OdinOverview cluster={cluster} />\n </Route>\n <Redirect from={match.path} to={`${match.path}/${lastVisitedTab}`} />\n </Switch>\n </React.Fragment>\n );\n}\n\nOdin.propTypes = {\n cluster: PropTypes.string,\n clusters: PropTypes.array,\n};\n\nfunction Odin({cluster, clusters}) {\n const status = useCheckOdinStatus(cluster);\n const dispatch = useDispatch();\n\n React.useLayoutEffect(() => {\n setTimeout(() => dispatch(setRootPagesCluster(cluster)), 1);\n return () => {\n dispatch(setRootPagesCluster(''));\n };\n }, [dispatch, cluster]);\n\n return (\n <ErrorBoundary>\n <div className={odinCN(null, 'elements-main-section')}>\n {clusters && (\n <div className={odinCN('cluster-toolbar')}>\n <ClusterSelectControl\n className={odinCN('cluster-picker')}\n value={cluster}\n onChange={(newValue) => dispatch(setOdinCluster(newValue))}\n placeholder={'Enter cluster name'}\n clusters={clusters}\n width=\"max\"\n />\n {cluster && (\n <CreateNotificationButton clusterConfig={YT.clusters[cluster]} />\n )}\n </div>\n )}\n {cluster && status === 'available' && <OdinTabs cluster={cluster} />}\n {cluster && status === 'unavailable' && (\n <Message\n theme=\"warning\"\n content={['Odin is not supported on this cluster.', GENERIC_ERROR_MESSAGE]}\n />\n )}\n {cluster && status === 'error' && (\n <Message\n theme=\"error\"\n content={['Odin could not be reached.', GENERIC_ERROR_MESSAGE]}\n />\n )}\n </div>\n </ErrorBoundary>\n );\n}\n\nIndependentOdinImpl.propTypes = {\n name: PropTypes.string,\n cluster: PropTypes.string,\n clusters: PropTypes.array,\n};\n\nfunction IndependentOdinImpl({clusters, cluster, name}) {\n const title = name ? `Odin - ${name}` : 'Odin';\n\n return (\n <RootPage title={title} currentPathname={`/${ODIN_PAGE_ID}`}>\n <div className={odinCN('landing')}>\n <Odin showClusterControl cluster={cluster} clusters={clusters} />\n </div>\n </RootPage>\n );\n}\n\nconst mapIndependentOdinStateToProps = (state) => {\n const cluster = getOdinCluster(state);\n const {name} = window.YT.clusters[cluster] || {name: cluster};\n return {\n name,\n cluster,\n clusters: ODIN_CLUSTER_NAMES_ITEMS,\n };\n};\n\nexport const IndependentOdin = connect(mapIndependentOdinStateToProps)(IndependentOdinImpl);\n\nfunction OdinWrapper() {\n const cluster = useSelector(getCluster);\n const dispatch = useDispatch();\n\n useEffect(() => {\n dispatch(setOdinCluster(cluster));\n }, []);\n\n return <Odin cluster={cluster} />;\n}\n\nexport default OdinWrapper;\n","import React from 'react';\n\nimport {RowWithName} from '../../../containers/AppNavigation/TopRowContent/SectionName';\nimport {CreateClusterNotificationButton} from '../../system/System/SystemTopRowContent';\n\nimport {ODIN_PAGE_ID} from '../odin-constants';\n\nfunction OdinTopRowContent() {\n return (\n <RowWithName page={ODIN_PAGE_ID} name={'Odin'}>\n <CreateClusterNotificationButton />\n </RowWithName>\n );\n}\n\nexport default React.memo(OdinTopRowContent);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {RowWithName} from '../../../containers/AppNavigation/TopRowContent/SectionName';\nimport {Page} from '../../../constants';\nimport Button from '../../../components/Button/Button';\n\nimport {getCurrentClusterConfig} from '../../../store/selectors/global';\nimport {useSelector} from 'react-redux';\nimport {ClusterConfig} from '../../../../shared/yt-types';\nimport UIFactory from '../../../UIFactory';\n\nimport './SystemTopRowContent.scss';\n\nconst block = cn('system-top-row-content');\n\nfunction SystemTopRowContent() {\n return (\n <RowWithName className={block()} page={Page.SYSTEM}>\n <CreateClusterNotificationButton />\n </RowWithName>\n );\n}\n\nexport function CreateClusterNotificationButton() {\n const clusterConfig = useSelector(getCurrentClusterConfig);\n return <CreateNotificationButton clusterConfig={clusterConfig} />;\n}\n\nexport function CreateNotificationButton({clusterConfig}: {clusterConfig: ClusterConfig}) {\n const url = UIFactory.createNotificationUrl(clusterConfig);\n if (!url) {\n return null;\n }\n\n return (\n <div className={block('create-notification')}>\n <Button view=\"action\" title=\"Create notification\" href={url} target={'_blank'}>\n Create notification\n </Button>\n </div>\n );\n}\n\nexport default React.memo(SystemTopRowContent);\n","const SvgChevronRight = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...props}><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M5.47 13.03a.75.75 0 0 1 0-1.06L9.44 8 5.47 4.03a.75.75 0 0 1 1.06-1.06l4.5 4.5a.75.75 0 0 1 0 1.06l-4.5 4.5a.75.75 0 0 1-1.06 0\" clipRule=\"evenodd\" /></svg>;\nexport default SvgChevronRight;"],"names":["block","cn","ClusterSelectControl","_ref","className","excludeClusters","onChange","value","placeholder","disabled","_ref$filterPredicate","filterPredicate","width","clusters","React","map_","filter_","YT","_ref2","name","id","text","items","length","toSkip","Set","_ref3","has","handleChange","_jsx","children","Select","empty","onUpdate","getDefaultValue","isEmpty","prepareRoleListValue","roles","otherMembers","arguments","undefined","current","toAdd","toRemove","unrecognized","forEach_","item","isUnrecognized","isRequested","isApproved","isDepriving","push","currentArr","map","prepareItemOfCurrent","otherArr","title","data","frozen","newItems","concat","itemClassName","role","extraProps","_objectSpread","roleListValueToSubjectList","_toConsumableArray","manyListDataItemToSubjectList","manyListDataItem","removed","_ref4","type","extractChangedSubjects","added","filter","_ref5","_ref6","user","group","_ref7","_ref8","DialogError","props","Block","makeErrorFields","errors","compact_","error","index","extras","FORM_ERROR","makeFormSubmitError","validationErrors","_defineProperty","importYTDFDialog","Component","YTDFDialog","withLazyLoading","_asyncToGenerator","_regeneratorRuntime","_callee","_context","prev","next","t0","sent","YTDialog","abrupt","stop","_React$useState","_React$useState2","_slicedToArray","mounted","setMounted","visible","_callee2","_context2","RoleListControl","EditableList","_callee3","_context3","TabFieldVertical","_callee4","_context4","toaster","Toaster","LoadDataHandler","_Component","_inherits","_super","_createSuper","_classCallCheck","apply","_createClass","key","_this$props","this","loaded","errorData","add","theme","autoHiding","content","message","hammer","format","NO_VALUE","actions","label","onClick","showErrorPopup","_this$props2","_this$props2$alwaysSh","alwaysShowError","Error","Message","_ref$theme","_ref$showClose","showClose","dismissCallback","buttons","_jsxs","Button","size","view","Icon","button","callback","datepickerDefaultProps","other","Page","CHAOS_CELL_BUNDLES","RowWithName","page","showSplitter","urlParams","cluster","useSelector","getCluster","info","getPagesInfoMapById","url","makeRoutedURL","Link","routed","RowWithNameMemo","SectionName","useRouteMatch","params","b","linksVisibilityState","visibilityByHref","requestedHrefs","reducer","state","action","href","HeaderLinks","currentUrl","showTitle","_React$useReducer","_React$useReducer2","_React$useReducer2$","dispatch","_React$useMemo","partition_","getVisible","_React$useMemo2","rest","toRequest","collected","Promise","all","wrapApiPromiseByToaster","toasterName","skipSuccessToast","errorContent","then","resolve","getItemVisibilityOrFalse","useLinkItems","ALL_LINKS_ITEMS","_React$useMemo3","_React$useMemo4","Boolean","link","DropdownMenu","popupProps","switcher","awesome","HeaderImpl","HeaderWithLinks","Updater","timeout","dynamicOptions","_this","options","inProgress","lastCallTime","timerId","onVisibilityChange","document","hidden","freeze","unfreeze","Date","now","repeat","_this$options","_this$callback","window","clearTimeout","getSkipNextCall","call","setTimeout","finish","Math","max","addEventListener","removeEventListener","DEFAULT_UPDATER_TIMEOUT","useUpdater","fn","_ref$timeout","destructFn","onlyOnce","useAutoRefresh","getUseAutoRefresh","optionsRef","skipNextCall","updater","_updater","destroy","useUpdaterWithMemoizedParams","_len","args","Array","_key","useMemoizedIfEqual","_len2","_key2","ref","isEqual_","xmlns","fill","viewBox","fillRule","d","clipRule","Object","assign","height","ArrowToggle","direction","qa","style","I","ChevronDown","NAMESPACE","withNaming","n","e","m","i18n","addComponentKeysets","en","buttonDisabledClassName","getAriaDescriptionForModeButton","mode","availableModes","nextModeIndex","indexOf","days","months","quarters","years","constrainValue","minValue","maxValue","isBefore","calendarLayouts","CalendarView","calendarProps","modeButtonProps","nextButtonProps","previousButtonProps","startDate","year","endDate","focusedDate","focusWithinProps","useFocusWithin","onFocusWithin","onFocus","onBlurWithin","onBlur","join","modeIndex","isModeLast","isNextModeLast","modeDisabled","zoomOut","setFocused","previousFocused","previousDisabled","isPreviousPageInvalid","focusPreviousPage","nextFocused","nextDisabled","isNextPageInvalid","focusNextPage","useCalendarProps","focus","ChevronLeft","ChevronRight","CalendarGrid","prevState","setPrevState","isFocused","modeChanged","startDateChanged","isSame","animation","gridProps","onFocusWithinChange","readOnly","onKeyDown","preventDefault","focusNextCell","focusPreviousCell","focusNextRow","focusPreviousRow","shiftKey","focusSectionEnd","focusSectionStart","code","zoomIn","selectDate","useCalendarGridProps","Content","onAnimationEnd","Weekdays","CalendarGridCells","weekdays","weekDays","weekStart","startOf","i","date","getWeekDays","weekend","isWeekend","day","rowsInPeriod","columnsInRow","_endDate","currentDate","getDaysInPeriod","keys","rowIndex","slice","CalendarCell","unix","cellProps","buttonProps","formattedDate","isDisabled","isSelected","isRangeSelection","isSelectionStart","isSelectionEnd","isOutsideCurrentRange","isUnavailable","isCurrent","isCellFocused","_a","preventScroll","tabIndex","isCellDisabled","highlightedRange","start","end","isCellUnavailable","isSelectable","getDateLabel","setFocusedDate","onPointerEnter","newDate","endOf","highlightDate","useCalendarCellProps","selected","unavailable","createPlaceholderValue","placeholderValue","timeZone","set","mergeDateTime","time","hour","minute","second","useDefaultTimeZone","defaultTimeZone","lastValue","setLastValue","defaultModes","getStartDate","floor","getEndDate","_b","_c","modes","setValue","useControlledState","defaultValue","l","minMode","setMode","defaultMode","onUpdateMode","currentMode","includes","inputTimeZone","focusedValue","defaultFocusedValue","focusedDateInner","onFocusUpdate","focusCell","autoFocus","newValue","force","subtract","larger","nextMode","selectFocusedDate","isInvalid","isDateUnavailable","useCalendarState","HiddenInput","onReset","form","toStringValue","initialValue","formElement","setFormElement","resetValue","handleReset","node","useFormResetHandler","v","EDITABLE_SEGMENTS","month","dayPeriod","weekday","escapedCharacters","formatTokenMap","YY","YYYY","M","MM","MMM","sectionType","contentType","MMMM","D","DD","Do","dd","ddd","dddd","A","a","H","HH","h","hh","mm","s","ss","z","zzz","Z","ZZ","isFourDigitYearFormat","getSectionValue","section","Number","TYPE_MAPPING","getDurationUnitFromSectionType","getSectionPlaceholder","sectionConfig","currentTokenValue","splitFormatIntoSections","sections","expandedFormat","isSeparator","isInEscapeBoundary","char","match","addLiteralSection","addFormatSection","token","formatToken","config","console","getDateSectionConfigFromFormatToken","hasLeadingZeros","doesSectionHaveLeadingZeros","getSectionOptions","toLocaleUpperCase","amDayPeriod","pmDayPeriod","getEditableSections","validSegments","position","newSections","previousEditableSection","newSection","toEditableSection","isEditableSection","j","prevSection","nextEditableSection","textValue","isEditable","renderedValue","padStart","sectionLength","modified","isFourDigit","daysInMonth","isHour12","isPM","getSectionLimits","getCurrentEditableSectionIndex","selectedSections","currentIndex","parseDate","isAllSegmentsValid","allSegments","every","useDateFieldProps","inputRef","setInnerState","setSelectedSections","syncSelectionFromDOM","focusSectionInPosition","selectionStart","inputElement","selectedSectionIndexes","scrollLeft","firstSelectedSection","startIndex","lastSelectedSection","endIndex","selectionEnd","setSelectionRange","inputMode","activeSection","inputProps","hasClear","startContent","endContent","pin","controlRef","autoComplete","validationState","errorMessage","errorPlacement","clearAll","input","target","isAutofocus","focusPreviousSection","focusNextSection","decrementToMin","incrementToMax","altKey","incrementPage","decrementPage","clearSection","decrement","increment","onKeyUp","controlProps","onMouseUp","onBeforeInput","onInput","onPaste","pastedValue","clipboardData","getData","replace","digitsOnly","test","lettersOnly","setValueFromString","PAGE_STEP","useDateFieldState","setDate","handleUpdateDate","placeholderDate","setPlaceholderDate","usedFormat","setSections","previousFormat","setFormat","useFormatSections","seg","reduce","p","validSegmentsState","setValidSegments","displayValue","sectionsState","setState","editableSections","useSectionsState","selectedSectionIndex","findIndex","markValid","part","flushAllValidSections","flushValidSection","adjustSection","setSection","setSectionValue","createPlaceholder","enteredKeys","hasDate","hasTime","hasDateInner","hasTimeInner","nextSectionIndex","nextSection","newIndex","focusFirstSection","focusLastSection","sectionIndex","displayPortion","currentValue","shouldBePM","onInputNumber","numberValue","sectionValue","allowsZero","shouldSetValue","String","onInputString","stringValue","foundOptions","startsWith","foundValue","isInteger","str","useBaseDateFieldState","amount","val","min","addSegment","hours","wasPM","sectionAmount","setSegment","_sectionIndex","isDateStringWithTimeZone","parseDateFromString","DateField","isActive","setActive","isFocusWithin","TextInput","toISOString","MobileCalendar","formatNative","dateFieldState","localDate","getDateFormat","StubButton","icon","getButtonSizeForInput","mergeProps","result","left","right","charCodeAt","chain","fns","getDateTimeValue","useDatePickerState","getPlaceholderTime","setTimezone","getDateTime","isOpen","setOpen","selectedDateInner","setSelectedDate","selectedTimeInner","setSelectedTime","selectedDate","selectedTime","commitValue","timeFormat","some","dateValue","timeValue","setDateValue","shouldClose","setTimeValue","newTime","newIsOpen","datePickerStateFactory","DatePicker","anchorRef","groupProps","fieldProps","calendarButtonProps","timeInputProps","handleRef","useForkRef","calendarRef","calendarButtonRef","groupRef","focusInput","onlyTime","stopPropagation","open","onEscapeKeyDown","onOutsideClick","contains","focusTrap","useDatePickerProps","isMobile","useMobile","isOnlyTime","Popup","mobile","absolute","relative","base","_window","location","pathname","stack","split","parts","pop","names","ODIN","createNestedNS","NAMESPACES","GLOBAL","ODIN_VISIBLE_METRIC_PRESETS","ODIN_LAST_VISITED_TAB","YA_NAMESPACES","getMetric","odin","details","metric","getUseCurrentDate","useCurrentDate","getMetricAvailability","metricAvailability","getDate","getStat","createSelector","availability","Utils","computeStat","getExtendedInfo","minutes","COLS_NUMBER","moment","getOdinCluster","odinCluster","ODIN_CLUSTER_NAMES_ITEMS","sort","getSettingOdinOverviewVisiblePresets","makeGetSetting","getSetting","getOdinOverviewTimeFromFilter","overview","timeFromFilter","getOdinOverviewTimeFrom","timeFrom","getOdinOverviewTimeTo","timeTo","getOdinOverviewLoading","loading","getOdinOverviewData","getOdinOverviewDataCluster","dataCluster","getOdinOverviewShowCreatePresetDialog","showCreatePresetDialog","getOdinOverviewPresetToRemove","presetToRemove","getOdinOverviewVisiblePresets","res","getOdinOverviewDefaultPreset","presets","find","isDefault","getOdinOverviewHiddenMetrics","hiddenMetrics","useDefaultPreset","defaultPreset","hiddenMetricNames","acc","getOdinOverviewClusterMetrics","clusterMetrics","sorted","sortBy_","_partition_","_partition_2","getOdinLastVisitedTab","OdinTab","OVERVIEW","getClusterHelper","gs","COUNT_OF_MINUTES","ODIN_OVERVIEW_TIME_RANGE","cancelMetrics","cancel","setOdinOverviewFromTimeFilter","ODIN_OVERVIEW_PARTIAL","fetchMetricData","from","to","getState","c","metricData","prepareAvailabilityData","isRequestCanceled","reloadOdinOverviewMetricData","metricName","odinOverviewSetAllMetricsVisible","oldHhiddenMetrics","toReload","__","forEach","ODIN_OVERVIEW_HIDDEN_METRICS","odinOverviewShowCreatePresetDialog","odinOverviewSetPresetToRemove","odinOverviewRemovePreset","reloadSetting","setSetting","_error$response2","response","odinOverviewToggleDefaultPreset","_error$response3","setOdinLastVisitedTab","tab","requests","CancelHelper","setMetric","SET_METRIC","loadMetricAvailability","GET_METRIC_DATA","REQUEST","removeAllRequests","getMetricOfThisDay","saveCancelToken","ROWS_NUMBER","SUCCESS","CANCELLED","FAILURE","setOdinCluster","ODIN_DATA_FIELDS","OdinOverviewCreatePresetDialog","useDispatch","closeDialog","validateName","headerProps","onAdd","_form$getState$values","values","toHide","_","_error$response","odinOverviewAddPreset","onClose","initialValues","asDefault","fields","caption","required","validator","DATE_FORMAT","TIME_FORMAT","D_O_Y_FORMAT","OdinOverviewWithPreset","OdinOverviewPresets","OdinOverview","OdinOverviewPresetItem","preset","oldHiddenMetrics","odinOverviewSelectPreset","ClickableText","color","face","OdinOverviewRemoveConfirmationDialog","handleClose","handleAdd","pristineSubmittable","footerProps","textApply","updateFn","timeFilter","_item$cancel","oldCluster","ODIN_OVERVIEW_REQUEST","listMetrics","ODIN_OVERVIEW_SUCCESS","ODIN_OVERVIEW_CANCELLED","ODIN_OVERVIEW_FAILED","fetchOdinOverview","reloadOdinOverview","useOdinOverviewDataLoader","fromFilter","hiddenMap","tooltipData","setTooltip","_React$useState3","_React$useState4","dialogData","setDialogData","onTooltip","el","_el$getBoundingClient","getBoundingClientRect","offsetWidth","offsetHeight","metricDataIndex","anchor","formatByDates","ErrorBoundary","WithStickyToolbar","toolbar","UIKitIcon","chevronLeftSvg","dateTime","valueOf","nextFilter","chevronRightSvg","Loader","_Fragment","OverviewRow","OdinOverviewTooltip","OdinOverviewDetailsDialog","dateByIndex","placement","Readable","status","Dialog","Header","Divider","Body","OverviewRowImpl","handleTooltip","display_name","handleClick","handleNameClick","handleHide","OverviewRowData","handle","tooltip","click","routedPreserveLocation","OverviewRowError","OverviewRowDataGraph","div","selDiv","d3","selectAll","enter","append","attr","svg","select","_getBoundingClientRec","itemW","ODIN_CELL_SIZE","offsetX","rects","exit","remove","selection","merge","on","_event","nodes","renderData","useDataRenderer","odinCN","tbBlock","MetricSelector","metrics","_useState","useState","_useState2","setMetrics","useEffect","useLoadMetricsList","useCallback","findIndex_","vals","showSearch","UseCurrentDate","TOGGLE_USE_CURRENT_DATE","Checkbox","checked","CustomDate","SET_DATE","Datepicker","range","scale","controlWidth","stat","Percent","margin","isAvailable","isPartiallyAvailable","computeX","computeY","useUpdateMonitor","domData","showInfo","canvas","rowLabels","colLabels","classed","getHours","getMinutes","row","col","top","caps","update","setDomData","monitorRef","useRef","element","toString","extendedInfo","_state$odin","handleShowInfo","SET_HOURS_MINUTES","setShowInfo","AvailabilityMonitor","RootPage","currentPathname","find_","PageHead","UIFactory","renderAppFooter","OdinDetails","DETAILS","useLoadMetricAvailability","Toolbar","Monitor","OdinTabs","lastVisitedTab","makeTabProps","Tabs","UI_TAB_SIZE","Switch","Route","path","Redirect","Odin","setStatus","checkStatus","useCheckOdinStatus","setRootPagesCluster","CreateNotificationButton","clusterConfig","GENERIC_ERROR_MESSAGE","IndependentOdin","connect","ODIN_PAGE_ID","showClusterControl","OdinTopRowContent","CreateClusterNotificationButton","SystemTopRowContent","SYSTEM","getCurrentClusterConfig","createNotificationUrl"],"sourceRoot":""}
|