@profoundlogic/coderflow-server 0.5.1 → 0.5.2

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 (165) hide show
  1. package/dist/coder-server.js +1 -1
  2. package/dist/config.js +1 -1
  3. package/dist/lib/agent-keepalive.js +1 -1
  4. package/dist/lib/agent-models.js +1 -1
  5. package/dist/lib/api-keys.js +1 -1
  6. package/dist/lib/apiKeys.js +1 -1
  7. package/dist/lib/app-server-ports.js +1 -1
  8. package/dist/lib/auto-judge.js +1 -1
  9. package/dist/lib/automation-service.js +1 -1
  10. package/dist/lib/basic-auth.js +1 -1
  11. package/dist/lib/bindings.js +1 -1
  12. package/dist/lib/build-history.js +1 -1
  13. package/dist/lib/build-output-service.js +1 -1
  14. package/dist/lib/build-scheduler.js +1 -1
  15. package/dist/lib/build-service.js +1 -1
  16. package/dist/lib/ca-certificates.js +1 -1
  17. package/dist/lib/claude-oauth-refresh.js +1 -1
  18. package/dist/lib/cli/build.js +1 -1
  19. package/dist/lib/cli/cleanup-users.js +1 -1
  20. package/dist/lib/cli/config-command.js +1 -1
  21. package/dist/lib/cli/config.js +1 -1
  22. package/dist/lib/cli/create-user.js +1 -1
  23. package/dist/lib/cli/grant-admin.js +1 -1
  24. package/dist/lib/cli/init.js +1 -1
  25. package/dist/lib/cli/jira.js +1 -1
  26. package/dist/lib/cli/license.js +1 -1
  27. package/dist/lib/cli/list-roles.js +1 -1
  28. package/dist/lib/cli/list-users.js +1 -1
  29. package/dist/lib/cli/server-manager.js +1 -1
  30. package/dist/lib/cli/set-password.js +1 -1
  31. package/dist/lib/config-migration.js +1 -1
  32. package/dist/lib/container-credential-sync.js +1 -1
  33. package/dist/lib/container-tokens.js +1 -1
  34. package/dist/lib/data-dir.js +1 -1
  35. package/dist/lib/deployment-history.js +1 -1
  36. package/dist/lib/deployment-service.js +1 -1
  37. package/dist/lib/docker-utils.js +1 -1
  38. package/dist/lib/email.js +1 -1
  39. package/dist/lib/emailTemplates.js +1 -1
  40. package/dist/lib/entitlement.js +1 -1
  41. package/dist/lib/external-connections.js +1 -1
  42. package/dist/lib/fetch-utils.js +1 -1
  43. package/dist/lib/git-commit-details-route.js +1 -1
  44. package/dist/lib/git-history-diff-guardrails.js +1 -1
  45. package/dist/lib/git-provider-service.js +1 -1
  46. package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
  47. package/dist/lib/git-provider-setup/index.js +1 -1
  48. package/dist/lib/git-provider-setup/setup-factory.js +1 -1
  49. package/dist/lib/git-provider-setup/setup-interface.js +1 -1
  50. package/dist/lib/git-providers/azure-devops-provider.js +1 -1
  51. package/dist/lib/git-providers/github-app-provider.js +1 -1
  52. package/dist/lib/git-providers/index.js +1 -1
  53. package/dist/lib/git-providers/provider-factory.js +1 -1
  54. package/dist/lib/git-providers/provider-interface.js +1 -1
  55. package/dist/lib/github-urls.js +1 -1
  56. package/dist/lib/group-objective-linking.js +1 -1
  57. package/dist/lib/ibmi-sync.js +1 -1
  58. package/dist/lib/jira-client.js +1 -1
  59. package/dist/lib/judge-blinding.js +1 -1
  60. package/dist/lib/logger.js +1 -1
  61. package/dist/lib/migration-to-scoped-rbac.js +1 -1
  62. package/dist/lib/model-fetcher.js +1 -1
  63. package/dist/lib/notifications.js +1 -1
  64. package/dist/lib/objective-context.js +1 -1
  65. package/dist/lib/oidc-auth.js +1 -1
  66. package/dist/lib/oidc-device-flow.js +1 -1
  67. package/dist/lib/passwordTokens.js +1 -1
  68. package/dist/lib/permission-resolver.js +1 -1
  69. package/dist/lib/pin-cascade.js +1 -1
  70. package/dist/lib/provider-accounts.js +1 -1
  71. package/dist/lib/provider-oauth.js +1 -1
  72. package/dist/lib/provider-profile.js +1 -1
  73. package/dist/lib/provider-token-refresh.js +1 -1
  74. package/dist/lib/rbac-user-state.js +1 -1
  75. package/dist/lib/request-url.js +1 -1
  76. package/dist/lib/rewind.js +1 -1
  77. package/dist/lib/role-definitions.js +1 -1
  78. package/dist/lib/roles.js +1 -1
  79. package/dist/lib/secrets.js +1 -1
  80. package/dist/lib/setup-repo-git-auth.js +1 -1
  81. package/dist/lib/state-capture.js +1 -1
  82. package/dist/lib/static-files.js +1 -1
  83. package/dist/lib/task-name-format.js +1 -1
  84. package/dist/lib/task-name-generator.js +1 -1
  85. package/dist/lib/task-source-metadata.js +1 -1
  86. package/dist/lib/teams.js +1 -1
  87. package/dist/lib/user-git-oauth.js +1 -1
  88. package/dist/lib/user-git-tokens.js +1 -1
  89. package/dist/lib/users.js +1 -1
  90. package/dist/middleware/requireAuth.js +1 -1
  91. package/dist/middleware/requireInit.js +1 -1
  92. package/dist/middleware/requirePermission.js +1 -1
  93. package/dist/package.json +1 -1
  94. package/dist/playwright.config.js +1 -1
  95. package/dist/routes/apiKeys.js +1 -1
  96. package/dist/routes/auth-oidc.js +1 -1
  97. package/dist/routes/auth.js +1 -1
  98. package/dist/routes/automations.js +1 -1
  99. package/dist/routes/bindings.js +1 -1
  100. package/dist/routes/build.js +1 -1
  101. package/dist/routes/containers.js +1 -1
  102. package/dist/routes/deploy-task.js +1 -1
  103. package/dist/routes/environment-management.js +1 -1
  104. package/dist/routes/environments.js +1 -1
  105. package/dist/routes/external-skills.js +1 -1
  106. package/dist/routes/git-credentials.js +1 -1
  107. package/dist/routes/git-oauth.js +1 -1
  108. package/dist/routes/git-provider-setup.js +1 -1
  109. package/dist/routes/health.js +1 -1
  110. package/dist/routes/jira.js +1 -1
  111. package/dist/routes/objective-management.js +1 -1
  112. package/dist/routes/password.js +1 -1
  113. package/dist/routes/prompt.js +1 -1
  114. package/dist/routes/provider-auth.js +1 -1
  115. package/dist/routes/qa.js +1 -1
  116. package/dist/routes/roles.js +1 -1
  117. package/dist/routes/settings.js +1 -1
  118. package/dist/routes/skill-management.js +1 -1
  119. package/dist/routes/skills.js +1 -1
  120. package/dist/routes/tasks.js +1 -1
  121. package/dist/routes/teams.js +1 -1
  122. package/dist/routes/templates.js +1 -1
  123. package/dist/routes/test-task.js +1 -1
  124. package/dist/routes/test.js +1 -1
  125. package/dist/routes/users.js +1 -1
  126. package/dist/routes/visualizations.js +1 -1
  127. package/dist/scripts/create-user.js +1 -1
  128. package/dist/scripts/migrate-config-to-data-dir.js +1 -1
  129. package/dist/start.js +1 -1
  130. package/dist/web-ui/public/activity-detail-modal.js +1 -1
  131. package/dist/web-ui/public/activity-feed.js +1 -1
  132. package/dist/web-ui/public/activity-formatters.js +1 -1
  133. package/dist/web-ui/public/agent-event-parser.js +1 -1
  134. package/dist/web-ui/public/app.js +1 -1
  135. package/dist/web-ui/public/approve-dialog.js +1 -1
  136. package/dist/web-ui/public/automation-links.js +1 -1
  137. package/dist/web-ui/public/automation-schedule.js +1 -1
  138. package/dist/web-ui/public/comments-widget.js +1 -1
  139. package/dist/web-ui/public/diff-utils.js +1 -1
  140. package/dist/web-ui/public/environments.js +1 -1
  141. package/dist/web-ui/public/feedback-widget.js +1 -1
  142. package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
  143. package/dist/web-ui/public/git-history.js +1 -1
  144. package/dist/web-ui/public/git-status.js +1 -1
  145. package/dist/web-ui/public/index.js +1 -1
  146. package/dist/web-ui/public/login.js +1 -1
  147. package/dist/web-ui/public/markdown-editor.js +1 -1
  148. package/dist/web-ui/public/markdown-file-editor.js +1 -1
  149. package/dist/web-ui/public/modal-maximize.js +1 -1
  150. package/dist/web-ui/public/notifications.js +1 -1
  151. package/dist/web-ui/public/pr-dialog.js +1 -1
  152. package/dist/web-ui/public/roles.js +1 -1
  153. package/dist/web-ui/public/server-health.js +1 -1
  154. package/dist/web-ui/public/settings.js +1 -1
  155. package/dist/web-ui/public/setup-password.js +1 -1
  156. package/dist/web-ui/public/skills.js +1 -1
  157. package/dist/web-ui/public/sse-client.js +1 -1
  158. package/dist/web-ui/public/sse-shared-worker.js +1 -1
  159. package/dist/web-ui/public/task.js +1 -1
  160. package/dist/web-ui/public/teams.js +1 -1
  161. package/dist/web-ui/public/terminal.js +1 -1
  162. package/dist/web-ui/public/theme.js +1 -1
  163. package/dist/web-ui/public/users.js +1 -1
  164. package/dist/web-ui/public/variant-grouping.js +1 -1
  165. package/package.json +1 -1
@@ -1 +1 @@
1
- const _0x312cdf=_0x23b9;(function(_0x5b88a2,_0x4a67b0){const _0x3ad528=_0x23b9,_0x271147=_0x5b88a2();while(!![]){try{const _0x5de950=parseInt(_0x3ad528(0x126))/0x1+-parseInt(_0x3ad528(0x178))/0x2+-parseInt(_0x3ad528(0x185))/0x3*(parseInt(_0x3ad528(0x117))/0x4)+-parseInt(_0x3ad528(0x131))/0x5*(parseInt(_0x3ad528(0x12b))/0x6)+parseInt(_0x3ad528(0x19a))/0x7*(parseInt(_0x3ad528(0x17e))/0x8)+-parseInt(_0x3ad528(0x147))/0x9*(parseInt(_0x3ad528(0x18c))/0xa)+-parseInt(_0x3ad528(0x1ab))/0xb*(-parseInt(_0x3ad528(0x16c))/0xc);if(_0x5de950===_0x4a67b0)break;else _0x271147['push'](_0x271147['shift']());}catch(_0x323eec){_0x271147['push'](_0x271147['shift']());}}}(_0x26df,0x4da0f));import{API,Utils,initializeAdminMenu}from'./app.js';import{initTheme,mountThemeToggle}from'./theme.js';const state={'teams':[],'users':[],'roles':[],'environments':[],'teamBindings':[],'currentUser':null,'editingTeamId':null,'bindingsTeamId':null,'deletingTeamId':null,'modalSnapshot':null};document['addEventListener'](_0x312cdf(0x128),async()=>{const _0x7cf3bd=_0x312cdf;initTheme(),mountThemeToggle();try{state[_0x7cf3bd(0x191)]=await API[_0x7cf3bd(0x155)]();}catch{window['location'][_0x7cf3bd(0x1ac)]=_0x7cf3bd(0x18e);return;}await initializeAdminMenu(state[_0x7cf3bd(0x191)]);const _0x356c6b=state[_0x7cf3bd(0x191)];if(!_0x356c6b['hasAllPermissions']&&!_0x356c6b[_0x7cf3bd(0x166)]&&!_0x356c6b['hasEnvironmentBindings']&&!_0x356c6b[_0x7cf3bd(0x193)]){Utils[_0x7cf3bd(0x127)](_0x7cf3bd(0x1a7),'error'),setTimeout(()=>{const _0x10fbc5=_0x7cf3bd;window['location'][_0x10fbc5(0x1ac)]=_0x10fbc5(0x15e);},0x7d0);return;}(_0x356c6b[_0x7cf3bd(0x1a0)]||_0x356c6b[_0x7cf3bd(0x166)])&&(document[_0x7cf3bd(0x1b1)](_0x7cf3bd(0x156))[_0x7cf3bd(0x1a3)]=![]),bindEventListeners(),await Promise[_0x7cf3bd(0x11c)]([loadTeams(),loadUsers(),loadRoles(),loadEnvironments()]),renderTeams();});async function loadTeams(){const _0x2939b8=_0x312cdf,_0x2a0a9b=document[_0x2939b8(0x1b1)]('teams-loading'),_0x5659b9=document[_0x2939b8(0x1b1)](_0x2939b8(0x13c)),_0x1c4fb5=document[_0x2939b8(0x1b1)](_0x2939b8(0x13d));try{_0x2a0a9b[_0x2939b8(0x1a3)]=![],_0x5659b9['hidden']=!![],_0x1c4fb5['hidden']=!![];const {teams:_0x5f0ae0}=await API[_0x2939b8(0x123)]();state[_0x2939b8(0x137)]=_0x5f0ae0||[],renderTeams(),_0x2a0a9b['hidden']=!![],_0x1c4fb5[_0x2939b8(0x1a3)]=![];}catch(_0x1d4ba8){_0x2a0a9b[_0x2939b8(0x1a3)]=!![],_0x5659b9[_0x2939b8(0x1a3)]=![],document[_0x2939b8(0x1b1)](_0x2939b8(0x167))[_0x2939b8(0x188)]=_0x1d4ba8[_0x2939b8(0x122)];}}async function loadUsers(){const _0x1034b9=_0x312cdf;try{const {users:_0x491858}=await API[_0x1034b9(0x150)]();state['users']=_0x491858||[];}catch{state[_0x1034b9(0x196)]=[];}}async function loadRoles(){const _0x5cce79=_0x312cdf;try{const {roles:_0x273cd7}=await API['getRoleDefinitions']();state[_0x5cce79(0x180)]=_0x273cd7||[];}catch{state['roles']=[];}}async function loadEnvironments(){const _0xe69966=_0x312cdf;try{const _0x6959f8=await API[_0xe69966(0x13e)]();state[_0xe69966(0x149)]=_0x6959f8[_0xe69966(0x149)]||[];}catch{state[_0xe69966(0x149)]=[];}}function renderTeams(){const _0x9690d5=_0x312cdf,_0x3f4c71=document[_0x9690d5(0x1b1)](_0x9690d5(0x168)),_0x12368d=document[_0x9690d5(0x1b1)](_0x9690d5(0x1a2));if(!_0x3f4c71)return;_0x12368d&&(_0x12368d[_0x9690d5(0x188)]=state[_0x9690d5(0x137)][_0x9690d5(0x18f)]+_0x9690d5(0x181)+(state[_0x9690d5(0x137)]['length']===0x1?'':'s'));if(state[_0x9690d5(0x137)][_0x9690d5(0x18f)]===0x0){_0x3f4c71[_0x9690d5(0x1a1)]=_0x9690d5(0x132)+(state['currentUser']?.[_0x9690d5(0x1a0)]||state['currentUser']?.[_0x9690d5(0x166)]?'Click\x20<strong>Create\x20Team</strong>\x20to\x20get\x20started.':'')+_0x9690d5(0x16e);return;}const _0x268e84=state[_0x9690d5(0x191)]?.['hasAllPermissions'];_0x3f4c71[_0x9690d5(0x1a1)]=state['teams']['map'](_0x516b0b=>{const _0x3b5261=_0x9690d5,_0x117546=_0x268e84||_0x516b0b[_0x3b5261(0x1a6)],_0x2ec883=_0x268e84||_0x516b0b[_0x3b5261(0x18d)],_0x2ea953=_0x117546||_0x2ec883,_0x2949a7=(_0x516b0b[_0x3b5261(0x14a)]||[])['length'];return _0x3b5261(0x142)+Utils[_0x3b5261(0x17c)](_0x516b0b['name'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x516b0b[_0x3b5261(0x16a)]?_0x3b5261(0x151)+Utils['escapeHtml'](_0x516b0b[_0x3b5261(0x16a)])+_0x3b5261(0x120):'')+_0x3b5261(0x1aa)+_0x2949a7+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22user-actions\x22\x20style=\x22display:\x20flex;\x20gap:\x200.25rem;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x2ea953?_0x3b5261(0x176)+_0x516b0b['id']+_0x3b5261(0x1ae):'')+_0x3b5261(0x1ad)+(_0x117546?'<button\x20class=\x22btn-icon\x22\x20title=\x22Access\x20bindings\x22\x20onclick=\x22window.openBindingsModal(\x27'+_0x516b0b['id']+_0x3b5261(0x169):'')+_0x3b5261(0x1ad)+(_0x117546?_0x3b5261(0x13b)+_0x516b0b['id']+_0x3b5261(0x138):'')+_0x3b5261(0x19b);})[_0x9690d5(0x194)]('');}function bindEventListeners(){const _0x5e19eb=_0x312cdf;document[_0x5e19eb(0x1b1)]('create-team-btn')?.[_0x5e19eb(0x197)](_0x5e19eb(0x14d),showCreateTeamModal),document[_0x5e19eb(0x1b1)]('retry-teams-btn')?.[_0x5e19eb(0x197)](_0x5e19eb(0x14d),loadTeams),document[_0x5e19eb(0x1b1)](_0x5e19eb(0x141))?.[_0x5e19eb(0x197)](_0x5e19eb(0x14d),requestHideTeamModal),document[_0x5e19eb(0x1b1)](_0x5e19eb(0x12e))?.[_0x5e19eb(0x197)](_0x5e19eb(0x14d),requestHideTeamModal),document[_0x5e19eb(0x1b1)](_0x5e19eb(0x130))?.['addEventListener'](_0x5e19eb(0x14d),saveTeam),document['querySelector'](_0x5e19eb(0x172))?.['addEventListener'](_0x5e19eb(0x14d),requestHideTeamModal),document[_0x5e19eb(0x1b1)](_0x5e19eb(0x14c))?.[_0x5e19eb(0x197)](_0x5e19eb(0x14d),addMember),document[_0x5e19eb(0x1b1)](_0x5e19eb(0x143))?.[_0x5e19eb(0x197)](_0x5e19eb(0x14d),hideBindingsModal),document[_0x5e19eb(0x148)](_0x5e19eb(0x19c))?.[_0x5e19eb(0x197)]('click',hideBindingsModal),document['getElementById']('add-binding-btn')?.['addEventListener'](_0x5e19eb(0x14d),()=>{const _0x6c922=_0x5e19eb;document[_0x6c922(0x1b1)](_0x6c922(0x174))[_0x6c922(0x1a3)]=![],document[_0x6c922(0x1b1)](_0x6c922(0x11e))[_0x6c922(0x1a3)]=!![],populateBindingForm();}),document[_0x5e19eb(0x1b1)](_0x5e19eb(0x199))?.[_0x5e19eb(0x197)](_0x5e19eb(0x14d),()=>{const _0x7b25f9=_0x5e19eb;document[_0x7b25f9(0x1b1)](_0x7b25f9(0x174))[_0x7b25f9(0x1a3)]=!![],document[_0x7b25f9(0x1b1)](_0x7b25f9(0x11e))['hidden']=![];}),document[_0x5e19eb(0x1b1)](_0x5e19eb(0x17b))?.['addEventListener'](_0x5e19eb(0x14d),saveBinding),document[_0x5e19eb(0x1b1)]('binding-resource-type')?.[_0x5e19eb(0x197)](_0x5e19eb(0x10f),onBindingResourceTypeChange),document[_0x5e19eb(0x1b1)](_0x5e19eb(0x161))?.['addEventListener'](_0x5e19eb(0x14d),hideDeleteModal),document[_0x5e19eb(0x1b1)](_0x5e19eb(0x139))?.[_0x5e19eb(0x197)](_0x5e19eb(0x14d),hideDeleteModal),document[_0x5e19eb(0x1b1)]('confirm-delete-team')?.[_0x5e19eb(0x197)](_0x5e19eb(0x14d),confirmDeleteTeam),document[_0x5e19eb(0x148)](_0x5e19eb(0x187))?.[_0x5e19eb(0x197)]('click',hideDeleteModal);}function _0x26df(){const _0x36e1ad=['mteWv1Hby3nn','AhjLzG','cIaGicaGicaGicaGia','jYKIpGOGicaGicaGicaGicaGidXZDMCGD2LKDgG9iJe2iIbOzwLNAhq9iJe2iIb2Awv3qM94psiWidaGmJqGmJqIigzPBgW9iM5VBMuIihn0CM9Rzt0Iy3vYCMvUDenVBg9YiIbZDhjVA2uTD2LKDgG9iJiIihn0CM9Rzs1SAw5Ly2fWpsjYB3vUzciGC3rYB2TLlwXPBMvQB2LUpsjYB3vUzci+cIaGicaGicaGicaGicaGica8Cgf0AcbKpsjnmteGneG0ytiGmIaWidaGmc0Yidj2mtrHmIaYidaGmcaWidiGmMGXngeYidiGmcaWidaGmI0YDI03iJ48l3bHDgG+cIaGicaGicaGicaGicaGica8Cgf0AcbKpsjnmtGUnsaYlJvHmI4XmJeGmI4XmJeGmcaWideGmYaZtdeYide1Bc00ideGms00idKUns05lJv6iJ48l3bHDgG+cIaGicaGicaGicaGicaGpc9ZDMC+cIaGicaGicaGicaGidWVyNv0Dg9UpG','zgvSzxrLlxrLyw0TBMfTzq','cIaGica8Dhi+cIaGicaGidX0zd4','z2v0rwXLBwvUDej5swq','y2HHBMDL','rgvSzxrPBMFIGky','zgvSzxrLqMLUzgLUzW','yMLUzgLUz3mTzw1WDhK','DgvHBs1TB2rHBa','C2vYDMvY','zMLSDgvY','zMLUzeLUzgv4','ntG2ohjxD0fICW','yMLUzgLUz3mTBw9KywWTDgL0Bgu','q3jLyxrPBMFIGky','zwrPDgLUz1rLyw1jza','C3vJy2vZCW','ywXS','zgLZywjSzwq','ywrKlwjPBMrPBMCTyNrU','rMfPBgvKihrVigXVywqGyMLUzgLUz3m6ia','pc9KAxy+','zgLZCgXHEq','BwvZC2fNzq','z2v0vgvHBxm','rgvSzxrLifrLyw0','DxnLCM5HBwu','mtaWmZe4AuXfvNbl','C2HVD1rVyxn0','re9nq29UDgvUDeXVywrLza','zgvSzxrLlxrLyw0TBw9KywW','vgvHBsbKzwXLDgvK','nKj4twvJwq','CMvZB3vYy2vFDhLWzq','yMLUzgLUzY1YzxnVDxjJzq','y2fUy2vSlxrLyw0','qwrKiejPBMrPBMC','C2f2zs10zwfT','mtu1nteZnvv1zvjJEG','cIaGicaGidX0CJ4kicaGicaGica8DgqGy29SC3bHBJ0ImYiGC3r5Bgu9iNrLEhqTywXPz246ignLBNrLCJSGy29SB3i6ihzHCIGTlwnVBg9YlxrLEhqTC2vJB25Kyxj5ktSGCgfKzgLUzZOGmNjLBtSIpGOGicaGicaGicaGtM8GDgvHBxmGEwv0lGOGicaGicaGicaG','pc9VChrPB24+','Bw9KywXtBMfWC2HVDa','z2v0qMLUzgLUz3m','BMfTzq','DgvHBxm','jYKIpGOGicaGicaGicaGicaGidXZDMCGD2LKDgG9iJe2iIbOzwLNAhq9iJe2iIb2Awv3qM94psiWidaGmJqGmJqIigzPBgW9iM5VBMuIihn0CM9Rzt0Iy3vYCMvUDenVBg9YiIbZDhjVA2uTD2LKDgG9iJiIihn0CM9Rzs1SAw5Ly2fWpsjYB3vUzciGC3rYB2TLlwXPBMvQB2LUpsjYB3vUzci+cIaGicaGicaGicaGicaGica8Cg9SEwXPBMuGCg9PBNrZpsiZidyGnsa2idiXidyIpJWVCg9SEwXPBMu+cIaGicaGicaGicaGicaGica8Cgf0AcbKpsjnmtKGnNyXngeYidiGmcaWideTmIaYsdDHmIaYidaGmcaXltiTmLy2BtmGmfy0ytiGmIaWidaGmsaYltjOngeYidiGmcaWideGmIaYDJiIpJWVCgf0Ad4kicaGicaGicaGicaGica8l3n2zZ4kicaGicaGicaGicaGpc9IDxr0B24+','y2fUy2vSlwrLBgv0zs10zwfT','DMfSDwu','pgj1DhrVBIbJBgfZCZ0IyNrUlwLJB24GyNrUlwrHBMDLCIiGDgL0Bgu9iKrLBgv0zsb0zwfTiIbVBMnSAwnRpsj3Aw5KB3CUzgvSzxrLvgvHBsGN','DgvHBxmTzxjYB3i','DgvHBxmTy29UDgvUDa','z2v0rw52AxjVBM1LBNrZ','jYKIihn0EwXLpsjJB2XVCJOGDMfYkc0Ty29SB3iTzgfUz2vYktSIpLjLBw92ztWVyNv0Dg9UpG','cIaGicaGidXKAxyGC3r5Bgu9iMrPC3bSyxK6igzSzxG7igfSAwDUlwL0zw1ZoIbJzw50zxi7igP1C3rPzNKTy29UDgvUDdOGC3bHy2uTyMv0D2vLBJSGCgfKzgLUzZOGmc4ZnxjLBsaWoYbIB3jKzxiTyM90Dg9ToIaXChGGC29SAwqGDMfYkc0Ty29SB3iTyM9YzgvYktSIpGOGicaGicaGidXZCgfUihn0EwXLpsjMB250lxnPEMu6idaUodC1CMvToYi+cIaGicaGicaGica','y2XVC2uTDgvHBs1TB2rHBa','cIaGicaGidX0CJ4kicaGicaGica8Dgq+cIaGicaGicaGica8C3bHBIbZDhLSzt0IzM9UDc13zwLNAhq6idyWmdSIpG','y2XVC2uTyMLUzgLUz3mTBw9KywW','idXZCgfUihn0EwXLpsjJB2XVCJOGDMfYkc0Ty29SB3iTDgv4Dc1ZzwnVBMrHCNKPoYbMB250lxnPEMu6idaUodvLBtSIpIG','zMXLEa','pg9WDgLVBIb2ywX1zt0I','mtC4mZGYn21zq1fyuq','CxvLCNLtzwXLy3rVCG','zw52AxjVBM1LBNrZ','BwvTyMvYCW','pg9WDgLVBIb2ywX1zt0IiJ5bBgWGzw52AxjVBM1LBNrZigfSCMvHzhKGyM91BMq8l29WDgLVBJ4','ywrKlw1LBwjLCI1IDg4','y2XPy2S','DgvHBq','CM9Szv9Pza','z2v0vxnLCNm','pgrPDIbZDhLSzt0IzM9UDc1ZAxPLoIaWlJHLBtSGy29SB3i6ihzHCIGTlwnVBg9YlxrLEhqTC2vJB25Kyxj5ktSGBwfYz2LUlxrVCdOGmc4XnxjLBtSIpG','ywrKvgvHBu1LBwjLCG','zgvSzxrPBMDuzwfTswq','C3r5Bgu','z2v0q3vYCMvUDfvZzxi','y3jLyxrLlxrLyw0TyNrU','yMLUzgLUz3nuzwfTswq','qwXSia','u2vYDMvY','pc90zd4kicaGicaGphrKpGOGicaGicaGia','AgfZ','zMLUza','qwnJzxnZiejPBMrPBMDZiokaLca','Aw5KzxGUAhrTBa','DgvHBs1KzxnJCMLWDgLVBG','yMLUzgLUzY1YzxnVDxjJzs10ExbL','y2XVC2uTzgvSzxrLlxrLyw0TBw9KywW','yMLUzgLUz3mTBw9KywW','jYKIihn0EwXLpsjJB2XVCJOGDMfYkc0Ty29SB3iTzgfUz2vYktSGCgfKzgLUzZOGmc4XnxjLBsaWlJrYzw07igzVBNqTC2L6ztOGmc44CMvToYi+uMvTB3zLpc9IDxr0B24+','zxjYB3i','DgvHBs1MB3jTlwvYCM9Y','y2fUtwfUywDLvgvHBxm','DgvHBxmTzxjYB3iTBwvZC2fNzq','DgvHBxmTDgfIBguTyM9KEq','jYKIpGOGicaGicaGicaGicaGidXZDMCGD2LKDgG9iJe2iIbOzwLNAhq9iJe2iIb2Awv3qM94psiWidaGmJqGmJqIigzPBgW9iM5VBMuIihn0CM9Rzt0Iy3vYCMvUDenVBg9YiIbZDhjVA2uTD2LKDgG9iJiIihn0CM9Rzs1SAw5Ly2fWpsjYB3vUzciGC3rYB2TLlwXPBMvQB2LUpsjYB3vUzci+cIaGicaGicaGicaGicaGica8Cgf0AcbKpsjnmtiGmJjZoc00idGTmtbwnwWToc0ZltGGm3y3yZaGnIa4ideWidGGmtb6iJ48l3bHDgG+cIaGicaGicaGicaGicaGpc9ZDMC+cIaGicaGicaGicaGidWVyNv0Dg9UpG','zgvZy3jPChrPB24','DxbKyxrLvgvHBq','mty5mZCXnKz3ENnrwq','twvTyMvYihjLBw92zwq','cIaGicaGicaGpc90zd4kicaGicaGpc90CJ4','zgvSzxrLvgvHBq','DhjPBq','yMLUzgLUzY1YB2XL','i3rLyw0TBw9KywWGlM1VzgfSlw92zxjSyxK','vgvHBsbUyw1LigLZihjLCxvPCMvK','ywrKlwjPBMrPBMCTzM9YBq','yMLUzgLUzY1YzxnVDxjJzs1JB250ywLUzxi','pgj1DhrVBIbJBgfZCZ0IyNrUlwLJB24IihrPDgXLpsjfzgL0ihrLyw0Iig9Uy2XPy2S9iNDPBMrVDY5VCgvUvgvHBu1VzgfSkcC','CMvTB3zLtwvTyMvYq2XPy2S','mJC3nJuWBNzdywTR','DgvHBs1TB2rHBc1MB290zxi','BwvTyMvYCY1SAxn0','C2f2zs1IAw5KAw5Nlwj0BG','zxnJyxbLshrTBa','zM9JDxm','nty3mKf4DKrYBG','BwvTyMvYCY1Zzwn0Aw9U','CM9Szxm','ihrLyw0','ww91igHHDMuGDw5ZyxzLzcbJAgfUz2vZlIbeAxnJyxjKihrOzw0/','pc90zd4kicaGicaGphrKpG','qMLUzgLUzYbHzgrLza','nde3ufvbDu5S','ywrKlw1LBwjLCI1YB3C','i2rLBgv0zs10zwfTlw1VzgfSic5TB2rHBc1VDMvYBgf5','Dgv4DenVBNrLBNq','y3jLyxrLqMLUzgLUzW','pgj1DhrVBIb0ExbLpsjIDxr0B24IignSyxnZpsjIDg4Tz2HVC3qGyNrUlxnTywXSiIbVBMnSAwnRpsj3Aw5KB3CUCMvTB3zLtwvTyMvYq2XPy2SOjW','y29UzMLYBs1KzwXLDguTDgvHBq','mZbzzMT1qLa','y2fUtwfUywDLtwvTyMvYCW','Bg9NAw4UAhrTBa','BgvUz3rO','zw52AxjVBM1LBNq','y3vYCMvUDfvZzxi','DgvHBs1Uyw1L','AgfZrw52AxjVBM1LBNrbzg1PBG','AM9PBG','DgvHBujPBMrPBMDZ','DxnLCNm','ywrKrxzLBNrmAxn0zw5LCG','BwfW','y2fUy2vSlwjPBMrPBMCTyNrU','ntm5ue9iCeX6','cIaGicaGicaGica8l2rPDJ4kicaGicaGica8l3rKpGOGicaGica8l3rYpG','i2jPBMrPBMDZlw1VzgfSic5TB2rHBc1VDMvYBgf5','rMfPBgvKihrVigrLBgv0zsb0zwfToIa','CMvZB3vYy2vFBMfTzq','BM9Uzq','AgfZqwXSugvYBwLZC2LVBNm','Aw5Uzxjive1m','DgvHBs1JB3vUDa','AgLKzgvU','ktWVC3bHBJ4','DgvHBs1TB2rHBc10AxrSzq','y2fUtwfUywDLvgvHBq','qwnJzxnZigrLBMLLzdOGww91igrVig5VDcbOyxzLihbLCM1PC3nPB24GDg8GDMLLDYb0zwfTCW','CMvZB3vYy2vFAwq','vgvHBsbJCMvHDgvK','cIaGicaGicaGpc90zd4kicaGicaGica8Dgq+'];_0x26df=function(){return _0x36e1ad;};return _0x26df();}function showCreateTeamModal(){const _0x4051ab=_0x312cdf;state['editingTeamId']=null,state['modalSnapshot']={'name':'','description':''},document['getElementById'](_0x4051ab(0x1a5))[_0x4051ab(0x188)]='Create\x20Team',document['getElementById']('team-name')['value']='',document[_0x4051ab(0x1b1)](_0x4051ab(0x192))[_0x4051ab(0x11d)]=![],document[_0x4051ab(0x1b1)](_0x4051ab(0x15f))[_0x4051ab(0x13a)]='',document['getElementById'](_0x4051ab(0x15f))[_0x4051ab(0x11d)]=![],document[_0x4051ab(0x1b1)](_0x4051ab(0x165))[_0x4051ab(0x1a3)]=!![],document[_0x4051ab(0x1b1)]('members-section')[_0x4051ab(0x1a3)]=!![],document['getElementById'](_0x4051ab(0x130))[_0x4051ab(0x1a3)]=![],document[_0x4051ab(0x1b1)](_0x4051ab(0x179))[_0x4051ab(0x1a3)]=![],document['getElementById'](_0x4051ab(0x113))['hidden']=![],setTimeout(()=>document[_0x4051ab(0x1b1)](_0x4051ab(0x192))[_0x4051ab(0x17d)](),0x64);}window['openTeamModal']=function(_0x3888f1){const _0xa90315=_0x312cdf,_0x5304c9=state['teams'][_0xa90315(0x15c)](_0x4fb48b=>_0x4fb48b['id']===_0x3888f1);if(!_0x5304c9)return;state[_0xa90315(0x11a)]=_0x3888f1;const _0x3eaaad=state[_0xa90315(0x191)]?.[_0xa90315(0x1a0)],_0x330ac1=_0x3eaaad||_0x5304c9[_0xa90315(0x1a6)],_0x406e87=_0x3eaaad||_0x5304c9['canManageMembers'],_0x842416=_0x330ac1,_0x177c80=_0x330ac1||_0x406e87,_0x1cea0c=_0x5304c9[_0xa90315(0x136)],_0x32719f=_0x5304c9['description']||'';state[_0xa90315(0x134)]={'name':_0x1cea0c,'description':_0x32719f},document[_0xa90315(0x1b1)](_0xa90315(0x1a5))[_0xa90315(0x188)]=_0x1cea0c,document[_0xa90315(0x1b1)](_0xa90315(0x192))[_0xa90315(0x13a)]=_0x1cea0c,document[_0xa90315(0x1b1)](_0xa90315(0x192))[_0xa90315(0x11d)]=!_0x842416,document[_0xa90315(0x1b1)](_0xa90315(0x15f))[_0xa90315(0x13a)]=_0x32719f,document[_0xa90315(0x1b1)](_0xa90315(0x15f))[_0xa90315(0x11d)]=!_0x842416,document['getElementById'](_0xa90315(0x165))[_0xa90315(0x1a3)]=!![],document[_0xa90315(0x1b1)](_0xa90315(0x17f))[_0xa90315(0x1a3)]=![],document[_0xa90315(0x1b1)](_0xa90315(0x130))[_0xa90315(0x1a3)]=!_0x842416,renderMembersList(_0x5304c9),updateMemberSelect(_0x5304c9),document[_0xa90315(0x1b1)](_0xa90315(0x113))['hidden']=![];};function isTeamModalDirty(){const _0x171e7a=_0x312cdf;if(!state[_0x171e7a(0x134)])return![];const _0x2565cf=document[_0x171e7a(0x1b1)](_0x171e7a(0x192))['value'][_0x171e7a(0x170)](),_0x490f0b=document[_0x171e7a(0x1b1)](_0x171e7a(0x15f))[_0x171e7a(0x13a)][_0x171e7a(0x170)]();return _0x2565cf!==state[_0x171e7a(0x134)][_0x171e7a(0x136)]||_0x490f0b!==state[_0x171e7a(0x134)][_0x171e7a(0x16a)];}function requestHideTeamModal(){const _0x42e1c3=_0x312cdf;if(isTeamModalDirty()){if(!confirm(_0x42e1c3(0x182)))return;}hideTeamModal();}function hideTeamModal(){const _0x393d47=_0x312cdf;document[_0x393d47(0x1b1)](_0x393d47(0x113))[_0x393d47(0x1a3)]=!![],document['getElementById'](_0x393d47(0x192))['disabled']=![],document['getElementById'](_0x393d47(0x15f))[_0x393d47(0x11d)]=![],state[_0x393d47(0x11a)]=null,state[_0x393d47(0x134)]=null;}window['openBindingsModal']=function(_0x183538){const _0x551c70=_0x312cdf,_0x3b2b23=state['teams']['find'](_0x2c9990=>_0x2c9990['id']===_0x183538);if(!_0x3b2b23)return;state['bindingsTeamId']=_0x183538,document['getElementById'](_0x551c70(0x118))[_0x551c70(0x188)]=_0x551c70(0x15d)+_0x3b2b23[_0x551c70(0x136)],document['getElementById'](_0x551c70(0x174))['hidden']=!![],document['getElementById'](_0x551c70(0x162))[_0x551c70(0x1a3)]=![],loadTeamBindings(_0x183538);};function hideBindingsModal(){const _0x4a0ef1=_0x312cdf;document[_0x4a0ef1(0x1b1)](_0x4a0ef1(0x162))[_0x4a0ef1(0x1a3)]=!![],state[_0x4a0ef1(0x157)]=null;}function renderMembersList(_0x33d3f8){const _0x4f5263=_0x312cdf,_0x19eff0=state['currentUser']?.[_0x4f5263(0x1a0)],_0x2f5d20=_0x19eff0||_0x33d3f8[_0x4f5263(0x18d)]||_0x33d3f8[_0x4f5263(0x1a6)],_0x298d2d=_0x33d3f8[_0x4f5263(0x14a)]||[],_0x570b42=document[_0x4f5263(0x1b1)](_0x4f5263(0x17a));if(_0x298d2d[_0x4f5263(0x18f)]===0x0){_0x570b42[_0x4f5263(0x1a1)]='<p\x20style=\x22font-size:\x200.875rem;\x20color:\x20var(--color-text-secondary);\x20margin:\x200.25rem\x200;\x22>No\x20members\x20yet</p>';return;}_0x570b42['innerHTML']=_0x298d2d[_0x4f5263(0x198)](_0x5178e3=>{const _0x6c70a4=_0x4f5263,_0x13049d=state[_0x6c70a4(0x196)][_0x6c70a4(0x15c)](_0x570092=>_0x570092['id']===_0x5178e3),_0xca8d61=_0x13049d?''+Utils[_0x6c70a4(0x17c)](_0x13049d[_0x6c70a4(0x125)])+(_0x13049d['name']?_0x6c70a4(0x144)+Utils['escapeHtml'](_0x13049d[_0x6c70a4(0x136)])+_0x6c70a4(0x1a4):''):Utils[_0x6c70a4(0x17c)](_0x5178e3);return _0x6c70a4(0x140)+_0xca8d61+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x2f5d20?_0x6c70a4(0x18a)+_0x5178e3+_0x6c70a4(0x163):'')+'\x0a\x20\x20\x20\x20\x20\x20</div>';})[_0x4f5263(0x194)]('');const _0x196348=document[_0x4f5263(0x1b1)](_0x4f5263(0x186));if(_0x196348)_0x196348[_0x4f5263(0x154)][_0x4f5263(0x121)]=_0x2f5d20?_0x4f5263(0x145):_0x4f5263(0x19f);}function updateMemberSelect(_0x83b5ef){const _0x36b6e7=_0x312cdf,_0x495073=document['getElementById']('add-member-select');if(!_0x495073)return;const _0x3bb6cb=new Set(_0x83b5ef[_0x36b6e7(0x14a)]||[]),_0x4347a3=state['users'][_0x36b6e7(0x115)](_0x2d5efa=>!_0x3bb6cb[_0x36b6e7(0x15b)](_0x2d5efa['id']));_0x495073[_0x36b6e7(0x1a1)]='<option\x20value=\x22\x22>Add\x20a\x20member…</option>'+_0x4347a3['map'](_0x66a4c1=>'<option\x20value=\x22'+_0x66a4c1['id']+'\x22>'+Utils[_0x36b6e7(0x17c)](_0x66a4c1['username'])+(_0x66a4c1[_0x36b6e7(0x136)]?'\x20('+Utils[_0x36b6e7(0x17c)](_0x66a4c1['name'])+')':'')+_0x36b6e7(0x133))[_0x36b6e7(0x194)]('');}function _0x23b9(_0xa77abe,_0xd6a6b0){_0xa77abe=_0xa77abe-0x10f;const _0x26df5e=_0x26df();let _0x23b98a=_0x26df5e[_0xa77abe];if(_0x23b9['YswKTG']===undefined){var _0x23cc27=function(_0x46f784){const _0x876a43='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x356c6b='',_0x2a0a9b='';for(let _0x5659b9=0x0,_0x1c4fb5,_0x5f0ae0,_0x1d4ba8=0x0;_0x5f0ae0=_0x46f784['charAt'](_0x1d4ba8++);~_0x5f0ae0&&(_0x1c4fb5=_0x5659b9%0x4?_0x1c4fb5*0x40+_0x5f0ae0:_0x5f0ae0,_0x5659b9++%0x4)?_0x356c6b+=String['fromCharCode'](0xff&_0x1c4fb5>>(-0x2*_0x5659b9&0x6)):0x0){_0x5f0ae0=_0x876a43['indexOf'](_0x5f0ae0);}for(let _0x491858=0x0,_0x273cd7=_0x356c6b['length'];_0x491858<_0x273cd7;_0x491858++){_0x2a0a9b+='%'+('00'+_0x356c6b['charCodeAt'](_0x491858)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2a0a9b);};_0x23b9['hiVqDv']=_0x23cc27,_0x23b9['ZpWrnw']={},_0x23b9['YswKTG']=!![];}const _0x398942=_0x26df5e[0x0],_0xcb308f=_0xa77abe+_0x398942,_0x31d6f5=_0x23b9['ZpWrnw'][_0xcb308f];return!_0x31d6f5?(_0x23b98a=_0x23b9['hiVqDv'](_0x23b98a),_0x23b9['ZpWrnw'][_0xcb308f]=_0x23b98a):_0x23b98a=_0x31d6f5,_0x23b98a;}async function addMember(){const _0x10b3ae=_0x312cdf,_0x2722d8=document[_0x10b3ae(0x1b1)]('add-member-select'),_0x20f941=_0x2722d8['value'];if(!_0x20f941||!state['editingTeamId'])return;try{const {team:_0x47693c}=await API[_0x10b3ae(0x152)](state[_0x10b3ae(0x11a)],_0x20f941);syncTeamInState(_0x47693c),renderMembersList(_0x47693c),updateMemberSelect(_0x47693c),_0x2722d8[_0x10b3ae(0x13a)]='',Utils['showToast']('Member\x20added',_0x10b3ae(0x11b));}catch(_0xa248f){Utils[_0x10b3ae(0x127)](_0xa248f[_0x10b3ae(0x122)],_0x10b3ae(0x164));}}window[_0x312cdf(0x177)]=async function(_0x18de6b){const _0x5374a5=_0x312cdf;if(!state[_0x5374a5(0x11a)])return;try{const {team:_0x486fb8}=await API['removeTeamMember'](state[_0x5374a5(0x11a)],_0x18de6b);syncTeamInState(_0x486fb8),renderMembersList(_0x486fb8),updateMemberSelect(_0x486fb8),Utils[_0x5374a5(0x127)](_0x5374a5(0x16d),_0x5374a5(0x11b));}catch(_0x39ef0d){Utils[_0x5374a5(0x127)](_0x39ef0d['message'],_0x5374a5(0x164));}};async function loadTeamBindings(_0x765fd5){const _0x3d0523=_0x312cdf,_0x1f1708=document[_0x3d0523(0x1b1)]('bindings-loading'),_0x507e97=document[_0x3d0523(0x1b1)](_0x3d0523(0x112)),_0x4f7b23=document[_0x3d0523(0x1b1)]('bindings-list-container'),_0x3e1b36=document[_0x3d0523(0x1b1)](_0x3d0523(0x11e));_0x1f1708['hidden']=![],_0x507e97[_0x3d0523(0x1a3)]=!![],_0x4f7b23[_0x3d0523(0x154)][_0x3d0523(0x121)]=_0x3d0523(0x19f),_0x3e1b36['hidden']=!![],document[_0x3d0523(0x1b1)]('add-binding-form')['hidden']=!![];try{const {bindings:_0x14ed39}=await API[_0x3d0523(0x135)]({'subject_type':'team','subject_id':_0x765fd5});state[_0x3d0523(0x195)]=_0x14ed39||[],_0x1f1708[_0x3d0523(0x1a3)]=!![],state[_0x3d0523(0x195)]['length']===0x0?_0x507e97[_0x3d0523(0x1a3)]=![]:(_0x4f7b23[_0x3d0523(0x154)][_0x3d0523(0x121)]='',renderBindingsTable()),(state[_0x3d0523(0x191)]?.[_0x3d0523(0x1a0)]||state['currentUser']?.['canManageTeams'])&&(_0x3e1b36[_0x3d0523(0x1a3)]=![]);}catch(_0x4a4124){_0x1f1708[_0x3d0523(0x1a3)]=!![],Utils[_0x3d0523(0x127)](_0x3d0523(0x11f)+_0x4a4124['message'],_0x3d0523(0x164));}}function renderBindingsTable(){const _0x2e3afb=_0x312cdf,_0x4c56fa=document[_0x2e3afb(0x1b1)]('bindings-table-body');if(!_0x4c56fa)return;const _0x109eac=state['currentUser']?.[_0x2e3afb(0x1a0)]||state['currentUser']?.[_0x2e3afb(0x166)];_0x4c56fa['innerHTML']=state[_0x2e3afb(0x195)][_0x2e3afb(0x198)](_0x3387ed=>{const _0x2eb731=_0x2e3afb,_0x5b58b2=_0x3387ed[_0x2eb731(0x12c)]===_0x2eb731(0x114)?_0x2eb731(0x159):_0x3387ed[_0x2eb731(0x1a8)]==='*'?_0x2eb731(0x158)+_0x3387ed['resource_type']+'s':Utils[_0x2eb731(0x17c)](_0x3387ed[_0x2eb731(0x19e)]||_0x3387ed['resource_id']||'');return _0x2eb731(0x1b0)+_0x5b58b2+_0x2eb731(0x183)+Utils[_0x2eb731(0x17c)](_0x3387ed['role_name']||_0x3387ed[_0x2eb731(0x14f)])+_0x2eb731(0x15a)+(_0x109eac?'<button\x20class=\x22btn-ghost\x20btn-small\x22\x20onclick=\x22window.deleteBindingClick(\x27'+_0x3387ed['id']+_0x2eb731(0x13f):'—')+'\x0a\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20</tr>';})[_0x2e3afb(0x194)]('');}function populateBindingForm(){const _0x50d3d0=_0x312cdf,_0x19a9db=document['getElementById']('binding-resource-type');_0x19a9db[_0x50d3d0(0x13a)]=_0x50d3d0(0x190),updateBindingFormForResourceType(_0x50d3d0(0x190));}function onBindingResourceTypeChange(){const _0x4982ca=_0x312cdf,_0x15b6e3=document[_0x4982ca(0x1b1)](_0x4982ca(0x160))[_0x4982ca(0x13a)];updateBindingFormForResourceType(_0x15b6e3);}function updateBindingFormForResourceType(_0x5cd004){const _0x4b3d20=_0x312cdf,_0x32e2e7=document[_0x4b3d20(0x1b1)](_0x4b3d20(0x175)),_0x3f264c=document[_0x4b3d20(0x1b1)](_0x4b3d20(0x12d)),_0x3e2859=document[_0x4b3d20(0x1b1)](_0x4b3d20(0x171));if(_0x5cd004===_0x4b3d20(0x114))_0x32e2e7['style']['display']=_0x4b3d20(0x19f);else{_0x32e2e7[_0x4b3d20(0x154)][_0x4b3d20(0x121)]='';if(_0x5cd004==='environment'){const _0x230dc4=new Set(state[_0x4b3d20(0x195)]['filter'](_0x1718a6=>_0x1718a6[_0x4b3d20(0x12c)]===_0x4b3d20(0x190))['map'](_0x1f839a=>_0x1f839a['resource_id'])),_0x4e4cb0=state[_0x4b3d20(0x149)][_0x4b3d20(0x115)](_0x256fde=>!_0x230dc4['has'](_0x256fde[_0x4b3d20(0x136)]));_0x3f264c['innerHTML']=_0x4e4cb0[_0x4b3d20(0x18f)]?_0x4e4cb0[_0x4b3d20(0x198)](_0x246ad1=>_0x4b3d20(0x146)+Utils['escapeHtml'](_0x246ad1[_0x4b3d20(0x136)])+'\x22>'+Utils[_0x4b3d20(0x17c)](_0x246ad1['name'])+_0x4b3d20(0x133))[_0x4b3d20(0x194)](''):_0x4b3d20(0x14b);}else{if(_0x5cd004===_0x4b3d20(0x14e)){const _0x50d095=new Set(state[_0x4b3d20(0x195)][_0x4b3d20(0x115)](_0x15005c=>_0x15005c[_0x4b3d20(0x12c)]===_0x4b3d20(0x14e))['map'](_0x18061a=>_0x18061a['resource_id'])),_0x1bb0ed=state[_0x4b3d20(0x137)][_0x4b3d20(0x115)](_0x1aebce=>!_0x50d095[_0x4b3d20(0x15b)](_0x1aebce['id']));_0x3f264c[_0x4b3d20(0x1a1)]=_0x1bb0ed['length']?_0x1bb0ed[_0x4b3d20(0x198)](_0x56967d=>_0x4b3d20(0x146)+_0x56967d['id']+'\x22>'+Utils[_0x4b3d20(0x17c)](_0x56967d[_0x4b3d20(0x136)])+'</option>')[_0x4b3d20(0x194)](''):'<option\x20value=\x22\x22>All\x20teams\x20already\x20bound</option>';}}}const _0x46b035=state[_0x4b3d20(0x180)][_0x4b3d20(0x115)](_0x1f8305=>_0x1f8305['resource_type']===_0x5cd004);_0x3e2859[_0x4b3d20(0x1a1)]=_0x46b035['length']?_0x46b035[_0x4b3d20(0x115)](_0x151212=>{const _0x3860d4=_0x4b3d20,_0x21b035=_0x5cd004===_0x3860d4(0x114)?undefined:_0x3f264c[_0x3860d4(0x13a)];return!state['teamBindings']['some'](_0x5b14ff=>_0x5b14ff[_0x3860d4(0x12c)]===_0x5cd004&&_0x5b14ff['role_id']===_0x151212['id']&&(_0x5cd004===_0x3860d4(0x114)||_0x5b14ff['resource_id']===_0x21b035));})[_0x4b3d20(0x198)](_0x29eca9=>_0x4b3d20(0x146)+_0x29eca9['id']+'\x22>'+Utils[_0x4b3d20(0x17c)](_0x29eca9[_0x4b3d20(0x136)])+_0x4b3d20(0x133))[_0x4b3d20(0x194)]('')||'<option\x20value=\x22\x22>No\x20available\x20roles</option>':'<option\x20value=\x22\x22>No\x20roles\x20for\x20this\x20resource\x20type</option>';}async function saveBinding(){const _0x1ec47d=_0x312cdf,_0x5db91d=document[_0x1ec47d(0x1b1)]('binding-resource-type')['value'],_0x57d741=document[_0x1ec47d(0x1b1)](_0x1ec47d(0x171))[_0x1ec47d(0x13a)];if(!_0x57d741||!state['bindingsTeamId'])return;const _0x2ee039=_0x5db91d===_0x1ec47d(0x114)?undefined:document['getElementById'](_0x1ec47d(0x12d))[_0x1ec47d(0x13a)];if(_0x5db91d!==_0x1ec47d(0x114)&&!_0x2ee039)return;const _0x48649b=document[_0x1ec47d(0x1b1)](_0x1ec47d(0x17b));_0x48649b['disabled']=!![],_0x48649b[_0x1ec47d(0x188)]='Adding…';try{const _0xf13f2c={'subject_type':_0x1ec47d(0x14e),'subject_id':state[_0x1ec47d(0x157)],'role_id':_0x57d741,'resource_type':_0x5db91d};if(_0x2ee039)_0xf13f2c[_0x1ec47d(0x1a8)]=_0x2ee039;await API[_0x1ec47d(0x189)](_0xf13f2c),Utils['showToast'](_0x1ec47d(0x184),_0x1ec47d(0x11b)),document[_0x1ec47d(0x1b1)]('add-binding-form')[_0x1ec47d(0x1a3)]=!![],document[_0x1ec47d(0x1b1)](_0x1ec47d(0x11e))[_0x1ec47d(0x1a3)]=![],await loadTeamBindings(state[_0x1ec47d(0x157)]);}catch(_0x195f78){Utils[_0x1ec47d(0x127)](_0x195f78[_0x1ec47d(0x122)],_0x1ec47d(0x164));}finally{_0x48649b[_0x1ec47d(0x11d)]=![],_0x48649b[_0x1ec47d(0x188)]=_0x1ec47d(0x12f);}}window['deleteBindingClick']=async function(_0x5e3a02){const _0x5754b9=_0x312cdf;try{await API[_0x5754b9(0x111)](_0x5e3a02),Utils['showToast']('Binding\x20removed','success'),await loadTeamBindings(state[_0x5754b9(0x157)]);}catch(_0x4cafbd){Utils['showToast'](_0x4cafbd[_0x5754b9(0x122)],_0x5754b9(0x164));}};async function saveTeam(){const _0x299cbe=_0x312cdf,_0x46b939=document[_0x299cbe(0x1b1)]('team-name')[_0x299cbe(0x13a)][_0x299cbe(0x170)](),_0x1c1e1f=document[_0x299cbe(0x1b1)](_0x299cbe(0x15f))[_0x299cbe(0x13a)][_0x299cbe(0x170)](),_0x593d10=document[_0x299cbe(0x1b1)](_0x299cbe(0x165)),_0x473587=document[_0x299cbe(0x1b1)]('save-team');if(!_0x46b939){_0x593d10['textContent']=_0x299cbe(0x173),_0x593d10[_0x299cbe(0x1a3)]=![];return;}_0x593d10[_0x299cbe(0x1a3)]=!![];const _0x2df513=_0x473587[_0x299cbe(0x188)];_0x473587['disabled']=!![],_0x473587[_0x299cbe(0x188)]=state['editingTeamId']?'Saving…':_0x299cbe(0x119);try{if(state['editingTeamId']){const {team:_0x5f0ed6}=await API[_0x299cbe(0x16b)](state[_0x299cbe(0x11a)],{'name':_0x46b939,'description':_0x1c1e1f});syncTeamInState(_0x5f0ed6),document[_0x299cbe(0x1b1)]('team-modal-title')[_0x299cbe(0x188)]=_0x5f0ed6[_0x299cbe(0x136)],Utils[_0x299cbe(0x127)]('Team\x20updated',_0x299cbe(0x11b));}else await API['createTeam']({'name':_0x46b939,'description':_0x1c1e1f}),Utils['showToast'](_0x299cbe(0x1a9),_0x299cbe(0x11b));_0x473587[_0x299cbe(0x11d)]=![],_0x473587[_0x299cbe(0x188)]=_0x2df513,hideTeamModal(),await loadTeams();}catch(_0x44e44c){_0x593d10[_0x299cbe(0x188)]=_0x44e44c[_0x299cbe(0x122)],_0x593d10[_0x299cbe(0x1a3)]=![],_0x473587['disabled']=![],_0x473587[_0x299cbe(0x188)]=_0x2df513;}}window[_0x312cdf(0x16f)]=function(_0x257da7){const _0x34d871=_0x312cdf,_0x312dd2=state[_0x34d871(0x137)][_0x34d871(0x15c)](_0x7c51f7=>_0x7c51f7['id']===_0x257da7);if(!_0x312dd2)return;state[_0x34d871(0x153)]=_0x257da7,document[_0x34d871(0x1b1)](_0x34d871(0x1af))['textContent']=_0x312dd2[_0x34d871(0x136)],document[_0x34d871(0x1b1)](_0x34d871(0x129))[_0x34d871(0x1a3)]=![];};function hideDeleteModal(){const _0x21ca11=_0x312cdf;document[_0x21ca11(0x1b1)]('delete-team-modal')[_0x21ca11(0x1a3)]=!![],state['deletingTeamId']=null;}async function confirmDeleteTeam(){const _0x5e2a7c=_0x312cdf;if(!state[_0x5e2a7c(0x153)])return;const _0x26f520=document[_0x5e2a7c(0x1b1)](_0x5e2a7c(0x18b));_0x26f520['disabled']=!![],_0x26f520[_0x5e2a7c(0x188)]=_0x5e2a7c(0x110);try{await API[_0x5e2a7c(0x16f)](state['deletingTeamId']),Utils[_0x5e2a7c(0x127)](_0x5e2a7c(0x12a),_0x5e2a7c(0x11b)),_0x26f520[_0x5e2a7c(0x11d)]=![],_0x26f520[_0x5e2a7c(0x188)]='Delete\x20Team',hideDeleteModal(),await loadTeams();}catch(_0x6b9bda){Utils[_0x5e2a7c(0x127)](_0x5e2a7c(0x19d)+_0x6b9bda['message'],'error'),_0x26f520[_0x5e2a7c(0x11d)]=![],_0x26f520[_0x5e2a7c(0x188)]=_0x5e2a7c(0x124);}}function syncTeamInState(_0x521f66){const _0x31f7f6=_0x312cdf,_0x5bd0ce=state[_0x31f7f6(0x137)][_0x31f7f6(0x116)](_0x305d65=>_0x305d65['id']===_0x521f66['id']);if(_0x5bd0ce>=0x0)state[_0x31f7f6(0x137)][_0x5bd0ce]=_0x521f66;renderTeams();}
1
+ import{API,Utils,initializeAdminMenu}from'./app.js';import{initTheme,mountThemeToggle}from'./theme.js';const state={'teams':[],'users':[],'roles':[],'environments':[],'teamBindings':[],'currentUser':null,'editingTeamId':null,'bindingsTeamId':null,'deletingTeamId':null,'modalSnapshot':null};document['addEventListener']('DOMContentLoaded',async()=>{initTheme(),mountThemeToggle();try{state['currentUser']=await API['getCurrentUser']();}catch{window['location']['href']='login.html';return;}await initializeAdminMenu(state['currentUser']);const _0x452987=state['currentUser'];if(!_0x452987['hasAllPermissions']&&!_0x452987['canManageTeams']&&!_0x452987['hasEnvironmentBindings']&&!_0x452987['hasEnvironmentAdmin']){Utils['showToast']('Access\x20denied:\x20You\x20do\x20not\x20have\x20permission\x20to\x20view\x20teams','error'),setTimeout(()=>{window['location']['href']='index.html';},0x7d0);return;}(_0x452987['hasAllPermissions']||_0x452987['canManageTeams'])&&(document['getElementById']('create-team-btn')['hidden']=![]),bindEventListeners(),await Promise['all']([loadTeams(),loadUsers(),loadRoles(),loadEnvironments()]),renderTeams();});async function loadTeams(){const _0x36e362=document['getElementById']('teams-loading'),_0x465a34=document['getElementById']('teams-error'),_0x53a740=document['getElementById']('teams-content');try{_0x36e362['hidden']=![],_0x465a34['hidden']=!![],_0x53a740['hidden']=!![];const {teams:_0x34d0fb}=await API['getTeams']();state['teams']=_0x34d0fb||[],renderTeams(),_0x36e362['hidden']=!![],_0x53a740['hidden']=![];}catch(_0x200586){_0x36e362['hidden']=!![],_0x465a34['hidden']=![],document['getElementById']('teams-error-message')['textContent']=_0x200586['message'];}}async function loadUsers(){try{const {users:_0x23e207}=await API['getUsers']();state['users']=_0x23e207||[];}catch{state['users']=[];}}async function loadRoles(){try{const {roles:_0x1b3b01}=await API['getRoleDefinitions']();state['roles']=_0x1b3b01||[];}catch{state['roles']=[];}}async function loadEnvironments(){try{const _0x5075da=await API['getEnvironments']();state['environments']=_0x5075da['environments']||[];}catch{state['environments']=[];}}function renderTeams(){const _0x2d424f=document['getElementById']('teams-table-body'),_0x1db27e=document['getElementById']('team-count');if(!_0x2d424f)return;_0x1db27e&&(_0x1db27e['textContent']=state['teams']['length']+'\x20team'+(state['teams']['length']===0x1?'':'s'));if(state['teams']['length']===0x0){_0x2d424f['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td\x20colspan=\x223\x22\x20style=\x22text-align:\x20center;\x20color:\x20var(--color-text-secondary);\x20padding:\x202rem;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20No\x20teams\x20yet.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(state['currentUser']?.['hasAllPermissions']||state['currentUser']?.['canManageTeams']?'Click\x20<strong>Create\x20Team</strong>\x20to\x20get\x20started.':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20</tr>';return;}const _0x3d9cca=state['currentUser']?.['hasAllPermissions'];_0x2d424f['innerHTML']=state['teams']['map'](_0x1f7b1c=>{const _0xf726fc=_0x3d9cca||_0x1f7b1c['canManageTeam'],_0x535e08=_0x3d9cca||_0x1f7b1c['canManageMembers'],_0x3cdb4d=_0xf726fc||_0x535e08,_0x43792b=(_0x1f7b1c['members']||[])['length'];return'\x0a\x20\x20\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-weight:\x20600;\x22>'+Utils['escapeHtml'](_0x1f7b1c['name'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x1f7b1c['description']?'<div\x20style=\x22font-size:\x200.8em;\x20color:\x20var(--color-text-secondary);\x20margin-top:\x200.15rem;\x22>'+Utils['escapeHtml'](_0x1f7b1c['description'])+'</div>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>'+_0x43792b+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22user-actions\x22\x20style=\x22display:\x20flex;\x20gap:\x200.25rem;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x3cdb4d?'<button\x20class=\x22btn-icon\x22\x20title=\x22Edit\x20team\x22\x20onclick=\x22window.openTeamModal(\x27'+_0x1f7b1c['id']+'\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<svg\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<path\x20d=\x22M11\x204H4a2\x202\x200\x200\x200-2\x202v14a2\x202\x200\x200\x200\x202\x202h14a2\x202\x200\x200\x200\x202-2v-7\x22></path>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<path\x20d=\x22M18.5\x202.5a2.121\x202.121\x200\x200\x201\x203\x203L12\x2015l-4\x201\x201-4\x209.5-9.5z\x22></path>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0xf726fc?'<button\x20class=\x22btn-icon\x22\x20title=\x22Access\x20bindings\x22\x20onclick=\x22window.openBindingsModal(\x27'+_0x1f7b1c['id']+'\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<svg\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<path\x20d=\x22M12\x2022s8-4\x208-10V5l-8-3-8\x203v7c0\x206\x208\x2010\x208\x2010z\x22></path>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0xf726fc?'<button\x20class=\x22btn-icon\x20btn-danger\x22\x20title=\x22Delete\x20team\x22\x20onclick=\x22window.deleteTeam(\x27'+_0x1f7b1c['id']+'\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<svg\x20width=\x2216\x22\x20height=\x2216\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<polyline\x20points=\x223\x206\x205\x206\x2021\x206\x22></polyline>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<path\x20d=\x22M19\x206v14a2\x202\x200\x200\x201-2\x202H7a2\x202\x200\x200\x201-2-2V6m3\x200V4a2\x202\x200\x200\x201\x202-2h4a2\x202\x200\x200\x201\x202\x202v2\x22></path>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20</tr>';})['join']('');}function bindEventListeners(){document['getElementById']('create-team-btn')?.['addEventListener']('click',showCreateTeamModal),document['getElementById']('retry-teams-btn')?.['addEventListener']('click',loadTeams),document['getElementById']('close-team-modal')?.['addEventListener']('click',requestHideTeamModal),document['getElementById']('cancel-team')?.['addEventListener']('click',requestHideTeamModal),document['getElementById']('save-team')?.['addEventListener']('click',saveTeam),document['querySelector']('#team-modal\x20.modal-overlay')?.['addEventListener']('click',requestHideTeamModal),document['getElementById']('add-member-btn')?.['addEventListener']('click',addMember),document['getElementById']('close-bindings-modal')?.['addEventListener']('click',hideBindingsModal),document['querySelector']('#bindings-modal\x20.modal-overlay')?.['addEventListener']('click',hideBindingsModal),document['getElementById']('add-binding-btn')?.['addEventListener']('click',()=>{document['getElementById']('add-binding-form')['hidden']=![],document['getElementById']('add-binding-btn')['hidden']=!![],populateBindingForm();}),document['getElementById']('cancel-binding-btn')?.['addEventListener']('click',()=>{document['getElementById']('add-binding-form')['hidden']=!![],document['getElementById']('add-binding-btn')['hidden']=![];}),document['getElementById']('save-binding-btn')?.['addEventListener']('click',saveBinding),document['getElementById']('binding-resource-type')?.['addEventListener']('change',onBindingResourceTypeChange),document['getElementById']('close-delete-team-modal')?.['addEventListener']('click',hideDeleteModal),document['getElementById']('cancel-delete-team')?.['addEventListener']('click',hideDeleteModal),document['getElementById']('confirm-delete-team')?.['addEventListener']('click',confirmDeleteTeam),document['querySelector']('#delete-team-modal\x20.modal-overlay')?.['addEventListener']('click',hideDeleteModal);}function showCreateTeamModal(){state['editingTeamId']=null,state['modalSnapshot']={'name':'','description':''},document['getElementById']('team-modal-title')['textContent']='Create\x20Team',document['getElementById']('team-name')['value']='',document['getElementById']('team-name')['disabled']=![],document['getElementById']('team-description')['value']='',document['getElementById']('team-description')['disabled']=![],document['getElementById']('team-form-error')['hidden']=!![],document['getElementById']('members-section')['hidden']=!![],document['getElementById']('save-team')['hidden']=![],document['getElementById']('team-modal-footer')['hidden']=![],document['getElementById']('team-modal')['hidden']=![],setTimeout(()=>document['getElementById']('team-name')['focus'](),0x64);}window['openTeamModal']=function(_0x1ffbcc){const _0x1fa3ce=state['teams']['find'](_0x1f2a1f=>_0x1f2a1f['id']===_0x1ffbcc);if(!_0x1fa3ce)return;state['editingTeamId']=_0x1ffbcc;const _0x483d9a=state['currentUser']?.['hasAllPermissions'],_0x451716=_0x483d9a||_0x1fa3ce['canManageTeam'],_0x522377=_0x483d9a||_0x1fa3ce['canManageMembers'],_0x3a5d3c=_0x451716,_0x14d85a=_0x451716||_0x522377,_0x19b273=_0x1fa3ce['name'],_0x44a436=_0x1fa3ce['description']||'';state['modalSnapshot']={'name':_0x19b273,'description':_0x44a436},document['getElementById']('team-modal-title')['textContent']=_0x19b273,document['getElementById']('team-name')['value']=_0x19b273,document['getElementById']('team-name')['disabled']=!_0x3a5d3c,document['getElementById']('team-description')['value']=_0x44a436,document['getElementById']('team-description')['disabled']=!_0x3a5d3c,document['getElementById']('team-form-error')['hidden']=!![],document['getElementById']('members-section')['hidden']=![],document['getElementById']('save-team')['hidden']=!_0x3a5d3c,renderMembersList(_0x1fa3ce),updateMemberSelect(_0x1fa3ce),document['getElementById']('team-modal')['hidden']=![];};function isTeamModalDirty(){if(!state['modalSnapshot'])return![];const _0x3e02f4=document['getElementById']('team-name')['value']['trim'](),_0x2c4f06=document['getElementById']('team-description')['value']['trim']();return _0x3e02f4!==state['modalSnapshot']['name']||_0x2c4f06!==state['modalSnapshot']['description'];}function requestHideTeamModal(){if(isTeamModalDirty()){if(!confirm('You\x20have\x20unsaved\x20changes.\x20Discard\x20them?'))return;}hideTeamModal();}function hideTeamModal(){document['getElementById']('team-modal')['hidden']=!![],document['getElementById']('team-name')['disabled']=![],document['getElementById']('team-description')['disabled']=![],state['editingTeamId']=null,state['modalSnapshot']=null;}window['openBindingsModal']=function(_0x1fc686){const _0x5a20e7=state['teams']['find'](_0xbb614b=>_0xbb614b['id']===_0x1fc686);if(!_0x5a20e7)return;state['bindingsTeamId']=_0x1fc686,document['getElementById']('bindings-modal-title')['textContent']='Access\x20Bindings\x20—\x20'+_0x5a20e7['name'],document['getElementById']('add-binding-form')['hidden']=!![],document['getElementById']('bindings-modal')['hidden']=![],loadTeamBindings(_0x1fc686);};function hideBindingsModal(){document['getElementById']('bindings-modal')['hidden']=!![],state['bindingsTeamId']=null;}function renderMembersList(_0x1e4cb2){const _0x172b93=state['currentUser']?.['hasAllPermissions'],_0x480699=_0x172b93||_0x1e4cb2['canManageMembers']||_0x1e4cb2['canManageTeam'],_0x1d2854=_0x1e4cb2['members']||[],_0xaa89b4=document['getElementById']('members-list');if(_0x1d2854['length']===0x0){_0xaa89b4['innerHTML']='<p\x20style=\x22font-size:\x200.875rem;\x20color:\x20var(--color-text-secondary);\x20margin:\x200.25rem\x200;\x22>No\x20members\x20yet</p>';return;}_0xaa89b4['innerHTML']=_0x1d2854['map'](_0x360751=>{const _0x40f32a=state['users']['find'](_0x1ed8d5=>_0x1ed8d5['id']===_0x360751),_0x1b7d0c=_0x40f32a?''+Utils['escapeHtml'](_0x40f32a['username'])+(_0x40f32a['name']?'\x20<span\x20style=\x22color:\x20var(--color-text-secondary);\x20font-size:\x200.85em;\x22>('+Utils['escapeHtml'](_0x40f32a['name'])+')</span>':''):Utils['escapeHtml'](_0x360751);return'\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:\x20flex;\x20align-items:\x20center;\x20justify-content:\x20space-between;\x20padding:\x200.35rem\x200;\x20border-bottom:\x201px\x20solid\x20var(--color-border);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:\x200.875rem;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x1b7d0c+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x480699?'<button\x20type=\x22button\x22\x20class=\x22btn-ghost\x20btn-small\x22\x20onclick=\x22window.removeMemberClick(\x27'+_0x360751+'\x27)\x22\x20style=\x22color:\x20var(--color-danger);\x20padding:\x200.15rem\x200.4rem;\x20font-size:\x200.8rem;\x22>Remove</button>':'')+'\x0a\x20\x20\x20\x20\x20\x20</div>';})['join']('');const _0x3e1094=document['getElementById']('add-member-row');if(_0x3e1094)_0x3e1094['style']['display']=_0x480699?'flex':'none';}function updateMemberSelect(_0x5f17a6){const _0x4b42db=document['getElementById']('add-member-select');if(!_0x4b42db)return;const _0x1e13ac=new Set(_0x5f17a6['members']||[]),_0x160242=state['users']['filter'](_0x23f4cf=>!_0x1e13ac['has'](_0x23f4cf['id']));_0x4b42db['innerHTML']='<option\x20value=\x22\x22>Add\x20a\x20member…</option>'+_0x160242['map'](_0x4351d2=>'<option\x20value=\x22'+_0x4351d2['id']+'\x22>'+Utils['escapeHtml'](_0x4351d2['username'])+(_0x4351d2['name']?'\x20('+Utils['escapeHtml'](_0x4351d2['name'])+')':'')+'</option>')['join']('');}async function addMember(){const _0x53af2d=document['getElementById']('add-member-select'),_0x41f9e6=_0x53af2d['value'];if(!_0x41f9e6||!state['editingTeamId'])return;try{const {team:_0x285899}=await API['addTeamMember'](state['editingTeamId'],_0x41f9e6);syncTeamInState(_0x285899),renderMembersList(_0x285899),updateMemberSelect(_0x285899),_0x53af2d['value']='',Utils['showToast']('Member\x20added','success');}catch(_0x4ced2d){Utils['showToast'](_0x4ced2d['message'],'error');}}window['removeMemberClick']=async function(_0x56bfd3){if(!state['editingTeamId'])return;try{const {team:_0x269565}=await API['removeTeamMember'](state['editingTeamId'],_0x56bfd3);syncTeamInState(_0x269565),renderMembersList(_0x269565),updateMemberSelect(_0x269565),Utils['showToast']('Member\x20removed','success');}catch(_0x31626a){Utils['showToast'](_0x31626a['message'],'error');}};async function loadTeamBindings(_0x4b277d){const _0x4b1aac=document['getElementById']('bindings-loading'),_0x245a76=document['getElementById']('bindings-empty'),_0x33be13=document['getElementById']('bindings-list-container'),_0x192c15=document['getElementById']('add-binding-btn');_0x4b1aac['hidden']=![],_0x245a76['hidden']=!![],_0x33be13['style']['display']='none',_0x192c15['hidden']=!![],document['getElementById']('add-binding-form')['hidden']=!![];try{const {bindings:_0x55727c}=await API['getBindings']({'subject_type':'team','subject_id':_0x4b277d});state['teamBindings']=_0x55727c||[],_0x4b1aac['hidden']=!![],state['teamBindings']['length']===0x0?_0x245a76['hidden']=![]:(_0x33be13['style']['display']='',renderBindingsTable()),(state['currentUser']?.['hasAllPermissions']||state['currentUser']?.['canManageTeams'])&&(_0x192c15['hidden']=![]);}catch(_0x465f89){_0x4b1aac['hidden']=!![],Utils['showToast']('Failed\x20to\x20load\x20bindings:\x20'+_0x465f89['message'],'error');}}function renderBindingsTable(){const _0x2e6f49=document['getElementById']('bindings-table-body');if(!_0x2e6f49)return;const _0x212e07=state['currentUser']?.['hasAllPermissions']||state['currentUser']?.['canManageTeams'];_0x2e6f49['innerHTML']=state['teamBindings']['map'](_0x3c747c=>{const _0x54e9a6=_0x3c747c['resource_type']==='server'?'Server':_0x3c747c['resource_id']==='*'?'All\x20'+_0x3c747c['resource_type']+'s':Utils['escapeHtml'](_0x3c747c['resource_name']||_0x3c747c['resource_id']||'');return'\x0a\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20<td>'+_0x54e9a6+'</td>\x0a\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x3c747c['role_name']||_0x3c747c['role_id'])+'</td>\x0a\x20\x20\x20\x20\x20\x20<td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x212e07?'<button\x20class=\x22btn-ghost\x20btn-small\x22\x20onclick=\x22window.deleteBindingClick(\x27'+_0x3c747c['id']+'\x27)\x22\x20style=\x22color:\x20var(--color-danger);\x22>Remove</button>':'—')+'\x0a\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20</tr>';})['join']('');}function populateBindingForm(){const _0x2db2cc=document['getElementById']('binding-resource-type');_0x2db2cc['value']='environment',updateBindingFormForResourceType('environment');}function onBindingResourceTypeChange(){const _0x53259a=document['getElementById']('binding-resource-type')['value'];updateBindingFormForResourceType(_0x53259a);}function updateBindingFormForResourceType(_0x4548c4){const _0xecf842=document['getElementById']('binding-resource-container'),_0x42e63a=document['getElementById']('binding-resource'),_0x185847=document['getElementById']('binding-role');if(_0x4548c4==='server')_0xecf842['style']['display']='none';else{_0xecf842['style']['display']='';if(_0x4548c4==='environment'){const _0x45c66b=new Set(state['teamBindings']['filter'](_0x18edc5=>_0x18edc5['resource_type']==='environment')['map'](_0x13fa9a=>_0x13fa9a['resource_id'])),_0xd86c63=state['environments']['filter'](_0x18ea3e=>!_0x45c66b['has'](_0x18ea3e['name']));_0x42e63a['innerHTML']=_0xd86c63['length']?_0xd86c63['map'](_0x211804=>'<option\x20value=\x22'+Utils['escapeHtml'](_0x211804['name'])+'\x22>'+Utils['escapeHtml'](_0x211804['name'])+'</option>')['join'](''):'<option\x20value=\x22\x22>All\x20environments\x20already\x20bound</option>';}else{if(_0x4548c4==='team'){const _0x2ec850=new Set(state['teamBindings']['filter'](_0x492a91=>_0x492a91['resource_type']==='team')['map'](_0x3b7331=>_0x3b7331['resource_id'])),_0x5cca65=state['teams']['filter'](_0x48a4de=>!_0x2ec850['has'](_0x48a4de['id']));_0x42e63a['innerHTML']=_0x5cca65['length']?_0x5cca65['map'](_0x2ee2ef=>'<option\x20value=\x22'+_0x2ee2ef['id']+'\x22>'+Utils['escapeHtml'](_0x2ee2ef['name'])+'</option>')['join'](''):'<option\x20value=\x22\x22>All\x20teams\x20already\x20bound</option>';}}}const _0x4bd7c9=state['roles']['filter'](_0x3cb314=>_0x3cb314['resource_type']===_0x4548c4);_0x185847['innerHTML']=_0x4bd7c9['length']?_0x4bd7c9['filter'](_0x43f5bd=>{const _0x1cb2f7=_0x4548c4==='server'?undefined:_0x42e63a['value'];return!state['teamBindings']['some'](_0x445ed4=>_0x445ed4['resource_type']===_0x4548c4&&_0x445ed4['role_id']===_0x43f5bd['id']&&(_0x4548c4==='server'||_0x445ed4['resource_id']===_0x1cb2f7));})['map'](_0x5b328d=>'<option\x20value=\x22'+_0x5b328d['id']+'\x22>'+Utils['escapeHtml'](_0x5b328d['name'])+'</option>')['join']('')||'<option\x20value=\x22\x22>No\x20available\x20roles</option>':'<option\x20value=\x22\x22>No\x20roles\x20for\x20this\x20resource\x20type</option>';}async function saveBinding(){const _0x402db9=document['getElementById']('binding-resource-type')['value'],_0xfc507d=document['getElementById']('binding-role')['value'];if(!_0xfc507d||!state['bindingsTeamId'])return;const _0x429380=_0x402db9==='server'?undefined:document['getElementById']('binding-resource')['value'];if(_0x402db9!=='server'&&!_0x429380)return;const _0x671cae=document['getElementById']('save-binding-btn');_0x671cae['disabled']=!![],_0x671cae['textContent']='Adding…';try{const _0x140d12={'subject_type':'team','subject_id':state['bindingsTeamId'],'role_id':_0xfc507d,'resource_type':_0x402db9};if(_0x429380)_0x140d12['resource_id']=_0x429380;await API['createBinding'](_0x140d12),Utils['showToast']('Binding\x20added','success'),document['getElementById']('add-binding-form')['hidden']=!![],document['getElementById']('add-binding-btn')['hidden']=![],await loadTeamBindings(state['bindingsTeamId']);}catch(_0x5d46aa){Utils['showToast'](_0x5d46aa['message'],'error');}finally{_0x671cae['disabled']=![],_0x671cae['textContent']='Add\x20Binding';}}window['deleteBindingClick']=async function(_0x4f046e){try{await API['deleteBinding'](_0x4f046e),Utils['showToast']('Binding\x20removed','success'),await loadTeamBindings(state['bindingsTeamId']);}catch(_0x3d23f2){Utils['showToast'](_0x3d23f2['message'],'error');}};async function saveTeam(){const _0x534448=document['getElementById']('team-name')['value']['trim'](),_0x544289=document['getElementById']('team-description')['value']['trim'](),_0x5cf38e=document['getElementById']('team-form-error'),_0x554a03=document['getElementById']('save-team');if(!_0x534448){_0x5cf38e['textContent']='Team\x20name\x20is\x20required',_0x5cf38e['hidden']=![];return;}_0x5cf38e['hidden']=!![];const _0x475f56=_0x554a03['textContent'];_0x554a03['disabled']=!![],_0x554a03['textContent']=state['editingTeamId']?'Saving…':'Creating…';try{if(state['editingTeamId']){const {team:_0x75f15f}=await API['updateTeam'](state['editingTeamId'],{'name':_0x534448,'description':_0x544289});syncTeamInState(_0x75f15f),document['getElementById']('team-modal-title')['textContent']=_0x75f15f['name'],Utils['showToast']('Team\x20updated','success');}else await API['createTeam']({'name':_0x534448,'description':_0x544289}),Utils['showToast']('Team\x20created','success');_0x554a03['disabled']=![],_0x554a03['textContent']=_0x475f56,hideTeamModal(),await loadTeams();}catch(_0x5df5fd){_0x5cf38e['textContent']=_0x5df5fd['message'],_0x5cf38e['hidden']=![],_0x554a03['disabled']=![],_0x554a03['textContent']=_0x475f56;}}window['deleteTeam']=function(_0xfb92aa){const _0x5e5774=state['teams']['find'](_0x2ded62=>_0x2ded62['id']===_0xfb92aa);if(!_0x5e5774)return;state['deletingTeamId']=_0xfb92aa,document['getElementById']('delete-team-name')['textContent']=_0x5e5774['name'],document['getElementById']('delete-team-modal')['hidden']=![];};function hideDeleteModal(){document['getElementById']('delete-team-modal')['hidden']=!![],state['deletingTeamId']=null;}async function confirmDeleteTeam(){if(!state['deletingTeamId'])return;const _0x10db0f=document['getElementById']('confirm-delete-team');_0x10db0f['disabled']=!![],_0x10db0f['textContent']='Deleting…';try{await API['deleteTeam'](state['deletingTeamId']),Utils['showToast']('Team\x20deleted','success'),_0x10db0f['disabled']=![],_0x10db0f['textContent']='Delete\x20Team',hideDeleteModal(),await loadTeams();}catch(_0x8a05fe){Utils['showToast']('Failed\x20to\x20delete\x20team:\x20'+_0x8a05fe['message'],'error'),_0x10db0f['disabled']=![],_0x10db0f['textContent']='Delete\x20Team';}}function syncTeamInState(_0x24b55){const _0x1f9156=state['teams']['findIndex'](_0x14645f=>_0x14645f['id']===_0x24b55['id']);if(_0x1f9156>=0x0)state['teams'][_0x1f9156]=_0x24b55;renderTeams();}
@@ -1 +1 @@
1
- const _0x5219f7=_0x1ddc;(function(_0x3e87a1,_0x565ebf){const _0x13864e=_0x1ddc,_0x15f243=_0x3e87a1();while(!![]){try{const _0x362c0d=parseInt(_0x13864e(0x182))/0x1*(-parseInt(_0x13864e(0x150))/0x2)+-parseInt(_0x13864e(0x17a))/0x3*(parseInt(_0x13864e(0x189))/0x4)+-parseInt(_0x13864e(0x153))/0x5*(parseInt(_0x13864e(0x194))/0x6)+-parseInt(_0x13864e(0x17e))/0x7+-parseInt(_0x13864e(0x154))/0x8*(-parseInt(_0x13864e(0x17f))/0x9)+parseInt(_0x13864e(0x19a))/0xa*(-parseInt(_0x13864e(0x16d))/0xb)+-parseInt(_0x13864e(0x159))/0xc*(-parseInt(_0x13864e(0x16e))/0xd);if(_0x362c0d===_0x565ebf)break;else _0x15f243['push'](_0x15f243['shift']());}catch(_0x7df929){_0x15f243['push'](_0x15f243['shift']());}}}(_0x2565,0xacc64));import{API,Utils}from'./app.js';import{Terminal}from'https://cdn.jsdelivr.net/npm/xterm@5.3.0/+esm';import{FitAddon}from'https://cdn.jsdelivr.net/npm/xterm-addon-fit@0.7.0/+esm';import{getCurrentTheme,initTheme,mountThemeToggle,onThemeChange}from'./theme.js';const params=Utils['getQueryParams'](),containerId=params[_0x5219f7(0x183)],command=(params['cmd']||'')[_0x5219f7(0x18b)](),useServerExec=params['server_exec']===_0x5219f7(0x161),titleEl=document[_0x5219f7(0x177)](_0x5219f7(0x16f)),subtitleEl=document['getElementById'](_0x5219f7(0x14e)),statusEl=document[_0x5219f7(0x177)](_0x5219f7(0x17b)),terminalEl=document['getElementById'](_0x5219f7(0x197)),closeBtn=document[_0x5219f7(0x177)](_0x5219f7(0x156));initTheme(),mountThemeToggle({'targetSelectors':[_0x5219f7(0x1a1)]});const getXtermTheme=()=>{const _0x3ab377=_0x5219f7;return{'background':_0x3ab377(0x164),'foreground':'#e2e8f0','cursor':_0x3ab377(0x196),'cursorAccent':_0x3ab377(0x164)};};function _0x1ddc(_0x411be6,_0x434963){_0x411be6=_0x411be6-0x14a;const _0x25656e=_0x2565();let _0x1ddc57=_0x25656e[_0x411be6];if(_0x1ddc['FFOpOC']===undefined){var _0x26d045=function(_0x37d503){const _0x4e89a7='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x23ee61='',_0x25f992='';for(let _0x92d98b=0x0,_0x20de38,_0x276dc9,_0x4b5413=0x0;_0x276dc9=_0x37d503['charAt'](_0x4b5413++);~_0x276dc9&&(_0x20de38=_0x92d98b%0x4?_0x20de38*0x40+_0x276dc9:_0x276dc9,_0x92d98b++%0x4)?_0x23ee61+=String['fromCharCode'](0xff&_0x20de38>>(-0x2*_0x92d98b&0x6)):0x0){_0x276dc9=_0x4e89a7['indexOf'](_0x276dc9);}for(let _0x335b5a=0x0,_0x2bc5a2=_0x23ee61['length'];_0x335b5a<_0x2bc5a2;_0x335b5a++){_0x25f992+='%'+('00'+_0x23ee61['charCodeAt'](_0x335b5a)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x25f992);};_0x1ddc['FPKjgJ']=_0x26d045,_0x1ddc['KBoOWB']={},_0x1ddc['FFOpOC']=!![];}const _0x380150=_0x25656e[0x0],_0x4b626d=_0x411be6+_0x380150,_0x3a0ca7=_0x1ddc['KBoOWB'][_0x4b626d];return!_0x3a0ca7?(_0x1ddc57=_0x1ddc['FPKjgJ'](_0x1ddc57),_0x1ddc['KBoOWB'][_0x4b626d]=_0x1ddc57):_0x1ddc57=_0x3a0ca7,_0x1ddc57;}closeBtn&&closeBtn[_0x5219f7(0x195)]('click',()=>{window['close']();});if(!containerId){updateStatus(_0x5219f7(0x180),'error');throw new Error(_0x5219f7(0x18d));}document[_0x5219f7(0x15a)]='Terminal\x20·\x20'+containerId[_0x5219f7(0x1a5)](0x0,0xc),enrichContainerDetails(containerId)['catch'](()=>{const _0x3ec04f=_0x5219f7;subtitleEl[_0x3ec04f(0x16a)]=_0x3ec04f(0x18c)+containerId[_0x3ec04f(0x155)](0x0,0xc);});const term=new Terminal({'convertEol':!![],'cursorBlink':!![],'fontFamily':_0x5219f7(0x14f),'fontSize':0x10,'theme':getXtermTheme()}),fitAddon=new FitAddon();term['loadAddon'](fitAddon),term[_0x5219f7(0x188)](terminalEl),term[_0x5219f7(0x174)]();let isFitting=![];const doFit=()=>{const _0x1bac28=_0x5219f7;if(isFitting)return;isFitting=!![],fitAddon['fit'](),sendResize(),term[_0x1bac28(0x184)](),setTimeout(()=>{isFitting=![];},0x32);};window['addEventListener'](_0x5219f7(0x17c),()=>{requestAnimationFrame(()=>{!isFitting&&doFit();});});const resizeObserver=new ResizeObserver(()=>{requestAnimationFrame(()=>{!isFitting&&doFit();});});resizeObserver[_0x5219f7(0x173)](terminalEl);const socketProtocol=window['location'][_0x5219f7(0x19e)]===_0x5219f7(0x1a0)?_0x5219f7(0x162):'ws',socketUrl=new URL('/ws/containers/'+encodeURIComponent(containerId),window[_0x5219f7(0x14a)][_0x5219f7(0x18e)]);command&&useServerExec&&socketUrl[_0x5219f7(0x157)][_0x5219f7(0x15f)](_0x5219f7(0x18a),command);socketUrl[_0x5219f7(0x19e)]=socketProtocol+':';const socket=new WebSocket(socketUrl[_0x5219f7(0x16b)]());term[_0x5219f7(0x16c)](_0x23ee61=>{const _0x4e02d3=_0x5219f7;socket[_0x4e02d3(0x199)]===WebSocket['OPEN']&&socket['send'](JSON['stringify']({'type':_0x4e02d3(0x19c),'data':_0x23ee61}));});let commandSent=![],hasReceivedOutput=![];socket['addEventListener']('message',_0x25f992=>{const _0x196b08=_0x5219f7;try{const _0x92d98b=JSON[_0x196b08(0x175)](_0x25f992['data']);if(_0x92d98b['type']===_0x196b08(0x19c)&&typeof _0x92d98b['data']==='string')term[_0x196b08(0x1a4)](_0x92d98b[_0x196b08(0x19c)]),!hasReceivedOutput&&_0x92d98b[_0x196b08(0x19c)]['length']>0x0&&(hasReceivedOutput=!![],command&&!useServerExec&&!commandSent&&(commandSent=!![],setTimeout(()=>{const _0x72d9f7=_0x196b08;socket['readyState']===WebSocket['OPEN']&&socket['send'](JSON[_0x72d9f7(0x168)]({'type':_0x72d9f7(0x19c),'data':command+'\x0d'}));},0xc8)));else{if(_0x92d98b[_0x196b08(0x158)]===_0x196b08(0x15e)&&_0x92d98b[_0x196b08(0x15e)]){if(_0x92d98b[_0x196b08(0x15e)]==='connected'){if(command&&useServerExec)updateStatus('Running:\x20'+command,_0x196b08(0x18f));else command?updateStatus(_0x196b08(0x19b)+command,_0x196b08(0x18f)):updateStatus(_0x196b08(0x166),_0x196b08(0x171));doFit(),term[_0x196b08(0x174)](),command&&!useServerExec&&!commandSent&&setTimeout(()=>{const _0x5ea439=_0x196b08;!commandSent&&socket[_0x5ea439(0x199)]===WebSocket['OPEN']&&(commandSent=!![],socket['send'](JSON[_0x5ea439(0x168)]({'type':_0x5ea439(0x19c),'data':command+'\x0d'})),updateStatus(_0x5ea439(0x185)+command,_0x5ea439(0x18f)));},0x7d0);}else updateStatus(_0x196b08(0x19f)+_0x92d98b[_0x196b08(0x15e)],_0x92d98b[_0x196b08(0x15e)]===_0x196b08(0x178)?_0x196b08(0x171):_0x196b08(0x18f));}else _0x92d98b[_0x196b08(0x158)]===_0x196b08(0x169)&&_0x92d98b[_0x196b08(0x165)]&&updateStatus(_0x92d98b['message'],_0x196b08(0x169));}}catch(_0x20de38){console[_0x196b08(0x169)](_0x196b08(0x1a2),_0x20de38);}}),socket[_0x5219f7(0x195)](_0x5219f7(0x1a3),_0x276dc9=>{const _0x173723=_0x5219f7,_0x4b5413=_0x276dc9['reason']||_0x173723(0x15d);updateStatus(_0x4b5413,_0x276dc9[_0x173723(0x19d)]?_0x173723(0x18f):_0x173723(0x169));}),socket[_0x5219f7(0x195)](_0x5219f7(0x169),_0x335b5a=>{const _0x1f314d=_0x5219f7;console['error'](_0x1f314d(0x198),_0x335b5a),updateStatus(_0x1f314d(0x191),_0x1f314d(0x169));});function sendResize(){const _0x470477=_0x5219f7;if(socket[_0x470477(0x199)]!==WebSocket[_0x470477(0x151)])return;const _0x2bc5a2=term['cols'],_0x25b962=term[_0x470477(0x172)];socket[_0x470477(0x15c)](JSON[_0x470477(0x168)]({'type':_0x470477(0x17c),'cols':_0x2bc5a2,'rows':_0x25b962}));}function updateStatus(_0x22d601,_0x2d2df8='info'){const _0x248e1d=_0x5219f7;if(!statusEl)return;statusEl['textContent']=_0x22d601,statusEl[_0x248e1d(0x160)][_0x248e1d(0x14d)]=_0x2d2df8;}function _0x2565(){const _0x5563a6=['vgvYBwLUywWGWRCG','C2vUza','q29UBMvJDgLVBIbJBg9Zzwq','C3rHDhvZ','C2v0','zgf0yxnLDa','Dhj1zq','D3nZ','z2v0q29UDgfPBMvYCW','iZbMmtCYyq','BwvZC2fNzq','vgvYBwLUywWGy29UBMvJDgvK','y29UDgfPBMvYswq','C3rYAw5NAwz5','zxjYB3i','Dgv4DenVBNrLBNq','Dg9tDhjPBMC','B25eyxrH','mtfhyM9Ryxq','odm1mtjowefNAfu','DgvYBwLUywWTDgL0Bgu','z2v0q29UDgfPBMvY','C3vJy2vZCW','CM93CW','B2jZzxj2zq','zM9JDxm','CgfYC2u','y3jLyxrLzef0','z2v0rwXLBwvUDej5swq','y29UBMvJDgvK','zM9YBwf0uMvSyxrPDMvuAw1L','mtG0mtqZBuLjq3fQ','DgvYBwLUywWTC3rHDhvZ','CMvZAxPL','imk3ifn0yxj0zwqG','nZG5mdG2ow96AxvhyW','ndaWnJeXnNLRvKnVDG','twLZC2LUzYbJB250ywLUzxiGAwrLBNrPzMLLCG','zw52AxjVBM1LBNq','nZC4mwfnCKH3BW','y29UDgfPBMvY','C2nYB2XSvg9cB3r0B20','uNvUBMLUzZOG','imk3ienVBw1HBMqG','y29UDgfPBMvYCW','B3bLBG','nJHpv0LKuvG','y21K','DhjPBq','q29UDgfPBMvYia','y29UDgfPBMvYihbHCMfTzxrLCIbPCYbYzxf1AxjLza','AhjLzG','Aw5MBW','rw52AxjVBM1LBNqG','q29UBMvJDgLVBIbLCNjVCG','BMfTzq','C3rHCNrZv2L0Aa','mZG1nJjXDxr5zui','ywrKrxzLBNrmAxn0zw5LCG','i2uYztHMma','DgvYBwLUywWTy29UDgfPBMvY','vgvYBwLUywWGD2vIC29JA2v0igvYCM9Y','CMvHzhLtDgf0zq','ote1nZq4mhbTsgLkza','uhjLCgfYAw5NoIa','zgf0yq','D2fZq2XLyw4','ChjVDg9JB2W','u2vZC2LVBIa','Ahr0Chm6','lNrLCM1PBMfSlwfJDgLVBNm','rMfPBgvKihrVihbHCNnLihrLCM1PBMfSig1LC3nHz2u','y2XVC2u','D3jPDgu','C2XPy2u','zNvSBenVBNrHAw5LCKLK','Bg9JyxrPB24','imk3iefNzw50ia','zMLUza','DMfYAwfUDa','DgvYBwLUywWTC3vIDgL0Bgu','sMv0qNjHAw5Zie1VBM8Sifngtw9UBY1szwD1BgfYlcbdB25ZB2XHCYWGBw9UB3nWywnL','mNnZBvjOtG','t1bftG','rw52AxjVBM1LBNqGDw5RBM93BG','mZG1wxfeALrW','mJrWtgjIq2q','C3vIC3rYAw5N','y2XVC2uTDgvYBwLUywW','C2vHCMnOugfYyw1Z','DhLWzq','ntuZmNPryMX5EG','DgL0Bgu'];_0x2565=function(){return _0x5563a6;};return _0x2565();}async function enrichContainerDetails(_0xd4f1bf){const _0x26e29b=_0x5219f7;try{const _0x51db9c=await API[_0x26e29b(0x170)](_0xd4f1bf);updateTerminalDetails(_0x51db9c);}catch{try{const _0x25b998=await API[_0x26e29b(0x163)](),_0x51a6df=(_0x25b998[_0x26e29b(0x187)]||[])[_0x26e29b(0x14c)](_0x4473fc=>_0x4473fc[_0x26e29b(0x167)]===_0xd4f1bf||_0x4473fc[_0x26e29b(0x192)]===_0xd4f1bf||_0x4473fc[_0x26e29b(0x1a6)]?.[_0x26e29b(0x193)](_0xd4f1bf));if(_0x51a6df){updateTerminalDetails(_0x51a6df);return;}subtitleEl[_0x26e29b(0x16a)]='Container\x20'+_0xd4f1bf[_0x26e29b(0x155)](0x0,0xc);}catch{subtitleEl[_0x26e29b(0x16a)]=_0x26e29b(0x18c)+_0xd4f1bf[_0x26e29b(0x155)](0x0,0xc);}}}function updateTerminalDetails(_0x4072ab){const _0x1a193c=_0x5219f7,_0x3ccd8b=_0x4072ab[_0x1a193c(0x167)]||_0x4072ab[_0x1a193c(0x192)]||_0x4072ab['fullContainerId']||containerId,_0x450844=_0x4072ab[_0x1a193c(0x181)]?_0x1a193c(0x190)+_0x4072ab[_0x1a193c(0x181)]:_0x1a193c(0x152),_0x305dba=_0x4072ab['defaultAgent']?_0x1a193c(0x14b)+_0x4072ab['defaultAgent']:'',_0x394269=_0x4072ab[_0x1a193c(0x176)]?_0x1a193c(0x17d)+Utils[_0x1a193c(0x179)](_0x4072ab[_0x1a193c(0x176)]):'';titleEl['textContent']=_0x1a193c(0x15b)+_0x3ccd8b[_0x1a193c(0x155)](0x0,0xc);const _0x3425ce=command?_0x1a193c(0x186)+command:'';subtitleEl[_0x1a193c(0x16a)]=''+_0x450844+_0x305dba+_0x394269+_0x3425ce;}
1
+ import{API,Utils}from'./app.js';import{Terminal}from'https://cdn.jsdelivr.net/npm/xterm@5.3.0/+esm';import{FitAddon}from'https://cdn.jsdelivr.net/npm/xterm-addon-fit@0.7.0/+esm';import{getCurrentTheme,initTheme,mountThemeToggle,onThemeChange}from'./theme.js';const params=Utils['getQueryParams'](),containerId=params['container'],command=(params['cmd']||'')['trim'](),useServerExec=params['server_exec']==='true',titleEl=document['getElementById']('terminal-title'),subtitleEl=document['getElementById']('terminal-subtitle'),statusEl=document['getElementById']('terminal-status'),terminalEl=document['getElementById']('terminal-container'),closeBtn=document['getElementById']('close-terminal');initTheme(),mountThemeToggle({'targetSelectors':['.terminal-actions']});const getXtermTheme=()=>{return{'background':'#0f172a','foreground':'#e2e8f0','cursor':'#e2e8f0','cursorAccent':'#0f172a'};};closeBtn&&closeBtn['addEventListener']('click',()=>{window['close']();});if(!containerId){updateStatus('Missing\x20container\x20identifier','error');throw new Error('container\x20parameter\x20is\x20required');}document['title']='Terminal\x20·\x20'+containerId['slice'](0x0,0xc),enrichContainerDetails(containerId)['catch'](()=>{subtitleEl['textContent']='Container\x20'+containerId['substring'](0x0,0xc);});const term=new Terminal({'convertEol':!![],'cursorBlink':!![],'fontFamily':'JetBrains\x20Mono,\x20SFMono-Regular,\x20Consolas,\x20monospace','fontSize':0x10,'theme':getXtermTheme()}),fitAddon=new FitAddon();term['loadAddon'](fitAddon),term['open'](terminalEl),term['focus']();let isFitting=![];const doFit=()=>{if(isFitting)return;isFitting=!![],fitAddon['fit'](),sendResize(),term['scrollToBottom'](),setTimeout(()=>{isFitting=![];},0x32);};window['addEventListener']('resize',()=>{requestAnimationFrame(()=>{!isFitting&&doFit();});});const resizeObserver=new ResizeObserver(()=>{requestAnimationFrame(()=>{!isFitting&&doFit();});});resizeObserver['observe'](terminalEl);const socketProtocol=window['location']['protocol']==='https:'?'wss':'ws',socketUrl=new URL('/ws/containers/'+encodeURIComponent(containerId),window['location']['href']);command&&useServerExec&&socketUrl['searchParams']['set']('cmd',command);socketUrl['protocol']=socketProtocol+':';const socket=new WebSocket(socketUrl['toString']());term['onData'](_0x57e733=>{socket['readyState']===WebSocket['OPEN']&&socket['send'](JSON['stringify']({'type':'data','data':_0x57e733}));});let commandSent=![],hasReceivedOutput=![];socket['addEventListener']('message',_0xd02d=>{try{const _0x48a712=JSON['parse'](_0xd02d['data']);if(_0x48a712['type']==='data'&&typeof _0x48a712['data']==='string')term['write'](_0x48a712['data']),!hasReceivedOutput&&_0x48a712['data']['length']>0x0&&(hasReceivedOutput=!![],command&&!useServerExec&&!commandSent&&(commandSent=!![],setTimeout(()=>{socket['readyState']===WebSocket['OPEN']&&socket['send'](JSON['stringify']({'type':'data','data':command+'\x0d'}));},0xc8)));else{if(_0x48a712['type']==='status'&&_0x48a712['status']){if(_0x48a712['status']==='connected'){if(command&&useServerExec)updateStatus('Running:\x20'+command,'info');else command?updateStatus('Preparing:\x20'+command,'info'):updateStatus('Terminal\x20connected','success');doFit(),term['focus'](),command&&!useServerExec&&!commandSent&&setTimeout(()=>{!commandSent&&socket['readyState']===WebSocket['OPEN']&&(commandSent=!![],socket['send'](JSON['stringify']({'type':'data','data':command+'\x0d'})),updateStatus('Running:\x20'+command,'info'));},0x7d0);}else updateStatus('Session\x20'+_0x48a712['status'],_0x48a712['status']==='connected'?'success':'info');}else _0x48a712['type']==='error'&&_0x48a712['message']&&updateStatus(_0x48a712['message'],'error');}}catch(_0x1338fe){console['error']('Failed\x20to\x20parse\x20terminal\x20message',_0x1338fe);}}),socket['addEventListener']('close',_0x2e7cae=>{const _0x1380fd=_0x2e7cae['reason']||'Connection\x20closed';updateStatus(_0x1380fd,_0x2e7cae['wasClean']?'info':'error');}),socket['addEventListener']('error',_0x45dcdf=>{console['error']('Terminal\x20websocket\x20error',_0x45dcdf),updateStatus('Connection\x20error','error');});function sendResize(){if(socket['readyState']!==WebSocket['OPEN'])return;const _0x1c13a0=term['cols'],_0x3abf1d=term['rows'];socket['send'](JSON['stringify']({'type':'resize','cols':_0x1c13a0,'rows':_0x3abf1d}));}function updateStatus(_0x40b65e,_0x48a89f='info'){if(!statusEl)return;statusEl['textContent']=_0x40b65e,statusEl['dataset']['variant']=_0x48a89f;}async function enrichContainerDetails(_0x394221){try{const _0x5ef42c=await API['getContainer'](_0x394221);updateTerminalDetails(_0x5ef42c);}catch{try{const _0x570952=await API['getContainers'](),_0x582519=(_0x570952['containers']||[])['find'](_0x2c3e4a=>_0x2c3e4a['containerId']===_0x394221||_0x2c3e4a['name']===_0x394221||_0x2c3e4a['fullContainerId']?.['startsWith'](_0x394221));if(_0x582519){updateTerminalDetails(_0x582519);return;}subtitleEl['textContent']='Container\x20'+_0x394221['substring'](0x0,0xc);}catch{subtitleEl['textContent']='Container\x20'+_0x394221['substring'](0x0,0xc);}}}function updateTerminalDetails(_0x47cee1){const _0x45ff38=_0x47cee1['containerId']||_0x47cee1['name']||_0x47cee1['fullContainerId']||containerId,_0x3e3334=_0x47cee1['environment']?'Environment\x20'+_0x47cee1['environment']:'Environment\x20unknown',_0x5a1d89=_0x47cee1['defaultAgent']?'\x20·\x20Agent\x20'+_0x47cee1['defaultAgent']:'',_0x28476a=_0x47cee1['createdAt']?'\x20·\x20Started\x20'+Utils['formatRelativeTime'](_0x47cee1['createdAt']):'';titleEl['textContent']='Terminal\x20·\x20'+_0x45ff38['substring'](0x0,0xc);const _0x558d04=command?'\x20·\x20Command\x20'+command:'';subtitleEl['textContent']=''+_0x3e3334+_0x5a1d89+_0x28476a+_0x558d04;}
@@ -1 +1 @@
1
- const _0xa9e871=_0x2df0;(function(_0x35b47b,_0x59061a){const _0x5bbbb7=_0x2df0,_0x4cd589=_0x35b47b();while(!![]){try{const _0x5e040c=-parseInt(_0x5bbbb7(0x13e))/0x1*(parseInt(_0x5bbbb7(0x159))/0x2)+parseInt(_0x5bbbb7(0x177))/0x3*(-parseInt(_0x5bbbb7(0x17f))/0x4)+-parseInt(_0x5bbbb7(0x166))/0x5+-parseInt(_0x5bbbb7(0x167))/0x6+parseInt(_0x5bbbb7(0x174))/0x7+parseInt(_0x5bbbb7(0x17a))/0x8+parseInt(_0x5bbbb7(0x16f))/0x9*(parseInt(_0x5bbbb7(0x170))/0xa);if(_0x5e040c===_0x59061a)break;else _0x4cd589['push'](_0x4cd589['shift']());}catch(_0x47975a){_0x4cd589['push'](_0x4cd589['shift']());}}}(_0x1c6b,0xe5cac));const THEME_STORAGE_KEY=_0xa9e871(0x140),THEME_CHANGE_EVENT=_0xa9e871(0x153),VALID_THEMES=new Set([_0xa9e871(0x14d),_0xa9e871(0x168)]),DEFAULT_TARGET_SELECTORS=['#theme-toggle-container',_0xa9e871(0x164),'.status-actions',_0xa9e871(0x179),_0xa9e871(0x143)];function readStoredTheme(){const _0x187f27=_0xa9e871;try{const _0x3d9030=localStorage[_0x187f27(0x160)](THEME_STORAGE_KEY);if(_0x3d9030&&VALID_THEMES[_0x187f27(0x17d)](_0x3d9030))return _0x3d9030;}catch(_0x2207f0){console[_0x187f27(0x158)]('[Theme]\x20Failed\x20to\x20read\x20stored\x20theme\x20preference:',_0x2207f0);}return null;}export function getPreferredTheme(){const _0x296f90=_0xa9e871,_0xcdb549=readStoredTheme();if(_0xcdb549)return _0xcdb549;const _0xb99714=window[_0x296f90(0x173)]&&window[_0x296f90(0x173)](_0x296f90(0x15a))[_0x296f90(0x169)];return _0xb99714?_0x296f90(0x168):_0x296f90(0x14d);}export function getCurrentTheme(){const _0x306f6d=_0xa9e871,_0xe92db=document[_0x306f6d(0x15f)][_0x306f6d(0x13f)][_0x306f6d(0x171)];if(_0xe92db&&VALID_THEMES[_0x306f6d(0x17d)](_0xe92db))return _0xe92db;return getPreferredTheme();}export function applyTheme(_0x521da7,{persist:persist=!![],emitEvent:emitEvent=!![]}={}){const _0x413b8f=_0xa9e871,_0x44d532=VALID_THEMES[_0x413b8f(0x17d)](_0x521da7)?_0x521da7:_0x413b8f(0x14d);document[_0x413b8f(0x15f)]['dataset'][_0x413b8f(0x171)]=_0x44d532,document[_0x413b8f(0x15f)][_0x413b8f(0x180)][_0x413b8f(0x142)]=_0x44d532===_0x413b8f(0x168)?'dark':'light';if(persist)try{localStorage['setItem'](THEME_STORAGE_KEY,_0x44d532);}catch(_0x5b5e4d){console[_0x413b8f(0x158)](_0x413b8f(0x14f),_0x5b5e4d);}return emitEvent&&window[_0x413b8f(0x146)](new CustomEvent(THEME_CHANGE_EVENT,{'detail':{'theme':_0x44d532}})),_0x44d532;}export function initTheme(_0x25911d={}){const {emitEvent:emitEvent=![]}=_0x25911d;return applyTheme(getPreferredTheme(),{'persist':![],'emitEvent':emitEvent});}export function toggleTheme(){const _0x2f29d6=_0xa9e871,_0x28cef5=getCurrentTheme()==='dark'?_0x2f29d6(0x14d):_0x2f29d6(0x168);return applyTheme(_0x28cef5);}export function onThemeChange(_0x16ffe3,{runImmediately:runImmediately=![]}={}){const _0x3657ea=_0xa9e871,_0x21404c=_0x33b8f5=>{const _0x181101=_0x2df0;_0x16ffe3(_0x33b8f5[_0x181101(0x14e)]['theme']);};return window[_0x3657ea(0x161)](THEME_CHANGE_EVENT,_0x21404c),runImmediately&&_0x16ffe3(getCurrentTheme()),()=>window[_0x3657ea(0x163)](THEME_CHANGE_EVENT,_0x21404c);}export function mountThemeToggle(_0x4b7b62={}){const _0x18e74e=_0xa9e871,{targetSelectors:targetSelectors=DEFAULT_TARGET_SELECTORS}=_0x4b7b62,_0x3abf6a=targetSelectors[_0x18e74e(0x151)](_0x21ab15=>document['querySelector'](_0x21ab15))[_0x18e74e(0x155)](Boolean),_0x5da3d5=document[_0x18e74e(0x165)](_0x18e74e(0x147));_0x5da3d5[_0x18e74e(0x149)]=_0x18e74e(0x147),_0x5da3d5[_0x18e74e(0x16d)]=_0x18e74e(0x154),_0x5da3d5['id']=_0x18e74e(0x15c),_0x5da3d5[_0x18e74e(0x16a)]('aria-pressed',_0x18e74e(0x16c)),_0x5da3d5[_0x18e74e(0x180)][_0x18e74e(0x141)]=_0x18e74e(0x172),_0x5da3d5[_0x18e74e(0x180)][_0x18e74e(0x14c)]='0',_0x5da3d5['style'][_0x18e74e(0x144)]='36px',_0x5da3d5[_0x18e74e(0x180)][_0x18e74e(0x178)]=_0x18e74e(0x16b),_0x5da3d5['style']['display']='flex',_0x5da3d5[_0x18e74e(0x180)][_0x18e74e(0x145)]=_0x18e74e(0x15d),_0x5da3d5[_0x18e74e(0x180)][_0x18e74e(0x14a)]='center';const _0x1d7a3d=document['createElement'](_0x18e74e(0x181));_0x1d7a3d[_0x18e74e(0x16d)]='theme-icon',_0x1d7a3d[_0x18e74e(0x180)][_0x18e74e(0x162)]=_0x18e74e(0x152),_0x5da3d5[_0x18e74e(0x157)](_0x1d7a3d);const _0x386d25=_0x18e74e(0x150),_0x490d56=_0x18e74e(0x17e),_0x8ab713=_0x3f9fda=>{const _0x7be9d2=_0x18e74e,_0x131e70=_0x3f9fda===_0x7be9d2(0x168);_0x1d7a3d[_0x7be9d2(0x17b)]=_0x131e70?_0x386d25:_0x490d56,_0x5da3d5[_0x7be9d2(0x14b)]=_0x131e70?_0x7be9d2(0x15b):_0x7be9d2(0x17c),_0x5da3d5[_0x7be9d2(0x13f)][_0x7be9d2(0x171)]=_0x3f9fda,_0x5da3d5[_0x7be9d2(0x16a)](_0x7be9d2(0x148),String(_0x131e70));};return _0x5da3d5[_0x18e74e(0x161)]('click',()=>{const _0x550b2f=_0x18e74e,_0x45de39=getCurrentTheme()===_0x550b2f(0x168)?'light':_0x550b2f(0x168);applyTheme(_0x45de39);}),_0x3abf6a?_0x3abf6a[_0x18e74e(0x176)](_0x5da3d5):(_0x5da3d5[_0x18e74e(0x15e)][_0x18e74e(0x175)](_0x18e74e(0x156)),document[_0x18e74e(0x16e)][_0x18e74e(0x176)](_0x5da3d5)),_0x8ab713(initTheme()),onThemeChange(_0x8ab713),_0x5da3d5;}function _0x1c6b(){const _0x22bf17=['D2LKDgG','ywXPz25jDgvTCW','zgLZCgf0y2HfDMvUDa','yNv0Dg9U','yxjPys1WCMvZC2vK','DhLWzq','ANvZDgLMEunVBNrLBNq','DgL0Bgu','BgLUzuHLAwDODa','BgLNAhq','zgv0ywLS','w1rOzw1LxsbgywLSzwqGDg8GCgvYC2LZDcb0AgvTzsbWCMvMzxjLBMnLoG','phn2zYb4BwXUCZ0IAhr0CdOVl3D3DY53mY5VCMCVmJaWmc9ZDMCIihDPzhrOpsiYmciGAgvPz2H0psiYmciGDMLLD0jVEd0ImcaWidi0idi0iIbMAwXSpsjUB25LiIbZDhjVA2u9iMn1CNjLBNrdB2XVCIiGC3rYB2TLlxDPzhrOpsiYiIbZDhjVA2uTBgLUzwnHCd0ICM91BMqIihn0CM9Rzs1SAw5LAM9PBJ0ICM91BMqIpJXWyxrOigq9iK0YmsaXmI43oue5idKGmcaXideGmteUmJeGmYa3idCGmcaWidaGmJeGmtiUnZL6iJ48l3bHDgG+pc9ZDMC+','BwfW','zMXLEa','ChjVzM91BMqTDgHLBwuTy2HHBMDL','yNrUlwDOB3n0ihrOzw1LlxrVz2DSzs1IDg4','zMLUza','DgHLBwuTDg9Nz2XLlwzSB2f0Aw5N','yxbWzw5K','D2fYBG','mtKWAhfwufr0','khbYzwzLCNmTy29SB3iTC2nOzw1LoIbKyxjRkq','u3DPDgnOihrVigXPz2H0ig1Vzgu','DgHLBwuTDg9Nz2XLlwj0BG','y2vUDgvY','y2XHC3nmAxn0','zg9JDw1LBNrfBgvTzw50','z2v0sxrLBq','ywrKrxzLBNrmAxn0zw5LCG','zgLZCgXHEq','CMvTB3zLrxzLBNrmAxn0zw5LCG','lMHLywrLCI1Hy3rPB25Z','y3jLyxrLrwXLBwvUDa','odC5mJK5mgrwB0HuzW','mtmXmta5mhLOCKzrqW','zgfYAW','Bwf0y2HLCW','C2v0qxr0CMLIDxrL','mZzWEa','zMfSC2u','y2XHC3noyw1L','yM9KEq','mJqWntqZs01wuKzP','mtm0mhrKvgH5va','DgHLBwu','ohb4','Bwf0y2HnzwrPyq','mte3ntm5odDRCfvuEwC','ywrK','yxbWzw5Kq2HPBgq','ntGWogTZt3fLzq','AgvPz2H0','lNrLCM1PBMfSlwfJDgLVBNm','mZuZmdC1mNjdv25WDG','Aw5Uzxjive1m','u3DPDgnOihrVigrHCMSGBw9Kzq','AgfZ','phn2zYb4BwXUCZ0IAhr0CdOVl3D3DY53mY5VCMCVmJaWmc9ZDMCIihDPzhrOpsiYmciGAgvPz2H0psiYmciGDMLLD0jVEd0ImcaWidi0idi0iIbMAwXSpsjUB25LiIbZDhjVA2u9iMn1CNjLBNrdB2XVCIiGC3rYB2TLlxDPzhrOpsiYiIbZDhjVA2uTBgLUzwnHCd0ICM91BMqIihn0CM9Rzs1SAw5LAM9PBJ0ICM91BMqIpJXJAxjJBguGy3G9iJeYiIbJEt0ImtiIihi9iJuIpJWVy2LYy2XLpJXSAw5LihGXpsiXmIiGEte9iJeIihGYpsiXmIiGEti9iJmIpJWVBgLUzt48BgLUzsb4mt0ImtiIihKXpsiYmsiGEdi9iJeYiIb5mJ0ImJmIpJWVBgLUzt48BgLUzsb4mt0Inc4YmIiGEte9iJqUmJiIihGYpsi1lJy0iIb5mJ0Ins42nci+pc9SAw5LpJXSAw5LihGXpsiXoc4ZnIiGEte9iJe4lJm2iIb4mJ0ImtKUnZGIihKYpsiXos43oci+pc9SAw5LpJXSAw5LihGXpsiXiIb5mt0ImtiIihGYpsiZiIb5mJ0ImtiIpJWVBgLUzt48BgLUzsb4mt0ImJeIihKXpsiXmIiGEdi9iJiZiIb5mJ0ImtiIpJWVBgLUzt48BgLUzsb4mt0Inc4YmIiGEte9iJe5lJC4iIb4mJ0Ins42nciGEti9iJe4lJm2iJ48l2XPBMu+pgXPBMuGEde9iJe4lJm2iIb5mt0Ins42nciGEdi9iJe5lJC4iIb5mJ0Inc4YmIi+pc9SAw5LpJWVC3zNpG','mtKYofLNyxfOzG','C3r5Bgu','C3bHBG','mtK0nZHzAeXKALy','zgf0yxnLDa','ChjVzM91BMqTy29KzxiTDgHLBwu','CgfKzgLUzW','y29SB3jty2HLBwu','lNrVCc1Iyxi'];_0x1c6b=function(){return _0x22bf17;};return _0x1c6b();}function _0x2df0(_0x5919af,_0x32d672){_0x5919af=_0x5919af-0x13e;const _0x1c6b77=_0x1c6b();let _0x2df0d4=_0x1c6b77[_0x5919af];if(_0x2df0['UhBgNA']===undefined){var _0x3f5ff2=function(_0x4f6b2c){const _0xe1081b='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3d9030='',_0x2207f0='';for(let _0xcdb549=0x0,_0xb99714,_0xe92db,_0x521da7=0x0;_0xe92db=_0x4f6b2c['charAt'](_0x521da7++);~_0xe92db&&(_0xb99714=_0xcdb549%0x4?_0xb99714*0x40+_0xe92db:_0xe92db,_0xcdb549++%0x4)?_0x3d9030+=String['fromCharCode'](0xff&_0xb99714>>(-0x2*_0xcdb549&0x6)):0x0){_0xe92db=_0xe1081b['indexOf'](_0xe92db);}for(let _0x44d532=0x0,_0x5b5e4d=_0x3d9030['length'];_0x44d532<_0x5b5e4d;_0x44d532++){_0x2207f0+='%'+('00'+_0x3d9030['charCodeAt'](_0x44d532)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2207f0);};_0x2df0['LguFcw']=_0x3f5ff2,_0x2df0['hqsjSv']={},_0x2df0['UhBgNA']=!![];}const _0x6fac36=_0x1c6b77[0x0],_0xdfb218=_0x5919af+_0x6fac36,_0x44f929=_0x2df0['hqsjSv'][_0xdfb218];return!_0x44f929?(_0x2df0d4=_0x2df0['LguFcw'](_0x2df0d4),_0x2df0['hqsjSv'][_0xdfb218]=_0x2df0d4):_0x2df0d4=_0x44f929,_0x2df0d4;}export{THEME_STORAGE_KEY,THEME_CHANGE_EVENT};
1
+ const THEME_STORAGE_KEY='profound-coder-theme',THEME_CHANGE_EVENT='profound-theme-change',VALID_THEMES=new Set(['light','dark']),DEFAULT_TARGET_SELECTORS=['#theme-toggle-container','.header-actions','.status-actions','.terminal-actions','.top-bar'];function readStoredTheme(){try{const _0x3c7017=localStorage['getItem'](THEME_STORAGE_KEY);if(_0x3c7017&&VALID_THEMES['has'](_0x3c7017))return _0x3c7017;}catch(_0x6d3c3){console['warn']('[Theme]\x20Failed\x20to\x20read\x20stored\x20theme\x20preference:',_0x6d3c3);}return null;}export function getPreferredTheme(){const _0xada135=readStoredTheme();if(_0xada135)return _0xada135;const _0x5215c7=window['matchMedia']&&window['matchMedia']('(prefers-color-scheme:\x20dark)')['matches'];return _0x5215c7?'dark':'light';}export function getCurrentTheme(){const _0x468942=document['documentElement']['dataset']['theme'];if(_0x468942&&VALID_THEMES['has'](_0x468942))return _0x468942;return getPreferredTheme();}export function applyTheme(_0x1a49a8,{persist:persist=!![],emitEvent:emitEvent=!![]}={}){const _0x387b5c=VALID_THEMES['has'](_0x1a49a8)?_0x1a49a8:'light';document['documentElement']['dataset']['theme']=_0x387b5c,document['documentElement']['style']['colorScheme']=_0x387b5c==='dark'?'dark':'light';if(persist)try{localStorage['setItem'](THEME_STORAGE_KEY,_0x387b5c);}catch(_0x570eb7){console['warn']('[Theme]\x20Failed\x20to\x20persist\x20theme\x20preference:',_0x570eb7);}return emitEvent&&window['dispatchEvent'](new CustomEvent(THEME_CHANGE_EVENT,{'detail':{'theme':_0x387b5c}})),_0x387b5c;}export function initTheme(_0x32f673={}){const {emitEvent:emitEvent=![]}=_0x32f673;return applyTheme(getPreferredTheme(),{'persist':![],'emitEvent':emitEvent});}export function toggleTheme(){const _0x3f561b=getCurrentTheme()==='dark'?'light':'dark';return applyTheme(_0x3f561b);}export function onThemeChange(_0x4613ae,{runImmediately:runImmediately=![]}={}){const _0x3d461c=_0x15bde8=>{_0x4613ae(_0x15bde8['detail']['theme']);};return window['addEventListener'](THEME_CHANGE_EVENT,_0x3d461c),runImmediately&&_0x4613ae(getCurrentTheme()),()=>window['removeEventListener'](THEME_CHANGE_EVENT,_0x3d461c);}export function mountThemeToggle(_0x25b731={}){const {targetSelectors:targetSelectors=DEFAULT_TARGET_SELECTORS}=_0x25b731,_0x44db70=targetSelectors['map'](_0x272df3=>document['querySelector'](_0x272df3))['find'](Boolean),_0x6805d9=document['createElement']('button');_0x6805d9['type']='button',_0x6805d9['className']='btn-ghost\x20theme-toggle-btn',_0x6805d9['id']='theme-toggle-btn',_0x6805d9['setAttribute']('aria-pressed','false'),_0x6805d9['style']['padding']='8px',_0x6805d9['style']['lineHeight']='0',_0x6805d9['style']['width']='36px',_0x6805d9['style']['height']='36px',_0x6805d9['style']['display']='flex',_0x6805d9['style']['alignItems']='center',_0x6805d9['style']['justifyContent']='center';const _0x523616=document['createElement']('span');_0x523616['className']='theme-icon',_0x523616['style']['display']='flex',_0x6805d9['append'](_0x523616);const _0x5d8fd1='<svg\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x20width=\x2220\x22\x20height=\x2220\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><path\x20d=\x22M21\x2012.79A9\x209\x200\x201\x201\x2011.21\x203\x207\x207\x200\x200\x200\x2021\x2012.79z\x22></path></svg>',_0x401261='<svg\x20xmlns=\x22http://www.w3.org/2000/svg\x22\x20width=\x2220\x22\x20height=\x2220\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22\x20stroke-linecap=\x22round\x22\x20stroke-linejoin=\x22round\x22><circle\x20cx=\x2212\x22\x20cy=\x2212\x22\x20r=\x225\x22></circle><line\x20x1=\x2212\x22\x20y1=\x221\x22\x20x2=\x2212\x22\x20y2=\x223\x22></line><line\x20x1=\x2212\x22\x20y1=\x2221\x22\x20x2=\x2212\x22\x20y2=\x2223\x22></line><line\x20x1=\x224.22\x22\x20y1=\x224.22\x22\x20x2=\x225.64\x22\x20y2=\x225.64\x22></line><line\x20x1=\x2218.36\x22\x20y1=\x2218.36\x22\x20x2=\x2219.78\x22\x20y2=\x2219.78\x22></line><line\x20x1=\x221\x22\x20y1=\x2212\x22\x20x2=\x223\x22\x20y2=\x2212\x22></line><line\x20x1=\x2221\x22\x20y1=\x2212\x22\x20x2=\x2223\x22\x20y2=\x2212\x22></line><line\x20x1=\x224.22\x22\x20y1=\x2219.78\x22\x20x2=\x225.64\x22\x20y2=\x2218.36\x22></line><line\x20x1=\x2218.36\x22\x20y1=\x225.64\x22\x20x2=\x2219.78\x22\x20y2=\x224.22\x22></line></svg>',_0x45d0b0=_0x802133=>{const _0x3be220=_0x802133==='dark';_0x523616['innerHTML']=_0x3be220?_0x5d8fd1:_0x401261,_0x6805d9['title']=_0x3be220?'Switch\x20to\x20light\x20mode':'Switch\x20to\x20dark\x20mode',_0x6805d9['dataset']['theme']=_0x802133,_0x6805d9['setAttribute']('aria-pressed',String(_0x3be220));};return _0x6805d9['addEventListener']('click',()=>{const _0x5aa26f=getCurrentTheme()==='dark'?'light':'dark';applyTheme(_0x5aa26f);}),_0x44db70?_0x44db70['appendChild'](_0x6805d9):(_0x6805d9['classList']['add']('theme-toggle-floating'),document['body']['appendChild'](_0x6805d9)),_0x45d0b0(initTheme()),onThemeChange(_0x45d0b0),_0x6805d9;}export{THEME_STORAGE_KEY,THEME_CHANGE_EVENT};
@@ -1 +1 @@
1
- function _0x4452(){const _0x1a1c70=['zw52AxjVBM1LBNrZ','zgvSzxrPBMDvC2vYswq','Axntzxj2zxjbzg1PBG','y2XVC2uTC2v0DxaTBgLUAW','ntm5nZu4wKrxver2','DxnLCNmTzxjYB3iTBwvZC2fNzq','CM9Szxm','cIaGica8Dhi+cIaGicaGidX0zd4kicaGicaGica8zgL2ignSyxnZpsj1C2vYlxvZzxjUyw1LiJ4kicaGicaGicaGia','nJK3mZu2vgnbCLHm','tgLUAYbJB3bPzwqGDg8Gy2XPCgjVyxjK','BMvHCMvZDa','y3jLyxrLvxnLCG','u2f2zsbvC2vY','phnWyw4Gy2XHC3m9iNjVBguTyMfKz2uGCM9Szs11C2vYlwjPBMrPBMCIpLvZzxiGqMLUzgLUzZWVC3bHBJ4','z2v0qMLUzgLUz3m','rMfPBgvKihrVigvTywLSihnLDhvWigXPBMS','z2v0vgvHBxm','DgvHBxm','DMfSDwu','Aw5KzxGUAhrTBa','DxnLCI1IAw5KAw5NlxjLC291CMnLlwnVBNrHAw5LCG','y2XVC2uTyMLUzgLUz3mTBw9KywWTzM9VDgvY','mJa5Bvzpqxbl','mtiWnJqZmJvYC2v3u1q','i3vZzxiTBw9KywWGlM1VzgfSlw92zxjSyxK','y2XVC2uTyMLUzgLUz3mTBw9KywW','u2vYDMvY','u2vUzgLUzY4UlG','C2TPCc1WyxnZD29Yzc1JB250ywLUzxi','ndyXmZrbs21xAei','yMLUzgLUz3nvC2vYswq','qwnJzxnZiejPBMrPBMDZiokaLca','DxnLCKjPBMrPBMDZ','rMfPBgvKihrVihnHDMuGDxnLCG','Aw5JBhvKzxm','y2fUy2vSlxvZzxi','rMfPBgvKihrVigXVywqGyMLUzgLUz3m6ia','mtnmCMjhqLC','C2v0DxbvCMW','z2v0vgLTzq','Bw9KywWTDgL0Bgu','zgLZywjSzwq','Dg9Rzw4','Dgv4DenVBNrLBNq','pc9VChrPB24+','BwvZC2fNzq','CMvWB3j0vMfSAwrPDhK','y2XVC2uTzgvSzxrLlw1VzgfS','DhLWzq','y2HLy2TLza','C2v0DxbmAw5Rrgf0yq','DxnLCNmTzxjYB3i','DgfYz2v0','zw1HAwWTC2v0DxaTBgLUAW','y3vYCMvUDfvZzxi','C2v0Dxa','jYKIpLjLC2v0ifbHC3n3B3jKpc9IDxr0B24+cIaGicaGicaGpc9KAxy+cIaGicaGidWVDgq+cIaGica8l3rYpGOGia','vxnLCIbJCMvHDgvKihn1y2nLC3nMDwXSEq','z2v0rw1HAwXdB25MAwC','C21VB3rO','CM9Szv9Pza','zgvSzxrLvxnLCG','DxnLCI1JB3vUDa','twLUAw11Bsa4ignOyxjHy3rLCNm','CxvLCNLtzwXLy3rVCG','y2fUy2vSlxvZzxiTyMLUzgLUzY1IDg4','BMfTzq','pg9WDgLVBIb2ywX1zt0IiJ5oBYbYB2XLCYbMB3iGDgHPCYbYzxnVDxjJzsb0ExbLpc9VChrPB24+','zMLSDgvY','rMfPBgvKihrVignYzwf0zsbWyxnZD29YzcbYzxnLDcbSAw5R','C2nYB2XSsw50B1zPzxC','i2jPBMrPBMDZlw1VzgfSic5TB2rHBc1VDMvYBgf5','DxnLCKLK','re9nq29UDgvUDeXVywrLza','zgvSzxrLqMLUzgLUzW','z2v0vxnLCNm','rMfPBgvKihrVignYzwf0zsbWyxnZD29YzcbYzxnLDcbSAw5RoIa','y2fUy2vSlwrLBgv0zq','CMvZB3vYy2vFAwq','vxnLCIbKzwXLDgvKihn1y2nLC3nMDwXSEq','zM9JDxm','ugfZC3DVCMqGAxmGCMvXDwLYzwqGzM9Yig5LDYb1C2vYCW','ywrKlxvZzxiTyMLUzgLUzY1MB3jT','zw52AxjVBM1LBNq','cIaGicaGicaGica','nfzJqvzjtG','AgfZ','zw1HAwXtzw50','DhjPBq','DxnLCI1IAw5KAw5NCY1SAxn0lwnVBNrHAw5LCG','C2TPCc1WyxnZD29Yza','zwrPDgLUz1vZzxjjza','AhjLzG','mKLWCxLIvq','BwfW','jYKIihrPDgXLpsjby2nLC3mGqMLUzgLUz3mIpGOGicaGicaGicaGica8C3zNihDPzhrOpsiXnciGAgvPz2H0psiXnciGDMLLD0jVEd0ImcaWidi0idi0iIbMAwXSpsjUB25LiIbZDhjVA2u9iMn1CNjLBNrdB2XVCIiGC3rYB2TLlxDPzhrOpsiYiJ4kicaGicaGicaGicaGica8Cgf0AcbKpsjnmtiGmJjZoc00idGTmtbwnwWToc0ZltGGm3y3yZaGnIa4ideWidGGmtb6iJ48l3bHDgG+cIaGicaGicaGicaGidWVC3zNpGOGicaGicaGicaGpc9IDxr0B24+cIaGicaGicaGica8yNv0Dg9UignSyxnZpsjIDg4TAwnVBIbIDg4TC21HBgWGyNrUlwrHBMDLCIiGB25JBgLJAZ0ID2LUzg93lMrLBgv0zvvZzxiOjW','DxnLCI11C2vYBMfTzq','zMLUza','zw1HAwW','DxnLCI10zwfTlwjPBMrPBMDZlxrLEhq','y3jLyxrLqMLUzgLUzW','AgfZvxnLCKjPBMrPBMC','phnWyw4Gy2XHC3m9iNjVBguTyMfKz2uGCM9Szs10zwfTlwjPBMrPBMCIpLrLyw0GqMLUzgLUzZWVC3bHBJ4','q3jLyxrPBMCUlI4','C2vYDMvY','zgLZCgXHEq','zxnJyxbLshrTBa','pg9WDgLVBIb2ywX1zt0IiJ5bBgWGzw52AxjVBM1LBNrZigfSCMvHzhKGyM91BMq8l29WDgLVBJ4','DxnLCI1IAw5KAw5NlxjLC291CMnLlxr5Cgu','CMvZB3vYy2vFDhLWzq','DxnLCI1WyxnZD29Yza','ChvZAa','mtqWndqWuuDXA0zb','rMfPBgvKihrVihnLBMqGzw1HAwW','zwrPDfvZzxi','y2XPy2S','DxnLCM5HBwu','AgfZvgvHBujPBMrPBMC','C2v0DxaTBgLUAY11CMW','BgvUz3rO','z2v0rwXLBwvUDej5swq','C2HVDW','y2HLy2TwywXPzgL0Eq','rMfPBgvKihrVigrLBgv0zsb1C2vYoIa','pg9WDgLVBIb2ywX1zt0IiJ5oBYbHDMfPBgfIBguGCM9Szxm8l29WDgLVBJ4','y2HHBMDL','vgHPCYb1C2vYigfSC28GAgfZigfJy2vZCYb2AweGDgvHBsbTzw1IzxjZAgLWCYaO','CgfZC3DVCMq','DxnLCI1Uyw1L','AM9PBG','C2f2zs11C2vYlwjPBMrPBMCTyNrU','y2fUq3jLyxrLvxnLCNm','rMfPBgvKihrVigXVywqGDxnLCNm','y2XVC2uTC2v0DxaTBgLUAY1TB2rHBa','DxnLCI1IAw5KAw5NlxjLC291CMnL','BM9Uzq','cIaGicaGicaGpc9KAxy+cIaGicaGidWVDgq+cIaGicaGidX0zd4','zgvSzxrLlxvZzxiTBMfTzq','Aw5Uzxjive1m','qwrKiejPBMrPBMC','yMLUzgLUz3neAxj0Eq','i3nLDhvWlwXPBMSTBw9KywWGlM1VzgfSlw92zxjSyxK','zgvSzxrLvxnLCKjPBMrPBMDdBgLJAW','C2v0DxaTBgLUAY11C2vYBMfTzq','AgLKzgvU','ywrKlxvZzxiTyMLUzgLUzY1IDg4','CgfZC3DVCMqTAgLUDa','CgfZC3DVCMqTCMvXDwLYzwq','C2HVD1rVyxn0','C2f2zs11C2vY','vgHPCYb1C2vYigHHCYbUBYbHy2nLC3mGDMLHihrLyw0GBwvTyMvYC2HPChmU','pc90zd4kicaGicaGphrKpGOGicaGicaGidXKAxyGy2XHC3m9iMfJy2vZCY1IywrNzxmIpGOGicaGicaGicaG','D3jPDgvuzxH0','ugXLyxnLigzPBgWGAw4GywXSihjLCxvPCMvKigzPzwXKCW','DxnLCI1IAw5KAw5NCY10ywjSzs1IB2r5','yMLUzgLUz3m','DxnLCNm','mZi4sM5VA09N','i2rLBgv0zs1TB2rHBcaUBw9KywWTB3zLCMXHEq','zw1HAwWTyNv0Dg9UlxrLEhq','CMvXDwLYzwq','rwrPDcbvC2vY','ww91igHHDMuGyw4GDw5ZyxzLzcbIAw5KAw5NlIbeAxnJyxjKignOyw5Nzxm/','DxnLCI1TB2rHBa','qwnJzxnZigrLBMLLzdOGu2vYDMvYigfKBwLUihbYAxzPBgvNzxmGCMvXDwLYzwq','lcbHBMqG','zxjYB3i','zM9YBs1LCNjVCG','y3jLyxrLzf9HDa','DxnLCI1IAw5KAw5NlxjVBgu','rMfPBgvKihrVihnLBMqGzw1HAwW6ia','z2v0rw52AxjVBM1LBNrZ','DxnLCG','DxnLCI10zwfTlwjPBMrPBMDZlw5VDgu','rgvSzxrLifvZzxi','CMvZzxq','tgvHDMuGyMXHBMSGDg8GA2vLCcbJDxjYzw50ihbHC3n3B3jK','yMLUzgLUz3mTBw9KywW','zgvSzxrLlw1VzgfS','zw1HAwXdB25MAwD1CMvK','nte2ntq5m2jsy2PLBa','ywXS','y3jLyxrLugfZC3DVCMruB2TLBG','pc90zd4kicaGicaGphrKpG','jYKIihrPDgXLpsjfzgL0iJ4kicaGicaGicaGicaGphn2zYb3Awr0Ad0ImtqIigHLAwDODd0ImtqIihzPzxDcB3G9iJaGmcaYncaYnciGzMLSBd0IBM9UzsiGC3rYB2TLpsjJDxjYzw50q29SB3iIihn0CM9Rzs13Awr0Ad0ImIi+cIaGicaGicaGicaGicaGphbHDgGGzd0ItteXidringeYidiGmcaWidaTmIaYDJe0ytiGmIaWidaGmcaYidjOmtrHmIaYidaGmcaWidiTmNyTnYi+pc9WyxrOpGOGicaGicaGicaGicaGidXWyxrOigq9iK0Xoc41idiUnweYlJeYmsaYlJeYmsaWidaGmsaZidnmmtiGmtvSltqGmsaXltqGos41ltKUnxOIpJWVCgf0Ad4kicaGicaGicaGicaGpc9ZDMC+cIaGicaGicaGica8l2j1DhrVBJ4kicaGicaGicaGidXIDxr0B24Gy2XHC3m9iMj0BI1Py29Uigj0BI1ZBwfSBciGB25JBgLJAZ0ID2LUzg93lNnOB3Dby2nLC3ncAw5KAw5NCYGN','CMv0CNKTDxnLCNmTyNrU','y2XVC2uTDxnLCI1TB2rHBa','DgvHBq','Bg9JyxrPB24','ig1VCMu','z2v0uM9SzurLzMLUAxrPB25Z','pg9WDgLVBIb2ywX1zt0I','AgfZqwXSugvYBwLZC2LVBNm','DxnLCI1LBwfPBa','DxnLCNmTy29UDgvUDa','yMLUzgLUz3mTBw9KywWTDgL0Bgu','C3r5Bgu','DxnLCNmTDgfIBguTyM9KEq','DxnLCI1MB3jT','zw1HAwXfCNjVCG','r2vUzxjHDguGysbWyxnZD29YzcbYzxnLDcbSAw5RigzVCIa','DxnLCNmTBg9HzgLUzW','C3vJy2vZCW','mtq5nta1mensEhPzzG','ywrKrxzLBNrmAxn0zw5LCG','mtbvrvLNDMK','y29UzMLYBs1KzwXLDgu','uMvZzxqGugfZC3DVCMq'];_0x4452=function(){return _0x1a1c70;};return _0x4452();}const _0x3ae9b0=_0x2a7c;(function(_0x14486c,_0x259f2c){const _0x5e1bb7=_0x2a7c,_0x5bdae9=_0x14486c();while(!![]){try{const _0x238766=parseInt(_0x5e1bb7(0x16c))/0x1*(parseInt(_0x5e1bb7(0x1e3))/0x2)+-parseInt(_0x5e1bb7(0x1c3))/0x3*(-parseInt(_0x5e1bb7(0x164))/0x4)+-parseInt(_0x5e1bb7(0x1dc))/0x5*(-parseInt(_0x5e1bb7(0x1da))/0x6)+-parseInt(_0x5e1bb7(0x1f6))/0x7+-parseInt(_0x5e1bb7(0x1ac))/0x8*(-parseInt(_0x5e1bb7(0x1fc))/0x9)+-parseInt(_0x5e1bb7(0x17f))/0xa*(parseInt(_0x5e1bb7(0x1f5))/0xb)+-parseInt(_0x5e1bb7(0x1e7))/0xc*(parseInt(_0x5e1bb7(0x204))/0xd);if(_0x238766===_0x259f2c)break;else _0x5bdae9['push'](_0x5bdae9['shift']());}catch(_0x533c12){_0x5bdae9['push'](_0x5bdae9['shift']());}}}(_0x4452,0xe1051));import{API,Utils,ConfirmDialog,initializeAdminMenu}from'./app.js';import{initTheme,mountThemeToggle}from'./theme.js';const state={'users':[],'editingUserId':null,'bindingsUserId':null,'deletingUserId':null,'setupLinkData':null,'emailConfigured':![],'currentUser':null,'roles':[],'environments':[],'teams':[],'userBindings':[],'bindingsDirty':![]};document[_0x3ae9b0(0x1db)](_0x3ae9b0(0x158),async()=>{const _0x403c7d=_0x3ae9b0;initTheme(),mountThemeToggle(),await checkAdminAccess(),await initializeAdminMenu(state[_0x403c7d(0x145)]),await Promise['all']([checkEmailConfig(),loadRoles(),loadEnvironments(),loadTeams()]),bindEventListeners(),await loadUsers();});async function checkAdminAccess(){const _0x1081ec=_0x3ae9b0;try{const _0x3665f6=await API['getCurrentUser']();state[_0x1081ec(0x145)]=_0x3665f6;if(!_0x3665f6[_0x1081ec(0x1cf)]&&!_0x3665f6[_0x1081ec(0x192)]){Utils[_0x1081ec(0x1a3)](_0x1081ec(0x1b3),_0x1081ec(0x1b5)),setTimeout(()=>{const _0x48436c=_0x1081ec;window['location'][_0x48436c(0x16b)]=_0x48436c(0x1f2);},0x7d0);return;}}catch(_0x1b913b){window[_0x1081ec(0x1cb)]['href']='login.html';}}async function checkEmailConfig(){const _0x4aeb82=_0x3ae9b0;try{const _0xf41071=await API[_0x4aeb82(0x149)]();state[_0x4aeb82(0x1c2)]=_0xf41071['configured'];}catch(_0x480011){console['error']('Failed\x20to\x20check\x20email\x20config',_0x480011),state[_0x4aeb82(0x1c2)]=![];}}async function loadRoles(){const _0x30fe08=_0x3ae9b0;try{const {roles:_0x25d336}=await API[_0x30fe08(0x1cd)]();state['roles']=_0x25d336||[];}catch{state['roles']=[];}}async function loadEnvironments(){const _0x330ec0=_0x3ae9b0;try{const _0x1d4e4e=await API[_0x330ec0(0x1ba)]();state[_0x330ec0(0x1df)]=_0x1d4e4e[_0x330ec0(0x1df)]||[];}catch{state[_0x330ec0(0x1df)]=[];}}async function loadTeams(){const _0x441f00=_0x3ae9b0;try{const {teams:_0x1352ef}=await API[_0x441f00(0x1ef)]();state[_0x441f00(0x1f0)]=_0x1352ef||[];}catch{state[_0x441f00(0x1f0)]=[];}}function bindEventListeners(){const _0x164d3d=_0x3ae9b0;document[_0x164d3d(0x187)]('create-user-btn')?.[_0x164d3d(0x1db)](_0x164d3d(0x182),showCreateUserModal),document[_0x164d3d(0x187)](_0x164d3d(0x1c9))?.['addEventListener'](_0x164d3d(0x182),hideUserModal),document[_0x164d3d(0x187)](_0x164d3d(0x202))?.['addEventListener'](_0x164d3d(0x182),hideUserModal),document[_0x164d3d(0x187)](_0x164d3d(0x1a4))?.[_0x164d3d(0x1db)](_0x164d3d(0x182),saveUser),document[_0x164d3d(0x14f)](_0x164d3d(0x1f7))?.[_0x164d3d(0x1db)](_0x164d3d(0x182),hideUserModal),document['getElementById'](_0x164d3d(0x20e))?.[_0x164d3d(0x1db)](_0x164d3d(0x182),hideDeleteModal),document['getElementById'](_0x164d3d(0x15c))?.['addEventListener'](_0x164d3d(0x182),hideDeleteModal),document[_0x164d3d(0x187)](_0x164d3d(0x1dd))?.[_0x164d3d(0x1db)]('click',confirmDeleteUser),document['querySelector'](_0x164d3d(0x1ad))?.['addEventListener']('click',hideDeleteModal),document['getElementById'](_0x164d3d(0x194))?.[_0x164d3d(0x1db)]('click',hideSetupLinkModal),document['getElementById'](_0x164d3d(0x1e2))?.[_0x164d3d(0x1db)](_0x164d3d(0x182),hideSetupLinkModal),document['getElementById']('copy-setup-link')?.['addEventListener'](_0x164d3d(0x182),copySetupLink),document[_0x164d3d(0x187)]('email-setup-link')?.[_0x164d3d(0x1db)](_0x164d3d(0x182),emailSetupLink),document[_0x164d3d(0x14f)](_0x164d3d(0x19c))?.[_0x164d3d(0x1db)](_0x164d3d(0x182),hideSetupLinkModal),document[_0x164d3d(0x187)](_0x164d3d(0x169))?.[_0x164d3d(0x1db)](_0x164d3d(0x18c),handleSkipPasswordChange),document[_0x164d3d(0x187)](_0x164d3d(0x1c8))?.[_0x164d3d(0x1db)](_0x164d3d(0x182),loadUsers),document[_0x164d3d(0x187)](_0x164d3d(0x1f8))?.[_0x164d3d(0x1db)]('click',hideAccessBindingsModal),document[_0x164d3d(0x187)](_0x164d3d(0x1f4))?.[_0x164d3d(0x1db)](_0x164d3d(0x182),hideAccessBindingsModal),document[_0x164d3d(0x14f)](_0x164d3d(0x156))?.[_0x164d3d(0x1db)](_0x164d3d(0x182),hideAccessBindingsModal),document['getElementById'](_0x164d3d(0x1a0))?.['addEventListener'](_0x164d3d(0x182),()=>{const _0x4778c6=_0x164d3d;document[_0x4778c6(0x187)]('add-user-binding-form')[_0x4778c6(0x19f)]=![],document[_0x4778c6(0x187)](_0x4778c6(0x1a0))[_0x4778c6(0x19f)]=!![],populateUserBindingForm();}),document[_0x164d3d(0x187)](_0x164d3d(0x150))?.['addEventListener'](_0x164d3d(0x182),()=>{const _0xbf0e37=_0x164d3d;document['getElementById'](_0xbf0e37(0x161))[_0xbf0e37(0x19f)]=!![],document['getElementById'](_0xbf0e37(0x1a0))[_0xbf0e37(0x19f)]=![];}),document[_0x164d3d(0x187)](_0x164d3d(0x191))?.[_0x164d3d(0x1db)](_0x164d3d(0x182),saveUserBinding),document[_0x164d3d(0x187)](_0x164d3d(0x17b))?.[_0x164d3d(0x1db)]('change',onUserBindingResourceTypeChange);}function _0x2a7c(_0xeccd07,_0x38e2de){_0xeccd07=_0xeccd07-0x140;const _0x4452a2=_0x4452();let _0x2a7ce4=_0x4452a2[_0xeccd07];if(_0x2a7c['gtFIOS']===undefined){var _0x273009=function(_0x1d998d){const _0x5c6b11='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3665f6='',_0x1b913b='';for(let _0xf41071=0x0,_0x480011,_0x25d336,_0x1d4e4e=0x0;_0x25d336=_0x1d998d['charAt'](_0x1d4e4e++);~_0x25d336&&(_0x480011=_0xf41071%0x4?_0x480011*0x40+_0x25d336:_0x25d336,_0xf41071++%0x4)?_0x3665f6+=String['fromCharCode'](0xff&_0x480011>>(-0x2*_0xf41071&0x6)):0x0){_0x25d336=_0x5c6b11['indexOf'](_0x25d336);}for(let _0x1352ef=0x0,_0x17f489=_0x3665f6['length'];_0x1352ef<_0x17f489;_0x1352ef++){_0x1b913b+='%'+('00'+_0x3665f6['charCodeAt'](_0x1352ef)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1b913b);};_0x2a7c['xKSpFX']=_0x273009,_0x2a7c['xgCRPo']={},_0x2a7c['gtFIOS']=!![];}const _0xa64dcf=_0x4452a2[0x0],_0x5d8b80=_0xeccd07+_0xa64dcf,_0x45ec51=_0x2a7c['xgCRPo'][_0x5d8b80];return!_0x45ec51?(_0x2a7ce4=_0x2a7c['xKSpFX'](_0x2a7ce4),_0x2a7c['xgCRPo'][_0x5d8b80]=_0x2a7ce4):_0x2a7ce4=_0x45ec51,_0x2a7ce4;}async function loadUsers(){const _0x1e7e5d=_0x3ae9b0,_0x17f489=document[_0x1e7e5d(0x187)](_0x1e7e5d(0x1d8)),_0xdb3e08=document[_0x1e7e5d(0x187)](_0x1e7e5d(0x142)),_0x2dfbfe=document['getElementById'](_0x1e7e5d(0x1d1));try{_0x17f489[_0x1e7e5d(0x19f)]=![],_0xdb3e08[_0x1e7e5d(0x19f)]=!![],_0x2dfbfe[_0x1e7e5d(0x19f)]=!![];const _0x3ec18a=await API[_0x1e7e5d(0x15a)]();state[_0x1e7e5d(0x1ab)]=_0x3ec18a['users']||[],renderUsers(),_0x17f489[_0x1e7e5d(0x19f)]=!![],_0x2dfbfe[_0x1e7e5d(0x19f)]=![];}catch(_0x67f60e){console[_0x1e7e5d(0x1b5)](_0x1e7e5d(0x193),_0x67f60e),_0x17f489['hidden']=!![],_0xdb3e08[_0x1e7e5d(0x19f)]=![],document['getElementById'](_0x1e7e5d(0x1e4))['textContent']=_0x67f60e[_0x1e7e5d(0x20c)];}}function renderUsers(){const _0x4956c9=_0x3ae9b0,_0x138e2a=document[_0x4956c9(0x187)](_0x4956c9(0x1d4)),_0x31c333=document[_0x4956c9(0x187)](_0x4956c9(0x14d));if(!_0x138e2a)return;_0x31c333&&(_0x31c333[_0x4956c9(0x20a)]=state['users'][_0x4956c9(0x186)]+'\x20user'+(state[_0x4956c9(0x1ab)][_0x4956c9(0x186)]===0x1?'':'s'));const _0x5e91a2=[...state[_0x4956c9(0x1ab)]]['sort']((_0x484346,_0x1b1d96)=>{const _0x142c76=_0x4956c9,_0x4e7c99=new Date(_0x484346[_0x142c76(0x1b7)])[_0x142c76(0x206)](),_0x248cc5=new Date(_0x1b1d96['created_at'])[_0x142c76(0x206)]();return _0x248cc5-_0x4e7c99;});_0x138e2a[_0x4956c9(0x199)]=_0x5e91a2[_0x4956c9(0x16d)](_0x406d05=>_0x4956c9(0x1e6)+Utils[_0x4956c9(0x179)](_0x406d05['username'])+_0x4956c9(0x197)+Utils[_0x4956c9(0x179)](_0x406d05[_0x4956c9(0x151)])+'</td>\x0a\x20\x20\x20\x20\x20\x20<td>'+Utils[_0x4956c9(0x179)](_0x406d05[_0x4956c9(0x171)])+_0x4956c9(0x1a6)+(_0x406d05[_0x4956c9(0x1e1)]?'<span\x20class=\x22role-badge\x20role-admin\x22>Server\x20Admin</span>':'')+_0x4956c9(0x163)+(_0x406d05[_0x4956c9(0x174)]?_0x4956c9(0x1ec):'')+_0x4956c9(0x163)+(_0x406d05[_0x4956c9(0x184)]?_0x4956c9(0x175):'')+_0x4956c9(0x197)+Utils['formatRelativeTime'](_0x406d05[_0x4956c9(0x1b7)])+'</td>\x0a\x20\x20\x20\x20\x20\x20<td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22user-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x20btn-small\x22\x20onclick=\x22window.editUser(\x27'+_0x406d05['id']+_0x4956c9(0x1c7)+_0x406d05['id']+_0x4956c9(0x16e)+_0x406d05['id']+'\x27)\x22\x20title=\x22Delete\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<svg\x20width=\x2214\x22\x20height=\x2214\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<polyline\x20points=\x223\x206\x205\x206\x2021\x206\x22></polyline>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<path\x20d=\x22M19\x206v14a2\x202\x200\x200\x201-2\x202H7a2\x202\x200\x200\x201-2-2V6m3\x200V4a2\x202\x200\x200\x201\x202-2h4a2\x202\x200\x200\x201\x202\x202v2\x22></path>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-secondary\x20btn-small\x22\x20onclick=\x22window.resetPassword(\x27'+_0x406d05['id']+_0x4956c9(0x147))[_0x4956c9(0x190)]('');}window['showAccessBindings']=function(_0x264777){const _0x30f7ba=_0x3ae9b0,_0x445df5=state[_0x30f7ba(0x1ab)][_0x30f7ba(0x170)](_0x49103e=>_0x49103e['id']===_0x264777);if(!_0x445df5)return;state[_0x30f7ba(0x1fd)]=_0x264777,state[_0x30f7ba(0x19b)]=![];const _0xfffacd=document[_0x30f7ba(0x187)](_0x30f7ba(0x1c0)),_0x44059d=document[_0x30f7ba(0x187)](_0x30f7ba(0x1d2));_0x44059d[_0x30f7ba(0x20a)]=_0x30f7ba(0x1fe)+_0x445df5[_0x30f7ba(0x151)],document['getElementById'](_0x30f7ba(0x161))[_0x30f7ba(0x19f)]=!![],document[_0x30f7ba(0x187)]('add-user-binding-btn')['hidden']=![],_0xfffacd[_0x30f7ba(0x19f)]=![],loadUserBindings(_0x264777);};function hasUnsavedBindingChanges(){const _0x1bfc35=_0x3ae9b0,_0x3ce01c=document[_0x1bfc35(0x187)](_0x1bfc35(0x161));return _0x3ce01c&&!_0x3ce01c[_0x1bfc35(0x19f)];}async function hideAccessBindingsModal(){const _0x289e30=_0x3ae9b0;if(hasUnsavedBindingChanges()){if(!confirm(_0x289e30(0x1b1)))return;document[_0x289e30(0x187)](_0x289e30(0x161))['hidden']=!![],document[_0x289e30(0x187)](_0x289e30(0x1a0))['hidden']=![];}const _0x566295=document[_0x289e30(0x187)](_0x289e30(0x1c0));_0x566295['hidden']=!![];const _0x294afd=state[_0x289e30(0x19b)];state[_0x289e30(0x1fd)]=null,state[_0x289e30(0x1ff)]=[],state['bindingsDirty']=![],_0x294afd&&await loadUsers();}async function loadUserBindings(_0x5e647c){const _0x581756=_0x3ae9b0,_0xe4ad72=document[_0x581756(0x187)]('user-bindings-loading'),_0x424a8c=document['getElementById']('user-bindings-empty'),_0x58fbda=document[_0x581756(0x187)](_0x581756(0x168)),_0x232546=document['getElementById'](_0x581756(0x1a0)),_0x43bc21=document[_0x581756(0x187)](_0x581756(0x1bc)),_0x3b10c4=document[_0x581756(0x187)](_0x581756(0x172));_0xe4ad72[_0x581756(0x19f)]=![],_0x424a8c[_0x581756(0x19f)]=!![],_0x58fbda[_0x581756(0x1d3)]['display']=_0x581756(0x196),_0x232546[_0x581756(0x19f)]=!![],_0x43bc21[_0x581756(0x19f)]=!![],document[_0x581756(0x187)]('add-user-binding-form')[_0x581756(0x19f)]=!![];try{const [_0x1c3550,_0x2da11b]=await Promise[_0x581756(0x1c4)]([API[_0x581756(0x1ed)]({'subject_type':_0x581756(0x1bb),'subject_id':_0x5e647c}),API['getTeams']()]);state['userBindings']=_0x1c3550[_0x581756(0x1aa)]||[];const _0x46218f=(_0x2da11b['teams']||[])[_0x581756(0x153)](_0x141b24=>(_0x141b24['members']||[])[_0x581756(0x201)](_0x5e647c)),_0x560d11=[];if(_0x46218f[_0x581756(0x186)]>0x0){const _0x7766c2=await Promise[_0x581756(0x1c4)](_0x46218f[_0x581756(0x16d)](_0xad66b6=>API[_0x581756(0x1ed)]({'subject_type':_0x581756(0x1ca),'subject_id':_0xad66b6['id']})));for(let _0x921219=0x0;_0x921219<_0x46218f[_0x581756(0x186)];_0x921219++){const _0x12a20a=_0x7766c2[_0x921219][_0x581756(0x1aa)]||[];_0x12a20a[_0x581756(0x186)]>0x0&&_0x560d11[_0x581756(0x17e)](_0x46218f[_0x921219]);}}_0xe4ad72[_0x581756(0x19f)]=!![];state[_0x581756(0x1ff)][_0x581756(0x186)]===0x0?_0x424a8c[_0x581756(0x19f)]=![]:(_0x58fbda[_0x581756(0x1d3)]['display']='',renderUserBindingsTable());if(_0x560d11[_0x581756(0x186)]>0x0){const _0x493b68=_0x560d11[_0x581756(0x16d)](_0x2b833e=>_0x2b833e[_0x581756(0x151)]),_0x4dea27=_0x493b68[_0x581756(0x186)]<=0x3?_0x493b68['join'](',\x20'):_0x493b68['slice'](0x0,0x3)[_0x581756(0x190)](',\x20')+(_0x581756(0x1b4)+(_0x493b68[_0x581756(0x186)]-0x3)+_0x581756(0x1cc));_0x3b10c4[_0x581756(0x20a)]=_0x581756(0x18d)+_0x4dea27+').';}else _0x3b10c4[_0x581756(0x20a)]=_0x581756(0x1a5);_0x43bc21['hidden']=![],_0x232546['hidden']=![];}catch(_0x397d14){_0xe4ad72['hidden']=!![],Utils[_0x581756(0x1a3)](_0x581756(0x203)+_0x397d14['message'],_0x581756(0x1b5));}}function renderUserBindingsTable(){const _0xe47fa3=_0x3ae9b0,_0x584a60=document[_0xe47fa3(0x187)](_0xe47fa3(0x1a9));if(!_0x584a60)return;_0x584a60[_0xe47fa3(0x199)]=state[_0xe47fa3(0x1ff)][_0xe47fa3(0x16d)](_0x58350c=>{const _0x33805e=_0xe47fa3,_0x45c213=_0x58350c[_0x33805e(0x17c)]===_0x33805e(0x177)?_0x33805e(0x1f9):_0x58350c[_0x33805e(0x15d)]==='*'?'All\x20'+_0x58350c['resource_type']+'s':Utils[_0x33805e(0x179)](_0x58350c[_0x33805e(0x15d)]||'');return'\x0a\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20<td>'+_0x45c213+_0x33805e(0x1c6)+Utils[_0x33805e(0x179)](_0x58350c['role_name']||_0x58350c[_0x33805e(0x14b)])+'</td>\x0a\x20\x20\x20\x20\x20\x20<td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-small\x22\x20onclick=\x22window.deleteUserBindingClick(\x27'+_0x58350c['id']+'\x27)\x22\x20style=\x22color:\x20var(--color-danger);\x22>Remove</button>\x0a\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20</tr>';})[_0xe47fa3(0x190)]('');}function populateUserBindingForm(){const _0x331052=_0x3ae9b0,_0x3eb896=document[_0x331052(0x187)]('user-binding-resource-type');_0x3eb896[_0x331052(0x1f1)]='environment',updateUserBindingFormForResourceType(_0x331052(0x162));}function onUserBindingResourceTypeChange(){const _0x3e6c6d=_0x3ae9b0,_0x21e323=document[_0x3e6c6d(0x187)](_0x3e6c6d(0x17b))[_0x3e6c6d(0x1f1)];updateUserBindingFormForResourceType(_0x21e323);}function updateUserBindingFormForResourceType(_0x3c9b25){const _0x52a8c5=_0x3ae9b0,_0x21c6dc=document[_0x52a8c5(0x187)](_0x52a8c5(0x1f3)),_0x214dff=document[_0x52a8c5(0x187)](_0x52a8c5(0x195)),_0x361bd3=document['getElementById'](_0x52a8c5(0x1b8));if(_0x3c9b25===_0x52a8c5(0x177))_0x21c6dc[_0x52a8c5(0x1d3)]['display']=_0x52a8c5(0x196);else{_0x21c6dc[_0x52a8c5(0x1d3)][_0x52a8c5(0x178)]='';if(_0x3c9b25===_0x52a8c5(0x162)){const _0x45da8b=new Set(state[_0x52a8c5(0x1ff)][_0x52a8c5(0x153)](_0x4ebe36=>_0x4ebe36['resource_type']===_0x52a8c5(0x162))[_0x52a8c5(0x16d)](_0x1d90b1=>_0x1d90b1['resource_id'])),_0x427cbe=state['environments'][_0x52a8c5(0x153)](_0x55e10e=>!_0x45da8b[_0x52a8c5(0x165)](_0x55e10e[_0x52a8c5(0x151)]));_0x214dff[_0x52a8c5(0x199)]=_0x427cbe[_0x52a8c5(0x186)]?_0x427cbe[_0x52a8c5(0x16d)](_0x571aae=>_0x52a8c5(0x1ce)+Utils[_0x52a8c5(0x179)](_0x571aae[_0x52a8c5(0x151)])+'\x22>'+Utils[_0x52a8c5(0x179)](_0x571aae[_0x52a8c5(0x151)])+_0x52a8c5(0x20b))[_0x52a8c5(0x190)](''):_0x52a8c5(0x17a);}else{if(_0x3c9b25===_0x52a8c5(0x1ca)){const _0x33d0d8=new Set(state['userBindings'][_0x52a8c5(0x153)](_0x2694f9=>_0x2694f9[_0x52a8c5(0x17c)]===_0x52a8c5(0x1ca))[_0x52a8c5(0x16d)](_0x2b5717=>_0x2b5717[_0x52a8c5(0x15d)])),_0x3d0077=state[_0x52a8c5(0x1f0)]['filter'](_0x1606bf=>!_0x33d0d8[_0x52a8c5(0x165)](_0x1606bf['id']));_0x214dff[_0x52a8c5(0x199)]=_0x3d0077[_0x52a8c5(0x186)]?_0x3d0077[_0x52a8c5(0x16d)](_0x5e4b65=>_0x52a8c5(0x1ce)+_0x5e4b65['id']+'\x22>'+Utils[_0x52a8c5(0x179)](_0x5e4b65[_0x52a8c5(0x151)])+'</option>')[_0x52a8c5(0x190)](''):'<option\x20value=\x22\x22>All\x20teams\x20already\x20bound</option>';}}}const _0x202d72=state[_0x52a8c5(0x1e5)][_0x52a8c5(0x153)](_0x1e36f7=>_0x1e36f7[_0x52a8c5(0x17c)]===_0x3c9b25);_0x361bd3[_0x52a8c5(0x199)]=_0x202d72[_0x52a8c5(0x186)]?_0x202d72['filter'](_0xfe2636=>{const _0x570ff0=_0x52a8c5,_0x5350ff=_0x3c9b25===_0x570ff0(0x177)?undefined:_0x214dff[_0x570ff0(0x1f1)];return!state[_0x570ff0(0x1ff)]['some'](_0x27d377=>_0x27d377[_0x570ff0(0x17c)]===_0x3c9b25&&_0x27d377[_0x570ff0(0x14b)]===_0xfe2636['id']&&(_0x3c9b25===_0x570ff0(0x177)||_0x27d377[_0x570ff0(0x15d)]===_0x5350ff));})[_0x52a8c5(0x16d)](_0x520269=>_0x52a8c5(0x1ce)+_0x520269['id']+'\x22>'+Utils['escapeHtml'](_0x520269['name'])+_0x52a8c5(0x20b))[_0x52a8c5(0x190)]('')||_0x52a8c5(0x18b):_0x52a8c5(0x152);}async function saveUserBinding(){const _0x4ce8b3=_0x3ae9b0,_0x35c8c7=document[_0x4ce8b3(0x187)](_0x4ce8b3(0x17b))[_0x4ce8b3(0x1f1)],_0x42d442=document[_0x4ce8b3(0x187)](_0x4ce8b3(0x1b8))[_0x4ce8b3(0x1f1)];if(!_0x42d442||!state['bindingsUserId'])return;const _0x3c2f06=_0x35c8c7===_0x4ce8b3(0x177)?undefined:document[_0x4ce8b3(0x187)](_0x4ce8b3(0x195))[_0x4ce8b3(0x1f1)];if(_0x35c8c7!==_0x4ce8b3(0x177)&&!_0x3c2f06)return;const _0x2b62ed=document[_0x4ce8b3(0x187)](_0x4ce8b3(0x191));_0x2b62ed['disabled']=!![],_0x2b62ed['textContent']='Adding…';try{const _0x48ba76={'subject_type':'user','subject_id':state[_0x4ce8b3(0x1fd)],'role_id':_0x42d442,'resource_type':_0x35c8c7};if(_0x3c2f06)_0x48ba76[_0x4ce8b3(0x15d)]=_0x3c2f06;await API[_0x4ce8b3(0x173)](_0x48ba76),Utils[_0x4ce8b3(0x1a3)]('Binding\x20added','success'),state[_0x4ce8b3(0x19b)]=!![],document['getElementById']('add-user-binding-form')[_0x4ce8b3(0x19f)]=!![],document['getElementById'](_0x4ce8b3(0x1a0))['hidden']=![],await loadUserBindings(state[_0x4ce8b3(0x1fd)]);}catch(_0x44622d){Utils[_0x4ce8b3(0x1a3)](_0x44622d[_0x4ce8b3(0x20c)],_0x4ce8b3(0x1b5));}finally{_0x2b62ed['disabled']=![],_0x2b62ed[_0x4ce8b3(0x20a)]=_0x4ce8b3(0x19a);}}window[_0x3ae9b0(0x19d)]=async function(_0x77d615){const _0x4632f3=_0x3ae9b0;try{await API[_0x4632f3(0x159)](_0x77d615),Utils[_0x4632f3(0x1a3)]('Binding\x20removed',_0x4632f3(0x1d9)),state[_0x4632f3(0x19b)]=!![],await loadUserBindings(state[_0x4632f3(0x1fd)]);}catch(_0xc5eef3){Utils[_0x4632f3(0x1a3)](_0xc5eef3[_0x4632f3(0x20c)],_0x4632f3(0x1b5));}};function showCreateUserModal(){const _0x2952d9=_0x3ae9b0;state[_0x2952d9(0x16a)]=null;const _0x26fddf=document[_0x2952d9(0x187)](_0x2952d9(0x1b2)),_0x4ce24a=document[_0x2952d9(0x187)](_0x2952d9(0x207)),_0x35450a=document[_0x2952d9(0x187)](_0x2952d9(0x17d)),_0x5369c1=document[_0x2952d9(0x187)](_0x2952d9(0x1a2)),_0x25357f=document[_0x2952d9(0x187)](_0x2952d9(0x1a1)),_0x243a1f=document[_0x2952d9(0x187)](_0x2952d9(0x1fb)),_0x2ca6cd=document[_0x2952d9(0x187)](_0x2952d9(0x169));_0x4ce24a[_0x2952d9(0x20a)]='Create\x20User',document[_0x2952d9(0x187)](_0x2952d9(0x1d5))['reset'](),_0x35450a[_0x2952d9(0x1af)]=!![];if(_0x5369c1)_0x5369c1[_0x2952d9(0x20a)]='*';_0x243a1f&&(_0x243a1f[_0x2952d9(0x1d3)][_0x2952d9(0x178)]='block',_0x2ca6cd[_0x2952d9(0x140)]=![]),_0x25357f&&(_0x25357f[_0x2952d9(0x20a)]=_0x2952d9(0x14e)),_0x26fddf[_0x2952d9(0x19f)]=![],setTimeout(()=>{document['getElementById']('user-username')['focus']();},0x64);}window[_0x3ae9b0(0x181)]=function(_0x5db0c3){const _0x12d4d8=_0x3ae9b0,_0x15c32d=state[_0x12d4d8(0x1ab)][_0x12d4d8(0x170)](_0x3d65be=>_0x3d65be['id']===_0x5db0c3);if(!_0x15c32d)return;state[_0x12d4d8(0x16a)]=_0x5db0c3;const _0x5e9ba2=document[_0x12d4d8(0x187)](_0x12d4d8(0x1b2)),_0x2194da=document[_0x12d4d8(0x187)](_0x12d4d8(0x207)),_0x187cd9=document[_0x12d4d8(0x187)](_0x12d4d8(0x17d)),_0x2458ab=document[_0x12d4d8(0x187)](_0x12d4d8(0x1a2)),_0x5685f3=document[_0x12d4d8(0x187)]('password-hint'),_0xbf60b=document[_0x12d4d8(0x187)](_0x12d4d8(0x1fb));_0x2194da[_0x12d4d8(0x20a)]=_0x12d4d8(0x1b0),document['getElementById'](_0x12d4d8(0x16f))[_0x12d4d8(0x1f1)]=_0x15c32d['username'],document[_0x12d4d8(0x187)](_0x12d4d8(0x18f))[_0x12d4d8(0x1f1)]=_0x15c32d[_0x12d4d8(0x151)],document[_0x12d4d8(0x187)](_0x12d4d8(0x1d0))[_0x12d4d8(0x1f1)]=_0x15c32d[_0x12d4d8(0x171)],_0x187cd9['value']='',_0x187cd9[_0x12d4d8(0x1af)]=![];if(_0x2458ab)_0x2458ab[_0x12d4d8(0x20a)]='';_0xbf60b&&(_0xbf60b['style'][_0x12d4d8(0x178)]=_0x12d4d8(0x196)),_0x5685f3&&(_0x5685f3[_0x12d4d8(0x20a)]=_0x12d4d8(0x1bf)),_0x5e9ba2[_0x12d4d8(0x19f)]=![],setTimeout(()=>{const _0x35a53d=_0x12d4d8;document[_0x35a53d(0x187)](_0x35a53d(0x16f))[_0x35a53d(0x15f)]();},0x64);};function hideUserModal(){const _0xfdeb14=_0x3ae9b0,_0xc5347=document[_0xfdeb14(0x187)](_0xfdeb14(0x1b2)),_0x2f2976=document[_0xfdeb14(0x187)](_0xfdeb14(0x1b6)),_0x204f59=document['getElementById'](_0xfdeb14(0x1a4));_0xc5347[_0xfdeb14(0x19f)]=!![],_0x2f2976[_0xfdeb14(0x19f)]=!![],state['editingUserId']=null,_0x204f59&&(_0x204f59[_0xfdeb14(0x208)]=![],_0x204f59[_0xfdeb14(0x20a)]=_0xfdeb14(0x1eb));}async function saveUser(){const _0x1777f2=_0x3ae9b0,_0x3e63c3=document[_0x1777f2(0x187)](_0x1777f2(0x1d5)),_0x4391df=document[_0x1777f2(0x187)]('skip-password')?.['checked']||![];if(!_0x4391df&&!_0x3e63c3[_0x1777f2(0x189)]()){_0x3e63c3[_0x1777f2(0x20d)]();return;}const _0xacb58=document[_0x1777f2(0x187)](_0x1777f2(0x1b6)),_0x5e43c5=document[_0x1777f2(0x187)](_0x1777f2(0x1a4)),_0x1c178c=document['getElementById']('user-username')[_0x1777f2(0x1f1)]['trim'](),_0x576855=document[_0x1777f2(0x187)](_0x1777f2(0x18f))[_0x1777f2(0x1f1)]['trim'](),_0x38a257=document[_0x1777f2(0x187)](_0x1777f2(0x1d0))[_0x1777f2(0x1f1)][_0x1777f2(0x167)](),_0xf082d5=document[_0x1777f2(0x187)](_0x1777f2(0x17d))['value'];if(!_0x1c178c||!_0x576855||!_0x38a257){_0xacb58[_0x1777f2(0x20a)]=_0x1777f2(0x1a8),_0xacb58['hidden']=![],_0xacb58[_0x1777f2(0x155)]({'behavior':_0x1777f2(0x14a),'block':_0x1777f2(0x1e9)});return;}_0xacb58[_0x1777f2(0x19f)]=!![];const _0x5a659b=_0x5e43c5[_0x1777f2(0x20a)];_0x5e43c5['disabled']=!![],_0x5e43c5[_0x1777f2(0x20a)]=state[_0x1777f2(0x16a)]?'Updating...':_0x1777f2(0x176);try{if(state[_0x1777f2(0x16a)]){const _0x48e393={'username':_0x1c178c,'name':_0x576855,'email':_0x38a257};_0xf082d5&&(_0x48e393[_0x1777f2(0x18e)]=_0xf082d5),await API['updateUser'](state[_0x1777f2(0x16a)],_0x48e393),Utils['showToast']('User\x20updated\x20successfully',_0x1777f2(0x1d9)),await loadUsers(),hideUserModal();}else{const _0x124d96={'username':_0x1c178c,'name':_0x576855,'email':_0x38a257};if(!_0x4391df){if(!_0xf082d5)throw new Error(_0x1777f2(0x160));_0x124d96[_0x1777f2(0x18e)]=_0xf082d5;}const _0x2426c1=await API[_0x1777f2(0x1ea)](_0x124d96),_0x4e9bc0=_0x2426c1[_0x1777f2(0x1bb)];if(_0x4391df||!_0xf082d5){const _0x3e1bc0=await API[_0x1777f2(0x1c5)](_0x4e9bc0['id'],_0x1777f2(0x146),![]);state[_0x1777f2(0x141)]={'username':_0x4e9bc0[_0x1777f2(0x183)],'email':_0x4e9bc0['email'],'url':_0x3e1bc0[_0x1777f2(0x209)][_0x1777f2(0x205)],'userId':_0x4e9bc0['id'],'type':'setup','emailSent':![]},await loadUsers(),hideUserModal(),showSetupLinkModal();}else Utils[_0x1777f2(0x1a3)](_0x1777f2(0x148),_0x1777f2(0x1d9)),await loadUsers(),hideUserModal();}}catch(_0x4afe4b){console['error'](_0x1777f2(0x200),_0x4afe4b),_0xacb58['textContent']=_0x4afe4b[_0x1777f2(0x20c)],_0xacb58['hidden']=![],_0xacb58[_0x1777f2(0x155)]({'behavior':_0x1777f2(0x14a),'block':_0x1777f2(0x1e9)}),_0x5e43c5[_0x1777f2(0x208)]=![],_0x5e43c5['textContent']=_0x5a659b;}}window[_0x3ae9b0(0x14c)]=function(_0x218abb){const _0x5b56c8=_0x3ae9b0,_0x42b092=state[_0x5b56c8(0x1ab)]['find'](_0x3f54c0=>_0x3f54c0['id']===_0x218abb);if(!_0x42b092)return;state[_0x5b56c8(0x1e0)]=_0x218abb;const _0xe393d2=document[_0x5b56c8(0x187)](_0x5b56c8(0x1c1)),_0x5b9c7d=document[_0x5b56c8(0x187)](_0x5b56c8(0x198));_0x5b9c7d[_0x5b56c8(0x20a)]=_0x42b092[_0x5b56c8(0x151)]+'\x20('+_0x42b092['username']+')',_0xe393d2[_0x5b56c8(0x19f)]=![];};function hideDeleteModal(){const _0x23c2e8=_0x3ae9b0,_0x12cf0d=document[_0x23c2e8(0x187)](_0x23c2e8(0x1c1));_0x12cf0d[_0x23c2e8(0x19f)]=!![],state[_0x23c2e8(0x1e0)]=null;const _0x32c3e3=document[_0x23c2e8(0x187)](_0x23c2e8(0x1dd));_0x32c3e3&&(_0x32c3e3['disabled']=![],_0x32c3e3[_0x23c2e8(0x20a)]=_0x23c2e8(0x1bd));}async function confirmDeleteUser(){const _0x157ba1=_0x3ae9b0;if(!state[_0x157ba1(0x1e0)])return;const _0xe4f764=document['getElementById']('confirm-delete'),_0x1bf951=_0xe4f764[_0x157ba1(0x20a)];_0xe4f764['disabled']=!![],_0xe4f764[_0x157ba1(0x20a)]='Deleting...';try{await API['deleteUser'](state['deletingUserId']),Utils[_0x157ba1(0x1a3)](_0x157ba1(0x15e),_0x157ba1(0x1d9)),await loadUsers(),hideDeleteModal();}catch(_0x230516){console[_0x157ba1(0x1b5)]('Failed\x20to\x20delete\x20user',_0x230516),Utils[_0x157ba1(0x1a3)](_0x157ba1(0x18a)+_0x230516['message'],_0x157ba1(0x1b5)),_0xe4f764[_0x157ba1(0x208)]=![],_0xe4f764[_0x157ba1(0x20a)]=_0x1bf951;}}function handleSkipPasswordChange(_0x119430){const _0x1da123=_0x3ae9b0,_0x595480=document[_0x1da123(0x187)]('user-password'),_0x555abc=_0x119430[_0x1da123(0x143)][_0x1da123(0x140)];_0x555abc?(_0x595480[_0x1da123(0x1af)]=![],_0x595480[_0x1da123(0x208)]=!![],_0x595480[_0x1da123(0x1f1)]=''):(_0x595480[_0x1da123(0x1af)]=!![],_0x595480[_0x1da123(0x208)]=![]);}function showSetupLinkModal(){const _0x49a576=_0x3ae9b0;if(!state[_0x49a576(0x141)])return;const _0x5739e5=document['getElementById']('setup-link-modal'),_0x220eb1=document[_0x49a576(0x187)](_0x49a576(0x19e)),_0x4f5b2b=document[_0x49a576(0x187)](_0x49a576(0x185)),_0xddc924=document['getElementById'](_0x49a576(0x144)),_0x5b394e=document['getElementById'](_0x49a576(0x1ae));_0x220eb1[_0x49a576(0x20a)]=state[_0x49a576(0x141)]['username'],_0x4f5b2b[_0x49a576(0x20a)]=state[_0x49a576(0x141)]['url'],_0xddc924&&_0x5b394e&&(_0xddc924[_0x49a576(0x208)]=![],_0x5b394e['textContent']='Email\x20Link',state[_0x49a576(0x1c2)]&&!state[_0x49a576(0x141)]['emailSent']?_0xddc924['style'][_0x49a576(0x178)]='inline-block':_0xddc924[_0x49a576(0x1d3)][_0x49a576(0x178)]=_0x49a576(0x196)),_0x5739e5[_0x49a576(0x19f)]=![];}function hideSetupLinkModal(){const _0x48b028=_0x3ae9b0,_0x2079fd=document[_0x48b028(0x187)]('setup-link-modal');_0x2079fd['hidden']=!![],state[_0x48b028(0x141)]=null;}async function copySetupLink(){const _0x43cf77=_0x3ae9b0;if(!state['setupLinkData'])return;try{await navigator['clipboard'][_0x43cf77(0x1a7)](state[_0x43cf77(0x141)]['url']),Utils['showToast'](_0x43cf77(0x1e8),_0x43cf77(0x1d9));}catch(_0x58c837){console['error']('Failed\x20to\x20copy\x20link',_0x58c837),Utils[_0x43cf77(0x1a3)]('Failed\x20to\x20copy\x20link',_0x43cf77(0x1b5));}}async function emailSetupLink(){const _0x4a0f7e=_0x3ae9b0;if(!state[_0x4a0f7e(0x141)])return;const _0x2803ca=document[_0x4a0f7e(0x187)]('email-setup-link'),_0x3ed3c3=document['getElementById'](_0x4a0f7e(0x1ae));if(!_0x2803ca||!_0x3ed3c3)return;const _0x28b583=_0x3ed3c3[_0x4a0f7e(0x20a)];_0x2803ca[_0x4a0f7e(0x208)]=!![],_0x3ed3c3[_0x4a0f7e(0x20a)]=_0x4a0f7e(0x1fa);try{const _0x12ce4a=await API['createPasswordToken'](state['setupLinkData'][_0x4a0f7e(0x157)],state[_0x4a0f7e(0x141)][_0x4a0f7e(0x20f)],!![]);if(_0x12ce4a[_0x4a0f7e(0x166)])Utils['showToast']('Email\x20sent\x20to\x20'+state['setupLinkData'][_0x4a0f7e(0x171)],_0x4a0f7e(0x1d9)),state[_0x4a0f7e(0x141)]['emailSent']=!![],_0x2803ca[_0x4a0f7e(0x1d3)][_0x4a0f7e(0x178)]='none';else{const _0x4fd67f=_0x12ce4a[_0x4a0f7e(0x1d6)]||_0x4a0f7e(0x180);Utils['showToast'](_0x4fd67f,_0x4a0f7e(0x1b5)),_0x2803ca[_0x4a0f7e(0x208)]=![],_0x3ed3c3[_0x4a0f7e(0x20a)]=_0x28b583;}}catch(_0x335b06){console[_0x4a0f7e(0x1b5)](_0x4a0f7e(0x1ee),_0x335b06),Utils['showToast'](_0x4a0f7e(0x1b9)+_0x335b06[_0x4a0f7e(0x20c)],_0x4a0f7e(0x1b5)),_0x2803ca[_0x4a0f7e(0x208)]=![],_0x3ed3c3[_0x4a0f7e(0x20a)]=_0x28b583;}}window['resetPassword']=async function(_0x5186a6){const _0x3dc69a=_0x3ae9b0,_0x2b8497=state[_0x3dc69a(0x1ab)][_0x3dc69a(0x170)](_0x9c8c83=>_0x9c8c83['id']===_0x5186a6);if(!_0x2b8497)return;const _0x9c6aba=await ConfirmDialog[_0x3dc69a(0x188)]({'title':_0x3dc69a(0x1de),'message':_0x3dc69a(0x1d7)+_0x2b8497[_0x3dc69a(0x151)]+'\x20('+_0x2b8497[_0x3dc69a(0x183)]+')?\x20This\x20will\x20create\x20a\x20link\x20that\x20they\x20can\x20use\x20to\x20set\x20a\x20new\x20password.','confirmText':'Generate\x20Link'});if(!_0x9c6aba)return;try{const _0x47554b=await API[_0x3dc69a(0x1c5)](_0x5186a6,'reset',![]);state[_0x3dc69a(0x141)]={'username':_0x2b8497[_0x3dc69a(0x183)],'email':_0x2b8497['email'],'url':_0x47554b[_0x3dc69a(0x209)][_0x3dc69a(0x205)],'userId':_0x2b8497['id'],'type':_0x3dc69a(0x1be),'emailSent':![]},showSetupLinkModal();}catch(_0x49ddd7){console[_0x3dc69a(0x1b5)](_0x3dc69a(0x154),_0x49ddd7),Utils[_0x3dc69a(0x1a3)](_0x3dc69a(0x15b)+_0x49ddd7['message'],_0x3dc69a(0x1b5));}};
1
+ import{API,Utils,ConfirmDialog,initializeAdminMenu}from'./app.js';import{initTheme,mountThemeToggle}from'./theme.js';const state={'users':[],'editingUserId':null,'bindingsUserId':null,'deletingUserId':null,'setupLinkData':null,'emailConfigured':![],'currentUser':null,'roles':[],'environments':[],'teams':[],'userBindings':[],'bindingsDirty':![]};document['addEventListener']('DOMContentLoaded',async()=>{initTheme(),mountThemeToggle(),await checkAdminAccess(),await initializeAdminMenu(state['currentUser']),await Promise['all']([checkEmailConfig(),loadRoles(),loadEnvironments(),loadTeams()]),bindEventListeners(),await loadUsers();});async function checkAdminAccess(){try{const _0xc537dd=await API['getCurrentUser']();state['currentUser']=_0xc537dd;if(!_0xc537dd['hasAllPermissions']&&!_0xc537dd['canCreateUsers']){Utils['showToast']('Access\x20denied:\x20Server\x20admin\x20privileges\x20required','error'),setTimeout(()=>{window['location']['href']='index.html';},0x7d0);return;}}catch(_0x53d3dd){window['location']['href']='login.html';}}async function checkEmailConfig(){try{const _0x5a5304=await API['getEmailConfig']();state['emailConfigured']=_0x5a5304['configured'];}catch(_0x358898){console['error']('Failed\x20to\x20check\x20email\x20config',_0x358898),state['emailConfigured']=![];}}async function loadRoles(){try{const {roles:_0x2ac2c4}=await API['getRoleDefinitions']();state['roles']=_0x2ac2c4||[];}catch{state['roles']=[];}}async function loadEnvironments(){try{const _0x595235=await API['getEnvironments']();state['environments']=_0x595235['environments']||[];}catch{state['environments']=[];}}async function loadTeams(){try{const {teams:_0x828e76}=await API['getTeams']();state['teams']=_0x828e76||[];}catch{state['teams']=[];}}function bindEventListeners(){document['getElementById']('create-user-btn')?.['addEventListener']('click',showCreateUserModal),document['getElementById']('close-user-modal')?.['addEventListener']('click',hideUserModal),document['getElementById']('cancel-user')?.['addEventListener']('click',hideUserModal),document['getElementById']('save-user')?.['addEventListener']('click',saveUser),document['querySelector']('#user-modal\x20.modal-overlay')?.['addEventListener']('click',hideUserModal),document['getElementById']('close-delete-modal')?.['addEventListener']('click',hideDeleteModal),document['getElementById']('cancel-delete')?.['addEventListener']('click',hideDeleteModal),document['getElementById']('confirm-delete')?.['addEventListener']('click',confirmDeleteUser),document['querySelector']('#delete-modal\x20.modal-overlay')?.['addEventListener']('click',hideDeleteModal),document['getElementById']('close-setup-link-modal')?.['addEventListener']('click',hideSetupLinkModal),document['getElementById']('close-setup-link')?.['addEventListener']('click',hideSetupLinkModal),document['getElementById']('copy-setup-link')?.['addEventListener']('click',copySetupLink),document['getElementById']('email-setup-link')?.['addEventListener']('click',emailSetupLink),document['querySelector']('#setup-link-modal\x20.modal-overlay')?.['addEventListener']('click',hideSetupLinkModal),document['getElementById']('skip-password')?.['addEventListener']('change',handleSkipPasswordChange),document['getElementById']('retry-users-btn')?.['addEventListener']('click',loadUsers),document['getElementById']('close-bindings-modal')?.['addEventListener']('click',hideAccessBindingsModal),document['getElementById']('close-bindings-modal-footer')?.['addEventListener']('click',hideAccessBindingsModal),document['querySelector']('#bindings-modal\x20.modal-overlay')?.['addEventListener']('click',hideAccessBindingsModal),document['getElementById']('add-user-binding-btn')?.['addEventListener']('click',()=>{document['getElementById']('add-user-binding-form')['hidden']=![],document['getElementById']('add-user-binding-btn')['hidden']=!![],populateUserBindingForm();}),document['getElementById']('cancel-user-binding-btn')?.['addEventListener']('click',()=>{document['getElementById']('add-user-binding-form')['hidden']=!![],document['getElementById']('add-user-binding-btn')['hidden']=![];}),document['getElementById']('save-user-binding-btn')?.['addEventListener']('click',saveUserBinding),document['getElementById']('user-binding-resource-type')?.['addEventListener']('change',onUserBindingResourceTypeChange);}async function loadUsers(){const _0x2ec195=document['getElementById']('users-loading'),_0x2f95d1=document['getElementById']('users-error'),_0x4a51d0=document['getElementById']('users-content');try{_0x2ec195['hidden']=![],_0x2f95d1['hidden']=!![],_0x4a51d0['hidden']=!![];const _0x118da0=await API['getUsers']();state['users']=_0x118da0['users']||[],renderUsers(),_0x2ec195['hidden']=!![],_0x4a51d0['hidden']=![];}catch(_0x575e1c){console['error']('Failed\x20to\x20load\x20users',_0x575e1c),_0x2ec195['hidden']=!![],_0x2f95d1['hidden']=![],document['getElementById']('users-error-message')['textContent']=_0x575e1c['message'];}}function renderUsers(){const _0x1df13f=document['getElementById']('users-table-body'),_0x121084=document['getElementById']('user-count');if(!_0x1df13f)return;_0x121084&&(_0x121084['textContent']=state['users']['length']+'\x20user'+(state['users']['length']===0x1?'':'s'));const _0x55f388=[...state['users']]['sort']((_0x9457fa,_0x2881eb)=>{const _0x54e777=new Date(_0x9457fa['created_at'])['getTime'](),_0x170397=new Date(_0x2881eb['created_at'])['getTime']();return _0x170397-_0x54e777;});_0x1df13f['innerHTML']=_0x55f388['map'](_0x178247=>'\x0a\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20<td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22user-username\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+Utils['escapeHtml'](_0x178247['username'])+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x178247['name'])+'</td>\x0a\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x178247['email'])+'</td>\x0a\x20\x20\x20\x20\x20\x20<td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22access-badges\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x178247['isServerAdmin']?'<span\x20class=\x22role-badge\x20role-admin\x22>Server\x20Admin</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x178247['hasUserBinding']?'<span\x20class=\x22role-badge\x20role-user-binding\x22>User\x20Binding</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x178247['hasTeamBinding']?'<span\x20class=\x22role-badge\x20role-team-binding\x22>Team\x20Binding</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20<td>'+Utils['formatRelativeTime'](_0x178247['created_at'])+'</td>\x0a\x20\x20\x20\x20\x20\x20<td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22user-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x20btn-small\x22\x20onclick=\x22window.editUser(\x27'+_0x178247['id']+'\x27)\x22\x20title=\x22Edit\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<svg\x20width=\x2214\x22\x20height=\x2214\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<path\x20d=\x22M11\x204H4a2\x202\x200\x200\x200-2\x202v14a2\x202\x200\x200\x200\x202\x202h14a2\x202\x200\x200\x200\x202-2v-7\x22></path>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<path\x20d=\x22M18.5\x202.5a2.121\x202.121\x200\x200\x201\x203\x203L12\x2015l-4\x201\x201-4\x209.5-9.5z\x22></path>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x20btn-small\x22\x20onclick=\x22window.showAccessBindings(\x27'+_0x178247['id']+'\x27)\x22\x20title=\x22Access\x20Bindings\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<svg\x20width=\x2214\x22\x20height=\x2214\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<path\x20d=\x22M12\x2022s8-4\x208-10V5l-8-3-8\x203v7c0\x206\x208\x2010\x208\x2010z\x22></path>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x20btn-small\x20btn-danger\x22\x20onclick=\x22window.deleteUser(\x27'+_0x178247['id']+'\x27)\x22\x20title=\x22Delete\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<svg\x20width=\x2214\x22\x20height=\x2214\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<polyline\x20points=\x223\x206\x205\x206\x2021\x206\x22></polyline>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<path\x20d=\x22M19\x206v14a2\x202\x200\x200\x201-2\x202H7a2\x202\x200\x200\x201-2-2V6m3\x200V4a2\x202\x200\x200\x201\x202-2h4a2\x202\x200\x200\x201\x202\x202v2\x22></path>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-secondary\x20btn-small\x22\x20onclick=\x22window.resetPassword(\x27'+_0x178247['id']+'\x27)\x22>Reset\x20Password</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20</tr>\x0a\x20\x20')['join']('');}window['showAccessBindings']=function(_0x5dee3b){const _0x109301=state['users']['find'](_0x3c5e55=>_0x3c5e55['id']===_0x5dee3b);if(!_0x109301)return;state['bindingsUserId']=_0x5dee3b,state['bindingsDirty']=![];const _0x476fbc=document['getElementById']('bindings-modal'),_0x89ce96=document['getElementById']('bindings-modal-title');_0x89ce96['textContent']='Access\x20Bindings\x20—\x20'+_0x109301['name'],document['getElementById']('add-user-binding-form')['hidden']=!![],document['getElementById']('add-user-binding-btn')['hidden']=![],_0x476fbc['hidden']=![],loadUserBindings(_0x5dee3b);};function hasUnsavedBindingChanges(){const _0x36632f=document['getElementById']('add-user-binding-form');return _0x36632f&&!_0x36632f['hidden'];}async function hideAccessBindingsModal(){if(hasUnsavedBindingChanges()){if(!confirm('You\x20have\x20an\x20unsaved\x20binding.\x20Discard\x20changes?'))return;document['getElementById']('add-user-binding-form')['hidden']=!![],document['getElementById']('add-user-binding-btn')['hidden']=![];}const _0xc0beaa=document['getElementById']('bindings-modal');_0xc0beaa['hidden']=!![];const _0x5ccbbd=state['bindingsDirty'];state['bindingsUserId']=null,state['userBindings']=[],state['bindingsDirty']=![],_0x5ccbbd&&await loadUsers();}async function loadUserBindings(_0x180bda){const _0x1571b8=document['getElementById']('user-bindings-loading'),_0x50cf47=document['getElementById']('user-bindings-empty'),_0x27bac7=document['getElementById']('user-bindings-list-container'),_0x1b399b=document['getElementById']('add-user-binding-btn'),_0x26293f=document['getElementById']('user-team-bindings-note'),_0x3f4c36=document['getElementById']('user-team-bindings-text');_0x1571b8['hidden']=![],_0x50cf47['hidden']=!![],_0x27bac7['style']['display']='none',_0x1b399b['hidden']=!![],_0x26293f['hidden']=!![],document['getElementById']('add-user-binding-form')['hidden']=!![];try{const [_0x109b93,_0x40969d]=await Promise['all']([API['getBindings']({'subject_type':'user','subject_id':_0x180bda}),API['getTeams']()]);state['userBindings']=_0x109b93['bindings']||[];const _0xbd061f=(_0x40969d['teams']||[])['filter'](_0x4a69a5=>(_0x4a69a5['members']||[])['includes'](_0x180bda)),_0x446def=[];if(_0xbd061f['length']>0x0){const _0x40ebd5=await Promise['all'](_0xbd061f['map'](_0x53af69=>API['getBindings']({'subject_type':'team','subject_id':_0x53af69['id']})));for(let _0x2ced6c=0x0;_0x2ced6c<_0xbd061f['length'];_0x2ced6c++){const _0x3e3ac6=_0x40ebd5[_0x2ced6c]['bindings']||[];_0x3e3ac6['length']>0x0&&_0x446def['push'](_0xbd061f[_0x2ced6c]);}}_0x1571b8['hidden']=!![];state['userBindings']['length']===0x0?_0x50cf47['hidden']=![]:(_0x27bac7['style']['display']='',renderUserBindingsTable());if(_0x446def['length']>0x0){const _0x553a2b=_0x446def['map'](_0x4e677b=>_0x4e677b['name']),_0x1ed526=_0x553a2b['length']<=0x3?_0x553a2b['join'](',\x20'):_0x553a2b['slice'](0x0,0x3)['join'](',\x20')+(',\x20and\x20'+(_0x553a2b['length']-0x3)+'\x20more');_0x3f4c36['textContent']='This\x20user\x20also\x20has\x20access\x20via\x20team\x20memberships\x20('+_0x1ed526+').';}else _0x3f4c36['textContent']='This\x20user\x20has\x20no\x20access\x20via\x20team\x20memberships.';_0x26293f['hidden']=![],_0x1b399b['hidden']=![];}catch(_0x44cc84){_0x1571b8['hidden']=!![],Utils['showToast']('Failed\x20to\x20load\x20bindings:\x20'+_0x44cc84['message'],'error');}}function renderUserBindingsTable(){const _0x754c68=document['getElementById']('user-bindings-table-body');if(!_0x754c68)return;_0x754c68['innerHTML']=state['userBindings']['map'](_0x47b11e=>{const _0x24af60=_0x47b11e['resource_type']==='server'?'Server':_0x47b11e['resource_id']==='*'?'All\x20'+_0x47b11e['resource_type']+'s':Utils['escapeHtml'](_0x47b11e['resource_id']||'');return'\x0a\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20<td>'+_0x24af60+'</td>\x0a\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x47b11e['role_name']||_0x47b11e['role_id'])+'</td>\x0a\x20\x20\x20\x20\x20\x20<td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-small\x22\x20onclick=\x22window.deleteUserBindingClick(\x27'+_0x47b11e['id']+'\x27)\x22\x20style=\x22color:\x20var(--color-danger);\x22>Remove</button>\x0a\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20</tr>';})['join']('');}function populateUserBindingForm(){const _0x229a1b=document['getElementById']('user-binding-resource-type');_0x229a1b['value']='environment',updateUserBindingFormForResourceType('environment');}function onUserBindingResourceTypeChange(){const _0x237d03=document['getElementById']('user-binding-resource-type')['value'];updateUserBindingFormForResourceType(_0x237d03);}function updateUserBindingFormForResourceType(_0x3b3656){const _0xe1349=document['getElementById']('user-binding-resource-container'),_0x30cec2=document['getElementById']('user-binding-resource'),_0x3b0169=document['getElementById']('user-binding-role');if(_0x3b3656==='server')_0xe1349['style']['display']='none';else{_0xe1349['style']['display']='';if(_0x3b3656==='environment'){const _0x49a785=new Set(state['userBindings']['filter'](_0xad6429=>_0xad6429['resource_type']==='environment')['map'](_0x3b4002=>_0x3b4002['resource_id'])),_0x3f145c=state['environments']['filter'](_0x531452=>!_0x49a785['has'](_0x531452['name']));_0x30cec2['innerHTML']=_0x3f145c['length']?_0x3f145c['map'](_0x48fd03=>'<option\x20value=\x22'+Utils['escapeHtml'](_0x48fd03['name'])+'\x22>'+Utils['escapeHtml'](_0x48fd03['name'])+'</option>')['join'](''):'<option\x20value=\x22\x22>All\x20environments\x20already\x20bound</option>';}else{if(_0x3b3656==='team'){const _0xe6749b=new Set(state['userBindings']['filter'](_0x527599=>_0x527599['resource_type']==='team')['map'](_0x3843e8=>_0x3843e8['resource_id'])),_0x3d0aa4=state['teams']['filter'](_0x210bfc=>!_0xe6749b['has'](_0x210bfc['id']));_0x30cec2['innerHTML']=_0x3d0aa4['length']?_0x3d0aa4['map'](_0x4b5628=>'<option\x20value=\x22'+_0x4b5628['id']+'\x22>'+Utils['escapeHtml'](_0x4b5628['name'])+'</option>')['join'](''):'<option\x20value=\x22\x22>All\x20teams\x20already\x20bound</option>';}}}const _0x290df0=state['roles']['filter'](_0x4a6906=>_0x4a6906['resource_type']===_0x3b3656);_0x3b0169['innerHTML']=_0x290df0['length']?_0x290df0['filter'](_0xb2639a=>{const _0x32114e=_0x3b3656==='server'?undefined:_0x30cec2['value'];return!state['userBindings']['some'](_0x451cd7=>_0x451cd7['resource_type']===_0x3b3656&&_0x451cd7['role_id']===_0xb2639a['id']&&(_0x3b3656==='server'||_0x451cd7['resource_id']===_0x32114e));})['map'](_0x42b1ad=>'<option\x20value=\x22'+_0x42b1ad['id']+'\x22>'+Utils['escapeHtml'](_0x42b1ad['name'])+'</option>')['join']('')||'<option\x20value=\x22\x22>No\x20available\x20roles</option>':'<option\x20value=\x22\x22>No\x20roles\x20for\x20this\x20resource\x20type</option>';}async function saveUserBinding(){const _0x2384b0=document['getElementById']('user-binding-resource-type')['value'],_0x337fbc=document['getElementById']('user-binding-role')['value'];if(!_0x337fbc||!state['bindingsUserId'])return;const _0x3bd1ed=_0x2384b0==='server'?undefined:document['getElementById']('user-binding-resource')['value'];if(_0x2384b0!=='server'&&!_0x3bd1ed)return;const _0x3b0845=document['getElementById']('save-user-binding-btn');_0x3b0845['disabled']=!![],_0x3b0845['textContent']='Adding…';try{const _0x322c75={'subject_type':'user','subject_id':state['bindingsUserId'],'role_id':_0x337fbc,'resource_type':_0x2384b0};if(_0x3bd1ed)_0x322c75['resource_id']=_0x3bd1ed;await API['createBinding'](_0x322c75),Utils['showToast']('Binding\x20added','success'),state['bindingsDirty']=!![],document['getElementById']('add-user-binding-form')['hidden']=!![],document['getElementById']('add-user-binding-btn')['hidden']=![],await loadUserBindings(state['bindingsUserId']);}catch(_0x36a0d8){Utils['showToast'](_0x36a0d8['message'],'error');}finally{_0x3b0845['disabled']=![],_0x3b0845['textContent']='Add\x20Binding';}}window['deleteUserBindingClick']=async function(_0x40ffee){try{await API['deleteBinding'](_0x40ffee),Utils['showToast']('Binding\x20removed','success'),state['bindingsDirty']=!![],await loadUserBindings(state['bindingsUserId']);}catch(_0x4d6902){Utils['showToast'](_0x4d6902['message'],'error');}};function showCreateUserModal(){state['editingUserId']=null;const _0x1a59cd=document['getElementById']('user-modal'),_0x495d55=document['getElementById']('modal-title'),_0x110dc8=document['getElementById']('user-password'),_0x3f81f8=document['getElementById']('password-required'),_0x2cd68e=document['getElementById']('password-hint'),_0xa92ad6=document['getElementById']('skip-password-container'),_0x93daa=document['getElementById']('skip-password');_0x495d55['textContent']='Create\x20User',document['getElementById']('user-form')['reset'](),_0x110dc8['required']=!![];if(_0x3f81f8)_0x3f81f8['textContent']='*';_0xa92ad6&&(_0xa92ad6['style']['display']='block',_0x93daa['checked']=![]),_0x2cd68e&&(_0x2cd68e['textContent']='Minimum\x208\x20characters'),_0x1a59cd['hidden']=![],setTimeout(()=>{document['getElementById']('user-username')['focus']();},0x64);}window['editUser']=function(_0x4b505e){const _0x305719=state['users']['find'](_0xa6ef83=>_0xa6ef83['id']===_0x4b505e);if(!_0x305719)return;state['editingUserId']=_0x4b505e;const _0x111587=document['getElementById']('user-modal'),_0x9a08e=document['getElementById']('modal-title'),_0x2cab98=document['getElementById']('user-password'),_0x3b8a78=document['getElementById']('password-required'),_0x341cba=document['getElementById']('password-hint'),_0x18120d=document['getElementById']('skip-password-container');_0x9a08e['textContent']='Edit\x20User',document['getElementById']('user-username')['value']=_0x305719['username'],document['getElementById']('user-name')['value']=_0x305719['name'],document['getElementById']('user-email')['value']=_0x305719['email'],_0x2cab98['value']='',_0x2cab98['required']=![];if(_0x3b8a78)_0x3b8a78['textContent']='';_0x18120d&&(_0x18120d['style']['display']='none'),_0x341cba&&(_0x341cba['textContent']='Leave\x20blank\x20to\x20keep\x20current\x20password'),_0x111587['hidden']=![],setTimeout(()=>{document['getElementById']('user-username')['focus']();},0x64);};function hideUserModal(){const _0x25e448=document['getElementById']('user-modal'),_0xd46db4=document['getElementById']('form-error'),_0x1fac35=document['getElementById']('save-user');_0x25e448['hidden']=!![],_0xd46db4['hidden']=!![],state['editingUserId']=null,_0x1fac35&&(_0x1fac35['disabled']=![],_0x1fac35['textContent']='Save\x20User');}async function saveUser(){const _0x148827=document['getElementById']('user-form'),_0x28121f=document['getElementById']('skip-password')?.['checked']||![];if(!_0x28121f&&!_0x148827['checkValidity']()){_0x148827['reportValidity']();return;}const _0x15f20e=document['getElementById']('form-error'),_0x39a455=document['getElementById']('save-user'),_0x4fbf72=document['getElementById']('user-username')['value']['trim'](),_0x33e9a7=document['getElementById']('user-name')['value']['trim'](),_0x1b9d2d=document['getElementById']('user-email')['value']['trim'](),_0x50c98b=document['getElementById']('user-password')['value'];if(!_0x4fbf72||!_0x33e9a7||!_0x1b9d2d){_0x15f20e['textContent']='Please\x20fill\x20in\x20all\x20required\x20fields',_0x15f20e['hidden']=![],_0x15f20e['scrollIntoView']({'behavior':'smooth','block':'nearest'});return;}_0x15f20e['hidden']=!![];const _0x46da5d=_0x39a455['textContent'];_0x39a455['disabled']=!![],_0x39a455['textContent']=state['editingUserId']?'Updating...':'Creating...';try{if(state['editingUserId']){const _0x370a7d={'username':_0x4fbf72,'name':_0x33e9a7,'email':_0x1b9d2d};_0x50c98b&&(_0x370a7d['password']=_0x50c98b),await API['updateUser'](state['editingUserId'],_0x370a7d),Utils['showToast']('User\x20updated\x20successfully','success'),await loadUsers(),hideUserModal();}else{const _0x12589d={'username':_0x4fbf72,'name':_0x33e9a7,'email':_0x1b9d2d};if(!_0x28121f){if(!_0x50c98b)throw new Error('Password\x20is\x20required\x20for\x20new\x20users');_0x12589d['password']=_0x50c98b;}const _0x19b513=await API['createUser'](_0x12589d),_0x2445ea=_0x19b513['user'];if(_0x28121f||!_0x50c98b){const _0x59c4ca=await API['createPasswordToken'](_0x2445ea['id'],'setup',![]);state['setupLinkData']={'username':_0x2445ea['username'],'email':_0x2445ea['email'],'url':_0x59c4ca['token']['setupUrl'],'userId':_0x2445ea['id'],'type':'setup','emailSent':![]},await loadUsers(),hideUserModal(),showSetupLinkModal();}else Utils['showToast']('User\x20created\x20successfully','success'),await loadUsers(),hideUserModal();}}catch(_0x59501c){console['error']('Failed\x20to\x20save\x20user',_0x59501c),_0x15f20e['textContent']=_0x59501c['message'],_0x15f20e['hidden']=![],_0x15f20e['scrollIntoView']({'behavior':'smooth','block':'nearest'}),_0x39a455['disabled']=![],_0x39a455['textContent']=_0x46da5d;}}window['deleteUser']=function(_0x54bf4d){const _0x585c84=state['users']['find'](_0x30a1dc=>_0x30a1dc['id']===_0x54bf4d);if(!_0x585c84)return;state['deletingUserId']=_0x54bf4d;const _0x165a3a=document['getElementById']('delete-modal'),_0x17ee7f=document['getElementById']('delete-user-name');_0x17ee7f['textContent']=_0x585c84['name']+'\x20('+_0x585c84['username']+')',_0x165a3a['hidden']=![];};function hideDeleteModal(){const _0xdcb37f=document['getElementById']('delete-modal');_0xdcb37f['hidden']=!![],state['deletingUserId']=null;const _0x95ce6a=document['getElementById']('confirm-delete');_0x95ce6a&&(_0x95ce6a['disabled']=![],_0x95ce6a['textContent']='Delete\x20User');}async function confirmDeleteUser(){if(!state['deletingUserId'])return;const _0x4ccab8=document['getElementById']('confirm-delete'),_0x19e783=_0x4ccab8['textContent'];_0x4ccab8['disabled']=!![],_0x4ccab8['textContent']='Deleting...';try{await API['deleteUser'](state['deletingUserId']),Utils['showToast']('User\x20deleted\x20successfully','success'),await loadUsers(),hideDeleteModal();}catch(_0x17fad4){console['error']('Failed\x20to\x20delete\x20user',_0x17fad4),Utils['showToast']('Failed\x20to\x20delete\x20user:\x20'+_0x17fad4['message'],'error'),_0x4ccab8['disabled']=![],_0x4ccab8['textContent']=_0x19e783;}}function handleSkipPasswordChange(_0x2f82f7){const _0x1eaa03=document['getElementById']('user-password'),_0x33971=_0x2f82f7['target']['checked'];_0x33971?(_0x1eaa03['required']=![],_0x1eaa03['disabled']=!![],_0x1eaa03['value']=''):(_0x1eaa03['required']=!![],_0x1eaa03['disabled']=![]);}function showSetupLinkModal(){if(!state['setupLinkData'])return;const _0x20b6c3=document['getElementById']('setup-link-modal'),_0x498cd8=document['getElementById']('setup-link-username'),_0x5704eb=document['getElementById']('setup-link-url'),_0x423d50=document['getElementById']('email-setup-link'),_0x3cd845=document['getElementById']('email-button-text');_0x498cd8['textContent']=state['setupLinkData']['username'],_0x5704eb['textContent']=state['setupLinkData']['url'],_0x423d50&&_0x3cd845&&(_0x423d50['disabled']=![],_0x3cd845['textContent']='Email\x20Link',state['emailConfigured']&&!state['setupLinkData']['emailSent']?_0x423d50['style']['display']='inline-block':_0x423d50['style']['display']='none'),_0x20b6c3['hidden']=![];}function hideSetupLinkModal(){const _0x594838=document['getElementById']('setup-link-modal');_0x594838['hidden']=!![],state['setupLinkData']=null;}async function copySetupLink(){if(!state['setupLinkData'])return;try{await navigator['clipboard']['writeText'](state['setupLinkData']['url']),Utils['showToast']('Link\x20copied\x20to\x20clipboard','success');}catch(_0x4e5879){console['error']('Failed\x20to\x20copy\x20link',_0x4e5879),Utils['showToast']('Failed\x20to\x20copy\x20link','error');}}async function emailSetupLink(){if(!state['setupLinkData'])return;const _0x5523a5=document['getElementById']('email-setup-link'),_0x1b4d07=document['getElementById']('email-button-text');if(!_0x5523a5||!_0x1b4d07)return;const _0x29bbb4=_0x1b4d07['textContent'];_0x5523a5['disabled']=!![],_0x1b4d07['textContent']='Sending...';try{const _0x11820e=await API['createPasswordToken'](state['setupLinkData']['userId'],state['setupLinkData']['type'],!![]);if(_0x11820e['emailSent'])Utils['showToast']('Email\x20sent\x20to\x20'+state['setupLinkData']['email'],'success'),state['setupLinkData']['emailSent']=!![],_0x5523a5['style']['display']='none';else{const _0x25b311=_0x11820e['emailError']||'Failed\x20to\x20send\x20email';Utils['showToast'](_0x25b311,'error'),_0x5523a5['disabled']=![],_0x1b4d07['textContent']=_0x29bbb4;}}catch(_0x442984){console['error']('Failed\x20to\x20email\x20setup\x20link',_0x442984),Utils['showToast']('Failed\x20to\x20send\x20email:\x20'+_0x442984['message'],'error'),_0x5523a5['disabled']=![],_0x1b4d07['textContent']=_0x29bbb4;}}window['resetPassword']=async function(_0x4368fe){const _0xe0265c=state['users']['find'](_0x24ac34=>_0x24ac34['id']===_0x4368fe);if(!_0xe0265c)return;const _0x456dc8=await ConfirmDialog['show']({'title':'Reset\x20Password','message':'Generate\x20a\x20password\x20reset\x20link\x20for\x20'+_0xe0265c['name']+'\x20('+_0xe0265c['username']+')?\x20This\x20will\x20create\x20a\x20link\x20that\x20they\x20can\x20use\x20to\x20set\x20a\x20new\x20password.','confirmText':'Generate\x20Link'});if(!_0x456dc8)return;try{const _0x48a740=await API['createPasswordToken'](_0x4368fe,'reset',![]);state['setupLinkData']={'username':_0xe0265c['username'],'email':_0xe0265c['email'],'url':_0x48a740['token']['setupUrl'],'userId':_0xe0265c['id'],'type':'reset','emailSent':![]},showSetupLinkModal();}catch(_0xbfa8b){console['error']('Failed\x20to\x20create\x20password\x20reset\x20link',_0xbfa8b),Utils['showToast']('Failed\x20to\x20create\x20password\x20reset\x20link:\x20'+_0xbfa8b['message'],'error');}};