@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.
Files changed (108) hide show
  1. package/dist/public/build/assets-manifest.json +75 -75
  2. package/dist/public/build/css/{job.c7c99207.chunk.css → job.9757ff68.chunk.css} +2 -2
  3. package/dist/public/build/css/job.9757ff68.chunk.css.map +1 -0
  4. package/dist/public/build/css/main.0efa9da5.css +10 -0
  5. package/dist/public/build/css/main.0efa9da5.css.map +1 -0
  6. package/dist/public/build/css/navigation.c199c4f2.chunk.css +2 -0
  7. package/dist/public/build/css/navigation.c199c4f2.chunk.css.map +1 -0
  8. package/dist/public/build/js/{1260.534f3f75.chunk.js → 1260.a1e22005.chunk.js} +2 -2
  9. package/dist/public/build/js/{1260.534f3f75.chunk.js.map → 1260.a1e22005.chunk.js.map} +1 -1
  10. package/dist/public/build/js/{1879.23423388.chunk.js → 1879.3975650a.chunk.js} +3 -3
  11. package/dist/public/build/js/{1879.23423388.chunk.js.map → 1879.3975650a.chunk.js.map} +1 -1
  12. package/dist/public/build/js/{1983.666923be.chunk.js → 1983.64a2e22f.chunk.js} +2 -2
  13. package/dist/public/build/js/{1983.666923be.chunk.js.map → 1983.64a2e22f.chunk.js.map} +1 -1
  14. package/dist/public/build/js/{2447.b2877275.chunk.js → 2447.eb8fde89.chunk.js} +2 -2
  15. package/dist/public/build/js/{2447.b2877275.chunk.js.map → 2447.eb8fde89.chunk.js.map} +1 -1
  16. package/dist/public/build/js/3724.3e5848f0.chunk.js +2 -0
  17. package/dist/public/build/js/{3724.425d01ec.chunk.js.map → 3724.3e5848f0.chunk.js.map} +1 -1
  18. package/dist/public/build/js/6729.39d7cf60.chunk.js +2 -0
  19. package/dist/public/build/js/6729.39d7cf60.chunk.js.map +1 -0
  20. package/dist/public/build/js/{7959.95ebd185.chunk.js → 7959.faac2ff8.chunk.js} +2 -2
  21. package/dist/public/build/js/{7959.95ebd185.chunk.js.map → 7959.faac2ff8.chunk.js.map} +1 -1
  22. package/dist/public/build/js/{8390.83f4531a.chunk.js → 8390.c3d2de6a.chunk.js} +2 -2
  23. package/dist/public/build/js/{8390.83f4531a.chunk.js.map → 8390.c3d2de6a.chunk.js.map} +1 -1
  24. package/dist/public/build/js/{8460.2d4d237e.chunk.js → 8460.fc8e2238.chunk.js} +2 -2
  25. package/dist/public/build/js/{8460.2d4d237e.chunk.js.map → 8460.fc8e2238.chunk.js.map} +1 -1
  26. package/dist/public/build/js/{8778.e18e655b.chunk.js → 8778.f3ea089f.chunk.js} +2 -2
  27. package/dist/public/build/js/{8778.e18e655b.chunk.js.map → 8778.f3ea089f.chunk.js.map} +1 -1
  28. package/dist/public/build/js/{9558.a6ea64c9.chunk.js → 9558.6a4bf9a9.chunk.js} +2 -2
  29. package/dist/public/build/js/{9558.a6ea64c9.chunk.js.map → 9558.6a4bf9a9.chunk.js.map} +1 -1
  30. package/dist/public/build/js/9569.aac48f3b.chunk.js +2 -0
  31. package/dist/public/build/js/9569.aac48f3b.chunk.js.map +1 -0
  32. package/dist/public/build/js/{accounts.2ba221c2.chunk.js → accounts.aa7ed73f.chunk.js} +2 -2
  33. package/dist/public/build/js/accounts.aa7ed73f.chunk.js.map +1 -0
  34. package/dist/public/build/js/{acl.c948c339.chunk.js → acl.4cd54663.chunk.js} +2 -2
  35. package/dist/public/build/js/{acl.c948c339.chunk.js.map → acl.4cd54663.chunk.js.map} +1 -1
  36. package/dist/public/build/js/{app-navigation.b062662b.chunk.js → app-navigation.13c65573.chunk.js} +2 -2
  37. package/dist/public/build/js/app-navigation.13c65573.chunk.js.map +1 -0
  38. package/dist/public/build/js/chyt.0ee6bfa2.chunk.js +2 -0
  39. package/dist/public/build/js/chyt.0ee6bfa2.chunk.js.map +1 -0
  40. package/dist/public/build/js/cluster-page-wrapper.bdc8607f.chunk.js +2 -0
  41. package/dist/public/build/js/cluster-page-wrapper.bdc8607f.chunk.js.map +1 -0
  42. package/dist/public/build/js/{components.bbe331cb.chunk.js → components.b39828bc.chunk.js} +2 -2
  43. package/dist/public/build/js/components.b39828bc.chunk.js.map +1 -0
  44. package/dist/public/build/js/job.ea2ba82d.chunk.js +2 -0
  45. package/dist/public/build/js/job.ea2ba82d.chunk.js.map +1 -0
  46. package/dist/public/build/js/main.6375dbc6.js +3 -0
  47. package/dist/public/build/js/main.6375dbc6.js.map +1 -0
  48. package/dist/public/build/js/manage-tokens.e1e791fc.chunk.js +2 -0
  49. package/dist/public/build/js/manage-tokens.e1e791fc.chunk.js.map +1 -0
  50. package/dist/public/build/js/{navigation-flow.eeb01518.chunk.js → navigation-flow.6d67215a.chunk.js} +2 -2
  51. package/dist/public/build/js/{navigation-flow.eeb01518.chunk.js.map → navigation-flow.6d67215a.chunk.js.map} +1 -1
  52. package/dist/public/build/js/navigation.529208de.chunk.js +2 -0
  53. package/dist/public/build/js/navigation.529208de.chunk.js.map +1 -0
  54. package/dist/public/build/js/odin.c4c4ef6f.chunk.js +2 -0
  55. package/dist/public/build/js/odin.c4c4ef6f.chunk.js.map +1 -0
  56. package/dist/public/build/js/{path-viewer.b1b3328d.chunk.js → path-viewer.c091d9f4.chunk.js} +2 -2
  57. package/dist/public/build/js/{path-viewer.b1b3328d.chunk.js.map → path-viewer.c091d9f4.chunk.js.map} +1 -1
  58. package/dist/public/build/js/{query-navigation.9964bfcf.chunk.js → query-navigation.b1574290.chunk.js} +2 -2
  59. package/dist/public/build/js/{query-navigation.9964bfcf.chunk.js.map → query-navigation.b1574290.chunk.js.map} +1 -1
  60. package/dist/public/build/js/{query-results.733b1795.chunk.js → query-results.0a05cc41.chunk.js} +2 -2
  61. package/dist/public/build/js/{query-results.733b1795.chunk.js.map → query-results.0a05cc41.chunk.js.map} +1 -1
  62. package/dist/public/build/js/query-tracker.515069f6.chunk.js +2 -0
  63. package/dist/public/build/js/query-tracker.515069f6.chunk.js.map +1 -0
  64. package/dist/public/build/js/{runtime.481a6d3a.js → runtime.09217c31.js} +2 -2
  65. package/dist/public/build/js/{runtime.481a6d3a.js.map → runtime.09217c31.js.map} +1 -1
  66. package/dist/public/build/js/{scheduling.b70d4627.chunk.js → scheduling.6448eabd.chunk.js} +2 -2
  67. package/dist/public/build/js/{scheduling.b70d4627.chunk.js.map → scheduling.6448eabd.chunk.js.map} +1 -1
  68. package/dist/public/build/js/system.1114aa96.chunk.js +2 -0
  69. package/dist/public/build/js/system.1114aa96.chunk.js.map +1 -0
  70. package/dist/public/build/js/{yt-df-dialog.9ddda260.chunk.js → yt-df-dialog.4ad719bf.chunk.js} +2 -2
  71. package/dist/public/build/js/yt-df-dialog.4ad719bf.chunk.js.map +1 -0
  72. package/dist/public/build/manifest.json +70 -70
  73. package/dist/shared/constants/settings-types.d.ts +1 -0
  74. package/package.json +3 -2
  75. package/dist/public/build/css/job.c7c99207.chunk.css.map +0 -1
  76. package/dist/public/build/css/main.2d3cbfcd.css +0 -10
  77. package/dist/public/build/css/main.2d3cbfcd.css.map +0 -1
  78. package/dist/public/build/css/navigation.0a9042b3.chunk.css +0 -2
  79. package/dist/public/build/css/navigation.0a9042b3.chunk.css.map +0 -1
  80. package/dist/public/build/js/3724.425d01ec.chunk.js +0 -2
  81. package/dist/public/build/js/5177.b4cec253.chunk.js +0 -2
  82. package/dist/public/build/js/5177.b4cec253.chunk.js.map +0 -1
  83. package/dist/public/build/js/6729.da9aa02f.chunk.js +0 -2
  84. package/dist/public/build/js/6729.da9aa02f.chunk.js.map +0 -1
  85. package/dist/public/build/js/accounts.2ba221c2.chunk.js.map +0 -1
  86. package/dist/public/build/js/app-navigation.b062662b.chunk.js.map +0 -1
  87. package/dist/public/build/js/chyt.7f99f87d.chunk.js +0 -2
  88. package/dist/public/build/js/chyt.7f99f87d.chunk.js.map +0 -1
  89. package/dist/public/build/js/cluster-page-wrapper.894fbacc.chunk.js +0 -2
  90. package/dist/public/build/js/cluster-page-wrapper.894fbacc.chunk.js.map +0 -1
  91. package/dist/public/build/js/components.bbe331cb.chunk.js.map +0 -1
  92. package/dist/public/build/js/job.4fc50056.chunk.js +0 -2
  93. package/dist/public/build/js/job.4fc50056.chunk.js.map +0 -1
  94. package/dist/public/build/js/main.7981a440.js +0 -3
  95. package/dist/public/build/js/main.7981a440.js.map +0 -1
  96. package/dist/public/build/js/manage-tokens.286a4da9.chunk.js +0 -2
  97. package/dist/public/build/js/manage-tokens.286a4da9.chunk.js.map +0 -1
  98. package/dist/public/build/js/navigation.d891266d.chunk.js +0 -2
  99. package/dist/public/build/js/navigation.d891266d.chunk.js.map +0 -1
  100. package/dist/public/build/js/odin.df1cfe56.chunk.js +0 -2
  101. package/dist/public/build/js/odin.df1cfe56.chunk.js.map +0 -1
  102. package/dist/public/build/js/query-tracker.06cc4fdc.chunk.js +0 -2
  103. package/dist/public/build/js/query-tracker.06cc4fdc.chunk.js.map +0 -1
  104. package/dist/public/build/js/system.f759d3f0.chunk.js +0 -2
  105. package/dist/public/build/js/system.f759d3f0.chunk.js.map +0 -1
  106. package/dist/public/build/js/yt-df-dialog.9ddda260.chunk.js.map +0 -1
  107. /package/dist/public/build/js/{1879.23423388.chunk.js.LICENSE.txt → 1879.3975650a.chunk.js.LICENSE.txt} +0 -0
  108. /package/dist/public/build/js/{main.7981a440.js.LICENSE.txt → main.6375dbc6.js.LICENSE.txt} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js/accounts.aa7ed73f.chunk.js","mappings":"kQAQMA,GAAIC,EAAAA,EAAAA,GAAM,uBACVC,GAAYD,EAAAA,EAAAA,GAAM,oBAMXE,EAA2B,SAAAC,IAAAC,EAAAA,EAAAA,GAAAF,EAAAC,GAAA,IAAAE,GAAAC,EAAAA,EAAAA,GAAAJ,GAAA,SAAAA,IAAA,IAAAK,GAAAC,EAAAA,EAAAA,GAAA,KAAAN,GAAA,QAAAO,EAAAC,UAAAC,OAAAC,EAAA,IAAAC,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAAF,EAAAE,GAAAJ,UAAAI,GAWlC,OAXkCP,EAAAF,EAAAU,KAAAC,MAAAX,EAAA,OAAAY,OAAAL,KAOpCM,OAAS,YAGLC,EAFmBZ,EAAKa,MAAjBD,WAEGZ,EAAKa,MAAMC,UACzB,EAACd,CAAC,CA4CD,OA5CAe,EAAAA,EAAAA,GAAApB,EAAA,EAAAqB,IAAA,SAAAC,MAED,WACI,IAAAC,EAUIC,KAAKN,MATLO,EAAIF,EAAJE,KACAC,EAAQH,EAARG,SACAC,EAAIJ,EAAJI,KACAC,EAAQL,EAARK,SACAC,EAASN,EAATM,UACAC,EAAgBP,EAAhBO,iBACAX,EAASI,EAATJ,UACAY,EAAeR,EAAfQ,gBACAC,EAAmBT,EAAnBS,oBAGJ,OACIC,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CAAAR,UACVS,EAAAA,EAAAA,MAAA,OAAKN,UAAWhC,EAAE,CAACuC,OAAQL,GAAkBF,GAAWH,SAAA,EACpDS,EAAAA,EAAAA,MAAA,OAAKN,UAAW9B,EAAU,CAAC4B,KAAAA,EAAMC,SAAU,OAAQE,GAAkBJ,SAAA,EACjES,EAAAA,EAAAA,MAAA,QACIN,UAAW9B,EACP,UACA,CACIsC,UAAW,OAEfxC,EAAE,UAENyC,QAASd,KAAKR,OAAOU,SAAA,CAEpBD,GACDQ,EAAAA,EAAAA,KAAA,KAAAP,UACIO,EAAAA,EAAAA,KAACM,EAAAA,EAAI,CACDV,UAAWhC,EAAE,UAAW,CAAC,gBAAiBmC,IAC1CQ,QAASrB,EAAY,aAAe,kBAI/CS,MAGHT,IAAac,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CAAAR,SAAEA,QAI/C,KAAC1B,CAAA,CAvDmC,CAASyC,EAAAA,WA0ElC,SAASC,EAAmBxB,GACvC,IAAOD,EAAYC,EAAZD,SACP0B,EAAkCC,EAAAA,SAAe1B,EAAMC,WAAU0B,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA1DxB,EAAS0B,EAAA,GAAEE,EAAYF,EAAA,GAExBG,EAAWJ,EAAAA,aACb,SAACtB,GACGyB,EAAazB,GACTL,GACAA,EAASK,EAEjB,GACA,CAACyB,EAAc9B,IAGnB,OAAOgB,EAAAA,EAAAA,KAACjC,GAA2BiD,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAK/B,GAAK,IAAED,SAAU+B,EAAU7B,UAAWA,IAClF,CAzFanB,EACFkD,aAAe,CAClBvB,KAAM,IACNR,WAAW,EACXY,gBAAiB,M,gKCTJoB,EAAmB,SAAAlD,IAAAC,EAAAA,EAAAA,GAAAiD,EAAAlD,GAAA,IAAAE,GAAAC,EAAAA,EAAAA,GAAA+C,GAYpC,SAAAA,EAAYjC,GAAQ,IAADb,EAGC,OAHDC,EAAAA,EAAAA,GAAA,KAAA6C,IACf9C,EAAAF,EAAAU,KAAA,KAAMK,IAEDkC,MAAQ,CAAC,EAAE/C,CACpB,CAUC,OAVAe,EAAAA,EAAAA,GAAA+B,EAAA,EAAA9B,IAAA,YAAAC,MAYD,SAAU+B,EAAMC,GAAqB,IAAdjC,EAAGb,UAAAC,OAAA,QAAA8C,IAAA/C,UAAA,GAAAA,UAAA,GAAG8C,EACzB/B,EACIC,KAAKN,MADFsC,EAAGjC,EAAHiC,IAAKC,EAAUlC,EAAVkC,WAAYC,EAASnC,EAATmC,UAAWC,EAAQpC,EAARoC,SAAUC,EAAarC,EAAbqC,cAAeC,EAAUtC,EAAVsC,WAAYC,EAAQvC,EAARuC,SAExEC,EAAiCvC,KAAK4B,MAA/BY,EAASD,EAATC,UAAWC,EAAWF,EAAXE,YAEZC,EAAWN,IAAkBN,EAC7Ba,EAAmC,mBAAfN,EAA4BA,EAAWR,GAAQhC,EAEzE,OACIY,EAAAA,EAAAA,KAACmC,EAAAA,EAAgB,CAEbJ,UAAWA,EACXC,YAAaA,EACbZ,KAAMA,EACNI,WAAYA,EACZD,IAAKA,EACLE,UAAWA,EACXQ,SAAUA,EACVZ,MAAOA,EACPK,SAAUA,EACVG,SAAUA,GAVLK,EAajB,GAAC,CAAA9C,IAAA,SAAAC,MAED,WACI,IAAM+C,GAAUvE,EAAAA,EAAAA,GAAMwE,EAAAA,GAANxE,CAAsB,UAC/ByE,EAAU/C,KAAKN,MAAfqD,OAEP,OAAOtC,EAAAA,EAAAA,KAAA,SAAOJ,UAAWwC,EAAQ3C,SAAEF,KAAKgD,UAAUD,EAAQ,IAC9D,IAAC,EAAAlD,IAAA,2BAAAC,MAxCD,SAAgCJ,GAC5B,IAAOuD,EAAWvD,EAAXuD,QACPC,GAAqBC,EAAAA,EAAAA,IAAmBF,GAExC,MAAO,CACHR,YAHQS,EAALE,MAIHZ,UAJaU,EAAHG,IAMlB,KAAC1B,CAAA,CA1BmC,CAASV,EAAAA,WAA5BU,EAOVD,aAAe,CAClBQ,UAAW,CAAC,EACZI,UAAU,G,eCTlB,iBAAgBrB,GAAe,IAADqC,EAC1B,OAAAA,EAAA,SAAAC,IAAA7E,EAAAA,EAAAA,GAAA8E,EAAAD,GAAA,IAAA5E,GAAAC,EAAAA,EAAAA,GAAA4E,GAAA,SAAAA,IAAA,OAAA1E,EAAAA,EAAAA,GAAA,KAAA0E,GAAA7E,EAAAW,MAAA,KAAAN,UAAA,CA6BK,OA7BLY,EAAAA,EAAAA,GAAA4D,EAAA,EAAA3D,IAAA,qBAAAC,MAOI,WACI,IAAM2D,GAAWnF,EAAAA,EAAAA,GAAM,yBAANA,CAAgC,CAC7CoF,OAAQ,WAELX,EAAU/C,KAAKN,MAAfqD,OAEP,OACItC,EAAAA,EAAAA,KAAA,OAAKJ,UAAWoD,EAASvD,UACrBO,EAAAA,EAAAA,KAAA,SAAOJ,WAAWsD,EAAAA,EAAAA,IAAsB3D,KAAKN,OAAOQ,UAChDO,EAAAA,EAAAA,KAACkB,GAAmBF,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAKzB,KAAKN,OAAK,IAAEqD,OAAQA,QAI7D,GAAC,CAAAlD,IAAA,SAAAC,MAED,WACI,OACIa,EAAAA,EAAAA,MAACS,EAAAA,SAAc,CAAAlB,SAAA,EACXO,EAAAA,EAAAA,KAACQ,GAASQ,EAAAA,EAAAA,GAAA,GAAKzB,KAAKN,QACnBM,KAAKN,MAAMqD,QAAU/C,KAAK4D,uBAGvC,KAACJ,CAAA,CA7BL,CAAsCpC,EAAAA,WAAekC,EAC1CO,YAAW,oBAAAtE,QAAuBuE,EAAAA,EAAAA,IAAe7C,GAAU,KAAAqC,EAE3D5B,aAAe,CAClBvB,KAAM,KACTmD,CA0BR,C,sNCkBKS,EAAqB,CACvBC,sBAAAA,EAAAA,GAQJ,SAL+BC,EAAAA,EAAAA,KAC3BC,EAAAA,EAAAA,KAToB,SAAHC,GACjB,MAAO,CAACC,UADoBD,EAANE,OAE1B,GAO6BN,IAlDN,SAAC9C,GAAe,IAADqD,EAClC,OAAAA,EAAA,SAAAf,IAAA7E,EAAAA,EAAAA,GAAA6F,EAAAhB,GAAA,IAAA5E,GAAAC,EAAAA,EAAAA,GAAA2F,GAAA,SAAAA,IAAA,OAAAzF,EAAAA,EAAAA,GAAA,KAAAyF,GAAA5F,EAAAW,MAAA,KAAAN,UAAA,CAoCK,OApCLY,EAAAA,EAAAA,GAAA2E,EAAA,EAAA1E,IAAA,mBAAAC,MAgBI,WACI,IAAO0E,EAAOxE,KAAKN,MAAZ8E,IACDf,GAAWnF,EAAAA,EAAAA,GAAM,yBAANA,CAAgC,CAACoF,OAAQ,QAE1D,OACIjD,EAAAA,EAAAA,KAAA,OAAKJ,UAAWoD,EAAUgB,MAAO,CAACD,IAAAA,GAAKtE,UACnCO,EAAAA,EAAAA,KAAA,SAAOJ,WAAWsD,EAAAA,EAAAA,IAAsB3D,KAAKN,OAAOQ,UAChDO,EAAAA,EAAAA,KAACiE,EAAAA,GAAmBjD,EAAAA,EAAAA,GAAA,GAAKzB,KAAKN,WAI9C,GAAC,CAAAG,IAAA,SAAAC,MAED,WACI,OACIa,EAAAA,EAAAA,MAACS,EAAAA,SAAc,CAAAlB,SAAA,CACVF,KAAK2E,oBACNlE,EAAAA,EAAAA,KAACQ,GAASQ,EAAAA,EAAAA,GAAA,GAAKzB,KAAKN,UAGhC,KAAC6E,CAAA,CApCL,CAAoCnD,EAAAA,WAAekD,EACxCT,YAAW,kBAAAtE,QAAqBuE,EAAAA,EAAAA,IAAe7C,GAAU,KAAAqD,EAMzD5C,aAAe,CAClBQ,UAAW,CAAC,EACZ/B,KAAM,IACNyE,MAAO,WACPC,QAAQ,EACRC,SAAS,EACTN,IAAKO,EAAAA,IACRT,CAwBT,G,+JCjCMhG,GAAQ0G,EAAAA,EAAAA,GAAG,uBAEIC,EAAU,SAAA1B,IAAA7E,EAAAA,EAAAA,GAAAuG,EAAA1B,GAAA,IAAA5E,GAAAC,EAAAA,EAAAA,GAAAqG,GAAA,SAAAA,IAAA,OAAAnG,EAAAA,EAAAA,GAAA,KAAAmG,GAAAtG,EAAAW,MAAA,KAAAN,UAAA,CAmG1B,OAnG0BY,EAAAA,EAAAA,GAAAqF,EAAA,EAAApF,IAAA,kBAAAC,MAkB3B,SAAgBG,EAAMiF,GAClB,IAAMC,EAAUD,EAAQC,QAElBC,EAAuC,kBAArBF,EAAQE,UAAyBF,EAAQE,SAEjErF,EAAwBC,KAAKN,MAAtBS,EAAIJ,EAAJI,KAAMkF,EAAOtF,EAAPsF,QACPC,EAAiB,CACnB,CACIC,KAAML,EAAQM,OACdC,MAAOP,EAAQQ,YACfP,QAASD,EAAQS,gBAIzB,OACIhF,EAAAA,EAAAA,MAAA,QAAMiF,MAAOP,EAAQnF,SAAA,EACjBO,EAAAA,EAAAA,KAACoF,EAAAA,EAAM,CACH1F,KAAMA,EACNW,QAASqE,EACTC,SAAUA,EACV/E,UAAW/B,EAAM,UAAW,CAAC2B,KAAAA,IAC7B2F,MACI,CACIE,MAAO,aACPC,SAAU,gBACVC,KAAM,YACNC,KAAM,aACRhG,GAENiG,IACI,CACIJ,MAAO,cACPC,SAAU,cACVC,KAAM,cACNC,KAAM,eACRhG,GACLC,UAEDO,EAAAA,EAAAA,KAACM,EAAAA,EAAI,CACDC,QACI,CACI8E,MAAO,oBACPC,SAAU,aACVC,KAAM,cACNC,KAAM,sBACRhG,YAIoB,IAA1BiF,EAAQS,gBACZlF,EAAAA,EAAAA,KAAC0F,EAAAA,EAAM,CAACC,SAAUd,MAIlC,GAAC,CAAAzF,IAAA,cAAAC,MACD,WACI,IAAAuG,EAAgDrG,KAAKN,MAA9C4G,EAASD,EAATC,UAAWC,EAAUF,EAAVE,WAAY/E,EAAQ6E,EAAR7E,SAAUrB,EAAIkG,EAAJlG,KAExC,OAAOmG,GACH7F,EAAAA,EAAAA,KAAC+F,EAAAA,EAAS,CACNC,GAAG,sBACHtG,KAAMA,EACNuG,KAAK,OACL5G,MAAOyG,EACPI,SAAUnF,EACV0E,IAAK,gBAET,IACR,GAAC,CAAArG,IAAA,SAAAC,MACD,WACI,IAAA8G,EAAiD5G,KAAKN,MAA/CoG,EAAKc,EAALd,MAAOC,EAAQa,EAARb,SAAUC,EAAIY,EAAJZ,KAAMC,EAAIW,EAAJX,KAAM5F,EAASuG,EAATvG,UAEpC,OACIM,EAAAA,EAAAA,MAAA,OAAKN,UAAW/B,EAAM,KAAM+B,GAAWH,SAAA,CAClCF,KAAK6G,gBAAgB,QAASf,GAC9B9F,KAAK6G,gBAAgB,WAAYd,GACjC/F,KAAK8G,cACL9G,KAAK6G,gBAAgB,OAAQb,GAC7BhG,KAAK6G,gBAAgB,OAAQZ,KAG1C,KAAChB,CAAA,CAnG0B,CAAS7D,EAAAA,WAAnB6D,EAaVvD,aAAe,CAClBvB,KAAM,IACNmG,WAAW,E,wECzBnB,SAASS,EAAiBrH,GACtB,IAAAsH,EAAqFtH,EAA9EI,MAAAA,OAAK,IAAAkH,EAAGC,IAAGD,EAAAE,EAAmExH,EAAjEyH,IAAAA,OAAG,IAAAD,EAAGD,IAAGC,EAAAE,EAAwD1H,EAAtD2H,IAAAA,OAAG,IAAAD,EAAGH,IAAGG,EAAE5F,EAA2C9B,EAA3C8B,SAAU4D,EAAiC1F,EAAjC0F,SAAQkC,EAAyB5H,EAAvB6H,KAAAA,OAAI,IAAAD,EAAG,EAACA,EAAEjH,EAAaX,EAAbW,UAElEmH,EAAYC,MAAM3H,IAAU2H,MAAMN,GAAO,EAAIrH,EAAQqH,EACrDO,EAAWD,MAAM3H,IAAU2H,MAAMJ,GAAO,EAAIA,EAAMvH,EAElD6H,EAAgBvG,EAAAA,aAAkB,WACpCI,EAAS2F,EACb,GAAG,CAACA,EAAK3F,IAEHoG,EAAexG,EAAAA,aAAkB,WACnC,IAAMyG,EAAW/H,EAAQyH,EACzB/F,EAASqG,EAAWV,EAAMA,EAAMU,EACpC,GAAG,CAACV,EAAKrH,EAAOyH,EAAM/F,IAEhBsG,EAAe1G,EAAAA,aAAkB,WACnC,IAAMyG,EAAW/H,EAAQyH,EACzB/F,EAASqG,EAAWR,EAAMA,EAAMQ,EACpC,GAAG,CAACR,EAAKvH,EAAOyH,EAAM/F,IAEhBuG,EAAe3G,EAAAA,aAAkB,WACnCI,EAAS6F,EACb,GAAG,CAACA,EAAK7F,IAET,OACIf,EAAAA,EAAAA,KAACwE,EAAAA,EAAU,CACP5E,UAAWA,EACXyF,MAAO,CACHX,QAASwC,EACTvC,SAAwB,IAAdoC,GAAmBpC,GAEjCW,SAAU,CACNZ,QAASyC,EACTxC,SAAwB,IAAdoC,GAAmBpC,GAEjCY,KAAM,CACFb,QAAS2C,EACT1C,SAAuB,IAAbsC,GAAkBtC,GAEhCa,KAAM,CACFd,QAAS4C,EACT3C,SAAuB,IAAbsC,GAAkBtC,IAI5C,CAEA,QAAehE,EAAAA,KAAW2F,E,oMCjD1B,SAASiB,EAAsBtI,GAC3B,IAAAuI,EAQIvI,EAPAwI,SAAAA,OAAQ,IAAAD,EAAG,IAAGA,EAAAE,EAOdzI,EANAiH,SAAAA,OAAQ,IAAAwB,EAAG,WAAO,EAACA,EACnBC,EAKA1I,EALA0I,OACAtI,EAIAJ,EAJAI,MACAuI,EAGA3I,EAHA2I,eACAC,EAEA5I,EAFA4I,UACGC,GAAIC,EAAAA,EAAAA,GACP9I,EAAK+I,GAETtH,EAA0BC,EAAAA,WAAoCC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAvDuH,EAAKrH,EAAA,GAAEsH,EAAQtH,EAAA,GAEhBuH,EAAkBxH,EAAAA,SAAc,WAClC,OAAOyH,IAAUlC,EAAiBuB,EACtC,GAAG,CAACA,EAAUvB,IAERmC,EAAe1H,EAAAA,aACjB,SAAC2H,GACGJ,EAASI,GACTH,EAAgBG,EACpB,GACA,CAACH,EAAiBD,IAGhBK,EAAgB5H,EAAAA,aAClB,SAAC6H,GACOX,GACAA,EAAUW,GAEA,UAAVA,EAAEpJ,KAAmBwI,GACrBA,EAAeY,EAEvB,GACA,CAACZ,EAAgBC,IAGfY,EAAa9H,EAAAA,aACf,SAAC6H,GACGN,OAAS5G,GAELqG,GACAA,EAAOa,EAEf,GACA,CAACN,EAAUP,IAGf,OACI3H,EAAAA,EAAAA,KAAC+F,EAAAA,GAAS/E,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CACNkF,SAAUmC,GACNP,GAAI,IACRzI,WAAiBiC,IAAV2G,EAAsB5I,EAAQ4I,EACrCN,OAAQc,EACRZ,UAAWU,IAGvB,CAEA,QAAe5H,EAAAA,KAAW4G,E,uGC5DpB3J,GAAI2G,EAAAA,EAAAA,GAAG,mBASE,SAASmE,EAAYzJ,GAChC,IAAOW,EAA4CX,EAA5CW,UAAW+I,EAAiC1J,EAAjC0J,aAAclJ,EAAmBR,EAAnBQ,SAAUmJ,EAAS3J,EAAT2J,MAC1C,OACI5I,EAAAA,EAAAA,KAAA,QAAMJ,UAAWhC,EAAE,KAAMgC,GAAWH,UAChCS,EAAAA,EAAAA,MAAC2I,EAAAA,EAAO,CAACjJ,UAAWhC,EAAE,WAAYkL,QAASH,EAAalJ,SAAA,EACpDO,EAAAA,EAAAA,KAACM,EAAAA,EAAI,CAACV,UAAWhC,EAAE,OAAQ,CAACgL,MAAAA,IAASrI,QAAQ,yBAC5Cd,IACGO,EAAAA,EAAAA,KAAC+I,EAAAA,EAAI,CAACC,QAAQ,UAAUJ,MAAOA,EAAMnJ,SAChCA,QAMzB,C,gFC3BiCwJ,EAAAA,C,8ICQ1B,SAASC,IACZ,IAAMC,GAAWC,EAAAA,EAAAA,MACjBzI,EAAAA,WAAgB,WACZwI,GAASE,EAAAA,EAAAA,MACb,GAAG,IAEH,IAAMC,GAAcC,EAAAA,EAAAA,IAAYC,EAAAA,IAYhC,MAAO,CAACC,YAVY9I,EAAAA,aAChB,SAAC2H,GACG,IAAMoB,EAAOC,IAAeL,EAAahB,GAAM,SAAClH,GAAI,OAAKA,EAAKwI,OAAO,EAAGtB,EAAK9J,OAAO,IAC9EqL,EAAKC,IAAmBR,EAAahB,GAAM,SAAClH,GAAI,OAAKA,EAAKwI,OAAO,EAAGtB,EAAK9J,OAAO,IAEtF,OADY8K,EAAYS,MAAML,EAAMG,EAExC,GACA,CAACP,IAGgBU,SAAUV,EACnC,CAEO,SAASW,IACZ,IAAMd,GAAWC,EAAAA,EAAAA,MAEjBzI,EAAAA,WAAgB,WACZwI,GAASe,EAAAA,EAAAA,MACb,GAAG,GACP,CAEO,SAASC,EAAYzG,GAA+C,IAA7CjE,EAAQiE,EAARjE,SAE1B,OADAwK,IACOxK,QAAAA,EAAY,IACvB,C,6UCrCe,SAAS2K,EAAiB1G,GAAU,IAAR2G,EAAI3G,EAAJ2G,KACvC,OAAOrK,EAAAA,EAAAA,KAACsK,EAAAA,EAAS,CAACD,KAAMA,EAAME,QAAQ,wCAC1C,C,oCCAA,SAASC,IACL,IAAMC,GAAUlB,EAAAA,EAAAA,IAAYmB,EAAAA,IACtBC,GAAUpB,EAAAA,EAAAA,IAAYqB,EAAAA,IACtBC,GAAyBtB,EAAAA,EAAAA,IAAYuB,EAAAA,IACrC3G,GAAQoF,EAAAA,EAAAA,IAAYwB,EAAAA,IAE1B,IAAKJ,EACD,OAAO3K,EAAAA,EAAAA,KAACoK,EAAiB,CAACC,KAAK,0CAGnC,IAAMW,EAA6BC,EAAAA,GAAUC,mCAE7C,OACIlL,EAAAA,EAAAA,KAAA,OAAKJ,UAAW,mBAAmBH,UAC/BO,EAAAA,EAAAA,KAACgL,EAA0B,CAAMP,QAAAA,EAASE,QAAAA,EAASE,uBAAAA,EAAwB1G,MAAAA,KAGvF,CAEA,QAAexD,EAAAA,KAAW6J,G,oCCC1B,SAAe/G,EAAAA,EAAAA,KANuB,SAACtC,GACnC,MAAO,CACHgK,eAAeP,EAAAA,EAAAA,IAAiBzJ,GAExC,GAEsD,CAClDiK,cAAAA,EAAAA,GACAC,UAAAA,EAAAA,IAFJ,EAfA,SAAwBpM,GACpB,IAAOkM,EAAiBlM,EAAjBkM,cACP,OAAKA,GAIEnL,EAAAA,EAAAA,KAACsL,EAAAA,GAAW,CAACC,KAAMJ,KAHfnL,EAAAA,EAAAA,KAACoK,EAAiB,CAACC,KAAK,wCAIvC,I,eCdA,SAASmB,EAAmBvM,GAGxB,IAAkBwM,EAAkBxM,EAA7ByM,UACDf,GAAUpB,EAAAA,EAAAA,IAAYqB,EAAAA,IACtBH,GAAUlB,EAAAA,EAAAA,IAAYmB,EAAAA,IAE5B,OAAKC,GAKD3K,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CAAAR,UACVO,EAAAA,EAAAA,KAACyL,EAAc,CAAMd,QAAAA,EAASF,QAAAA,OAL3BzK,EAAAA,EAAAA,KAACoK,EAAiB,CAACC,KAAM,uCAQxC,CAEA,QAAe1J,EAAAA,KAAW6K,G,0NCTpBG,GAAqD,CACvDC,sBAAuB,aACvBC,cAAe,cAGbC,GAAgB,UAEf,SAASC,GAA+BC,EAAgBC,GAC3D,IAAM9G,EAAQwG,GAA2BK,GACzC,GAAI7G,EACA,OAAOA,EAGX,IAAM+G,GACDD,GAAoBD,EAAOG,WAAWL,IACjCE,EAAOpC,OAAOkC,GAActN,QAC5BwN,EACV,OAAOI,EAAAA,EAAOC,SAASH,EAC3B,CAEO,IAAMI,GAA2B,SAACnL,GAAgB,OACrDA,EAAMoL,SAASC,MAAMC,UAAUC,mBAAoB,EAE1CC,GAAiC,SAACxL,GAAgB,OAC3DA,EAAMoL,SAASC,MAAMI,QAAQC,eAAgB,EACpCC,GAA0B,SAAC3L,GAAgB,OAAKA,EAAMoL,SAASC,MAAMI,QAAQG,QAAS,EACtFC,GAA2B,SAAC7L,GAAgB,OACrDA,EAAMoL,SAASC,MAAMI,QAAQjJ,SAAU,EAE9BsJ,GAA0B,SAAC9L,GAAgB,OAAKA,EAAMoL,SAASC,MAAMI,QAAQM,QAAS,EAEtFC,GAA4B,SAAChM,GAAgB,OACtDA,EAAMoL,SAASC,MAAMI,QAAQQ,UAAW,EAC/BC,GAA6B,SAAClM,GAAgB,OACvDA,EAAMoL,SAASC,MAAMI,QAAQU,WAAY,EAChCC,GAAiC,SAACpM,GAAgB,OAC3DA,EAAMoL,SAASC,MAAMI,QAAQY,SAAU,EAC9BC,GAAqC,SAACtM,GAAgB,OAC/DA,EAAMoL,SAASC,MAAMI,QAAQc,aAAc,EAClCC,GAAmC,SAACxM,GAAgB,OAC7DA,EAAMoL,SAASC,MAAMI,QAAQgB,gBAAiB,EACrCC,GAAiC,SAAC1M,GAAgB,OAC3DA,EAAMoL,SAASC,MAAMI,QAAQkB,cAAe,EAGnCC,GAAmC,SAAC5M,GAAgB,OAC7DA,EAAMoL,SAASC,MAAMwB,KAAKC,aAAc,EAC/BC,GAA6B,SAAC/M,GAAgB,OAAKA,EAAMoL,SAASC,MAAMwB,KAAKG,OAAQ,EACrFC,GAA4B,SAACjN,GAAgB,OAAKA,EAAMoL,SAASC,MAAMwB,KAAKK,MAAO,EACnFC,GAA2B,SAACnN,GAAgB,OAAKA,EAAMoL,SAASC,MAAMwB,KAAKO,KAAM,EACjFC,GAA2B,SAACrN,GAAgB,IAAAsN,EAAA,OACnB,QAAlCA,EAAAtN,EAAMoL,SAASC,MAAMwB,KAAKU,gBAAQ,IAAAD,OAAA,EAAlCA,EAAoC9L,QAAS,EAAG,EAGvCgM,GAA6B,SAACxN,GAAgB,IAAAyN,EAAA,OACrB,QAAlCA,EAAAzN,EAAMoL,SAASC,MAAMwB,KAAKU,gBAAQ,IAAAE,OAAA,EAAlCA,EAAoCC,UAAW,EAAG,EAIzCC,GAAmC,SAAC3N,GAAgB,OAC7DA,EAAMoL,SAASC,MAAMuC,KAAKd,aAAc,EAC/Be,GAA6B,SAAC7N,GAAgB,OAAKA,EAAMoL,SAASC,MAAMuC,KAAKZ,OAAQ,EACrFc,GAA4B,SAAC9N,GAAgB,OAAKA,EAAMoL,SAASC,MAAMuC,KAAKV,MAAO,EACnFa,GAA2B,SAAC/N,GAAgB,OAAKA,EAAMoL,SAASC,MAAMuC,KAAKR,KAAM,EACjFY,GAA2B,SAAChO,GAAgB,IAAAiO,EAAA,OACnB,QAAlCA,EAAAjO,EAAMoL,SAASC,MAAMuC,KAAKL,gBAAQ,IAAAU,OAAA,EAAlCA,EAAoCzM,QAAS,EAAG,EAGvC0M,GAA6B,SAAClO,GAAgB,IAAAmO,EAAA,OACrB,QAAlCA,EAAAnO,EAAMoL,SAASC,MAAMuC,KAAKL,gBAAQ,IAAAY,OAAA,EAAlCA,EAAoCT,UAAW,EAAG,EAGzCU,GAAmC,SAACpO,GAAgB,OAC7DA,EAAMoL,SAASC,MAAMuC,KAAKS,SAAU,EAE3BC,GAAuC,SAACtO,GAAgB,OACjEA,EAAMoL,SAASC,MAAMkD,SAASzB,aAAc,EACnC0B,GAAiC,SAACxO,GAAgB,OAC3DA,EAAMoL,SAASC,MAAMkD,SAASvB,OAAQ,EAC7ByB,GAAgC,SAACzO,GAAgB,OAC1DA,EAAMoL,SAASC,MAAMkD,SAASrB,MAAO,EAC5BwB,GAA+B,SAAC1O,GAAgB,OACzDA,EAAMoL,SAASC,MAAMkD,SAASnB,KAAM,EAC3BuB,GAA+B,SAAC3O,GAAgB,IAAA4O,EAAA,OACnB,QAAtCA,EAAA5O,EAAMoL,SAASC,MAAMkD,SAAShB,gBAAQ,IAAAqB,OAAA,EAAtCA,EAAwCpN,QAAS,EAAG,EAG3CqN,GAAiC,SAAC7O,GAAgB,IAAA8O,EAAA,OACrB,QAAtCA,EAAA9O,EAAMoL,SAASC,MAAMkD,SAAShB,gBAAQ,IAAAuB,OAAA,EAAtCA,EAAwCpB,UAAW,EAAG,EAI7CqB,GAAuC,SAAC/O,GAAgB,OACjEA,EAAMoL,SAASC,MAAM2D,SAASlC,aAAc,EACnCmC,GAAiC,SAACjP,GAAgB,OAC3DA,EAAMoL,SAASC,MAAM2D,SAAShC,OAAQ,EAC7BkC,GAAgC,SAAClP,GAAgB,OAC1DA,EAAMoL,SAASC,MAAM2D,SAAS9B,MAAO,EAC5BiC,GAA+B,SAACnP,GAAgB,OACzDA,EAAMoL,SAASC,MAAM2D,SAAS5B,KAAM,EAC3BgC,GAA+B,SAACpP,GAAgB,IAAAqP,EAAA,OACnB,QAAtCA,EAAArP,EAAMoL,SAASC,MAAM2D,SAASzB,gBAAQ,IAAA8B,OAAA,EAAtCA,EAAwC7N,QAAS,EAAG,EAG3C8N,GAAiC,SAACtP,GAAgB,IAAAuP,EAAA,OACrB,QAAtCA,EAAAvP,EAAMoL,SAASC,MAAM2D,SAASzB,gBAAQ,IAAAgC,OAAA,EAAtCA,EAAwC7B,UAAW,EAAG,EAM7C8B,IAA0BC,EAAAA,EAAAA,IAAe,CAAC3D,KAA0B,SAACC,GAC9E,OAAOA,aAAQ,EAARA,EAAU2D,SAAS,QAC9B,IAEaC,IAA2CF,EAAAA,EAAAA,IACpD,CACI3D,GACAsC,GAV4C,SAACpO,GAAgB,OACjEA,EAAMoL,SAASC,MAAM2D,SAASX,SAAU,IAYxC,SAACtC,EAAUH,EAAUgE,GACjB,IAAMxF,EAAoB,cAAb2B,EAA2B6D,EAAehE,EACvD,IAAKxB,EACD,MAAO,GAGX,IAAMyF,EAAmC,IAAIC,GAAAA,GAAMC,MAAM3F,EAAM,YAAYyF,WAAa,GAExF,OAAOG,IAAKH,GAAW,SAAC5P,EAAMC,GAC1B,MAAO,CACHhC,MAAO2R,EACFjH,MAAM,EAAG1I,EAAQ,GACjB+P,KAAI,SAAA1N,GAAM,OAAAA,EAAJlE,IAAc,IACpB6R,KAAK,KACVjQ,KAAMA,EAAK5B,KAEnB,GACJ,IAGS8R,IAA8CV,EAAAA,EAAAA,IACvD,CAACrD,GAAgCE,KACjC,SAAA8D,EAAa7D,GAA0D,IAArEhE,EAAI6H,EAAJ7H,KAAMG,EAAE0H,EAAF1H,GACE2H,EAAM,GAkBZ,OAhBa,OAAT9H,GACA8H,EAAIC,KAAK,CACLC,MAAOhE,EACPrO,MAAOsS,KAAKC,MAAM,IAAIC,KAAKnI,GAAMoI,UAAY,KAC7CC,WAAY,OAIT,OAAPlI,GACA2H,EAAIC,KAAK,CACLC,MAAOhE,EACPrO,MAAOsS,KAAKC,MAAM,IAAIC,KAAKhI,GAAIiI,UAAY,KAC3CC,WAAY,OAIbP,CACX,IAGSQ,IAA2BpB,EAAAA,EAAAA,IACpC,CACI3D,GAhHmC,SAAC9L,GAAgB,IAAA8Q,EAAA,OACtB,QAAlCA,EAAA9Q,EAAMoL,SAASC,MAAMwB,KAAKU,gBAAQ,IAAAuD,OAAA,EAAlCA,EAAoCC,YAAa,CAAE,EAaZ,SAAC/Q,GAAgB,IAAAgR,EAAA,OACtB,QAAlCA,EAAAhR,EAAMoL,SAASC,MAAMuC,KAAKL,gBAAQ,IAAAyD,OAAA,EAAlCA,EAAoCD,YAAa,CAAE,EAkBR,SAAC/Q,GAAgB,IAAAiR,EAAA,OACtB,QAAtCA,EAAAjR,EAAMoL,SAASC,MAAMkD,SAAShB,gBAAQ,IAAA0D,OAAA,EAAtCA,EAAwCF,YAAa,CAAE,IAmFvD,SAAChF,EAAUmF,EAAcC,EAAcC,GACnC,IAAIC,EAAWH,EAMf,MALiB,SAAbnF,EACAsF,EAAWF,EACS,cAAbpF,GAAyC,2BAAbA,IACnCsF,EAAWD,GAERC,EAAW,EAAIb,KAAKc,KAAKD,EAAWE,GAAAA,IAAa,CAC5D,IAGSC,IAA2B/B,EAAAA,EAAAA,IACpC,CA9IgC,SAACzP,GAAgB,OAAKA,EAAMoL,SAASC,MAAMI,QAAQgG,SAAU,IA+I7F,SAACA,GACG,OAAOjB,KAAK/K,IAAI,EAAGiM,OAAOD,GAC9B,IAGSE,IAAmClC,EAAAA,EAAAA,IAC5C,CAAC5D,KACD,SAACrJ,GACG,OAAOoP,IACHpP,GACA,SAACqP,EAAGC,EAAmB5R,GAAW,IAA3B2K,EAAMiH,EAANjH,OAAQkH,EAAKD,EAALC,MAOX,OANIlH,GAAUkH,IACVF,EAAIhH,GAAU,CACVkH,MAAAA,EACAC,eAAgBxP,EAAUnF,OAAS,EAAI6C,EAAQ,OAAIC,IAGpD0R,CACX,GACA,CAAC,EAET,IAGSI,IAAkCxC,EAAAA,EAAAA,IAC3C,CACI3D,GAhKiC,SAAC9L,GAAgB,IAAAkS,EAAA,OACpB,QAAlCA,EAAAlS,EAAMoL,SAASC,MAAMwB,KAAKU,gBAAQ,IAAA2E,OAAA,EAAlCA,EAAoCC,SAAU,EAAG,EAaZ,SAACnS,GAAgB,IAAAoS,EAAA,OACpB,QAAlCA,EAAApS,EAAMoL,SAASC,MAAMuC,KAAKL,gBAAQ,IAAA6E,OAAA,EAAlCA,EAAoCD,SAAU,EAAG,EAkBR,SAACnS,GAAgB,IAAAqS,EAAA,OACpB,QAAtCA,EAAArS,EAAMoL,SAASC,MAAMkD,SAAShB,gBAAQ,IAAA8E,OAAA,EAAtCA,EAAwCF,SAAU,EAAG,EAgBZ,SAACnS,GAAgB,IAAAsS,EAAA,OACpB,QAAtCA,EAAAtS,EAAMoL,SAASC,MAAM2D,SAASzB,gBAAQ,IAAA+E,OAAA,EAAtCA,EAAwCH,SAAU,EAAG,IAmHrD,SAACpG,EAAUwG,EAAYC,EAAYC,EAAgBC,GAC/C,OAAQ3G,GACJ,IAAK,OACL,IAAK,oBACD,OAAOwG,EACX,IAAK,YACL,IAAK,yBACD,OAAOE,EACX,IAAK,OACD,OAAOD,EACX,IAAK,YACD,OAAOE,EAEf,MAAO,EACX,IAGEC,GAAwD,CAC1D,QACA,aACA,iBACA,mBACA,oBACA,cACA,aACA,qBAEEC,GAAwD,CAC1D,QACA,aACA,iBACA,mBACA,oBACA,cACA,qBAEEC,GAA+D,CACjE,QACA,aACA,iBACA,mBACA,oBACA,cACA,aACA,qBAGJ,SAASC,GAA8CC,EAAcC,GACjE,OAAID,SAAAA,EAAI1V,OACG0V,EAGJC,CACX,CAEA,IAAMC,IAAgCxD,EAAAA,EAAAA,IAClC,CACI3D,GACAoH,GAAAA,GACAC,GAAAA,GACAC,GAAAA,KAEJ,SAACrH,EAAUsH,EAAaC,EAAaC,GACjC,OAAQxH,GACJ,IAAK,OACL,IAAK,YACD,OAAO+G,GAAcQ,EAAaV,IACtC,IAAK,oBACL,IAAK,yBACD,OAAOE,GAAcS,EAAoBV,IAC7C,QACI,OAAOC,GAAcO,EAAaV,IAE9C,IAGSa,IAAmC/D,EAAAA,EAAAA,IAC5C,CAACwC,KACD,SAAC5Q,GACG,OAAOoS,KAAQpS,GAAS,SAACpB,GAAI,OAAMyT,GAAiCC,IAAI1T,EAAK,GACjF,IAGSyT,GAAmC,IAAIE,IAAI,CACpD,OACA,OACA,QACA,UACA,eACA,uBAGSC,IAAoCpE,EAAAA,EAAAA,IAC7C,CAAC+D,GAAkCP,KACnC,SAACa,EAAmBC,GAChB,IAAM1S,EAAU,IAAIuS,IAAYE,GAEhC,MAAO,CAAC,OAAQ,QAAQnW,OACpB8V,KAAQM,GAAa,SAAC9T,GAClB,OAAOoB,EAAQsS,IAAI1T,EACvB,IAER,I,YChTJ,SAAS+T,GAA0BhU,GAC/B,IAAMuI,EAAOiE,GAAiCxM,GACxC0I,EAAKgE,GAA+B1M,GAC1C,OAAMuI,IAASG,GAAOH,IAASG,EACpB,KAGJ,CACHuL,MAAO,CAACC,UAAW3L,GAAQmI,KAAKyD,MAAQ,KACxCC,MAAO,CAACF,UAAWxL,GAAMgI,KAAKyD,MAAQ,KAE9C,CAEO,SAASE,KACZ,OAAO,SAACrM,EAAUsM,GACd,IAAMtU,EAAQsU,IAERC,EAAaP,GAA0BhU,GAE7C,GAAKuU,EAAL,CAIA,IAAMC,EAASC,GAAoBzU,GAC7B8M,GAA6CjN,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAC5C2U,GAAM,IACTD,WAAAA,IAQJ,OALAvM,EAAS,CACLlD,KAAM4P,EAAAA,GACNC,KAAM,CAAC7H,cAAAA,KAGJ8H,EAAAA,EACFC,QAAuC,CACpCC,OAAQ,OACRC,IAAKC,GAAmB,2BACxBL,KAAM7H,EACNmI,iBAAiB,IAEpBC,MAAK,SAAC3H,GACH,IAAMiH,EAASlG,GAAqCgG,KAC/Ca,IAASX,EAAQ1H,IAItB9E,EAAS,CACLlD,KAAMsQ,EAAAA,GACNT,KAAM,CAACpH,SAAUA,EAASoH,OAElC,IAAE,OACK,SAACvH,GAAgB,IAADiI,EACbb,EAASlG,GAAqCgG,KAC/Ca,IAASX,EAAQ1H,IAItB9E,EAAS,CACLlD,KAAMwQ,EAAAA,GACNX,KAAM,CAACvH,OAAOA,SAAe,QAAViI,EAALjI,EAAOG,gBAAQ,IAAA8H,OAAA,EAAfA,EAAiBV,OAAQvH,IAE/C,GAzCJ,CA0CJ,CACJ,CAIO,SAASmI,KACZ,OAAO,SAACvN,EAAUsM,GACd,IAAMtU,EAAQsU,IAERC,EAAaP,GAA0BhU,GAE7C,GAAKuU,EAAL,CAIA,IAAMC,EAASC,GAAoBzU,GAC7B8M,GAAwDjN,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACvD2U,GAAM,IACTD,WAAAA,EACAiB,YAAU3V,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACH2U,EAAOgB,YAAU,IACpBnH,UAAW1C,GAAwB3L,OAS3C,OALAgI,EAAS,CACLlD,KAAM2Q,EAAAA,GACNd,KAAM,CAAC7H,cAAAA,KAGJ8H,EAAAA,EACFC,QAA0B,CACvBC,OAAQ,OACRC,IAAKC,GAAmB,wCACxBL,KAAM7H,EACNmI,iBAAiB,IAEpBC,MAAK,SAAC3H,GACH,IAAMiH,EAASzF,GAAqCuF,KAC/Ca,IAASX,EAAQ1H,IAItB9E,EAAS,CACLlD,KAAM4Q,EAAAA,GACNf,KAAM,CACFpH,SAAUA,EAASoH,KACnBtG,UAAWvB,EAAc0I,WAAWnH,YAGhD,IAAE,OACK,SAACjB,GAAgB,IAADuI,EACbnB,EAASzF,GAAqCuF,KAC/Ca,IAASX,EAAQ1H,IAItB9E,EAAS,CACLlD,KAAM8Q,EAAAA,GACNjB,KAAM,CAACvH,OAAOA,SAAe,QAAVuI,EAALvI,EAAOG,gBAAQ,IAAAoI,OAAA,EAAfA,EAAiBhB,OAAQvH,IAE/C,GAhDJ,CAiDJ,CACJ,C,6DC7FO,SAAS4H,GAAmBa,GAC/B,OAAOC,EAAAA,GAAAA,MAA6BD,CACxC,CA4CO,SAASpB,GAAoBzU,GAChC,IAAMwJ,GAAUC,EAAAA,EAAAA,IAAiBzJ,GAC3BsJ,GAAUC,EAAAA,EAAAA,IAAWvJ,GACrB+V,EAAalK,GAAyB7L,GACtCgW,EAAchK,GAA0BhM,GACxCiW,EAAQ/J,GAA2BlM,GAEnCkW,EAAgB/F,GAA4CnQ,GAC5D+L,EAAWD,GAAwB9L,GAEnCwV,EAAuDW,OAAOC,OAChE,CACIC,kBAAgC,SAAbtK,GAAoC,cAAbA,GAE9CkK,EAAQ,CAACA,MAAAA,QAAS9V,EAClB6V,EAAc,CAACA,YAAAA,QAAe7V,EAC9B+V,SAAAA,EAAe7Y,OAAS,CAAC6Y,cAAAA,QAAiB/V,GAG9C,MAAO,CACHqJ,QAAAA,EACAF,QAAAA,EACAgN,WAAY1E,IACRmE,GACA,SAAClE,EAAGtP,GAAuB,IAApBsI,EAAMtI,EAANsI,OAAQkH,EAAKxP,EAALwP,MAIX,OAHIlH,GAAUkH,GACVF,EAAIvB,KAAK,CAACC,MAAO1F,EAAQ0L,KAAgB,SAAVxE,IAE5BF,CACX,GACA,IAEJ2D,WAAAA,EACAgB,KAAM,CACFtW,MAAOsR,GAAyBxR,GAChCzB,KAAMgT,GAAAA,IAGlB,CAEO,SAASkF,KACZ,OAAO,SAACzO,EAAUsM,GACd,IAAMtU,EAAQsU,IAERJ,EAAY1I,GAA+BxL,GAE3CwU,EAASC,GAAoBzU,GAC7B8M,GAAyCjN,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACxC2U,GAAM,IACTN,UAAWA,GAAaxD,KAAKyD,MAAQ,MAQzC,OALAnM,EAAS,CACLlD,KAAM4R,EAAAA,GACN/B,KAAM,CAAC7H,cAAAA,KAGJ8H,EAAAA,EACFC,QAAmC,CAChCC,OAAQ,OACRC,IAAKC,GAAmB,sBACxBL,KAAM7H,EACNmI,iBAAiB,IAEpBC,MAAK,SAAC3H,GACH,IAAMiH,EAAS5H,GAAiC0H,KAC3Ca,IAASX,EAAQ1H,IAItB9E,EAAS,CACLlD,KAAM6R,EAAAA,GACNhC,KAAM,CAACpH,SAAUA,EAASoH,OAElC,IAAE,OACK,SAACvH,GAAgB,IAADuI,EACbnB,EAAS5H,GAAiC0H,KAC3Ca,IAASX,EAAQ1H,IAItB9E,EAAS,CACLlD,KAAM8R,EAAAA,GACNjC,KAAM,CAACvH,OAAOA,SAAe,QAAVuI,EAALvI,EAAOG,gBAAQ,IAAAoI,OAAA,EAAfA,EAAiBhB,OAAQvH,IAE/C,GACR,CACJ,CAIO,SAASyJ,KACZ,OAAO,SAAC7O,EAAUsM,GACd,IAAMtU,EAAQsU,IAERJ,EAAY1I,GAA+BxL,GAE3CwU,EAASC,GAAoBzU,GAC7B8M,GAAoDjN,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACnD2U,GAAM,IACTN,UAAWA,GAAaxD,KAAKyD,MAAQ,IACrCqB,YAAU3V,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACH2U,EAAOgB,YAAU,IACpBnH,UAAW1C,GAAwB3L,OAS3C,OALAgI,EAAS,CACLlD,KAAMgS,EAAAA,GACNnC,KAAM,CAAC7H,cAAAA,KAGJ8H,EAAAA,EACFC,QAAmC,CAChCC,OAAQ,OACRC,IAAKC,GAAmB,mCACxBL,KAAM7H,EACNmI,iBAAiB,IAEpBC,MAAK,SAAC3H,GACH,IAAMiH,EAAS7G,GAAiC2G,KAC3Ca,IAASX,EAAQ1H,IAItB9E,EAAS,CACLlD,KAAMiS,EAAAA,GACNpC,KAAM,CACFpH,SAAUA,EAASoH,KACnBtG,UAAWvB,EAAc0I,WAAWnH,YAGhD,IAAE,OACK,SAACjB,GAAgB,IAAD4J,EACbxC,EAAS7G,GAAiC2G,KAC3Ca,IAASX,EAAQ1H,IAItB9E,EAAS,CACLlD,KAAMmS,EAAAA,GACNtC,KAAM,CAACvH,OAAOA,SAAe,QAAV4J,EAAL5J,EAAOG,gBAAQ,IAAAyJ,OAAA,EAAfA,EAAiBrC,OAAQvH,IAE/C,GACR,CACJ,CASO,SAAS8J,KACZ,OAAO,SAAClP,EAAUsM,GAEd,OADiBxI,GAAwBwI,MAErC,IAAK,OACD,OAAOtM,EAAS6O,MACpB,IAAK,OACL,IAAK,oBACD,OAAO7O,EAASyO,MACpB,IAAK,YACL,IAAK,yBACD,OAAOzO,EAASqM,MACpB,IAAK,YACD,OAAOrM,EAASuN,MAE5B,CACJ,CAuBO,SAAS4B,GACZxC,GAEA,OAAO,SAAC3M,EAAUsM,GACdtM,EAAS,CACLlD,KAAMsS,EAAAA,GACNzC,MAAI9U,EAAAA,EAAAA,GAAA,CAAG4R,UAAW,GAAMkD,KAG5B,IAAOpI,EAA0BoI,EAA1BpI,cAAkB5F,GAAIC,EAAAA,EAAAA,GAAI+N,EAAI9N,IACrC,GAAIwQ,IAAS1Q,IAAS4F,EAAe,CACjC,IAAA+K,EAAmBlL,GAA+BkI,KAA3C/L,EAAI+O,EAAJ/O,KAAMG,EAAE4O,EAAF5O,GACb,IAAKH,IAASG,EACV,MAER,CACAV,EAASkP,KACb,CACJ,CA6CO,IAAMK,GACT,SADmCnH,GAAA,IAE/B9G,EAAO8G,EAAP9G,QACAE,EAAO4G,EAAP5G,QACAY,EAAIgG,EAAJhG,KAAI,OAMR,SAACpC,GAAQ,OACLA,GACIwP,EAAAA,GAAAA,IAAU,CACNxT,MAAOoG,EACPqN,QAAS7C,EAAAA,EACJC,QAAQ,CACLC,OAAQ,OACRC,IAAKC,GAAmB,gCACxBL,KAAM,CACFrL,QAAAA,EACAE,QAAAA,EACAY,KAAAA,EACAsN,0BAA2B,WAE/BzC,iBAAiB,IAEpBC,MAAK,SAACP,GAAI,OAAKA,EAAKA,IAAI,MAEnC,CAAD,E,+FC7XHgD,GAAgCnY,EAAAA,KAAWoY,IAEjD,SAAepY,EAAAA,KAAWqY,IAE1B,SAASA,KACL,IAAAtY,EAA8BC,EAAAA,UAAe,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA5CuY,EAAOrY,EAAA,GAAEsY,EAAUtY,EAAA,GACpBuY,EAAmBxY,EAAAA,aAAkB,WACvCuY,GAAYD,EAChB,GAAG,CAACA,EAASC,IAEPE,EAAczY,EAAAA,aAAkB,WAClCuY,GAAW,EACf,GAAG,CAACA,IAEJ,OACIhZ,EAAAA,EAAAA,MAACS,EAAAA,SAAc,CAAAlB,SAAA,EACXO,EAAAA,EAAAA,KAACoF,GAAAA,EAAM,CAAC/E,QAAS8Y,EAAiB1Z,SAAC,aACnCO,EAAAA,EAAAA,KAAC8Y,GAA6B,CAACG,QAASA,EAASI,QAASD,MAGtE,CAOA,SAASL,GAAyBrV,GAAmC,IAAjCuV,EAAOvV,EAAPuV,QAASI,EAAO3V,EAAP2V,QACnClQ,GAAWC,EAAAA,EAAAA,MACXkQ,GAAiB/P,EAAAA,EAAAA,IAAYyL,IAC7BuE,GAAmBhQ,EAAAA,EAAAA,IAAYoL,IAE/BtM,EAAe1H,EAAAA,aAAkB,SAACyG,GACpC,ID8S+B5E,EC9SzBgX,EAAU5E,KAAQxN,EAAU,WAClC+B,GD6S+B3G,EC7SC2O,IAAKqI,GAAS,SAAAjI,GAAgB,OAAAA,EAAduE,KAAO2D,OAAqB,ID8SzE,SAACtQ,EAAUsM,GAEd,OADiBxI,GAAwBwI,MAErC,IAAK,OACL,IAAK,YACDtM,GAASuQ,EAAAA,GAAAA,IAAmClX,IAC5C,MACJ,IAAK,oBACL,IAAK,yBACD2G,GAASwQ,EAAAA,GAAAA,IAA0CnX,IACnD,MACJ,QACI2G,GAASyQ,EAAAA,GAAAA,IAAmCpX,IAExD,IC3TI6W,GACJ,GAAG,IAEGha,EAAQsB,EAAAA,SAAc,WACxB,IAAMkZ,EAAY,IAAI9E,IAAIwE,GACpBtX,EAAWqX,EAAeQ,QAAO,SAAC1Y,GAAI,OAAKyY,EAAU/E,IAAI1T,EAAY,IAErE2Y,EAAc,IAAIhF,IAAI9S,GACtB+X,EAAQT,EAAiBO,QAAO,SAAC1Y,GAAI,OAAM2Y,EAAYjF,IAAI1T,EAAK,IAEtE,OAAO+P,IAAKlP,EAASnD,OAAOkb,IAAQ,SAAC5Y,GACjC,MAAO,CACH5B,KAAMuM,GAA+B3K,GAAM,GAC3CoY,QAASO,EAAYjF,IAAI1T,GACzB0U,KAAM,CACF2D,QAASrY,EACT6Y,SAAU7Y,EAAK+K,WAAW,YAGtC,GACJ,GAAG,CAACoN,EAAkBD,IAEtB,OAAQL,GACJjZ,EAAAA,EAAAA,KAACka,GAAAA,EAAmB,CAChBC,WAAW,EACXC,SAAUf,EACVgB,UAAWhS,EACX1F,MAAOtD,EACPib,aAAc,SAAClZ,GACX,IACI5B,EAEA4B,EAFA5B,KAAI+a,EAEJnZ,EADA0U,KAAOmE,EAAQM,EAARN,SAAUR,EAAOc,EAAPd,QAErB,OAAQQ,GAGJ/Z,EAAAA,EAAAA,MAAA,QAAAT,SAAA,EACIO,EAAAA,EAAAA,KAACwa,GAAAA,GAAS,CAAA/a,SAAC,aACVsM,GAA+B0N,MAJpCja,CAOR,IAnBU,IAsBtB,C,mDC1FA,SAASib,GAAQ/W,GAA2B,IAAzBlE,EAAIkE,EAAJlE,KACf,IAAKA,EACD,OAAO,KAGX,GAAa,MAATA,EACA,OAAOQ,EAAAA,EAAAA,KAAA,QAAAP,SAAM,MAGjB,IAAMib,EAAWzJ,GAAAA,GAAMC,MAAMyJ,eAAenb,GAC5C,IACI,IAAMob,EAASC,GAAAA,EAAQC,OAAOJ,GAC9B,OAAO1a,EAAAA,EAAAA,KAAA,QAAM+a,wBAAyB,CAACH,OAAAA,IAC3C,CAAE,MAAAI,GACE,OAAOhb,EAAAA,EAAAA,KAAA,QAAAP,SAAOib,GAClB,CACJ,CAEO,IAAMO,GAAeta,EAAAA,KAAW8Z,IAuBvC,SArBA,SAAiBlJ,GAWb,IAXsF,IAAvEhG,EAAIgG,EAAJhG,KAAM2P,EAAgB3J,EAAhB2J,iBACfvY,EAAQhC,EAAAA,SAAc,WACxB,IAAK4K,EACD,MAAO,GAGX,IAAOyF,EAAa,IAAIC,GAAAA,GAAMC,MAAM3F,EAAM,YAAnCyF,UACP,OAAQkK,EAA+BlK,EAAUjH,OAAO,GAA7BiH,CAC/B,GAAG,CAACzF,EAAM2P,IAEJ1J,EAA8B,GAC3B2J,EAAI,EAAGA,EAAIxY,EAAMnE,SAAU2c,EAAG,CACnC,IAAO3b,EAAQmD,EAAMwY,GAAd3b,KACPgS,EAAIC,MAAKzR,EAAAA,EAAAA,KAACib,GAAY,CAASzb,KAAMA,GAAT2b,IACxBA,EAAIxY,EAAMnE,OAAS,GACnBgT,EAAIC,MAAKzR,EAAAA,EAAAA,KAAA,QAAAP,SAAyB,KAAd,SAAW0b,GAEvC,CACA,OAAOnb,EAAAA,EAAAA,KAAAob,EAAAA,SAAA,CAAA3b,SAAG+R,GACd,E,wCCOM3T,IAAQ0G,EAAAA,EAAAA,GAAG,yBAEjB,SAAS8W,KACL,IAAMlS,GAAWC,EAAAA,EAAAA,MACXqB,GAAUlB,EAAAA,EAAAA,IAAYmB,EAAAA,IAEtB4Q,EAAW3a,EAAAA,aAAkB,WAC/BwI,EH0BD,SAAqCsB,GACxC,OAAO,SAACtB,GAGJ,OAFAA,EAAS,CAAClD,KAAMsV,EAAAA,KAETxF,EAAAA,EACFC,QAEE,CACCC,OAAQ,OACRC,IAAKC,GAAmB,mBACxBL,KAAM,CAACrL,QAAAA,GACP2L,iBAAiB,IAEpBC,MAAK,SAACP,GACH3M,EAAS,CACLlD,KAAMuV,EAAAA,GACN1F,MAAI9U,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAM8U,EAAKA,MAAI,IAAErL,QAAAA,KAE7B,IAAE,OACK,SAAC8D,GAAgB,IAADiI,EACnBrN,EAAS,CACLlD,KAAMwV,EAAAA,GACN3F,KAAM,CAACvH,OAAOA,SAAe,QAAViI,EAALjI,EAAOG,gBAAQ,IAAA8H,OAAA,EAAfA,EAAiBV,OAAQvH,EAAO9D,QAAAA,IAEtD,GACR,CACJ,CGpDiBiR,CAA4BjR,GACzC,GAAG,CAACtB,EAAUsB,KAEdkR,EAAAA,GAAAA,IAAWL,EAAU,CAACM,QAAS,KACnC,CAEA,IAAMC,GAAqBlb,EAAAA,KAAWmb,IAChCC,GAAiBpb,EAAAA,KAAWqb,IAC5BC,GAAkBtb,EAAAA,KAAWub,IAC7BC,GAAsBxb,EAAAA,KAAWyb,IACjCC,GAA0B1b,EAAAA,KAAW2b,IACrCC,GAAuB5b,EAAAA,KAAW6b,IAClCC,GAAe9b,EAAAA,KAAW+b,IAC1BC,GAAuBhc,EAAAA,KAAWic,IAClCC,GAAyBlc,EAAAA,KAAWmc,IAE1C,SAASC,KACL,IAAM7P,GAAW3D,EAAAA,EAAAA,IAAY0D,IACvB+P,GAAazT,EAAAA,EAAAA,IAAYoH,IAE/B,OACI3Q,EAAAA,EAAAA,KAAA,OAAAP,UACIO,EAAAA,EAAAA,KAACid,GAAAA,EAAO,CACJrd,UAAW/B,KACXqf,YAAa,CACT,CACI1d,KAAM,OACN2d,MAAMnd,EAAAA,EAAAA,KAACuc,GAAoB,KAE/B,CACI/c,KAAM,aACN4d,iBAAkBvf,GAAM,QACxBsf,MAAMnd,EAAAA,EAAAA,KAAC+b,GAAc,IACrBsB,YAAY,GAEhB,CACI7d,KAAM,cACN4d,iBAAkBvf,GAAM,QACxBsf,MAAMnd,EAAAA,EAAAA,KAACic,GAAe,IACtBoB,YAAY,GAEhB,CACI7d,KAAM,kBACN4d,iBAAkBvf,GAAM,QACxBsf,MAAMnd,EAAAA,EAAAA,KAACmc,GAAmB,KAE9B,CACI3c,KAAM,UACN2d,MAAMnd,EAAAA,EAAAA,KAACgZ,GAAyB,KAEpC,CACIxZ,KAAM,WACN2d,MAAMnd,EAAAA,EAAAA,KAACyc,GAAY,KAEvBO,EACM,CACIxd,KAAM,YACN4d,iBAAkBvf,GAAM,QACxByf,UAAU,EACVH,MAAMnd,EAAAA,EAAAA,KAAC6c,GAAsB,KAEjC,CACIrd,KAAM,gBACN4d,iBAAkBvf,GAAM,QACxByf,UAAU,EACVH,MAAMnd,EAAAA,EAAAA,KAAC6b,GAAkB,MAErCpc,UAEa,SAAbyN,GAAoC,cAAbA,KACrBlN,EAAAA,EAAAA,KAACid,GAAAA,EAAO,CACJC,YAAa,CACT,CACIC,MAAMnd,EAAAA,EAAAA,KAAC2c,GAAoB,WAQ3D,CAEA,IAAMY,GAAqB,IAE3B,SAASC,GAAgBC,GACrB,OAAOA,IAAMF,QAAqBjc,EAAYuR,OAAO4K,EACzD,CAEA,SAASC,GAAgBD,GACrB,YAAanc,IAANmc,EAAkBF,GAAqBI,OAAOF,EACzD,CAEA,SAASG,KACL,IAAMnR,GAAYlD,EAAAA,EAAAA,IAAY+C,IAa9B,OAXc3L,EAAAA,SAAc,WACxB,IAAM6Q,EAAML,IAAK0M,IAASpR,EAAU1C,UAAU,SAAC3I,GAC3C,MAAO,CACH/B,MAAOqe,GAAgBtc,GACvBkH,KAAMwV,IAAO,IAAIjM,KAAY,IAAPzQ,IAAcgL,OAAO,oBAEnD,IAEA,OADAoF,EAAIuM,OAAO,EAAG,EAAG,CAAC1e,MAAOke,GAAoBjV,KAAM,WAC5CkJ,CACX,GAAG,CAAC/E,GAGR,CAEA,SAASuR,KACL,IAAM7U,GAAWC,EAAAA,EAAAA,MACXzG,EAAQib,KACRve,GAAQkK,EAAAA,EAAAA,IAAYoE,IAEpBtF,EAAe1H,EAAAA,aACjB,SAACtB,GACG8J,EACImP,GAA0B,CACtB1K,iBAAkB4P,GAAgBne,KAG9C,GACA,CAAC8J,IAGL,OACInJ,EAAAA,EAAAA,KAACie,GAAAA,EAAM,CACHC,YAAa,cACbvb,MAAOA,EACPtD,MAAO,CAACqe,GAAgBre,IACxB6G,SAAU,SAACiY,GAAI,OAAK9V,EAAa8V,EAAK,GAAG,EACzCC,MAAO,KAGnB,CAEA,SAASC,KACL,IAAMlV,GAAWC,EAAAA,EAAAA,MACXzG,EAAQib,KACRve,GAAQkK,EAAAA,EAAAA,IAAYsE,IAEpBxF,EAAe1H,EAAAA,aACjB,SAACtB,GACG8J,EACImP,GAA0B,CACtBxK,eAAgB0P,GAAgBne,KAG5C,GACA,CAAC8J,IAGL,OACInJ,EAAAA,EAAAA,KAACie,GAAAA,EAAM,CACHC,YAAa,cACbvb,MAAOA,EACPtD,MAAO,CAACqe,GAAgBre,IACxB6G,SAAU,SAACiY,GAAI,OAAK9V,EAAa8V,EAAK,GAAG,EACzCC,MAAO,KAGnB,CAEA,SAAStB,KAGL,OAFAzB,MAGInb,EAAAA,EAAAA,MAAA,QAAMN,UAAW/B,GAAM,aAAa4B,SAAA,EAChCO,EAAAA,EAAAA,KAAA,QAAMJ,UAAW/B,GAAM,aACvBmC,EAAAA,EAAAA,KAAA,QAAMJ,UAAW/B,GAAM,kBAAkB4B,SAAC,UAC1CO,EAAAA,EAAAA,KAACge,GAAY,KACbhe,EAAAA,EAAAA,KAAA,QAAMJ,UAAW/B,GAAM,kBAAkB4B,SAAC,QAC1CO,EAAAA,EAAAA,KAACqe,GAAU,MAGvB,CAEA,SAASvC,KACL,IAAM3S,GAAWC,EAAAA,EAAAA,MACjBiS,KAEA,IAAMxO,GAAkBtD,EAAAA,EAAAA,IAAYoD,IAC9BhK,EAAQib,KAERU,EAAuB3d,EAAAA,aACzB,SAACtB,GACG8J,EACImP,GAA0B,CACtBzL,gBAAiB2Q,GAAgBne,KAG7C,GACA,CAAC8J,IAGL,OACIjJ,EAAAA,EAAAA,MAAA,QAAMN,UAAW/B,GAAM,aAAa4B,SAAA,EAChCO,EAAAA,EAAAA,KAAA,QAAMJ,UAAW/B,GAAM,aACvBmC,EAAAA,EAAAA,KAACue,GAAAA,GAAa,CAAA9e,SAAC,eACfO,EAAAA,EAAAA,KAACie,GAAAA,EAAM,CACHC,YAAa,cACb7e,MAAO,CAACqe,GAAgB7Q,IACxBlK,MAAOA,EACPuD,SAAU,SAACiY,GAAI,OAAKG,EAAqBH,EAAK,GAAG,EACjDC,MAAO,QAIvB,CAEA,SAASpC,KACL,IAAM7S,GAAWC,EAAAA,EAAAA,MAEX0Q,GAASvQ,EAAAA,EAAAA,IAAY4D,IAErB9E,EAAe1H,EAAAA,aACjB,SAACyM,GACGjE,EAASmP,GAA0B,CAAClL,WAAAA,IACxC,GACA,CAACjE,IAGL,OACInJ,EAAAA,EAAAA,KAACuH,GAAAA,EAAqB,CAClBE,SAAU,IACVpI,MAAOya,EACPoE,YAAa,iBACbhY,SAAUmC,GAGtB,CAEA,SAAS6T,KACL,IAAM/S,GAAWC,EAAAA,EAAAA,MAEX0Q,GAASvQ,EAAAA,EAAAA,IAAY8D,IAErBhF,EAAe1H,EAAAA,aACjB,SAACS,GACG,IAAMkM,EAAc,iBAAoBlM,EAAOA,EAAOA,EAAK/B,MAC3D8J,EAASmP,GAA0B,CAAChL,YAAAA,IACxC,GACA,CAACnE,IAGLqV,GAAgCtV,EAAAA,GAAAA,MAAzBO,EAAW+U,EAAX/U,YAAaO,EAAQwU,EAARxU,SAEpB,OACIhK,EAAAA,EAAAA,KAACye,GAAAA,EAAO,CACJnW,KAAMwR,EACNnX,MAAOqH,EACP8P,OAAQ,SAAC4E,GAAmB,OAAKjV,EAAVlL,UAAAC,OAAA,QAAA8C,IAAA/C,UAAA,GAAAA,UAAA,GAAG,GAA0B,EACpDM,MAAOwJ,EACP6V,YAAa,WACbS,WAAY,SAACvd,GAAI,OACbpB,EAAAA,EAAAA,KAAA,QAAMJ,UAAW/B,GAAM,cAAc4B,UACjCO,EAAAA,EAAAA,KAAC4e,GAAAA,EAAW,CAACpf,KAAM,iBAAoB4B,EAAOA,EAAOA,EAAK/B,MAAOwf,QAAM,KACpE,EAEXC,eAAgBjhB,GAAM,gBAGlC,CAEA,SAASue,KACL,IAAMjT,GAAWC,EAAAA,EAAAA,MAEjB2V,GAAmBxV,EAAAA,EAAAA,IAAYgE,IAAxB7D,EAAIqV,EAAJrV,KAAMG,EAAEkV,EAAFlV,GACP5D,GAAOsD,EAAAA,EAAAA,IAAYkE,IAEnBpF,EAAe1H,EAAAA,aACjB,SAAC6M,GACGrE,EAASmP,GAA0B,CAAC9K,UAAAA,IACxC,GACA,CAACrE,IAGL,OACIjJ,EAAAA,EAAAA,MAAA,QAAMN,UAAW/B,GAAM,cAAc4B,SAAA,EACjCO,EAAAA,EAAAA,KAACgf,GAAAA,GAAU,CACPtV,KAAMA,EACNG,GAAIA,EACJnD,IAAK,EACLE,IAAKiL,KAAKyD,MAAQ,MAClB2J,OAAO,EACPC,qBAAqB,EACrBhZ,SAAUmC,EACVzI,UAAW/B,GAAM,sBACjBshB,QAAS,WAAO,EAChBjB,YAAa9R,EAAAA,EAAOC,SAASpG,GAAQ,YACrCR,IAAI,iBAERzF,EAAAA,EAAAA,KAACqc,GAAuB,MAGpC,CAEA,SAASC,KACL,IAAMnT,GAAWC,EAAAA,EAAAA,MAEX/J,GAAQkK,EAAAA,EAAAA,IAAYkE,IACpBpF,EAAe1H,EAAAA,aACjB,SAAC+M,GACGvE,EAASmP,GAA0B,CAAC5K,cAAAA,IACxC,GACA,CAACvE,IAGL,OACInJ,EAAAA,EAAAA,KAACie,GAAAA,EAAM,CACHxY,IAAI,cACJpG,MAAO,CAACA,GACR6G,SAAU,SAACiY,GAAI,OAAK9V,EAAa8V,EAAK,GAAG,EACzCxb,MAAO,CACH,CAACtD,MAAO,gBAAiBiJ,KAAM,YAC/B,CAACjJ,MAAO,oBAAqBiJ,KAAM,iBAEvC8V,MAAO,KAGnB,CAEA,SAAS5B,KACL,IAAMrT,GAAWC,EAAAA,EAAAA,MAEX/J,GAAQkK,EAAAA,EAAAA,IAAYoJ,IACpByM,GAAY7V,EAAAA,EAAAA,IAAYyI,IAExB3J,EAAe1H,EAAAA,aACjB,SAACiS,GACGzJ,EH/DL,SAAsCyJ,GACzC,OAAO,SAACzJ,GACJA,EAAS,CAAClD,KAAMsS,EAAAA,GAAgCzC,KAAM,CAAClD,UAAAA,KACvDzJ,EAASkP,KACb,CACJ,CG0DqBgH,CAA6BzM,GAC1C,GACA,CAACzJ,IAGL,OACInJ,EAAAA,EAAAA,KAACsG,GAAAA,EAAgB,CACbjH,MAAOA,EACPqH,IAAK,EACLE,IAAK+K,KAAK/K,IAAI,EAAGwY,EAAY,GAC7Bre,SAAUsH,GAGtB,CAEA,IAAMiX,GAAkB,CACpB,CACIjgB,MAAO,OACPiJ,KAAM,OACNiX,MAAMvf,EAAAA,EAAAA,KAACM,GAAAA,EAAI,CAACC,QAAS,cAAeif,KAAM,WAE9C,CACIngB,MAAO,OACPiJ,KAAM,OACNiX,MAAMvf,EAAAA,EAAAA,KAACM,GAAAA,EAAI,CAACC,QAAS,UAEzB,CACIlB,MAAO,oBACPiJ,KAAM,iBACNiX,MAAMvf,EAAAA,EAAAA,KAACM,GAAAA,EAAI,CAACC,QAAS,aAEzB,CACIlB,MAAO,YACPiJ,KAAM,aACNQ,SAAS9I,EAAAA,EAAAA,KAACyf,GAAS,CAACta,MAAO,SAC3Boa,MAAMvf,EAAAA,EAAAA,KAACM,GAAAA,EAAI,CAACC,QAAS,cAAeif,KAAM,WAE9C,CACIngB,MAAO,YACPiJ,KAAM,aACNQ,SAAS9I,EAAAA,EAAAA,KAACyf,GAAS,CAACta,MAAO,SAC3Boa,MAAMvf,EAAAA,EAAAA,KAACM,GAAAA,EAAI,CAACC,QAAS,UAEzB,CACIlB,MAAO,yBACPiJ,KAAM,uBACNQ,SAAS9I,EAAAA,EAAAA,KAACyf,GAAS,CAACta,MAAO,mBAC3Boa,MAAMvf,EAAAA,EAAAA,KAACM,GAAAA,EAAI,CAACC,QAAS,cAI7B,SAASkf,GAAS/b,GAA4B,IAA1ByB,EAAKzB,EAALyB,MAChB,OACIjF,EAAAA,EAAAA,MAACS,EAAAA,SAAc,CAAAlB,SAAA,EACXO,EAAAA,EAAAA,KAACwa,GAAAA,GAAS,CAAA/a,SAAC,WACV0F,IAGb,CAEA,SAASuX,KACL,IAAMvT,GAAWC,EAAAA,EAAAA,MAEX/J,GAAQkK,EAAAA,EAAAA,IAAY0D,IACpB5E,EAAe1H,EAAAA,aACjB,SAACtB,GHjHF,IAAiC6N,EGkH5B/D,GHlH4B+D,EGkHK7N,EHjHlC,SAAC8J,GACJA,EAAS,CACLlD,KAAMsS,EAAAA,GACNzC,KAAM,CAAClD,UAAW,EAAG1F,SAAAA,KAEzB/D,GAASuW,EAAAA,GAAAA,IAAgCxS,GAC7C,GG4GI,GACA,CAAC/D,IAGL,OACInJ,EAAAA,EAAAA,KAACie,GAAAA,EAAM,CACH5e,MAAOA,EAAQ,CAACA,GAAS,GACzBsD,MAAO2c,GACPpZ,SAAU,SAACiY,GAAI,OAAK9V,EAAa8V,EAAK,GAAG,EACzCC,MAAM,OAGlB,CAEO,SAASxB,KACZ,IAAMzT,GAAWC,EAAAA,EAAAA,MACXuW,GAAUpW,EAAAA,EAAAA,IAAYuH,IACtB8O,GAAUC,EAAAA,EAAAA,MAEVld,GAAQmd,EAAAA,EAAAA,UAAQ,WAClB,OAAO3O,IAAKwO,GAAS,SAACve,EAAMC,GACxB,IAAMiH,EAAOlH,EAAKA,KAClB,OACIpB,EAAAA,EAAAA,KAAC+f,EAAAA,EAAe,CAEZC,MAAMC,EAAAA,GAAAA,IAAc,GAADnhB,OAAIohB,OAAOC,SAASC,SAAQ,UAAAthB,OAASsC,EAAK/B,QAASI,SAErE4B,GAAQrB,EAAAA,EAAAA,KAACib,GAAY,CAACzb,KAAM8I,KAAWtI,EAAAA,EAAAA,KAACM,GAAAA,EAAI,CAACC,QAAS,iBAHlD+H,EAMjB,GACJ,GAAG,CAACqX,IAEEU,GAAwBC,EAAAA,EAAAA,cAAY,WACtCC,YAAW,WACPpX,EAASkP,KACb,GAAG,EACP,GAAG,CAAClP,IAEJ,OACInJ,EAAAA,EAAAA,KAACwgB,EAAAA,EAAW,CAACC,SAAUb,EAAQnO,KAAMiP,SAAUL,EAAuBM,UAAQ,EAAAlhB,SACzEkD,GAGb,CAEA,SAAehC,EAAAA,KAAWoc,I,yNCpeb6D,GAAiC,SAAHld,GAKpC,IAJH6H,EAAI7H,EAAJ6H,KACAZ,EAAOjH,EAAPiH,QACAF,EAAO/G,EAAP+G,QACAoW,EAAsBnd,EAAtBmd,uBAEMC,GAA2BR,EAAAA,EAAAA,cAAY,WACzCO,EAAuB,CAACtV,KAAAA,EAAMZ,QAAAA,EAASF,QAAAA,EAAStF,MAAOoG,GAC3D,GAAG,CAACsV,EAAwBtV,EAAMZ,EAASF,IAErCsW,GAAgBjB,EAAAA,EAAAA,UAAQ,WAC1B,OAAOG,EAAAA,GAAAA,IAAc,IAADnhB,OAAK2L,EAAO,KAAA3L,OAAIkiB,GAAAA,GAAKC,YAAc,CAAC1V,KAAAA,GAC5D,GAAG,CAACd,EAASc,IAEb,GAAKA,EAEL,OACIrL,EAAAA,EAAAA,MAACghB,GAAAA,EAAI,CAACC,IAAK,EAAGC,WAAW,SAAQ3hB,SAAA,EAC7BO,EAAAA,EAAAA,KAACqhB,GAAAA,EAAgB,CACbC,KAAK,OACLC,aAAW,EACXC,aAAc,CAACC,UAAW,aAAc3Y,QAAS,mBACjDzI,QAASygB,EACTphB,KAAK,QAETM,EAAAA,EAAAA,KAAC0hB,GAAAA,EAAI,CAACvd,MAAO,YAAa+R,IAAK6K,EAAeY,QAAM,EAACC,wBAAsB,EAAAniB,UACvEO,EAAAA,EAAAA,KAAC6I,GAAAA,EAAO,CACJC,SAAS9I,EAAAA,EAAAA,KAAC+I,GAAAA,EAAI,CAAC8Y,WAAW,SAAQpiB,SAAC,qCACnCgiB,UAAW,OAAOhiB,UAElBO,EAAAA,EAAAA,KAACM,GAAAA,EAAI,CAACC,QAAS,sBAKnC,E,oCC7CM1C,IAAQ0G,EAAAA,EAAAA,GAAG,qBAEXud,GAAgB,SAACziB,GAAa,OAAOA,GAASA,EAAQ,EAAI,GAAK,GAAG,EAClE0iB,GAAe,SAACC,EAAmBC,GACrC,GAAKD,GAAaC,EAClB,OAAOA,EAAO,EAAI,OAAS,OAC/B,EASaC,GAA6B,SAAHxe,GAAwD,IAAnDrE,EAAKqE,EAALrE,MAAO8iB,EAAeze,EAAfye,gBAAiBjV,EAAQxJ,EAARwJ,SAAUkV,EAAU1e,EAAV0e,WACpEC,EAAaF,EAAkBtP,OAAOxT,GAAS8iB,EAAkBtP,OAAOxT,GACxE2iB,EAAW9U,aAAQ,EAARA,EAAU2D,SAAS,SAC9BoR,EAAOtQ,KAAKsQ,KAAKI,GAEjBC,EAA0B,UAAfF,EAAyBhW,EAAAA,EAAOmW,MAAQnW,EAAAA,EAAOyG,OAEhE,OACI3S,EAAAA,EAAAA,MAACghB,GAAAA,EAAI,CAACsB,eAAe,SAASpB,WAAW,SAASD,IAAK,EAAGvhB,UAAW/B,KAAQ4B,SAAA,EACzES,EAAAA,EAAAA,MAAA,QAAMN,UAAW/B,GAAM,QAAS,CAAC4kB,KAAMV,GAAaW,QAAQV,GAAWC,KAAQxiB,SAAA,CAC1EuiB,GAAYF,GAAcG,GAC1BK,EAASD,MAEbK,QAAQP,KACLniB,EAAAA,EAAAA,KAAC6I,GAAAA,EAAO,CACJC,QAAO,GAAAhK,OAAKwjB,EAASjjB,GAAM,OAAAP,OAAMwjB,EAASH,GAAgB,gBAC1DV,UAAU,MAAKhiB,UAEfO,EAAAA,EAAAA,KAAA,OAAK2iB,SAAU,EAAG/iB,UAAW/B,GAAM,cAAc4B,UAC7CO,EAAAA,EAAAA,KAACM,GAAAA,EAAI,CAACwV,KAAM8M,GAAAA,EAAgBljB,KAAM,WAM1D,ECsCMmjB,GAA2B,CAC7BC,gBAAgB,EAChBC,WAAYC,GAAAA,GAAUC,OACtBC,aAAcF,GAAAA,GAAUC,OACxBE,UAAWC,GAAAA,GACXC,aAAc,EACdC,kBAAkB,GAGhBC,GAA0C,CAC5CT,gBAAgB,EAChBC,WAAYC,GAAAA,GAAUC,OACtBC,aAAcF,GAAAA,GAAUC,OACxBE,UAAWK,GAAAA,GACXH,aAAc,EACdC,kBAAkB,GAGhBzlB,IAAQ0G,EAAAA,EAAAA,GAAG,yBAEXkf,GAAiB5lB,GAAM,OAE7B,SAAS6lB,GAA0BzkB,GAC/B,IAAMkK,GAAWC,EAAAA,EAAAA,MACXua,GAAYpa,EAAAA,EAAAA,IAAYuJ,IACvB9G,EAAU/M,EAAV+M,OAED4X,EAASjjB,EAAAA,aACX,SAACqL,EAAgB6X,EAAsBC,GN2KxC,IAAkC1iB,EAAiB2iB,EM1K9C5a,GN0K6B/H,EM1KK,CAAC4K,OAAAA,EAAQkH,MAAO2Q,GN0KJE,EM1KgBD,EAAKC,UN2KpE,SAAC5a,EAAUsM,GACd,IAAMuO,EAAgBhX,GAAyByI,KACzC9R,GAAYsgB,EAAAA,GAAAA,IAAqBD,EAAe5iB,EAAM,CAAC2iB,UAAAA,IAE7D5a,EAAS,CACLlD,KAAMsS,EAAAA,GACNzC,KAAM,CAACnS,UAAAA,EAAWiP,UAAW,KAEjCzJ,EAASkP,KACb,GMnLI,GACA,CAAClP,IAGLzF,EAAgCigB,EAAU3X,IAAW,CAAC,EAA/CkH,EAAKxP,EAALwP,MAAOC,EAAczP,EAAdyP,eAEd,OACInT,EAAAA,EAAAA,KAACkkB,GAAAA,EAAY,CACTlY,OAAQA,EACR7G,MAAO4G,GAA+BC,GACtCkH,MAAOA,EACP0Q,OAAQA,EACRzQ,eAAgBA,GAG5B,CAEA,IAAMgR,GAAkBxjB,EAAAA,KAAWyjB,IAEnC,SAASC,KACL,OACInkB,EAAAA,EAAAA,MAAA,OAAKN,UAAW/B,GAAM,eAAe4B,SAAA,EACjCO,EAAAA,EAAAA,KAAC0jB,GAAyB,CAAC1X,OAAQ,UACnChM,EAAAA,EAAAA,KAAA,OAAKJ,UAAW/B,GAAM,sBAAsB4B,UACxCO,EAAAA,EAAAA,KAACskB,GAAe,OAEpBtkB,EAAAA,EAAAA,KAAA,OAAKJ,UAAW/B,GAAM,oBAAoB4B,UACtCO,EAAAA,EAAAA,KAACmkB,GAAe,QAIhC,CAEA,IAAMG,GAAkB3jB,EAAAA,KAAW4jB,IAEnC,SAASC,GAAmB3V,GACxB,IAAM1F,GAAWC,EAAAA,EAAAA,MAEXmQ,GAAmBhQ,EAAAA,EAAAA,IAAY6J,IAC/BkG,GAAiB/P,EAAAA,EAAAA,IAAYyL,IAC7BvK,GAAUlB,EAAAA,EAAAA,IAAYmB,EAAAA,IACtBwC,GAAW3D,EAAAA,EAAAA,IAAY0D,IACvBF,GAAWxD,EAAAA,EAAAA,IAAYgG,IAEvBkV,GAA6BnE,EAAAA,EAAAA,cAC/B,SAACoE,GACGvb,EAASuP,GAA2BgM,GACxC,GACA,CAACvb,IAGCwb,EAAgBhkB,EAAAA,SAAc,WAChC,IAAM6Q,EAAiD,IAAIoT,IAErDC,EACW,SAAb3X,GAAoC,cAAbA,EACjB,GACa,SAAbA,GAAoC,cAAbA,EACrB,OACA,UAqJZ,OApJAsE,EAAI5O,IAAI,OAAQ,CACZpD,KAAM,OACNslB,OAAqB,KAAbD,EAAkB,MAAO7kB,EAAAA,EAAAA,KAACM,GAAAA,EAAI,CAACC,QAASskB,IAChDE,UAAU,EACVC,OAAM,SAAC5jB,GACH,IAAA6jB,EAAiC7jB,EAAK8jB,IAA/Bjf,EAAIgf,EAAJhf,KAAMsF,EAAI0Z,EAAJ1Z,KACb,MAAsB,SADO0Z,EAAVE,YAEfnlB,EAAAA,EAAAA,KAACM,GAAAA,EAAI,CAACkf,KAAK,QAAQjf,QAAQ,eAE3BP,EAAAA,EAAAA,KAACM,GAAAA,EAAI,CAACC,SAAS6kB,EAAAA,GAAAA,IAAmB7Z,EAAOtF,EAAO,KAExD,EACAmY,MAAO,KAEX5M,EAAI5O,IAAI,OAAQ,CACZpD,KAAM,OACNslB,QAAQ9kB,EAAAA,EAAAA,KAACqkB,GAAU,IACnBU,UAAU,EACVC,OAAM,SAAC5jB,GACH,IAAOmK,EAAQnK,EAAK8jB,IAAb3Z,KACP,OAAKA,GAIEvL,EAAAA,EAAAA,KAACqlB,GAAQ,CAAC9Z,KAAMA,EAAM2P,iBAA+B,SAAbhO,KAHpClN,EAAAA,EAAAA,KAACslB,GAAAA,GAAO,CAAA7lB,SAAC,qBAIxB,EACAY,QAAS,SAAAkR,GAAY,IAAV2T,EAAG3T,EAAH2T,KACQA,EAAR3Z,MAGW,cAAb2B,GAAyC,SAAbA,GAChB,aAAbgY,EAAIjf,MAIRkD,EAASmP,GAA0B,CAACvL,SAAUmY,EAAI3Z,OACtD,EACA3L,UAAW/B,GAAM,YAAa,CAACyjB,KAAMpU,MAGzCsE,EAAI5O,IAAI,aAAc,CAClBpD,KAAM,aACNslB,QAAQ9kB,EAAAA,EAAAA,KAAC0jB,GAAyB,CAAC1X,OAAQ,eAC3C+Y,UAAU,EACVC,OAAM,SAAC5jB,GACH,OACIpB,EAAAA,EAAAA,KAACkiB,GAAe,CACZ7iB,MAAO+B,EAAK8jB,IAAIK,WAChBpD,gBAAiB/gB,EAAK8jB,IAAI,wBAC1BhY,SAAUA,EACVkV,WAAW,SAGvB,EACAoD,MAAO,QACPpH,MAAO,MAEX5M,EAAI5O,IAAI,gBAAiB,CACrBpD,KAAM,aACNslB,QAAQ9kB,EAAAA,EAAAA,KAAC0jB,GAAyB,CAAC1X,OAAQ,kBAC3C+Y,UAAU,EACVC,OAAM,SAAC5jB,GACH,OACIpB,EAAAA,EAAAA,KAACkiB,GAAe,CACZ7iB,MAAO+B,EAAK8jB,IAAIrZ,cAChBsW,gBAAiB/gB,EAAK8jB,IAAI,2BAC1BhY,SAAUA,EACVkV,WAAW,SAGvB,EACAoD,MAAO,QACPpH,MAAO,MAEX5M,EAAI5O,IAAI,QAAS,CACbpD,KAAM,QACNslB,QAAQ9kB,EAAAA,EAAAA,KAAC0jB,GAAyB,CAAC1X,OAAQ,UAC3C+Y,UAAU,EACVC,OAAM,SAAC5jB,GACH,OAAOpB,EAAAA,EAAAA,KAAC4e,GAAAA,EAAW,CAACpf,KAAM4B,EAAK8jB,IAAI9N,OACvC,EACAgH,MAAO,MAGXqH,KAAS5W,GAAS,SAAC6W,GACf,IAAMlmB,EAAI,UAAAV,OAAa4mB,GACjBC,EAAa,oBAAA7mB,OAAuBU,GAE1CgS,EAAI5O,IAAIpD,EAAM,CACVA,KAAAA,EACAslB,QAAQ9kB,EAAAA,EAAAA,KAAC0jB,GAAyB,CAAC1X,OAAQxM,IAC3CulB,UAAU,EACVC,OAAM,SAAC5jB,GACH,IAAM+gB,EACFwD,KAAiBvkB,EAAK8jB,IAAMrS,OAAOzR,EAAK8jB,IAAIS,IAAkB,KAClE,OACI3lB,EAAAA,EAAAA,KAACkiB,GAAe,CACZ7iB,MAAOwT,OAAOzR,EAAK8jB,IAAI1lB,IACvB2iB,gBAAiBA,EACjBjV,SAAUA,EACVkV,WAAW,SAGvB,EACAoD,MAAO,QACPpH,MAAO,KAEf,IAEAqH,KAASlM,GAAkB,SAAC7H,GACpBF,EAAIsD,IAAIpD,IAIZF,EAAI5O,IAAI8O,EAAO,CACXlS,KAAMkS,EACNoT,QAAQ9kB,EAAAA,EAAAA,KAAC0jB,GAAyB,CAAC1X,OAAQ0F,IAC3CqT,UAAU,EACVC,OAAM,SAAC5jB,GACH,IAAgB/B,EAAS+B,EAAK8jB,IAAtBxT,GACFkU,EAAa,aAAA9mB,OAAgB4S,GAC7ByQ,EACFyD,KAAiBxkB,EAAK8jB,IAAMrS,OAAOzR,EAAK8jB,IAAIU,IAAkB,KAElE,MAAqB,kBAAVvmB,OACUiC,IAAVjC,EAAsB+M,EAAAA,EAAOyZ,SAAWC,KAAYnI,OAAOte,IAElEqS,EAAMb,SAAS,SACRxR,QACD+M,EAAAA,EAAOyZ,SACPzZ,EAAAA,EAAO2Z,SAAS1mB,EAAO,CAAC+M,OAAQ,SAEtCsF,EAAMb,SAAS,WAEX7Q,EAAAA,EAAAA,KAACkiB,GAAe,CACZ7iB,MAAOwT,OAAOxT,GACd8iB,gBAAiBA,EACjBjV,SAAUA,EACVkV,WAAW,gBANvB,CAUJ,EACAoD,MAAO,QACPpH,MAAO,KAEf,IAEO5M,CACX,GAAG,CAACzE,EAAUG,EAAU2B,EAASpE,EAAS8O,EAAkBpQ,IAE5D,OAAOxI,EAAAA,SAAc,WACjB,IAAM6Q,EAA2C,GAuBjD,OAtBA8H,EAAe0M,SAAQ,SAACxmB,GACpB,IAAM4B,EAAOujB,EAAcsB,IAAIzmB,GAC3B4B,GACAoQ,EAAIC,KAAKrQ,EAEjB,IACAoQ,EAAIC,KAAK,CACLjS,KAAM,UACNslB,OAAQ,GACRC,UAAU,EACVC,OAAM,SAAC5jB,GACH,OACIpB,EAAAA,EAAAA,KAAC4gB,GAAmB,CAChBrV,KAAMnK,EAAK8jB,IAAI3Z,KACfd,QAASA,EACTE,QAASvJ,EAAK8jB,IAAIva,QAClBkW,uBAAwB4D,GAGpC,EACArG,MAAO,KAEJ5M,CACX,GAAG,CAACiT,EAA4Bha,EAASka,EAAerL,GAC5D,CAEA,IAAM4M,GAAiB,IAEvB,SAASC,KACL,IAAMhd,GAAWC,EAAAA,EAAAA,MACXyD,GAAkBtD,EAAAA,EAAAA,IAAYoD,IAE9B2O,EAAW3a,EAAAA,aAAkB,WAC/BwI,EAASyO,KACb,GAAG,CAACzO,KAEJwS,EAAAA,GAAAA,IAAWL,EAAU,CAACM,QAASsK,GAAgBE,cAA8B9kB,IAApBuL,IAEzD,IAAMlK,GAAQ4G,EAAAA,EAAAA,IAAYiF,IACpBL,GAAU5E,EAAAA,EAAAA,IAAY2E,IACtBG,GAAS9E,EAAAA,EAAAA,IAAY6E,IACrBG,GAAQhF,EAAAA,EAAAA,IAAY+E,IAGpB9L,EAAUgiB,IADAjb,EAAAA,EAAAA,IAAYoF,KAG5B,OAAKR,GAAWI,GACLvO,EAAAA,EAAAA,KAACqmB,GAAAA,EAAU,CAAC9X,MAAOA,KAI1BvO,EAAAA,EAAAA,KAACsmB,GAAAA,GAAW,CACRnY,QAASA,EACTE,OAAQA,EACR7L,QAASA,EACTsT,KAAMnT,EACNgD,SAAUkd,GACV0D,aAAc,kBAAM9C,EAAc,EAClC+C,YAAU,GAGtB,CAEA,SAASC,KACL,IAAMtd,GAAWC,EAAAA,EAAAA,MACjBzI,EAAAA,WAAgB,WACZwI,EAASqM,KACb,GAAG,CAACrM,IAEJ,IAAMxG,GAAQ4G,EAAAA,EAAAA,IAAYuG,IACpB3B,GAAU5E,EAAAA,EAAAA,IAAYoG,IACtBtB,GAAS9E,EAAAA,EAAAA,IAAYqG,IACrBrB,GAAQhF,EAAAA,EAAAA,IAAYsG,IAGpBrN,EAAUgiB,IADAjb,EAAAA,EAAAA,IAAYyG,KAG5B,OAAK7B,GAAWI,GACLvO,EAAAA,EAAAA,KAACqmB,GAAAA,EAAU,CAAC9X,MAAOA,KAI1BvO,EAAAA,EAAAA,KAACsmB,GAAAA,GAAW,CACRnY,QAASA,EACTE,OAAQA,EACR7L,QAASA,EACTsT,KAAMnT,EACNgD,SAAUkd,GACV0D,aAAc,kBAAM9C,EAAc,EAClC+C,YAAU,GAGtB,CAEA,SAASE,KACL,IAAMvd,GAAWC,EAAAA,EAAAA,MACXyD,GAAkBtD,EAAAA,EAAAA,IAAYoD,IAC9B2O,EAAW3a,EAAAA,aAAkB,WAC/BwI,EAAS6O,KACb,GAAG,CAAC7O,KAEJwS,EAAAA,GAAAA,IAAWL,EAAU,CAACM,QAASsK,GAAgBE,cAA8B9kB,IAApBuL,IAEzD,IAAMlK,GAAQ4G,EAAAA,EAAAA,IAAY4F,IACpBhB,GAAU5E,EAAAA,EAAAA,IAAYyF,IACtBX,GAAS9E,EAAAA,EAAAA,IAAY0F,IACrBV,GAAQhF,EAAAA,EAAAA,IAAY2F,IAGpB1M,EAAUgiB,IADAjb,EAAAA,EAAAA,IAAY8F,KAG5B,OAAKlB,GAAWI,GACLvO,EAAAA,EAAAA,KAACqmB,GAAAA,EAAU,CAAC9X,MAAOA,KAI1BvO,EAAAA,EAAAA,KAACsmB,GAAAA,GAAW,CACRnY,QAASA,EACTE,OAAQA,EACR7L,QAASA,EACTsT,KAAMnT,EACNgD,SAAU4d,GACVgD,aAAc,kBAAM9C,EAAc,EAClC+C,YAAU,GAGtB,CAEA,SAASG,KACL,IAAMxd,GAAWC,EAAAA,EAAAA,MACjBzI,EAAAA,WAAgB,WACZwI,EAASuN,KACb,GAAG,CAACvN,IAEJ,IAAMxG,GAAQ4G,EAAAA,EAAAA,IAAYgH,IACpBpC,GAAU5E,EAAAA,EAAAA,IAAY6G,IACtB/B,GAAS9E,EAAAA,EAAAA,IAAY8G,IACrB9B,GAAQhF,EAAAA,EAAAA,IAAY+G,IAGpB9N,EAAUgiB,IADAjb,EAAAA,EAAAA,IAAYkH,KAG5B,OAAKtC,GAAWI,GACLvO,EAAAA,EAAAA,KAACqmB,GAAAA,EAAU,CAAC9X,MAAOA,KAI1BvO,EAAAA,EAAAA,KAACsmB,GAAAA,GAAW,CACRnY,QAASA,EACTE,OAAQA,EACR7L,QAASA,EACTsT,KAAMnT,EACNgD,SAAU4d,GACVgD,aAAc,kBAAM9C,EAAc,EAClC+C,YAAU,GAGtB,CAEA,IAAMI,GAA8BjmB,EAAAA,KAAWwlB,IACzCU,GAAkClmB,EAAAA,KAAW8lB,IAC7CK,GAA8BnmB,EAAAA,KAAW+lB,IACzCK,GAAkCpmB,EAAAA,KAAWgmB,IAEnD,SAASK,GAAuB/T,GAA2C,IAAzCxT,EAAQwT,EAARxT,SACxBud,GAAazT,EAAAA,EAAAA,IAAYoH,IACzBjH,GAAOH,EAAAA,EAAAA,IAAYoE,IACnB9D,GAAKN,EAAAA,EAAAA,IAAYsE,IAEvB,OAAKmP,GAICtT,IAASG,GAAOH,IAASG,GAEvB7J,EAAAA,EAAAA,KAACsK,EAAAA,EAAS,CACNC,QAAS,6CACTF,MACInK,EAAAA,EAAAA,MAACS,EAAAA,SAAc,CAAAlB,SAAA,CAAC,kBACEO,EAAAA,EAAAA,KAACwa,GAAAA,GAAS,CAAA/a,SAAC,SAAiB,MAACO,EAAAA,EAAAA,KAACwa,GAAAA,GAAS,CAAA/a,SAAC,OAAe,IAAI,kBAQtFO,EAAAA,EAAAA,KAAAob,EAAAA,SAAA,CAAA3b,SAAGA,KAjBCO,EAAAA,EAAAA,KAAAob,EAAAA,SAAA,CAAA3b,SAAE,wBAkBjB,CAEA,IAAMwnB,GAA8BtmB,EAAAA,KAAWqmB,IAE/C,SAASE,KACL,IAAM/d,GAAWC,EAAAA,EAAAA,MACX8D,GAAW3D,EAAAA,EAAAA,IAAY0D,IAE7BtM,EAAAA,WAAgB,WACZwI,GNtcG,SAACA,EAAUsM,GACd,IAqQJK,EArQU3U,EAAQsU,IACRvI,EAAWD,GAAwB9L,GACzC,GAAK+L,EAID/D,GAASuW,EAAAA,GAAAA,IAAgCxS,QAJ9B,CACX,IAAMia,GAAeC,EAAAA,GAAAA,IAAgCjmB,GACrDgI,GAiQR2M,EAjQwC,CAAC5I,SAAUia,GAmQ5C,SAAChe,GACJA,EAAS,CAAClD,KAAMsS,EAAAA,GAAgCzC,KAAAA,GACpD,GApQI,CAGJ,GM8bA,GAAG,CAAC3M,IAEJ,IAAIke,EAAW,GAAAvoB,OAAMoO,EAAQ,uBAE7B,OAAQA,GACJ,IAAK,OACD,OAAOlN,EAAAA,EAAAA,KAAC8mB,GAA2B,IACvC,IAAK,oBACL,IAAK,OACD,OAAO9mB,EAAAA,EAAAA,KAAC4mB,GAA2B,GAAM1Z,GAC7C,IAAK,YACL,IAAK,yBACDma,GAAcrnB,EAAAA,EAAAA,KAAC6mB,GAA+B,GAAM3Z,GACpD,MACJ,IAAK,YACDma,GAAcrnB,EAAAA,EAAAA,KAAC+mB,GAA+B,IAItD,OAAQ7Z,GACJlN,EAAAA,EAAAA,KAACinB,GAA2B,CAAAxnB,SAAE4nB,IADf,IAGvB,CAEA,IAAMC,GAAqC3mB,EAAAA,KAAW4mB,IAChDC,GAAqC7mB,EAAAA,KAAW8mB,IAEtD,SAASlD,KAGL,QAFiBhb,EAAAA,EAAAA,IAAY0D,KAGzB,IAAK,OACL,IAAK,oBACD,OAAOjN,EAAAA,EAAAA,KAACsnB,GAAkC,IAC9C,IAAK,OACD,OAAOtnB,EAAAA,EAAAA,KAACwnB,GAAkC,IAC9C,IAAK,YACD,OAAOxnB,EAAAA,EAAAA,KAAC0nB,GAAkC,IAC9C,IAAK,YACL,IAAK,yBACD,OAAO1nB,EAAAA,EAAAA,KAAC2nB,GAAkC,IAElD,OAAO,IACX,CAEA,SAASJ,KACL,IAAMpZ,GAAU5E,EAAAA,EAAAA,IAAY2E,IAC5B,OAAOlO,EAAAA,EAAAA,KAAC4nB,GAAAA,EAAM,CAAC3O,QAAS9K,GAC5B,CAEA,SAASsZ,KACL,IAAMtZ,GAAU5E,EAAAA,EAAAA,IAAYyF,IAC5B,OAAOhP,EAAAA,EAAAA,KAAC4nB,GAAAA,EAAM,CAAC3O,QAAS9K,GAC5B,CAEA,SAASwZ,KACL,IAAMxZ,GAAU5E,EAAAA,EAAAA,IAAYoG,IAC5B,OAAO3P,EAAAA,EAAAA,KAAC4nB,GAAAA,EAAM,CAAC3O,QAAS9K,GAC5B,CAEA,SAASuZ,KACL,IAAMvZ,GAAU5E,EAAAA,EAAAA,IAAY6G,IAC5B,OAAOpQ,EAAAA,EAAAA,KAAC4nB,GAAAA,EAAM,CAAC3O,QAAS9K,GAC5B,CAEA,SAASiW,KACL,IAAM/kB,GAAQkK,EAAAA,EAAAA,IAAYoJ,IACpBkV,GAAQte,EAAAA,EAAAA,IAAYyI,IAE1B,OAAO6V,EAAQ,GACX3nB,EAAAA,EAAAA,MAACsa,GAAAA,GAAS,CAAA/a,SAAA,CAAC,SACAoT,OAAOxT,GAAS,EAAE,MAAIwoB,EAAO,OAExC,IACR,CAEA,SAAelnB,EAAAA,KAAWumB,IC/kB1B,IAAMrpB,IAAQ0G,EAAAA,EAAAA,GAAG,YAEjB,SAASujB,KACL,IAAMnd,GAAUpB,EAAAA,EAAAA,IAAYqB,EAAAA,IACtBsC,GAAW3D,EAAAA,EAAAA,IAAY0D,IAE7B,OAAKtC,GAUD3K,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CAAAR,UACVO,EAAAA,EAAAA,KAAC+nB,GAAAA,GAAiB,CACdnoB,UAAW/B,GAAM,SACjBmqB,aAA2B,SAAb9a,GAAoC,cAAbA,EACrC+a,SAASjoB,EAAAA,EAAAA,KAAC+c,GAAmB,IAC7BjU,SAAS9I,EAAAA,EAAAA,KAACknB,GAAmB,SAbjClnB,EAAAA,EAAAA,KAACsK,EAAAA,EAAS,CACNC,QAAS,yCACTF,KAAM,uCAetB,CAEA,SAAe1J,EAAAA,KAAWmnB,I,gECEpBlqB,IAAIC,EAAAA,EAAAA,GAAM,YAIHqqB,GAAQ,SAAAplB,IAAA7E,EAAAA,EAAAA,GAAAiqB,EAAAplB,GAAA,IAAA5E,GAAAC,EAAAA,EAAAA,GAAA+pB,GAAA,SAAAA,IAAA,OAAA7pB,EAAAA,EAAAA,GAAA,KAAA6pB,GAAAhqB,EAAAW,MAAA,KAAAN,UAAA,CAsGhB,OAtGgBY,EAAAA,EAAAA,GAAA+oB,EAAA,EAAA9oB,IAAA,SAAAC,MAOjB,WAAU,IAAD8oB,EAAAC,EACL9oB,EAAuEC,KAAKN,MAArEopB,EAAK/oB,EAAL+oB,MAAO5d,EAAOnL,EAAPmL,QAAS6d,EAAchpB,EAAdgpB,eAAgBnd,EAAa7L,EAAb6L,cAAeod,EAAajpB,EAAbipB,cAChDC,EAAezV,IACjB0V,EAAAA,IACA,SAACzV,EAAK0V,GAIF,OAHA1V,EAAI0V,GAAO,CACPC,KAAMjG,QAAQvX,IAAkBuX,QAAQkG,EAAAA,GAA2BF,KAEhE1V,CACX,GACA,CAAC,GAEC6V,EAAWL,EAAaC,EAAAA,GAAYK,OAC1CD,EAASF,KAAOE,EAASF,MAAQjG,QAAQ6F,GAEzC,IAAMQ,EAAWP,EAAaC,EAAAA,GAAYO,YAC1CD,EAASJ,KAAOI,EAASJ,MAAQjG,QAAQzX,EAAAA,GAAUC,oCAEnD,IAAAxH,EAIwC,QAJxCykB,EAIIld,EAAAA,GAAUge,kCAA0B,IAAAd,EAAAA,EAAI,CAAC,EAH9Be,EAAmBxlB,EAA9BgI,UACAyd,EAAWzlB,EAAXylB,YACOC,EAAe1lB,EAAtByB,MAEEkkB,EAASb,EAAaC,EAAAA,GAAYa,SACxCD,EAAOV,KAAOU,EAAOV,MAAQjG,QAAQwG,QAAAA,EAAuBC,GACxDA,IACAE,EAAO1H,QAAS,EAChB0H,EAAOE,UAAW,EAClBF,EAAOnT,KAAMsT,EAAAA,EAAAA,GAAeL,EAAa,CACrCM,UAAWhf,EACXif,UAAWve,KAInB,IAAMlM,GAAQ0qB,EAAAA,EAAAA,IAAatB,EAAMnS,IAAKuS,EAAAA,GAAaD,OAAclnB,GAAS8mB,EAAA,IAAAwB,EAAAA,EAAAA,GAAAxB,EACrEK,EAAAA,GAAYK,MAAQ,mBAAgBc,EAAAA,EAAAA,GAAAxB,EACpCK,EAAAA,GAAYa,QAAUF,QAAAA,EAAmB,cAAYhB,IAGpDyB,EAAUvB,KAAkBG,EAAAA,GAAcH,OAAiBhnB,EAC3DwoB,EAAgB3e,GAAiB0e,EAAUA,EAAUpB,EAAAA,GAAYsB,QAEvE,OACI7pB,EAAAA,EAAAA,MAAA,OAAKN,UAAU,yBAAwBH,SAAA,EACnCO,EAAAA,EAAAA,KAACgqB,GAAkB,KACnBhqB,EAAAA,EAAAA,KAACiqB,GAAAA,EAAe,KAChB/pB,EAAAA,EAAAA,MAAA,WAASN,UAAWhC,GAAE,KAAM,yBAAyB6B,SAAA,EACjDO,EAAAA,EAAAA,KAAA,OAAKJ,UAAU,mBAAkBH,UAC7BO,EAAAA,EAAAA,KAAA,OAAKJ,UAAWhC,GAAE,WAAW6B,UACzBO,EAAAA,EAAAA,KAACkqB,EAAAA,GAAIlpB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACG/B,GAAK,IACTkrB,OAAQC,EAAAA,GACRxqB,UAAWhC,GAAE,QACb+jB,QAAM,EACNC,wBAAsB,EACtBliB,KAAM2qB,GAAAA,WAIlBrqB,EAAAA,EAAAA,KAAA,OAAKJ,UAAWhC,GAAE,cAAc6B,UAC5BS,EAAAA,EAAAA,MAACoqB,EAAAA,GAAM,CAAA7qB,SAAA,EACHO,EAAAA,EAAAA,KAACuqB,EAAAA,GAAK,CACFhf,KAAI,GAAAzM,OAAKupB,EAAM9c,KAAI,KAAAzM,OAAI2pB,EAAAA,GAAYsB,SACnCre,UAAW8e,EAAAA,IAEdzB,EAASJ,OACN3oB,EAAAA,EAAAA,KAACuqB,EAAAA,GAAK,CACFhf,KAAI,GAAAzM,OAAKupB,EAAM9c,KAAI,KAAAzM,OAAI2pB,EAAAA,GAAYO,YACnCtd,UAAWlB,IAGlB6e,EAAOV,MAAQO,IACZlpB,EAAAA,EAAAA,KAACuqB,EAAAA,GAAK,CACFhf,KAAI,GAAAzM,OAAKupB,EAAM9c,KAAI,KAAAzM,OAAI2pB,EAAAA,GAAYa,SACnCtE,OAAQ,kBACJhlB,EAAAA,EAAAA,KAACwL,EAAkB,CAACE,UAAWwd,GAAuB,KAIlElpB,EAAAA,EAAAA,KAACuqB,EAAAA,GAAK,CACFhf,KAAI,GAAAzM,OAAKupB,EAAM9c,KAAI,KAAAzM,OAAI2pB,EAAAA,GAAYgC,KACnC/e,UAAWgf,IAEd7B,EAASF,OACN3oB,EAAAA,EAAAA,KAACuqB,EAAAA,GAAK,CACFhf,KAAI,GAAAzM,OAAKupB,EAAM9c,KAAI,KAAAzM,OAAI2pB,EAAAA,GAAYK,OACnCpd,UAAWif,MAGnB3qB,EAAAA,EAAAA,KAAC4qB,EAAAA,GAAQ,CAAClhB,KAAM2e,EAAMnS,IAAKrM,GAAE,GAAA/K,OAAKupB,EAAMnS,IAAG,KAAApX,OAAIgrB,eAMvE,KAAC5B,CAAA,CAtGgB,CAASvnB,EAAAA,WAAjBunB,GAGFjnB,aAAe,CAClBqnB,eAAgB8B,EAAAA,IAiHxB,UADkB3mB,EAAAA,EAAAA,KAXM,SAACtC,GAGrB,MAAO,CACHmnB,gBAHoBuC,EAAAA,EAAAA,IAAmB1pB,GAGP6f,EAAAA,GAAK8J,UACrC3f,eAAeP,EAAAA,EAAAA,IAAiBzJ,GAChConB,cAAe7F,SAAQzL,EAAAA,GAAAA,OACvBxM,SAASC,EAAAA,EAAAA,IAAWvJ,GAE5B,GAGA,CAAyB+mB,IAEzB,SAAS8B,KACL,IAAMe,GAAgBxhB,EAAAA,EAAAA,IAAYyhB,EAAAA,IAclC,OAZAC,EAAAA,GAAAA,GAAsB,CAClBhlB,KAAMilB,GAAAA,EAAgBJ,SACtBK,WAAY,SAAA5Z,GAAS,QAAT1Q,EAAAA,EAAAA,GAAA0Q,EAAA,GAAS,EAAc,EACnC6Z,UAAW,CAACL,MAGhBM,EAAAA,GAAAA,IAAkB,CACdplB,KAAMilB,GAAAA,EAAgBJ,SACtBQ,UAAW,SAAAC,GAAS,OAAT1qB,EAAAA,EAAAA,GAAA0qB,EAAA,GAAS,EAAa,EACjCC,SAAU,CAACT,KAGR,IACX,C,2HClKMltB,IAAQ0G,EAAAA,EAAAA,GAAG,yBAUjB,SAASknB,GAAc9gB,GACnB,MAAmB,SAAZA,CACX,CAAC,IAEK+gB,GAAmB,SAAA5oB,IAAA7E,EAAAA,EAAAA,GAAAytB,EAAA5oB,GAAA,IAAA5E,GAAAC,EAAAA,EAAAA,GAAAutB,GAAA,SAAAA,IAAA,IAAAttB,GAAAC,EAAAA,EAAAA,GAAA,KAAAqtB,GAAA,QAAAptB,EAAAC,UAAAC,OAAAC,EAAA,IAAAC,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAAF,EAAAE,GAAAJ,UAAAI,GAwGnB,OAxGmBP,EAAAF,EAAAU,KAAAC,MAAAX,EAAA,OAAAY,OAAAL,KAwFrBktB,SAAW,SAACC,GACR,IAAAtsB,EAA8ElB,EAAKa,MAA5E4sB,EAAqBvsB,EAArBusB,sBAAuBC,EAAgBxsB,EAAhBwsB,iBAAkBC,EAAiBzsB,EAAjBysB,kBAAmBthB,EAAOnL,EAAPmL,QAC7DuhB,EAAiBJ,EAAKnW,WAAWwW,OAKvC,OAJKR,GAAcO,EAAeE,iBAC9BF,EAAeG,gBAAa7qB,GAGzBuqB,EAAsBphB,EAASuhB,GAAgB3V,MAAK,WACvDyV,IACA,IAAOnhB,EAAWqhB,EAAXrhB,QACPohB,EAAkBphB,EACtB,GACJ,EAACvM,EAEDib,QAAU,SAACuS,GACPxtB,EAAKa,MAAM6sB,iBAAiBF,EAAKnW,WAAWwW,OAChD,EAAC7tB,CAAC,CAlBD,OAkBAe,EAAAA,EAAAA,GAAAusB,EAAA,EAAAtsB,IAAA,SAAAC,MAvGD,WACI,IAAAuG,EAA2ErG,KAAKN,MAAzEga,EAAOrT,EAAPqT,QAAS+S,EAAcpmB,EAAdomB,eAAgB7gB,EAAavF,EAAbuF,cAAeihB,EAAexmB,EAAfwmB,gBAAiBC,EAAOzmB,EAAPymB,QAEzDH,EAAoCF,EAApCE,cAAaI,EAAuBN,EAArBO,aAAAA,OAAY,IAAAD,EAAG,GAAEA,EAEvC,OACItsB,EAAAA,EAAAA,KAACwsB,GAAAA,GAAU,CACP5sB,UAAW/B,KACXob,QAASA,EACTI,QAAS9Z,KAAK8Z,QACdoT,YAAa,CAACtnB,MAAO,kBACrBunB,MAAOntB,KAAKosB,SACZgB,qBAAmB,EACnBC,eAAa5rB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACNgrB,GAAc,IACjBE,cACIA,GAAiB/gB,IAAkBkhB,EAAUQ,EAAAA,QAAoBvrB,GACrEirB,aAAcA,EAAa/tB,OACrB+tB,EACA,CAAC,CAACltB,MAAO+sB,EAAiBnmB,KAAM,YAE1CqN,OAAM,GAAAxU,QAAAguB,EAAAA,GAAAA,GACGT,IAAWU,EAAAA,EAAAA,MACV,CACI,CACIvtB,KAAM,aACNyG,KAAM,cACNwT,QAAS,iBACTuT,UAAU,EACVC,oBAAqB,CACjBC,KAAM,gBACNC,SAAU1B,IAEd2B,OAAQ,CACJlP,YAAa,4BAIzB,IAAE,CACR,CACI1e,KAAM,UACNyG,KAAM,OACNwT,QAAS,eACTuT,UAAU,EACVI,OAAQ,CACJlP,YAAa,qBACbte,UAAW/B,GAAM,UAGzB,CACI2B,KAAM,gBACNyG,KAAM,kBACNwT,QAAS,iBACTuT,UAAU,EACVI,OAAQ,CACJlP,YAAa,4BACbmP,iBAAkBhB,MAEzBS,EAAAA,GAAAA,IACIQ,EAAAA,GAAAA,MACC,CACI,CACI9tB,KAAM,eACNyG,KAAM,eACNwT,QAAS,oBACTuT,UAAU,EACVI,OAAQ,CACJlP,YAAa,sBACbqP,aAAc,CAAC,YAI3B,KAAET,EAAAA,GAAAA,GACJT,EACE,CACI,CACI7sB,KAAM,aACNyG,KAAM,UACNwT,QAAS,0BAGjB,MAItB,KAACiS,CAAA,CAtFoB,CAAS/qB,EAAAA,WAyH5B2C,GAAqB,CACvBwoB,iBAAAA,EAAAA,GACAC,kBAAAA,EAAAA,GACAF,sBAAAA,GAAAA,IAGE2B,IAAY/pB,EAAAA,EAAAA,KApBM,SAACtC,GACrB,IACessB,EACXtsB,EADAoL,SAAWkhB,OAEf,MAAO,CACHrB,iBAAiBsB,EAAAA,EAAAA,IAAmBvsB,GACpCgK,eAAeP,EAAAA,EAAAA,IAAiBzJ,GAChC8X,QAASwU,EAAOE,mBAChB3B,eAAgByB,EAAOzB,eACvBvhB,SAASC,EAAAA,EAAAA,IAAWvJ,GACpBkrB,SAASuB,EAAAA,GAAAA,GAAYzsB,GAE7B,GAQ2CmC,IAE3C,SAAekqB,GAAU9B,IC1JoC,IAEvDmC,GAAa,SAAA7vB,IAAAC,EAAAA,EAAAA,GAAA4vB,EAAA7vB,GAAA,IAAAE,GAAAC,EAAAA,EAAAA,GAAA0vB,GAAA,SAAAA,IAAA,IAAAzvB,GAAAC,EAAAA,EAAAA,GAAA,KAAAwvB,GAAA,QAAAvvB,EAAAC,UAAAC,OAAAC,EAAA,IAAAC,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAAF,EAAAE,GAAAJ,UAAAI,GAWb,OAXaP,EAAAF,EAAAU,KAAAC,MAAAX,EAAA,OAAAY,OAAAL,KAMf0C,MAAQ,CACJ2sB,UAAW,GACXC,kBAAmB,GACnBC,oBAAoB,EACpBC,kBAAkB,GACrB7vB,CAAC,CAYD,OAZAe,EAAAA,EAAAA,GAAA0uB,EAAA,EAAAzuB,IAAA,SAAAC,MAED,WACI,IAAAC,EAAqCC,KAAKN,MAAnCivB,EAAe5uB,EAAf4uB,gBAAiBtuB,EAASN,EAATM,UACxB,OACIM,EAAAA,EAAAA,MAAA,QAAMN,UAAWA,EAAUH,SAAA,EACvBO,EAAAA,EAAAA,KAACoF,GAAAA,EAAM,CAACkc,KAAK,SAASnc,MAAM,iBAAiB9E,QAAS6tB,EAAgBzuB,SAAC,oBAGvEO,EAAAA,EAAAA,KAAC0rB,GAAmB,MAGhC,KAACmC,CAAA,CAvBc,CAASrtB,EAAAA,WA0BtB8C,GAAqB,CACvB4qB,gBAAAA,EAAAA,IAGJ,UAAezqB,EAAAA,EAAAA,IAAQ,KAAMH,GAA7B,CAAiDuqB,ICRjD,IAAMhwB,IAAQ0G,EAAAA,EAAAA,GAAG,4BAEjB,SAAS4pB,KACL,IAAMC,GAAkB7kB,EAAAA,EAAAA,IAAY8kB,EAAAA,IAC9B1jB,GAAUpB,EAAAA,EAAAA,IAAYqB,EAAAA,IAGtB0jB,GAFiB/kB,EAAAA,EAAAA,IAAYglB,EAAAA,IAEJ5jB,GAE/B,OACIzK,EAAAA,EAAAA,MAACsuB,GAAAA,EAAW,CAAC7W,KAAMqJ,EAAAA,GAAK8J,SAAU2D,UAAW,CAAC9jB,QAAS,IAAIlL,SAAA,EACvDO,EAAAA,EAAAA,KAAC0uB,GAAkB,KACnB1uB,EAAAA,EAAAA,KAAC2uB,GAAmB,KACpBzuB,EAAAA,EAAAA,MAAA,QAAMN,UAAW/B,GAAM,WAAW4B,SAAA,CAC7BwL,EAAAA,GAAU2jB,oCAAoC,CAC3CR,gBAAAA,EACAS,kBAAmBP,aAAO,EAAPA,EAASQ,eAEhC9uB,EAAAA,EAAAA,KAAC6tB,GAAa,CAACjuB,UAAW/B,GAAM,iBAIhD,CAEA,SAAS6wB,KACL,IAAMK,GAAuBxlB,EAAAA,EAAAA,IAAYylB,GAAAA,IACnCC,GAAa1lB,EAAAA,EAAAA,IAAY2lB,GAAAA,IACzB/lB,GAAWC,EAAAA,EAAAA,MACX+B,GAAgB5B,EAAAA,EAAAA,IAAYqB,EAAAA,IAE5BukB,EAA2BxuB,EAAAA,aAC7B,SAACS,GACG+H,GAASimB,EAAAA,EAAAA,IAAiBhuB,EAAKmK,MACnC,GACA,CAACpC,IAGCkmB,EAAwB1uB,EAAAA,aAAkB,WAC5CwI,GAASmmB,EAAAA,GAAAA,IAAwBnkB,GACrC,GAAG,CAAChC,EAAUgC,IAEd,OACInL,EAAAA,EAAAA,KAACuvB,GAAAA,EAAU,CACPpC,SAAU4B,EACVpsB,MAAOssB,EACPO,YAAaL,EACbnwB,SAAUqwB,EACVI,gBAAiBtkB,EACjBhH,MAAO,SAGnB,CAEA,IAAMurB,GAAmB,SAEzB,SAASf,KAEL,IAAMgB,GAAUpmB,EAAAA,EAAAA,IAAYqmB,EAAAA,IAA6B7lB,MAAM,GACzDZ,GAAWC,EAAAA,EAAAA,MACXwW,GAAUC,EAAAA,EAAAA,MACVpV,GAAUlB,EAAAA,EAAAA,IAAYmB,EAAAA,IAMtB/H,EAAQhC,EAAAA,SAAc,WACxB,MAAO,CAAC,CAAC2H,KAAM,KAAGxJ,QAAAguB,EAAAA,GAAAA,GAAK6C,IAASve,KAAI,SAAChQ,GACjC,IAAMuJ,EAAUvJ,EAAKkH,KACfA,EAAOqC,GAAW+kB,GAClBtP,EAAWzV,EACXuV,OAAOC,SAASC,SAuBlC,SAA0BA,EAAkB3V,GAKxC,OAJyBolB,KAAMjH,EAAAA,IAA4B,SAACkH,EAAIpH,GAC5D,OAAOtI,EAASvP,SAAS,IAAM6X,EACnC,IAE0BtI,EAAQ,IAAAthB,OAAO2L,EAAO,KAAA3L,OAAIkiB,EAAAA,GAAK8J,SAAQ,KAAAhsB,OAAI2pB,EAAAA,GAAYsB,QACrF,CA5BkBgG,CAAiB7P,OAAOC,SAASC,SAAU3V,GAEjD,OACIzK,EAAAA,EAAAA,KAAC+f,EAAAA,EAAe,CAAYC,MAAMC,EAAAA,GAAAA,IAAcG,EAAU,CAACzV,QAAAA,IAAUlL,SAChE6I,GADiBA,EAI9B,GACJ,GAAG,CAACqnB,EAASllB,IAEb,OACIzK,EAAAA,EAAAA,KAACwgB,EAAAA,EAAW,CACRC,SAAUb,EAAQnO,KAClB7R,UAAW/B,GAAM,eACjB6iB,SAxBuB,SAACthB,GAC5B+J,GAASimB,EAAAA,EAAAA,IAAiBhwB,IAAQswB,GAAmB,GAAKtwB,GAC9D,EAuBQuhB,UAAQ,EAAAlhB,SAEPkD,GAGb,CAUA,SAAehC,EAAAA,KAAWwtB,G,mFCjInB,SAASlD,EAA4CtV,GACxD,IAAMlL,GAAUlB,EAAAA,EAAAA,IAAYmB,EAAAA,KAE5BslB,EAAAA,EAAAA,KAAkBhvB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EACb2U,GAAM,IACTsa,QAASta,EAAOsa,SAAO,MAAAnxB,OAAU2L,KAEzC,C,8MCDaylB,EAAqB,IAAIC,EAAAA,EAqB/B,SAASC,EAAYC,GACxB,OAAOpf,EAAAA,GAAMC,MAAMof,OAAOD,EAAa,YAAYE,WAAW,GAAGC,WACrE,CAEO,SAASC,EAAgBllB,EAAMmlB,GAClC,IAAMC,EAAaP,EAAY7kB,GAE/B,OAAOqlB,EAAAA,GACF5iB,KAAK6iB,EAAAA,GAAQC,0BAA2B,CACrCC,WAAY,CAACxlB,KAAMolB,EAAYK,WAAY,CAAC,OAAQ,YACpDC,aAAcf,EAAmBgB,kBAEpC7a,KAAKpF,EAAAA,GAAMkgB,UACX9a,MAAK,SAAC+a,GAAK,OAhCpB,SAA4BC,EAAaV,EAAYlxB,GACjD,IAAI6xB,EAAcngB,IAAK1R,GAAU,SAAC8xB,GAC9B,IAAMC,EAAW,CAAC,EASlB,OAPAA,EAASb,WAAaA,EACtBa,EAASC,UAAY,IAAM5W,EAAAA,EAAQC,OAAO7J,EAAAA,GAAMkgB,SAASI,IACzDC,EAASjmB,KAAOimB,EAASb,WAAaa,EAASC,UAC/CD,EAASvrB,KAAOgL,EAAAA,GAAMkgB,SAASI,EAAO,UACtCC,EAASE,QAAUzgB,EAAAA,GAAMkgB,SAASI,EAAO,aACzCC,EAASG,iBAAmB1gB,EAAAA,GAAMkgB,SAASI,EAAO,YAE3CC,CACX,IAIA,OAFcI,IAAQN,EAAa,YAGvC,CAeyBO,CAAmBtmB,EAAMolB,EAAYS,EAAM,IAC3D/a,MAAK,SAACib,GAAW,OAAMZ,EAAeA,EAAaY,GAAeA,CAAW,GACtF,CAEO,SAASQ,EAAoBzB,EAAaiB,GAC7C,IAAM/lB,EAAO8kB,EAAY0B,cAEzB,OAAOnd,IAAQ0c,GAAa,SAACC,GACzB,IAAMS,EAAgBT,EAAMhmB,KAAKY,WAAWZ,GACtC0mB,EAAqBV,EAAMhmB,OAASA,GAAuB,aAAfgmB,EAAMtrB,KAExD,OAAO+rB,GAAiBC,CAC5B,GACJ,CAEO,SAASC,EAAqBC,EAAYxwB,GAC7C,OAAuB,IAAnBA,GAAwBA,IAAkBwwB,EAAW3zB,OAAS,EACvD,EAGJmD,EAAgB,CAC3B,CAEO,SAASywB,EAAqBd,EAAa3vB,GAC9C,OAAuB,IAAnBA,GAA0C,IAAlBA,EACjB2vB,EAAY9yB,OAAS,EAGzBmD,EAAgB,CAC3B,CAEO,SAAS0wB,EAAiBF,GAC7B,MAA2B,aAApBA,EAAWlsB,KAAsBksB,EAAW5mB,KAAO,IAAM4mB,EAAW5mB,IAC/E,CAEO,SAAS6Z,EAAmBnf,EAAM0rB,GACrC,IAAMW,EAAQ,CACVC,SAAU,WACVC,YAAa,WACbC,WAAY,WACZC,YAAa,WACbC,YAAa,WACbC,aAAc,WACdC,SAAU,SACVC,wBAAyB,cACzBC,eAAgB,QAChBC,YAAa,KACbC,QAAS,OACTC,MAAO,KACPC,cAAe,SACfC,iBAAkB,KAClBC,uBAAwB,yBACxBC,sBAAuB,wBACvBC,KAAM,OACNC,wBAAyB,SACzBC,gBAAiB,SACjBC,YAAa,cACbC,mBAAoB,cACpBC,KAAM3iB,EAAAA,GAAM4iB,WAAWlC,GAAoB,SAAW,OACtDmC,UAAW,OACXC,gBAAiB,OACjBC,UAAW,SACXC,cAAe,aACfC,SAAU,MACVC,oCAAqC,oBACrCC,gCAAiC,gBACjCC,sBAAuB,cAK3B,OAFapuB,EAAOqsB,EAAMrsB,IAAS,eAAiB,WAGxD,C,6DCnHA,QADsB,SAAAhH,GAAK,OAAIe,EAAAA,EAAAA,KAAA,OAAAgB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CAAKszB,MAAM,6BAA6BC,KAAK,OAAOC,QAAQ,aAAgBv1B,GAAK,IAAAQ,UAAEO,EAAAA,EAAAA,KAAA,QAAMu0B,KAAK,eAAeE,SAAS,UAAUC,EAAE,qKAAqKC,SAAS,cAAmB,C,6FCQlW,MAAM/2B,GAAI,E,SAAA,IAAM,WACVg3B,EAAoB,CAAC,SAAU,OACxB/rB,EAAW5J,IACpB,MAAM,SAAEQ,EAAQ,QAAEqJ,EAAO,SAAEnE,EAAQ,UAAE8c,EAAYmT,EAAiB,GAAE5uB,EAAE,GAAE6uB,EAAE,UAAEj1B,EAAS,MAAEoE,EAAK,cAAE8wB,EAAa,iBAAEC,EAAgB,UAAEC,EAAY,IAAI,WAAEC,GAAgBh2B,GAC1Ji2B,EAAeC,GAAoB,WAAe,MACnDC,GAAiB,EAAAC,EAAA,GAAkBH,EAAe,CACpDF,YACAC,aACAK,uBAAuB,IAOrB/D,EAAQ,WAAegE,KAAK91B,GAC5B+1B,EAAWjE,EAAMkE,IACjBA,GAAM,EAAAC,EAAA,GAAWP,EAAkBK,GACzC,OAAQ,gBAAoB,WAAgB,KACxC,eAAmBjE,EAAO,CAAEkE,QAC5BP,EATQ,gBAAoBS,EAAA,EAAO,CAAEd,GAAIA,EAAIe,KAAM,UAAWh2B,UAAWhC,EAAE,KAAMgC,GAAYoE,MAAOA,EAAO6xB,KAAMT,IAAmBzwB,EAAU8c,UAAWA,EAAWqU,UAAW,CAAExH,QAAS4G,GAAiBJ,cAAeA,EAAeiB,sBAAsB,EAAMC,qBAAqB,EAAMC,cAAc,EAAMjwB,GAAIA,GACpT,gBAAoB,MAAO,CAAEpG,UAAWhC,EAAE,UAAWm3B,IACjD,gBAAoBhsB,EAAA,EAAM,CAAEC,QAAS,aAAcJ,MAAO,iBAAmBE,KAOrD,KAAM,C,0DCzBvC,MAAMusB,EAAoB,CAACa,GAAUlB,YAAY,IAAKC,aAAYK,yBAAwB,MAC7F,MAAOF,EAAgBe,EAAaC,GCHjC,SAAoBC,GACvB,MAAOh3B,EAAOi3B,GAAY,YDEoC,GCD9D,MAAO,CACHj3B,EACA,eAAkB,IAAMi3B,GAAS,IAAO,IACxC,eAAkB,IAAMA,GAAS,IAAQ,IACzC,eAAkB,IAAMA,GAAUC,IAASA,KAAM,IAEzD,CDLuDC,GAC7CC,EAAa,WACbC,EAAmB,UAAa,GAiDtC,OAhDA,aAAgB,KACZ,GAAKR,EAuCL,OAPAA,EAAOS,iBAAiB,aAAcC,GACtCV,EAAOS,iBAAiB,aAAcE,GACtCX,EAAOS,iBAAiB,UAAWpuB,GAC9B+sB,IACDY,EAAOS,iBAAiB,QAASG,GACjCZ,EAAOS,iBAAiB,OAAQI,IAE7B,KACHb,EAAOc,oBAAoB,aAAcJ,GACzCV,EAAOc,oBAAoB,aAAcH,GACzCX,EAAOc,oBAAoB,QAASF,GACpCZ,EAAOc,oBAAoB,OAAQD,GACnCb,EAAOc,oBAAoB,UAAWzuB,EAAc,EAzCxD,SAASquB,IACLK,aAAaR,EAAWnI,SACxBmI,EAAWnI,QAAUpO,OAAOK,WAAW4V,EAAanB,EACxD,CACA,SAAS6B,IACLI,aAAaR,EAAWnI,SACxBmI,EAAWnI,QAAUpO,OAAOK,WAAW6V,EAAanB,EACxD,CACA,SAAS6B,EAAkBtuB,GAClBkuB,EAAiBpI,SAAWiE,SAAS2E,gBAAkB1uB,EAAE2uB,SAC1DT,EAAiBpI,SAAU,EAC3B2I,aAAaR,EAAWnI,SACxB6H,IAER,CACA,SAASY,EAAiBvuB,GAClBkuB,EAAiBpI,UAChB9lB,EAAE4uB,cAAcC,SAAS7uB,EAAE8uB,iBAC5BZ,EAAiBpI,SAAU,EAC3B2I,aAAaR,EAAWnI,SACxB8H,IAER,CACA,SAAS7tB,EAAcC,GACfA,EAAEpJ,MAAQ,IAAQm4B,SAClBN,aAAaR,EAAWnI,SACxB8H,IAER,CAcC,GACF,CAACF,EAAQC,EAAaC,EAAapB,EAAWC,EAAYK,IACtDF,CAAc,C","sources":["webpack://@ytsaurus/ui/./src/ui/components/CollapsibleSection/CollapsibleSection.tsx","webpack://@ytsaurus/ui/./src/ui/components/ElementsTable/ElementsTableFooter.js","webpack://@ytsaurus/ui/./src/ui/components/ElementsTable/hocs/withStickyFooter.js","webpack://@ytsaurus/ui/./src/ui/components/ElementsTable/hocs/withStickyHead.js","webpack://@ytsaurus/ui/./src/ui/components/Pagination/Pagination.js","webpack://@ytsaurus/ui/./src/ui/components/Pagination/SimplePagination.tsx","webpack://@ytsaurus/ui/./src/ui/components/TextInputWithDebounce/TextInputWithDebounce.tsx","webpack://@ytsaurus/ui/./src/ui/components/WarningIcon/WarningIcon.tsx","webpack://@ytsaurus/ui/./src/ui/components/common/Datepicker/index.tsx","webpack://@ytsaurus/ui/./src/ui/hooks/global.tsx","webpack://@ytsaurus/ui/./src/ui/pages/accounts/AccountsNoContent.js","webpack://@ytsaurus/ui/./src/ui/pages/accounts/tabs/statistic/AccountStatisticTab.tsx","webpack://@ytsaurus/ui/./src/ui/pages/accounts/tabs/acl/AccountsAclTab.js","webpack://@ytsaurus/ui/./src/ui/pages/accounts/tabs/monitor/AccountsMonitorTab.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/accounts/account-usage.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/accounts/account-usage-diff.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/accounts/account-usage.ts","webpack://@ytsaurus/ui/./src/ui/pages/accounts/tabs/detailed-usage/AccountUsageColumnsButton.tsx","webpack://@ytsaurus/ui/./src/ui/containers/PathFragment/PathFragment.tsx","webpack://@ytsaurus/ui/./src/ui/pages/accounts/tabs/detailed-usage/AccountUsageToolbar.tsx","webpack://@ytsaurus/ui/./src/ui/pages/accounts/tabs/detailed-usage/AccountActionsField.tsx","webpack://@ytsaurus/ui/./src/ui/pages/accounts/tabs/detailed-usage/DetailTableCell.tsx","webpack://@ytsaurus/ui/./src/ui/pages/accounts/tabs/detailed-usage/AccountUsageDetails.tsx","webpack://@ytsaurus/ui/./src/ui/pages/accounts/tabs/detailed-usage/AccountUsageTab.tsx","webpack://@ytsaurus/ui/./src/ui/pages/accounts/Accounts/Accounts.tsx","webpack://@ytsaurus/ui/./src/ui/pages/accounts/tabs/general/Editor/AccountCreateDialog.tsx","webpack://@ytsaurus/ui/./src/ui/pages/accounts/tabs/general/Editor/AccountCreate.js","webpack://@ytsaurus/ui/./src/ui/pages/accounts/Accounts/AccountsTopRowContent.tsx","webpack://@ytsaurus/ui/./src/ui/rum/rum-app-measures.ts","webpack://@ytsaurus/ui/./src/ui/utils/navigation/path-editor.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/svgs/circle-info.svg","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Tooltip/Tooltip.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/hooks/private/useTooltipVisible/index.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/hooks/private/useBoolean/useBoolean.js"],"sourcesContent":["import React, {Component} from 'react';\nimport block from 'bem-cn-lite';\n\nimport ErrorBoundary from '../../components/ErrorBoundary/ErrorBoundary';\n\nimport './CollapsibleSection.scss';\nimport Icon from '../../components/Icon/Icon';\n\nconst b = block('collapsible-section');\nconst headingCN = block('elements-heading');\n\ntype PropsStateLess = CollapsibleSectionProps & {\n onToggle: Required<CollapsibleSectionProps>['onToggle'];\n};\n\nexport class CollapsibleSectionStateLess extends Component<PropsStateLess> {\n static defaultProps = {\n size: 'm',\n collapsed: false,\n marginDirection: 'top',\n };\n\n toggle = () => {\n const {onToggle} = this.props;\n\n onToggle(!this.props.collapsed);\n };\n\n render() {\n const {\n name,\n children,\n size,\n overview,\n className,\n headingClassName,\n collapsed,\n marginDirection,\n togglerRightPadding,\n } = this.props;\n\n return (\n <ErrorBoundary>\n <div className={b({margin: marginDirection}, className)}>\n <div className={headingCN({size, overview: 'yes'}, headingClassName)}>\n <span\n className={headingCN(\n 'heading',\n {\n clickable: 'yes',\n },\n b('title'),\n )}\n onClick={this.toggle}\n >\n {name}\n <a>\n <Icon\n className={b('toggler', {'right-padding': togglerRightPadding})}\n awesome={collapsed ? 'angle-down' : 'angle-up'}\n />\n </a>\n </span>\n {overview}\n </div>\n\n {!collapsed && <ErrorBoundary>{children}</ErrorBoundary>}\n </div>\n </ErrorBoundary>\n );\n }\n}\n\nexport interface CollapsibleSectionProps {\n className?: string;\n headingClassName?: string;\n name: React.ReactNode;\n collapsed?: boolean;\n onToggle?: (value: boolean) => void;\n\n size?: 'unset' | 'xs' | 's' | 'ss' | 'ns' | 'n' | 'm' | 'l';\n children?: React.ReactNode;\n overview?: React.ReactNode;\n\n marginDirection?: 'top' | 'bottom';\n\n togglerRightPadding?: 'small';\n}\n\nexport default function CollapsibleSection(props: CollapsibleSectionProps) {\n const {onToggle} = props;\n const [collapsed, setCollapsed] = React.useState(props.collapsed);\n\n const onChange = React.useCallback(\n (value: boolean) => {\n setCollapsed(value);\n if (onToggle) {\n onToggle(value);\n }\n },\n [setCollapsed, onToggle],\n );\n\n return <CollapsibleSectionStateLess {...props} onToggle={onChange} collapsed={collapsed} />;\n}\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport block from 'bem-cn-lite';\n\nimport ElementsTableRow from '../../components/ElementsTable/ElementsTableRow';\n\nimport {ELEMENTS_TABLE, TemplatesPropType, prepareColumnsData} from './utils';\n\nimport './ElementsTable.scss';\n\nexport default class ElementsTableFooter extends Component {\n static propTypes = {\n footer: PropTypes.object.isRequired,\n templates: TemplatesPropType.isRequired,\n cssHover: PropTypes.bool,\n };\n\n static defaultProps = {\n templates: {},\n cssHover: false,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {};\n }\n\n static getDerivedStateFromProps(props) {\n const {columns} = props;\n const {items, set} = prepareColumnsData(columns);\n\n return {\n columnItems: items,\n columnSet: set,\n };\n }\n\n renderRow(item, index, key = index) {\n const {css, itemHeight, templates, itemMods, selectedIndex, computeKey, cssHover} =\n this.props;\n const {columnSet, columnItems} = this.state;\n\n const selected = selectedIndex === index;\n const currentKey = typeof computeKey === 'function' ? computeKey(item) : key;\n\n return (\n <ElementsTableRow\n key={currentKey}\n columnSet={columnSet}\n columnItems={columnItems}\n item={item}\n itemHeight={itemHeight}\n css={css}\n templates={templates}\n selected={selected}\n index={index}\n itemMods={itemMods}\n cssHover={cssHover}\n />\n );\n }\n\n render() {\n const bFooter = block(ELEMENTS_TABLE)('footer');\n const {footer} = this.props;\n\n return <tfoot className={bFooter}>{this.renderRow(footer, 0)}</tfoot>;\n }\n}\n","import React from 'react';\nimport block from 'bem-cn-lite';\n\nimport ElementsTableFooter from '../../../components/ElementsTable/ElementsTableFooter';\n\nimport {getDisplayName} from '../../../utils';\nimport {prepareTableClassName} from '../../../components/ElementsTable/utils';\n\nimport '../ElementsTable.scss';\n\nexport default (Component) => {\n return class WithStickyFooter extends React.Component {\n static displayName = `WithStickyFooter(${getDisplayName(Component)})`;\n\n static defaultProps = {\n size: 'm',\n };\n\n renderStickyFooter() {\n const bWrapper = block('elements-table-wrapper')({\n sticky: 'bottom',\n });\n const {footer} = this.props;\n\n return (\n <div className={bWrapper}>\n <table className={prepareTableClassName(this.props)}>\n <ElementsTableFooter {...this.props} footer={footer} />\n </table>\n </div>\n );\n }\n\n render() {\n return (\n <React.Fragment>\n <Component {...this.props} />\n {this.props.footer && this.renderStickyFooter()}\n </React.Fragment>\n );\n }\n };\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {compose} from 'redux';\nimport block from 'bem-cn-lite';\n\nimport ElementsTableHeader from '../../../components/ElementsTable/ElementsTableHeader';\n\nimport {toggleColumnSortOrder} from '../../../store/actions/tables';\nimport {getDisplayName} from '../../../utils';\nimport {prepareTableClassName} from '../../../components/ElementsTable/utils';\nimport {HEADER_HEIGHT} from '../../../constants/index';\n\nimport '../ElementsTable.scss';\n\nconst withStickyHead = (Component) => {\n return class WithStickyHead extends React.Component {\n static displayName = `WithStickyHead(${getDisplayName(Component)})`;\n\n static propTypes = {\n top: PropTypes.number,\n };\n\n static defaultProps = {\n templates: {},\n size: 'm',\n theme: 'bordered',\n padded: false,\n striped: true,\n top: HEADER_HEIGHT,\n };\n\n renderStickyHead() {\n const {top} = this.props;\n const bWrapper = block('elements-table-wrapper')({sticky: 'top'});\n\n return (\n <div className={bWrapper} style={{top}}>\n <table className={prepareTableClassName(this.props)}>\n <ElementsTableHeader {...this.props} />\n </table>\n </div>\n );\n }\n\n render() {\n return (\n <React.Fragment>\n {this.renderStickyHead()}\n <Component {...this.props} />\n </React.Fragment>\n );\n }\n };\n};\n\nconst mapStateToProps = ({tables}) => {\n return {sortState: tables};\n};\n\nconst mapDispatchToProps = {\n toggleColumnSortOrder,\n};\n\nconst composedWithStickyHead = compose(\n connect(mapStateToProps, mapDispatchToProps),\n withStickyHead,\n);\n\nexport default composedWithStickyHead;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\nimport {TextInput} from '@gravity-ui/uikit';\n\nimport Icon from '../Icon/Icon';\nimport Hotkey from '../../components/Hotkey/Hotkey';\n\nimport './Pagination.scss';\nimport Button from '../Button/Button';\n\nconst paginationControlComponent = PropTypes.shape({\n handler: PropTypes.func,\n target: PropTypes.func,\n disabled: PropTypes.bool,\n hotkey: PropTypes.string,\n hotkeyScope: PropTypes.string,\n hotkeyHandler: PropTypes.func,\n}).isRequired;\n\nconst supportedSizes = ['s', 'm', 'l'];\nconst block = cn('elements-pagination');\n\nexport default class Pagination extends React.Component {\n static propTypes = {\n className: PropTypes.string,\n size: PropTypes.oneOf(supportedSizes),\n first: paginationControlComponent,\n previous: paginationControlComponent,\n next: paginationControlComponent,\n last: paginationControlComponent,\n tooltip: PropTypes.string,\n showInput: PropTypes.bool,\n inputValue: PropTypes.string,\n onChange: PropTypes.func,\n };\n static defaultProps = {\n size: 'm',\n showInput: false,\n };\n\n renderComponent(name, control) {\n const handler = control.handler;\n\n const disabled = typeof control.disabled === 'boolean' ? control.disabled : false;\n\n const {size, tooltip} = this.props;\n const hotkeySettings = [\n {\n keys: control.hotkey,\n scope: control.hotkeyScope,\n handler: control.hotkeyHandler,\n },\n ];\n\n return (\n <span title={tooltip}>\n <Button\n size={size}\n onClick={handler}\n disabled={disabled}\n className={block('control', {name})}\n title={\n {\n first: 'First page',\n previous: 'Previous page',\n next: 'Next page',\n last: 'Last page',\n }[name]\n }\n pin={\n {\n first: 'round-brick',\n previous: 'clear-brick',\n next: 'brick-clear',\n last: 'brick-round',\n }[name]\n }\n >\n <Icon\n awesome={\n {\n first: 'angle-double-left',\n previous: 'angle-left',\n next: 'angle-right',\n last: 'angle-double-right',\n }[name]\n }\n />\n </Button>\n {typeof control.hotkeyHandler !== 'undefined' && (\n <Hotkey settings={hotkeySettings} />\n )}\n </span>\n );\n }\n renderInput() {\n const {showInput, inputValue, onChange, size} = this.props;\n\n return showInput ? (\n <TextInput\n qa=\"yt-pagination_input\"\n size={size}\n type=\"text\"\n value={inputValue}\n onUpdate={onChange}\n pin={'clear-clear'}\n />\n ) : null;\n }\n render() {\n const {first, previous, next, last, className} = this.props;\n\n return (\n <div className={block(null, className)}>\n {this.renderComponent('first', first)}\n {this.renderComponent('previous', previous)}\n {this.renderInput()}\n {this.renderComponent('next', next)}\n {this.renderComponent('last', last)}\n </div>\n );\n }\n}\n","import React from 'react';\nimport Pagination from './Pagination';\n\ninterface Props {\n value?: number;\n min?: number;\n max?: number;\n onChange: (value: number) => void;\n disabled?: boolean;\n step?: number;\n className?: string;\n}\n\nfunction SimplePagination(props: Props) {\n const {value = NaN, min = NaN, max = NaN, onChange, disabled, step = 1, className} = props;\n\n const firstDiff = isNaN(value) || isNaN(min) ? 0 : value - min;\n const lastDiff = isNaN(value) || isNaN(max) ? 0 : max - value;\n\n const handleToFirst = React.useCallback(() => {\n onChange(min);\n }, [min, onChange]);\n\n const handleToPrev = React.useCallback(() => {\n const newValue = value - step;\n onChange(newValue < min ? min : newValue);\n }, [min, value, step, onChange]);\n\n const handleToNext = React.useCallback(() => {\n const newValue = value + step;\n onChange(newValue > max ? max : newValue);\n }, [max, value, step, onChange]);\n\n const handleToLast = React.useCallback(() => {\n onChange(max);\n }, [max, onChange]);\n\n return (\n <Pagination\n className={className}\n first={{\n handler: handleToFirst,\n disabled: firstDiff === 0 || disabled,\n }}\n previous={{\n handler: handleToPrev,\n disabled: firstDiff === 0 || disabled,\n }}\n next={{\n handler: handleToNext,\n disabled: lastDiff === 0 || disabled,\n }}\n last={{\n handler: handleToLast,\n disabled: lastDiff === 0 || disabled,\n }}\n />\n );\n}\n\nexport default React.memo(SimplePagination);\n","import React from 'react';\nimport throttle_ from 'lodash/throttle';\n\nimport {TextInput, TextInputProps} from '@gravity-ui/uikit';\n\nexport interface TextInputWithDebounceProps extends TextInputProps {\n debounce?: number;\n onBlur?: (e: React.FocusEvent) => void;\n onEnterKeyDown?: (e: React.KeyboardEvent) => void;\n}\n\nfunction TextInputWithDebounce(props: TextInputWithDebounceProps) {\n const {\n debounce = 400,\n onUpdate = () => {},\n onBlur,\n value,\n onEnterKeyDown,\n onKeyDown,\n ...rest\n } = props;\n\n const [input, setInput] = React.useState<string | undefined>();\n\n const handleChangeExt = React.useMemo(() => {\n return throttle_(onUpdate as any, debounce);\n }, [debounce, onUpdate]);\n\n const handleChange = React.useCallback(\n (text: string) => {\n setInput(text);\n handleChangeExt(text);\n },\n [handleChangeExt, setInput],\n );\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (onKeyDown) {\n onKeyDown(e);\n }\n if (e.key === 'Enter' && onEnterKeyDown) {\n onEnterKeyDown(e);\n }\n },\n [onEnterKeyDown, onKeyDown],\n );\n\n const handleBlur = React.useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n setInput(undefined);\n\n if (onBlur) {\n onBlur(e);\n }\n },\n [setInput, onBlur],\n );\n\n return (\n <TextInput\n onUpdate={handleChange}\n {...rest}\n value={input === undefined ? value : input}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n />\n );\n}\n\nexport default React.memo(TextInputWithDebounce);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {Text} from '@gravity-ui/uikit';\n\nimport Icon from '../../components/Icon/Icon';\nimport {Tooltip} from '../Tooltip/Tooltip';\n\nimport './WarningIcon.scss';\n\nconst b = cn('yt-warning-icon');\n\ninterface Props {\n className?: string;\n hoverContent?: React.ReactNode;\n color?: 'warning' | 'danger';\n children?: React.ReactNode;\n}\n\nexport default function WarningIcon(props: Props) {\n const {className, hoverContent, children, color} = props;\n return (\n <span className={b(null, className)}>\n <Tooltip className={b('tooltip')} content={hoverContent}>\n <Icon className={b('icon', {color})} awesome=\"exclamation-triangle\" />\n {children && (\n <Text variant=\"inherit\" color={color}>\n {children}\n </Text>\n )}\n </Tooltip>\n </span>\n );\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 {useDispatch, useSelector} from 'react-redux';\n\nimport sortedIndexBy_ from 'lodash/sortedIndexBy';\nimport sortedLastIndexBy_ from 'lodash/sortedLastIndexBy';\n\nimport {getAllUserNamesSorted} from '../store/selectors/global';\nimport {\n loadAccountsIfNotLoaded,\n loadBundlesIfNotLoaded,\n loadGroupsIfNotLoaded,\n loadUsersIfNotLoaded,\n} from '../store/actions/global';\n\nexport function useAllUserNamesFiltered() {\n const dispatch = useDispatch();\n React.useEffect(() => {\n dispatch(loadUsersIfNotLoaded());\n }, []);\n\n const namesSorted = useSelector(getAllUserNamesSorted);\n\n const getFiltered = React.useCallback(\n (text: string) => {\n const from = sortedIndexBy_(namesSorted, text, (item) => item.substr(0, text.length));\n const to = sortedLastIndexBy_(namesSorted, text, (item) => item.substr(0, text.length));\n const res = namesSorted.slice(from, to);\n return res;\n },\n [namesSorted],\n );\n\n return {getFiltered, allNames: namesSorted};\n}\n\nexport function useGroupsLoaded() {\n const dispatch = useDispatch();\n\n React.useEffect(() => {\n dispatch(loadGroupsIfNotLoaded());\n }, []);\n}\n\nexport function GroupsLoader({children}: {children?: React.ReactElement}) {\n useGroupsLoaded();\n return children ?? null;\n}\n\nexport function useAccountsLoaded() {\n const dispatch = useDispatch();\n\n React.useEffect(() => {\n dispatch(loadAccountsIfNotLoaded());\n }, []);\n}\n\nexport function AccountsLoader() {\n useAccountsLoaded();\n return null;\n}\n\nexport function useBundlesLoaded() {\n const dispatch = useDispatch();\n\n React.useEffect(() => {\n dispatch(loadBundlesIfNotLoaded());\n }, []);\n}\n\nexport function BundlesLoader() {\n useBundlesLoaded();\n return null;\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {NoContent} from '../../components/NoContent/NoContent';\n\nAccountsNoContent.propTypes = {\n hint: PropTypes.node.isRequired,\n};\n\nexport default function AccountsNoContent({hint}) {\n return <NoContent hint={hint} warning=\"You don't have any selected accounts\" />;\n}\n","import React from 'react';\nimport {useSelector} from 'react-redux';\n\nimport AccountsNoContent from '../../../../pages/accounts/AccountsNoContent';\nimport {getCluster, getTheme} from '../../../../store/selectors/global';\nimport {\n getActiveAccount,\n getActiveAccountSubtreeNames,\n} from '../../../../store/selectors/accounts/accounts';\nimport UIFactory from '../../../../UIFactory';\n\nfunction AccountStatisticTab() {\n const cluster = useSelector(getCluster);\n const account = useSelector(getActiveAccount);\n const accountSubtreeAllNames = useSelector(getActiveAccountSubtreeNames);\n const theme = useSelector(getTheme);\n\n if (!account) {\n return <AccountsNoContent hint=\"Choose an account to build a forecast\" />;\n }\n\n const AccountStatisticsComponent = UIFactory.getStatisticsComponentForAccount()!;\n\n return (\n <div className={'elements-section'}>\n <AccountStatisticsComponent {...{cluster, account, accountSubtreeAllNames, theme}} />\n </div>\n );\n}\n\nexport default React.memo(AccountStatisticTab);\n","import * as React from 'react';\nimport {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\n\nimport AccountsNoContent from '../../../../pages/accounts/AccountsNoContent';\n\nimport {getActiveAccount} from '../../../../store/selectors/accounts/accounts';\nimport {fetchAccounts} from '../../../../store/actions/accounts/accounts';\nimport {loadUsers} from '../../../../store/actions/accounts/editor';\nimport {AccountsAcl} from '../../../../containers/ACL';\n\nAccountsAclTab.propTypes = {\n activeAccount: PropTypes.string,\n fetchAccounts: PropTypes.func,\n};\n\nfunction AccountsAclTab(props) {\n const {activeAccount} = props;\n if (!activeAccount) {\n return <AccountsNoContent hint=\"Choose an account to display its ACL\" />;\n }\n\n return <AccountsAcl path={activeAccount} />;\n}\n\nconst mapAccountsAclTabStateToProps = (state) => {\n return {\n activeAccount: getActiveAccount(state),\n };\n};\n\nexport default connect(mapAccountsAclTabStateToProps, {\n fetchAccounts,\n loadUsers,\n})(AccountsAclTab);\n","import React from 'react';\nimport {useSelector} from 'react-redux';\n\nimport AccountsNoContent from '../../AccountsNoContent';\n\nimport {getActiveAccount} from '../../../../store/selectors/accounts/accounts';\nimport {getCluster} from '../../../../store/selectors/global';\nimport ErrorBoundary from '../../../../components/ErrorBoundary/ErrorBoundary';\n\nfunction AccountsMonitorTab(props: {\n component: React.ComponentType<{cluster: string; account: string}>;\n}) {\n const {component: AccountMonitor} = props;\n const account = useSelector(getActiveAccount);\n const cluster = useSelector(getCluster);\n\n if (!account) {\n return <AccountsNoContent hint={'Please choose one to display charts'} />;\n }\n\n return (\n <ErrorBoundary>\n <AccountMonitor {...{account, cluster}} />\n </ErrorBoundary>\n );\n}\n\nexport default React.memo(AccountsMonitorTab);\n","import {RootState} from '../../../store/reducers';\nimport {createSelector} from 'reselect';\nimport {PAGE_SIZE} from '../../reducers/accounts/usage/accounts-usage-filters';\nimport ypath from '../../../common/thor/ypath';\n\nimport filter_ from 'lodash/filter';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport {SortState} from '../../../types';\nimport {\n getSettingsAccountUsageColumnsList,\n getSettingsAccountUsageColumnsListFolders,\n getSettingsAccountUsageColumnsTree,\n} from '../../../store/selectors/settings/settings-ts';\nimport format from '../../../common/hammer/format';\nimport {AccountUsageDataItem} from '../../../store/reducers/accounts/usage/account-usage-types';\n\nconst ACCOUNT_USAGE_COLUMN_TITLE: Record<string, string> = {\n approximate_row_count: '~Row count',\n master_memory: 'Master mem',\n};\n\nconst MEDIUM_PREFIX = 'medium:';\n\nexport function readableAccountUsageColumnName(column: string, withMediumPrefix?: boolean) {\n const title = ACCOUNT_USAGE_COLUMN_TITLE[column];\n if (title) {\n return title;\n }\n\n const readable =\n !withMediumPrefix && column.startsWith(MEDIUM_PREFIX)\n ? column.substr(MEDIUM_PREFIX.length)\n : column;\n return format.Readable(readable);\n}\n\nexport const getAccountUsageSnapshots = (state: RootState) =>\n state.accounts.usage.snapshots.snapshot_timestamps;\n\nexport const getAccountUsageCurrentSnapshot = (state: RootState) =>\n state.accounts.usage.filters.currentSnapshot;\nexport const getAccountUsageTreePath = (state: RootState) => state.accounts.usage.filters.treePath;\nexport const getAccountUsageSortState = (state: RootState) =>\n state.accounts.usage.filters.sortState;\n\nexport const getAccountUsageViewType = (state: RootState) => state.accounts.usage.filters.viewType;\n\nexport const getAccountUsagePathFilter = (state: RootState) =>\n state.accounts.usage.filters.pathFilter;\nexport const getAccountUsageOwnerFilter = (state: RootState) =>\n state.accounts.usage.filters.ownerFilter;\nexport const getAccountUsageDateRangeFilter = (state: RootState) =>\n state.accounts.usage.filters.dateRange;\nexport const getAccountUsageDateRangeTypeFilter = (state: RootState) =>\n state.accounts.usage.filters.dateRangeType;\nexport const getAccountsUsageDiffFromSnapshot = (state: RootState) =>\n state.accounts.usage.filters.diffFromSnapshot;\nexport const getAccountsUsageDiffToSnapshot = (state: RootState) =>\n state.accounts.usage.filters.diffToSnapshot;\nconst getAccountUsagePageIndexRaw = (state: RootState) => state.accounts.usage.filters.pageIndex;\n\nexport const getAccountUsageListRequestParams = (state: RootState) =>\n state.accounts.usage.list.requestParams;\nexport const getAccountUsageListLoading = (state: RootState) => state.accounts.usage.list.loading;\nexport const getAccountUsageListLoaded = (state: RootState) => state.accounts.usage.list.loaded;\nexport const getAccountUsageListError = (state: RootState) => state.accounts.usage.list.error;\nexport const getAccountUsageListItems = (state: RootState) =>\n state.accounts.usage.list.response?.items || [];\nexport const getAccountUsageListFields = (state: RootState) =>\n state.accounts.usage.list.response?.fields || [];\nexport const getAccountUsageListMediums = (state: RootState) =>\n state.accounts.usage.list.response?.mediums || [];\nexport const getAccountUsageListRowCount = (state: RootState) =>\n state.accounts.usage.list.response?.row_count || 0;\n\nexport const getAccountUsageTreeRequestParams = (state: RootState) =>\n state.accounts.usage.tree.requestParams;\nexport const getAccountUsageTreeLoading = (state: RootState) => state.accounts.usage.tree.loading;\nexport const getAccountUsageTreeLoaded = (state: RootState) => state.accounts.usage.tree.loaded;\nexport const getAccountUsageTreeError = (state: RootState) => state.accounts.usage.tree.error;\nexport const getAccountUsageTreeItems = (state: RootState) =>\n state.accounts.usage.tree.response?.items || [];\nexport const getAccountUsageTreeFields = (state: RootState) =>\n state.accounts.usage.tree.response?.fields || [];\nexport const getAccountUsageTreeMediums = (state: RootState) =>\n state.accounts.usage.tree.response?.mediums || [];\nexport const getAccountUsageTreeRowCount = (state: RootState) =>\n state.accounts.usage.tree.response?.row_count || 0;\nexport const getAccountUsageTreeItemsBasePath = (state: RootState) =>\n state.accounts.usage.tree.base_path;\n\nexport const getAccountUsageListDiffRequestParams = (state: RootState) =>\n state.accounts.usage.listDiff.requestParams;\nexport const getAccountUsageListDiffLoading = (state: RootState) =>\n state.accounts.usage.listDiff.loading;\nexport const getAccountUsageListDiffLoaded = (state: RootState) =>\n state.accounts.usage.listDiff.loaded;\nexport const getAccountUsageListDiffError = (state: RootState) =>\n state.accounts.usage.listDiff.error;\nexport const getAccountUsageListDiffItems = (state: RootState) =>\n state.accounts.usage.listDiff.response?.items || [];\nexport const getAccountUsageListDiffFields = (state: RootState) =>\n state.accounts.usage.listDiff.response?.fields || [];\nexport const getAccountUsageListDiffMediums = (state: RootState) =>\n state.accounts.usage.listDiff.response?.mediums || [];\nexport const getAccountUsageListDiffRowCount = (state: RootState) =>\n state.accounts.usage.listDiff.response?.row_count || 0;\n\nexport const getAccountUsageTreeDiffRequestParams = (state: RootState) =>\n state.accounts.usage.treeDiff.requestParams;\nexport const getAccountUsageTreeDiffLoading = (state: RootState) =>\n state.accounts.usage.treeDiff.loading;\nexport const getAccountUsageTreeDiffLoaded = (state: RootState) =>\n state.accounts.usage.treeDiff.loaded;\nexport const getAccountUsageTreeDiffError = (state: RootState) =>\n state.accounts.usage.treeDiff.error;\nexport const getAccountUsageTreeDiffItems = (state: RootState) =>\n state.accounts.usage.treeDiff.response?.items || [];\nexport const getAccountUsageTreeDiffFields = (state: RootState) =>\n state.accounts.usage.treeDiff.response?.fields || [];\nexport const getAccountUsageTreeDiffMediums = (state: RootState) =>\n state.accounts.usage.treeDiff.response?.mediums || [];\nexport const getAccountUsageTreeDiffRowCount = (state: RootState) =>\n state.accounts.usage.treeDiff.response?.row_count || 0;\nexport const getAccountUsageTreeDiffItemsBasePath = (state: RootState) =>\n state.accounts.usage.treeDiff.base_path;\n\nexport const isAccountsUsageDiffView = createSelector([getAccountUsageViewType], (viewType) => {\n return viewType?.endsWith('-diff');\n});\n\nexport const getAccountUsageTreeItemsBasePathSplitted = createSelector(\n [\n getAccountUsageViewType,\n getAccountUsageTreeItemsBasePath,\n getAccountUsageTreeDiffItemsBasePath,\n ],\n (viewType, treePath, treeDiffPath) => {\n const path = viewType === 'tree-diff' ? treeDiffPath : treePath;\n if (!path) {\n return [];\n }\n\n const fragments: Array<{name: string}> = new ypath.YPath(path, 'absolute').fragments || [];\n\n return map_(fragments, (item, index) => {\n return {\n value: fragments\n .slice(0, index + 1)\n .map(({name}) => name)\n .join('/'),\n item: item.name,\n };\n });\n },\n);\n\nexport const getAccountUsageFieldFiltersRequestParameter = createSelector(\n [getAccountUsageDateRangeFilter, getAccountUsageDateRangeTypeFilter],\n ({from, to}, dateRangeType: 'creation_time' | 'modification_time') => {\n const res = [];\n\n if (from !== null) {\n res.push({\n field: dateRangeType,\n value: Math.round(new Date(from).getTime() / 1000),\n comparison: '>=' as const,\n });\n }\n\n if (to !== null) {\n res.push({\n field: dateRangeType,\n value: Math.round(new Date(to).getTime() / 1000),\n comparison: '<=' as const,\n });\n }\n\n return res;\n },\n);\n\nexport const getAccountUsagePageCount = createSelector(\n [\n getAccountUsageViewType,\n getAccountUsageListRowCount,\n getAccountUsageTreeRowCount,\n getAccountUsageListDiffRowCount,\n ],\n (viewType, listRowCount, treeRowCount, listDiffRowCount) => {\n let rowCount = listRowCount;\n if (viewType === 'tree') {\n rowCount = treeRowCount;\n } else if (viewType === 'list-diff' || viewType === 'list-plus-folders-diff') {\n rowCount = listDiffRowCount;\n }\n return rowCount > 0 ? Math.ceil(rowCount / PAGE_SIZE) : 0;\n },\n);\n\nexport const getAccountUsagePageIndex = createSelector(\n [getAccountUsagePageIndexRaw],\n (pageIndex) => {\n return Math.max(0, Number(pageIndex));\n },\n);\n\nexport const getAccountUsageSortStateByColumn = createSelector(\n [getAccountUsageSortState],\n (sortState) => {\n return reduce_(\n sortState,\n (acc, {column, order}, index) => {\n if (column && order) {\n acc[column] = {\n order,\n multisortIndex: sortState.length > 1 ? index + 1 : undefined,\n };\n }\n return acc;\n },\n {} as Record<string, {order: Required<SortState>['order']; multisortIndex?: number}>,\n );\n },\n);\n\nexport const getAccountUsageAvailableColumns = createSelector(\n [\n getAccountUsageViewType,\n getAccountUsageListFields,\n getAccountUsageTreeFields,\n getAccountUsageListDiffFields,\n getAccountUsageTreeDiffFields,\n ],\n (viewType, listFields, treeFields, listDiffFields, treeDiffFields) => {\n switch (viewType) {\n case 'list':\n case 'list-plus-folders':\n return listFields;\n case 'list-diff':\n case 'list-plus-folders-diff':\n return listDiffFields;\n case 'tree':\n return treeFields;\n case 'tree-diff':\n return treeDiffFields;\n }\n return [];\n },\n);\n\nconst defaultTreeColumns: Array<keyof AccountUsageDataItem> = [\n 'owner',\n 'disk_space',\n 'medium:default',\n 'medium:ssd_blobs',\n 'medium:nvme_blobs',\n 'chunk_count',\n 'node_count',\n 'modification_time',\n] as any;\nconst defaultListColumns: Array<keyof AccountUsageDataItem> = [\n 'owner',\n 'disk_space',\n 'medium:default',\n 'medium:ssd_blobs',\n 'medium:nvme_blobs',\n 'chunk_count',\n 'modification_time',\n] as any;\nconst defaultListFoldersColumns: Array<keyof AccountUsageDataItem> = [\n 'owner',\n 'disk_space',\n 'medium:default',\n 'medium:ssd_blobs',\n 'medium:nvme_blobs',\n 'chunk_count',\n 'node_count',\n 'modification_time',\n] as any;\n\nfunction firstNotEmpty<T = keyof AccountUsageDataItem>(a1: Array<T>, a2: Array<T>): Array<T> {\n if (a1?.length) {\n return a1;\n }\n\n return a2;\n}\n\nconst getAccountUsageVisibleColumns = createSelector(\n [\n getAccountUsageViewType,\n getSettingsAccountUsageColumnsTree,\n getSettingsAccountUsageColumnsList,\n getSettingsAccountUsageColumnsListFolders,\n ],\n (viewType, treeColumns, listColumns, listFoldersColumns) => {\n switch (viewType) {\n case 'list':\n case 'list-diff':\n return firstNotEmpty(listColumns, defaultListColumns);\n case 'list-plus-folders':\n case 'list-plus-folders-diff':\n return firstNotEmpty(listFoldersColumns, defaultListFoldersColumns);\n default:\n return firstNotEmpty(treeColumns, defaultTreeColumns);\n }\n },\n);\n\nexport const getAccountUsageSelectableColumns = createSelector(\n [getAccountUsageAvailableColumns],\n (columns) => {\n return filter_(columns, (item) => !ACCOUNT_USAGE_UNAVAILABLE_FIELDS.has(item));\n },\n);\n\nexport const ACCOUNT_USAGE_UNAVAILABLE_FIELDS = new Set([\n 'type',\n 'path',\n 'depth',\n 'account',\n 'medium:cache',\n 'direct_child_count',\n]);\n\nexport const getAccountUsageVisibleDataColumns = createSelector(\n [getAccountUsageSelectableColumns, getAccountUsageVisibleColumns],\n (selectableColumns, userColumns) => {\n const columns = new Set<string>(selectableColumns);\n\n return ['type', 'path'].concat(\n filter_(userColumns, (item) => {\n return columns.has(item);\n }),\n );\n },\n);\n","import isEqual_ from 'lodash/isEqual';\n\nimport axios from 'axios';\nimport {ThunkAction} from 'redux-thunk';\nimport {RootState} from '../../../store/reducers';\nimport {\n AccountUsageListDiffAction,\n AccountUsageListDiffDataParams,\n AccountsUsageDiffDataResponse,\n} from '../../../store/reducers/accounts/usage/accounts-usage-list-diff';\nimport {accountUsageApiUrl, getFilterParameters} from './account-usage';\nimport {\n ACCOUNTS_USAGE_LIST_DIFF_FAILED,\n ACCOUNTS_USAGE_LIST_DIFF_REQUEST,\n ACCOUNTS_USAGE_LIST_DIFF_SUCCESS,\n ACCOUNTS_USAGE_TREE_DIFF_FAILED,\n ACCOUNTS_USAGE_TREE_DIFF_REQUEST,\n ACCOUNTS_USAGE_TREE_DIFF_SUCCESS,\n} from '../../../constants/accounts/accounts';\nimport {\n getAccountUsageListDiffRequestParams,\n getAccountUsageTreeDiffRequestParams,\n getAccountUsageTreePath,\n getAccountsUsageDiffFromSnapshot,\n getAccountsUsageDiffToSnapshot,\n} from '../../../store/selectors/accounts/account-usage';\nimport {\n AccountUsageTreeDiffAction,\n AccountUsageTreeDiffData,\n} from '../../reducers/accounts/usage/accounts-usage-tree-diff';\nimport {AccountUsageData} from '../../reducers/accounts/usage/account-usage-types';\n\ntype UsageListThunkAction = ThunkAction<any, RootState, any, AccountUsageListDiffAction>;\n\nfunction getFilterFromToTimestamps(state: RootState) {\n const from = getAccountsUsageDiffFromSnapshot(state);\n const to = getAccountsUsageDiffToSnapshot(state);\n if ((!from && !to) || from === to) {\n return null;\n }\n\n return {\n older: {timestamp: from || Date.now() / 1000},\n newer: {timestamp: to || Date.now() / 1000},\n };\n}\n\nexport function fetchAccountUsageListDiff(): UsageListThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n\n const timestamps = getFilterFromToTimestamps(state);\n\n if (!timestamps) {\n return;\n }\n\n const params = getFilterParameters(state);\n const requestParams: AccountUsageListDiffDataParams = {\n ...params,\n timestamps,\n };\n\n dispatch({\n type: ACCOUNTS_USAGE_LIST_DIFF_REQUEST,\n data: {requestParams},\n });\n\n return axios\n .request<AccountsUsageDiffDataResponse>({\n method: 'POST',\n url: accountUsageApiUrl('get-resource-usage-diff'),\n data: requestParams,\n withCredentials: true,\n })\n .then((response) => {\n const params = getAccountUsageListDiffRequestParams(getState());\n if (!isEqual_(params, requestParams)) {\n return;\n }\n\n dispatch({\n type: ACCOUNTS_USAGE_LIST_DIFF_SUCCESS,\n data: {response: response.data},\n });\n })\n .catch((error: any) => {\n const params = getAccountUsageListDiffRequestParams(getState());\n if (!isEqual_(params, requestParams)) {\n return;\n }\n\n dispatch({\n type: ACCOUNTS_USAGE_LIST_DIFF_FAILED,\n data: {error: error?.response?.data || error},\n });\n });\n };\n}\n\ntype UsageTreeThunkAction = ThunkAction<any, RootState, any, AccountUsageTreeDiffAction>;\n\nexport function fetchAccountUsageTreeDiff(): UsageTreeThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n\n const timestamps = getFilterFromToTimestamps(state);\n\n if (!timestamps) {\n return;\n }\n\n const params = getFilterParameters(state);\n const requestParams: AccountUsageTreeDiffData['requestParams'] = {\n ...params,\n timestamps,\n row_filter: {\n ...params.row_filter,\n base_path: getAccountUsageTreePath(state),\n },\n };\n\n dispatch({\n type: ACCOUNTS_USAGE_TREE_DIFF_REQUEST,\n data: {requestParams},\n });\n\n return axios\n .request<AccountUsageData>({\n method: 'POST',\n url: accountUsageApiUrl('get-children-and-resource-usage-diff'),\n data: requestParams,\n withCredentials: true,\n })\n .then((response) => {\n const params = getAccountUsageTreeDiffRequestParams(getState());\n if (!isEqual_(params, requestParams)) {\n return;\n }\n\n dispatch({\n type: ACCOUNTS_USAGE_TREE_DIFF_SUCCESS,\n data: {\n response: response.data,\n base_path: requestParams.row_filter.base_path,\n },\n });\n })\n .catch((error: any) => {\n const params = getAccountUsageTreeDiffRequestParams(getState());\n if (!isEqual_(params, requestParams)) {\n return;\n }\n\n dispatch({\n type: ACCOUNTS_USAGE_TREE_DIFF_FAILED,\n data: {error: error?.response?.data || error},\n });\n });\n };\n}\n","import isEmpty_ from 'lodash/isEmpty';\nimport isEqual_ from 'lodash/isEqual';\nimport reduce_ from 'lodash/reduce';\n\nimport {ThunkAction} from 'redux-thunk';\nimport {RootState} from '../../../store/reducers';\nimport {AccountsSnapshotsAction} from '../../reducers/accounts/usage/accounts-usage-snapshots';\nimport {\n ACCOUNTS_USAGE_FILTERS_PARTIAL,\n ACCOUNTS_USAGE_LIST_FAILED,\n ACCOUNTS_USAGE_LIST_REQUEST,\n ACCOUNTS_USAGE_LIST_SUCCESS,\n ACCOUNTS_USAGE_SNAPSHOTS_FAILED,\n ACCOUNTS_USAGE_SNAPSHOTS_REQUEST,\n ACCOUNTS_USAGE_SNAPSHOTS_SUCCESS,\n ACCOUNTS_USAGE_TREE_FAILED,\n ACCOUNTS_USAGE_TREE_REQUEST,\n ACCOUNTS_USAGE_TREE_SUCCESS,\n} from '../../../constants/accounts/accounts';\nimport axios from 'axios';\nimport {getCluster} from '../../selectors/global';\nimport {\n AccountUsageListAction,\n AccountUsageListDataParams,\n AccountsUsageDataResponse,\n} from '../../reducers/accounts/usage/accounts-usage-list';\nimport {\n getAccountUsageCurrentSnapshot,\n getAccountUsageDateRangeFilter,\n getAccountUsageFieldFiltersRequestParameter,\n getAccountUsageListRequestParams,\n getAccountUsageOwnerFilter,\n getAccountUsagePageIndex,\n getAccountUsagePathFilter,\n getAccountUsageSortState,\n getAccountUsageTreePath,\n getAccountUsageTreeRequestParams,\n getAccountUsageViewType,\n} from '../../selectors/accounts/account-usage';\nimport {getActiveAccount} from '../../../store/selectors/accounts/accounts-ts';\nimport {getSettingsAccountUsageViewType} from '../../../store/selectors/settings/settings-ts';\nimport {SortState} from '../../../types';\nimport {\n AccountUsageFiltersState,\n AccountUsageViewType,\n AccountsUsageFiltersAction,\n PAGE_SIZE,\n} from '../../reducers/accounts/usage/accounts-usage-filters';\nimport {\n AccountUsageTreeAction,\n AccountUsageTreeData,\n} from '../../reducers/accounts/usage/accounts-usage-tree';\nimport {\n setSettingsAccountUsageColumnsList,\n setSettingsAccountUsageColumnsListFolders,\n setSettingsAccountUsageColumnsTree,\n setSettingsAccountUsageViewType,\n} from '../settings/settings';\nimport {AccountUsageDataParams} from '../../reducers/accounts/usage/account-usage-types';\nimport {fetchAccountUsageListDiff, fetchAccountUsageTreeDiff} from './account-usage-diff';\nimport {getAccountsUsageBasePath} from '../../../config';\nimport {updateSortStateArray} from '../../../utils/sort-helpers';\nimport {Action} from 'redux';\nimport {openModal} from '../modals/attributes-modal';\n\ntype SnapshotsThunkAction = ThunkAction<any, RootState, any, AccountsSnapshotsAction>;\n\nexport function accountUsageApiUrl(handle: string) {\n return getAccountsUsageBasePath() + handle;\n}\n\nexport function syncAccountsUsageViewTypeWithSettings(): FiltersThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const viewType = getAccountUsageViewType(state);\n if (!viewType) {\n const lastViewType = getSettingsAccountUsageViewType(state);\n dispatch(setAccountUsageFilters({viewType: lastViewType}));\n } else {\n dispatch(setSettingsAccountUsageViewType(viewType));\n }\n };\n}\n\nexport function fetchAccountsUsageSnapshots(cluster: string): SnapshotsThunkAction {\n return (dispatch) => {\n dispatch({type: ACCOUNTS_USAGE_SNAPSHOTS_REQUEST});\n\n return axios\n .request<{\n snapshot_timestamps: Array<number>;\n }>({\n method: 'POST',\n url: accountUsageApiUrl('list-timestamps'),\n data: {cluster},\n withCredentials: true,\n })\n .then((data) => {\n dispatch({\n type: ACCOUNTS_USAGE_SNAPSHOTS_SUCCESS,\n data: {...data.data, cluster},\n });\n })\n .catch((error: any) => {\n dispatch({\n type: ACCOUNTS_USAGE_SNAPSHOTS_FAILED,\n data: {error: error?.response?.data || error, cluster},\n });\n });\n };\n}\ntype UsageListThunkAction = ThunkAction<any, RootState, any, AccountUsageListAction>;\n\nexport function getFilterParameters(state: RootState): AccountUsageDataParams {\n const account = getActiveAccount(state);\n const cluster = getCluster(state);\n const sortStates = getAccountUsageSortState(state);\n const path_regexp = getAccountUsagePathFilter(state);\n const owner = getAccountUsageOwnerFilter(state);\n\n const field_filters = getAccountUsageFieldFiltersRequestParameter(state);\n const viewType = getAccountUsageViewType(state);\n\n const row_filter: AccountUsageListDataParams['row_filter'] = Object.assign(\n {\n exclude_map_nodes: viewType === 'list' || viewType === 'list-diff',\n },\n owner ? {owner} : undefined,\n path_regexp ? {path_regexp} : undefined,\n field_filters?.length ? {field_filters} : undefined,\n );\n\n return {\n account,\n cluster,\n sort_order: reduce_(\n sortStates,\n (acc, {column, order}) => {\n if (column && order) {\n acc.push({field: column, desc: order === 'desc'});\n }\n return acc;\n },\n [] as Required<AccountUsageListDataParams>['sort_order'],\n ),\n row_filter,\n page: {\n index: getAccountUsagePageIndex(state),\n size: PAGE_SIZE,\n },\n };\n}\n\nexport function fetchAccountUsageList(): UsageListThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n\n const timestamp = getAccountUsageCurrentSnapshot(state);\n\n const params = getFilterParameters(state);\n const requestParams: AccountUsageListDataParams = {\n ...params,\n timestamp: timestamp || Date.now() / 1000,\n };\n\n dispatch({\n type: ACCOUNTS_USAGE_LIST_REQUEST,\n data: {requestParams},\n });\n\n return axios\n .request<AccountsUsageDataResponse>({\n method: 'POST',\n url: accountUsageApiUrl('get-resource-usage'),\n data: requestParams,\n withCredentials: true,\n })\n .then((response) => {\n const params = getAccountUsageListRequestParams(getState());\n if (!isEqual_(params, requestParams)) {\n return;\n }\n\n dispatch({\n type: ACCOUNTS_USAGE_LIST_SUCCESS,\n data: {response: response.data},\n });\n })\n .catch((error: any) => {\n const params = getAccountUsageListRequestParams(getState());\n if (!isEqual_(params, requestParams)) {\n return;\n }\n\n dispatch({\n type: ACCOUNTS_USAGE_LIST_FAILED,\n data: {error: error?.response?.data || error},\n });\n });\n };\n}\n\ntype UsageTreeThunkAction = ThunkAction<any, RootState, any, AccountUsageTreeAction>;\n\nexport function fetchAccountUsageTree(): UsageTreeThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n\n const timestamp = getAccountUsageCurrentSnapshot(state);\n\n const params = getFilterParameters(state);\n const requestParams: AccountUsageTreeData['requestParams'] = {\n ...params,\n timestamp: timestamp || Date.now() / 1000,\n row_filter: {\n ...params.row_filter,\n base_path: getAccountUsageTreePath(state),\n },\n };\n\n dispatch({\n type: ACCOUNTS_USAGE_TREE_REQUEST,\n data: {requestParams},\n });\n\n return axios\n .request<AccountsUsageDataResponse>({\n method: 'POST',\n url: accountUsageApiUrl('get-children-and-resource-usage'),\n data: requestParams,\n withCredentials: true,\n })\n .then((response) => {\n const params = getAccountUsageTreeRequestParams(getState());\n if (!isEqual_(params, requestParams)) {\n return;\n }\n\n dispatch({\n type: ACCOUNTS_USAGE_TREE_SUCCESS,\n data: {\n response: response.data,\n base_path: requestParams.row_filter.base_path,\n },\n });\n })\n .catch((error: any) => {\n const params = getAccountUsageTreeRequestParams(getState());\n if (!isEqual_(params, requestParams)) {\n return;\n }\n\n dispatch({\n type: ACCOUNTS_USAGE_TREE_FAILED,\n data: {error: error?.response?.data || error},\n });\n });\n };\n}\n\ntype FiltersThunkAction = ThunkAction<\n any,\n RootState,\n any,\n AccountUsageTreeAction | AccountUsageListAction | AccountsUsageFiltersAction\n>;\n\nexport function fetchAccountUsage(): FiltersThunkAction {\n return (dispatch, getState) => {\n const viewType = getAccountUsageViewType(getState());\n switch (viewType) {\n case 'tree':\n return dispatch(fetchAccountUsageTree());\n case 'list':\n case 'list-plus-folders':\n return dispatch(fetchAccountUsageList());\n case 'list-diff':\n case 'list-plus-folders-diff':\n return dispatch(fetchAccountUsageListDiff());\n case 'tree-diff':\n return dispatch(fetchAccountUsageTreeDiff());\n }\n };\n}\n\nexport function setAccountUsageSortState(item: SortState, multisort?: boolean): FiltersThunkAction {\n return (dispatch, getState) => {\n const prevSortState = getAccountUsageSortState(getState());\n const sortState = updateSortStateArray(prevSortState, item, {multisort});\n\n dispatch({\n type: ACCOUNTS_USAGE_FILTERS_PARTIAL,\n data: {sortState, pageIndex: 0},\n });\n dispatch(fetchAccountUsage());\n };\n}\n\nexport function setAccountUsageCurrentSnapshot(currentSnapshot: number): FiltersThunkAction {\n return (dispatch) => {\n dispatch({\n type: ACCOUNTS_USAGE_FILTERS_PARTIAL,\n data: {currentSnapshot},\n });\n };\n}\nexport function setAccountUsageDataFilter(\n data: Omit<Partial<AccountUsageFiltersState>, 'columnPreset' | 'viewType' | 'pageIndex'>,\n): FiltersThunkAction {\n return (dispatch, getState) => {\n dispatch({\n type: ACCOUNTS_USAGE_FILTERS_PARTIAL,\n data: {pageIndex: 0, ...data},\n });\n\n const {dateRangeType, ...rest} = data;\n if (isEmpty_(rest) && dateRangeType) {\n const {from, to} = getAccountUsageDateRangeFilter(getState());\n if (!from && !to) {\n return;\n }\n }\n dispatch(fetchAccountUsage());\n };\n}\n\nexport function setAccountUsageDataPageIndex(pageIndex: number): FiltersThunkAction {\n return (dispatch) => {\n dispatch({type: ACCOUNTS_USAGE_FILTERS_PARTIAL, data: {pageIndex}});\n dispatch(fetchAccountUsage());\n };\n}\n\nexport function setAccountUsageFilters(\n data: Pick<Partial<AccountUsageFiltersState>, 'visibleColumns' | 'viewType'>,\n): FiltersThunkAction {\n return (dispatch) => {\n dispatch({type: ACCOUNTS_USAGE_FILTERS_PARTIAL, data});\n };\n}\n\nexport function setAccountUsageViewType(viewType: AccountUsageViewType): FiltersThunkAction {\n return (dispatch) => {\n dispatch({\n type: ACCOUNTS_USAGE_FILTERS_PARTIAL,\n data: {pageIndex: 0, viewType},\n });\n dispatch(setSettingsAccountUsageViewType(viewType));\n };\n}\n\nexport function setAccountUsageColumns(columns: Array<string>): FiltersThunkAction {\n return (dispatch, getState) => {\n const viewType = getAccountUsageViewType(getState());\n switch (viewType) {\n case 'list':\n case 'list-diff':\n dispatch(setSettingsAccountUsageColumnsList(columns));\n break;\n case 'list-plus-folders':\n case 'list-plus-folders-diff':\n dispatch(setSettingsAccountUsageColumnsListFolders(columns));\n break;\n default:\n dispatch(setSettingsAccountUsageColumnsTree(columns));\n }\n };\n}\n\nexport const openAccountAttributesModal =\n ({\n cluster,\n account,\n path,\n }: {\n cluster: string;\n account: string;\n path: string;\n }): ThunkAction<void, RootState, null, Action> =>\n (dispatch) =>\n dispatch(\n openModal({\n title: path,\n promise: axios\n .request({\n method: 'POST',\n url: accountUsageApiUrl('get-versioned-resource-usage'),\n data: {\n cluster,\n account,\n path,\n timestamp_rounding_policy: 'closest',\n },\n withCredentials: true,\n })\n .then((data) => data.data),\n }),\n );\n","import React from 'react';\n\nimport filter_ from 'lodash/filter';\nimport map_ from 'lodash/map';\n\nimport Button from '../../../../components/Button/Button';\nimport {\n getAccountUsageSelectableColumns,\n getAccountUsageVisibleDataColumns,\n readableAccountUsageColumnName,\n} from '../../../../store/selectors/accounts/account-usage';\nimport {useDispatch, useSelector} from 'react-redux';\nimport ColumnSelectorModal from '../../../../components/ColumnSelectorModal/ColumnSelectorModal';\nimport {setAccountUsageColumns} from '../../../../store/actions/accounts/account-usage';\nimport {Secondary} from '../../../../components/Text/Text';\n\nconst AccountUsageColumnsDialogMemo = React.memo(AccountUsageColumnsDialog);\n\nexport default React.memo(AccountUsageColumnsButton);\n\nfunction AccountUsageColumnsButton() {\n const [visible, setVisible] = React.useState(false);\n const toggleVisibility = React.useCallback(() => {\n setVisible(!visible);\n }, [visible, setVisible]);\n\n const handleClose = React.useCallback(() => {\n setVisible(false);\n }, [setVisible]);\n\n return (\n <React.Fragment>\n <Button onClick={toggleVisibility}>Columns</Button>\n <AccountUsageColumnsDialogMemo visible={visible} onClose={handleClose} />\n </React.Fragment>\n );\n}\n\ninterface DialogProps {\n visible: boolean;\n onClose: () => void;\n}\n\nfunction AccountUsageColumnsDialog({visible, onClose}: DialogProps) {\n const dispatch = useDispatch();\n const visibleColumns = useSelector(getAccountUsageVisibleDataColumns);\n const availableColumns = useSelector(getAccountUsageSelectableColumns);\n\n const handleChange = React.useCallback((newValue: typeof value) => {\n const checked = filter_(newValue, 'checked');\n dispatch(setAccountUsageColumns(map_(checked, ({data: {caption}}) => caption)));\n onClose();\n }, []);\n\n const value = React.useMemo(() => {\n const available = new Set(availableColumns);\n const selected = visibleColumns.filter((item) => available.has(item as any));\n\n const selectedSet = new Set(selected);\n const other = availableColumns.filter((item) => !selectedSet.has(item));\n\n return map_(selected.concat(other), (item) => {\n return {\n name: readableAccountUsageColumnName(item, true),\n checked: selectedSet.has(item),\n data: {\n caption: item,\n isMedium: item.startsWith('medium:'),\n },\n };\n });\n }, [availableColumns, visibleColumns]);\n\n return !visible ? null : (\n <ColumnSelectorModal\n isVisible={true}\n onCancel={onClose}\n onConfirm={handleChange}\n items={value}\n itemRenderer={(item) => {\n const {\n name,\n data: {isMedium, caption},\n } = item;\n return !isMedium ? (\n name\n ) : (\n <span>\n <Secondary>Medium: </Secondary>\n {readableAccountUsageColumnName(caption)}\n </span>\n );\n }}\n />\n );\n}\n","import React from 'react';\n\nimport unipika from '../../common/thor/unipika';\nimport ypath from '../../common/thor/ypath';\n\nfunction PathPart({name}: {name?: string}) {\n if (!name) {\n return null;\n }\n\n if (name === '/') {\n return <span>/</span>;\n }\n\n const fragment = ypath.YPath.fragmentToYSON(name);\n try {\n const __html = unipika.decode(fragment);\n return <span dangerouslySetInnerHTML={{__html}} />;\n } catch {\n return <span>{fragment}</span>;\n }\n}\n\nexport const PathFragment = React.memo(PathPart);\n\nfunction PathView({path, lastFragmentOnly}: {path?: string; lastFragmentOnly?: boolean}) {\n const items = React.useMemo(() => {\n if (!path) {\n return [];\n }\n\n const {fragments} = new ypath.YPath(path, 'absolute');\n return !lastFragmentOnly ? fragments : fragments.slice(-1);\n }, [path, lastFragmentOnly]);\n\n const res: Array<React.ReactNode> = [];\n for (let i = 0; i < items.length; ++i) {\n const {name} = items[i];\n res.push(<PathFragment key={i} name={name} />);\n if (i < items.length - 1) {\n res.push(<span key={'slash_' + i}>/</span>);\n }\n }\n return <>{res}</>;\n}\n\nexport default PathView;\n","import React, {useCallback, useMemo} from 'react';\n\nimport map_ from 'lodash/map';\nimport reverse_ from 'lodash/reverse';\nimport {Breadcrumbs, BreadcrumbsItem} from '../../../../components/Breadcrumbs';\n\nimport moment from 'moment';\nimport cn from 'bem-cn-lite';\nimport {useHistory} from 'react-router';\nimport format from '../../../../common/hammer/format';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {\n fetchAccountUsage,\n fetchAccountsUsageSnapshots,\n setAccountUsageDataFilter,\n setAccountUsageDataPageIndex,\n setAccountUsageViewType,\n} from '../../../../store/actions/accounts/account-usage';\nimport {getCluster} from '../../../../store/selectors/global';\nimport {Toolbar} from '../../../../components/WithStickyToolbar/Toolbar/Toolbar';\nimport Select from '../../../../components/Select/Select';\nimport {\n getAccountUsageCurrentSnapshot,\n getAccountUsageDateRangeFilter,\n getAccountUsageDateRangeTypeFilter,\n getAccountUsageOwnerFilter,\n getAccountUsagePageCount,\n getAccountUsagePageIndex,\n getAccountUsagePathFilter,\n getAccountUsageSnapshots,\n getAccountUsageTreeItemsBasePathSplitted,\n getAccountUsageViewType,\n getAccountsUsageDiffFromSnapshot,\n getAccountsUsageDiffToSnapshot,\n isAccountsUsageDiffView,\n} from '../../../../store/selectors/accounts/account-usage';\nimport TextInputWithDebounce from '../../../../components/TextInputWithDebounce/TextInputWithDebounce';\nimport {Secondary, SecondaryBold} from '../../../../components/Text/Text';\nimport SimplePagination from '../../../../components/Pagination/SimplePagination';\nimport Icon from '../../../../components/Icon/Icon';\nimport AccountUsageColumnsButton from './AccountUsageColumnsButton';\nimport {SubjectCard} from '../../../../components/SubjectLink/SubjectLink';\nimport Suggest, {SuggestItem} from '../../../../components/Suggest/Suggest';\nimport {Datepicker, DatepickerOutputDates} from '../../../../components/common/Datepicker';\nimport {PathFragment} from '../../../../containers/PathFragment/PathFragment';\nimport {useAllUserNamesFiltered} from '../../../../hooks/global';\nimport {useUpdater} from '../../../../hooks/use-updater';\n\nimport './AccountUsageToolbar.scss';\nimport {makeRoutedURL} from '../../../../store/window-store';\n\nconst block = cn('account-usage-toolbar');\n\nfunction useFetchSnapshots() {\n const dispatch = useDispatch();\n const cluster = useSelector(getCluster);\n\n const updateFn = React.useCallback(() => {\n dispatch(fetchAccountsUsageSnapshots(cluster));\n }, [dispatch, cluster]);\n\n useUpdater(updateFn, {timeout: 5 * 60000});\n}\n\nconst SnapshotFilterMemo = React.memo(SnapshotFilter);\nconst PathFilterMemo = React.memo(PathFilter);\nconst OwnerFilterMemo = React.memo(OwnerFilter);\nconst DateRangeFilterMemo = React.memo(DateRangeFilter);\nconst DateRangeTypeFilterMemo = React.memo(DateRangeTypeFilter);\nconst PaginationFilterMemo = React.memo(PaginationFilter);\nconst ViewTypeMemo = React.memo(ViewType);\nconst UsageBreadcrumbsMemo = React.memo(UsageBreadcrumbs);\nconst SnapshotDiffFilterMemo = React.memo(SnapshotDiffFilter);\n\nfunction AccountUsageToolbar() {\n const viewType = useSelector(getAccountUsageViewType);\n const isDiffView = useSelector(isAccountsUsageDiffView);\n\n return (\n <div>\n <Toolbar\n className={block()}\n itemsToWrap={[\n {\n name: 'page',\n node: <PaginationFilterMemo />,\n },\n {\n name: 'pathFilter',\n wrapperClassName: block('item'),\n node: <PathFilterMemo />,\n shrinkable: true,\n },\n {\n name: 'ownerFilter',\n wrapperClassName: block('item'),\n node: <OwnerFilterMemo />,\n shrinkable: true,\n },\n {\n name: 'dateRangeFilter',\n wrapperClassName: block('item'),\n node: <DateRangeFilterMemo />,\n },\n {\n name: 'columns',\n node: <AccountUsageColumnsButton />,\n },\n {\n name: 'viewType',\n node: <ViewTypeMemo />,\n },\n isDiffView\n ? {\n name: 'snapshots',\n wrapperClassName: block('item'),\n growable: true,\n node: <SnapshotDiffFilterMemo />,\n }\n : {\n name: 'snapshotsDiff',\n wrapperClassName: block('item'),\n growable: true,\n node: <SnapshotFilterMemo />,\n },\n ]}\n >\n {(viewType === 'tree' || viewType === 'tree-diff') && (\n <Toolbar\n itemsToWrap={[\n {\n node: <UsageBreadcrumbsMemo />,\n },\n ]}\n />\n )}\n </Toolbar>\n </div>\n );\n}\n\nconst UNDEFINED_SNAPSHOT = '_';\n\nfunction string2snapshot(v: string) {\n return v === UNDEFINED_SNAPSHOT ? undefined : Number(v);\n}\n\nfunction snapshot2string(v?: number) {\n return v === undefined ? UNDEFINED_SNAPSHOT : String(v);\n}\n\nfunction useSnapshotItems() {\n const snapshots = useSelector(getAccountUsageSnapshots);\n\n const items = React.useMemo(() => {\n const res = map_(reverse_(snapshots.slice()), (item) => {\n return {\n value: snapshot2string(item),\n text: moment(new Date(item * 1000)).format('YYYY-MM-DD HH:mm'),\n };\n });\n res.splice(0, 0, {value: UNDEFINED_SNAPSHOT, text: 'Latest'});\n return res;\n }, [snapshots]);\n\n return items;\n}\n\nfunction FromSnapshot() {\n const dispatch = useDispatch();\n const items = useSnapshotItems();\n const value = useSelector(getAccountsUsageDiffFromSnapshot);\n\n const handleChange = React.useCallback(\n (value: string) => {\n dispatch(\n setAccountUsageDataFilter({\n diffFromSnapshot: string2snapshot(value),\n }),\n );\n },\n [dispatch],\n );\n\n return (\n <Select\n placeholder={'Snapthot...'}\n items={items}\n value={[snapshot2string(value)]}\n onUpdate={(vals) => handleChange(vals[0])}\n width={150}\n />\n );\n}\n\nfunction ToSnapshot() {\n const dispatch = useDispatch();\n const items = useSnapshotItems();\n const value = useSelector(getAccountsUsageDiffToSnapshot);\n\n const handleChange = React.useCallback(\n (value: string) => {\n dispatch(\n setAccountUsageDataFilter({\n diffToSnapshot: string2snapshot(value),\n }),\n );\n },\n [dispatch],\n );\n\n return (\n <Select\n placeholder={'Snapthot...'}\n items={items}\n value={[snapshot2string(value)]}\n onUpdate={(vals) => handleChange(vals[0])}\n width={150}\n />\n );\n}\n\nfunction SnapshotDiffFilter() {\n useFetchSnapshots();\n\n return (\n <span className={block('snapshots')}>\n <span className={block('spacer')} />\n <span className={block('snapshot-label')}>From</span>\n <FromSnapshot />\n <span className={block('snapshot-label')}>To</span>\n <ToSnapshot />\n </span>\n );\n}\n\nfunction SnapshotFilter() {\n const dispatch = useDispatch();\n useFetchSnapshots();\n\n const currentSnapshot = useSelector(getAccountUsageCurrentSnapshot);\n const items = useSnapshotItems();\n\n const handleSnapshotChange = React.useCallback(\n (value: string) => {\n dispatch(\n setAccountUsageDataFilter({\n currentSnapshot: string2snapshot(value),\n }),\n );\n },\n [dispatch],\n );\n\n return (\n <span className={block('snapshots')}>\n <span className={block('spacer')} />\n <SecondaryBold>Snapshot&nbsp;</SecondaryBold>\n <Select\n placeholder={'Snapshot...'}\n value={[snapshot2string(currentSnapshot)]}\n items={items}\n onUpdate={(vals) => handleSnapshotChange(vals[0])}\n width={150}\n />\n </span>\n );\n}\n\nfunction PathFilter() {\n const dispatch = useDispatch();\n\n const filter = useSelector(getAccountUsagePathFilter);\n\n const handleChange = React.useCallback(\n (pathFilter: string) => {\n dispatch(setAccountUsageDataFilter({pathFilter}));\n },\n [dispatch],\n );\n\n return (\n <TextInputWithDebounce\n debounce={500}\n value={filter}\n placeholder={'Path regexp...'}\n onUpdate={handleChange}\n />\n );\n}\n\nfunction OwnerFilter() {\n const dispatch = useDispatch();\n\n const filter = useSelector(getAccountUsageOwnerFilter);\n\n const handleChange = React.useCallback(\n (item: SuggestItem) => {\n const ownerFilter = 'string' === typeof item ? item : item.value;\n dispatch(setAccountUsageDataFilter({ownerFilter}));\n },\n [dispatch],\n );\n\n const {getFiltered, allNames} = useAllUserNamesFiltered();\n\n return (\n <Suggest\n text={filter}\n items={allNames}\n filter={(_items, filter = '') => getFiltered(filter)}\n apply={handleChange}\n placeholder={'Owner...'}\n renderItem={(item) => (\n <span className={block('owner-item')}>\n <SubjectCard name={'string' === typeof item ? item : item.value} noLink />\n </span>\n )}\n popupClassName={block('owner-popup')}\n />\n );\n}\n\nfunction DateRangeFilter() {\n const dispatch = useDispatch();\n\n const {from, to} = useSelector(getAccountUsageDateRangeFilter);\n const type = useSelector(getAccountUsageDateRangeTypeFilter);\n\n const handleChange = React.useCallback(\n (dateRange: DatepickerOutputDates) => {\n dispatch(setAccountUsageDataFilter({dateRange}));\n },\n [dispatch],\n );\n\n return (\n <span className={block('date-range')}>\n <Datepicker\n from={from}\n to={to}\n min={0}\n max={Date.now() + 3600 * 24 * 1000}\n range={true}\n allowNullableValues={true}\n onUpdate={handleChange}\n className={block('date-range-control')}\n onError={() => {}}\n placeholder={format.Readable(type) + ' range...'}\n pin=\"round-brick\"\n />\n <DateRangeTypeFilterMemo />\n </span>\n );\n}\n\nfunction DateRangeTypeFilter() {\n const dispatch = useDispatch();\n\n const value = useSelector(getAccountUsageDateRangeTypeFilter);\n const handleChange = React.useCallback(\n (dateRangeType: any) => {\n dispatch(setAccountUsageDataFilter({dateRangeType}));\n },\n [dispatch],\n );\n\n return (\n <Select\n pin=\"clear-round\"\n value={[value]}\n onUpdate={(vals) => handleChange(vals[0])}\n items={[\n {value: 'creation_time', text: 'Creation'},\n {value: 'modification_time', text: 'Modification'},\n ]}\n width={135}\n />\n );\n}\n\nfunction PaginationFilter() {\n const dispatch = useDispatch();\n\n const value = useSelector(getAccountUsagePageIndex);\n const pageCount = useSelector(getAccountUsagePageCount);\n\n const handleChange = React.useCallback(\n (pageIndex: number) => {\n dispatch(setAccountUsageDataPageIndex(pageIndex));\n },\n [dispatch],\n );\n\n return (\n <SimplePagination\n value={value}\n min={0}\n max={Math.max(0, pageCount - 1)}\n onChange={handleChange}\n />\n );\n}\n\nconst VIEW_TYPE_ITEMS = [\n {\n value: 'tree' as const,\n text: 'Tree',\n icon: <Icon awesome={'folder-tree'} face={'solid'} />,\n },\n {\n value: 'list' as const,\n text: 'List',\n icon: <Icon awesome={'list'} />,\n },\n {\n value: 'list-plus-folders' as const,\n text: 'List + folders',\n icon: <Icon awesome={'folders'} />,\n },\n {\n value: 'tree-diff' as const,\n text: 'Diff: Tree',\n content: <DiffTitle title={'Tree'} />,\n icon: <Icon awesome={'folder-tree'} face={'solid'} />,\n },\n {\n value: 'list-diff' as const,\n text: 'Diff: List',\n content: <DiffTitle title={'List'} />,\n icon: <Icon awesome={'list'} />,\n },\n {\n value: 'list-plus-folders-diff' as const,\n text: 'Diff: List + folders',\n content: <DiffTitle title={'List + folders'} />,\n icon: <Icon awesome={'folders'} />,\n },\n];\n\nfunction DiffTitle({title}: {title: string}) {\n return (\n <React.Fragment>\n <Secondary>Diff: </Secondary>\n {title}\n </React.Fragment>\n );\n}\n\nfunction ViewType() {\n const dispatch = useDispatch();\n\n const value = useSelector(getAccountUsageViewType);\n const handleChange = React.useCallback(\n (value: string) => {\n dispatch(setAccountUsageViewType(value as any));\n },\n [dispatch],\n );\n\n return (\n <Select\n value={value ? [value] : []}\n items={VIEW_TYPE_ITEMS}\n onUpdate={(vals) => handleChange(vals[0])}\n width=\"max\"\n />\n );\n}\n\nexport function UsageBreadcrumbs() {\n const dispatch = useDispatch();\n const pathArr = useSelector(getAccountUsageTreeItemsBasePathSplitted);\n const history = useHistory();\n\n const items = useMemo(() => {\n return map_(pathArr, (item, index) => {\n const text = item.item;\n return (\n <BreadcrumbsItem\n key={text}\n href={makeRoutedURL(`${window.location.pathname}?path=${item.value}`)}\n >\n {index ? <PathFragment name={text} /> : <Icon awesome={'folder-tree'} />}\n </BreadcrumbsItem>\n );\n });\n }, [pathArr]);\n\n const handleBreadcrumbClick = useCallback(() => {\n setTimeout(() => {\n dispatch(fetchAccountUsage());\n }, 0);\n }, [dispatch]);\n\n return (\n <Breadcrumbs navigate={history.push} onAction={handleBreadcrumbClick} showRoot>\n {items}\n </Breadcrumbs>\n );\n}\n\nexport default React.memo(AccountUsageToolbar);\n","import React, {FC, useCallback, useMemo} from 'react';\nimport Icon from '../../../../components/Icon/Icon';\nimport {Flex, Text} from '@gravity-ui/uikit';\nimport {Tooltip} from '../../../../components/Tooltip/Tooltip';\nimport Link from '../../../../components/Link/Link';\nimport {makeRoutedURL} from '../../../../store/location';\nimport {Page} from '../../../../../shared/constants/settings';\nimport AttributesButton from '../../../../components/AttributesButton/AttributesButton';\n\nexport type AccountRequestData = {title: string; path: string; cluster: string; account: string};\n\ntype Props = {\n cluster: string;\n path: string;\n account: string;\n onAttributeButtonClick: (accountData: AccountRequestData) => void;\n};\n\nexport const AccountActionsField: FC<Props> = ({\n path,\n account,\n cluster,\n onAttributeButtonClick,\n}) => {\n const handleOpenAttributeModal = useCallback(() => {\n onAttributeButtonClick({path, account, cluster, title: path});\n }, [onAttributeButtonClick, path, account, cluster]);\n\n const navigationUrl = useMemo(() => {\n return makeRoutedURL(`/${cluster}/${Page.NAVIGATION}`, {path});\n }, [cluster, path]);\n\n if (!path) return undefined;\n\n return (\n <Flex gap={1} alignItems=\"center\">\n <AttributesButton\n view=\"flat\"\n withTooltip\n tooltipProps={{placement: 'bottom-end', content: 'Show attributes'}}\n onClick={handleOpenAttributeModal}\n size=\"xs\"\n />\n <Link theme={'secondary'} url={navigationUrl} routed routedPreserveLocation>\n <Tooltip\n content={<Text whiteSpace=\"nowrap\">Open original path in Navigation</Text>}\n placement={'left'}\n >\n <Icon awesome={'folder-tree'} />\n </Tooltip>\n </Link>\n </Flex>\n );\n};\n","import React, {FC} from 'react';\nimport {Flex, Icon, Tooltip} from '@gravity-ui/uikit';\nimport {AccountUsageViewType} from '../../../../store/reducers/accounts/usage/accounts-usage-filters';\nimport cn from 'bem-cn-lite';\nimport format from '../../../../common/hammer/format';\nimport CircleInfoIcon from '@gravity-ui/icons/svgs/circle-info.svg';\nimport './DetailTableCell.scss';\n\nconst block = cn('detail-table-cell');\n\nconst getRenderSign = (value: number) => (!value || value < 0 ? '' : '+');\nconst getDiffClass = (showDiff: boolean, sign: number) => {\n if (!showDiff || !sign) return undefined;\n return sign > 0 ? 'plus' : 'minus';\n};\n\ntype Props = {\n value: number | null;\n additionalValue: number | null;\n viewType?: AccountUsageViewType;\n formatType: 'bytes' | 'number';\n};\n\nexport const DetailTableCell: FC<Props> = ({value, additionalValue, viewType, formatType}) => {\n const totalValue = additionalValue ? Number(value) + additionalValue : Number(value);\n const showDiff = viewType?.endsWith('-diff');\n const sign = Math.sign(totalValue);\n\n const formatFn = formatType === 'bytes' ? format.Bytes : format.Number;\n\n return (\n <Flex justifyContent=\"center\" alignItems=\"center\" gap={1} className={block()}>\n <span className={block('value', {diff: getDiffClass(Boolean(showDiff), sign)})}>\n {showDiff && getRenderSign(sign)}\n {formatFn(totalValue)}\n </span>\n {Boolean(additionalValue) && (\n <Tooltip\n content={`${formatFn(value)} + ${formatFn(additionalValue)} (versioned)`}\n placement=\"top\"\n >\n <div tabIndex={0} className={block('alert-icon')}>\n <Icon data={CircleInfoIcon} size={14} />\n </div>\n </Tooltip>\n )}\n </Flex>\n );\n};\n","import React, {useCallback} from 'react';\n\nimport capitalize_ from 'lodash/capitalize';\nimport forEach_ from 'lodash/forEach';\n\nimport cn from 'bem-cn-lite';\n\nimport format from '../../../../common/hammer/format';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport {\n fetchAccountUsageList,\n fetchAccountUsageTree,\n openAccountAttributesModal,\n setAccountUsageDataFilter,\n setAccountUsageSortState,\n syncAccountsUsageViewTypeWithSettings,\n} from '../../../../store/actions/accounts/account-usage';\nimport DataTableYT from '../../../../components/DataTableYT/DataTableYT';\nimport {\n getAccountUsageAvailableColumns,\n getAccountUsageCurrentSnapshot,\n getAccountUsageListDiffError,\n getAccountUsageListDiffItems,\n getAccountUsageListDiffLoaded,\n getAccountUsageListDiffLoading,\n getAccountUsageListDiffMediums,\n getAccountUsageListError,\n getAccountUsageListItems,\n getAccountUsageListLoaded,\n getAccountUsageListLoading,\n getAccountUsageListMediums,\n getAccountUsagePageCount,\n getAccountUsagePageIndex,\n getAccountUsageSortStateByColumn,\n getAccountUsageTreeDiffError,\n getAccountUsageTreeDiffItems,\n getAccountUsageTreeDiffLoaded,\n getAccountUsageTreeDiffLoading,\n getAccountUsageTreeDiffMediums,\n getAccountUsageTreeError,\n getAccountUsageTreeItems,\n getAccountUsageTreeItemsBasePath,\n getAccountUsageTreeLoaded,\n getAccountUsageTreeLoading,\n getAccountUsageTreeMediums,\n getAccountUsageViewType,\n getAccountUsageVisibleDataColumns,\n getAccountsUsageDiffFromSnapshot,\n getAccountsUsageDiffToSnapshot,\n isAccountsUsageDiffView,\n readableAccountUsageColumnName,\n} from '../../../../store/selectors/accounts/account-usage';\nimport DataTable, {Column, Settings} from '@gravity-ui/react-data-table';\n\nimport ErrorBlock from '../../../../components/Error/Error';\nimport {\n STICKY_DOUBLE_TOOLBAR_BOTTOM,\n STICKY_TOOLBAR_BOTTOM,\n} from '../../../../components/WithStickyToolbar/WithStickyToolbar';\nimport ColumnHeader from '../../../../components/ColumnHeader/ColumnHeader';\nimport Icon from '../../../../components/Icon/Icon';\nimport {getCluster} from '../../../../store/selectors/global';\nimport Loader from '../../../../components/Loader/Loader';\n\nimport {SubjectCard} from '../../../../components/SubjectLink/SubjectLink';\nimport {Secondary, Warning} from '../../../../components/Text/Text';\nimport PathView from '../../../../containers/PathFragment/PathFragment';\nimport {getIconNameForType} from '../../../../utils/navigation/path-editor';\nimport {OrderType} from '../../../../utils/sort-helpers';\nimport {NoContent} from '../../../../components/NoContent/NoContent';\nimport {\n AccountUsageDataItem,\n MediumKeyTemplate,\n VersionedKeyTemplate,\n} from '../../../../store/reducers/accounts/usage/account-usage-types';\nimport {\n fetchAccountUsageListDiff,\n fetchAccountUsageTreeDiff,\n} from '../../../../store/actions/accounts/account-usage-diff';\nimport {useUpdater} from '../../../../hooks/use-updater';\n\nimport './AccountUsageDetails.scss';\nimport {AccountActionsField, AccountRequestData} from './AccountActionsField';\nimport {DetailTableCell} from './DetailTableCell';\n\nconst TABLE_SETTINGS: Settings = {\n displayIndices: false,\n stickyHead: DataTable.MOVING,\n stickyFooter: DataTable.MOVING,\n stickyTop: STICKY_TOOLBAR_BOTTOM,\n stickyBottom: 0,\n syncHeadOnResize: true,\n};\n\nconst TABLE_SETTINGS_DOUBLE_TOOLBAR: Settings = {\n displayIndices: false,\n stickyHead: DataTable.MOVING,\n stickyFooter: DataTable.MOVING,\n stickyTop: STICKY_DOUBLE_TOOLBAR_BOTTOM,\n stickyBottom: 0,\n syncHeadOnResize: true,\n};\n\nconst block = cn('account-usage-details');\n\nconst ROW_CLASS_NAME = block('row');\n\nfunction AccountUsageDetailsHeader(props: {column: keyof AccountUsageDataItem}) {\n const dispatch = useDispatch();\n const sortOrder = useSelector(getAccountUsageSortStateByColumn);\n const {column} = props;\n\n const onSort = React.useCallback(\n (column: string, nextOrder: OrderType, opts: {multisort?: boolean}) => {\n dispatch(setAccountUsageSortState({column, order: nextOrder}, opts.multisort));\n },\n [dispatch],\n );\n\n const {order, multisortIndex} = sortOrder[column] || {};\n\n return (\n <ColumnHeader\n column={column}\n title={readableAccountUsageColumnName(column)}\n order={order}\n onSort={onSort}\n multisortIndex={multisortIndex}\n />\n );\n}\n\nconst PageCounterMemo = React.memo(PageCounter);\n\nfunction PathHeader() {\n return (\n <div className={block('path-header')}>\n <AccountUsageDetailsHeader column={'path'} />\n <div className={block('path-header-loader')}>\n <UsageLoaderMemo />\n </div>\n <div className={block('path-header-page')}>\n <PageCounterMemo />\n </div>\n </div>\n );\n}\n\nconst UsageLoaderMemo = React.memo(UsageLoader);\n\nfunction useColumnsByPreset(mediums: Array<string>) {\n const dispatch = useDispatch();\n\n const availableColumns = useSelector(getAccountUsageAvailableColumns);\n const visibleColumns = useSelector(getAccountUsageVisibleDataColumns);\n const cluster = useSelector(getCluster);\n const viewType = useSelector(getAccountUsageViewType);\n const treePath = useSelector(getAccountUsageTreeItemsBasePath);\n\n const handleAttributeButtonClick = useCallback(\n (accountData: AccountRequestData) => {\n dispatch(openAccountAttributesModal(accountData));\n },\n [dispatch],\n );\n\n const columnsByName = React.useMemo(() => {\n const res: Map<string, Column<AccountUsageDataItem>> = new Map();\n\n const iconName =\n viewType === 'tree' || viewType === 'tree-diff'\n ? ''\n : viewType === 'list' || viewType === 'list-diff'\n ? 'list'\n : 'folders';\n res.set('type', {\n name: 'type',\n header: iconName === '' ? null : <Icon awesome={iconName} />,\n sortable: false,\n render(item) {\n const {type, path, acl_status} = item.row;\n return acl_status === 'deny' ? (\n <Icon face=\"light\" awesome=\"eye-slash\" />\n ) : (\n <Icon awesome={getIconNameForType(path ? type : '')} />\n );\n },\n width: 50,\n });\n res.set('path', {\n name: 'path',\n header: <PathHeader />,\n sortable: false,\n render(item) {\n const {path} = item.row;\n if (!path) {\n return <Warning>Permission denied</Warning>;\n }\n\n return <PathView path={path} lastFragmentOnly={viewType === 'tree'} />;\n },\n onClick: ({row}) => {\n const {path} = row;\n if (\n !path ||\n (viewType !== 'tree-diff' && viewType !== 'tree') ||\n row.type !== 'map_node'\n ) {\n return;\n }\n dispatch(setAccountUsageDataFilter({treePath: row.path}));\n },\n className: block('path-cell', {view: viewType}),\n });\n\n res.set('disk_space', {\n name: 'disk_space',\n header: <AccountUsageDetailsHeader column={'disk_space'} />,\n sortable: false,\n render(item) {\n return (\n <DetailTableCell\n value={item.row.disk_space}\n additionalValue={item.row['versioned:disk_space']}\n viewType={viewType}\n formatType=\"bytes\"\n />\n );\n },\n align: 'right',\n width: 120,\n });\n res.set('master_memory', {\n name: 'Master mem',\n header: <AccountUsageDetailsHeader column={'master_memory'} />,\n sortable: false,\n render(item) {\n return (\n <DetailTableCell\n value={item.row.master_memory}\n additionalValue={item.row['versioned:master_memory']}\n viewType={viewType}\n formatType=\"bytes\"\n />\n );\n },\n align: 'right',\n width: 120,\n });\n res.set('owner', {\n name: 'Owner',\n header: <AccountUsageDetailsHeader column={'owner'} />,\n sortable: false,\n render(item) {\n return <SubjectCard name={item.row.owner} />;\n },\n width: 120,\n });\n\n forEach_(mediums, (medium) => {\n const name = `medium:${medium}` as MediumKeyTemplate;\n const versionedName = `versioned:medium:${name}` as VersionedKeyTemplate;\n\n res.set(name, {\n name,\n header: <AccountUsageDetailsHeader column={name} />,\n sortable: false,\n render(item) {\n const additionalValue =\n versionedName in item.row ? Number(item.row[versionedName]) : null;\n return (\n <DetailTableCell\n value={Number(item.row[name])}\n additionalValue={additionalValue}\n viewType={viewType}\n formatType=\"bytes\"\n />\n );\n },\n align: 'right',\n width: 120,\n });\n });\n\n forEach_(availableColumns, (field) => {\n if (res.has(field)) {\n return;\n }\n\n res.set(field, {\n name: field,\n header: <AccountUsageDetailsHeader column={field} />,\n sortable: false,\n render(item) {\n const {[field]: value} = item.row;\n const additionalKey = `versioned:${field}` as VersionedKeyTemplate;\n const additionalValue =\n additionalKey in item.row ? Number(item.row[additionalKey]) : null;\n\n if (typeof value === 'boolean') {\n return value === undefined ? format.NO_VALUE : capitalize_(String(value));\n }\n if (field.endsWith('_time')) {\n return value === null || value === undefined\n ? format.NO_VALUE\n : format.DateTime(value, {format: 'full'});\n }\n if (field.endsWith('_count')) {\n return (\n <DetailTableCell\n value={Number(value)}\n additionalValue={additionalValue}\n viewType={viewType}\n formatType=\"number\"\n />\n );\n }\n },\n align: 'right',\n width: 150,\n });\n });\n\n return res;\n }, [treePath, viewType, mediums, cluster, availableColumns, dispatch]);\n\n return React.useMemo(() => {\n const res: Array<Column<AccountUsageDataItem>> = [];\n visibleColumns.forEach((name) => {\n const item = columnsByName.get(name);\n if (item) {\n res.push(item);\n }\n });\n res.push({\n name: 'actions',\n header: '',\n sortable: false,\n render(item) {\n return (\n <AccountActionsField\n path={item.row.path}\n cluster={cluster}\n account={item.row.account}\n onAttributeButtonClick={handleAttributeButtonClick}\n />\n );\n },\n width: 50,\n });\n return res;\n }, [handleAttributeButtonClick, cluster, columnsByName, visibleColumns]);\n}\n\nconst UPDATE_TIMEOUT = 600000;\n\nfunction AccountUsageDetailsList() {\n const dispatch = useDispatch();\n const currentSnapshot = useSelector(getAccountUsageCurrentSnapshot);\n\n const updateFn = React.useCallback(() => {\n dispatch(fetchAccountUsageList());\n }, [dispatch]);\n\n useUpdater(updateFn, {timeout: UPDATE_TIMEOUT, onlyOnce: currentSnapshot !== undefined});\n\n const items = useSelector(getAccountUsageListItems);\n const loading = useSelector(getAccountUsageListLoading);\n const loaded = useSelector(getAccountUsageListLoaded);\n const error = useSelector(getAccountUsageListError);\n\n const mediums = useSelector(getAccountUsageListMediums);\n const columns = useColumnsByPreset(mediums);\n\n if (!loading && error) {\n return <ErrorBlock error={error} />;\n }\n\n return (\n <DataTableYT\n loading={loading}\n loaded={loaded}\n columns={columns}\n data={items}\n settings={TABLE_SETTINGS}\n rowClassName={() => ROW_CLASS_NAME}\n useThemeYT\n />\n );\n}\n\nfunction AccountUsageDetailsListDiff() {\n const dispatch = useDispatch();\n React.useEffect(() => {\n dispatch(fetchAccountUsageListDiff());\n }, [dispatch]);\n\n const items = useSelector(getAccountUsageListDiffItems);\n const loading = useSelector(getAccountUsageListDiffLoading);\n const loaded = useSelector(getAccountUsageListDiffLoaded);\n const error = useSelector(getAccountUsageListDiffError);\n\n const mediums = useSelector(getAccountUsageListDiffMediums);\n const columns = useColumnsByPreset(mediums);\n\n if (!loading && error) {\n return <ErrorBlock error={error} />;\n }\n\n return (\n <DataTableYT\n loading={loading}\n loaded={loaded}\n columns={columns}\n data={items}\n settings={TABLE_SETTINGS}\n rowClassName={() => ROW_CLASS_NAME}\n useThemeYT\n />\n );\n}\n\nfunction AccountUsageDetailsTree() {\n const dispatch = useDispatch();\n const currentSnapshot = useSelector(getAccountUsageCurrentSnapshot);\n const updateFn = React.useCallback(() => {\n dispatch(fetchAccountUsageTree());\n }, [dispatch]);\n\n useUpdater(updateFn, {timeout: UPDATE_TIMEOUT, onlyOnce: currentSnapshot !== undefined});\n\n const items = useSelector(getAccountUsageTreeItems);\n const loading = useSelector(getAccountUsageTreeLoading);\n const loaded = useSelector(getAccountUsageTreeLoaded);\n const error = useSelector(getAccountUsageTreeError);\n\n const mediums = useSelector(getAccountUsageTreeMediums);\n const columns = useColumnsByPreset(mediums);\n\n if (!loading && error) {\n return <ErrorBlock error={error} />;\n }\n\n return (\n <DataTableYT\n loading={loading}\n loaded={loaded}\n columns={columns}\n data={items}\n settings={TABLE_SETTINGS_DOUBLE_TOOLBAR}\n rowClassName={() => ROW_CLASS_NAME}\n useThemeYT\n />\n );\n}\n\nfunction AccountUsageDetailsTreeDiff() {\n const dispatch = useDispatch();\n React.useEffect(() => {\n dispatch(fetchAccountUsageTreeDiff());\n }, [dispatch]);\n\n const items = useSelector(getAccountUsageTreeDiffItems);\n const loading = useSelector(getAccountUsageTreeDiffLoading);\n const loaded = useSelector(getAccountUsageTreeDiffLoaded);\n const error = useSelector(getAccountUsageTreeDiffError);\n\n const mediums = useSelector(getAccountUsageTreeDiffMediums);\n const columns = useColumnsByPreset(mediums);\n\n if (!loading && error) {\n return <ErrorBlock error={error} />;\n }\n\n return (\n <DataTableYT\n loading={loading}\n loaded={loaded}\n columns={columns}\n data={items}\n settings={TABLE_SETTINGS_DOUBLE_TOOLBAR}\n rowClassName={() => ROW_CLASS_NAME}\n useThemeYT\n />\n );\n}\n\nconst AccountUsageDetailsListMemo = React.memo(AccountUsageDetailsList);\nconst AccountUsageDetailsListDiffMemo = React.memo(AccountUsageDetailsListDiff);\nconst AccountUsageDetailsTreeMemo = React.memo(AccountUsageDetailsTree);\nconst AccountUsageDetailsTreeDiffMemo = React.memo(AccountUsageDetailsTreeDiff);\n\nfunction AccountUsageDetailsDiff({children}: {children: React.ReactNode}) {\n const isDiffView = useSelector(isAccountsUsageDiffView);\n const from = useSelector(getAccountsUsageDiffFromSnapshot);\n const to = useSelector(getAccountsUsageDiffToSnapshot);\n\n if (!isDiffView) {\n return <>Unexpected view mode</>;\n }\n\n if ((!from && !to) || from === to) {\n return (\n <NoContent\n warning={\"You don't have any selected snapshot range\"}\n hint={\n <React.Fragment>\n Please select <Secondary>From</Secondary>, <Secondary>To</Secondary>{' '}\n snapshots\n </React.Fragment>\n }\n />\n );\n }\n\n return <>{children}</>;\n}\n\nconst AccountUsageDetailsDiffMemo = React.memo(AccountUsageDetailsDiff);\n\nfunction AccountUsageDetails() {\n const dispatch = useDispatch();\n const viewType = useSelector(getAccountUsageViewType);\n\n React.useEffect(() => {\n dispatch(syncAccountsUsageViewTypeWithSettings());\n }, [dispatch]);\n\n let diffContent = `${viewType} is not implemented` as React.ReactNode;\n\n switch (viewType) {\n case 'tree':\n return <AccountUsageDetailsTreeMemo />;\n case 'list-plus-folders':\n case 'list':\n return <AccountUsageDetailsListMemo key={viewType} />;\n case 'list-diff':\n case 'list-plus-folders-diff':\n diffContent = <AccountUsageDetailsListDiffMemo key={viewType} />;\n break;\n case 'tree-diff':\n diffContent = <AccountUsageDetailsTreeDiffMemo />;\n break;\n }\n\n return !viewType ? null : (\n <AccountUsageDetailsDiffMemo>{diffContent}</AccountUsageDetailsDiffMemo>\n );\n}\n\nconst AccountsUsageDetailsListLoaderMemo = React.memo(AccountsUsageDetailsListLoader);\nconst AccountsUsageDetailsTreeLoaderMemo = React.memo(AccountsUsageDetailsTreeLoader);\n\nfunction UsageLoader() {\n const viewType = useSelector(getAccountUsageViewType);\n\n switch (viewType) {\n case 'list':\n case 'list-plus-folders':\n return <AccountsUsageDetailsListLoaderMemo />;\n case 'tree':\n return <AccountsUsageDetailsTreeLoaderMemo />;\n case 'tree-diff':\n return <AccountsUsageDetailsTreeDiffLoader />;\n case 'list-diff':\n case 'list-plus-folders-diff':\n return <AccountsUsageDetailsListDiffLoader />;\n }\n return null;\n}\n\nfunction AccountsUsageDetailsListLoader() {\n const loading = useSelector(getAccountUsageListLoading);\n return <Loader visible={loading} />;\n}\n\nfunction AccountsUsageDetailsTreeLoader() {\n const loading = useSelector(getAccountUsageTreeLoading);\n return <Loader visible={loading} />;\n}\n\nfunction AccountsUsageDetailsListDiffLoader() {\n const loading = useSelector(getAccountUsageListDiffLoading);\n return <Loader visible={loading} />;\n}\n\nfunction AccountsUsageDetailsTreeDiffLoader() {\n const loading = useSelector(getAccountUsageTreeDiffLoading);\n return <Loader visible={loading} />;\n}\n\nfunction PageCounter() {\n const value = useSelector(getAccountUsagePageIndex);\n const count = useSelector(getAccountUsagePageCount);\n\n return count > 1 ? (\n <Secondary>\n Page: {Number(value) + 1} / {count}{' '}\n </Secondary>\n ) : null;\n}\n\nexport default React.memo(AccountUsageDetails);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport AccountUsageToolbar from './AccountUsageToolbar';\nimport AccountUsageDetails from './AccountUsageDetails';\nimport WithStickyToolbar from '../../../../components/WithStickyToolbar/WithStickyToolbar';\nimport {NoContent} from '../../../../components/NoContent/NoContent';\nimport {getActiveAccount} from '../../../../store/selectors/accounts/accounts-ts';\nimport {useSelector} from 'react-redux';\nimport {getAccountUsageViewType} from '../../../../store/selectors/accounts/account-usage';\nimport ErrorBoundary from '../../../../components/ErrorBoundary/ErrorBoundary';\n\nconst block = cn('accounts');\n\nfunction AccountDetailedUsageTab() {\n const account = useSelector(getActiveAccount);\n const viewType = useSelector(getAccountUsageViewType);\n\n if (!account) {\n return (\n <NoContent\n warning={\"You don't have any selected accounts\\n\"}\n hint={'Please choose one to display charts'}\n />\n );\n }\n\n return (\n <ErrorBoundary>\n <WithStickyToolbar\n className={block('usage')}\n doubleHeight={viewType === 'tree' || viewType === 'tree-diff'}\n toolbar={<AccountUsageToolbar />}\n content={<AccountUsageDetails />}\n />\n </ErrorBoundary>\n );\n}\n\nexport default React.memo(AccountDetailedUsageTab);\n","import React from 'react';\nimport block from 'bem-cn-lite';\nimport {ConnectedProps, connect, useSelector} from 'react-redux';\n\nimport reduce_ from 'lodash/reduce';\n\nimport {Redirect, Route, Switch} from 'react-router';\n\nimport Tabs from '../../../components/Tabs/Tabs';\n\nimport {Page} from '../../../constants/index';\nimport {\n ACCOUNTS_ALLOWED_ROOT_TABS,\n ACCOUNTS_DEFAULT_TAB,\n AccountsTab,\n} from '../../../constants/accounts/accounts';\nimport {\n getAccountsIsFinalLoadingStatus,\n getActiveAccount,\n} from '../../../store/selectors/accounts/accounts-ts';\nimport {getLastVisitedTabs} from '../../../store/selectors/settings';\nimport {TabSettings, makeTabProps} from '../../../utils';\nimport {formatByParams} from '../../../utils/format';\n\nimport AccountsGeneralTab from '../tabs/general/AccountsGeneralTab';\nimport AccountStatisticTab from '../tabs/statistic/AccountStatisticTab';\nimport AccountsAclTab from '../tabs/acl/AccountsAclTab';\nimport AccountsMonitorTab from '../tabs/monitor/AccountsMonitorTab';\nimport AccountsUsageTab from '../tabs/detailed-usage/AccountUsageTab';\nimport {useAppRumMeasureStart} from '../../../rum/rum-app-measures';\nimport {useRumMeasureStop} from '../../../rum/RumUiContext';\nimport {RumMeasureTypes} from '../../../rum/rum-measure-types';\nimport {getCluster} from '../../../store/selectors/global';\nimport AccountsUpdater from './AccountsUpdater';\nimport {getAccountsUsageBasePath} from '../../../config';\nimport {RootState} from '../../../store/reducers';\n\nimport './Accounts.scss';\nimport UIFactory from '../../../UIFactory';\nimport {UI_TAB_SIZE} from '../../../constants/global';\n\nconst b = block('accounts');\n\ntype Props = ConnectedProps<typeof connector>;\n\nexport class Accounts extends React.Component<\n Props & {match: {url: string; path: string}; lastVisitedTab: string}\n> {\n static defaultProps = {\n lastVisitedTab: ACCOUNTS_DEFAULT_TAB,\n };\n\n render() {\n const {match, cluster, lastVisitedTab, activeAccount, allowUsageTab} = this.props;\n const showSettings = reduce_(\n AccountsTab,\n (acc, tab) => {\n acc[tab] = {\n show: Boolean(activeAccount) || Boolean(ACCOUNTS_ALLOWED_ROOT_TABS[tab]),\n };\n return acc;\n },\n {} as Record<string, TabSettings>,\n );\n const usageTab = showSettings[AccountsTab.USAGE];\n usageTab.show = usageTab.show && Boolean(allowUsageTab);\n\n const statsTab = showSettings[AccountsTab.STATISTICS];\n statsTab.show = statsTab.show && Boolean(UIFactory.getStatisticsComponentForAccount());\n\n const {\n component: monitoringComponent,\n urlTemplate,\n title: monitoringTitle,\n } = UIFactory.getMonitoringForAccounts() ?? {};\n const monTab = showSettings[AccountsTab.MONITOR];\n monTab.show = monTab.show && Boolean(monitoringComponent ?? urlTemplate);\n if (urlTemplate) {\n monTab.routed = false;\n monTab.external = true;\n monTab.url = formatByParams(urlTemplate, {\n ytCluster: cluster,\n ytAccount: activeAccount,\n });\n }\n\n const props = makeTabProps(match.url, AccountsTab, showSettings, undefined, {\n [AccountsTab.USAGE]: 'Detailed usage',\n [AccountsTab.MONITOR]: monitoringTitle ?? 'Monitoring',\n });\n\n const lastTab = lastVisitedTab in AccountsTab ? lastVisitedTab : undefined;\n const tabToRedirect = activeAccount && lastTab ? lastTab : AccountsTab.GENERAL;\n\n return (\n <div className=\"elements-page__content\">\n <AccountsRumMeasure />\n <AccountsUpdater />\n <section className={b(null, 'elements-main-section')}>\n <div className=\"elements-section\">\n <div className={b('heading')}>\n <Tabs\n {...props}\n active={ACCOUNTS_DEFAULT_TAB}\n className={b('tabs')}\n routed\n routedPreserveLocation\n size={UI_TAB_SIZE}\n />\n </div>\n </div>\n <div className={b('tab-viewer')}>\n <Switch>\n <Route\n path={`${match.path}/${AccountsTab.GENERAL}`}\n component={AccountsGeneralTab}\n />\n {statsTab.show && (\n <Route\n path={`${match.path}/${AccountsTab.STATISTICS}`}\n component={AccountStatisticTab}\n />\n )}\n {monTab.show && monitoringComponent && (\n <Route\n path={`${match.path}/${AccountsTab.MONITOR}`}\n render={() => (\n <AccountsMonitorTab component={monitoringComponent} />\n )}\n />\n )}\n <Route\n path={`${match.path}/${AccountsTab.ACL}`}\n component={AccountsAclTab}\n />\n {usageTab.show && (\n <Route\n path={`${match.path}/${AccountsTab.USAGE}`}\n component={AccountsUsageTab}\n />\n )}\n <Redirect from={match.url} to={`${match.url}/${tabToRedirect}`} />\n </Switch>\n </div>\n </section>\n </div>\n );\n }\n}\n\nconst mapStateToProps = (state: RootState) => {\n const lastVisitedTabs = getLastVisitedTabs(state);\n\n return {\n lastVisitedTab: lastVisitedTabs[Page.ACCOUNTS],\n activeAccount: getActiveAccount(state),\n allowUsageTab: Boolean(getAccountsUsageBasePath()),\n cluster: getCluster(state),\n };\n};\n\nconst connector = connect(mapStateToProps);\nexport default connector(Accounts);\n\nfunction AccountsRumMeasure() {\n const isFinalStatus = useSelector(getAccountsIsFinalLoadingStatus);\n\n useAppRumMeasureStart({\n type: RumMeasureTypes.ACCOUNTS,\n allowStart: ([isFinal]) => !isFinal,\n startDeps: [isFinalStatus],\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.ACCOUNTS,\n allowStop: ([isFinal]) => isFinal,\n stopDeps: [isFinalStatus],\n });\n\n return null;\n}\n","import cn from 'bem-cn-lite';\nimport React from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\n\nimport {DialogField, FormApi, YTDFDialog} from '../../../../../components/Dialog';\nimport {closeCreateModal} from '../../../../../store/actions/accounts/editor';\nimport {loadEditedAccount} from '../../../../../store/actions/accounts/accounts';\nimport {createAccountFromInfo} from '../../../../../utils/accounts/editor';\nimport {getCluster, getCurrentUserName} from '../../../../../store/selectors/global';\nimport {isDeveloper} from '../../../../../store/selectors/global/is-developer';\nimport {getActiveAccount} from '../../../../../store/selectors/accounts/accounts';\nimport {ROOT_ACCOUNT_NAME} from '../../../../../constants/accounts/accounts';\n\nimport './AccountCreateDialog.scss';\nimport {RootState} from '../../../../../store/reducers';\nimport {isIdmAclAvailable} from '../../../../../config';\nimport {isAbcAllowed} from '../../../../../UIFactory';\n\nconst block = cn('account-create-dialog');\n\ninterface FormValues {\n abcService?: {slug: string; id: number};\n account: string;\n parentAccount: string;\n responsibles: Array<unknown>;\n createHome: boolean;\n}\n\nfunction isRootAccount(account: string) {\n return account === 'root';\n}\n\nclass AccountCreateDialog extends React.Component<ConnectedProps<typeof connector>> {\n render() {\n const {visible, newAccountInfo, activeAccount, currentUserName, isAdmin} = this.props;\n\n const {parentAccount, responsibles = []} = newAccountInfo;\n\n return (\n <YTDFDialog<FormValues>\n className={block()}\n visible={visible}\n onClose={this.onClose}\n headerProps={{title: 'Create account'}}\n onAdd={this.onSubmit}\n pristineSubmittable\n initialValues={{\n ...newAccountInfo,\n parentAccount:\n parentAccount || activeAccount || (isAdmin ? ROOT_ACCOUNT_NAME : undefined),\n responsibles: responsibles.length\n ? responsibles\n : [{value: currentUserName, type: 'users'}],\n }}\n fields={[\n ...((isAdmin && isAbcAllowed()\n ? [\n {\n name: 'abcService',\n type: 'abc-control',\n caption: 'Service in ABC',\n required: true,\n visibilityCondition: {\n when: 'parentAccount',\n isActive: isRootAccount,\n },\n extras: {\n placeholder: 'Enter ABC service name',\n },\n },\n ]\n : []) as Array<DialogField<FormValues>>),\n {\n name: 'account',\n type: 'text',\n caption: 'Account name',\n required: true,\n extras: {\n placeholder: 'Enter account name',\n className: block('name'),\n },\n },\n {\n name: 'parentAccount',\n type: 'accountsSuggest',\n caption: 'Parent account',\n required: true,\n extras: {\n placeholder: 'Enter parent account name',\n allowRootAccount: isAdmin,\n },\n },\n ...((isIdmAclAvailable()\n ? [\n {\n name: 'responsibles',\n type: 'acl-subjects',\n caption: 'Responsible users',\n required: true,\n extras: {\n placeholder: 'Enter name or login',\n allowedTypes: ['users'],\n },\n },\n ]\n : []) as Array<DialogField<FormValues>>),\n ...(isAdmin\n ? [\n {\n name: 'createHome',\n type: 'tumbler' as const,\n caption: 'Create home directory',\n },\n ]\n : []),\n ]}\n />\n );\n }\n\n onSubmit = (form: FormApi<FormValues>) => {\n const {createAccountFromInfo, closeCreateModal, loadEditedAccount, cluster} = this.props;\n const newAccountInfo = form.getState().values;\n if (!isRootAccount(newAccountInfo.parentAccount)) {\n newAccountInfo.abcService = undefined;\n }\n\n return createAccountFromInfo(cluster, newAccountInfo).then(() => {\n closeCreateModal();\n const {account} = newAccountInfo;\n loadEditedAccount(account);\n });\n };\n\n onClose = (form: FormApi<FormValues>) => {\n this.props.closeCreateModal(form.getState().values);\n };\n}\n\nconst mapStateToProps = (state: RootState) => {\n const {\n accounts: {editor},\n } = state;\n return {\n currentUserName: getCurrentUserName(state),\n activeAccount: getActiveAccount(state),\n visible: editor.createModalVisible,\n newAccountInfo: editor.newAccountInfo as FormValues,\n cluster: getCluster(state),\n isAdmin: isDeveloper(state),\n };\n};\n\nconst mapDispatchToProps = {\n closeCreateModal,\n loadEditedAccount,\n createAccountFromInfo,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport default connector(AccountCreateDialog);\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\n\nimport {openCreateModal} from '../../../../../store/actions/accounts/editor';\n\nimport AccountCreateDialog from '../../../../../pages/accounts/tabs/general/Editor/AccountCreateDialog';\nimport Button from '../../../../../components/Button/Button';\n\nclass AccountCreate extends Component {\n static propTypes = {\n openCreateModal: PropTypes.func.isRequired,\n className: PropTypes.string,\n };\n\n state = {\n infoValue: '',\n activeCreateValue: '',\n showConfirmMessage: false,\n showErrorMessage: false,\n };\n\n render() {\n const {openCreateModal, className} = this.props;\n return (\n <span className={className}>\n <Button view=\"action\" title=\"Create account\" onClick={openCreateModal}>\n Create account\n </Button>\n <AccountCreateDialog />\n </span>\n );\n }\n}\n\nconst mapDispatchToProps = {\n openCreateModal,\n};\n\nexport default connect(null, mapDispatchToProps)(AccountCreate);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport some_ from 'lodash/some';\n\nimport {RowWithName} from '../../../containers/AppNavigation/TopRowContent/SectionName';\nimport Favourites, {FavouritesItem} from '../../../components/Favourites/Favourites';\nimport {Breadcrumbs, BreadcrumbsItem} from '../../../components/Breadcrumbs';\nimport {\n getFavouriteAccounts,\n isActiveAcountInFavourites,\n} from '../../../store/selectors/favourites';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {\n getAccountsMapByName,\n getActiveAccount,\n} from '../../../store/selectors/accounts/accounts-ts';\nimport {setActiveAccount} from '../../../store/actions/accounts/accounts';\nimport {accountsToggleFavourite} from '../../../store/actions/favourites';\nimport {getActiveAccountBreadcrumbs} from '../../../store/selectors/accounts/accounts';\n\nimport AccountCreate from '../tabs/general/Editor/AccountCreate';\nimport {useHistory} from 'react-router';\nimport {makeRoutedURL} from '../../../store/location';\nimport {Page} from '../../../constants';\n\nimport {getCluster, getClusterUiConfig} from '../../../store/selectors/global';\nimport {ACCOUNTS_ALLOWED_ROOT_TABS, AccountsTab} from '../../../constants/accounts/accounts';\n\nimport './AccountsTopRowContent.scss';\nimport UIFactory from '../../../UIFactory';\n\nconst block = cn('accounts-top-row-content');\n\nfunction AccountsTopRowContent() {\n const clusterUiConfig = useSelector(getClusterUiConfig);\n const account = useSelector(getActiveAccount);\n const accountsByName = useSelector(getAccountsMapByName) as any;\n\n const current = accountsByName[account];\n\n return (\n <RowWithName page={Page.ACCOUNTS} urlParams={{account: ''}}>\n <AccountsFavourites />\n <AccountsBreadcrumbs />\n <span className={block('actions')}>\n {UIFactory.renderTopRowExtraControlsForAccount({\n clusterUiConfig,\n accountAttributes: current?.$attributes,\n })}\n <AccountCreate className={block('create')} />\n </span>\n </RowWithName>\n );\n}\n\nfunction AccountsFavourites() {\n const isActiveInFavourites = useSelector(isActiveAcountInFavourites);\n const favourites = useSelector(getFavouriteAccounts);\n const dispatch = useDispatch();\n const activeAccount = useSelector(getActiveAccount);\n\n const handleFavouriteItemClick = React.useCallback(\n (item: FavouritesItem) => {\n dispatch(setActiveAccount(item.path));\n },\n [dispatch],\n );\n\n const handleFavouriteToggle = React.useCallback(() => {\n dispatch(accountsToggleFavourite(activeAccount));\n }, [dispatch, activeAccount]);\n\n return (\n <Favourites\n isActive={isActiveInFavourites}\n items={favourites}\n onItemClick={handleFavouriteItemClick}\n onToggle={handleFavouriteToggle}\n toggleDisabled={!activeAccount}\n theme={'clear'}\n />\n );\n}\n\nconst ROOT_PLACEHOLDER = '<Root>';\n\nfunction AccountsBreadcrumbs() {\n // @ts-ignore\n const bcItems = useSelector(getActiveAccountBreadcrumbs).slice(1);\n const dispatch = useDispatch();\n const history = useHistory();\n const cluster = useSelector(getCluster);\n\n const handleBreadcrumbsClick = (key: string | number) => {\n dispatch(setActiveAccount(key === ROOT_PLACEHOLDER ? '' : key));\n };\n\n const items = React.useMemo(() => {\n return [{text: ''}, ...bcItems].map((item) => {\n const account = item.text;\n const text = account || ROOT_PLACEHOLDER;\n const pathname = account\n ? window.location.pathname\n : calcRootPathname(window.location.pathname, cluster);\n\n return (\n <BreadcrumbsItem key={text} href={makeRoutedURL(pathname, {account})}>\n {text}\n </BreadcrumbsItem>\n );\n });\n }, [bcItems, cluster]);\n\n return (\n <Breadcrumbs\n navigate={history.push}\n className={block('breadcrumbs')}\n onAction={handleBreadcrumbsClick}\n showRoot\n >\n {items}\n </Breadcrumbs>\n );\n}\n\nfunction calcRootPathname(pathname: string, cluster: string) {\n const isAllowedRootTab = some_(ACCOUNTS_ALLOWED_ROOT_TABS, (_v, tab) => {\n return pathname.endsWith('/' + tab);\n });\n\n return isAllowedRootTab ? pathname : `/${cluster}/${Page.ACCOUNTS}/${AccountsTab.GENERAL}`;\n}\n\nexport default React.memo(AccountsTopRowContent);\n","import {RumMeasureStartProps, useRumMeasureStart} from './RumUiContext';\nimport {useSelector} from 'react-redux';\nimport {getCluster} from '../store/selectors/global';\n\nexport function useAppRumMeasureStart<T extends Array<any>>(params: RumMeasureStartProps<T>) {\n const cluster = useSelector(getCluster);\n\n useRumMeasureStart({\n ...params,\n subPage: params.subPage || `ui.${cluster}`,\n });\n}\n","import filter_ from 'lodash/filter';\nimport map_ from 'lodash/map';\nimport sortBy_ from 'lodash/sortBy';\n\nimport unipika from '../../common/thor/unipika';\nimport ypath from '../../common/thor/ypath';\n\nimport CancelHelper from '../cancel-helper';\nimport {YTApiId, ytApiV3Id} from '../../rum/rum-wrap-api';\n\nexport const pathEditorRequests = new CancelHelper();\n\nfunction prepareSuggestions(initialPath, parentPath, children) {\n let suggestions = map_(children, (child) => {\n const prepared = {};\n\n prepared.parentPath = parentPath;\n prepared.childPath = '/' + unipika.decode(ypath.getValue(child));\n prepared.path = prepared.parentPath + prepared.childPath;\n prepared.type = ypath.getValue(child, '/@type');\n prepared.dynamic = ypath.getValue(child, '/@dynamic');\n prepared.targetPathBroken = ypath.getValue(child, '/@broken');\n\n return prepared;\n });\n\n suggestions = sortBy_(suggestions, 'childPath');\n\n return suggestions;\n}\n\nexport function preparePath(currentPath) {\n return ypath.YPath.create(currentPath, 'absolute').toSubpath(-2).stringify();\n}\n\nexport function loadSuggestions(path, customFilter) {\n const parentPath = preparePath(path);\n\n return ytApiV3Id\n .list(YTApiId.pathEditorLoadSuggestions, {\n parameters: {path: parentPath, attributes: ['type', 'dynamic']},\n cancellation: pathEditorRequests.saveCancelToken,\n })\n .then(ypath.getValue)\n .then((nodes) => prepareSuggestions(path, parentPath, nodes))\n .then((suggestions) => (customFilter ? customFilter(suggestions) : suggestions));\n}\n\nexport function filterByCurrentPath(currentPath, suggestions) {\n const path = currentPath.toLowerCase();\n\n return filter_(suggestions, (child) => {\n const hasPartOfPath = child.path.startsWith(path);\n const isShowCurrentChild = child.path !== path || child.type === 'map_node';\n\n return hasPartOfPath && isShowCurrentChild;\n });\n}\n\nexport function getNextSelectedIndex(suggestion, selectedIndex) {\n if (selectedIndex === -1 || selectedIndex === suggestion.length - 1) {\n return 0;\n }\n\n return selectedIndex + 1;\n}\n\nexport function getPrevSelectedIndex(suggestions, selectedIndex) {\n if (selectedIndex === -1 || selectedIndex === 0) {\n return suggestions.length - 1;\n }\n\n return selectedIndex - 1;\n}\n\nexport function getCompletedPath(suggestion) {\n return suggestion.type === 'map_node' ? suggestion.path + '/' : suggestion.path;\n}\n\nexport function getIconNameForType(type, targetPathBroken) {\n const icons = {\n document: 'file-alt',\n string_node: 'file-alt',\n int64_node: 'file-alt',\n uint64_node: 'file-alt',\n double_node: 'file-alt',\n boolean_node: 'file-alt',\n map_node: 'folder',\n scheduler_pool_tree_map: 'folder-tree',\n scheduler_pool: 'tasks',\n tablet_cell: 'th',\n journal: 'book',\n table: 'th',\n table_dynamic: 'dyn-th',\n replicated_table: 'th',\n chaos_replicated_table: 'chaos-replicated-table',\n replication_log_table: 'replication-log-table',\n file: 'file',\n topmost_transaction_map: 'folder',\n transaction_map: 'folder',\n transaction: 'code-branch',\n nested_transaction: 'code-branch',\n link: ypath.getBoolean(targetPathBroken) ? 'unlink' : 'link',\n rootstock: 'link',\n portal_entrance: 'link',\n cell_node: 'circle',\n cell_node_map: 'far circle',\n sys_node: 'cog',\n access_control_object_namespace_map: 'acl-namespace-map',\n access_control_object_namespace: 'acl-namespace',\n access_control_object: 'acl-object',\n };\n\n const icon = type ? icons[type] || 'not-suported' : 'eye-slash';\n\n return icon;\n}\n","const SvgCircleInfo = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...props}><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M8 13.5a5.5 5.5 0 1 0 0-11 5.5 5.5 0 0 0 0 11M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14m1-9.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0m-.25 3a.75.75 0 0 0-1.5 0V11a.75.75 0 0 0 1.5 0z\" clipRule=\"evenodd\" /></svg>;\nexport default SvgCircleInfo;","'use client';\nimport React from 'react';\nimport { useForkRef } from '../../hooks';\nimport { useTooltipVisible } from '../../hooks/private';\nimport { Popup } from '../Popup';\nimport { Text } from '../Text';\nimport { block } from '../utils/cn';\nimport './Tooltip.css';\nconst b = block('tooltip');\nconst DEFAULT_PLACEMENT = ['bottom', 'top'];\nexport const Tooltip = (props) => {\n const { children, content, disabled, placement = DEFAULT_PLACEMENT, qa, id, className, style, disablePortal, contentClassName, openDelay = 1000, closeDelay, } = props;\n const [anchorElement, setAnchorElement] = React.useState(null);\n const tooltipVisible = useTooltipVisible(anchorElement, {\n openDelay,\n closeDelay,\n preventTriggerOnFocus: true,\n });\n const renderPopup = () => {\n return (React.createElement(Popup, { id: id, role: \"tooltip\", className: b(null, className), style: style, open: tooltipVisible && !disabled, placement: placement, anchorRef: { current: anchorElement }, disablePortal: disablePortal, disableEscapeKeyDown: true, disableOutsideClick: true, disableLayer: true, qa: qa },\n React.createElement(\"div\", { className: b('content', contentClassName) },\n React.createElement(Text, { variant: \"body-short\", color: \"complementary\" }, content))));\n };\n const child = React.Children.only(children);\n const childRef = child.ref;\n const ref = useForkRef(setAnchorElement, childRef);\n return (React.createElement(React.Fragment, null,\n React.cloneElement(child, { ref }),\n anchorElement ? renderPopup() : null));\n};\n","import React from 'react';\nimport { KeyCode } from '../../../constants';\nimport { useBoolean } from '../useBoolean';\nexport const useTooltipVisible = (anchor, { openDelay = 250, closeDelay, preventTriggerOnFocus = false, }) => {\n const [tooltipVisible, showTooltip, hideTooltip] = useBoolean(false);\n const timeoutRef = React.useRef();\n const isFocusWithinRef = React.useRef(false);\n React.useEffect(() => {\n if (!anchor) {\n return undefined;\n }\n function handleMouseEnter() {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = window.setTimeout(showTooltip, openDelay);\n }\n function handleMouseLeave() {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = window.setTimeout(hideTooltip, closeDelay);\n }\n function handleFocusWithin(e) {\n if (!isFocusWithinRef.current && document.activeElement === e.target) {\n isFocusWithinRef.current = true;\n clearTimeout(timeoutRef.current);\n showTooltip();\n }\n }\n function handleBlurWithin(e) {\n if (isFocusWithinRef.current &&\n !e.currentTarget.contains(e.relatedTarget)) {\n isFocusWithinRef.current = false;\n clearTimeout(timeoutRef.current);\n hideTooltip();\n }\n }\n function handleKeyDown(e) {\n if (e.key === KeyCode.ESCAPE) {\n clearTimeout(timeoutRef.current);\n hideTooltip();\n }\n }\n anchor.addEventListener('mouseenter', handleMouseEnter);\n anchor.addEventListener('mouseleave', handleMouseLeave);\n anchor.addEventListener('keydown', handleKeyDown);\n if (!preventTriggerOnFocus) {\n anchor.addEventListener('focus', handleFocusWithin);\n anchor.addEventListener('blur', handleBlurWithin);\n }\n return () => {\n anchor.removeEventListener('mouseenter', handleMouseEnter);\n anchor.removeEventListener('mouseleave', handleMouseLeave);\n anchor.removeEventListener('focus', handleFocusWithin);\n anchor.removeEventListener('blur', handleBlurWithin);\n anchor.removeEventListener('keydown', handleKeyDown);\n };\n }, [anchor, showTooltip, hideTooltip, openDelay, closeDelay, preventTriggerOnFocus]);\n return tooltipVisible;\n};\n","import React from 'react';\nexport function useBoolean(initialState) {\n const [value, setValue] = React.useState(initialState);\n return [\n value,\n React.useCallback(() => setValue(true), []),\n React.useCallback(() => setValue(false), []),\n React.useCallback(() => setValue((val) => !val), []),\n ];\n}\n"],"names":["b","block","headingCN","CollapsibleSectionStateLess","_Component","_inherits","_super","_createSuper","_this","_classCallCheck","_len","arguments","length","args","Array","_key","call","apply","concat","toggle","onToggle","props","collapsed","_createClass","key","value","_this$props","this","name","children","size","overview","className","headingClassName","marginDirection","togglerRightPadding","_jsx","ErrorBoundary","_jsxs","margin","clickable","onClick","Icon","awesome","Component","CollapsibleSection","_React$useState","React","_React$useState2","_slicedToArray","setCollapsed","onChange","_objectSpread","defaultProps","ElementsTableFooter","state","item","index","undefined","css","itemHeight","templates","itemMods","selectedIndex","computeKey","cssHover","_this$state","columnSet","columnItems","selected","currentKey","ElementsTableRow","bFooter","ELEMENTS_TABLE","footer","renderRow","columns","_prepareColumnsData","prepareColumnsData","items","set","_WithStickyFooter","_React$Component","WithStickyFooter","bWrapper","sticky","prepareTableClassName","renderStickyFooter","displayName","getDisplayName","mapDispatchToProps","toggleColumnSortOrder","compose","connect","_ref","sortState","tables","_WithStickyHead","WithStickyHead","top","style","ElementsTableHeader","renderStickyHead","theme","padded","striped","HEADER_HEIGHT","cn","Pagination","control","handler","disabled","tooltip","hotkeySettings","keys","hotkey","scope","hotkeyScope","hotkeyHandler","title","Button","first","previous","next","last","pin","Hotkey","settings","_this$props2","showInput","inputValue","TextInput","qa","type","onUpdate","_this$props3","renderComponent","renderInput","SimplePagination","_props$value","NaN","_props$min","min","_props$max","max","_props$step","step","firstDiff","isNaN","lastDiff","handleToFirst","handleToPrev","newValue","handleToNext","handleToLast","TextInputWithDebounce","_props$debounce","debounce","_props$onUpdate","onBlur","onEnterKeyDown","onKeyDown","rest","_objectWithoutProperties","_excluded","input","setInput","handleChangeExt","throttle_","handleChange","text","handleKeyDown","e","handleBlur","WarningIcon","hoverContent","color","Tooltip","content","Text","variant","datepickerDefaultProps","useAllUserNamesFiltered","dispatch","useDispatch","loadUsersIfNotLoaded","namesSorted","useSelector","getAllUserNamesSorted","getFiltered","from","sortedIndexBy_","substr","to","sortedLastIndexBy_","slice","allNames","useGroupsLoaded","loadGroupsIfNotLoaded","GroupsLoader","AccountsNoContent","hint","NoContent","warning","AccountStatisticTab","cluster","getCluster","account","getActiveAccount","accountSubtreeAllNames","getActiveAccountSubtreeNames","getTheme","AccountStatisticsComponent","UIFactory","getStatisticsComponentForAccount","activeAccount","fetchAccounts","loadUsers","AccountsAcl","path","AccountsMonitorTab","AccountMonitor","component","ACCOUNT_USAGE_COLUMN_TITLE","approximate_row_count","master_memory","MEDIUM_PREFIX","readableAccountUsageColumnName","column","withMediumPrefix","readable","startsWith","format","Readable","getAccountUsageSnapshots","accounts","usage","snapshots","snapshot_timestamps","getAccountUsageCurrentSnapshot","filters","currentSnapshot","getAccountUsageTreePath","treePath","getAccountUsageSortState","getAccountUsageViewType","viewType","getAccountUsagePathFilter","pathFilter","getAccountUsageOwnerFilter","ownerFilter","getAccountUsageDateRangeFilter","dateRange","getAccountUsageDateRangeTypeFilter","dateRangeType","getAccountsUsageDiffFromSnapshot","diffFromSnapshot","getAccountsUsageDiffToSnapshot","diffToSnapshot","getAccountUsageListRequestParams","list","requestParams","getAccountUsageListLoading","loading","getAccountUsageListLoaded","loaded","getAccountUsageListError","error","getAccountUsageListItems","_state$accounts$usage","response","getAccountUsageListMediums","_state$accounts$usage3","mediums","getAccountUsageTreeRequestParams","tree","getAccountUsageTreeLoading","getAccountUsageTreeLoaded","getAccountUsageTreeError","getAccountUsageTreeItems","_state$accounts$usage5","getAccountUsageTreeMediums","_state$accounts$usage7","getAccountUsageTreeItemsBasePath","base_path","getAccountUsageListDiffRequestParams","listDiff","getAccountUsageListDiffLoading","getAccountUsageListDiffLoaded","getAccountUsageListDiffError","getAccountUsageListDiffItems","_state$accounts$usage9","getAccountUsageListDiffMediums","_state$accounts$usage11","getAccountUsageTreeDiffRequestParams","treeDiff","getAccountUsageTreeDiffLoading","getAccountUsageTreeDiffLoaded","getAccountUsageTreeDiffError","getAccountUsageTreeDiffItems","_state$accounts$usage13","getAccountUsageTreeDiffMediums","_state$accounts$usage15","isAccountsUsageDiffView","createSelector","endsWith","getAccountUsageTreeItemsBasePathSplitted","treeDiffPath","fragments","ypath","YPath","map_","map","join","getAccountUsageFieldFiltersRequestParameter","_ref2","res","push","field","Math","round","Date","getTime","comparison","getAccountUsagePageCount","_state$accounts$usage4","row_count","_state$accounts$usage8","_state$accounts$usage12","listRowCount","treeRowCount","listDiffRowCount","rowCount","ceil","PAGE_SIZE","getAccountUsagePageIndex","pageIndex","Number","getAccountUsageSortStateByColumn","reduce_","acc","_ref3","order","multisortIndex","getAccountUsageAvailableColumns","_state$accounts$usage2","fields","_state$accounts$usage6","_state$accounts$usage10","_state$accounts$usage14","listFields","treeFields","listDiffFields","treeDiffFields","defaultTreeColumns","defaultListColumns","defaultListFoldersColumns","firstNotEmpty","a1","a2","getAccountUsageVisibleColumns","getSettingsAccountUsageColumnsTree","getSettingsAccountUsageColumnsList","getSettingsAccountUsageColumnsListFolders","treeColumns","listColumns","listFoldersColumns","getAccountUsageSelectableColumns","filter_","ACCOUNT_USAGE_UNAVAILABLE_FIELDS","has","Set","getAccountUsageVisibleDataColumns","selectableColumns","userColumns","getFilterFromToTimestamps","older","timestamp","now","newer","fetchAccountUsageListDiff","getState","timestamps","params","getFilterParameters","ACCOUNTS_USAGE_LIST_DIFF_REQUEST","data","axios","request","method","url","accountUsageApiUrl","withCredentials","then","isEqual_","ACCOUNTS_USAGE_LIST_DIFF_SUCCESS","_error$response","ACCOUNTS_USAGE_LIST_DIFF_FAILED","fetchAccountUsageTreeDiff","row_filter","ACCOUNTS_USAGE_TREE_DIFF_REQUEST","ACCOUNTS_USAGE_TREE_DIFF_SUCCESS","_error$response2","ACCOUNTS_USAGE_TREE_DIFF_FAILED","handle","getAccountsUsageBasePath","sortStates","path_regexp","owner","field_filters","Object","assign","exclude_map_nodes","sort_order","desc","page","fetchAccountUsageList","ACCOUNTS_USAGE_LIST_REQUEST","ACCOUNTS_USAGE_LIST_SUCCESS","ACCOUNTS_USAGE_LIST_FAILED","fetchAccountUsageTree","ACCOUNTS_USAGE_TREE_REQUEST","ACCOUNTS_USAGE_TREE_SUCCESS","_error$response3","ACCOUNTS_USAGE_TREE_FAILED","fetchAccountUsage","setAccountUsageDataFilter","ACCOUNTS_USAGE_FILTERS_PARTIAL","isEmpty_","_getAccountUsageDateR","openAccountAttributesModal","openModal","promise","timestamp_rounding_policy","AccountUsageColumnsDialogMemo","AccountUsageColumnsDialog","AccountUsageColumnsButton","visible","setVisible","toggleVisibility","handleClose","onClose","visibleColumns","availableColumns","checked","caption","setSettingsAccountUsageColumnsList","setSettingsAccountUsageColumnsListFolders","setSettingsAccountUsageColumnsTree","available","filter","selectedSet","other","isMedium","ColumnSelectorModal","isVisible","onCancel","onConfirm","itemRenderer","_item$data","Secondary","PathPart","fragment","fragmentToYSON","__html","unipika","decode","dangerouslySetInnerHTML","_unused","PathFragment","lastFragmentOnly","i","_Fragment","useFetchSnapshots","updateFn","ACCOUNTS_USAGE_SNAPSHOTS_REQUEST","ACCOUNTS_USAGE_SNAPSHOTS_SUCCESS","ACCOUNTS_USAGE_SNAPSHOTS_FAILED","fetchAccountsUsageSnapshots","useUpdater","timeout","SnapshotFilterMemo","SnapshotFilter","PathFilterMemo","PathFilter","OwnerFilterMemo","OwnerFilter","DateRangeFilterMemo","DateRangeFilter","DateRangeTypeFilterMemo","DateRangeTypeFilter","PaginationFilterMemo","PaginationFilter","ViewTypeMemo","ViewType","UsageBreadcrumbsMemo","UsageBreadcrumbs","SnapshotDiffFilterMemo","SnapshotDiffFilter","AccountUsageToolbar","isDiffView","Toolbar","itemsToWrap","node","wrapperClassName","shrinkable","growable","UNDEFINED_SNAPSHOT","string2snapshot","v","snapshot2string","String","useSnapshotItems","reverse_","moment","splice","FromSnapshot","Select","placeholder","vals","width","ToSnapshot","handleSnapshotChange","SecondaryBold","_useAllUserNamesFilte","Suggest","_items","renderItem","SubjectCard","noLink","popupClassName","_useSelector","Datepicker","range","allowNullableValues","onError","pageCount","setAccountUsageDataPageIndex","VIEW_TYPE_ITEMS","icon","face","DiffTitle","setSettingsAccountUsageViewType","pathArr","history","useHistory","useMemo","BreadcrumbsItem","href","makeRoutedURL","window","location","pathname","handleBreadcrumbClick","useCallback","setTimeout","Breadcrumbs","navigate","onAction","showRoot","AccountActionsField","onAttributeButtonClick","handleOpenAttributeModal","navigationUrl","Page","NAVIGATION","Flex","gap","alignItems","AttributesButton","view","withTooltip","tooltipProps","placement","Link","routed","routedPreserveLocation","whiteSpace","getRenderSign","getDiffClass","showDiff","sign","DetailTableCell","additionalValue","formatType","totalValue","formatFn","Bytes","justifyContent","diff","Boolean","tabIndex","CircleInfoIcon","TABLE_SETTINGS","displayIndices","stickyHead","DataTable","MOVING","stickyFooter","stickyTop","STICKY_TOOLBAR_BOTTOM","stickyBottom","syncHeadOnResize","TABLE_SETTINGS_DOUBLE_TOOLBAR","STICKY_DOUBLE_TOOLBAR_BOTTOM","ROW_CLASS_NAME","AccountUsageDetailsHeader","sortOrder","onSort","nextOrder","opts","multisort","prevSortState","updateSortStateArray","ColumnHeader","PageCounterMemo","PageCounter","PathHeader","UsageLoaderMemo","UsageLoader","useColumnsByPreset","handleAttributeButtonClick","accountData","columnsByName","Map","iconName","header","sortable","render","_item$row","row","acl_status","getIconNameForType","PathView","Warning","disk_space","align","forEach_","medium","versionedName","additionalKey","NO_VALUE","capitalize_","DateTime","forEach","get","UPDATE_TIMEOUT","AccountUsageDetailsList","onlyOnce","ErrorBlock","DataTableYT","rowClassName","useThemeYT","AccountUsageDetailsListDiff","AccountUsageDetailsTree","AccountUsageDetailsTreeDiff","AccountUsageDetailsListMemo","AccountUsageDetailsListDiffMemo","AccountUsageDetailsTreeMemo","AccountUsageDetailsTreeDiffMemo","AccountUsageDetailsDiff","AccountUsageDetailsDiffMemo","AccountUsageDetails","lastViewType","getSettingsAccountUsageViewType","diffContent","AccountsUsageDetailsListLoaderMemo","AccountsUsageDetailsListLoader","AccountsUsageDetailsTreeLoaderMemo","AccountsUsageDetailsTreeLoader","AccountsUsageDetailsTreeDiffLoader","AccountsUsageDetailsListDiffLoader","Loader","count","AccountDetailedUsageTab","WithStickyToolbar","doubleHeight","toolbar","Accounts","_UIFactory$getMonitor","_makeTabProps","match","lastVisitedTab","allowUsageTab","showSettings","AccountsTab","tab","show","ACCOUNTS_ALLOWED_ROOT_TABS","usageTab","USAGE","statsTab","STATISTICS","getMonitoringForAccounts","monitoringComponent","urlTemplate","monitoringTitle","monTab","MONITOR","external","formatByParams","ytCluster","ytAccount","makeTabProps","_defineProperty","lastTab","tabToRedirect","GENERAL","AccountsRumMeasure","AccountsUpdater","Tabs","active","ACCOUNTS_DEFAULT_TAB","UI_TAB_SIZE","Switch","Route","AccountsGeneralTab","ACL","AccountsAclTab","AccountsUsageTab","Redirect","getLastVisitedTabs","ACCOUNTS","isFinalStatus","getAccountsIsFinalLoadingStatus","useAppRumMeasureStart","RumMeasureTypes","allowStart","startDeps","useRumMeasureStop","allowStop","_ref4","stopDeps","isRootAccount","AccountCreateDialog","onSubmit","form","createAccountFromInfo","closeCreateModal","loadEditedAccount","newAccountInfo","values","parentAccount","abcService","currentUserName","isAdmin","_newAccountInfo$respo","responsibles","YTDFDialog","headerProps","onAdd","pristineSubmittable","initialValues","ROOT_ACCOUNT_NAME","_toConsumableArray","isAbcAllowed","required","visibilityCondition","when","isActive","extras","allowRootAccount","isIdmAclAvailable","allowedTypes","connector","editor","getCurrentUserName","createModalVisible","isDeveloper","AccountCreate","infoValue","activeCreateValue","showConfirmMessage","showErrorMessage","openCreateModal","AccountsTopRowContent","clusterUiConfig","getClusterUiConfig","current","getAccountsMapByName","RowWithName","urlParams","AccountsFavourites","AccountsBreadcrumbs","renderTopRowExtraControlsForAccount","accountAttributes","$attributes","isActiveInFavourites","isActiveAcountInFavourites","favourites","getFavouriteAccounts","handleFavouriteItemClick","setActiveAccount","handleFavouriteToggle","accountsToggleFavourite","Favourites","onItemClick","toggleDisabled","ROOT_PLACEHOLDER","bcItems","getActiveAccountBreadcrumbs","some_","_v","calcRootPathname","useRumMeasureStart","subPage","pathEditorRequests","CancelHelper","preparePath","currentPath","create","toSubpath","stringify","loadSuggestions","customFilter","parentPath","ytApiV3Id","YTApiId","pathEditorLoadSuggestions","parameters","attributes","cancellation","saveCancelToken","getValue","nodes","initialPath","suggestions","child","prepared","childPath","dynamic","targetPathBroken","sortBy_","prepareSuggestions","filterByCurrentPath","toLowerCase","hasPartOfPath","isShowCurrentChild","getNextSelectedIndex","suggestion","getPrevSelectedIndex","getCompletedPath","icons","document","string_node","int64_node","uint64_node","double_node","boolean_node","map_node","scheduler_pool_tree_map","scheduler_pool","tablet_cell","journal","table","table_dynamic","replicated_table","chaos_replicated_table","replication_log_table","file","topmost_transaction_map","transaction_map","transaction","nested_transaction","link","getBoolean","rootstock","portal_entrance","cell_node","cell_node_map","sys_node","access_control_object_namespace_map","access_control_object_namespace","access_control_object","xmlns","fill","viewBox","fillRule","d","clipRule","DEFAULT_PLACEMENT","id","disablePortal","contentClassName","openDelay","closeDelay","anchorElement","setAnchorElement","tooltipVisible","useTooltipVisible","preventTriggerOnFocus","only","childRef","ref","useForkRef","Popup","role","open","anchorRef","disableEscapeKeyDown","disableOutsideClick","disableLayer","anchor","showTooltip","hideTooltip","initialState","setValue","val","useBoolean","timeoutRef","isFocusWithinRef","addEventListener","handleMouseEnter","handleMouseLeave","handleFocusWithin","handleBlurWithin","removeEventListener","clearTimeout","activeElement","target","currentTarget","contains","relatedTarget","ESCAPE"],"sourceRoot":""}