@profoundlogic/coderflow-server 0.5.2 → 0.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/coder-server.js +1 -1
- package/dist/config.js +1 -1
- package/dist/lib/agent-keepalive.js +1 -1
- package/dist/lib/agent-models.js +1 -1
- package/dist/lib/api-keys.js +1 -1
- package/dist/lib/apiKeys.js +1 -1
- package/dist/lib/app-server-ports.js +1 -1
- package/dist/lib/auto-judge.js +1 -1
- package/dist/lib/automation-service.js +1 -1
- package/dist/lib/basic-auth.js +1 -1
- package/dist/lib/bindings.js +1 -1
- package/dist/lib/build-history.js +1 -1
- package/dist/lib/build-output-service.js +1 -1
- package/dist/lib/build-scheduler.js +1 -1
- package/dist/lib/build-service.js +1 -1
- package/dist/lib/ca-certificates.js +1 -1
- package/dist/lib/claude-oauth-refresh.js +1 -1
- package/dist/lib/cli/build.js +1 -1
- package/dist/lib/cli/cleanup-users.js +1 -1
- package/dist/lib/cli/config-command.js +1 -1
- package/dist/lib/cli/config.js +1 -1
- package/dist/lib/cli/create-user.js +1 -1
- package/dist/lib/cli/grant-admin.js +1 -1
- package/dist/lib/cli/init.js +1 -1
- package/dist/lib/cli/jira.js +1 -1
- package/dist/lib/cli/license.js +1 -1
- package/dist/lib/cli/list-roles.js +1 -1
- package/dist/lib/cli/list-users.js +1 -1
- package/dist/lib/cli/server-manager.js +1 -1
- package/dist/lib/cli/set-password.js +1 -1
- package/dist/lib/config-migration.js +1 -1
- package/dist/lib/container-credential-sync.js +1 -1
- package/dist/lib/container-tokens.js +1 -1
- package/dist/lib/data-dir.js +1 -1
- package/dist/lib/deployment-history.js +1 -1
- package/dist/lib/deployment-service.js +1 -1
- package/dist/lib/docker-utils.js +1 -1
- package/dist/lib/email.js +1 -1
- package/dist/lib/emailTemplates.js +1 -1
- package/dist/lib/entitlement.js +1 -1
- package/dist/lib/external-connections.js +1 -1
- package/dist/lib/fetch-utils.js +1 -1
- package/dist/lib/git-commit-details-route.js +1 -1
- package/dist/lib/git-history-diff-guardrails.js +1 -1
- package/dist/lib/git-provider-service.js +1 -1
- package/dist/lib/git-provider-setup/github-setup-handler.js +1 -1
- package/dist/lib/git-provider-setup/index.js +1 -1
- package/dist/lib/git-provider-setup/setup-factory.js +1 -1
- package/dist/lib/git-provider-setup/setup-interface.js +1 -1
- package/dist/lib/git-providers/azure-devops-provider.js +1 -1
- package/dist/lib/git-providers/github-app-provider.js +1 -1
- package/dist/lib/git-providers/index.js +1 -1
- package/dist/lib/git-providers/provider-factory.js +1 -1
- package/dist/lib/git-providers/provider-interface.js +1 -1
- package/dist/lib/github-urls.js +1 -1
- package/dist/lib/group-objective-linking.js +1 -1
- package/dist/lib/ibmi-sync.js +1 -1
- package/dist/lib/jira-client.js +1 -1
- package/dist/lib/judge-blinding.js +1 -1
- package/dist/lib/logger.js +1 -1
- package/dist/lib/migration-to-scoped-rbac.js +1 -1
- package/dist/lib/model-fetcher.js +1 -1
- package/dist/lib/notifications.js +1 -1
- package/dist/lib/objective-context.js +1 -1
- package/dist/lib/oidc-auth.js +1 -1
- package/dist/lib/oidc-device-flow.js +1 -1
- package/dist/lib/passwordTokens.js +1 -1
- package/dist/lib/permission-resolver.js +1 -1
- package/dist/lib/pin-cascade.js +1 -1
- package/dist/lib/provider-accounts.js +1 -1
- package/dist/lib/provider-oauth.js +1 -1
- package/dist/lib/provider-profile.js +1 -1
- package/dist/lib/provider-token-refresh.js +1 -1
- package/dist/lib/rbac-user-state.js +1 -1
- package/dist/lib/request-url.js +1 -1
- package/dist/lib/rewind.js +1 -1
- package/dist/lib/role-definitions.js +1 -1
- package/dist/lib/roles.js +1 -1
- package/dist/lib/secrets.js +1 -1
- package/dist/lib/setup-repo-git-auth.js +1 -1
- package/dist/lib/state-capture.js +1 -1
- package/dist/lib/static-files.js +1 -1
- package/dist/lib/task-name-format.js +1 -1
- package/dist/lib/task-name-generator.js +1 -1
- package/dist/lib/task-source-metadata.js +1 -1
- package/dist/lib/teams.js +1 -1
- package/dist/lib/user-git-oauth.js +1 -1
- package/dist/lib/user-git-tokens.js +1 -1
- package/dist/lib/users.js +1 -1
- package/dist/middleware/requireAuth.js +1 -1
- package/dist/middleware/requireInit.js +1 -1
- package/dist/middleware/requirePermission.js +1 -1
- package/dist/package.json +1 -1
- package/dist/playwright.config.js +1 -1
- package/dist/routes/apiKeys.js +1 -1
- package/dist/routes/auth-oidc.js +1 -1
- package/dist/routes/auth.js +1 -1
- package/dist/routes/automations.js +1 -1
- package/dist/routes/bindings.js +1 -1
- package/dist/routes/build.js +1 -1
- package/dist/routes/containers.js +1 -1
- package/dist/routes/deploy-task.js +1 -1
- package/dist/routes/environment-management.js +1 -1
- package/dist/routes/environments.js +1 -1
- package/dist/routes/external-skills.js +1 -1
- package/dist/routes/git-credentials.js +1 -1
- package/dist/routes/git-oauth.js +1 -1
- package/dist/routes/git-provider-setup.js +1 -1
- package/dist/routes/health.js +1 -1
- package/dist/routes/jira.js +1 -1
- package/dist/routes/objective-management.js +1 -1
- package/dist/routes/password.js +1 -1
- package/dist/routes/prompt.js +1 -1
- package/dist/routes/provider-auth.js +1 -1
- package/dist/routes/qa.js +1 -1
- package/dist/routes/roles.js +1 -1
- package/dist/routes/settings.js +1 -1
- package/dist/routes/skill-management.js +1 -1
- package/dist/routes/skills.js +1 -1
- package/dist/routes/tasks.js +1 -1
- package/dist/routes/teams.js +1 -1
- package/dist/routes/templates.js +1 -1
- package/dist/routes/test-task.js +1 -1
- package/dist/routes/test.js +1 -1
- package/dist/routes/users.js +1 -1
- package/dist/routes/visualizations.js +1 -1
- package/dist/scripts/create-user.js +1 -1
- package/dist/scripts/migrate-config-to-data-dir.js +1 -1
- package/dist/start.js +1 -1
- package/dist/web-ui/public/activity-detail-modal.js +1 -1
- package/dist/web-ui/public/activity-feed.js +1 -1
- package/dist/web-ui/public/activity-formatters.js +1 -1
- package/dist/web-ui/public/agent-event-parser.js +1 -1
- package/dist/web-ui/public/app.js +1 -1
- package/dist/web-ui/public/approve-dialog.js +1 -1
- package/dist/web-ui/public/automation-links.js +1 -1
- package/dist/web-ui/public/automation-schedule.js +1 -1
- package/dist/web-ui/public/comments-widget.js +1 -1
- package/dist/web-ui/public/diff-utils.js +1 -1
- package/dist/web-ui/public/environments.js +1 -1
- package/dist/web-ui/public/feedback-widget.js +1 -1
- package/dist/web-ui/public/git-history-lazy-utils.js +1 -1
- package/dist/web-ui/public/git-history.js +1 -1
- package/dist/web-ui/public/git-status.js +1 -1
- package/dist/web-ui/public/index.html +1 -1
- package/dist/web-ui/public/index.js +1 -1
- package/dist/web-ui/public/login.js +1 -1
- package/dist/web-ui/public/markdown-editor.js +1 -1
- package/dist/web-ui/public/markdown-file-editor.js +1 -1
- package/dist/web-ui/public/modal-maximize.js +1 -1
- package/dist/web-ui/public/notifications.js +1 -1
- package/dist/web-ui/public/pr-dialog.js +1 -1
- package/dist/web-ui/public/roles.js +1 -1
- package/dist/web-ui/public/server-health.js +1 -1
- package/dist/web-ui/public/settings.js +1 -1
- package/dist/web-ui/public/setup-password.js +1 -1
- package/dist/web-ui/public/skills.js +1 -1
- package/dist/web-ui/public/sse-client.js +1 -1
- package/dist/web-ui/public/sse-shared-worker.js +1 -1
- package/dist/web-ui/public/task.js +1 -1
- package/dist/web-ui/public/teams.js +1 -1
- package/dist/web-ui/public/terminal.js +1 -1
- package/dist/web-ui/public/theme.js +1 -1
- package/dist/web-ui/public/users.js +1 -1
- package/dist/web-ui/public/variant-grouping.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{API,Utils,CustomSelect,ConfirmDialog,AutocompleteSelect,initializeAdminMenu}from'./app.js';import{getCurrentTheme,initTheme,mountThemeToggle,onThemeChange}from'./theme.js';import*as _0x383b6b from'./git-status.js?v=2';import{parsePatchContent,renderUnifiedDiff,safeBase64}from'./diff-utils.js';import{buildAutomationTaskFilterHref,parseAutomationDeepLinkParams}from'./automation-links.js';import{AUTOMATION_MONTHLY_DAY_MAX,buildAutomationCronFromFormState,parseAutomationScheduleToFormState}from'./automation-schedule.js';let monacoLoaded=![];const monacoEditors=new Map(),getMonacoTheme=()=>getCurrentTheme()==='dark'?'vs-dark':'vs';onThemeChange(_0x103f69=>{window['monaco']?.['editor']&&monaco['editor']['setTheme'](_0x103f69==='dark'?'vs-dark':'vs');});let defaultAgentSelect=null,defaultAgentSelectInitializing=![],newEnvAgentSelect=null,automationInstructionsEditor=null;const automationCustomSelects={},AUTOMATION_MODAL_SELECT_IDS=['automation-frequency','automation-weekly-day','automation-monthly-day','automation-recurring-interval','automation-recurring-start-hour','automation-recurring-end-hour','automation-agent-name','automation-effort-level','automation-reasoning-level','automation-template-name'];let repoAutocomplete=null,newEnvRepoAutocomplete=null,editRepoAutocomplete=null,newRepoBranchAutocomplete=null,editRepoBranchAutocomplete=null;const SESSION_KEY_ENV='environments_selectedEnv',SESSION_KEY_TAB='environments_currentTab',state={'environments':[],'selectedEnv':null,'selectedEnvData':null,'currentTab':sessionStorage['getItem'](SESSION_KEY_TAB)||'overview','hasUnsavedChanges':![],'modifiedFiles':new Set(),'changedFiles':[],'setupRepoAuth':null,'currentUser':null,'currentFile':'Dockerfile','currentTemplate':null,'currentTemplateData':null,'currentRepo':null,'currentTest':null,'agentsContent':null,'readmeContent':null,'currentBuildSecret':null,'buildSecrets':[],'automations':[],'automationsLoadedEnv':null,'viewingAutomationId':null,'editingAutomationId':null,'automationModalMode':'create','availableModels':null,'availableModelsLoaded':![],'automationTemplateParamValues':{},'currentDeployProfile':null,'currentDeployProfileData':null,'profileHasUnsavedChanges':![],'profileScriptEditor':null,'secrets':[],'editingSecret':null,'gitProviders':[],'editingGitProvider':null,'editingGitProviderOriginalAuthMethod':null,'deploymentHistory':[],'currentDeploymentId':null,'deploymentPollInterval':null,'deploymentStartTime':null,'deploymentOutput':'','deploymentParamCache':{},'availableSkills':[],'availableSkillsLoaded':![],'availableSkillsLoading':![],'availableSkillsError':null,'skillsModalSelection':[],'skillsModalOpen':![],'parameterModalContext':null,'editingParamName':null,'parameterOptions':[],'uncommittedDiff':null,'uncommittedDiffFiles':null,'editingConnection':null};let secretValueStore='',secretValueVisible=![],lastCursorPosition=0x0,sshKeyValueStore='',sshKeyValueVisible=![],sshKeyLastCursorPosition=0x0;const KNOWN_POST_CLONE_ACTIONS=['none','npm\x20install','npm\x20ci','yarn','pnpm\x20install','pip\x20install\x20-r\x20requirements.txt','pip\x20install\x20-e\x20.','mvn\x20install\x20-DskipTests','./gradlew\x20build\x20-x\x20test','dotnet\x20restore','dotnet\x20build','composer\x20install','custom'];function getBranchAutocompleteInputValue(_0x21e073){return _0x21e073?.['input']?.['value']?.['trim']()||'';}function setBranchAutocompleteValue(_0x1d90f1,_0x7dc3b5){if(!_0x1d90f1||!_0x1d90f1['input'])return;const _0x465ca4=(_0x7dc3b5||'')['trim']();_0x1d90f1['input']['value']=_0x465ca4,_0x1d90f1['clearBtn']['hidden']=!_0x465ca4,(!_0x465ca4||_0x1d90f1['selectedItem']?.['name']!==_0x465ca4)&&(_0x1d90f1['selectedItem']=null);}function clearBranchAutocompleteError(_0x5c3452){_0x5c3452?.['wrapper']&&_0x5c3452['wrapper']['classList']['remove']('input-error');}function setBranchAutocompleteErrorState(_0x26b395,_0x18ddab){if(!_0x26b395?.['wrapper'])return;_0x26b395['wrapper']['classList']['toggle']('input-error',Boolean(_0x18ddab));}function getNewRepoBranchValue(){return getBranchAutocompleteInputValue(newRepoBranchAutocomplete);}function setNewRepoBranchValue(_0x115bef){setBranchAutocompleteValue(newRepoBranchAutocomplete,_0x115bef);}function getEditRepoBranchValue(){return getBranchAutocompleteInputValue(editRepoBranchAutocomplete);}function setEditRepoBranchValue(_0x20f12d){setBranchAutocompleteValue(editRepoBranchAutocomplete,_0x20f12d);}function getNewRepoBranchContext(){const _0x252760=document['querySelector']('input[name=\x22repo-entry-mode\x22]:checked')?.['value']||'manual',_0x135d5e=_0x252760==='provider'?document['getElementById']('new-repo-source-provider')?.['value']||'':'',_0x4ac1c5=_0x252760==='provider'?repoAutocomplete?repoAutocomplete['getSelectedItem']():null:null,_0x1be9fe=_0x252760==='provider'?_0x4ac1c5?.['clone_url']||_0x4ac1c5?.['url']||'':document['getElementById']('new-repo-url')?.['value']?.['trim']()||'';return{'providerName':_0x135d5e,'repoUrl':_0x1be9fe};}function getEditRepoBranchContext(){const _0x4db8a2=document['getElementById']('edit-repo-provider')?.['value']||'',_0x67cb8f=document['getElementById']('repo-url')?.['value']?.['trim']()||'';return{'providerName':_0x4db8a2,'repoUrl':_0x67cb8f};}async function fetchRepoBranches({providerName:_0x11334c,repoUrl:_0x1b2acc,query:_0x13cedc}){if(!_0x11334c||!_0x1b2acc)return[];const _0x481507='/settings/git-providers/'+encodeURIComponent(_0x11334c)+'/branches';let _0x5eb0ba=_0x481507+'?repoUrl='+encodeURIComponent(_0x1b2acc)+'&limit=100';_0x13cedc&&_0x13cedc['trim']()&&(_0x5eb0ba+='&search='+encodeURIComponent(_0x13cedc['trim']()));try{const _0x436b61=await API['get'](_0x5eb0ba);return _0x436b61['branches']||[];}catch(_0x1bfedd){console['error']('Failed\x20to\x20load\x20repository\x20branches:',_0x1bfedd);throw _0x1bfedd;}}function reloadNewRepoBranchSuggestions(){if(!newRepoBranchAutocomplete)return;const {providerName:_0x36bb0c,repoUrl:_0x50ce41}=getNewRepoBranchContext();newRepoBranchAutocomplete['selectedItem']=null,newRepoBranchAutocomplete['clearBtn']['hidden']=!![];if(!_0x36bb0c||!_0x50ce41){newRepoBranchAutocomplete['close']();return;}return newRepoBranchAutocomplete['loadAndShow']('');}function reloadEditRepoBranchSuggestions(){if(!editRepoBranchAutocomplete)return;const {providerName:_0xb9b1b8,repoUrl:_0x5ef6ce}=getEditRepoBranchContext();editRepoBranchAutocomplete['selectedItem']=null,editRepoBranchAutocomplete['clearBtn']['hidden']=!![];if(!_0xb9b1b8||!_0x5ef6ce){editRepoBranchAutocomplete['close']();return;}return editRepoBranchAutocomplete['loadAndShow']('');}function isKnownPostCloneAction(_0x34bdee){return KNOWN_POST_CLONE_ACTIONS['includes'](_0x34bdee);}document['addEventListener']('DOMContentLoaded',initialize);async function initialize(){try{initTheme(),mountThemeToggle(),await checkAdminAccess();const _0x5c2854=await API['get']('/auth/me');state['currentUser']=_0x5c2854['user'],await initializeAdminMenu(state['currentUser']),setupEventListeners(),await loadAvailableAutomationModels(),renderAutomationAgentOptions(),await loadEnvironments(),state['currentTab']!=='overview'&&switchTab(state['currentTab']),await handleAutomationDeepLinkParams(),await refreshRepositoryGitStatus(),await handleSetupRepoOAuthReturn(),setInterval(refreshRepositoryGitStatus,0x7530);}catch(_0x1aa50b){console['error']('Initialization\x20error:',_0x1aa50b),Utils['showError']('Failed\x20to\x20initialize\x20environment\x20management');}}async function checkAdminAccess(){try{const _0x141b3c=await API['getCurrentUser']();if(!_0x141b3c['hasEnvironmentsManage']){Utils['showToast']('Access\x20denied:\x20Environment\x20admin\x20privileges\x20required','error'),setTimeout(()=>{window['location']['href']='index.html';},0x7d0);return;}}catch(_0x359125){window['location']['href']='login.html';}}function initializeCustomSelects(){if(!defaultAgentSelect){const _0x45af5c=document['getElementById']('env-default-agent-wrapper');if(!_0x45af5c){console['error']('Wrapper\x20element\x20not\x20found');return;}_0x45af5c['innerHTML']='';const _0x2b061c=document['createElement']('select');_0x2b061c['id']='env-default-agent',_0x2b061c['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20<option\x20value=\x22claude\x22>Claude</option>\x0a\x20\x20\x20\x20\x20\x20<option\x20value=\x22codex\x22>Codex</option>\x0a\x20\x20\x20\x20\x20\x20<option\x20value=\x22gemini\x22>Gemini</option>\x0a\x20\x20\x20\x20',_0x45af5c['appendChild'](_0x2b061c),defaultAgentSelect=new CustomSelect(_0x2b061c,{'searchable':![]}),_0x2b061c['addEventListener']('change',()=>{if(defaultAgentSelectInitializing)return;markAsModified();});}}function setupEventListeners(){document['querySelectorAll']('.content-tab')['forEach'](_0x112588=>{_0x112588['addEventListener']('click',()=>switchTab(_0x112588['dataset']['tab']));}),document['getElementById']('repo-pull-btn')['addEventListener']('click',pullRepositoryChanges),document['getElementById']('repo-push-btn')['addEventListener']('click',pushRepositoryChanges),initGitConnectionsRequiredModal(),document['getElementById']('save-btn')['addEventListener']('click',saveChanges),document['getElementById']('repo-commit-btn')['addEventListener']('click',openCommitModal),document['getElementById']('repo-discard-btn')['addEventListener']('click',openDiscardModal),document['getElementById']('new-env-btn')['addEventListener']('click',createNewEnvironment),document['querySelector']('#commit-modal\x20.modal-close')['addEventListener']('click',closeCommitModal),document['getElementById']('commit-cancel-btn')['addEventListener']('click',closeCommitModal),document['getElementById']('commit-confirm-btn')['addEventListener']('click',commitAndPush),document['querySelector']('#discard-modal\x20.modal-close')['addEventListener']('click',closeDiscardModal),document['getElementById']('discard-cancel-btn')['addEventListener']('click',closeDiscardModal),document['getElementById']('discard-confirm-btn')['addEventListener']('click',confirmDiscard),document['querySelector']('#build-confirm-modal\x20.modal-close')['addEventListener']('click',closeBuildConfirmModal),document['getElementById']('build-confirm-cancel-btn')['addEventListener']('click',closeBuildConfirmModal),document['getElementById']('build-confirm-start-btn')['addEventListener']('click',confirmStartBuild),document['querySelector']('#base-image-required-modal\x20.modal-close')['addEventListener']('click',closeBaseImageRequiredModal),document['querySelector']('#base-image-required-modal\x20.modal-overlay')['addEventListener']('click',closeBaseImageRequiredModal),document['getElementById']('base-image-required-close-btn')['addEventListener']('click',closeBaseImageRequiredModal),document['getElementById']('base-image-required-open-btn')['addEventListener']('click',openBaseImageBuildFromRequiredModal),document['querySelector']('#new-env-modal\x20.modal-close')['addEventListener']('click',closeNewEnvModal),document['getElementById']('new-env-cancel-btn')['addEventListener']('click',closeNewEnvModal),document['getElementById']('new-env-create-btn')['addEventListener']('click',confirmCreateEnvironment),document['getElementById']('new-env-name')['addEventListener']('input',_0x446978=>{const _0x132408=_0x446978['target']['value']['trim'](),_0x445f5c=document['getElementById']('new-env-image');!_0x445f5c['dataset']['userModified']&&(_0x445f5c['value']=_0x132408);}),document['getElementById']('new-env-image')['addEventListener']('input',_0x253263=>{const _0x5a05c7=document['getElementById']('new-env-name')['value']['trim']();_0x253263['target']['value']!==_0x5a05c7?_0x253263['target']['dataset']['userModified']='true':delete _0x253263['target']['dataset']['userModified'];}),document['querySelector']('#delete-env-modal\x20.modal-close')['addEventListener']('click',closeDeleteEnvModal),document['getElementById']('delete-env-cancel-btn')['addEventListener']('click',closeDeleteEnvModal),document['getElementById']('delete-env-confirm-btn')['addEventListener']('click',confirmDeleteEnvironment),document['querySelector']('#add-repo-modal\x20.modal-close')['addEventListener']('click',closeAddRepoModal),document['getElementById']('add-repo-cancel-btn')['addEventListener']('click',closeAddRepoModal),document['getElementById']('add-repo-confirm-btn')['addEventListener']('click',confirmAddRepo),document['getElementById']('new-repo-branch-refresh-btn')['addEventListener']('click',_0x1bcffa=>{_0x1bcffa['preventDefault'](),reloadNewRepoBranchSuggestions();}),document['querySelector']('#delete-repo-modal\x20.modal-close')['addEventListener']('click',closeDeleteRepoModal),document['getElementById']('delete-repo-cancel-btn')['addEventListener']('click',closeDeleteRepoModal),document['getElementById']('delete-repo-confirm-btn')['addEventListener']('click',confirmDeleteRepo),document['querySelector']('#add-test-modal\x20.modal-close')['addEventListener']('click',closeAddTestModal),document['getElementById']('add-test-cancel-btn')['addEventListener']('click',closeAddTestModal),document['getElementById']('add-test-confirm-btn')['addEventListener']('click',confirmAddTest),document['querySelector']('#delete-test-modal\x20.modal-close')['addEventListener']('click',closeDeleteTestModal),document['getElementById']('delete-test-cancel-btn')['addEventListener']('click',closeDeleteTestModal),document['getElementById']('delete-test-confirm-btn')['addEventListener']('click',confirmDeleteTest),document['querySelector']('#add-template-modal\x20.modal-close')['addEventListener']('click',closeAddTemplateModal),document['getElementById']('add-template-cancel-btn')['addEventListener']('click',closeAddTemplateModal),document['getElementById']('add-template-confirm-btn')['addEventListener']('click',confirmAddTemplate),document['querySelector']('#delete-template-modal\x20.modal-close')['addEventListener']('click',closeDeleteTemplateModal),document['getElementById']('delete-template-cancel-btn')['addEventListener']('click',closeDeleteTemplateModal),document['getElementById']('delete-template-confirm-btn')['addEventListener']('click',confirmDeleteTemplate),document['querySelector']('#add-deploy-profile-modal\x20.modal-close')['addEventListener']('click',closeAddDeployProfileModal),document['getElementById']('add-deploy-profile-cancel-btn')['addEventListener']('click',closeAddDeployProfileModal),document['getElementById']('add-deploy-profile-confirm-btn')['addEventListener']('click',confirmAddDeployProfile),document['querySelector']('#delete-deploy-profile-modal\x20.modal-close')['addEventListener']('click',closeDeleteDeployProfileModal),document['getElementById']('delete-deploy-profile-cancel-btn')['addEventListener']('click',closeDeleteDeployProfileModal),document['getElementById']('delete-deploy-profile-confirm-btn')['addEventListener']('click',confirmDeleteDeployProfile),document['getElementById']('new-deploy-profile-tab')['addEventListener']('click',openAddDeployProfileModal),document['getElementById']('delete-deploy-profile-btn')['addEventListener']('click',openDeleteDeployProfileModal),document['getElementById']('profile-description')['addEventListener']('input',markProfileAsModified),document['getElementById']('add-profile-secret-btn')['addEventListener']('click',openAddProfileSecretModal),document['getElementById']('add-profile-parameter-btn')['addEventListener']('click',openAddProfileParameterModal),initDeploySectionToggles(),document['getElementById']('run-deploy-profile-btn')['addEventListener']('click',openRunDeploymentModal),document['querySelector']('#run-deployment-modal\x20.modal-close')['addEventListener']('click',closeRunDeploymentModal),document['querySelector']('#run-deployment-modal\x20.modal-overlay')['addEventListener']('click',closeRunDeploymentModal),document['getElementById']('run-deployment-cancel-btn')['addEventListener']('click',closeRunDeploymentModal),document['getElementById']('run-deployment-start-btn')['addEventListener']('click',startDeployment),document['getElementById']('cancel-deployment-btn')['addEventListener']('click',cancelDeploymentExecution),document['getElementById']('refresh-deploy-history-btn')['addEventListener']('click',()=>{state['selectedEnv']&&loadDeploymentHistory();}),document['getElementById']('add-secret-btn')['addEventListener']('click',openAddSecretModal),document['getElementById']('secrets-filter')['addEventListener']('change',renderSecrets),document['querySelector']('#secret-modal\x20.modal-close')['addEventListener']('click',closeSecretModal),document['getElementById']('secret-modal-cancel-btn')['addEventListener']('click',closeSecretModal),document['getElementById']('secret-modal-save-btn')['addEventListener']('click',saveSecret),document['getElementById']('secret-type-file')['addEventListener']('change',handleSecretTypeChange),document['getElementById']('secret-type-value')['addEventListener']('change',handleSecretTypeChange),document['getElementById']('secret-available-build')['addEventListener']('change',updateExposeAsVisibility),document['getElementById']('secret-available-tasks')['addEventListener']('change',updateExposeAsVisibility),document['getElementById']('secret-available-deploy')['addEventListener']('change',updateExposeAsVisibility),document['getElementById']('secret-expose-env')['addEventListener']('change',updateSecretTargetLabel),document['getElementById']('secret-expose-file')['addEventListener']('change',updateSecretTargetLabel),document['getElementById']('secret-source')['addEventListener']('input',debounce(validateSecretSourcePath,0x1f4)),document['getElementById']('secret-import-file-btn')['addEventListener']('click',()=>{document['getElementById']('secret-file-input')['click']();}),document['getElementById']('secret-file-input')['addEventListener']('change',handleSecretFileImport),document['querySelector']('.secret-toggle-visibility')['addEventListener']('click',toggleSecretValueVisibility);const _0x348b28=document['getElementById']('secret-value');_0x348b28['addEventListener']('beforeinput',handleSecretValueBeforeInput),_0x348b28['addEventListener']('input',handleSecretValueInput),document['getElementById']('secret-git-pat-checkbox')['addEventListener']('change',handleGitPatCheckboxChange),document['getElementById']('secret-git-host')['addEventListener']('change',handleGitHostChange),document['querySelector']('#delete-secret-modal\x20.modal-close')['addEventListener']('click',closeDeleteSecretModal),document['getElementById']('delete-secret-cancel-btn')['addEventListener']('click',closeDeleteSecretModal),document['getElementById']('delete-secret-confirm-btn')['addEventListener']('click',confirmDeleteSecret),document['getElementById']('add-connection-btn')['addEventListener']('click',openAddConnectionModal),document['querySelector']('#connection-modal\x20.modal-close')['addEventListener']('click',closeConnectionModal),document['getElementById']('connection-modal-cancel-btn')['addEventListener']('click',closeConnectionModal),document['getElementById']('connection-modal-save-btn')['addEventListener']('click',saveConnection),document['getElementById']('connection-type-sqlserver')['addEventListener']('change',updateConnectionFormVisibility),document['getElementById']('connection-type-ibmi')['addEventListener']('change',updateConnectionFormVisibility),document['getElementById']('connection-type-ssh')['addEventListener']('change',updateConnectionFormVisibility),['feature-sql','feature-build','feature-interactive','feature-ssh','feature-sync']['forEach'](_0x19a047=>document['getElementById'](_0x19a047)['addEventListener']('change',updateConnectionFormVisibility)),document['getElementById']('feature-sync')['addEventListener']('change',_0x37a398=>{const _0x25065b=document['getElementById']('feature-ssh');_0x37a398['target']['checked']?(_0x25065b['checked']=!![],_0x25065b['disabled']=!![]):_0x25065b['disabled']=![];}),document['getElementById']('connection-available-tasks')['addEventListener']('change',updateConnectionFormVisibility),document['getElementById']('connection-available-deploy')['addEventListener']('change',updateConnectionFormVisibility),document['getElementById']('connection-verify-cert')['addEventListener']('change',_0x31a3ed=>{document['getElementById']('connection-verify-cert-warning')['hidden']=_0x31a3ed['target']['checked'];}),document['getElementById']('connection-host')['addEventListener']('input',syncHostToPuiBaseUrl),document['getElementById']('connection-pui-base-url')['addEventListener']('input',syncPuiBaseUrlToHost),document['getElementById']('connection-password-toggle')['addEventListener']('click',toggleConnectionPasswordVisibility),document['querySelector']('.connection-ssh-key-toggle')['addEventListener']('click',toggleSshKeyVisibility);const _0x2cf1d5=document['getElementById']('connection-ssh-private-key');_0x2cf1d5['addEventListener']('beforeinput',handleSshKeyBeforeInput),_0x2cf1d5['addEventListener']('input',handleSshKeyInput),document['getElementById']('connection-ssh-import-btn')['addEventListener']('click',()=>{document['getElementById']('connection-ssh-file-input')['click']();}),document['getElementById']('connection-ssh-file-input')['addEventListener']('change',handleSshKeyFileImport),document['getElementById']('connection-ssh-pubkey-import-btn')['addEventListener']('click',()=>{document['getElementById']('connection-ssh-pubkey-file-input')['click']();}),document['getElementById']('connection-ssh-pubkey-file-input')['addEventListener']('change',handleSshPubKeyFileImport),document['getElementById']('connection-generate-keypair-btn')['addEventListener']('click',generateKeypair),document['getElementById']('connection-test-sql-btn')['addEventListener']('click',()=>testConnection('sql')),document['getElementById']('connection-test-ssh-btn')['addEventListener']('click',()=>testConnection('ssh')),document['getElementById']('connection-install-key-btn')['addEventListener']('click',openInstallKeyModal),document['querySelector']('#install-key-modal\x20.modal-close')['addEventListener']('click',closeInstallKeyModal),document['getElementById']('install-key-cancel-btn')['addEventListener']('click',closeInstallKeyModal),document['getElementById']('install-key-confirm-btn')['addEventListener']('click',installPublicKey),document['getElementById']('install-key-password-toggle')['addEventListener']('click',()=>{const _0x16d27d=document['getElementById']('install-key-password'),_0x127167=document['getElementById']('install-key-password-toggle'),_0x2e1902=_0x16d27d['type']==='password';_0x16d27d['type']=_0x2e1902?'text':'password',_0x127167['querySelector']('.eye-open')['style']['display']=_0x2e1902?'none':'',_0x127167['querySelector']('.eye-closed')['style']['display']=_0x2e1902?'':'none';}),document['getElementById']('connection-ibmi-helper-link')['addEventListener']('click',_0x4a8c1e=>{_0x4a8c1e['preventDefault'](),openIbmiHelperDialog();}),document['querySelector']('#ibmi-helper-modal\x20.modal-close')['addEventListener']('click',()=>document['getElementById']('ibmi-helper-modal')['hidden']=!![]),document['getElementById']('ibmi-helper-close-btn')['addEventListener']('click',()=>document['getElementById']('ibmi-helper-modal')['hidden']=!![]),document['querySelector']('#delete-connection-modal\x20.modal-close')['addEventListener']('click',closeDeleteConnectionModal),document['getElementById']('delete-connection-cancel-btn')['addEventListener']('click',closeDeleteConnectionModal),document['getElementById']('delete-connection-confirm-btn')['addEventListener']('click',confirmDeleteConnection),document['querySelectorAll']('input[name=\x22repo-entry-mode\x22]')['forEach'](_0x4386d=>{_0x4386d['addEventListener']('change',onRepoEntryModeChange);}),document['getElementById']('new-repo-source-provider')['addEventListener']('change',onRepoSourceProviderChange),document['querySelector']('#profile-secret-modal\x20.modal-close')['addEventListener']('click',closeProfileSecretModal),document['querySelector']('#profile-secret-modal\x20.modal-overlay')['addEventListener']('click',closeProfileSecretModal),document['getElementById']('profile-secret-cancel-btn')['addEventListener']('click',closeProfileSecretModal),document['getElementById']('profile-secret-save-btn')['addEventListener']('click',saveProfileSecret),document['getElementById']('profile-secret-name')['addEventListener']('change',updateProfileSecretInfo),document['querySelector']('#profile-parameter-modal\x20.modal-close')['addEventListener']('click',closeProfileParameterModal),document['querySelector']('#profile-parameter-modal\x20.modal-overlay')['addEventListener']('click',closeProfileParameterModal),document['getElementById']('profile-parameter-cancel-btn')['addEventListener']('click',closeProfileParameterModal),document['getElementById']('profile-parameter-save-btn')['addEventListener']('click',saveProfileParameter),document['getElementById']('profile-param-type')['addEventListener']('change',updateProfileParamTypeVisibility),document['getElementById']('profile-param-add-option-btn')['addEventListener']('click',addParameterOption),document['querySelector']('#uncommitted-changes-modal\x20.modal-close')['addEventListener']('click',closeUncommittedChangesModal),document['getElementById']('uncommitted-changes-close-btn')['addEventListener']('click',closeUncommittedChangesModal),document['getElementById']('repo-status')['addEventListener']('click',handleRepoStatusClick);const _0x3f9070=document['getElementById']('delete-repo-btn');_0x3f9070&&_0x3f9070['addEventListener']('click',()=>{state['currentRepo']!==null&&removeRepo(state['currentRepo']);});const _0x1312c7=document['getElementById']('delete-test-btn');_0x1312c7&&_0x1312c7['addEventListener']('click',()=>{state['currentTest']!==null&&removeTest(state['currentTest']);});const _0x192be6=document['getElementById']('delete-template-btn');_0x192be6&&_0x192be6['addEventListener']('click',()=>{state['currentTemplate']!==null&&removeTemplate(state['currentTemplate']);});document['getElementById']('env-description')['addEventListener']('input',markAsModified),document['getElementById']('env-image-name')['addEventListener']('input',markAsModified),document['getElementById']('env-timezone')['addEventListener']('input',markAsModified),document['getElementById']('env-screen-render-url')['addEventListener']('input',markAsModified);const _0x30103a=document['getElementById']('env-skills-manage-btn');if(_0x30103a)_0x30103a['addEventListener']('click',openSkillsModal);const _0x5a9e8b=document['getElementById']('skills-modal');if(_0x5a9e8b){const _0xec0bf8=_0x5a9e8b['querySelector']('.modal-close'),_0x54be86=_0x5a9e8b['querySelector']('.modal-overlay'),_0x457cf1=document['getElementById']('skills-modal-cancel-btn'),_0x5805c2=document['getElementById']('skills-modal-apply-btn'),_0xebf587=document['getElementById']('skills-modal-search-input'),_0x47a592=document['getElementById']('skills-modal-search-clear');_0xec0bf8?.['addEventListener']('click',closeSkillsModal),_0x54be86?.['addEventListener']('click',closeSkillsModal),_0x457cf1?.['addEventListener']('click',closeSkillsModal),_0x5805c2?.['addEventListener']('click',applySkillsModalSelection),_0xebf587?.['addEventListener']('input',renderSkillsModal),_0x47a592?.['addEventListener']('click',()=>{_0xebf587&&(_0xebf587['value']='',_0xebf587['focus']()),renderSkillsModal();});}const _0x71be75=document['getElementById']('actions-menu-btn'),_0x3c785e=document['getElementById']('actions-menu');_0x71be75['addEventListener']('click',_0x42ec49=>{_0x42ec49['stopPropagation']();const _0x7443ef=document['getElementById']('admin-menu');if(_0x7443ef)_0x7443ef['hidden']=!![];_0x3c785e['hidden']=!_0x3c785e['hidden'];}),document['addEventListener']('click',_0x2ff089=>{!_0x3c785e['hidden']&&!_0x3c785e['contains'](_0x2ff089['target'])&&(_0x3c785e['hidden']=!![]);}),_0x3c785e['addEventListener']('click',()=>{_0x3c785e['hidden']=!![];}),document['getElementById']('build-base-image-btn')?.['addEventListener']('click',openBaseImageBuildModal),document['querySelector']('#base-image-build-modal\x20.modal-close')['addEventListener']('click',closeBaseImageBuildModal),document['querySelector']('#base-image-build-modal\x20.modal-overlay')['addEventListener']('click',closeBaseImageBuildModal),document['getElementById']('base-image-build-cancel-btn')['addEventListener']('click',closeBaseImageBuildModal),document['getElementById']('base-image-build-start-btn')['addEventListener']('click',startBaseImageBuild),document['getElementById']('base-image-refresh-history-btn')['addEventListener']('click',loadBaseImageBuildHistory),document['getElementById']('delete-env-btn')['addEventListener']('click',deleteEnvironment),document['getElementById']('env-rename-btn')['addEventListener']('click',openRenameEnvModal),document['getElementById']('rename-env-cancel-btn')['addEventListener']('click',closeRenameEnvModal),document['getElementById']('rename-env-confirm-btn')['addEventListener']('click',confirmRenameEnvironment),document['getElementById']('rename-env-modal')['querySelector']('.modal-close')['addEventListener']('click',closeRenameEnvModal),document['getElementById']('rename-env-modal')['querySelector']('.modal-overlay')['addEventListener']('click',closeRenameEnvModal),setupEnvTabsScrolling(),setupContentNavScrolling();}function setupEnvTabsScrolling(){const _0x4de731=document['getElementById']('env-tabs-wrapper'),_0x430cb5=document['getElementById']('env-tabs-scroll-left'),_0x4a7dba=document['getElementById']('env-tabs-scroll-right');if(!_0x4de731||!_0x430cb5||!_0x4a7dba)return;const _0x427f76=0xc8;function _0x4fd0b6(){const {scrollLeft:_0x5ee562,scrollWidth:_0x5e6d66,clientWidth:_0x2aa238}=_0x4de731,_0x534aeb=_0x5ee562>0x1,_0x281034=_0x5ee562<_0x5e6d66-_0x2aa238-0x1;_0x430cb5['classList']['toggle']('visible',_0x534aeb),_0x4a7dba['classList']['toggle']('visible',_0x281034),_0x4de731['classList']['toggle']('fade-left',_0x534aeb),_0x4de731['classList']['toggle']('fade-right',_0x281034);}_0x430cb5['addEventListener']('click',()=>{_0x4de731['scrollBy']({'left':-_0x427f76,'behavior':'smooth'});}),_0x4a7dba['addEventListener']('click',()=>{_0x4de731['scrollBy']({'left':_0x427f76,'behavior':'smooth'});}),_0x4de731['addEventListener']('scroll',_0x4fd0b6);const _0x1b16d6=new ResizeObserver(()=>{_0x4fd0b6();});_0x1b16d6['observe'](_0x4de731),_0x4fd0b6(),window['updateEnvTabsScrollState']=_0x4fd0b6;}function scrollToActiveEnvTab(){const _0x1b4866=document['getElementById']('env-tabs-wrapper'),_0x97085a=document['querySelector']('.env-tab.active');if(!_0x1b4866||!_0x97085a)return;const _0x53cb1a=_0x1b4866['getBoundingClientRect'](),_0x58989c=_0x97085a['getBoundingClientRect']();if(_0x58989c['left']<_0x53cb1a['left'])_0x1b4866['scrollBy']({'left':_0x58989c['left']-_0x53cb1a['left']-0x10,'behavior':'smooth'});else _0x58989c['right']>_0x53cb1a['right']&&_0x1b4866['scrollBy']({'left':_0x58989c['right']-_0x53cb1a['right']+0x10,'behavior':'smooth'});}function setupContentNavScrolling(){const _0x2a34d8=document['getElementById']('content-nav'),_0x351ca9=document['getElementById']('content-nav-scroll-left'),_0x126b2f=document['getElementById']('content-nav-scroll-right');if(!_0x2a34d8||!_0x351ca9||!_0x126b2f)return;const _0x519c10=0x96;function _0x36d94f(){const {scrollLeft:_0x239384,scrollWidth:_0x357a1d,clientWidth:_0x2f84a3}=_0x2a34d8,_0x17c53e=_0x239384>0x1,_0x345c2b=_0x239384<_0x357a1d-_0x2f84a3-0x1;_0x351ca9['classList']['toggle']('visible',_0x17c53e),_0x126b2f['classList']['toggle']('visible',_0x345c2b),_0x2a34d8['classList']['toggle']('fade-left',_0x17c53e),_0x2a34d8['classList']['toggle']('fade-right',_0x345c2b);}_0x351ca9['addEventListener']('click',()=>{_0x2a34d8['scrollBy']({'left':-_0x519c10,'behavior':'smooth'});}),_0x126b2f['addEventListener']('click',()=>{_0x2a34d8['scrollBy']({'left':_0x519c10,'behavior':'smooth'});}),_0x2a34d8['addEventListener']('scroll',_0x36d94f);const _0x119746=new ResizeObserver(()=>{_0x36d94f();});_0x119746['observe'](_0x2a34d8),_0x36d94f(),window['updateContentNavScrollState']=_0x36d94f;}function scrollToActiveContentTab(){const _0x15e17f=document['getElementById']('content-nav'),_0x4cb973=document['querySelector']('.content-tab.active');if(!_0x15e17f||!_0x4cb973)return;const _0x4efede=_0x15e17f['getBoundingClientRect'](),_0x35b02f=_0x4cb973['getBoundingClientRect']();if(_0x35b02f['left']<_0x4efede['left'])_0x15e17f['scrollBy']({'left':_0x35b02f['left']-_0x4efede['left']-0x10,'behavior':'smooth'});else _0x35b02f['right']>_0x4efede['right']&&_0x15e17f['scrollBy']({'left':_0x35b02f['right']-_0x4efede['right']+0x10,'behavior':'smooth'});}async function loadEnvironments(){try{const _0xa27a3a=await API['get']('/environments');state['environments']=_0xa27a3a['environments']||[],renderEnvironmentsList();if(state['environments']['length']>0x0){const _0x43dc53=sessionStorage['getItem'](SESSION_KEY_ENV),_0x34b798=_0xa27a3a['default_environment'];let _0x319d64;if(_0x43dc53&&state['environments']['find'](_0x392f0b=>_0x392f0b['name']===_0x43dc53))_0x319d64=_0x43dc53;else _0x34b798&&state['environments']['find'](_0x49bf63=>_0x49bf63['name']===_0x34b798)?_0x319d64=_0x34b798:_0x319d64=state['environments'][0x0]['name'];await selectEnvironment(_0x319d64);}}catch(_0x5c9f15){console['error']('Failed\x20to\x20load\x20environments:',_0x5c9f15),document['getElementById']('env-tabs')['innerHTML']='<div\x20class=\x22error\x22>Failed\x20to\x20load\x20environments</div>';}}function renderEnvironmentsList(){const _0x4bda57=document['getElementById']('env-tabs');if(state['environments']['length']===0x0){_0x4bda57['innerHTML']='<div\x20class=\x22empty-state-inline\x22>No\x20environments\x20found</div>';return;}_0x4bda57['innerHTML']=state['environments']['map'](_0x5c3742=>'\x0a\x20\x20\x20\x20<button\x20class=\x22env-tab\x20'+(_0x5c3742['name']===state['selectedEnv']?'active':'')+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data-env=\x22'+_0x5c3742['name']+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20onclick=\x22selectEnvironment(\x27'+_0x5c3742['name']+'\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20'+_0x5c3742['name']+'\x0a\x20\x20\x20\x20</button>\x0a\x20\x20')['join'](''),window['updateEnvTabsScrollState']&&requestAnimationFrame(()=>{window['updateEnvTabsScrollState']();});}window['selectEnvironment']=async function(_0x918f0b){if(state['hasUnsavedChanges']){const _0x5d43b9=await ConfirmDialog['show']({'title':'Unsaved\x20Changes','message':'You\x20have\x20unsaved\x20changes\x20that\x20will\x20be\x20lost.\x20Continue?','confirmText':'Continue','danger':!![]});if(!_0x5d43b9)return;}const _0x5caabe=state['selectedEnv'];_0x5caabe&&_0x5caabe!==_0x918f0b&&resetBuildPanelForEnvironmentChange(),state['selectedEnv']=_0x918f0b,sessionStorage['setItem'](SESSION_KEY_ENV,_0x918f0b),state['hasUnsavedChanges']=![],document['querySelectorAll']('.env-tab')['forEach'](_0x8261a7=>{_0x8261a7['classList']['toggle']('active',_0x8261a7['dataset']['env']===_0x918f0b);}),scrollToActiveEnvTab(),document['getElementById']('env-empty-state')['hidden']=!![],document['getElementById']('env-details')['hidden']=![],await loadEnvironmentDetails(_0x918f0b);};async function loadEnvironmentDetails(_0x3dec50){try{const _0x5857af=await API['get']('/environments/'+_0x3dec50);if(_0x3dec50!==state['selectedEnv'])return;state['selectedEnvData']=_0x5857af,state['originalTemplates']=(_0x5857af['templates']||[])['map'](_0x1cefac=>_0x1cefac['filename']),state['hasUnsavedChanges']=![],state['currentRepo']=null,cleanupEditRepoAutocomplete();const _0x267662=['server-command-editor','file-editor','script-editor','template-md-editor'];for(const _0x227345 of _0x267662){const _0x5a681e=monacoEditors['get'](_0x227345);_0x5a681e&&(_0x5a681e['dispose'](),monacoEditors['delete'](_0x227345));}const _0x31c099=['agents-editor','readme-editor'];for(const _0x1e813b of _0x31c099){window['MarkdownFileEditor']&&window['MarkdownFileEditor']['has'](_0x1e813b)&&window['MarkdownFileEditor']['dispose'](_0x1e813b);const _0xcf7f74=monacoEditors['get'](_0x1e813b);_0xcf7f74&&(_0xcf7f74['dispose'](),monacoEditors['delete'](_0x1e813b));}state['currentTest']=null,state['currentTemplate']=null,state['currentDeployProfile']=null,state['currentDeployProfileData']=null,state['readmeContent']=null,state['agentsContent']=null,currentScript='pre-clone',state['currentDeploymentId']=null,stopDeploymentPolling();const _0x2ac0de=document['getElementById']('deployment-progress-panel');_0x2ac0de&&(_0x2ac0de['hidden']=!![]),state['deploymentParamCache']={},updateButtonStates(),renderEnvironmentDetails(),setupTabEventListeners(),state['currentTab']==='deploy'&&loadDeploymentHistory();}catch(_0x5b0b52){console['error']('Failed\x20to\x20load\x20environment\x20details:',_0x5b0b52),Utils['showError']('Failed\x20to\x20load\x20environment\x20details');}}function setupTabEventListeners(){const _0x23aa9c=document['getElementById']('rebuild-schedule-enabled-build-tab'),_0x45bf43=document['getElementById']('rebuild-interval-build-tab');if(_0x23aa9c)_0x23aa9c['addEventListener']('change',toggleRebuildSchedule);if(_0x45bf43)_0x45bf43['addEventListener']('input',markAsModified);const _0x33011e=document['getElementById']('server-enabled'),_0x6b6f1c=document['getElementById']('server-name'),_0x4eb170=document['getElementById']('server-proxy'),_0x72bca5=document['getElementById']('server-qa-url'),_0x29a27c=document['getElementById']('server-auth-user-property'),_0x1e8989=document['getElementById']('server-auth-password-property'),_0x262cea=document['getElementById']('add-port-btn'),_0x2d6cf9=document['getElementById']('add-url-btn'),_0x2d169c=document['getElementById']('clear-primary-url-btn'),_0x2d570e=document['getElementById']('add-proxy-header-btn'),_0x523158=document['getElementById']('add-port-qa-url-btn');if(_0x33011e)_0x33011e['addEventListener']('change',toggleServerConfig);if(_0x6b6f1c)_0x6b6f1c['addEventListener']('input',markAsModified);if(_0x4eb170)_0x4eb170['addEventListener']('input',markAsModified);if(_0x72bca5)_0x72bca5['addEventListener']('input',markAsModified);if(_0x29a27c)_0x29a27c['addEventListener']('input',markAsModified);if(_0x1e8989)_0x1e8989['addEventListener']('input',markAsModified);if(_0x262cea)_0x262cea['addEventListener']('click',addPort);if(_0x2d6cf9)_0x2d6cf9['addEventListener']('click',addURL);if(_0x2d169c)_0x2d169c['addEventListener']('click',clearPrimaryURL);if(_0x2d570e)_0x2d570e['addEventListener']('click',addProxyHeader);if(_0x523158)_0x523158['addEventListener']('click',addPortQaUrl);const _0x389cf5=document['getElementById']('agents-editor'),_0x55fa29=document['getElementById']('preview-agents-btn');_0x389cf5&&_0x389cf5['addEventListener']('input',()=>{markAsModified(),updateAgentStats();});if(_0x55fa29)_0x55fa29['addEventListener']('click',toggleAgentsPreview);document['querySelectorAll']('#scripts-section-body\x20.script-tab')['forEach'](_0x2f35f4=>{_0x2f35f4['addEventListener']('click',()=>{saveCurrentScriptToState(),switchScript(_0x2f35f4['dataset']['script']);});});const _0x161fcb=document['getElementById']('scripts-section-header');_0x161fcb&&_0x161fcb['addEventListener']('click',toggleScriptsSection);const _0x548b77=document['getElementById']('preview-dockerfile-btn');_0x548b77&&_0x548b77['addEventListener']('click',showDockerfilePreview);const _0x231b9c=document['getElementById']('dockerfile-preview-modal');_0x231b9c&&(_0x231b9c['querySelector']('.modal-close')['addEventListener']('click',closeDockerfilePreviewModal),_0x231b9c['querySelector']('.modal-overlay')['addEventListener']('click',closeDockerfilePreviewModal),document['getElementById']('dockerfile-preview-close-btn')['addEventListener']('click',closeDockerfilePreviewModal),document['getElementById']('dockerfile-copy-btn')['addEventListener']('click',copyDockerfileToClipboard));const _0x2415cd=document['getElementById']('preview-template-btn');if(_0x2415cd)_0x2415cd['addEventListener']('click',toggleTemplatePreview);initializeAutomationFormOptions(),initializeAutomationModalCustomSelects(),initializeAutomationInstructionsEditor();const _0x59c8ed=document['getElementById']('add-automation-btn');if(_0x59c8ed)_0x59c8ed['addEventListener']('click',()=>openAutomationModal('create'));const _0x590788=document['getElementById']('automations-empty-create-btn');if(_0x590788)_0x590788['addEventListener']('click',()=>openAutomationModal('create'));const _0x31a883=document['getElementById']('automation-history-back-btn');if(_0x31a883)_0x31a883['addEventListener']('click',closeAutomationHistoryView);const _0x51b53a=document['getElementById']('automation-history-run-btn');if(_0x51b53a)_0x51b53a['addEventListener']('click',triggerViewedAutomation);const _0x193849=document['getElementById']('automations-table-body');_0x193849&&(_0x193849['addEventListener']('click',handleAutomationTableActionClick),_0x193849['addEventListener']('change',handleAutomationTableToggleChange));const _0x21278e=document['getElementById']('automation-modal'),_0x5be713=_0x21278e?.['querySelector']('.modal-overlay');if(_0x5be713)_0x5be713['addEventListener']('click',closeAutomationModal);const _0x57e1a3=document['getElementById']('automation-modal-close');if(_0x57e1a3)_0x57e1a3['addEventListener']('click',closeAutomationModal);const _0x39afce=document['getElementById']('automation-cancel-btn');if(_0x39afce)_0x39afce['addEventListener']('click',closeAutomationModal);const _0x42e895=document['getElementById']('automation-save-btn');if(_0x42e895)_0x42e895['addEventListener']('click',saveAutomationFromModal);const _0x50b585=document['getElementById']('automation-frequency');_0x50b585&&_0x50b585['addEventListener']('change',()=>{updateAutomationFrequencyFields(),updateAutomationScheduleSummary();});document['querySelectorAll']('#automation-daily-time,\x20#automation-weekly-day,\x20#automation-weekly-time,\x20#automation-monthly-day,\x20#automation-monthly-time,\x20#automation-recurring-interval,\x20#automation-recurring-start-hour,\x20#automation-recurring-end-hour,\x20#automation-custom-cron')['forEach'](_0x577c7e=>{_0x577c7e['addEventListener']('change',updateAutomationScheduleSummary),_0x577c7e['addEventListener']('input',updateAutomationScheduleSummary);});const _0x223bb6=document['getElementById']('automation-recurring-days');_0x223bb6&&_0x223bb6['addEventListener']('change',updateAutomationScheduleSummary);const _0x613c2e=document['getElementById']('automation-agent-name');if(_0x613c2e)_0x613c2e['addEventListener']('change',updateAutomationAgentFields);document['querySelectorAll']('input[name=\x22automation-task-mode\x22]')['forEach'](_0x2d20d1=>{_0x2d20d1['addEventListener']('change',updateAutomationTaskMode);});const _0x3a8d69=document['getElementById']('automation-template-name');_0x3a8d69&&_0x3a8d69['addEventListener']('change',()=>{renderAutomationTemplateParameters();});}function updateTabBadge(_0x352c84,_0x144bf2){const _0x2ad904=document['getElementById'](_0x352c84);if(!_0x2ad904)return;_0x144bf2>0x0?(_0x2ad904['textContent']=_0x144bf2,_0x2ad904['hidden']=![]):_0x2ad904['hidden']=!![];}function renderEnvironmentDetails(){const _0x1da87d=state['selectedEnvData'];updateTabBadge('badge-secrets',0x0),updateTabBadge('badge-automations',0x0),updateTabBadge('badge-access',0x0),updateTabBadge('badge-deploy',(_0x1da87d['deployment_profiles']||[])['length']),document['getElementById']('env-name-display')['textContent']=_0x1da87d['name'],document['getElementById']('env-description-display')['textContent']=_0x1da87d['description']||'No\x20description',initializeCustomSelects(),defaultAgentSelectInitializing=!![],document['getElementById']('env-description')['value']=_0x1da87d['description']||'',defaultAgentSelect['select'](_0x1da87d['default_agent']||'claude'),document['getElementById']('env-image-name')['value']=_0x1da87d['image_name']||'',document['getElementById']('env-timezone')['value']=_0x1da87d['timezone']||'',document['getElementById']('env-screen-render-url')['value']=_0x1da87d['screenRenderUrl']||'',state['selectedEnvData']['skills']=Array['isArray'](_0x1da87d['skills'])?_0x1da87d['skills']:[];const _0x242fda=_0x1da87d['rebuild_schedule']||{},_0x1ec211=_0x242fda['enabled']===!![];document['getElementById']('rebuild-schedule-enabled-build-tab')['checked']=_0x1ec211,document['getElementById']('rebuild-interval-build-tab')['value']=_0x242fda['interval_hours']||0x18,document['getElementById']('rebuild-schedule-config-build-tab')['hidden']=!_0x1ec211,defaultAgentSelectInitializing=![];const _0x225044=_0x1da87d['repos']?.['length']||0x0,_0x42baca=Object['keys'](_0x1da87d['tests']||{})['length'],_0x588375=_0x1da87d['templates']?.['length']||0x0,_0x47274a=_0x1da87d['deployment_profiles']?.['length']||0x0;document['getElementById']('stat-repos')['textContent']=_0x225044,document['getElementById']('stat-repos-label')['textContent']=_0x225044===0x1?'Repository':'Repositories',document['getElementById']('stat-tests')['textContent']=_0x42baca,document['getElementById']('stat-tests-label')['textContent']=_0x42baca===0x1?'Test\x20Command':'Test\x20Commands',document['getElementById']('stat-templates')['textContent']=_0x588375,document['getElementById']('stat-templates-label')['textContent']=_0x588375===0x1?'Template':'Templates',document['getElementById']('stat-deploy-profiles')['textContent']=_0x47274a,document['getElementById']('stat-deploy-profiles-label')['textContent']=_0x47274a===0x1?'Deploy\x20Profile':'Deploy\x20Profiles',renderReadme(),renderEnvironmentSkills();const _0xc93b46=state['selectedEnv'];loadAvailableSkills()['then'](()=>{if(state['selectedEnv']!==_0xc93b46)return;renderEnvironmentSkills(),state['skillsModalOpen']&&renderSkillsModal();}),renderRepos(),renderServerConfig(),renderAgentInstructions(),renderTests(),renderTemplates(),state['viewingAutomationId']=null,closeAutomationHistoryView(),renderAutomationAgentOptions(_0x1da87d['default_agent']||''),renderAutomations();const _0x4a04e2=state['selectedEnv'];loadSecrets()['then'](()=>{if(state['selectedEnv']!==_0x4a04e2)return;renderSecrets();}),loadConnections(),renderConnections();const _0x1f711c=state['selectedEnv'];API['getBindings']({'environment':state['selectedEnv']})['then'](_0x455a10=>{if(state['selectedEnv']!==_0x1f711c)return;updateTabBadge('badge-access',(_0x455a10['bindings']||[])['length']);})['catch'](()=>{}),state['currentTab']==='build'&&loadBuildHistory();}async function loadAvailableSkills(){if(state['availableSkillsLoaded']||state['availableSkillsLoading'])return;state['availableSkillsLoading']=!![],state['availableSkillsError']=null;try{const _0x4b41ba=await API['getSkills']();state['availableSkills']=_0x4b41ba['skills']||[],state['availableSkillsLoaded']=!![];}catch(_0x48b832){console['error']('Failed\x20to\x20load\x20skills:',_0x48b832),state['availableSkillsError']=_0x48b832['message']||'Failed\x20to\x20load\x20skills.';}finally{state['availableSkillsLoading']=![];}}function getSkillDisplayInfo(_0x1e7d14){const _0x56d37e=state['availableSkills']['find'](_0x5abd5b=>_0x5abd5b['id']===_0x1e7d14);if(_0x56d37e)return{'id':_0x56d37e['id'],'name':_0x56d37e['name']||_0x56d37e['id'],'description':_0x56d37e['description']||''};return{'id':_0x1e7d14,'name':_0x1e7d14,'description':''};}function renderEnvironmentSkills(){const _0x33ff72=document['getElementById']('env-skills-chips'),_0x536dd0=document['getElementById']('env-skills-empty');if(!_0x33ff72||!_0x536dd0)return;const _0x488d8b=state['selectedEnvData']?.['skills']||[];_0x33ff72['innerHTML']='';if(_0x488d8b['length']===0x0){_0x33ff72['hidden']=!![],_0x33ff72['classList']['add']('skills-chip-grid-empty'),_0x536dd0['hidden']=![];return;}_0x33ff72['hidden']=![],_0x33ff72['classList']['remove']('skills-chip-grid-empty'),_0x536dd0['hidden']=!![],_0x488d8b['forEach'](_0x3e1e03=>{const _0xc9a5ce=getSkillDisplayInfo(_0x3e1e03),_0xa68981=document['createElement']('div');_0xa68981['className']='skill-chip',_0xa68981['dataset']['skillId']=_0xc9a5ce['id'],_0xa68981['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22skill-chip-name\x22>'+Utils['escapeHtml'](_0xc9a5ce['name'])+'</span>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22skill-chip-id\x22>'+Utils['escapeHtml'](_0xc9a5ce['id'])+'</span>\x0a\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22skill-chip-remove\x22\x20aria-label=\x22Remove\x20skill\x22>×</button>\x0a\x20\x20\x20\x20';const _0x1c54c5=_0xa68981['querySelector']('.skill-chip-remove');_0x1c54c5['addEventListener']('click',()=>removeSkillFromEnvironment(_0xc9a5ce['id'])),_0x33ff72['appendChild'](_0xa68981);});}function removeSkillFromEnvironment(_0x457f54){const _0x221fdf=getConnectionRequiredSkills();if(_0x221fdf['has'](_0x457f54)){Utils['showError']('Cannot\x20remove\x20skill\x20\x22'+_0x457f54+'\x22\x20—\x20it\x20is\x20required\x20by\x20an\x20external\x20connection.\x20Remove\x20the\x20connection\x20first.');return;}const _0x205ed4=state['selectedEnvData']?.['skills']||[],_0x3436ab=_0x205ed4['filter'](_0x2aeb04=>_0x2aeb04!==_0x457f54);state['selectedEnvData']['skills']=_0x3436ab,markAsModified(),renderEnvironmentSkills(),state['skillsModalOpen']&&(state['skillsModalSelection']=[..._0x3436ab],renderSkillsModal());}function openSkillsModal(){if(!state['selectedEnvData'])return;const _0x5e106d=document['getElementById']('skills-modal');if(!_0x5e106d)return;state['skillsModalOpen']=!![],state['skillsModalSelection']=[...state['selectedEnvData']['skills']||[]];const _0x23eaee=document['getElementById']('skills-modal-search-input');_0x23eaee&&(_0x23eaee['value']=''),_0x5e106d['hidden']=![],loadAvailableSkills()['then'](()=>{renderSkillsModal(),_0x23eaee&&_0x23eaee['focus']();}),renderSkillsModal();}function closeSkillsModal(){const _0x142975=document['getElementById']('skills-modal');_0x142975&&(_0x142975['hidden']=!![]),state['skillsModalOpen']=![];}function applySkillsModalSelection(){if(!state['selectedEnvData'])return;state['selectedEnvData']['skills']=[...state['skillsModalSelection']],markAsModified(),renderEnvironmentSkills(),closeSkillsModal();}function renderSkillsModal(){const _0x254663=document['getElementById']('skills-modal-list'),_0x5cdcda=document['getElementById']('skills-modal-selected-list'),_0x3d738e=document['getElementById']('skills-modal-selected-empty'),_0x144b88=document['getElementById']('skills-modal-selected-count'),_0x2af183=document['getElementById']('skills-modal-search-input'),_0x257fa0=document['getElementById']('skills-modal-search-clear'),_0x554ae1=document['getElementById']('skills-modal-search-meta'),_0x1f8601=document['getElementById']('skills-modal-error'),_0x3d3df4=document['getElementById']('skills-modal-loading');if(!_0x254663||!_0x5cdcda||!_0x3d738e||!_0x144b88)return;const _0x197c62=(_0x2af183?.['value']||'')['trim']()['toLowerCase']();_0x257fa0&&(_0x257fa0['hidden']=!_0x197c62);_0x1f8601&&(_0x1f8601['hidden']=!![]);_0x3d3df4&&(_0x3d3df4['hidden']=!state['availableSkillsLoading']);state['availableSkillsError']&&_0x1f8601&&(_0x1f8601['textContent']=state['availableSkillsError'],_0x1f8601['hidden']=![]);const _0x127d0b=state['availableSkills']||[],_0x4d275f=_0x127d0b['filter'](_0x4812b1=>{const _0x10c026=(_0x4812b1['name']||'')['toLowerCase'](),_0x59e20c=(_0x4812b1['id']||'')['toLowerCase'](),_0x8c909b=(_0x4812b1['description']||'')['toLowerCase']();return!_0x197c62||_0x10c026['includes'](_0x197c62)||_0x59e20c['includes'](_0x197c62)||_0x8c909b['includes'](_0x197c62);});_0x254663['innerHTML']='';if(!state['availableSkillsLoading']&&_0x4d275f['length']===0x0){const _0x26fd36=document['createElement']('div');_0x26fd36['className']='text-muted',_0x26fd36['textContent']=_0x197c62?'No\x20skills\x20match\x20your\x20search.':'No\x20skills\x20available\x20yet.',_0x254663['appendChild'](_0x26fd36);}_0x4d275f['forEach'](_0x3a12be=>{const _0x100077=state['skillsModalSelection']['includes'](_0x3a12be['id']),_0x2d4b2b=document['createElement']('div');_0x2d4b2b['className']='skills-modal-item'+(_0x100077?'\x20selected':''),_0x2d4b2b['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20<label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20'+(_0x100077?'checked':'')+'\x20aria-label=\x22Select\x20'+Utils['escapeHtml'](_0x3a12be['name']||_0x3a12be['id'])+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22skills-modal-item-name\x22>'+Utils['escapeHtml'](_0x3a12be['name']||_0x3a12be['id'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22skills-modal-item-id\x22>'+Utils['escapeHtml'](_0x3a12be['id'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22skills-modal-item-desc\x22>'+Utils['escapeHtml'](_0x3a12be['description']||'No\x20description\x20provided.')+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20';const _0x269412=_0x2d4b2b['querySelector']('input[type=\x22checkbox\x22]');_0x269412['addEventListener']('change',_0x2b35a3=>{toggleSkillSelection(_0x3a12be['id'],_0x2b35a3['target']['checked']);}),_0x254663['appendChild'](_0x2d4b2b);}),_0x5cdcda['innerHTML']='';const _0x6050d0=state['skillsModalSelection']['map'](getSkillDisplayInfo);_0x144b88['textContent']=_0x6050d0['length']['toString']();_0x6050d0['length']===0x0?_0x3d738e['hidden']=![]:(_0x3d738e['hidden']=!![],_0x6050d0['forEach'](_0x1681c6=>{const _0x2fc71c=document['createElement']('div');_0x2fc71c['className']='skill-chip',_0x2fc71c['dataset']['skillId']=_0x1681c6['id'],_0x2fc71c['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22skill-chip-name\x22>'+Utils['escapeHtml'](_0x1681c6['name'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22skill-chip-id\x22>'+Utils['escapeHtml'](_0x1681c6['id'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22skill-chip-remove\x22\x20aria-label=\x22Remove\x20skill\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20';const _0x5939bc=_0x2fc71c['querySelector']('.skill-chip-remove');_0x5939bc['addEventListener']('click',()=>toggleSkillSelection(_0x1681c6['id'],![])),_0x5cdcda['appendChild'](_0x2fc71c);}));if(_0x554ae1){if(state['availableSkillsLoading'])_0x554ae1['textContent']='Loading\x20skills...';else{if(!_0x127d0b['length'])_0x554ae1['textContent']='No\x20skills\x20available\x20yet.';else _0x197c62?_0x554ae1['textContent']=_0x4d275f['length']?_0x4d275f['length']+'\x20skill'+(_0x4d275f['length']===0x1?'':'s')+'\x20found':'No\x20matching\x20skills\x20found.':_0x554ae1['textContent']=_0x127d0b['length']+'\x20skill'+(_0x127d0b['length']===0x1?'':'s')+'\x20available';}}}function toggleSkillSelection(_0x49087b,_0x2c31a6){const _0x31b558=new Set(state['skillsModalSelection']);_0x2c31a6?_0x31b558['add'](_0x49087b):_0x31b558['delete'](_0x49087b),state['skillsModalSelection']=Array['from'](_0x31b558),renderSkillsModal();}async function refreshRepositoryGitStatus(){try{const _0x52209b=await _0x383b6b['fetchGitStatus']();state['changedFiles']=_0x52209b['changedFiles']||[],state['setupRepoAuth']=_0x52209b['setupRepoAuth']||null,invalidateDiffCache(),_0x383b6b['updateGitStatusIndicator']({'statusIcon':document['getElementById']('repo-status-icon'),'statusText':document['getElementById']('repo-status-text'),'branchText':document['getElementById']('repo-branch-text'),'authBadge':document['getElementById']('repo-auth-mode-badge'),'container':document['getElementById']('repo-status'),'commitBtn':document['getElementById']('repo-commit-btn'),'discardBtn':document['getElementById']('repo-discard-btn')},_0x52209b),updatePushButtonState(_0x52209b);}catch(_0x5ec8f2){console['error']('Failed\x20to\x20get\x20repository\x20git\x20status:',_0x5ec8f2),_0x383b6b['showGitStatusError']({'statusIcon':document['getElementById']('repo-status-icon'),'statusText':document['getElementById']('repo-status-text'),'authBadge':document['getElementById']('repo-auth-mode-badge')}),updatePushButtonState(null);}}function invalidateDiffCache(){state['uncommittedDiff']=null,state['uncommittedDiffFiles']=null;}async function loadUncommittedDiff(){if(state['uncommittedDiff']!==null)return;try{const _0x1abc1d=await _0x383b6b['fetchGitDiff']();state['uncommittedDiff']=_0x1abc1d['diff']||'',state['uncommittedDiffFiles']=parsePatchContent(state['uncommittedDiff']);}catch(_0x4bba6e){console['error']('Failed\x20to\x20fetch\x20diff:',_0x4bba6e),state['uncommittedDiff']='',state['uncommittedDiffFiles']=[];}}async function handleFileClick(_0x23a6ff,_0x88dbfa){const _0x208ce5=_0x88dbfa['nextElementSibling'];if(_0x208ce5&&_0x208ce5['classList']['contains']('inline-file-diff')){_0x208ce5['remove'](),_0x88dbfa['classList']['remove']('diff-expanded');return;}const _0x135642=_0x88dbfa['closest']('ul');_0x135642['querySelectorAll']('.inline-file-diff')['forEach'](_0x1ff267=>_0x1ff267['remove']()),_0x135642['querySelectorAll']('.diff-expanded')['forEach'](_0x2bf63d=>_0x2bf63d['classList']['remove']('diff-expanded')),_0x88dbfa['classList']['add']('diff-expanded');const _0x59688d=document['createElement']('li');_0x59688d['className']='inline-file-diff\x20inline-file-diff-loading',_0x59688d['textContent']='Loading\x20diff...',_0x88dbfa['after'](_0x59688d),await loadUncommittedDiff();const _0x2e1876=state['uncommittedDiffFiles']?.['find'](_0x1a7b79=>_0x1a7b79['newPath']===_0x23a6ff||_0x1a7b79['oldPath']===_0x23a6ff);if(!_0x2e1876){_0x59688d['innerHTML']='<div\x20class=\x22inline-diff-empty\x22>No\x20diff\x20available\x20for\x20this\x20file</div>';return;}const _0x5cb24d=renderUnifiedDiff([_0x2e1876],'env-uncommitted-'+safeBase64(_0x23a6ff));_0x59688d['className']='inline-file-diff',_0x59688d['innerHTML']=_0x5cb24d,_0x59688d['querySelectorAll']('.file-diff-header')['forEach'](_0x26a6c=>{_0x26a6c['addEventListener']('click',_0x5288d5=>{if(_0x5288d5['target']['closest']('.file-diff-toggle-btn'))return;const _0x3af7aa=_0x26a6c['dataset']['diffId'],_0x323fc6=document['getElementById'](_0x3af7aa);if(_0x323fc6){const _0x372350=_0x323fc6['classList']['toggle']('collapsed'),_0x3c0ce0=_0x26a6c['querySelector']('.file-diff-toggle-btn');if(_0x3c0ce0)_0x3c0ce0['dataset']['collapsed']=String(_0x372350);}});}),_0x59688d['querySelectorAll']('.file-diff-toggle-btn')['forEach'](_0x1ae890=>{_0x1ae890['addEventListener']('click',_0x34318d=>{_0x34318d['stopPropagation']();const _0xc63ac5=document['getElementById'](_0x1ae890['dataset']['diffId']);if(_0xc63ac5){const _0x29799a=_0xc63ac5['classList']['toggle']('collapsed');_0x1ae890['dataset']['collapsed']=String(_0x29799a);}});});}function updatePushButtonState(_0x3cce6e){const _0x4be118=document['getElementById']('repo-push-btn');if(!_0x4be118)return;const _0x2b9d94=Boolean(_0x3cce6e)&&!_0x3cce6e['hasUncommittedChanges']&&Number(_0x3cce6e['ahead']||0x0)>0x0&&Number(_0x3cce6e['behind']||0x0)===0x0;_0x4be118['hidden']=!_0x2b9d94,_0x4be118['disabled']=!_0x2b9d94;}async function pushRepositoryChanges(){const _0x36d0ba=document['getElementById']('repo-push-btn');if(!_0x36d0ba||_0x36d0ba['hidden']||_0x36d0ba['disabled'])return;try{const _0x4b9d1c=document['getElementById']('repo-status-icon'),_0x350021=document['getElementById']('repo-status-text');_0x36d0ba['disabled']=!![],_0x36d0ba['innerHTML']='<span>📤</span>\x20Pushing...',_0x4b9d1c['textContent']='📤',_0x350021['textContent']='Pushing\x20to\x20git...',await API['post']('/environments/git/push'),Utils['showSuccess']('Successfully\x20pushed\x20local\x20commits'),await refreshRepositoryGitStatus();}catch(_0x57379d){_0x57379d['message']==='setup_repo_user_not_connected'?(savePendingSetupRepoAction('push'),showSetupRepoConnectPrompt(state['setupRepoAuth']?.['provider'],state['setupRepoAuth']?.['provider_type'])):Utils['showError'](_0x57379d['message']||'Failed\x20to\x20push\x20commits'),await refreshRepositoryGitStatus();}finally{_0x36d0ba['disabled']=![],_0x36d0ba['innerHTML']='<span>📤</span>\x20Push\x20to\x20Git';}}async function pullRepositoryChanges(){try{const _0x262edb=document['getElementById']('repo-pull-btn'),_0x2c7968=document['getElementById']('repo-status-icon'),_0x50f741=document['getElementById']('repo-status-text');_0x262edb['disabled']=!![],_0x262edb['innerHTML']='<span>🔄</span>\x20Pulling...',_0x2c7968['textContent']='🔄',_0x50f741['textContent']='Pulling\x20from\x20git...';const _0x3ad412=await API['post']('/environments/git/pull');_0x3ad412['conflicts']?(Utils['showError']('Pull\x20resulted\x20in\x20conflicts.\x20Please\x20resolve\x20manually.'),_0x2c7968['textContent']='⚠️',_0x50f741['textContent']='Conflicts\x20detected'):(Utils['showSuccess']('Successfully\x20pulled\x20latest\x20changes'),await refreshRepositoryGitStatus(),state['selectedEnv']&&await loadEnvironmentDetails(state['selectedEnv']));}catch(_0x4fd57e){_0x4fd57e['message']==='setup_repo_user_not_connected'?(savePendingSetupRepoAction('pull'),showSetupRepoConnectPrompt(state['setupRepoAuth']?.['provider'],state['setupRepoAuth']?.['provider_type'])):Utils['showError']('Failed\x20to\x20pull\x20changes'),await refreshRepositoryGitStatus();}finally{const _0x2d41c8=document['getElementById']('repo-pull-btn');_0x2d41c8['disabled']=![],_0x2d41c8['innerHTML']='<span>🔄</span>\x20Pull\x20from\x20Git';}}const PENDING_SETUP_REPO_ACTION_KEY='pendingSetupRepoAction_environments';function savePendingSetupRepoAction(_0x5a507a,_0x27224f={}){sessionStorage['setItem'](PENDING_SETUP_REPO_ACTION_KEY,JSON['stringify']({'action':_0x5a507a,'data':_0x27224f,'timestamp':Date['now']()}));}function loadAndClearPendingSetupRepoAction(){try{const _0x5ec22d=sessionStorage['getItem'](PENDING_SETUP_REPO_ACTION_KEY);sessionStorage['removeItem'](PENDING_SETUP_REPO_ACTION_KEY);if(!_0x5ec22d)return null;const _0x1d1fd1=JSON['parse'](_0x5ec22d);if(Date['now']()-_0x1d1fd1['timestamp']>0xa*0x3c*0x3e8)return null;return _0x1d1fd1;}catch{return null;}}async function handleSetupRepoOAuthReturn(){const _0x46f9f2=new URLSearchParams(window['location']['search']);if(_0x46f9f2['get']('git_connection')!=='success')return;const _0x1097ae=new URL(window['location']);_0x1097ae['searchParams']['delete']('git_connection'),_0x1097ae['searchParams']['delete']('provider'),window['history']['replaceState']({},'',_0x1097ae),Utils['showSuccess']('Account\x20connected\x20successfully');const _0x58c321=loadAndClearPendingSetupRepoAction();if(!_0x58c321)return;if(_0x58c321['action']==='pull')setTimeout(()=>pullRepositoryChanges(),0x1f4);else{if(_0x58c321['action']==='push')setTimeout(()=>pushRepositoryChanges(),0x1f4);else{if(_0x58c321['action']==='commit'){const {message:_0x54c29b,pullFirst:_0x1c6917,push:_0x5c0a84}=_0x58c321['data'];setTimeout(async()=>{try{const _0x262020=await API['post']('/environments/git/commit',{'message':_0x54c29b,'pullFirst':_0x1c6917,'push':_0x5c0a84});_0x262020['success']&&(Utils['showSuccess'](_0x5c0a84?'Changes\x20committed\x20and\x20pushed':'Changes\x20committed\x20locally'),state['modifiedFiles']['clear'](),updateButtonStates(),await refreshRepositoryGitStatus(),state['selectedEnv']&&await loadEnvironmentDetails(state['selectedEnv']));}catch(_0x4368c2){console['error']('Commit\x20retry\x20failed:',_0x4368c2),Utils['showError'](_0x4368c2['message']||'Failed\x20to\x20commit\x20changes');}},0x1f4);}}}}function initGitConnectionsRequiredModal(){const _0x56f472=document['getElementById']('git-connections-required-modal');if(!_0x56f472)return;const _0x44744f=_0x56f472['querySelector']('.modal-close'),_0x3d2af4=document['getElementById']('git-connections-close-btn'),_0x297c95=_0x56f472['querySelector']('.modal-overlay'),_0x396a3e=()=>{_0x56f472['hidden']=!![];};_0x44744f?.['addEventListener']('click',_0x396a3e),_0x3d2af4?.['addEventListener']('click',_0x396a3e),_0x297c95?.['addEventListener']('click',_0x396a3e);}function showSetupRepoConnectPrompt(_0x155951,_0x2c6d0f){const _0x2ca2b6=document['getElementById']('git-connections-required-modal'),_0x53baa5=document['getElementById']('git-connections-required-list');if(!_0x2ca2b6||!_0x53baa5){Utils['showError']('Your\x20account\x20is\x20not\x20connected\x20to\x20provider\x20\x22'+_0x155951+'\x22.\x20Please\x20connect\x20via\x20Settings.');return;}const _0x4918d1=_0x2c6d0f==='github'?'<svg\x20viewBox=\x220\x200\x2098\x2096\x22\x20fill=\x22currentColor\x22><path\x20fill-rule=\x22evenodd\x22\x20clip-rule=\x22evenodd\x22\x20d=\x22M48.854\x200C21.839\x200\x200\x2022\x200\x2049.217c0\x2021.756\x2013.993\x2040.172\x2033.405\x2046.69\x202.427.49\x203.316-1.059\x203.316-2.362\x200-1.141-.08-5.052-.08-9.127-13.59\x202.934-16.42-5.867-16.42-5.867-2.184-5.704-5.42-7.17-5.42-7.17-4.448-3.015.324-3.015.324-3.015\x204.934.326\x207.523\x205.052\x207.523\x205.052\x204.367\x207.496\x2011.404\x205.378\x2014.235\x204.074.404-3.178\x201.699-5.378\x203.074-6.6-10.839-1.141-22.243-5.378-22.243-24.283\x200-5.378\x201.94-9.778\x205.014-13.2-.485-1.222-2.184-6.275.486-13.038\x200\x200\x204.125-1.304\x2013.426\x205.052a46.97\x2046.97\x200\x200\x201\x2012.214-1.63c4.125\x200\x208.33.571\x2012.213\x201.63\x209.302-6.356\x2013.427-5.052\x2013.427-5.052\x202.67\x206.763.97\x2011.816.485\x2013.038\x203.155\x203.422\x205.015\x207.822\x205.015\x2013.2\x200\x2018.905-11.404\x2023.06-22.324\x2024.283\x201.78\x201.548\x203.316\x204.481\x203.316\x209.126\x200\x206.6-.08\x2011.897-.08\x2013.526\x200\x201.304.89\x202.853\x203.316\x202.364\x2019.412-6.52\x2033.405-24.935\x2033.405-46.691C97.707\x2022\x2075.788\x200\x2048.854\x200z\x22/></svg>':'<svg\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22currentColor\x22><path\x20d=\x22M13.05\x204.24L6.56\x2018.05l2.09.81L18\x209.77l.3-.41-5.25-5.12zm-4.21\x202.6l5.79\x205.64-.42.4-9.28\x202.6\x203.91-8.64zm-1.79\x2010.1l9.31-2.59.43-.39\x201.61\x201.57L4.67\x2019.2l2.38-2.26z\x22/></svg>';_0x53baa5['innerHTML']='\x0a\x20\x20\x20\x20<div\x20class=\x22git-provider-card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22git-provider-card-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22git-provider-card-info\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22git-provider-card-icon\x22>'+_0x4918d1+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22git-provider-card-details\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22git-provider-card-name\x22>'+Utils['escapeHtml'](_0x155951)+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-primary\x20btn-small\x22\x20onclick=\x22connectGitProviderFromModal(\x27'+Utils['escapeHtml'](_0x155951)+'\x27)\x22>Connect</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20',_0x2ca2b6['hidden']=![];}window['connectGitProviderFromModal']=async function(_0x3308cb){try{const _0x347406=await API['post']('/api/git-oauth/start',{'provider_name':_0x3308cb,'redirect_after':window['location']['pathname']+'?git_connection=success&provider='+encodeURIComponent(_0x3308cb)}),_0x5a93af=document['getElementById']('git-connections-required-modal');if(_0x5a93af)_0x5a93af['hidden']=!![];window['location']['href']=_0x347406['oauth_url'];}catch(_0x429118){console['error']('Failed\x20to\x20start\x20OAuth\x20flow:',_0x429118),Utils['showError'](_0x429118['message']||'Failed\x20to\x20start\x20connection');}};function openCommitModal(){invalidateDiffCache(),_0x383b6b['showCommitModal'](document['getElementById']('commit-modal'),{'userNameEl':document['getElementById']('commit-user-name'),'userEmailEl':document['getElementById']('commit-user-email'),'filesListEl':document['getElementById']('commit-files-list'),'messageEl':document['getElementById']('commit-message'),'pushCheckboxEl':document['getElementById']('commit-push'),'errorEl':document['getElementById']('commit-error'),'user':state['currentUser'],'changedFiles':state['changedFiles'],'onFileClick':handleFileClick});}function closeCommitModal(){document['getElementById']('commit-modal')['hidden']=!![];}async function commitAndPush(){const _0x516a7b=document['getElementById']('commit-error'),_0x4b464e=document['getElementById']('commit-message'),_0x455873=_0x4b464e['value']['trim']();_0x516a7b['hidden']=!![],_0x4b464e['classList']['remove']('input-error');if(!_0x455873){_0x516a7b['textContent']='Please\x20enter\x20a\x20commit\x20message',_0x516a7b['hidden']=![],_0x4b464e['classList']['add']('input-error');return;}if(state['hasUnsavedChanges']){_0x516a7b['textContent']='Please\x20save\x20your\x20changes\x20before\x20committing',_0x516a7b['hidden']=![];return;}const _0x5200a4=document['getElementById']('commit-pull-first')['checked'],_0x1646fb=document['getElementById']('commit-push')['checked'];try{const _0x3efc06=document['getElementById']('commit-confirm-btn');_0x3efc06['disabled']=!![],_0x3efc06['textContent']='Committing...';const _0xf33899=await API['post']('/environments/git/commit',{'message':_0x455873,'pullFirst':_0x5200a4,'push':_0x1646fb});_0xf33899['success']?(Utils['showSuccess'](_0x1646fb?'Changes\x20committed\x20and\x20pushed':'Changes\x20committed\x20locally'),state['modifiedFiles']['clear'](),updateButtonStates(),closeCommitModal(),await refreshRepositoryGitStatus(),state['selectedEnv']&&await loadEnvironmentDetails(state['selectedEnv'])):(_0x516a7b['textContent']=_0xf33899['error']||'Commit\x20failed',_0x516a7b['hidden']=![]);}catch(_0x3efc8b){_0x3efc8b['message']==='setup_repo_user_not_connected'?(savePendingSetupRepoAction('commit',{'message':_0x455873,'pullFirst':_0x5200a4,'push':_0x1646fb}),closeCommitModal(),showSetupRepoConnectPrompt(state['setupRepoAuth']?.['provider'],state['setupRepoAuth']?.['provider_type'])):(_0x516a7b['textContent']=_0x3efc8b['message']||'Failed\x20to\x20commit\x20changes',_0x516a7b['hidden']=![]);}finally{const _0x381e60=document['getElementById']('commit-confirm-btn');_0x381e60['disabled']=![],_0x381e60['textContent']='Commit\x20&\x20Push';}}function handleRepoStatusClick(){const _0x47d1df=document['getElementById']('repo-status-text')['textContent'];_0x47d1df==='Uncommitted\x20changes'&&openUncommittedChangesModal();}function openUncommittedChangesModal(){invalidateDiffCache(),_0x383b6b['showUncommittedChangesModal'](document['getElementById']('uncommitted-changes-modal'),document['getElementById']('uncommitted-files-list'),state['changedFiles'],handleFileClick);}function closeUncommittedChangesModal(){document['getElementById']('uncommitted-changes-modal')['hidden']=!![];}function openDiscardModal(){invalidateDiffCache(),_0x383b6b['showDiscardModal'](document['getElementById']('discard-modal'),document['getElementById']('discard-files-list'),state['changedFiles'],handleFileClick);}function closeDiscardModal(){document['getElementById']('discard-modal')['hidden']=!![];}async function confirmDiscard(){try{const _0x24f957=document['getElementById']('discard-confirm-btn');_0x24f957['disabled']=!![],_0x24f957['textContent']='Discarding...';const _0x2c7175=await API['post']('/environments/git/discard');_0x2c7175['success']?(Utils['showSuccess']('All\x20uncommitted\x20changes\x20have\x20been\x20discarded'),state['hasUnsavedChanges']=![],state['modifiedFiles']['clear'](),updateButtonStates(),closeDiscardModal(),await refreshRepositoryGitStatus(),state['selectedEnv']&&await loadEnvironmentDetails(state['selectedEnv'])):Utils['showError'](_0x2c7175['error']||'Failed\x20to\x20discard\x20changes');}catch(_0xed6943){console['error']('Discard\x20failed:',_0xed6943),Utils['showError'](_0xed6943['message']||'Failed\x20to\x20discard\x20changes');}finally{const _0x2b8e11=document['getElementById']('discard-confirm-btn');_0x2b8e11['disabled']=![],_0x2b8e11['textContent']='Discard\x20Changes';}}let baseImageBuildPollingInterval=null,baseImageBuildOutputEventSource=null;function openBaseImageBuildModal(){document['getElementById']('base-image-no-cache')['checked']=![],document['getElementById']('base-image-build-status')['hidden']=!![],document['getElementById']('base-image-build-start-btn')['disabled']=![],document['getElementById']('base-image-build-cancel-btn')['textContent']='Cancel';const _0x53f8c7=document['getElementById']('base-image-build-output');if(_0x53f8c7){_0x53f8c7['hidden']=!![];const _0xcf81b3=_0x53f8c7['querySelector']('pre');if(_0xcf81b3)_0xcf81b3['textContent']='';}loadBaseImageBuildHistory(),document['getElementById']('base-image-build-modal')['hidden']=![];}function closeBaseImageBuildModal(){baseImageBuildPollingInterval&&(clearInterval(baseImageBuildPollingInterval),baseImageBuildPollingInterval=null),stopBaseImageBuildOutputStreaming(),document['getElementById']('base-image-build-modal')['hidden']=!![];}async function startBaseImageBuild(){const _0x2ba01a=document['getElementById']('base-image-no-cache')['checked'],_0x3cc5cb=document['getElementById']('base-image-build-start-btn'),_0x325417=document['getElementById']('base-image-build-cancel-btn'),_0x5b4825=document['getElementById']('base-image-build-status'),_0x4cb432=_0x5b4825['querySelector']('.build-status-message');_0x3cc5cb['disabled']=!![],_0x3cc5cb['innerHTML']='<span>Building...</span>',_0x5b4825['hidden']=![],_0x4cb432['innerHTML']='<span\x20class=\x22status-icon\x22>⏳</span>\x20Starting\x20base\x20image\x20build...',_0x4cb432['className']='build-status-message\x20status-building',showBaseImageBuildOutput(),clearBaseImageBuildOutput();try{const _0x1703a1=await API['post']('/build/base',{'noCache':_0x2ba01a});if(_0x1703a1['buildId'])startBaseImageBuildOutputStreaming(_0x1703a1['buildId']),pollBaseImageBuildStatus(_0x1703a1['buildId']);else throw new Error('No\x20build\x20ID\x20received');}catch(_0x2c9235){console['error']('Failed\x20to\x20start\x20base\x20image\x20build:',_0x2c9235),_0x4cb432['innerHTML']='<span\x20class=\x22status-icon\x22>❌</span>\x20Failed\x20to\x20start\x20build:\x20'+(_0x2c9235['message']||'Unknown\x20error'),_0x4cb432['className']='build-status-message\x20status-failed',_0x3cc5cb['innerHTML']='<span>Build</span>',_0x3cc5cb['disabled']=![];}}function pollBaseImageBuildStatus(_0x3ef3de){const _0xe6fa0f=document['getElementById']('base-image-build-status'),_0x3157a4=_0xe6fa0f['querySelector']('.build-status-message'),_0x3f3876=document['getElementById']('base-image-build-start-btn'),_0x31f43f=document['getElementById']('base-image-build-cancel-btn');baseImageBuildPollingInterval=setInterval(async()=>{try{const _0xaa6a49=await API['get']('/build/base/status/'+_0x3ef3de);if(_0xaa6a49['status']==='building'){const _0x58627f=_0xaa6a49['duration']?Math['floor'](_0xaa6a49['duration']/0x3e8):0x0;_0x3157a4['innerHTML']='<span\x20class=\x22status-icon\x22>⏳</span>\x20Building\x20base\x20image...\x20('+formatDuration(_0x58627f*0x3e8)+')',_0x3157a4['className']='build-status-message\x20status-building';}else{if(_0xaa6a49['status']==='success'){clearInterval(baseImageBuildPollingInterval),baseImageBuildPollingInterval=null,stopBaseImageBuildOutputStreaming();const _0x1a0440=_0xaa6a49['duration']?formatDuration(_0xaa6a49['duration']):'unknown';_0x3157a4['innerHTML']='<span\x20class=\x22status-icon\x22>✅</span>\x20Base\x20image\x20built\x20successfully\x20in\x20'+_0x1a0440,_0x3157a4['className']='build-status-message\x20status-success',_0x3f3876['innerHTML']='<span>Build</span>',_0x3f3876['disabled']=![],_0x31f43f['textContent']='Close',Utils['showSuccess']('Base\x20image\x20built\x20successfully'),loadBaseImageBuildHistory();}else _0xaa6a49['status']==='failed'&&(clearInterval(baseImageBuildPollingInterval),baseImageBuildPollingInterval=null,stopBaseImageBuildOutputStreaming(),_0x3157a4['innerHTML']='<span\x20class=\x22status-icon\x22>❌</span>\x20Build\x20failed:\x20'+(_0xaa6a49['error']||'Unknown\x20error'),_0x3157a4['className']='build-status-message\x20status-failed',_0x3f3876['innerHTML']='<span>Build</span>',_0x3f3876['disabled']=![],Utils['showError']('Base\x20image\x20build\x20failed\x20-\x20check\x20output\x20for\x20details'),loadBaseImageBuildHistory());}}catch(_0x534e13){console['error']('Failed\x20to\x20poll\x20build\x20status:',_0x534e13);}},0xbb8);}function formatDuration(_0x3318dc){const _0x5c8ea5=Math['floor'](_0x3318dc/0x3e8),_0x4fab0d=Math['floor'](_0x5c8ea5/0x3c),_0x3a0a3d=_0x5c8ea5%0x3c;if(_0x4fab0d>0x0)return _0x4fab0d+'m\x20'+_0x3a0a3d+'s';return _0x5c8ea5+'s';}function formatTriggeredBy(_0x36dd5c){if(typeof _0x36dd5c!=='string'||_0x36dd5c['trim']()==='')return'Manual';const _0x2e05e0=_0x36dd5c['trim']()['toLowerCase']();if(_0x2e05e0==='manual')return'Manual';if(_0x2e05e0==='scheduled'||_0x2e05e0==='schedule')return'Scheduled';if(_0x2e05e0==='system')return'System';return _0x36dd5c;}async function loadBaseImageBuildHistory(){const _0x2c72fc=document['getElementById']('base-image-build-history');if(!_0x2c72fc)return;try{_0x2c72fc['innerHTML']='<p\x20class=\x22text-muted\x22>Loading...</p>';const _0x569fed=await API['get']('/build/base/history?limit=5'),_0x1c2d71=_0x569fed['builds']||[];if(_0x1c2d71['length']===0x0){_0x2c72fc['innerHTML']='<p\x20class=\x22text-muted\x22>No\x20build\x20history\x20yet.</p>';return;}const _0x4f8737=_0x1c2d71['map'](_0x487538=>{const _0x5761ef=new Date(_0x487538['startTime']),_0x385e7a=_0x5761ef['toLocaleDateString']()+'\x20'+_0x5761ef['toLocaleTimeString']([],{'hour':'2-digit','minute':'2-digit'}),_0x46287f=_0x487538['duration']?formatDuration(_0x487538['duration']):'-',_0x220808=_0x487538['status']==='success'?'✅':'❌',_0x5402f3=formatTriggeredBy(_0x487538['triggeredBy']),_0x300cba=Utils['escapeHtml'](_0x487538['buildId']);return'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22build-history-row\x20'+_0x487538['status']+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22build-status-icon\x22>'+_0x220808+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22build-date\x22>'+_0x385e7a+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22build-duration\x22>'+_0x46287f+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22build-triggered-by\x22>'+Utils['escapeHtml'](_0x5402f3)+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-small\x22\x20onclick=\x22viewBaseImageBuildOutput(\x27'+_0x300cba+'\x27)\x22\x20title=\x22View\x20build\x20output\x22\x20style=\x22padding:\x202px\x206px;\x20font-size:\x2011px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20View\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20';})['join']('');_0x2c72fc['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22build-history-compact-list\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0x4f8737+'\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';}catch(_0x125d6d){console['error']('Failed\x20to\x20load\x20base\x20image\x20build\x20history:',_0x125d6d),_0x2c72fc['innerHTML']='<p\x20class=\x22text-muted\x22\x20style=\x22color:\x20var(--color-error);\x22>Failed\x20to\x20load\x20history</p>';}}function showBaseImageBuildOutput(){const _0x4779b8=document['getElementById']('base-image-build-output');_0x4779b8&&(_0x4779b8['hidden']=![]);}function clearBaseImageBuildOutput(){const _0x1f3ee9=document['getElementById']('base-image-build-output');if(_0x1f3ee9){const _0x2ffd2f=_0x1f3ee9['querySelector']('pre');_0x2ffd2f&&(_0x2ffd2f['textContent']='');}}function appendToBaseImageBuildOutput(_0xed2102){const _0x1048bc=document['getElementById']('base-image-build-output');if(_0x1048bc){const _0x33eb1d=_0x1048bc['querySelector']('pre');_0x33eb1d&&(_0x33eb1d['textContent']+=_0xed2102,_0x1048bc['scrollTop']=_0x1048bc['scrollHeight']);}}function startBaseImageBuildOutputStreaming(_0x7faa12){stopBaseImageBuildOutputStreaming();try{baseImageBuildOutputEventSource=new EventSource('/build/output/stream/'+_0x7faa12),baseImageBuildOutputEventSource['onmessage']=_0x4ea078=>{try{const _0x4c1204=JSON['parse'](_0x4ea078['data']);if(_0x4c1204['type']==='output')appendToBaseImageBuildOutput(_0x4c1204['data']);else _0x4c1204['type']==='complete'&&(console['log']('Base\x20image\x20build\x20completed\x20via\x20stream:',_0x4c1204),stopBaseImageBuildOutputStreaming());}catch(_0x22ec0e){console['error']('Failed\x20to\x20parse\x20base\x20image\x20build\x20output\x20event:',_0x22ec0e);}},baseImageBuildOutputEventSource['onerror']=_0xffaafb=>{console['error']('Base\x20image\x20build\x20output\x20stream\x20error:',_0xffaafb),baseImageBuildOutputEventSource&&baseImageBuildOutputEventSource['readyState']===EventSource['CLOSED']&&stopBaseImageBuildOutputStreaming();};}catch(_0x2a4e98){console['error']('Failed\x20to\x20start\x20base\x20image\x20build\x20output\x20streaming:',_0x2a4e98);}}function stopBaseImageBuildOutputStreaming(){baseImageBuildOutputEventSource&&(baseImageBuildOutputEventSource['close'](),baseImageBuildOutputEventSource=null);}window['viewBaseImageBuildOutput']=async function(_0x31e441){showBaseImageBuildOutput(),clearBaseImageBuildOutput();const _0x25e516=document['getElementById']('base-image-build-output');if(_0x25e516){const _0x45b544=_0x25e516['querySelector']('pre');_0x45b544&&(_0x45b544['textContent']='Loading\x20build\x20output...');}try{const _0xca2cf4=await API['get']('/build/output/'+_0x31e441);if(_0xca2cf4['output']&&_0x25e516){const _0x3bbb37=_0x25e516['querySelector']('pre');_0x3bbb37&&(_0x3bbb37['textContent']=_0xca2cf4['output']);}else{if(_0x25e516){const _0x34a832=_0x25e516['querySelector']('pre');_0x34a832&&(_0x34a832['textContent']='No\x20output\x20available\x20for\x20this\x20build.');}}}catch(_0x4aadb0){console['error']('Failed\x20to\x20load\x20base\x20image\x20build\x20output:',_0x4aadb0);if(_0x25e516){const _0x27d2f9=_0x25e516['querySelector']('pre');_0x27d2f9&&(_0x27d2f9['textContent']='Failed\x20to\x20load\x20build\x20output:\x20'+(_0x4aadb0['message']||'Unknown\x20error'));}}};const AUTOMATION_WEEKDAYS=[{'value':'0','label':'Sunday'},{'value':'1','label':'Monday'},{'value':'2','label':'Tuesday'},{'value':'3','label':'Wednesday'},{'value':'4','label':'Thursday'},{'value':'5','label':'Friday'},{'value':'6','label':'Saturday'}],FALLBACK_AUTOMATION_AGENTS=['claude','codex','gemini'],AUTOMATION_AGENT_LABELS={'claude':'Claude','codex':'Codex','gemini':'Gemini'};function formatAutomationTime(_0x49f306,_0xc84f3e){const _0x3a3f86=Number['parseInt'](_0x49f306,0xa),_0x26d2d0=Number['parseInt'](_0xc84f3e,0xa);if(!Number['isInteger'](_0x3a3f86)||!Number['isInteger'](_0x26d2d0))return _0x49f306+':'+_0xc84f3e;const _0x209b82=_0x3a3f86>=0xc?'PM':'AM',_0x4d419a=_0x3a3f86%0xc||0xc;return _0x4d419a+':'+String(_0x26d2d0)['padStart'](0x2,'0')+'\x20'+_0x209b82;}function parseAutomationTimeInputValue(_0x47ca9b,_0x3987d6='0',_0x4c3bd0='0'){const _0x150e7a={'hour':String(Number['parseInt'](_0x3987d6,0xa)||0x0),'minute':String(Number['parseInt'](_0x4c3bd0,0xa)||0x0)},_0x51bfd1=String(_0x47ca9b||'')['trim']()['match'](/^(\d{1,2}):(\d{2})$/);if(!_0x51bfd1)return _0x150e7a;const _0x2f501e=Number['parseInt'](_0x51bfd1[0x1],0xa),_0x447cd4=Number['parseInt'](_0x51bfd1[0x2],0xa);if(!Number['isInteger'](_0x2f501e)||_0x2f501e<0x0||_0x2f501e>0x17)return _0x150e7a;if(!Number['isInteger'](_0x447cd4)||_0x447cd4<0x0||_0x447cd4>0x3b)return _0x150e7a;return{'hour':String(_0x2f501e),'minute':String(_0x447cd4)};}function formatAutomationTimeInputValue(_0x43ca52,_0x40ad6,_0x5e4605='0',_0x57d676='0'){const _0x1950a5=parseAutomationTimeInputValue(String(_0x43ca52??'')['trim']()+':'+String(_0x40ad6??'')['trim']()['padStart'](0x2,'0'),_0x5e4605,_0x57d676);return _0x1950a5['hour']['padStart'](0x2,'0')+':'+_0x1950a5['minute']['padStart'](0x2,'0');}function getAutomationTimeInputState(_0x256b71,_0x383b39='0',_0x478d72='0'){return parseAutomationTimeInputValue(document['getElementById'](_0x256b71)?.['value']||'',_0x383b39,_0x478d72);}function setAutomationTimeInputValue(_0xed3b66,_0x45d9fe,_0x3da141,_0x19e416='0',_0x21cffc='0'){const _0x33ab2e=document['getElementById'](_0xed3b66);if(!_0x33ab2e)return;_0x33ab2e['value']=formatAutomationTimeInputValue(_0x45d9fe,_0x3da141,_0x19e416,_0x21cffc);}function formatOrdinal(_0x5622b4){const _0x431587=Number['parseInt'](_0x5622b4,0xa);if(!Number['isInteger'](_0x431587))return''+_0x5622b4;const _0x2a4e99=_0x431587%0xa,_0x3c1b79=_0x431587%0x64;if(_0x2a4e99===0x1&&_0x3c1b79!==0xb)return _0x431587+'st';if(_0x2a4e99===0x2&&_0x3c1b79!==0xc)return _0x431587+'nd';if(_0x2a4e99===0x3&&_0x3c1b79!==0xd)return _0x431587+'rd';return _0x431587+'th';}function initializeAutomationModalCustomSelects(){for(const _0x1de0f9 of AUTOMATION_MODAL_SELECT_IDS){if(automationCustomSelects[_0x1de0f9])continue;const _0x9dfa74=document['getElementById'](_0x1de0f9);if(!_0x9dfa74)continue;automationCustomSelects[_0x1de0f9]=new CustomSelect(_0x9dfa74,{'searchable':_0x1de0f9==='automation-template-name'});}}function refreshAutomationModalCustomSelect(_0x48697f){const _0xe1fb65=automationCustomSelects[_0x48697f];if(!_0xe1fb65||!_0xe1fb65['nativeSelect'])return;_0xe1fb65['selectedValue']=_0xe1fb65['nativeSelect']['value']||'',_0xe1fb65['updateDisplay']();}function refreshAllAutomationModalCustomSelects(){for(const _0x1f0900 of AUTOMATION_MODAL_SELECT_IDS){refreshAutomationModalCustomSelect(_0x1f0900);}}function initializeAutomationInstructionsEditor(){if(automationInstructionsEditor)return;const _0x253a87=document['getElementById']('automation-instructions');if(!_0x253a87||!window['MarkdownEditor'])return;automationInstructionsEditor=new window['MarkdownEditor'](_0x253a87,{'placeholder':'What\x20should\x20the\x20agent\x20do?','minHeight':'140px','toolbar':!![]});}function setAutomationInstructionsValue(_0x181803=''){if(automationInstructionsEditor){automationInstructionsEditor['setMarkdown'](_0x181803||'');return;}const _0x37c33f=document['getElementById']('automation-instructions');_0x37c33f&&(_0x37c33f['value']=_0x181803||'');}function getAutomationInstructionsValue(){if(automationInstructionsEditor)return automationInstructionsEditor['getMarkdown']();return document['getElementById']('automation-instructions')?.['value']||'';}function initializeAutomationFormOptions(){const _0x16b303=(_0x33c0f9,_0x54fbe8)=>{const _0x57f427=document['getElementById'](_0x33c0f9);if(!_0x57f427||_0x57f427['dataset']['initialized']==='true')return;_0x57f427['value']=_0x54fbe8,_0x57f427['dataset']['initialized']='true';},_0x58c8a5=(_0x455f96,_0xe24ac5=![])=>{const _0x2069aa=document['getElementById'](_0x455f96);if(!_0x2069aa||_0x2069aa['dataset']['initialized']==='true')return;const _0x2f7b34=[];_0xe24ac5&&_0x2f7b34['push']('<option\x20value=\x22\x22>Any</option>');for(let _0x3e67b3=0x0;_0x3e67b3<=0x17;_0x3e67b3+=0x1){const _0x122b4a=String(_0x3e67b3);_0x2f7b34['push']('<option\x20value=\x22'+_0x122b4a+'\x22>'+formatAutomationTime(_0x3e67b3,0x0)+'</option>');}_0x2069aa['innerHTML']=_0x2f7b34['join'](''),_0x2069aa['dataset']['initialized']='true';};_0x16b303('automation-daily-time','02:00'),_0x16b303('automation-weekly-time','09:00'),_0x16b303('automation-monthly-time','00:00'),_0x58c8a5('automation-recurring-start-hour',!![]),_0x58c8a5('automation-recurring-end-hour',!![]);const _0x278328=document['getElementById']('automation-weekly-day');_0x278328&&_0x278328['dataset']['initialized']!=='true'&&(_0x278328['innerHTML']=AUTOMATION_WEEKDAYS['map'](_0x231360=>'<option\x20value=\x22'+_0x231360['value']+'\x22>'+_0x231360['label']+'</option>')['join'](''),_0x278328['dataset']['initialized']='true');const _0x3f20bc=document['getElementById']('automation-monthly-day');if(_0x3f20bc&&_0x3f20bc['dataset']['initialized']!=='true'){const _0x60e8e9=[];for(let _0x5ca3cf=0x1;_0x5ca3cf<=AUTOMATION_MONTHLY_DAY_MAX;_0x5ca3cf+=0x1){_0x60e8e9['push']('<option\x20value=\x22'+_0x5ca3cf+'\x22>'+formatOrdinal(_0x5ca3cf)+'</option>');}_0x3f20bc['innerHTML']=_0x60e8e9['join'](''),_0x3f20bc['dataset']['initialized']='true';}const _0x129544=document['getElementById']('automation-recurring-days');_0x129544&&_0x129544['dataset']['initialized']!=='true'&&(_0x129544['innerHTML']=AUTOMATION_WEEKDAYS['map'](_0x343b89=>'\x0a\x20\x20\x20\x20\x20\x20<label\x20class=\x22day-toggle-label\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20value=\x22'+_0x343b89['value']+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span>'+_0x343b89['label']['slice'](0x0,0x3)+'</span>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20')['join'](''),_0x129544['dataset']['initialized']='true'),refreshAllAutomationModalCustomSelects();}function formatAutomationAgentLabel(_0x107bdf){const _0x2b218f=String(_0x107bdf||'')['trim']();if(!_0x2b218f)return'Agent';if(AUTOMATION_AGENT_LABELS[_0x2b218f])return AUTOMATION_AGENT_LABELS[_0x2b218f];return _0x2b218f['replace'](/[_-]+/g,'\x20')['replace'](/\b\w/g,_0x5ec738=>_0x5ec738['toUpperCase']());}function getAvailableAutomationAgentNames(){const _0xaea3dc=Object['entries'](state['availableModels']||{})['filter'](([_0x3c2a6c,_0x3c061b])=>Boolean(_0x3c2a6c)&&_0x3c061b&&typeof _0x3c061b==='object'&&Array['isArray'](_0x3c061b['models']))['map'](([_0x7f4b11])=>_0x7f4b11);if(_0xaea3dc['length']>0x0)return _0xaea3dc;return[...FALLBACK_AUTOMATION_AGENTS];}async function loadAvailableAutomationModels(_0x6dac2e=![]){if(state['availableModelsLoaded']&&!_0x6dac2e)return state['availableModels'];state['availableModelsLoaded']=!![];if(!state['currentUser']?.['hasSettingsView'])return state['availableModels']=null,state['availableModels'];try{const _0x5814cf=await API['get']('/settings/available-models');state['availableModels']=_0x5814cf&&typeof _0x5814cf==='object'?_0x5814cf:null;}catch(_0x2cbe52){state['availableModels']=null,console['warn']('Failed\x20to\x20load\x20available\x20models\x20for\x20automations:',_0x2cbe52);}return state['availableModels'];}function renderAutomationAgentOptions(_0x2f227d=''){const _0x419691=document['getElementById']('automation-agent-name');if(!_0x419691)return;const _0x528ea3=String(state['selectedEnvData']?.['default_agent']||'')['trim'](),_0x36caf1=String(_0x2f227d||_0x419691['value']||'')['trim'](),_0xa77216=[],_0x30d687=_0x27da77=>{const _0x14fe46=String(_0x27da77||'')['trim']();if(!_0x14fe46||_0xa77216['includes'](_0x14fe46))return;_0xa77216['push'](_0x14fe46);};getAvailableAutomationAgentNames()['forEach'](_0x30d687),_0x30d687(_0x528ea3),_0x30d687(_0x36caf1);_0xa77216['length']===0x0&&_0x30d687('claude');_0x419691['innerHTML']=_0xa77216['map'](_0x6e71e3=>'<option\x20value=\x22'+Utils['escapeHtml'](_0x6e71e3)+'\x22>'+Utils['escapeHtml'](formatAutomationAgentLabel(_0x6e71e3))+'</option>')['join']('');const _0x16bba5=_0xa77216['includes'](_0x36caf1)?_0x36caf1:_0xa77216['includes'](_0x528ea3)?_0x528ea3:_0xa77216[0x0];_0x16bba5&&(_0x419691['value']=_0x16bba5),refreshAutomationModalCustomSelect('automation-agent-name');}function setAutomationAgentSelection(_0x1c275a=''){renderAutomationAgentOptions(_0x1c275a),updateAutomationAgentFields();}function updateAutomationFrequencyFields(){const _0x5893bb=document['getElementById']('automation-frequency')?.['value']||'daily',_0x2266ef={'daily':document['getElementById']('automation-daily-fields'),'weekly':document['getElementById']('automation-weekly-fields'),'monthly':document['getElementById']('automation-monthly-fields'),'recurring':document['getElementById']('automation-recurring-fields'),'custom':document['getElementById']('automation-custom-fields')};Object['entries'](_0x2266ef)['forEach'](([_0x4019dc,_0x579180])=>{if(!_0x579180)return;_0x579180['hidden']=_0x4019dc!==_0x5893bb;});}function updateAutomationAgentFields(){const _0x200282=document['getElementById']('automation-agent-name')?.['value']||state['selectedEnvData']?.['default_agent']||getAvailableAutomationAgentNames()[0x0]||'claude',_0x470740=document['getElementById']('automation-effort-row'),_0x124176=document['getElementById']('automation-reasoning-row');if(_0x470740)_0x470740['hidden']=_0x200282!=='claude';if(_0x124176)_0x124176['hidden']=_0x200282!=='codex';}function getSelectedAutomationTaskMode(){return document['querySelector']('input[name=\x22automation-task-mode\x22]:checked')?.['value']||'instructions';}function updateAutomationTaskMode(){const _0x39d697=getSelectedAutomationTaskMode(),_0x4c3766=document['getElementById']('automation-template-row'),_0x4732ad=document['getElementById']('automation-instructions-label');if(_0x4c3766)_0x4c3766['hidden']=_0x39d697!=='template';_0x4732ad&&(_0x4732ad['textContent']=_0x39d697==='template'?'Additional\x20Instructions':'Instructions');}function parseRecurringDayToken(_0x10a6c7){const _0x28d060=new Set(),_0x52ccc8=String(_0x10a6c7||'')['trim']();if(!_0x52ccc8||_0x52ccc8==='*')return _0x28d060;return _0x52ccc8['split'](',')['forEach'](_0x4a1ae3=>{const _0x2e1e65=_0x4a1ae3['trim']();if(!_0x2e1e65)return;if(_0x2e1e65['includes']('-')){const [_0x7f7540,_0x41366f]=_0x2e1e65['split']('-'),_0x2ec981=Number['parseInt'](_0x7f7540,0xa),_0x1a349c=Number['parseInt'](_0x41366f,0xa);if(Number['isInteger'](_0x2ec981)&&Number['isInteger'](_0x1a349c)&&_0x2ec981<=_0x1a349c)for(let _0x273480=_0x2ec981;_0x273480<=_0x1a349c;_0x273480+=0x1){_0x28d060['add'](String(_0x273480===0x7?0x0:_0x273480));}return;}const _0x45060b=Number['parseInt'](_0x2e1e65,0xa);Number['isInteger'](_0x45060b)&&_0x28d060['add'](String(_0x45060b===0x7?0x0:_0x45060b));}),_0x28d060;}function getRecurringDaySelectionToken(){const _0x2fe909=document['querySelectorAll']('#automation-recurring-days\x20input[type=\x22checkbox\x22]:checked'),_0x23aaec=[..._0x2fe909]['map'](_0x472156=>_0x472156['value']);if(_0x23aaec['length']===0x0)return'*';return _0x23aaec['sort']((_0x184413,_0x5a8896)=>Number['parseInt'](_0x184413,0xa)-Number['parseInt'](_0x5a8896,0xa)),_0x23aaec['join'](',');}function setRecurringDaySelectionToken(_0x5b58fd){const _0x133e5f=parseRecurringDayToken(_0x5b58fd);document['querySelectorAll']('#automation-recurring-days\x20input[type=\x22checkbox\x22]')['forEach'](_0x191156=>{_0x191156['checked']=_0x133e5f['has'](_0x191156['value']);});}function getAutomationScheduleFormState(){const _0x5772fb=getAutomationTimeInputState('automation-daily-time','2','0'),_0x3bc7c8=getAutomationTimeInputState('automation-weekly-time','9','0'),_0x2fac94=getAutomationTimeInputState('automation-monthly-time','0','0');return{'frequency':document['getElementById']('automation-frequency')?.['value']||'daily','customCron':document['getElementById']('automation-custom-cron')?.['value']?.['trim']()||'','dailyHour':_0x5772fb['hour'],'dailyMinute':_0x5772fb['minute'],'weeklyDay':document['getElementById']('automation-weekly-day')?.['value']||'1','weeklyHour':_0x3bc7c8['hour'],'weeklyMinute':_0x3bc7c8['minute'],'monthlyDay':document['getElementById']('automation-monthly-day')?.['value']||'1','monthlyHour':_0x2fac94['hour'],'monthlyMinute':_0x2fac94['minute'],'recurringInterval':document['getElementById']('automation-recurring-interval')?.['value']||'*/30\x20*\x20*\x20*\x20*','recurringStartHour':document['getElementById']('automation-recurring-start-hour')?.['value']||'','recurringEndHour':document['getElementById']('automation-recurring-end-hour')?.['value']||'','recurringDayToken':getRecurringDaySelectionToken()};}function buildAutomationScheduleFromForm(){const _0x300529=getAutomationScheduleFormState(),_0x419b40=_0x300529['frequency'],_0x7de9d9=_0x300529['customCron'];if(_0x419b40==='custom')return{'cron':buildAutomationCronFromFormState(_0x300529),'summary':_0x7de9d9?'Custom:\x20'+_0x7de9d9:'Custom\x20cron\x20expression'};if(_0x419b40==='daily')return{'cron':buildAutomationCronFromFormState(_0x300529),'summary':'Every\x20day\x20at\x20'+formatAutomationTime(_0x300529['dailyHour'],_0x300529['dailyMinute'])};if(_0x419b40==='weekly'){const _0x39159b=AUTOMATION_WEEKDAYS['find'](_0x74fe78=>_0x74fe78['value']===_0x300529['weeklyDay'])?.['label']||'Selected\x20day';return{'cron':buildAutomationCronFromFormState(_0x300529),'summary':'Every\x20'+_0x39159b+'\x20at\x20'+formatAutomationTime(_0x300529['weeklyHour'],_0x300529['weeklyMinute'])};}if(_0x419b40==='monthly')return{'cron':buildAutomationCronFromFormState(_0x300529),'summary':formatOrdinal(_0x300529['monthlyDay'])+'\x20of\x20every\x20month\x20at\x20'+formatAutomationTime(_0x300529['monthlyHour'],_0x300529['monthlyMinute'])};const _0x50b1c8=_0x300529['recurringInterval'],[_0x197bfe,_0x860c3d]=_0x50b1c8['split']('\x20'),_0x1ee52b=[],_0x2ba78a=_0x300529['recurringStartHour'],_0x208965=_0x300529['recurringEndHour'];if(_0x2ba78a!==''&&_0x208965!==''){const _0xa455c8=Number['parseInt'](_0x2ba78a,0xa),_0x478992=Number['parseInt'](_0x208965,0xa);Number['isInteger'](_0xa455c8)&&Number['isInteger'](_0x478992)&&_0xa455c8<=_0x478992&&_0x1ee52b['push'](formatAutomationTime(_0xa455c8,0x0)+'\x20-\x20'+formatAutomationTime(_0x478992,0x0));}const _0x29f00c=_0x300529['recurringDayToken'];if(_0x29f00c!=='*'){const _0x3663c4=_0x29f00c['split'](',')['map'](_0xd0a8b7=>AUTOMATION_WEEKDAYS['find'](_0x492d09=>_0x492d09['value']===_0xd0a8b7)?.['label']?.['slice'](0x0,0x3))['filter'](Boolean);_0x3663c4['length']>0x0&&_0x1ee52b['push'](_0x3663c4['join'](',\x20'));}let _0x43c773='';if(_0x197bfe==='*/15')_0x43c773='Every\x2015\x20minutes';else{if(_0x197bfe==='*/30')_0x43c773='Every\x2030\x20minutes';else{if(_0x197bfe==='0'&&_0x860c3d==='*')_0x43c773='Every\x20hour';else{if(_0x197bfe==='0'&&_0x860c3d['startsWith']('*/'))_0x43c773='Every\x20'+_0x860c3d['slice'](0x2)+'\x20hours';else _0x43c773='Recurring\x20schedule\x20('+_0x50b1c8+')';}}}return _0x1ee52b['length']>0x0&&(_0x43c773=_0x43c773+',\x20'+_0x1ee52b['join'](',\x20')),{'cron':buildAutomationCronFromFormState(_0x300529),'summary':_0x43c773};}function updateAutomationScheduleSummary(){const _0x541889=document['getElementById']('automation-schedule-summary');if(!_0x541889)return;try{const {summary:_0x15b60b}=buildAutomationScheduleFromForm();_0x541889['textContent']=_0x15b60b||'Choose\x20schedule\x20options';}catch(_0x3fec7e){_0x541889['textContent']='Invalid\x20schedule\x20settings:\x20'+_0x3fec7e['message'];}}function describeAutomationCron(_0x39e9d9){const _0x4210ba=String(_0x39e9d9||'')['trim'](),_0x69ebdb=_0x4210ba['match'](/^(\d{1,2}) (\d{1,2}) \* \* \*$/);if(_0x69ebdb)return'Every\x20day\x20at\x20'+formatAutomationTime(_0x69ebdb[0x2],_0x69ebdb[0x1]);const _0x41ef21=_0x4210ba['match'](/^(\d{1,2}) (\d{1,2}) \* \* ([0-7])$/);if(_0x41ef21){const _0x231e28=_0x41ef21[0x3]==='7'?'0':_0x41ef21[0x3],_0x28f6d9=AUTOMATION_WEEKDAYS['find'](_0x5eca8a=>_0x5eca8a['value']===_0x231e28)?.['label']||'Day\x20'+_0x231e28;return'Every\x20'+_0x28f6d9+'\x20at\x20'+formatAutomationTime(_0x41ef21[0x2],_0x41ef21[0x1]);}const _0x2b73d6=_0x4210ba['match'](/^(\d{1,2}) (\d{1,2}) (\d{1,2}) \* \*$/);if(_0x2b73d6)return formatOrdinal(_0x2b73d6[0x3])+'\x20of\x20every\x20month\x20at\x20'+formatAutomationTime(_0x2b73d6[0x2],_0x2b73d6[0x1]);const _0x3f5a99=_0x4210ba['match'](/^(\*\/15|\*\/30|0) ([^\s]+) \* \* ([^\s]+)$/);if(_0x3f5a99){const [_0x5daf20,_0x4bda60,_0x2aacc9,_0xbd5c1a]=_0x3f5a99;let _0x5bb276='Recurring';if(_0x4bda60==='*/15')_0x5bb276='Every\x2015\x20minutes';else{if(_0x4bda60==='*/30')_0x5bb276='Every\x2030\x20minutes';else{if(_0x4bda60==='0'&&(_0x2aacc9==='*'||/\d+-\d+$/['test'](_0x2aacc9)))_0x5bb276='Every\x20hour';else{if(_0x4bda60==='0'&&_0x2aacc9['startsWith']('*/'))_0x5bb276='Every\x20'+_0x2aacc9['slice'](0x2)+'\x20hours';else{if(_0x4bda60==='0'){const _0x12bcd6=_0x2aacc9['match'](/^[\d-]+\/(\d+)$/);if(_0x12bcd6)_0x5bb276='Every\x20'+_0x12bcd6[0x1]+'\x20hours';}}}}}const _0x5f45ca=[_0x5bb276],_0x474627=_0x2aacc9['match'](/^(\d+)-(\d+)(?:\/\d+)?$/);_0x474627&&_0x5f45ca['push'](formatAutomationTime(_0x474627[0x1],0x0)+'\x20-\x20'+formatAutomationTime(_0x474627[0x2],0x0));if(_0xbd5c1a!=='*'){const _0x1c1300=[...parseRecurringDayToken(_0xbd5c1a)]['sort']((_0x146df2,_0x157918)=>Number['parseInt'](_0x146df2,0xa)-Number['parseInt'](_0x157918,0xa))['map'](_0x19442d=>AUTOMATION_WEEKDAYS['find'](_0xc0da7a=>_0xc0da7a['value']===_0x19442d)?.['label']?.['slice'](0x0,0x3))['filter'](Boolean);_0x1c1300['length']>0x0&&_0x5f45ca['push'](_0x1c1300['join'](',\x20'));}return _0x5f45ca['join'](',\x20');}return _0x4210ba||'Custom\x20schedule';}function applyAutomationScheduleToForm(_0x4cae93){const _0x2e3147=parseAutomationScheduleToFormState(_0x4cae93);setAutomationTimeInputValue('automation-daily-time',_0x2e3147['dailyHour'],_0x2e3147['dailyMinute'],'2','0'),setAutomationTimeInputValue('automation-weekly-time',_0x2e3147['weeklyHour'],_0x2e3147['weeklyMinute'],'9','0'),document['getElementById']('automation-weekly-day')['value']=_0x2e3147['weeklyDay'],setAutomationTimeInputValue('automation-monthly-time',_0x2e3147['monthlyHour'],_0x2e3147['monthlyMinute'],'0','0'),document['getElementById']('automation-monthly-day')['value']=_0x2e3147['monthlyDay'],document['getElementById']('automation-recurring-interval')['value']=_0x2e3147['recurringInterval'],document['getElementById']('automation-recurring-start-hour')['value']=_0x2e3147['recurringStartHour'],document['getElementById']('automation-recurring-end-hour')['value']=_0x2e3147['recurringEndHour'],document['getElementById']('automation-custom-cron')['value']=_0x2e3147['frequency']==='custom'?_0x2e3147['customCron']:'',setRecurringDaySelectionToken(_0x2e3147['recurringDayToken']);const _0x2b379a=document['getElementById']('automation-frequency');_0x2b379a&&(_0x2b379a['value']=_0x2e3147['frequency']),refreshAllAutomationModalCustomSelects(),updateAutomationFrequencyFields(),updateAutomationScheduleSummary();}function getAutomationTemplates(){const _0x49511c=state['selectedEnvData']?.['templates']||[];if(_0x49511c['length']>0x0)return _0x49511c['map'](_0x483a2d=>{const _0x32add6=_0x483a2d['filename']?.['replace'](/\.md$/,'')||_0x483a2d['title'];return{'name':_0x32add6,'title':_0x483a2d['title']||_0x32add6,'description':_0x483a2d['description']||'','parameters':_0x483a2d['parameters']||{}};});const _0x3f00db=state['selectedEnvData']?.['task_templates']||[];return _0x3f00db['map'](_0x33e54f=>({'name':_0x33e54f['name'],'title':_0x33e54f['title']||_0x33e54f['name'],'description':'','parameters':{}}));}function getSelectedAutomationTemplate(){const _0x3e64b3=document['getElementById']('automation-template-name')?.['value']||'';return getAutomationTemplates()['find'](_0x22f0fa=>_0x22f0fa['name']===_0x3e64b3)||null;}function renderAutomationTemplateOptions(_0x2ffe52=''){const _0x45bad8=document['getElementById']('automation-template-name');if(!_0x45bad8)return;const _0xa6c17a=getAutomationTemplates();if(_0xa6c17a['length']===0x0){_0x45bad8['innerHTML']='<option\x20value=\x22\x22>No\x20templates\x20available</option>',_0x45bad8['value']='',refreshAutomationModalCustomSelect('automation-template-name');return;}_0x45bad8['innerHTML']=['<option\x20value=\x22\x22>Select\x20template...</option>',..._0xa6c17a['map'](_0x3053d9=>'<option\x20value=\x22'+Utils['escapeHtml'](_0x3053d9['name'])+'\x22>'+Utils['escapeHtml'](_0x3053d9['title'])+'</option>')]['join'](''),_0x45bad8['value']=_0x2ffe52&&_0xa6c17a['some'](_0x368541=>_0x368541['name']===_0x2ffe52)?_0x2ffe52:_0xa6c17a[0x0]['name'],refreshAutomationModalCustomSelect('automation-template-name');}function renderAutomationTemplateParameters(_0x2b677c=null){const _0x128460=document['getElementById']('automation-template-params');if(!_0x128460)return;_0x2b677c&&typeof _0x2b677c==='object'&&(state['automationTemplateParamValues']={..._0x2b677c});const _0x5ab60c=getSelectedAutomationTemplate(),_0x5df6b9=_0x5ab60c?.['parameters']&&typeof _0x5ab60c['parameters']==='object'?Object['entries'](_0x5ab60c['parameters']):[];if(_0x5df6b9['length']===0x0){_0x128460['innerHTML']='<p\x20class=\x22text-muted\x20small\x22>This\x20template\x20has\x20no\x20parameters.</p>';return;}_0x128460['innerHTML']=_0x5df6b9['map'](([_0x2a368e,_0x33d588])=>{const _0x38cf85=Boolean(_0x33d588?.['required']),_0x55f94b=_0x33d588?.['type']||'string',_0x4b65b3=state['automationTemplateParamValues'][_0x2a368e]??_0x33d588?.['default']??'',_0x76a9a7=_0x33d588?.['label']||_0x2a368e,_0x47b334=_0x33d588?.['description']||'',_0x6683e4=_0x55f94b==='number'?'number':'text';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>'+Utils['escapeHtml'](_0x76a9a7)+(_0x38cf85?'\x20*':'')+'</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22'+_0x6683e4+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20class=\x22form-input\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data-automation-param=\x22'+Utils['escapeHtml'](_0x2a368e)+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value=\x22'+Utils['escapeHtml'](String(_0x4b65b3))+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22'+Utils['escapeHtml'](_0x47b334)+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x38cf85?'required':'')+'>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';})['join'](''),_0x128460['querySelectorAll']('[data-automation-param]')['forEach'](_0x387e4d=>{_0x387e4d['addEventListener']('input',()=>{const _0x2410c8=_0x387e4d['getAttribute']('data-automation-param');if(!_0x2410c8)return;state['automationTemplateParamValues'][_0x2410c8]=_0x387e4d['value'];});});}function collectAutomationTemplateParameters(){const _0x4a9968=getSelectedAutomationTemplate(),_0x2e2cd8=_0x4a9968?.['parameters']&&typeof _0x4a9968['parameters']==='object'?_0x4a9968['parameters']:{},_0x20b83f={};return document['querySelectorAll']('[data-automation-param]')['forEach'](_0x533aae=>{const _0x555957=_0x533aae['getAttribute']('data-automation-param');if(!_0x555957)return;const _0x1a2bcf=_0x2e2cd8[_0x555957]||{},_0x45aac5=_0x533aae['value']??'',_0xe3e6cf=String(_0x45aac5)['trim']();if(_0xe3e6cf==='')return;if(_0x1a2bcf['type']==='number'){const _0x46d03a=Number(_0xe3e6cf);_0x20b83f[_0x555957]=Number['isNaN'](_0x46d03a)?_0xe3e6cf:_0x46d03a;}else _0x1a2bcf['type']==='boolean'?_0x20b83f[_0x555957]=_0xe3e6cf['toLowerCase']()==='true':_0x20b83f[_0x555957]=_0xe3e6cf;}),_0x20b83f;}function setAutomationFormError(_0x4f423a=''){const _0x321c3c=document['getElementById']('automation-form-error');if(!_0x321c3c)return;_0x4f423a?(_0x321c3c['hidden']=![],_0x321c3c['textContent']=_0x4f423a):(_0x321c3c['hidden']=!![],_0x321c3c['textContent']='');}function resetAutomationModalForm(){setAutomationFormError(''),state['automationTemplateParamValues']={},state['editingAutomationId']=null,state['automationModalMode']='create',document['getElementById']('automation-name')['value']='',document['getElementById']('automation-description')['value']='',document['getElementById']('automation-frequency')['value']='daily',document['getElementById']('automation-daily-time')['value']='02:00',document['getElementById']('automation-weekly-day')['value']='1',document['getElementById']('automation-weekly-time')['value']='09:00',document['getElementById']('automation-monthly-day')['value']='1',document['getElementById']('automation-monthly-time')['value']='00:00',document['getElementById']('automation-recurring-interval')['value']='*/30\x20*\x20*\x20*\x20*',document['getElementById']('automation-recurring-start-hour')['value']='',document['getElementById']('automation-recurring-end-hour')['value']='',document['getElementById']('automation-custom-cron')['value']='',setRecurringDaySelectionToken('*');const _0x576d35=state['selectedEnvData']?.['default_agent']||getAvailableAutomationAgentNames()[0x0]||'claude';setAutomationAgentSelection(_0x576d35),document['getElementById']('automation-effort-level')['value']='',document['getElementById']('automation-reasoning-level')['value']='',document['getElementById']('automation-task-name')['value']='Automation\x20-\x20{{date}}',setAutomationInstructionsValue(''),document['querySelector']('input[name=\x22automation-task-mode\x22][value=\x22instructions\x22]')['checked']=!![],document['getElementById']('automation-enabled')['checked']=!![],renderAutomationTemplateOptions(),renderAutomationTemplateParameters({}),refreshAllAutomationModalCustomSelects(),updateAutomationFrequencyFields(),updateAutomationAgentFields(),updateAutomationTaskMode(),updateAutomationScheduleSummary();}function closeAutomationModal(){const _0x1a4d38=document['getElementById']('automation-modal');if(!_0x1a4d38)return;_0x1a4d38['hidden']=!![],setAutomationFormError('');}function findAutomationById(_0x5d1b40){return state['automations']['find'](_0x3ec8e3=>_0x3ec8e3['id']===_0x5d1b40)||null;}function applyAutomationToModal(_0x4a22a3){document['getElementById']('automation-name')['value']=_0x4a22a3['name']||'',document['getElementById']('automation-description')['value']=_0x4a22a3['description']||'',document['getElementById']('automation-task-name')['value']=_0x4a22a3['task']?.['name']||'Automation\x20-\x20{{date}}',setAutomationAgentSelection(_0x4a22a3['agent']?.['name']||state['selectedEnvData']?.['default_agent']||getAvailableAutomationAgentNames()[0x0]||'claude'),document['getElementById']('automation-effort-level')['value']=_0x4a22a3['agent']?.['effortLevel']||'',document['getElementById']('automation-reasoning-level')['value']=_0x4a22a3['agent']?.['reasoningLevel']||'',document['getElementById']('automation-enabled')['checked']=_0x4a22a3['enabled']!==![];const _0x5a4b94=_0x4a22a3['task']?.['taskType']?'template':'instructions';document['querySelector']('input[name=\x22automation-task-mode\x22][value=\x22'+_0x5a4b94+'\x22]')['checked']=!![],setAutomationInstructionsValue(_0x4a22a3['task']?.['instructions']||''),renderAutomationTemplateOptions(_0x4a22a3['task']?.['taskType']||''),state['automationTemplateParamValues']={..._0x4a22a3['task']?.['parameters']||{}},renderAutomationTemplateParameters(state['automationTemplateParamValues']),refreshAllAutomationModalCustomSelects(),applyAutomationScheduleToForm(_0x4a22a3['schedule']||'0\x202\x20*\x20*\x20*'),updateAutomationTaskMode(),updateAutomationAgentFields();}async function openAutomationModal(_0x5d5ac7='create',_0x5ea34d=null){if(!state['selectedEnv'])return;await loadAvailableAutomationModels(),initializeAutomationModalCustomSelects(),initializeAutomationInstructionsEditor(),renderAutomationAgentOptions(state['selectedEnvData']?.['default_agent']||''),initializeAutomationFormOptions(),resetAutomationModalForm();const _0x3a4410=document['getElementById']('automation-modal'),_0x271dea=document['getElementById']('automation-modal-title');if(!_0x3a4410||!_0x271dea)return;if(_0x5d5ac7==='edit'&&_0x5ea34d){state['automationModalMode']='edit',state['editingAutomationId']=_0x5ea34d,_0x271dea['textContent']='Edit\x20Automation';const _0x36776=findAutomationById(_0x5ea34d);if(_0x36776)applyAutomationToModal(_0x36776);else try{const _0x980394=await API['getAutomation'](_0x5ea34d);_0x980394?.['automation']&&applyAutomationToModal(_0x980394['automation']);}catch(_0xc24e10){setAutomationFormError(_0xc24e10['message']||'Failed\x20to\x20load\x20automation');}}else state['automationModalMode']='create',_0x271dea['textContent']='Create\x20Automation';_0x3a4410['hidden']=![];}function buildAutomationPayloadFromForm(){const _0x42e766=document['getElementById']('automation-name')?.['value']?.['trim']()||'',_0x1e95b2=document['getElementById']('automation-description')?.['value']?.['trim']()||'',_0x196725=document['getElementById']('automation-task-name')?.['value']?.['trim']()||'',_0x444f2c=document['getElementById']('automation-enabled')?.['checked']!==![],_0x2a1b2e=document['getElementById']('automation-agent-name')?.['value']||state['selectedEnvData']?.['default_agent']||getAvailableAutomationAgentNames()[0x0]||'claude',_0x51fce9=document['getElementById']('automation-effort-level')?.['value']||null,_0x57610a=document['getElementById']('automation-reasoning-level')?.['value']||null,_0x411202=getSelectedAutomationTaskMode();if(!_0x42e766)throw new Error('Automation\x20name\x20is\x20required');if(!_0x196725)throw new Error('Task\x20name\x20template\x20is\x20required');const _0x1d7a59=buildAutomationScheduleFromForm();if(!_0x1d7a59['cron'])throw new Error('Schedule\x20is\x20required');const _0x3d1497={'name':_0x42e766,'description':_0x1e95b2,'environment':state['selectedEnv'],'enabled':_0x444f2c,'schedule':_0x1d7a59['cron'],'agent':{'name':_0x2a1b2e,'effortLevel':_0x2a1b2e==='claude'?_0x51fce9||null:null,'reasoningLevel':_0x2a1b2e==='codex'?_0x57610a||null:null},'task':{'name':_0x196725,'instructions':'','taskType':null,'parameters':{},'skills':[]},'settings':{'retainHistoryDays':0x1e}};if(_0x411202==='template'){const _0x3a00a0=document['getElementById']('automation-template-name')?.['value']||'';if(!_0x3a00a0)throw new Error('Select\x20a\x20task\x20template');const _0x5c4914=getSelectedAutomationTemplate(),_0x3b579a=_0x5c4914?.['parameters']&&typeof _0x5c4914['parameters']==='object'?_0x5c4914['parameters']:{},_0x6fb158=collectAutomationTemplateParameters(),_0xbe1e57=Object['entries'](_0x3b579a)['filter'](([_0x486db9,_0x3e6eb1])=>Boolean(_0x3e6eb1?.['required'])&&String(_0x6fb158[_0x486db9]??'')['trim']()==='')['map'](([_0x1b1f97])=>_0x1b1f97);if(_0xbe1e57['length']>0x0)throw new Error('Missing\x20required\x20template\x20parameters:\x20'+_0xbe1e57['join'](',\x20'));_0x3d1497['task']['taskType']=_0x3a00a0,_0x3d1497['task']['parameters']=_0x6fb158,_0x3d1497['task']['instructions']=getAutomationInstructionsValue()['trim']();}else{const _0x19183e=getAutomationInstructionsValue()['trim']();if(!_0x19183e)throw new Error('Instructions\x20are\x20required');_0x3d1497['task']['instructions']=_0x19183e;}return _0x3d1497;}async function saveAutomationFromModal(){try{setAutomationFormError('');const _0xb4059f=buildAutomationPayloadFromForm();state['automationModalMode']==='edit'&&state['editingAutomationId']?(await API['updateAutomation'](state['editingAutomationId'],_0xb4059f),Utils['showSuccess']('Automation\x20updated')):(await API['createAutomation'](_0xb4059f),Utils['showSuccess']('Automation\x20created')),closeAutomationModal(),await renderAutomations(),state['viewingAutomationId']&&await openAutomationHistoryView(state['viewingAutomationId']);}catch(_0x3fd250){setAutomationFormError(_0x3fd250['message']||'Failed\x20to\x20save\x20automation');}}function closeAutomationHistoryView(){const _0x581012=document['getElementById']('automations-list-view'),_0x22af65=document['getElementById']('automation-history-view');if(_0x581012)_0x581012['hidden']=![];if(_0x22af65)_0x22af65['hidden']=!![];state['viewingAutomationId']=null;}async function triggerAutomationById(_0x246517){try{await API['triggerAutomation'](_0x246517),Utils['showSuccess']('Automation\x20triggered'),await renderAutomations(),state['viewingAutomationId']===_0x246517&&await openAutomationHistoryView(_0x246517);}catch(_0x4c3c93){Utils['showError'](_0x4c3c93['message']||'Failed\x20to\x20trigger\x20automation');}}async function triggerViewedAutomation(){if(!state['viewingAutomationId'])return;await triggerAutomationById(state['viewingAutomationId']);}async function openAutomationHistoryView(_0x3cad69){const _0x8a5a2c=findAutomationById(_0x3cad69);if(!_0x8a5a2c)return;const _0x43ac0a=document['getElementById']('automations-list-view'),_0x40deab=document['getElementById']('automation-history-view'),_0x10b3c8=document['getElementById']('automation-history-title'),_0x1f6e12=document['getElementById']('automation-history-subtitle'),_0x3c6c95=document['getElementById']('automation-history-body'),_0x43e69d=document['getElementById']('automation-history-tasks-link');if(!_0x43ac0a||!_0x40deab||!_0x10b3c8||!_0x1f6e12||!_0x3c6c95)return;state['viewingAutomationId']=_0x3cad69,_0x43ac0a['hidden']=!![],_0x40deab['hidden']=![],_0x10b3c8['textContent']=_0x8a5a2c['name'],_0x1f6e12['textContent']=describeAutomationCron(_0x8a5a2c['schedule'])+'\x20·\x20'+(_0x8a5a2c['agent']?.['name']||'agent');_0x43e69d&&(_0x43e69d['href']=buildAutomationTaskFilterHref(_0x3cad69));try{const _0x9d479d=await API['getAutomationHistory'](_0x3cad69,0x32),_0x57c345=_0x9d479d['runs']||[];if(_0x57c345['length']===0x0){_0x3c6c95['innerHTML']='<tr><td\x20colspan=\x224\x22\x20class=\x22text-muted\x22>No\x20runs\x20yet.</td></tr>';return;}_0x3c6c95['innerHTML']=_0x57c345['map'](_0x372a08=>{const _0x261ed9=_0x372a08['status']==='failed'?'status-failed':_0x372a08['status']==='running'?'status-running':'status-completed',_0x259496=_0x372a08['triggeredAt']?new Date(_0x372a08['triggeredAt'])['toLocaleString']():'-',_0x27772f=_0x372a08['taskId']?'<a\x20href=\x22task.html?id='+encodeURIComponent(_0x372a08['taskId'])+'\x22>View\x20Task</a>':'<span\x20class=\x22text-muted\x22>-</span>';return'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x259496)+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x372a08['triggeredBy']||'-')+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td><span\x20class=\x22automation-run-status\x20'+_0x261ed9+'\x22>'+Utils['escapeHtml'](_0x372a08['status']||'-')+'</span></td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td>'+_0x27772f+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20\x20\x20';})['join']('');}catch(_0x13de66){_0x3c6c95['innerHTML']='<tr><td\x20colspan=\x224\x22\x20class=\x22text-danger\x22>'+Utils['escapeHtml'](_0x13de66['message']||'Failed\x20to\x20load\x20history')+'</td></tr>';}}async function deleteAutomationById(_0x2ca7c7){const _0xf34db7=findAutomationById(_0x2ca7c7);if(!_0xf34db7)return;const _0x5947d6=await ConfirmDialog['show']({'title':'Delete\x20Automation','message':'Delete\x20automation\x20\x22'+_0xf34db7['name']+'\x22?','confirmText':'Delete','danger':!![]});if(!_0x5947d6)return;try{await API['deleteAutomation'](_0x2ca7c7),Utils['showSuccess']('Automation\x20deleted'),state['viewingAutomationId']===_0x2ca7c7&&closeAutomationHistoryView(),await renderAutomations();}catch(_0x56eed5){Utils['showError'](_0x56eed5['message']||'Failed\x20to\x20delete\x20automation');}}async function handleAutomationTableToggleChange(_0x2ff2a0){const _0xf138be=_0x2ff2a0['target']['closest']('[data-automation-toggle]');if(!_0xf138be)return;const _0x41c6c5=_0xf138be['getAttribute']('data-automation-toggle'),_0x31b64c=_0xf138be['checked'];try{await API['setAutomationEnabled'](_0x41c6c5,_0x31b64c),Utils['showSuccess'](_0x31b64c?'Automation\x20enabled':'Automation\x20disabled'),await renderAutomations();}catch(_0x1d1acb){_0xf138be['checked']=!_0x31b64c,Utils['showError'](_0x1d1acb['message']||'Failed\x20to\x20update\x20automation\x20status');}}async function handleAutomationTableActionClick(_0x2e7a48){const _0x2e6d3e=_0x2e7a48['target']['closest']('[data-automation-action]');if(!_0x2e6d3e)return;const _0x4c4a82=_0x2e6d3e['getAttribute']('data-automation-action'),_0x10b7a4=_0x2e6d3e['getAttribute']('data-automation-id');if(!_0x10b7a4)return;if(_0x4c4a82==='trigger'){await triggerAutomationById(_0x10b7a4);return;}if(_0x4c4a82==='edit'){await openAutomationModal('edit',_0x10b7a4);return;}if(_0x4c4a82==='delete'){await deleteAutomationById(_0x10b7a4);return;}_0x4c4a82==='history'&&await openAutomationHistoryView(_0x10b7a4);}function renderAutomationsTable(){const _0x4d9216=document['getElementById']('automations-count'),_0x22a962=document['getElementById']('automations-empty'),_0x2b67aa=document['getElementById']('automations-table-wrapper'),_0x42972c=document['getElementById']('automations-table-body');if(!_0x4d9216||!_0x22a962||!_0x2b67aa||!_0x42972c)return;const _0x43e033=state['automations']||[];_0x4d9216['textContent']=_0x43e033['length']+'\x20item'+(_0x43e033['length']===0x1?'':'s');if(_0x43e033['length']===0x0){_0x22a962['hidden']=![],_0x2b67aa['hidden']=!![],_0x42972c['innerHTML']='';return;}_0x22a962['hidden']=!![],_0x2b67aa['hidden']=![],_0x42972c['innerHTML']=_0x43e033['map'](_0x196b7b=>{const _0x1d19c4=_0x196b7b['description']?'<div\x20class=\x22text-muted\x20small\x22>'+Utils['escapeHtml'](_0x196b7b['description'])+'</div>':'',_0x2df14e=describeAutomationCron(_0x196b7b['schedule']),_0x39b966=_0x196b7b['lastRun']?'Last\x20run\x20'+Utils['formatRelativeTime'](_0x196b7b['lastRun']):'Never\x20run';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<strong>'+Utils['escapeHtml'](_0x196b7b['name'])+'</strong>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x1d19c4+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x2df14e)+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20data-automation-toggle=\x22'+Utils['escapeHtml'](_0x196b7b['id'])+'\x22\x20'+(_0x196b7b['enabled']?'checked':'')+'>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22text-muted\x20small\x22>'+Utils['escapeHtml'](_0x39b966)+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22automation-actions-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-small\x22\x20data-automation-action=\x22history\x22\x20data-automation-id=\x22'+Utils['escapeHtml'](_0x196b7b['id'])+'\x22>History</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-small\x22\x20data-automation-action=\x22edit\x22\x20data-automation-id=\x22'+Utils['escapeHtml'](_0x196b7b['id'])+'\x22>Edit</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-small\x20danger\x22\x20data-automation-action=\x22delete\x22\x20data-automation-id=\x22'+Utils['escapeHtml'](_0x196b7b['id'])+'\x22>Delete</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>\x0a\x20\x20\x20\x20';})['join']('');}async function renderAutomations(){if(!state['selectedEnv'])return;const _0x31adbf=document['getElementById']('automations-loading'),_0x4fe6a2=document['getElementById']('automations-error');if(_0x31adbf)_0x31adbf['hidden']=![];_0x4fe6a2&&(_0x4fe6a2['hidden']=!![],_0x4fe6a2['textContent']='');const _0x80092b=state['selectedEnv'];try{const _0x2050ba=await API['getAutomations']({'environment':_0x80092b});if(state['selectedEnv']!==_0x80092b)return;state['automations']=_0x2050ba['automations']||[],state['automationsLoadedEnv']=_0x80092b,renderAutomationsTable(),updateTabBadge('badge-automations',state['automations']['length']);}catch(_0x5c0c6e){console['error']('Failed\x20to\x20load\x20automations:',_0x5c0c6e),_0x4fe6a2&&(_0x4fe6a2['hidden']=![],_0x4fe6a2['textContent']=_0x5c0c6e['message']||'Failed\x20to\x20load\x20automations');}finally{if(_0x31adbf)_0x31adbf['hidden']=!![];}}async function handleAutomationDeepLinkParams(){const {env:_0x3abab4,tab:_0x309442,automation:_0x59ff40}=parseAutomationDeepLinkParams(window['location']['search']);if(!_0x3abab4&&!_0x309442&&!_0x59ff40)return;_0x3abab4&&_0x3abab4!==state['selectedEnv']&&state['environments']['some'](_0x344162=>_0x344162['name']===_0x3abab4)&&await selectEnvironment(_0x3abab4),_0x309442&&switchTab(_0x309442),_0x59ff40&&(switchTab('automations'),await renderAutomations(),await openAutomationHistoryView(_0x59ff40));}window['switchTab']=function(_0xdf761a){state['currentTab']=_0xdf761a,sessionStorage['setItem'](SESSION_KEY_TAB,_0xdf761a),document['querySelectorAll']('.content-tab')['forEach'](_0x55b47c=>{const _0x5be2af=_0x55b47c['dataset']['tab']===_0xdf761a;_0x55b47c['classList']['toggle']('active',_0x5be2af),_0x55b47c['setAttribute']('aria-selected',_0x5be2af);}),scrollToActiveContentTab(),document['querySelectorAll']('.tab-panel')['forEach'](_0x1414c6=>{_0x1414c6['hidden']=_0x1414c6['id']!=='tab-'+_0xdf761a;}),_0xdf761a==='build'&&state['selectedEnv']&&(renderBuildTab(),loadBuildHistory()),_0xdf761a==='deploy'&&state['selectedEnv']&&(renderDeployProfiles(),loadDeploymentHistory()),_0xdf761a==='access'&&state['selectedEnv']&&loadAccessTab(),_0xdf761a==='automations'&&state['selectedEnv']&&renderAutomations(),_0xdf761a==='server'&&state['selectedEnv']&&renderServerConfig();};function renderRepos(){const _0xd9d144=document['querySelector']('.repos-sidebar'),_0x337fcb=state['selectedEnvData']['repos']||[];updateTabBadge('badge-repos',_0x337fcb['length']);const _0x5a49a2=_0xd9d144['querySelector']('#new-repo-tab'),_0x40e84a=_0x337fcb['map']((_0x500f8d,_0x1eeabf)=>'\x0a\x20\x20\x20\x20<button\x20class=\x22repo-tab\x22\x20data-repo=\x22'+_0x1eeabf+'\x22\x20onclick=\x22selectRepo('+_0x1eeabf+')\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22repo-icon\x22>📁</span>\x0a\x20\x20\x20\x20\x20\x20<span>'+Utils['escapeHtml'](_0x500f8d['name'])+'</span>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20')['join']('');_0xd9d144['innerHTML']=_0x5a49a2['outerHTML']+_0x40e84a,_0xd9d144['querySelector']('#new-repo-tab')['addEventListener']('click',addRepo);if(_0x337fcb['length']>0x0&&state['currentRepo']===null)selectRepo(0x0);else _0x337fcb['length']===0x0&&showRepoEmptyState();}function showRepoEmptyState(){document['getElementById']('current-repo-name')['textContent']='Select\x20a\x20Repository',document['getElementById']('delete-repo-btn')['hidden']=!![],document['getElementById']('repo-details-container')['innerHTML']='<p\x20class=\x22text-muted\x22>Select\x20a\x20repository\x20from\x20the\x20sidebar\x20to\x20view\x20details,\x20or\x20add\x20a\x20new\x20one.</p>';}function persistCurrentRepoFormChanges(){if(state['currentRepo']===null)return;const _0x127eda=state['selectedEnvData']?.['repos'];if(!Array['isArray'](_0x127eda)||!_0x127eda[state['currentRepo']])return;const _0x646ea3=document['getElementById']('repo-url'),_0x5ef727=document['getElementById']('repo-allow-branch-selection'),_0x357e57=document['getElementById']('repo-path'),_0x3553ce=document['getElementById']('repo-description'),_0x3b4426=document['getElementById']('repo-clone-auto'),_0x40c02e=document['getElementById']('repo-post-clone-action');if(!_0x646ea3||!_0x5ef727||!_0x357e57||!_0x3553ce||!_0x3b4426||!_0x40c02e)return;const _0x322c3b=_0x127eda[state['currentRepo']],_0x4e1e5b=document['getElementById']('edit-repo-provider')?.['value']||'',_0xfdc933=document['getElementById']('edit-repo-credential-mode')?.['value']||'app',_0xd5b11e=monacoEditors['get']('repo-custom-action-editor'),_0xc3a045=_0xd5b11e?_0xd5b11e['getValue']()['trim']():'';let _0x4b2fbd;if(_0x40c02e['value']==='custom'&&_0xc3a045)_0x4b2fbd=_0xc3a045;else _0x40c02e['value']!=='none'&&_0x40c02e['value']!=='custom'&&(_0x4b2fbd=_0x40c02e['value']);const _0x59936d={..._0x322c3b,'url':_0x646ea3['value'],'branch':getEditRepoBranchValue(),'allow_branch_selection':_0x5ef727['checked'],'path':_0x357e57['value']||undefined,'description':_0x3553ce['value']||undefined,'clone_auto':_0x3b4426['checked'],'post_clone_action':_0x4b2fbd||undefined};_0x4e1e5b?_0x59936d['remote_provider']={'provider':_0x4e1e5b,'credential_mode':_0xfdc933}:delete _0x59936d['remote_provider'],_0x127eda[state['currentRepo']]=_0x59936d;}window['selectRepo']=function(_0x3db18d){persistCurrentRepoFormChanges();const _0x2a69ce=monacoEditors['get']('repo-custom-action-editor');_0x2a69ce&&(_0x2a69ce['dispose'](),monacoEditors['delete']('repo-custom-action-editor'));state['currentRepo']=_0x3db18d;const _0x325705=state['selectedEnvData']['repos'][_0x3db18d],_0x3a5df8=_0x325705['remote_provider']&&_0x325705['remote_provider']['provider'];document['querySelectorAll']('.repo-tab')['forEach'](_0xe023dc=>{_0xe023dc['classList']['toggle']('active',_0xe023dc['dataset']['repo']===String(_0x3db18d));}),document['getElementById']('current-repo-name')['textContent']=_0x325705['name'],document['getElementById']('delete-repo-btn')['hidden']=![];const _0x4d4b5f='\x0a\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20<label\x20for=\x22edit-repo-provider\x22>Git\x20Provider</label>\x0a\x20\x20\x20\x20\x20\x20<select\x20id=\x22edit-repo-provider\x22\x20class=\x22form-input\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>None</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Providers\x20populated\x20via\x20loadEditRepoProviders()\x20-->\x0a\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20',_0x26b088=_0x325705['remote_provider']?.['credential_mode']||'app',_0x4104b5='\x0a\x20\x20\x20\x20<div\x20id=\x22edit-repo-credential-mode-row\x22\x20class=\x22form-row\x22\x20'+(_0x3a5df8?'':'hidden')+'>\x0a\x20\x20\x20\x20\x20\x20<label\x20for=\x22edit-repo-credential-mode\x22>Credential\x20Mode</label>\x0a\x20\x20\x20\x20\x20\x20<select\x20id=\x22edit-repo-credential-mode\x22\x20class=\x22form-input\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22app\x22\x20'+(_0x26b088==='app'?'selected':'')+'>App\x20Credentials</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22user\x22\x20'+(_0x26b088==='user'?'selected':'')+'>User\x20Credentials</option>\x0a\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20<small\x20class=\x22form-hint\x22>For\x20tasks\x20and\x20deployments.\x20App:\x20app/bot\x20identity.\x20User:\x20personal\x20Git\x20account\x20(requires\x20connection).</small>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20',_0x57e9d2='\x0a\x20\x20\x20\x20<div\x20id=\x22edit-repo-url-row\x22\x20class=\x22form-row\x22\x20'+(_0x3a5df8?'hidden':'')+'>\x0a\x20\x20\x20\x20\x20\x20<label\x20for=\x22repo-url\x22>Repository\x20URL</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20id=\x22repo-url\x22\x20class=\x22form-input\x20code-font\x22\x20value=\x22'+Utils['escapeHtml'](_0x325705['url'])+'\x22\x20placeholder=\x22https://github.com/user/repo.git\x22>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20',_0x150e63='\x0a\x20\x20\x20\x20<div\x20id=\x22edit-repo-autocomplete-row\x22\x20class=\x22form-row\x22\x20'+(_0x3a5df8?'':'hidden')+'\x20style=\x22margin-top:\x2016px;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>Repository</label>\x0a\x20\x20\x20\x20\x20\x20<div\x20id=\x22edit-repo-autocomplete-container\x22></div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20',_0x50f7fa=document['getElementById']('repo-details-container');_0x50f7fa['innerHTML']='\x0a\x20\x20\x20\x20<div\x20class=\x22form-single-column\x22>\x0a\x20\x20\x20\x20\x20\x20'+_0x4d4b5f+'\x0a\x20\x20\x20\x20\x20\x20'+_0x4104b5+'\x0a\x20\x20\x20\x20\x20\x20'+_0x57e9d2+'\x0a\x20\x20\x20\x20\x20\x20'+_0x150e63+'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label\x20for=\x22repo-branch-field\x22>Branch</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22autocomplete-control-with-icon\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20id=\x22repo-branch-field\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-icon\x20autocomplete-refresh-btn\x22\x20id=\x22repo-branch-refresh-btn\x22\x20title=\x22Reload\x20branch\x20list\x22\x20aria-label=\x22Reload\x20branch\x20list\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20↻\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Allow\x20Branch\x20Selection</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label\x20class=\x22toggle-switch\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20id=\x22repo-allow-branch-selection\x22\x20'+(_0x325705['allow_branch_selection']?'checked':'')+'>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22toggle-slider\x22></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Path</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20id=\x22repo-path\x22\x20class=\x22form-input\x20code-font\x22\x20value=\x22'+Utils['escapeHtml'](_0x325705['path']||'')+'\x22\x20placeholder=\x22Optional\x20path\x20in\x20environment\x22>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Description</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20id=\x22repo-description\x22\x20class=\x22form-input\x22\x20value=\x22'+Utils['escapeHtml'](_0x325705['description']||'')+'\x22\x20placeholder=\x22Optional\x20description\x22>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Clone\x20Automatically</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label\x20class=\x22toggle-switch\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20id=\x22repo-clone-auto\x22\x20'+(_0x325705['clone_auto']!==![]?'checked':'')+'>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22toggle-slider\x22></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<small\x20class=\x22form-hint\x22>Include\x20this\x20repository\x20in\x20the\x20Docker\x20build.\x20Disable\x20to\x20clone\x20manually\x20at\x20runtime\x20or\x20via\x20post-clone\x20script.</small>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label\x20for=\x22repo-post-clone-action\x22>Post-clone\x20Action</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<select\x20id=\x22repo-post-clone-action\x22\x20class=\x22form-input\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22none\x22\x20'+(!_0x325705['post_clone_action']||_0x325705['post_clone_action']==='none'?'selected':'')+'>None</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<optgroup\x20label=\x22Node.js\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22npm\x20install\x22\x20'+(_0x325705['post_clone_action']==='npm\x20install'?'selected':'')+'>npm\x20install</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22npm\x20ci\x22\x20'+(_0x325705['post_clone_action']==='npm\x20ci'?'selected':'')+'>npm\x20ci</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22yarn\x22\x20'+(_0x325705['post_clone_action']==='yarn'?'selected':'')+'>yarn</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22pnpm\x20install\x22\x20'+(_0x325705['post_clone_action']==='pnpm\x20install'?'selected':'')+'>pnpm\x20install</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</optgroup>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<optgroup\x20label=\x22Python\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22pip\x20install\x20-r\x20requirements.txt\x22\x20'+(_0x325705['post_clone_action']==='pip\x20install\x20-r\x20requirements.txt'?'selected':'')+'>pip\x20install\x20-r\x20requirements.txt</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22pip\x20install\x20-e\x20.\x22\x20'+(_0x325705['post_clone_action']==='pip\x20install\x20-e\x20.'?'selected':'')+'>pip\x20install\x20-e\x20.\x20(editable)</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</optgroup>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<optgroup\x20label=\x22Java\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22mvn\x20install\x20-DskipTests\x22\x20'+(_0x325705['post_clone_action']==='mvn\x20install\x20-DskipTests'?'selected':'')+'>mvn\x20install\x20(skip\x20tests)</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22./gradlew\x20build\x20-x\x20test\x22\x20'+(_0x325705['post_clone_action']==='./gradlew\x20build\x20-x\x20test'?'selected':'')+'>gradle\x20build\x20(skip\x20tests)</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</optgroup>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<optgroup\x20label=\x22.NET\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22dotnet\x20restore\x22\x20'+(_0x325705['post_clone_action']==='dotnet\x20restore'?'selected':'')+'>dotnet\x20restore</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22dotnet\x20build\x22\x20'+(_0x325705['post_clone_action']==='dotnet\x20build'?'selected':'')+'>dotnet\x20build</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</optgroup>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<optgroup\x20label=\x22PHP\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22composer\x20install\x22\x20'+(_0x325705['post_clone_action']==='composer\x20install'?'selected':'')+'>composer\x20install</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</optgroup>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<optgroup\x20label=\x22Other\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22custom\x22\x20'+(_0x325705['post_clone_action']==='custom'||_0x325705['post_clone_action']&&!isKnownPostCloneAction(_0x325705['post_clone_action'])?'selected':'')+'>Custom\x20command...</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</optgroup>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<small\x20class=\x22form-hint\x22>Command\x20to\x20run\x20in\x20this\x20repository\x27s\x20directory\x20after\x20cloning.</small>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22\x20id=\x22repo-custom-action-row\x22\x20'+(_0x325705['post_clone_action']&&!isKnownPostCloneAction(_0x325705['post_clone_action'])&&_0x325705['post_clone_action']!=='none'?'':'hidden')+'>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label\x20for=\x22repo-custom-action\x22>Custom\x20Command</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20id=\x22repo-custom-action-editor\x22\x20style=\x22height:\x20150px;\x20border:\x201px\x20solid\x20var(--color-border);\x20border-radius:\x204px;\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<small\x20class=\x22form-hint\x22>Shell\x20commands\x20to\x20run\x20after\x20cloning.\x20Use\x20multiple\x20lines\x20for\x20complex\x20commands.</small>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20',loadEditRepoProviders(_0x325705),initEditRepoBranchAutocomplete(_0x325705);const _0x2c12c6=document['getElementById']('repo-branch-refresh-btn');_0x2c12c6&&(_0x2c12c6['onclick']=_0x5da365=>{_0x5da365['preventDefault'](),reloadEditRepoBranchSuggestions();});document['getElementById']('edit-repo-provider')['addEventListener']('change',onEditRepoProviderChange),document['getElementById']('repo-post-clone-action')['addEventListener']('change',async _0x4f412a=>{const _0x3aa50f=document['getElementById']('repo-custom-action-row'),_0x1d482a=_0x4f412a['target']['value']==='custom';_0x3aa50f['hidden']=!_0x1d482a;if(_0x1d482a){const _0x5f00a8=monacoEditors['get']('repo-custom-action-editor');if(!_0x5f00a8){const _0x541d88=await createMonacoEditor('repo-custom-action-editor','','shell',![]);_0x541d88&&(_0x541d88['updateOptions']({'wordWrap':'off'}),_0x541d88['onDidChangeModelContent'](()=>markAsModified()));}}markAsModified();});if(_0x325705['post_clone_action']&&!isKnownPostCloneAction(_0x325705['post_clone_action'])&&_0x325705['post_clone_action']!=='none'){const _0x125509=_0x325705['post_clone_action'];createMonacoEditor('repo-custom-action-editor',_0x125509,'shell',![])['then'](_0x2dec03=>{_0x2dec03&&(_0x2dec03['updateOptions']({'wordWrap':'off'}),_0x2dec03['onDidChangeModelContent'](()=>markAsModified()));});}const _0x246124=['repo-url','repo-allow-branch-selection','repo-path','repo-description','repo-clone-auto','edit-repo-credential-mode'];_0x246124['forEach'](_0x1f37d1=>{const _0x58c0e0=document['getElementById'](_0x1f37d1);_0x58c0e0&&(_0x58c0e0['addEventListener']('input',markAsModified),_0x58c0e0['addEventListener']('change',markAsModified));});};const REPO_ICON_PUBLIC='<svg\x20viewBox=\x220\x200\x2016\x2016\x22><path\x20d=\x22M2\x202.5A2.5\x202.5\x200\x200\x201\x204.5\x200h8.75a.75.75\x200\x200\x201\x20.75.75v12.5a.75.75\x200\x200\x201-.75.75h-2.5a.75.75\x200\x200\x201\x200-1.5h1.75v-2h-8a1\x201\x200\x200\x200-.714\x201.7.75.75\x200\x201\x201-1.072\x201.05A2.495\x202.495\x200\x200\x201\x202\x2011.5Zm10.5-1h-8a1\x201\x200\x200\x200-1\x201v6.708A2.486\x202.486\x200\x200\x201\x204.5\x209h8ZM5\x2012.25a.25.25\x200\x200\x201\x20.25-.25h3.5a.25.25\x200\x200\x201\x20.25.25v3.25a.25.25\x200\x200\x201-.4.2l-1.45-1.087a.249.249\x200\x200\x200-.3\x200L5.4\x2015.7a.25.25\x200\x200\x201-.4-.2Z\x22></path></svg>',REPO_ICON_PRIVATE='<svg\x20viewBox=\x220\x200\x2016\x2016\x22><path\x20fill-rule=\x22evenodd\x22\x20d=\x22M4\x204v2h-.25A1.75\x201.75\x200\x20002\x207.75v5.5c0\x20.966.784\x201.75\x201.75\x201.75h8.5A1.75\x201.75\x200\x200014\x2013.25v-5.5A1.75\x201.75\x200\x200012.25\x206H12V4a4\x204\x200\x2010-8\x200zm6.5\x202V4a2.5\x202.5\x200\x2000-5\x200v2h5zM12\x207.5h.25a.25.25\x200\x2001.25.25v5.5a.25.25\x200\x2001-.25.25h-8.5a.25.25\x200\x2001-.25-.25v-5.5a.25.25\x200\x2001.25-.25H12z\x22></path></svg>';async function loadEditRepoProviders(_0x33928e){const _0x18cddc=document['getElementById']('edit-repo-provider');if(!_0x18cddc)return;const _0x2cc26c=_0x33928e['remote_provider']&&_0x33928e['remote_provider']['provider'];try{const _0x2a0096=await API['get']('/environments/'+state['selectedEnv']+'/repos/providers'),_0x16eaed=_0x2a0096['providers']||[];let _0xebd72f='<option\x20value=\x22\x22>None</option>',_0xe5b352=![];_0x16eaed['forEach'](_0x14dd8f=>{const _0x224126=_0x2cc26c&&_0x33928e['remote_provider']['provider']===_0x14dd8f['name'];if(_0x224126)_0xe5b352=!![];const _0x4316c7=_0x224126?'selected':'';_0xebd72f+='<option\x20value=\x22'+Utils['escapeHtml'](_0x14dd8f['name'])+'\x22\x20'+_0x4316c7+'>'+Utils['escapeHtml'](_0x14dd8f['name'])+'\x20('+Utils['escapeHtml'](_0x14dd8f['type'])+')</option>';}),_0x2cc26c&&!_0xe5b352&&(_0xebd72f+='<option\x20value=\x22'+Utils['escapeHtml'](_0x33928e['remote_provider']['provider'])+'\x22\x20selected\x20disabled>'+Utils['escapeHtml'](_0x33928e['remote_provider']['provider'])+'\x20(unavailable)</option>'),_0x18cddc['innerHTML']=_0xebd72f,state['editRepoProviders']=_0x16eaed,initEditRepoAutocomplete(_0x33928e);}catch(_0x38084f){console['error']('Failed\x20to\x20load\x20providers\x20for\x20edit\x20repo:',_0x38084f);}}function extractRepoFullName(_0x139b96){if(!_0x139b96)return'';try{const _0x811792=_0x139b96['match'](/\/([^/]+)\/_git\/([^/]+?)(?:\.git)?$/);if(_0x811792)return _0x811792[0x1]+'/'+_0x811792[0x2];const _0x437363=_0x139b96['match'](/[/:]([^/:]+\/[^/]+?)(?:\.git)?$/);return _0x437363?_0x437363[0x1]:_0x139b96;}catch{return _0x139b96;}}function normalizeGitUrl(_0x154cec){if(!_0x154cec)return _0x154cec;const _0x54c88c=_0x154cec['match'](/^(https?:\/\/)[^@/]+@(.+)$/i);if(_0x54c88c)return''+_0x54c88c[0x1]+_0x54c88c[0x2];return _0x154cec;}function initEditRepoAutocomplete(_0x27e367){const _0x355b15=document['getElementById']('edit-repo-autocomplete-container');if(!_0x355b15)return;const _0x6c5c61=_0x27e367['remote_provider']&&_0x27e367['remote_provider']['provider'];editRepoAutocomplete&&(editRepoAutocomplete['destroy'](),editRepoAutocomplete=null);editRepoAutocomplete=new AutocompleteSelect(_0x355b15,{'placeholder':'Search\x20for\x20a\x20repository','maxItems':0x64,'emptyMessage':'No\x20repositories\x20found','loadingMessage':'Loading\x20repositories...','preload':![],'searchMode':'server','loadItems':async _0x249eb5=>{const _0x2fd1b4=document['getElementById']('edit-repo-provider')['value'];if(!_0x2fd1b4)return[];try{let _0x28d1fb='/environments/'+state['selectedEnv']+'/repos/available-from-provider?provider='+encodeURIComponent(_0x2fd1b4)+'&limit=100';_0x249eb5&&_0x249eb5['trim']()&&(_0x28d1fb+='&search='+encodeURIComponent(_0x249eb5['trim']()));const _0x3f5059=await API['get'](_0x28d1fb);return _0x3f5059['repositories']||[];}catch(_0x27f3af){console['error']('Failed\x20to\x20load\x20repositories:',_0x27f3af);throw _0x27f3af;}},'renderItem':_0x99fa97=>{const _0x3f0ac0=_0x99fa97['private']===!![];let _0x2560d2=_0x99fa97['description']||'no\x20description';return _0x99fa97['descriptionSource']==='project'&&_0x99fa97['description']&&(_0x2560d2='Project:\x20'+_0x99fa97['description']),{'primary':_0x99fa97['full_name']||_0x99fa97['name'],'secondary':_0x2560d2,'icon':_0x3f0ac0?REPO_ICON_PRIVATE:REPO_ICON_PUBLIC,'iconClass':_0x3f0ac0?'icon-private':'icon-public'};},'sortItems':_0x4ac969=>{return _0x4ac969['sort']((_0x588a5f,_0x2587ea)=>{const _0x5f2efc=(_0x588a5f['full_name']||_0x588a5f['name']||'')['toLowerCase'](),_0x1f681d=(_0x2587ea['full_name']||_0x2587ea['name']||'')['toLowerCase']();return _0x5f2efc['localeCompare'](_0x1f681d);});},'getItemValue':_0xbc1bc=>_0xbc1bc['clone_url']||_0xbc1bc['url'],'onSelect':_0x5433e1=>{if(_0x5433e1){const _0x2c5fef=document['getElementById']('repo-url');_0x2c5fef&&(_0x2c5fef['value']=_0x5433e1['clone_url']||_0x5433e1['url']||''),setEditRepoBranchValue(_0x5433e1['default_branch']||'main'),reloadEditRepoBranchSuggestions(),markAsModified();}}});if(_0x6c5c61){editRepoAutocomplete['enable'](),editRepoAutocomplete['preloadData']();const _0x220271={'full_name':extractRepoFullName(_0x27e367['url']),'clone_url':_0x27e367['url'],'name':_0x27e367['name']};editRepoAutocomplete['setValue'](_0x220271);}else editRepoAutocomplete['disable']();}function onEditRepoProviderChange(){const _0x35ccf1=document['getElementById']('edit-repo-provider')['value'],_0x2bbe1b=document['getElementById']('edit-repo-url-row'),_0x32989d=document['getElementById']('edit-repo-autocomplete-row'),_0x13c626=document['getElementById']('edit-repo-credential-mode-row'),_0xd4ed72=document['getElementById']('repo-url');if(_0x35ccf1){_0x2bbe1b['hidden']=!![],_0x32989d['hidden']=![];if(_0x13c626)_0x13c626['hidden']=![];_0xd4ed72&&(_0xd4ed72['value']=''),editRepoAutocomplete&&(editRepoAutocomplete['reset'](),editRepoAutocomplete['enable'](),editRepoAutocomplete['preloadData']());}else{_0x2bbe1b['hidden']=![],_0x32989d['hidden']=!![];if(_0x13c626)_0x13c626['hidden']=!![];_0xd4ed72&&(_0xd4ed72['value']=''),editRepoAutocomplete&&(editRepoAutocomplete['reset'](),editRepoAutocomplete['disable']());}reloadEditRepoBranchSuggestions(),markAsModified();}function cleanupEditRepoAutocomplete(){editRepoAutocomplete&&(editRepoAutocomplete['destroy'](),editRepoAutocomplete=null),editRepoBranchAutocomplete&&(editRepoBranchAutocomplete['destroy'](),editRepoBranchAutocomplete=null);}function initEditRepoBranchAutocomplete(_0x9287d5){const _0x44d68b=document['getElementById']('repo-branch-field');if(!_0x44d68b)return;editRepoBranchAutocomplete&&(editRepoBranchAutocomplete['destroy'](),editRepoBranchAutocomplete=null);editRepoBranchAutocomplete=new AutocompleteSelect(_0x44d68b,{'placeholder':'Search\x20for\x20a\x20branch','maxItems':0x64,'emptyMessage':'No\x20branches\x20found','loadingMessage':'Loading\x20branches...','preload':![],'searchMode':'server','loadItems':async _0x2ce36c=>{const {providerName:_0x405952,repoUrl:_0x1aa045}=getEditRepoBranchContext();if(!_0x405952||!_0x1aa045)return[];return fetchRepoBranches({'providerName':_0x405952,'repoUrl':_0x1aa045,'query':_0x2ce36c});},'renderItem':_0x284b3c=>({'primary':_0x284b3c['name'],'secondary':_0x284b3c['isDefault']?'default':''}),'sortItems':_0xf840bf=>_0xf840bf['sort']((_0x4fb94a,_0x15e24a)=>{if(_0x4fb94a['isDefault'])return-0x1;if(_0x15e24a['isDefault'])return 0x1;return(_0x4fb94a['name']||'')['localeCompare'](_0x15e24a['name']||'');}),'getItemValue':_0x4a02bd=>_0x4a02bd['name'],'onSelect':_0x2c54a5=>{_0x2c54a5&&setEditRepoBranchValue(_0x2c54a5['name']),markAsModified();}}),setEditRepoBranchValue(_0x9287d5?.['branch']||'main');editRepoBranchAutocomplete['input']&&editRepoBranchAutocomplete['input']['addEventListener']('input',()=>{clearBranchAutocompleteError(editRepoBranchAutocomplete),markAsModified();});const _0xb1b9c7=document['getElementById']('edit-repo-provider')?.['value']||'',_0x57ec49=document['getElementById']('repo-url')?.['value']?.['trim']()||'';_0xb1b9c7&&_0x57ec49&&editRepoBranchAutocomplete['preloadData']();}function validateEditRepoForm(){const _0x5da40c=document['getElementById']('edit-repo-provider')?.['value']||'',_0x52f565=document['getElementById']('repo-url')?.['value']?.['trim']()||'',_0x453134=getEditRepoBranchValue(),_0x4b057c=[];return _0x5da40c?!_0x52f565&&_0x4b057c['push']('Please\x20select\x20a\x20repository\x20from\x20the\x20provider'):!_0x52f565&&_0x4b057c['push']('Repository\x20URL\x20is\x20required'),!_0x453134&&_0x4b057c['push']('Branch\x20is\x20required'),_0x4b057c;}function addRepo(){const _0x383a4f=document['getElementById']('new-repo-url'),_0x50fe89=document['getElementById']('new-repo-name'),_0x1c6f9a=document['getElementById']('add-repo-error');document['getElementById']('repo-modal-title')['textContent']='Add\x20Repository',_0x383a4f['value']='',_0x50fe89['value']='',setNewRepoBranchValue('main'),document['getElementById']('new-repo-allow-branch')['checked']=![],document['getElementById']('new-repo-path')['value']='',document['getElementById']('new-repo-description')['value']='',document['querySelector']('input[name=\x22repo-entry-mode\x22][value=\x22manual\x22]')['checked']=!![],document['getElementById']('repo-provider-selection')['hidden']=!![],document['getElementById']('repo-url-row')['hidden']=![],document['getElementById']('new-repo-source-provider')['value']='';repoAutocomplete&&(repoAutocomplete['reset'](),repoAutocomplete['disable']());const _0x4069b3=document['getElementById']('new-repo-credential-mode');_0x4069b3&&(_0x4069b3['value']='app');_0x383a4f['classList']['remove']('input-error'),_0x50fe89['classList']['remove']('input-error'),clearBranchAutocompleteError(newRepoBranchAutocomplete),_0x1c6f9a['hidden']=!![];const _0x26a815=_0x327689=>_0x327689['target']['classList']['remove']('input-error');_0x383a4f['addEventListener']('input',_0x26a815,{'once':!![]}),_0x50fe89['addEventListener']('input',_0x26a815,{'once':!![]}),_0x383a4f['addEventListener']('input',()=>{const _0xe2c5ef=_0x383a4f['value']['trim']();if(_0xe2c5ef&&!_0x50fe89['value']){const _0x581276=_0xe2c5ef['split']('/'),_0x2d4f85=_0x581276[_0x581276['length']-0x1]['replace'](/\.git$/,'');_0x50fe89['placeholder']=_0x2d4f85||'Auto-extracted\x20from\x20URL';}}),loadRepoModalProviders(),initNewRepoBranchAutocomplete(),reloadNewRepoBranchSuggestions(),document['getElementById']('add-repo-modal')['hidden']=![];}function closeAddRepoModal(){document['getElementById']('add-repo-modal')['hidden']=!![],newRepoBranchAutocomplete&&(newRepoBranchAutocomplete['destroy'](),newRepoBranchAutocomplete=null),repoAutocomplete&&(repoAutocomplete['reset'](),repoAutocomplete['disable']());}function initNewRepoBranchAutocomplete(){const _0x1f199f=document['getElementById']('new-repo-branch-field');if(!_0x1f199f)return;newRepoBranchAutocomplete&&(newRepoBranchAutocomplete['destroy'](),newRepoBranchAutocomplete=null),newRepoBranchAutocomplete=new AutocompleteSelect(_0x1f199f,{'placeholder':'Search\x20for\x20a\x20branch','maxItems':0x64,'emptyMessage':'No\x20branches\x20found','loadingMessage':'Loading\x20branches...','preload':![],'searchMode':'server','loadItems':async _0x37fa7f=>{const {providerName:_0x1bc82e,repoUrl:_0x30baf0}=getNewRepoBranchContext();if(!_0x1bc82e||!_0x30baf0)return[];return fetchRepoBranches({'providerName':_0x1bc82e,'repoUrl':_0x30baf0,'query':_0x37fa7f});},'renderItem':_0x592569=>({'primary':_0x592569['name'],'secondary':_0x592569['isDefault']?'default':''}),'sortItems':_0x5b9820=>_0x5b9820['sort']((_0x4e8545,_0x248c0e)=>{if(_0x4e8545['isDefault'])return-0x1;if(_0x248c0e['isDefault'])return 0x1;return(_0x4e8545['name']||'')['localeCompare'](_0x248c0e['name']||'');}),'getItemValue':_0x2983d5=>_0x2983d5['name'],'onSelect':_0x15fa75=>{_0x15fa75&&setNewRepoBranchValue(_0x15fa75['name']);}}),newRepoBranchAutocomplete['input']&&newRepoBranchAutocomplete['input']['addEventListener']('input',()=>{clearBranchAutocompleteError(newRepoBranchAutocomplete);});}async function confirmAddRepo(){const _0x4185dc=document['getElementById']('new-repo-url'),_0xa1d439=document['getElementById']('new-repo-name'),_0x1e8075=document['getElementById']('add-repo-error'),_0x3dc2ba=_0x4185dc['value']['trim'](),_0x11a2b7=getNewRepoBranchValue();let _0x5a5ea7=_0xa1d439['value']['trim']();_0x4185dc['classList']['remove']('input-error'),_0xa1d439['classList']['remove']('input-error'),clearBranchAutocompleteError(newRepoBranchAutocomplete),_0x1e8075['hidden']=!![];const _0xde9fdd=document['querySelector']('input[name=\x22repo-entry-mode\x22]:checked')['value'];let _0x21caa7=![],_0x3aba8e='';if(_0xde9fdd==='provider'){const _0x2d1443=document['getElementById']('new-repo-source-provider')['value'],_0x5b2b9a=repoAutocomplete?repoAutocomplete['getSelectedItem']():null;if(!_0x2d1443)_0x3aba8e='Please\x20select\x20a\x20Git\x20provider',_0x21caa7=!![];else!_0x5b2b9a&&(_0x3aba8e='Please\x20select\x20a\x20repository',_0x21caa7=!![]);}else!_0x3dc2ba&&(_0x4185dc['classList']['add']('input-error'),_0x3aba8e='Repository\x20URL\x20is\x20required',_0x21caa7=!![]);!_0x11a2b7&&(setBranchAutocompleteErrorState(newRepoBranchAutocomplete,!![]),_0x3aba8e=_0x3aba8e||'Branch\x20is\x20required',_0x21caa7=!![]);if(!_0x5a5ea7&&_0x3dc2ba){const _0x5a3b43=_0x3dc2ba['split']('/');_0x5a5ea7=_0x5a3b43[_0x5a3b43['length']-0x1]['replace'](/\.git$/,'');}!_0x5a5ea7&&(_0xa1d439['classList']['add']('input-error'),_0x3aba8e=_0x3aba8e||'Repository\x20name\x20is\x20required',_0x21caa7=!![]);if(_0x21caa7){_0x1e8075['textContent']=_0x3aba8e,_0x1e8075['hidden']=![];return;}const _0x10fdb0={'name':_0x5a5ea7,'url':_0x3dc2ba,'branch':_0x11a2b7,'allow_branch_selection':document['getElementById']('new-repo-allow-branch')['checked'],'path':document['getElementById']('new-repo-path')['value']['trim']()||undefined,'description':document['getElementById']('new-repo-description')['value']['trim']()||undefined};if(_0xde9fdd==='provider'){const _0x4f7212=document['getElementById']('new-repo-source-provider')['value'];if(_0x4f7212){const _0x55e809=document['getElementById']('new-repo-credential-mode')?.['value']||'app';_0x10fdb0['remote_provider']={'provider':_0x4f7212,'credential_mode':_0x55e809};}}state['selectedEnvData']['repos']=[...state['selectedEnvData']['repos']||[],_0x10fdb0],renderRepos(),markAsModified(),closeAddRepoModal(),Utils['showSuccess']('Repository\x20added\x20(click\x20Save\x20to\x20persist\x20changes)');}async function loadRepoModalProviders(){try{const _0x32372d=await API['get']('/environments/'+state['selectedEnv']+'/repos/providers'),_0xc5bfb=_0x32372d['providers']||[],_0x1e181a=document['getElementById']('new-repo-source-provider');_0x1e181a['innerHTML']='<option\x20value=\x22\x22>--\x20Select\x20a\x20provider\x20--</option>',_0xc5bfb['forEach'](_0x264ac3=>{_0x1e181a['innerHTML']+='<option\x20value=\x22'+Utils['escapeHtml'](_0x264ac3['name'])+'\x22>'+Utils['escapeHtml'](_0x264ac3['name'])+'\x20('+Utils['escapeHtml'](_0x264ac3['type'])+')</option>';});}catch(_0x57acf6){console['error']('Failed\x20to\x20load\x20providers\x20for\x20repo\x20modal:',_0x57acf6);}}function onRepoEntryModeChange(_0x3219b0){const _0x21c07d=_0x3219b0['target']['value'],_0x503031=document['getElementById']('repo-provider-selection'),_0x3e5c87=document['getElementById']('repo-url-row'),_0x2106fc=document['getElementById']('new-repo-url'),_0x180976=document['getElementById']('new-repo-name'),_0x17be83=document['getElementById']('new-repo-source-provider');_0x21c07d==='provider'?(_0x503031['hidden']=![],_0x3e5c87['hidden']=!![],_0x17be83['value']='',initRepoAutocomplete(),_0x180976['placeholder']='Auto-extracted\x20from\x20URL'):(_0x503031['hidden']=!![],_0x3e5c87['hidden']=![],_0x2106fc['value']='',repoAutocomplete&&(repoAutocomplete['reset'](),repoAutocomplete['disable']()),_0x180976['placeholder']='Auto-extracted\x20from\x20URL'),reloadNewRepoBranchSuggestions();}function initRepoAutocomplete(){const _0x2d6a98=document['getElementById']('repo-autocomplete-container');if(!_0x2d6a98)return;repoAutocomplete&&repoAutocomplete['destroy'](),repoAutocomplete=new AutocompleteSelect(_0x2d6a98,{'placeholder':'Search\x20for\x20a\x20repository','maxItems':0x64,'emptyMessage':'No\x20repositories\x20found','loadingMessage':'Loading\x20repositories...','preload':![],'searchMode':'server','loadItems':async _0x38b356=>{const _0x17b9b7=document['getElementById']('new-repo-source-provider')['value'];if(!_0x17b9b7)return[];try{let _0xeefa71='/environments/'+state['selectedEnv']+'/repos/available-from-provider?provider='+encodeURIComponent(_0x17b9b7)+'&limit=100';_0x38b356&&_0x38b356['trim']()&&(_0xeefa71+='&search='+encodeURIComponent(_0x38b356['trim']()));const _0x15d5c4=await API['get'](_0xeefa71);return _0x15d5c4['repositories']||[];}catch(_0x1ef24b){console['error']('Failed\x20to\x20load\x20repositories:',_0x1ef24b);throw _0x1ef24b;}},'renderItem':_0x3fdca8=>{const _0x28e002=_0x3fdca8['private']===!![];let _0x56c24e=_0x3fdca8['description']||'no\x20description';return _0x3fdca8['descriptionSource']==='project'&&_0x3fdca8['description']&&(_0x56c24e='Project:\x20'+_0x3fdca8['description']),{'primary':_0x3fdca8['full_name']||_0x3fdca8['name'],'secondary':_0x56c24e,'icon':_0x28e002?REPO_ICON_PRIVATE:REPO_ICON_PUBLIC,'iconClass':_0x28e002?'icon-private':'icon-public'};},'sortItems':_0xef835b=>{return _0xef835b['sort']((_0x159889,_0x418527)=>{const _0x566aa6=(_0x159889['full_name']||_0x159889['name']||'')['toLowerCase'](),_0x3f0f6e=(_0x418527['full_name']||_0x418527['name']||'')['toLowerCase']();return _0x566aa6['localeCompare'](_0x3f0f6e);});},'getItemValue':_0xdd18a=>_0xdd18a['clone_url']||_0xdd18a['url'],'onSelect':_0x1038bc=>{const _0x55d9bc=document['getElementById']('new-repo-url'),_0x3217e0=document['getElementById']('new-repo-name');if(_0x1038bc){_0x55d9bc['value']=_0x1038bc['clone_url']||_0x1038bc['url']||'';const _0x21c521=(_0x1038bc['full_name']||_0x1038bc['name']||'')['split']('/')['pop']()||'';_0x3217e0['placeholder']=_0x21c521||'Auto-extracted\x20from\x20URL',setNewRepoBranchValue(_0x1038bc['default_branch']||'main'),reloadNewRepoBranchSuggestions();}else _0x55d9bc['value']='',_0x3217e0['placeholder']='Auto-extracted\x20from\x20URL',setNewRepoBranchValue('main');}}),repoAutocomplete['disable']();}function onRepoSourceProviderChange(){const _0x3ddfa6=document['getElementById']('new-repo-source-provider')['value'],_0x2b620b=document['getElementById']('new-repo-url'),_0x355d65=document['getElementById']('new-repo-name');_0x2b620b['value']='',_0x355d65['placeholder']='Auto-extracted\x20from\x20URL';if(!_0x3ddfa6){repoAutocomplete&&(repoAutocomplete['reset'](),repoAutocomplete['disable']());reloadNewRepoBranchSuggestions();return;}repoAutocomplete&&(repoAutocomplete['reset'](),repoAutocomplete['enable'](),repoAutocomplete['preloadData']()),setNewRepoBranchValue('main'),reloadNewRepoBranchSuggestions();}function onRepoFromProviderSelect(){}window['editRepo']=function(_0x1d1501){selectRepo(_0x1d1501);},window['removeRepo']=function(_0x40b045){const _0x5e9e18=state['selectedEnvData']['repos'][_0x40b045];document['getElementById']('delete-repo-name')['textContent']=_0x5e9e18['name']||_0x5e9e18['url'],document['getElementById']('delete-repo-confirm-btn')['dataset']['repoIndex']=_0x40b045,document['getElementById']('delete-repo-modal')['hidden']=![];};function closeDeleteRepoModal(){document['getElementById']('delete-repo-modal')['hidden']=!![];}function confirmDeleteRepo(){const _0x27fb5c=parseInt(document['getElementById']('delete-repo-confirm-btn')['dataset']['repoIndex']);state['selectedEnvData']['repos']=state['selectedEnvData']['repos']['filter']((_0x2f269d,_0x5eb10a)=>_0x5eb10a!==_0x27fb5c);if(state['currentRepo']===_0x27fb5c)state['currentRepo']=null,cleanupEditRepoAutocomplete();else state['currentRepo']>_0x27fb5c&&state['currentRepo']--;renderRepos(),markAsModified(),closeDeleteRepoModal(),Utils['showSuccess']('Repository\x20removed\x20(click\x20Save\x20to\x20persist\x20changes)');}function renderServerConfig(){const _0x5dafd6=state['selectedEnvData']['application_server'],_0x3743bc=_0x5dafd6?.['enabled']||![],_0x4d8718=state['selectedEnvData']?.['external_connections']||[],_0x293179=_0x4d8718['find'](_0xa36cc4=>_0xa36cc4['type']==='ibmi'&&(_0xa36cc4['config']?.['features']||[])['includes']('interactive')&&_0xa36cc4['config']?.['pui_base_url']),_0x488832=document['getElementById']('server-connection-banner'),_0x1ef8bc=document['getElementById']('server-enabled'),_0x3033a3=document['getElementById']('server-name'),_0xe4ce40=document['getElementById']('server-proxy');if(_0x293179){const _0x5270f8=Utils['escapeHtml'](_0x293179['name']||'IBM\x20i\x20Session');_0x488832['innerHTML']='<strong>External\x20Connection:</strong>\x20App\x20server\x20proxy,\x20launch\x20URL,\x20and\x20authentication\x20are\x20configured\x20by\x20connection\x20<strong>'+_0x5270f8+'</strong>.\x20Edit\x20the\x20connection\x20to\x20change\x20these\x20settings.',_0x488832['hidden']=![],_0x1ef8bc['checked']=!![],_0x1ef8bc['disabled']=!![],document['getElementById']('server-config')['hidden']=![],_0x3033a3['value']=_0x293179['name']||'IBM\x20i\x20Session',_0x3033a3['disabled']=!![],addConnectionHint(_0x3033a3,_0x5270f8),_0xe4ce40['value']=_0x293179['config']['pui_base_url'],_0xe4ce40['disabled']=!![],addConnectionHint(_0xe4ce40,_0x5270f8);const _0x41ed03=document['getElementById']('env-screen-render-url');if(_0x41ed03){const _0x1ad448=_0x293179['config']['pui_render_path']||'/profoundui/genie';_0x41ed03['value']=''+_0x293179['config']['pui_base_url']+_0x1ad448,_0x41ed03['disabled']=!![],addConnectionHint(_0x41ed03,_0x5270f8);}}else{_0x488832['hidden']=!![],_0x488832['innerHTML']='',_0x1ef8bc['checked']=_0x3743bc,_0x1ef8bc['disabled']=![],document['getElementById']('server-config')['hidden']=!_0x3743bc,_0x3033a3['value']=_0x5dafd6?.['name']||'',_0x3033a3['disabled']=![],removeConnectionHint(_0x3033a3),_0xe4ce40['value']=_0x5dafd6?.['proxy']||'',_0xe4ce40['disabled']=![],removeConnectionHint(_0xe4ce40);const _0x5d7b01=document['getElementById']('env-screen-render-url');_0x5d7b01&&_0x5d7b01['disabled']&&(_0x5d7b01['disabled']=![],removeConnectionHint(_0x5d7b01));}const _0x54c40e=monacoEditors['get']('server-command-editor');_0x54c40e?_0x54c40e['setValue'](_0x5dafd6?.['start_command']||''):createMonacoEditor('server-command-editor',_0x5dafd6?.['start_command']||'','shell',![])['then'](_0x35544a=>{_0x35544a&&(_0x35544a['updateOptions']({'wordWrap':'off'}),_0x35544a['onDidChangeModelContent'](()=>markAsModified()));});document['getElementById']('server-qa-url')['value']=_0x5dafd6?.['qa_url']||'';const _0xeabba1=_0x5dafd6?.['basic_auth']||{};document['getElementById']('server-auth-user-property')['value']=_0xeabba1['user_property']||'',document['getElementById']('server-auth-password-property')['value']=_0xeabba1['password_property']||'',renderPorts(_0x5dafd6?.['ports']||[]);if(_0x293179){const _0x31b99d=_0x293179['config']['pui_launch_path']||'/profoundui/auth/genie',_0x41b2e=_0x293179['name']||'IBM\x20i\x20Session';state['_connectionLaunchUrl']={'name':'Genie\x20('+_0x41b2e+')','path':_0x31b99d,'description':'From\x20connection:\x20'+_0x41b2e};}else state['_connectionLaunchUrl']=null;renderURLs(_0x5dafd6?.['launch_urls']||[]),renderProxyHeaders(_0x5dafd6?.['proxy_headers']||{}),renderPortQaUrls(_0x5dafd6?.['port_qa_urls']||{}),renderVolumeMounts(state['selectedEnvData']?.['volume_mounts']||[]);}function addConnectionHint(_0xbdc043,_0x44a1c9){removeConnectionHint(_0xbdc043);const _0x189e0e=document['createElement']('small');_0x189e0e['className']='form-hint\x20connection-hint',_0x189e0e['textContent']='From\x20connection\x20\x22'+_0x44a1c9+'\x22',_0xbdc043['parentNode']['appendChild'](_0x189e0e);}function removeConnectionHint(_0x3c1fb7){const _0x27df9c=_0x3c1fb7['parentNode']?.['querySelector']('.connection-hint');if(_0x27df9c)_0x27df9c['remove']();}function toggleRebuildSchedule(){const _0x1ee87a=document['getElementById']('rebuild-schedule-enabled-build-tab')['checked'];document['getElementById']('rebuild-schedule-config-build-tab')['hidden']=!_0x1ee87a,markAsModified();}function toggleServerConfig(){const _0x3c8864=document['getElementById']('server-enabled')['checked'];document['getElementById']('server-config')['hidden']=!_0x3c8864,markAsModified();}function renderPorts(_0x65604e){const _0xf3ec21=document['getElementById']('ports-list');_0xf3ec21['innerHTML']=_0x65604e['map']((_0x3cfea8,_0xe3c69b)=>'\x0a\x20\x20\x20\x20<div\x20class=\x22config-item\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20value=\x22'+_0x3cfea8['internal']+'\x22\x20placeholder=\x22Port\x22\x20class=\x22form-input\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20value=\x22'+Utils['escapeHtml'](_0x3cfea8['name'])+'\x22\x20placeholder=\x22Name\x22\x20class=\x22form-input\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20onclick=\x22removePort('+_0xe3c69b+')\x22>×</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20')['join']('');}function renderURLs(_0x2660de){const _0x268fd0=document['getElementById']('urls-list'),_0x3f8118=_0x2660de['findIndex'](_0x194c4a=>_0x194c4a?.['primary']),_0x206c71=document['getElementById']('clear-primary-url-btn');_0x206c71&&(_0x206c71['disabled']=_0x3f8118===-0x1||!!state['_connectionLaunchUrl']);let _0x1fd5f3='';const _0x5a6927=state['_connectionLaunchUrl'];_0x5a6927&&(_0x1fd5f3+='\x0a\x20\x20\x20\x20<div\x20class=\x22config-item\x22\x20data-connection-derived=\x22true\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20data-field=\x22name\x22\x20value=\x22'+Utils['escapeHtml'](_0x5a6927['name'])+'\x22\x20placeholder=\x22Name\x22\x20class=\x22form-input\x22\x20disabled>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20data-field=\x22path\x22\x20value=\x22'+Utils['escapeHtml'](_0x5a6927['path'])+'\x22\x20placeholder=\x22Path\x22\x20class=\x22form-input\x22\x20disabled>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20data-field=\x22port\x22\x20value=\x22\x22\x20placeholder=\x22Port\x22\x20class=\x22form-input\x22\x20style=\x22max-width:\x2080px;\x22\x20disabled>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20data-field=\x22description\x22\x20value=\x22'+Utils['escapeHtml'](_0x5a6927['description']||'')+'\x22\x20placeholder=\x22Description\x22\x20class=\x22form-input\x22\x20disabled>\x0a\x20\x20\x20\x20\x20\x20<label\x20class=\x22primary-url-toggle\x20is-primary\x22\x20title=\x22Primary\x20URL\x20from\x20external\x20connection\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22radio\x22\x20name=\x22connection-primary-url\x22\x20data-field=\x22primary\x22\x20checked\x20disabled>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span>Primary</span>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20disabled>↑</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20disabled>↓</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20disabled>×</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20'),_0x1fd5f3+=_0x2660de['map']((_0x1ac25f,_0x267d6a)=>{const _0x1dd338=_0x3f8118===-0x1?![]:_0x267d6a===_0x3f8118;return'\x0a\x20\x20\x20\x20<div\x20class=\x22config-item\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20data-field=\x22name\x22\x20value=\x22'+Utils['escapeHtml'](_0x1ac25f['name'])+'\x22\x20placeholder=\x22Name\x22\x20class=\x22form-input\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20data-field=\x22path\x22\x20value=\x22'+Utils['escapeHtml'](_0x1ac25f['path'])+'\x22\x20placeholder=\x22Path\x22\x20class=\x22form-input\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20data-field=\x22port\x22\x20value=\x22'+(_0x1ac25f['port']??'')+'\x22\x20placeholder=\x22Port\x22\x20class=\x22form-input\x22\x20style=\x22max-width:\x2080px;\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20data-field=\x22description\x22\x20value=\x22'+Utils['escapeHtml'](_0x1ac25f['description']||'')+'\x22\x20placeholder=\x22Description\x22\x20class=\x22form-input\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<label\x20class=\x22primary-url-toggle\x20'+(_0x1dd338?'is-primary':'')+'\x22\x20title=\x22'+(_0x5a6927?'Primary\x20is\x20set\x20by\x20external\x20connection':'Primary\x20URL\x20opened\x20by\x20the\x20Testing\x20button')+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22radio\x22\x20name=\x22primary-launch-url\x22\x20data-field=\x22primary\x22\x20'+(_0x1dd338?'checked':'')+'\x20'+(_0x5a6927?'disabled':'onclick=\x22setPrimaryURL('+_0x267d6a+')\x22')+'>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span>Primary</span>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20onclick=\x22moveURL('+_0x267d6a+',\x20-1)\x22\x20title=\x22Move\x20up\x22\x20aria-label=\x22Move\x20URL\x20up\x22\x20'+(_0x267d6a===0x0?'disabled':'')+'>↑</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20onclick=\x22moveURL('+_0x267d6a+',\x201)\x22\x20title=\x22Move\x20down\x22\x20aria-label=\x22Move\x20URL\x20down\x22\x20'+(_0x267d6a===_0x2660de['length']-0x1?'disabled':'')+'>↓</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20onclick=\x22removeURL('+_0x267d6a+')\x22>×</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';})['join'](''),_0x268fd0['innerHTML']=_0x1fd5f3;}function collectURLsFromForm(_0xaba50e=![]){const _0x4c339a=document['getElementById']('urls-list');if(!_0x4c339a)return[];const _0x190b6e=_0x4c339a['querySelectorAll']('.config-item'),_0x5be0be=[];let _0x492ce8=![];return _0x190b6e['forEach'](_0xfb923e=>{if(_0xfb923e['hasAttribute']('data-connection-derived'))return;const _0x5b25bc=_0xfb923e['querySelector']('input[data-field=\x22name\x22]'),_0x3361ad=_0xfb923e['querySelector']('input[data-field=\x22path\x22]'),_0x13460b=_0xfb923e['querySelector']('input[data-field=\x22port\x22]'),_0x1539b6=_0xfb923e['querySelector']('input[data-field=\x22description\x22]'),_0xe289ad=_0xfb923e['querySelector']('input[data-field=\x22primary\x22]');if(!_0x5b25bc||!_0x3361ad||!_0x13460b||!_0x1539b6)return;const _0x18bca9=_0x5b25bc['value']['trim'](),_0x820553=_0x3361ad['value']['trim'](),_0x11d8e3=_0x13460b['value']['trim'](),_0x4bb900=_0x1539b6['value']['trim'](),_0x1dab94=_0x18bca9||_0x820553||_0x11d8e3||_0x4bb900;if(_0xaba50e||_0x1dab94){const _0x282a3b={'name':_0x18bca9,'path':_0x820553};if(_0x11d8e3)_0x282a3b['port']=parseInt(_0x11d8e3,0xa);else _0xaba50e&&(_0x282a3b['port']='');if(_0x4bb900)_0x282a3b['description']=_0x4bb900;else _0xaba50e&&(_0x282a3b['description']='');const _0x20c273=_0xe289ad?.['checked']||![];_0x20c273&&!_0x492ce8&&_0x1dab94&&(_0x282a3b['primary']=!![],_0x492ce8=!![]),_0x5be0be['push'](_0x282a3b);}}),_0x5be0be;}function renderProxyHeaders(_0x47a5c6){const _0x4e35bc=document['getElementById']('proxy-headers-list'),_0x47ba50=Object['entries'](_0x47a5c6);_0x4e35bc['innerHTML']=_0x47ba50['map'](([_0x3d84a9,_0x2e89fb],_0x5301a3)=>'\x0a\x20\x20\x20\x20<div\x20class=\x22config-item\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20value=\x22'+Utils['escapeHtml'](_0x3d84a9)+'\x22\x20placeholder=\x22Header\x20Name\x22\x20class=\x22form-input\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20value=\x22'+Utils['escapeHtml'](_0x2e89fb)+'\x22\x20placeholder=\x22Header\x20Value\x22\x20class=\x22form-input\x20code-font\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20onclick=\x22removeProxyHeader('+_0x5301a3+')\x22>×</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20')['join']('');}function renderPortQaUrls(_0x33179b){const _0x312f51=document['getElementById']('port-qa-urls-list'),_0x329708=Object['entries'](_0x33179b);_0x312f51['innerHTML']=_0x329708['map'](([_0x29e8d9,_0x13f3be],_0x484232)=>'\x0a\x20\x20\x20\x20<div\x20class=\x22config-item\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20value=\x22'+Utils['escapeHtml'](_0x29e8d9)+'\x22\x20placeholder=\x22Port\x22\x20class=\x22form-input\x22\x20style=\x22max-width:\x20100px;\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20value=\x22'+Utils['escapeHtml'](_0x13f3be)+'\x22\x20placeholder=\x22QA\x20URL\x20(e.g.,\x20https://production.example.com)\x22\x20class=\x22form-input\x20code-font\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20onclick=\x22removePortQaUrl('+_0x484232+')\x22>×</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20')['join']('');}function addPortQaUrl(){const _0x3f3c5b=document['getElementById']('port-qa-urls-list'),_0x2d2d62=_0x3f3c5b['querySelectorAll']('.config-item');if(_0x2d2d62['length']>0x0){const _0x17ccba=_0x2d2d62[_0x2d2d62['length']-0x1],_0x4025d6=_0x17ccba['querySelectorAll']('input'),_0x5f46fc=_0x4025d6[0x0]['value']['trim'](),_0x44bfe5=_0x4025d6[0x1]['value']['trim']();if(!_0x5f46fc&&!_0x44bfe5)return;}const _0x4479d3=state['selectedEnvData']['application_server']||{},_0x1ba901=_0x4479d3['port_qa_urls']||{};_0x1ba901['']='',!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['port_qa_urls']=_0x1ba901,renderPortQaUrls(_0x1ba901),markAsModified();}function removePortQaUrl(_0x2fdb12){const _0x1a1c0b=document['getElementById']('port-qa-urls-list'),_0x89ddaf=_0x1a1c0b['querySelectorAll']('.config-item');_0x2fdb12>=0x0&&_0x2fdb12<_0x89ddaf['length']&&(_0x89ddaf[_0x2fdb12]['remove'](),markAsModified());}function collectPortQaUrlsFromForm(){const _0x3e4030=document['getElementById']('port-qa-urls-list');if(!_0x3e4030)return{};const _0x1430b9=_0x3e4030['querySelectorAll']('.config-item'),_0x123858={};return _0x1430b9['forEach'](_0x1bf0a7=>{const _0x5ca4b4=_0x1bf0a7['querySelectorAll']('input');if(_0x5ca4b4['length']>=0x2){const _0x575cbb=_0x5ca4b4[0x0]['value']['trim'](),_0x4178f9=_0x5ca4b4[0x1]['value']['trim']();_0x575cbb&&_0x4178f9&&(_0x123858[_0x575cbb]=_0x4178f9);}}),_0x123858;}function addPort(){const _0x173aa7=document['getElementById']('ports-list'),_0x403a7c=_0x173aa7['querySelectorAll']('.config-item');if(_0x403a7c['length']>0x0){const _0x27db69=_0x403a7c[_0x403a7c['length']-0x1],_0x5d1e02=_0x27db69['querySelectorAll']('input'),_0x1f36b3=_0x5d1e02[0x0]['value']['trim'](),_0x44a75f=_0x5d1e02[0x1]['value']['trim']();if(!_0x1f36b3&&!_0x44a75f)return;}const _0x4642e1=state['selectedEnvData']['application_server']||{},_0x40bc52=_0x4642e1['ports']||[];_0x40bc52['push']({'internal':'','name':''}),!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['ports']=_0x40bc52,renderPorts(_0x40bc52),markAsModified();}function addURL(){const _0x5269c3=document['getElementById']('urls-list'),_0x4e52dc=_0x5269c3['querySelectorAll']('.config-item');if(_0x4e52dc['length']>0x0){const _0x517867=_0x4e52dc[_0x4e52dc['length']-0x1],_0x2fce63=_0x517867['querySelector']('input[data-field=\x22name\x22]')?.['value']['trim']()||'',_0x1105b2=_0x517867['querySelector']('input[data-field=\x22path\x22]')?.['value']['trim']()||'',_0x28f645=_0x517867['querySelector']('input[data-field=\x22port\x22]')?.['value']['trim']()||'',_0x31f4d6=_0x517867['querySelector']('input[data-field=\x22description\x22]')?.['value']['trim']()||'';if(!_0x2fce63&&!_0x1105b2&&!_0x28f645&&!_0x31f4d6)return;}const _0x2a2e59=state['selectedEnvData']['application_server']||{},_0x3875f6=_0x2a2e59['launch_urls']||[];_0x3875f6['push']({'name':'','path':''}),!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['launch_urls']=_0x3875f6,renderURLs(_0x3875f6),markAsModified();}window['removePort']=function(_0x14c38b){const _0x84612d=state['selectedEnvData']['application_server']||{},_0x15797c=_0x84612d['ports']||[];_0x15797c['splice'](_0x14c38b,0x1),state['selectedEnvData']['application_server']['ports']=_0x15797c,renderPorts(_0x15797c),markAsModified();},window['removeURL']=function(_0x332d81){const _0x489d73=state['selectedEnvData']['application_server']||{},_0x372516=_0x489d73['launch_urls']||[];_0x372516['splice'](_0x332d81,0x1),state['selectedEnvData']['application_server']['launch_urls']=_0x372516,renderURLs(_0x372516),markAsModified();},window['moveURL']=function(_0x38e31d,_0x138f2d){const _0x376d5d=collectURLsFromForm(!![]),_0x326414=_0x38e31d+_0x138f2d;if(_0x326414<0x0||_0x326414>=_0x376d5d['length'])return;const [_0x24d1be]=_0x376d5d['splice'](_0x38e31d,0x1);_0x376d5d['splice'](_0x326414,0x0,_0x24d1be),!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['launch_urls']=_0x376d5d,renderURLs(_0x376d5d),markAsModified();},window['setPrimaryURL']=function(_0xd90687){const _0x1051d7=collectURLsFromForm(!![]);_0x1051d7['forEach']((_0x4252cb,_0x40def7)=>{_0x40def7===_0xd90687&&(_0x4252cb['name']||_0x4252cb['path']||_0x4252cb['port']||_0x4252cb['description'])?_0x4252cb['primary']=!![]:delete _0x4252cb['primary'];}),!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['launch_urls']=_0x1051d7,renderURLs(_0x1051d7),markAsModified();};function clearPrimaryURL(){const _0x47849b=collectURLsFromForm(!![]);_0x47849b['forEach'](_0x27222f=>{delete _0x27222f['primary'];}),!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['launch_urls']=_0x47849b,renderURLs(_0x47849b),markAsModified();}function addProxyHeader(){const _0x1d4c6a=document['getElementById']('proxy-headers-list'),_0x20f72a=_0x1d4c6a['querySelectorAll']('.config-item');if(_0x20f72a['length']>0x0){const _0x48f7b8=_0x20f72a[_0x20f72a['length']-0x1],_0x44149e=_0x48f7b8['querySelectorAll']('input'),_0xcadf36=_0x44149e[0x0]['value']['trim'](),_0x24e141=_0x44149e[0x1]['value']['trim']();if(!_0xcadf36&&!_0x24e141)return;}const _0x425dde=state['selectedEnvData']['application_server']||{},_0x369c86=_0x425dde['proxy_headers']||{};_0x369c86['']='',!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['proxy_headers']=_0x369c86,renderProxyHeaders(_0x369c86),markAsModified();}window['removeProxyHeader']=function(_0x122b4c){const _0x2f134d=state['selectedEnvData']['application_server']||{},_0x8fb8a9=_0x2f134d['proxy_headers']||{},_0x533cb4=Object['keys'](_0x8fb8a9);_0x122b4c<_0x533cb4['length']&&delete _0x8fb8a9[_0x533cb4[_0x122b4c]],state['selectedEnvData']['application_server']['proxy_headers']=_0x8fb8a9,renderProxyHeaders(_0x8fb8a9),markAsModified();},window['removePortQaUrl']=function(_0x307c6e){const _0x36cbde=state['selectedEnvData']['application_server']||{},_0x4c6f53=_0x36cbde['port_qa_urls']||{},_0x206ec7=Object['keys'](_0x4c6f53);_0x307c6e<_0x206ec7['length']&&delete _0x4c6f53[_0x206ec7[_0x307c6e]],state['selectedEnvData']['application_server']['port_qa_urls']=_0x4c6f53,renderPortQaUrls(_0x4c6f53),markAsModified();};function renderReadme(){const _0xbd141=state['selectedEnvData']['readmeContent']||'',_0x2f3462=document['getElementById']('readme-preview'),_0x4b6593=document['getElementById']('readme-editor'),_0x1a4b76=document['getElementById']('preview-readme-btn');_0xbd141?_0x2f3462['innerHTML']=marked['parse'](_0xbd141):_0x2f3462['innerHTML']='<p\x20class=\x22text-muted\x22>No\x20README\x20content\x20yet.\x20Click\x20Edit\x20to\x20add\x20documentation\x20for\x20this\x20environment.</p>',_0x2f3462['hidden']=![],_0x4b6593['hidden']=!![],_0x1a4b76['innerHTML']='<span>✏️</span>\x20Edit',!state['readmeContent']&&(state['readmeContent']=_0xbd141);}window['toggleReadmePreview']=async function(){const _0x1e70bf=document['getElementById']('readme-editor'),_0x3cafee=document['getElementById']('readme-preview'),_0x1e987f=document['getElementById']('preview-readme-btn'),_0x21778f='readme-editor';if(_0x3cafee['hidden']){const _0x38cfa9=getMonacoValue(_0x21778f)||'';_0x38cfa9?_0x3cafee['innerHTML']=marked['parse'](_0x38cfa9):_0x3cafee['innerHTML']='<p\x20class=\x22text-muted\x22>No\x20README\x20content\x20yet.</p>',_0x3cafee['hidden']=![],_0x1e70bf['hidden']=!![],_0x1e987f['innerHTML']='<span>✏️</span>\x20Edit';}else{_0x3cafee['hidden']=!![],_0x1e70bf['hidden']=![],_0x1e987f['innerHTML']='<span>👁</span>\x20Preview';const _0x199a11=window['MarkdownFileEditor']&&window['MarkdownFileEditor']['editors']['has'](_0x21778f),_0x19e9cf=monacoEditors['has'](_0x21778f);if(!_0x199a11&&!_0x19e9cf){const _0x579c6f=state['selectedEnvData']['readmeContent']||'';if(window['MarkdownFileEditor']){const _0xb755a6=window['MarkdownFileEditor']['getOrCreate'](_0x21778f,_0x579c6f,![],'400px',()=>markAsModified());}else{const _0xb5c86=await createMonacoEditor(_0x21778f,_0x579c6f,'markdown',![]);_0xb5c86&&_0xb5c86['onDidChangeModelContent'](()=>{markAsModified();});}}}};async function renderAgentInstructions(){const _0x48bb10=state['selectedEnvData']['agentsContent']||'',_0xb74c0c=document['getElementById']('agents-preview'),_0x3f7d9a=document['getElementById']('agents-editor'),_0x5df138=document['getElementById']('preview-agents-btn');_0xb74c0c['innerHTML']=marked['parse'](_0x48bb10),_0xb74c0c['hidden']=![],_0x3f7d9a['hidden']=!![],_0x5df138['innerHTML']='<span>✏️</span>\x20Edit',state['agentsContent']=_0x48bb10;}function updateAgentStats(){const _0x16f511=getMonacoValue('agents-editor')||'',_0x1168d8=_0x16f511['split']('\x0a')['length'],_0x81339=_0x16f511['trim']()['split'](/\s+/)['length'],_0x79b30b=_0x16f511['length'];document['getElementById']('agents-stats')['textContent']='Lines:\x20'+_0x1168d8+'\x20•\x20Words:\x20'+_0x81339+'\x20•\x20Characters:\x20'+_0x79b30b;}async function toggleAgentsPreview(){const _0x38c560=document['getElementById']('agents-editor'),_0x513867=document['getElementById']('agents-preview'),_0x4f0057=document['getElementById']('preview-agents-btn'),_0x37f6f='agents-editor';if(_0x513867['hidden']){const _0x431a81=getMonacoValue(_0x37f6f)||'';_0x513867['innerHTML']=marked['parse'](_0x431a81),_0x513867['hidden']=![],_0x38c560['hidden']=!![],_0x4f0057['innerHTML']='<span>✏️</span>\x20Edit';}else{_0x513867['hidden']=!![],_0x38c560['hidden']=![],_0x4f0057['innerHTML']='<span>👁</span>\x20Preview';const _0x459930=window['MarkdownFileEditor']&&window['MarkdownFileEditor']['editors']['has'](_0x37f6f),_0x1a4517=monacoEditors['has'](_0x37f6f);if(!_0x459930&&!_0x1a4517){const _0x58aa67=state['agentsContent']||'';if(window['MarkdownFileEditor']){const _0xa5dca8=window['MarkdownFileEditor']['getOrCreate'](_0x37f6f,_0x58aa67,![],'500px',()=>{updateAgentStats(),markAsModified();});}else{const _0x114b0d=await createMonacoEditor(_0x37f6f,_0x58aa67,'markdown',![]);_0x114b0d&&_0x114b0d['onDidChangeModelContent'](()=>{updateAgentStats(),markAsModified();});}updateAgentStats();}}}let currentScript='pre-clone';function renderBuildTab(){}function toggleScriptsSection(){const _0x470db7=document['querySelector']('#scripts-section-header')['closest']('.collapsible-card'),_0x1c6aa5=document['getElementById']('scripts-section-body');_0x1c6aa5['hidden']?(_0x1c6aa5['hidden']=![],_0x470db7['classList']['add']('expanded'),!monacoEditors['has']('script-editor')&&switchScript(currentScript)):(_0x1c6aa5['hidden']=!![],_0x470db7['classList']['remove']('expanded'));}async function switchScript(_0x54b237){currentScript=_0x54b237,document['querySelectorAll']('#scripts-section-body\x20.script-tab')['forEach'](_0xa2082d=>{_0xa2082d['classList']['toggle']('active',_0xa2082d['dataset']['script']===_0x54b237);});const _0x28103f=['pre-clone','post-clone','setup','cleanup'];_0x28103f['forEach'](_0x2f355e=>{const _0x150387=document['querySelector']('.script-desc-'+_0x2f355e);_0x150387&&(_0x150387['hidden']=_0x54b237!==_0x2f355e&&_0x54b237!==_0x2f355e+'.sh');});let _0x53f205='';if(_0x54b237==='pre-clone'||_0x54b237==='post-clone'){const _0x377a52=_0x54b237==='pre-clone'?'pre_clone_instructions':'post_clone_instructions';_0x53f205=state['selectedEnvData']['docker_config']?.[_0x377a52]||'';}else _0x53f205=state['selectedEnvData']['files']?.[_0x54b237]||'';const _0x3dd095=await createMonacoEditor('script-editor',_0x53f205,'shell',![]);_0x3dd095&&(_0x3dd095['updateOptions']({'wordWrap':'off'}),_0x3dd095['onDidChangeModelContent'](()=>{markAsModified();}));}function getCurrentScriptContent(){if(!monacoEditors['has']('script-editor'))return null;return getMonacoValue('script-editor');}function saveCurrentScriptToState(){const _0x5021f9=getCurrentScriptContent();if(_0x5021f9===null)return;if(currentScript==='pre-clone'||currentScript==='post-clone'){!state['selectedEnvData']['docker_config']&&(state['selectedEnvData']['docker_config']={});const _0x266fea=currentScript==='pre-clone'?'pre_clone_instructions':'post_clone_instructions';state['selectedEnvData']['docker_config'][_0x266fea]=_0x5021f9;}else!state['selectedEnvData']['files']&&(state['selectedEnvData']['files']={}),state['selectedEnvData']['files'][currentScript]=_0x5021f9;}function getCodermakeBuildCommands(_0x3f342b,_0x1c169b){const _0x16763f=_0x3f342b['external_connections']||[],_0x165cfe=_0x3f342b['repos']||[],_0xbf6985=[];for(const _0x4b6430 of _0x16763f){if(_0x4b6430['type']!=='ibmi')continue;const _0x1fa698=_0x4b6430['config']?.['features']||[];if(!_0x1fa698['includes']('build'))continue;if(!_0x4b6430['config']?.['build_repo'])continue;if(!_0x1c169b['find'](_0x65eafd=>_0x65eafd['name']===_0x4b6430['config']['build_repo']))continue;const _0x4015d5=_0x165cfe['find'](_0x5f3ffd=>_0x5f3ffd['name']===_0x4b6430['config']['build_repo']),_0x75db5a=_0x4015d5?'/workspace/'+(_0x4015d5['path']||_0x4015d5['name']):'/workspace',_0x2845ee=_0x4b6430['config']['build_path']?_0x75db5a+'/'+_0x4b6430['config']['build_path']:_0x75db5a;_0xbf6985['push']('cd\x20'+_0x2845ee+'\x20&&\x20IBMI_BUILD_LIBRARY=container_setup_build\x20IBMI_HOST=dummy\x20IBMI_USER=dummy\x20codermake\x20-t');}return _0xbf6985;}function generateDockerfilePreview(){saveCurrentScriptToState();const _0xfedc1f=state['selectedEnvData'],_0x21bd12='profoundlogic/coder-base:latest',_0x28feb7=_0xfedc1f['repos']||[],_0x5e0fa2=_0xfedc1f['docker_config']?.['pre_clone_instructions']||'',_0x244032=_0xfedc1f['docker_config']?.['post_clone_instructions']||'';let _0x293387='FROM\x20'+_0x21bd12+'\x0a\x0a';_0x5e0fa2['trim']()&&(_0x293387+='#\x20Pre-clone\x20instructions\x0a',_0x293387+=_0x5e0fa2['trim']()+'\x0a\x0a');const _0x30ec54=_0x28feb7['filter'](_0x3aa1a4=>_0x3aa1a4['clone_auto']!==![]);if(_0x30ec54['length']>0x0){const _0x55b45f=_0x30ec54['map'](_0x16ec6f=>{const _0x437739=_0x16ec6f['path']||_0x16ec6f['name']||_0x16ec6f['url']?.['split']('/')['pop']()?.['replace']('.git','')||'repo',_0x39605a=normalizeGitUrl(_0x16ec6f['url']);return'git\x20clone\x20--depth=50\x20--no-single-branch\x20'+_0x39605a+'\x20/workspace/'+_0x437739;}),_0x5d4ab4=_0x30ec54['filter'](_0x374a26=>_0x374a26['post_clone_action']&&_0x374a26['post_clone_action']!=='none')['map'](_0x446239=>{const _0x390630=_0x446239['path']||_0x446239['name']||_0x446239['url']?.['split']('/')['pop']()?.['replace']('.git','')||'repo',_0xb4077a=_0x446239['post_clone_action']['split']('\x0a')['map'](_0x2726f1=>_0x2726f1['replace'](/\r$/,''))['filter'](_0x19c50f=>_0x19c50f['trim']())['join']('\x20&&\x20\x5c\x0a\x20\x20\x20\x20');return'cd\x20/workspace/'+_0x390630+'\x20&&\x20'+_0xb4077a;}),_0x407ab5=_0x30ec54['some'](_0x5cc1cb=>_0x5cc1cb['remote_provider']);_0x293387+='#\x20Clone\x20repositories\x20and\x20install\x20dependencies\x0a';_0x407ab5?_0x293387+='RUN\x20--mount=type=secret,id=git-credentials,target=/root/.git-credentials\x20\x5c\x0a\x20\x20\x20\x20':_0x293387+='RUN\x20';_0x293387+=_0x55b45f['join']('\x20&&\x20\x5c\x0a\x20\x20\x20\x20');_0x5d4ab4['length']>0x0&&(_0x293387+='\x20&&\x20\x5c\x0a\x20\x20\x20\x20'+_0x5d4ab4['join']('\x20&&\x20\x5c\x0a\x20\x20\x20\x20'));const _0x2ffb2c=getCodermakeBuildCommands(_0xfedc1f,_0x30ec54);_0x2ffb2c['length']>0x0&&(_0x293387+='\x20&&\x20\x5c\x0a\x20\x20\x20\x20'+_0x2ffb2c['join']('\x20&&\x20\x5c\x0a\x20\x20\x20\x20')),_0x293387+='\x20&&\x20\x5c\x0a\x20\x20\x20\x20chown\x20-R\x20coder:coder\x20/workspace\x0a\x0a';}return _0x244032['trim']()&&(_0x293387+='#\x20Post-clone\x20instructions\x0a',_0x293387+=_0x244032['trim']()+'\x0a\x0a'),_0x293387+='WORKDIR\x20/workspace\x0a',_0x293387;}function showDockerfilePreview(){const _0x21151f=generateDockerfilePreview(),_0x5beeee=document['getElementById']('dockerfile-preview-text');_0x5beeee['textContent']=_0x21151f,document['getElementById']('dockerfile-preview-modal')['hidden']=![];}function closeDockerfilePreviewModal(){document['getElementById']('dockerfile-preview-modal')['hidden']=!![];}async function copyDockerfileToClipboard(){const _0x18df63=generateDockerfilePreview();try{await navigator['clipboard']['writeText'](_0x18df63);const _0x1932bc=document['getElementById']('dockerfile-copy-btn'),_0x2a0ab5=_0x1932bc['innerHTML'];_0x1932bc['innerHTML']='<svg\x20width=\x2214\x22\x20height=\x2214\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22><polyline\x20points=\x2220\x206\x209\x2017\x204\x2012\x22></polyline></svg>\x20Copied!',setTimeout(()=>{_0x1932bc['innerHTML']=_0x2a0ab5;},0x7d0);}catch(_0x58826e){console['error']('Failed\x20to\x20copy:',_0x58826e);}}function renderTests(){const _0x382c2d=document['querySelector']('.tests-sidebar'),_0x342ec4=state['selectedEnvData']['tests']||{},_0x19cef1=Object['keys'](_0x342ec4);updateTabBadge('badge-tests',_0x19cef1['length']);const _0x299705=_0x382c2d['querySelector']('#new-test-tab'),_0xf5c665=_0x19cef1['map']((_0x318a0b,_0x117c66)=>'\x0a\x20\x20\x20\x20<button\x20class=\x22test-tab\x22\x20data-test=\x22'+_0x117c66+'\x22\x20onclick=\x22selectTest(\x27'+_0x318a0b+'\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22test-icon\x22>▶</span>\x0a\x20\x20\x20\x20\x20\x20<span>'+Utils['escapeHtml'](_0x318a0b)+'</span>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20')['join']('');_0x382c2d['innerHTML']=_0x299705['outerHTML']+_0xf5c665,_0x382c2d['querySelector']('#new-test-tab')['addEventListener']('click',addTest);if(_0x19cef1['length']>0x0&&state['currentTest']===null)selectTest(_0x19cef1[0x0]);else _0x19cef1['length']===0x0&&showTestEmptyState();}function showTestEmptyState(){document['getElementById']('current-test-name')['textContent']='Select\x20a\x20Test',document['getElementById']('delete-test-btn')['hidden']=!![],document['getElementById']('test-details-container')['innerHTML']='<p\x20class=\x22text-muted\x22>Select\x20a\x20test\x20from\x20the\x20sidebar\x20to\x20view\x20details,\x20or\x20add\x20a\x20new\x20one.</p>';}window['selectTest']=function(_0x420c38){state['currentTest']=_0x420c38;const _0x2c441c=state['selectedEnvData']['tests'][_0x420c38];document['querySelectorAll']('.test-tab')['forEach'](_0x21bf8d=>{const _0x5770d0=_0x21bf8d['querySelector']('span:last-child')['textContent'];_0x21bf8d['classList']['toggle']('active',_0x5770d0===_0x420c38);}),document['getElementById']('current-test-name')['textContent']=_0x420c38,document['getElementById']('delete-test-btn')['hidden']=![];const _0x362e97=document['getElementById']('test-details-container');let _0x501a24='',_0x1a43ea=![];if(_0x2c441c['commands']&&Array['isArray'](_0x2c441c['commands']))_0x501a24=_0x2c441c['commands']['join']('\x0a'),_0x1a43ea=!![];else _0x2c441c['command']&&(Array['isArray'](_0x2c441c['command'])?_0x501a24=_0x2c441c['command']['join']('\x20&&\x20'):_0x501a24=_0x2c441c['command']);const _0x2f9120=_0x2c441c['parameters']?Object['keys'](_0x2c441c['parameters'])['length']:0x0;_0x362e97['innerHTML']='\x0a\x20\x20\x20\x20<div\x20class=\x22form-single-column\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Description</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20id=\x22test-description\x22\x20class=\x22form-input\x22\x20value=\x22'+Utils['escapeHtml'](_0x2c441c['description']||'')+'\x22\x20placeholder=\x22Test\x20description\x22>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22\x20style=\x22align-items:\x20start;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Command'+(_0x1a43ea?'s':'')+'</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<textarea\x20id=\x22test-command\x22\x20class=\x22form-input\x20code-font\x22\x20rows=\x22'+(_0x1a43ea?'8':'3')+'\x22\x20placeholder=\x22'+(_0x1a43ea?'One\x20command\x20per\x20line':'Test\x20command')+'\x22>'+Utils['escapeHtml'](_0x501a24)+'</textarea>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'+(_0x1a43ea?'<p\x20class=\x22text-muted\x22\x20style=\x22margin-top:\x20-8px;\x20font-size:\x2012px;\x22>One\x20command\x20per\x20line</p>':'')+'\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20Parameters\x20Section\x20(visual\x20maintenance\x20like\x20Deploy\x20tab)\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22deploy-section\x22\x20style=\x22margin-top:\x2024px;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22deploy-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22deploy-section-toggle\x22\x20type=\x22button\x22\x20aria-expanded=\x22false\x22\x20aria-controls=\x22test-parameters-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22deploy-section-title\x22>Parameters</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22deploy-section-count\x22\x20id=\x22test-parameters-count\x22>'+_0x2f9120+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-secondary\x20btn-small\x22\x20onclick=\x22openAddTestParameterModal()\x22>+\x20Add</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22deploy-section-body\x22\x20id=\x22test-parameters-section\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20id=\x22test-parameters-list\x22\x20class=\x22profile-list\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<p\x20class=\x22text-muted\x20small\x22>User-provided\x20values\x20prompted\x20when\x20running\x20this\x20test\x20command.</p>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20',['test-description','test-command']['forEach'](_0x66fe84=>{const _0x48dea2=document['getElementById'](_0x66fe84);_0x48dea2&&_0x48dea2['addEventListener']('input',markAsModified);}),initTestParameterSectionToggle(),renderTestParameters();};function initTestParameterSectionToggle(){const _0x158373=document['querySelector']('#test-details-container\x20.deploy-section-toggle');if(!_0x158373)return;_0x158373['addEventListener']('click',function(){const _0x5b7d5e=this['getAttribute']('aria-expanded')==='true',_0x18bf73=this['getAttribute']('aria-controls'),_0x2946aa=document['getElementById'](_0x18bf73);this['setAttribute']('aria-expanded',!_0x5b7d5e),_0x2946aa&&(_0x2946aa['hidden']=_0x5b7d5e);});}function addTest(){const _0x173176=document['getElementById']('new-test-name'),_0x39fccf=document['getElementById']('new-test-command'),_0x3e547c=document['getElementById']('add-test-error');_0x173176['value']='',document['getElementById']('new-test-description')['value']='',_0x39fccf['value']='',_0x173176['classList']['remove']('input-error'),_0x39fccf['classList']['remove']('input-error'),_0x3e547c['hidden']=!![],document['getElementById']('add-test-modal')['hidden']=![];}function closeAddTestModal(){document['getElementById']('add-test-modal')['hidden']=!![];}async function confirmAddTest(){const _0x4ac82d=document['getElementById']('new-test-name'),_0x2616c5=document['getElementById']('new-test-command'),_0x5b9504=document['getElementById']('add-test-error'),_0x195eee=_0x4ac82d['value']['trim'](),_0x1406f2=document['getElementById']('new-test-description')['value']['trim'](),_0x4bec10=_0x2616c5['value']['trim']();_0x4ac82d['classList']['remove']('input-error'),_0x2616c5['classList']['remove']('input-error'),_0x5b9504['hidden']=!![];if(!_0x195eee||!_0x4bec10){if(!_0x195eee)_0x4ac82d['classList']['add']('input-error');if(!_0x4bec10)_0x2616c5['classList']['add']('input-error');_0x5b9504['textContent']='Test\x20name\x20and\x20command\x20are\x20required',_0x5b9504['hidden']=![];return;}if(state['selectedEnvData']['tests'][_0x195eee]){_0x4ac82d['classList']['add']('input-error'),_0x5b9504['textContent']='A\x20test\x20with\x20this\x20name\x20already\x20exists',_0x5b9504['hidden']=![];return;}const _0x1bd369=_0x4bec10['split']('\x0a')['filter'](_0x122ebf=>_0x122ebf['trim']());let _0x360a7d;_0x1bd369['length']>0x1?_0x360a7d={'commands':_0x1bd369}:_0x360a7d={'command':_0x1bd369[0x0]};const _0x2afe5f={'description':_0x1406f2,..._0x360a7d};state['selectedEnvData']['tests']={...state['selectedEnvData']['tests'],[_0x195eee]:_0x2afe5f},renderTests(),markAsModified(),closeAddTestModal(),Utils['showSuccess']('Test\x20command\x20added\x20(click\x20Save\x20to\x20persist\x20changes)');}window['editTest']=function(_0x4fe26f){selectTest(_0x4fe26f);},window['removeTest']=function(_0x39ae22){document['getElementById']('delete-test-name')['textContent']=_0x39ae22,document['getElementById']('delete-test-confirm-btn')['dataset']['testKey']=_0x39ae22,document['getElementById']('delete-test-modal')['hidden']=![];};function closeDeleteTestModal(){document['getElementById']('delete-test-modal')['hidden']=!![];}function confirmDeleteTest(){const _0x5db07f=document['getElementById']('delete-test-confirm-btn')['dataset']['testKey'],_0x2bb645={...state['selectedEnvData']['tests']};delete _0x2bb645[_0x5db07f],state['selectedEnvData']['tests']=_0x2bb645,state['currentTest']===_0x5db07f&&(state['currentTest']=null),renderTests(),markAsModified(),closeDeleteTestModal(),Utils['showSuccess']('Test\x20command\x20removed\x20(click\x20Save\x20to\x20persist\x20changes)');}function renderTemplates(){const _0x15a799=document['querySelector']('.templates-sidebar'),_0x374269=state['selectedEnvData']['templates']||[];updateTabBadge('badge-templates',_0x374269['length']);const _0x330903=_0x15a799['querySelector']('#new-template-tab'),_0x47c719=_0x374269['map']((_0x5e2cd5,_0x41c9fb)=>'\x0a\x20\x20\x20\x20<button\x20class=\x22template-tab\x22\x20data-template=\x22'+_0x41c9fb+'\x22\x20onclick=\x22selectTemplate('+_0x41c9fb+')\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22template-icon\x22>📝</span>\x0a\x20\x20\x20\x20\x20\x20<span>'+Utils['escapeHtml'](_0x5e2cd5['title'])+'</span>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20')['join']('');_0x15a799['innerHTML']=_0x330903['outerHTML']+_0x47c719,_0x15a799['querySelector']('#new-template-tab')['addEventListener']('click',createNewTemplate);if(_0x374269['length']>0x0&&state['currentTemplate']===null)selectTemplate(0x0);else _0x374269['length']===0x0&&showTemplateEmptyState();}function showTemplateEmptyState(){document['getElementById']('current-template-name')['textContent']='Select\x20a\x20Template',document['getElementById']('delete-template-btn')['hidden']=!![],document['getElementById']('preview-template-btn')['hidden']=!![],document['getElementById']('template-editor-container')['innerHTML']='<p\x20class=\x22text-muted\x22>Select\x20a\x20template\x20from\x20the\x20sidebar\x20to\x20edit,\x20or\x20create\x20a\x20new\x20one.</p>';}window['selectTemplate']=async function(_0x54d1ea){state['currentTemplate']=_0x54d1ea;const _0x535d15=state['selectedEnvData']['templates'][_0x54d1ea],_0x6b47a=monacoEditors['get']('template-md-editor');_0x6b47a&&(_0x6b47a['dispose'](),monacoEditors['delete']('template-md-editor'));document['querySelectorAll']('.template-tab')['forEach'](_0x3307ba=>{_0x3307ba['classList']['toggle']('active',_0x3307ba['dataset']['template']===String(_0x54d1ea));}),document['getElementById']('current-template-name')['textContent']=_0x535d15['title'],document['getElementById']('delete-template-btn')['hidden']=![],document['getElementById']('preview-template-btn')['hidden']=![],document['getElementById']('preview-template-btn')['innerHTML']='<span>✏️</span>\x20Edit';const _0x2cdca2=_0x535d15['parameters']?Object['keys'](_0x535d15['parameters'])['length']:0x0,_0x1674a6=document['getElementById']('template-editor-container');_0x1674a6['innerHTML']='\x0a\x20\x20\x20\x20<div\x20id=\x22template-preview-container\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-group\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Template\x20Content</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22markdown-preview-container\x22\x20id=\x22template-md-preview\x22></div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-group\x22\x20style=\x22margin-top:\x2024px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Template\x20Metadata</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-single-column\x22\x20style=\x22margin-top:\x208px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Title</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20class=\x22form-input\x22\x20value=\x22'+Utils['escapeHtml'](_0x535d15['title']||'')+'\x22\x20disabled>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x535d15['description']?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Description</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20class=\x22form-input\x22\x20value=\x22'+Utils['escapeHtml'](_0x535d15['description'])+'\x22\x20disabled>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Parameters\x20Section\x20(visual\x20maintenance\x20-\x20preview\x20mode\x20shows\x20summary)\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22deploy-section\x22\x20style=\x22margin-top:\x2024px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22deploy-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22deploy-section-toggle\x22\x20type=\x22button\x22\x20aria-expanded=\x22false\x22\x20aria-controls=\x22template-parameters-section-preview\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22deploy-section-title\x22>Parameters</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22deploy-section-count\x22>'+_0x2cdca2+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22deploy-section-body\x22\x20id=\x22template-parameters-section-preview\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20id=\x22template-parameters-preview-list\x22\x20class=\x22profile-list\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20class=\x22text-muted\x20small\x22>Switch\x20to\x20Edit\x20mode\x20to\x20add\x20or\x20modify\x20parameters.</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20id=\x22template-editor-container-edit\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-group\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Template\x20Content\x20(Markdown)</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20id=\x22template-md-editor\x22\x20style=\x22height:\x20400px;\x20border:\x201px\x20solid\x20var(--color-border);\x20margin-top:\x208px;\x22></div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-group\x22\x20style=\x22margin-top:\x2024px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Template\x20Metadata</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-single-column\x22\x20style=\x22margin-top:\x208px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20for=\x22template-edit-title\x22>Title</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20id=\x22template-edit-title\x22\x20class=\x22form-input\x22\x20value=\x22'+Utils['escapeHtml'](_0x535d15['title']||'')+'\x22\x20placeholder=\x22Template\x20title\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20for=\x22template-edit-description\x22>Description</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20id=\x22template-edit-description\x22\x20class=\x22form-input\x22\x20value=\x22'+Utils['escapeHtml'](_0x535d15['description']||'')+'\x22\x20placeholder=\x22Short\x20description\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Parameters\x20Section\x20(visual\x20maintenance\x20-\x20edit\x20mode)\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22deploy-section\x22\x20style=\x22margin-top:\x2024px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22deploy-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22deploy-section-toggle\x20template-param-toggle\x22\x20type=\x22button\x22\x20aria-expanded=\x22false\x22\x20aria-controls=\x22template-parameters-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22deploy-section-title\x22>Parameters</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22deploy-section-count\x22\x20id=\x22template-parameters-count\x22>'+_0x2cdca2+'</span>\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=\x22openAddTemplateParameterModal()\x22>+\x20Add</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22deploy-section-body\x22\x20id=\x22template-parameters-section\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20id=\x22template-parameters-list\x22\x20class=\x22profile-list\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20class=\x22text-muted\x20small\x22>Define\x20parameters\x20that\x20will\x20be\x20prompted\x20when\x20using\x20this\x20template.</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';const _0x4aa2f4=document['getElementById']('template-md-preview');_0x4aa2f4['innerHTML']=marked['parse'](_0x535d15['content']||''),state['currentTemplateData']={..._0x535d15,'parameters':_0x535d15['parameters']?JSON['parse'](JSON['stringify'](_0x535d15['parameters'])):{}},initTemplateSectionToggles(),renderTemplateParametersPreview();};function initTemplateSectionToggles(){document['querySelectorAll']('#template-editor-container\x20.deploy-section-toggle')['forEach'](_0x6f4211=>{_0x6f4211['addEventListener']('click',function(){const _0x4b09be=this['getAttribute']('aria-expanded')==='true',_0xa8465c=this['getAttribute']('aria-controls'),_0x3940cd=document['getElementById'](_0xa8465c);this['setAttribute']('aria-expanded',!_0x4b09be),_0x3940cd&&(_0x3940cd['hidden']=_0x4b09be);});});}function renderTemplateParametersPreview(){const _0xaaa089=document['getElementById']('template-parameters-preview-list');if(!_0xaaa089)return;const _0x51fc5d=state['currentTemplateData']?.['parameters']||{},_0x470eda=Array['isArray'](_0x51fc5d)?Object['fromEntries'](_0x51fc5d['map'](_0x4d2c22=>[_0x4d2c22['name'],_0x4d2c22])):_0x51fc5d,_0xd9fe53=Object['entries'](_0x470eda);if(_0xd9fe53['length']===0x0){_0xaaa089['innerHTML']='<div\x20class=\x22profile-list-empty\x22>No\x20parameters\x20defined</div>';return;}_0xaaa089['innerHTML']=_0xd9fe53['map'](([_0x349e26,_0x5835c8])=>{const _0x4d365f=getParameterTypeLabel(_0x5835c8),_0x5a9a69=_0x5835c8['prompt']?.['label']||_0x5835c8['label']||'';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-param-item\x22\x20data-name=\x22'+Utils['escapeHtml'](_0x349e26)+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-key\x22>'+Utils['escapeHtml'](_0x349e26)+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22param-type-badge\x22>'+_0x4d365f+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-value\x22>'+(_0x5a9a69?Utils['escapeHtml'](_0x5a9a69):'')+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x5835c8['required']?'<span\x20class=\x22param-required\x22>Required</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';})['join']('');}async function toggleTemplatePreview(){const _0xf2e7af=document['getElementById']('template-preview-container'),_0x51ae6e=document['getElementById']('template-editor-container-edit'),_0x10b6f6=document['getElementById']('preview-template-btn');if(!_0xf2e7af||!_0x51ae6e)return;if(_0xf2e7af['hidden']){const _0x490865=getMonacoValue('template-md-editor');if(_0x490865!==null){const _0x3d4ce9=document['getElementById']('template-md-preview');_0x3d4ce9&&(_0x3d4ce9['innerHTML']=marked['parse'](_0x490865));}const _0x4c5b7=document['getElementById']('template-edit-title'),_0x3b0cbe=document['getElementById']('template-edit-description');_0x4c5b7&&state['currentTemplateData']&&(state['currentTemplateData']['title']=_0x4c5b7['value']),_0x3b0cbe&&state['currentTemplateData']&&(state['currentTemplateData']['description']=_0x3b0cbe['value']),renderTemplateParametersPreview(),_0xf2e7af['hidden']=![],_0x51ae6e['hidden']=!![],_0x10b6f6['innerHTML']='<span>✏️</span>\x20Edit';}else{_0xf2e7af['hidden']=!![],_0x51ae6e['hidden']=![],_0x10b6f6['innerHTML']='<span>👁</span>\x20Preview';const _0x56fc3f=state['currentTemplateData'],_0x237ecb='template-md-editor',_0x4c9d53=window['MarkdownFileEditor']&&window['MarkdownFileEditor']['editors']['has'](_0x237ecb),_0x35355e=monacoEditors['has'](_0x237ecb);if(_0x56fc3f&&!_0x4c9d53&&!_0x35355e){if(window['MarkdownFileEditor']){const _0x445498=window['MarkdownFileEditor']['getOrCreate'](_0x237ecb,_0x56fc3f['content']||'',![],'400px',()=>markAsModified());}else{const _0x14abd9=await createMonacoEditor(_0x237ecb,_0x56fc3f['content']||'','markdown',![]);_0x14abd9&&_0x14abd9['onDidChangeModelContent'](()=>{markAsModified();});}}const _0x222972=document['getElementById']('template-edit-title'),_0x2a24d3=document['getElementById']('template-edit-description');_0x222972&&_0x222972['addEventListener']('input',markAsModified),_0x2a24d3&&_0x2a24d3['addEventListener']('input',markAsModified),renderTemplateParameters();}}function createNewTemplate(){const _0x1bcfcb=document['getElementById']('new-template-title'),_0x48710d=document['getElementById']('new-template-description'),_0x29bd5f=document['getElementById']('new-template-filename'),_0x5144ea=document['getElementById']('add-template-error');_0x1bcfcb['value']='',_0x48710d['value']='',_0x29bd5f['value']='',_0x1bcfcb['classList']['remove']('input-error'),_0x29bd5f['classList']['remove']('input-error'),_0x5144ea['hidden']=!![],_0x1bcfcb['addEventListener']('input',()=>{const _0x1122cf=_0x1bcfcb['value']['trim']();if(_0x1122cf&&!_0x29bd5f['value']){const _0x5ced1f=_0x1122cf['toLowerCase']()['replace'](/[^a-z0-9]+/g,'-')['replace'](/^-+|-+$/g,'')+'.md';_0x29bd5f['placeholder']=_0x5ced1f;}}),document['getElementById']('add-template-modal')['hidden']=![];}function closeAddTemplateModal(){document['getElementById']('add-template-modal')['hidden']=!![];}function confirmAddTemplate(){const _0x178518=document['getElementById']('new-template-title'),_0x53b537=document['getElementById']('new-template-filename'),_0x4fc513=document['getElementById']('add-template-error'),_0x578fa1=_0x178518['value']['trim'](),_0x1d2330=document['getElementById']('new-template-description')['value']['trim']();let _0x3c52cb=_0x53b537['value']['trim']();_0x178518['classList']['remove']('input-error'),_0x53b537['classList']['remove']('input-error'),_0x4fc513['hidden']=!![];if(!_0x578fa1){_0x178518['classList']['add']('input-error'),_0x4fc513['textContent']='Template\x20title\x20is\x20required',_0x4fc513['hidden']=![];return;}!_0x3c52cb&&(_0x3c52cb=_0x578fa1['toLowerCase']()['replace'](/[^a-z0-9]+/g,'-')['replace'](/^-+|-+$/g,'')+'.md');!_0x3c52cb['endsWith']('.md')&&(_0x3c52cb+='.md');if(state['selectedEnvData']['templates']['some'](_0x531eff=>_0x531eff['filename']===_0x3c52cb)){_0x53b537['classList']['add']('input-error'),_0x4fc513['textContent']='A\x20template\x20with\x20this\x20filename\x20already\x20exists',_0x4fc513['hidden']=![];return;}const _0x11542a={'title':_0x578fa1,'description':_0x1d2330||undefined,'filename':_0x3c52cb,'content':'','parameters':[]};state['selectedEnvData']['templates']=[...state['selectedEnvData']['templates']||[],_0x11542a],renderTemplates(),markAsModified(),closeAddTemplateModal(),Utils['showSuccess']('Template\x20added\x20(click\x20Save\x20to\x20persist\x20changes)');}window['editTemplate']=function(_0x130387){selectTemplate(_0x130387);},window['removeTemplate']=function(_0x27b38c){const _0x3492f9=state['selectedEnvData']['templates'][_0x27b38c];document['getElementById']('delete-template-name')['textContent']=_0x3492f9['title'],document['getElementById']('delete-template-confirm-btn')['dataset']['templateIndex']=_0x27b38c,document['getElementById']('delete-template-modal')['hidden']=![];};function closeDeleteTemplateModal(){document['getElementById']('delete-template-modal')['hidden']=!![];}function confirmDeleteTemplate(){const _0x5d4f4f=parseInt(document['getElementById']('delete-template-confirm-btn')['dataset']['templateIndex']);state['selectedEnvData']['templates']=state['selectedEnvData']['templates']['filter']((_0x4d9748,_0x18a320)=>_0x18a320!==_0x5d4f4f);if(state['currentTemplate']===_0x5d4f4f)state['currentTemplate']=null;else state['currentTemplate']>_0x5d4f4f&&state['currentTemplate']--;renderTemplates(),markAsModified(),closeDeleteTemplateModal(),Utils['showSuccess']('Template\x20removed\x20(click\x20Save\x20to\x20persist\x20changes)');}function renderDeployProfiles(){const _0x7fecf9=document['querySelector']('.deploy-sidebar'),_0x336244=state['selectedEnvData']['deployment_profiles']||[];updateTabBadge('badge-deploy',_0x336244['length']);const _0x2ee8b3=_0x7fecf9['querySelector']('#new-deploy-profile-tab'),_0x335bb3=_0x336244['map'](_0x5d5119=>'\x0a\x20\x20\x20\x20<button\x20class=\x22deploy-profile-tab\x20'+(!_0x5d5119['hasScript']?'missing-script':'')+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data-profile=\x22'+Utils['escapeHtml'](_0x5d5119['name'])+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20onclick=\x22selectDeployProfile(\x27'+Utils['escapeHtml'](_0x5d5119['name'])+'\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20<svg\x20class=\x22deploy-profile-icon\x22\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<polygon\x20points=\x2212\x202\x202\x207\x2012\x2012\x2022\x207\x2012\x202\x22></polygon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<polyline\x20points=\x222\x2017\x2012\x2022\x2022\x2017\x22></polyline>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<polyline\x20points=\x222\x2012\x2012\x2017\x2022\x2012\x22></polyline>\x0a\x20\x20\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20\x20\x20<span>'+Utils['escapeHtml'](_0x5d5119['name'])+'</span>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20')['join']('');_0x7fecf9['innerHTML']=_0x2ee8b3['outerHTML']+_0x335bb3,_0x7fecf9['querySelector']('#new-deploy-profile-tab')['addEventListener']('click',openAddDeployProfileModal);if(_0x336244['length']>0x0&&state['currentDeployProfile']===null)selectDeployProfile(_0x336244[0x0]['name']);else{if(_0x336244['length']===0x0)showDeployProfileEmptyState();else{if(state['currentDeployProfile']){const _0x5b85b2=_0x336244['find'](_0x3a7d8c=>_0x3a7d8c['name']===state['currentDeployProfile']);_0x5b85b2?selectDeployProfile(state['currentDeployProfile']):(state['currentDeployProfile']=null,showDeployProfileEmptyState());}}}}function showDeployProfileEmptyState(){document['getElementById']('current-deploy-profile-name')['textContent']='Select\x20a\x20Profile',document['getElementById']('run-deploy-profile-btn')['hidden']=!![],document['getElementById']('delete-deploy-profile-btn')['hidden']=!![],document['getElementById']('deploy-profile-details-container')['hidden']=![],document['getElementById']('deploy-profile-editor')['hidden']=!![],document['getElementById']('deployment-progress-panel')['hidden']=!![],updateDeploySectionCount('deploy-secrets-count',0x0),updateDeploySectionCount('deploy-parameters-count',0x0),state['profileScriptEditor']&&(state['profileScriptEditor']['dispose'](),state['profileScriptEditor']=null),state['currentDeployProfile']=null,state['currentDeployProfileData']=null,state['profileHasUnsavedChanges']=![];}window['selectDeployProfile']=async function(_0x55202c){if(state['profileHasUnsavedChanges']&&state['currentDeployProfile']!==_0x55202c){const _0x5b9b38=confirm('You\x20have\x20unsaved\x20changes\x20to\x20this\x20profile.\x20Switch\x20anyway?\x0a\x0aUse\x20the\x20global\x20Save\x20button\x20to\x20save\x20all\x20changes.');if(!_0x5b9b38)return;state['profileHasUnsavedChanges']=![];}state['currentDeployProfile']=_0x55202c,document['querySelectorAll']('.deploy-profile-tab')['forEach'](_0x365368=>{_0x365368['classList']['toggle']('active',_0x365368['dataset']['profile']===_0x55202c);});const _0x280aed=state['selectedEnvData']['deployment_profiles']||[],_0x294683=_0x280aed['find'](_0x3f83e4=>_0x3f83e4['name']===_0x55202c);if(!_0x294683){showDeployProfileEmptyState();return;}try{const _0x1f7d82=await API['get']('/environments/'+state['selectedEnv']+'/deployment-profiles/'+_0x55202c);state['currentDeployProfileData']=_0x1f7d82,document['getElementById']('current-deploy-profile-name')['textContent']=_0x55202c;const _0x313b5b=document['getElementById']('run-deploy-profile-btn');_0x313b5b['hidden']=![],_0x313b5b['disabled']=!_0x1f7d82['hasScript'],document['getElementById']('delete-deploy-profile-btn')['hidden']=![],document['getElementById']('deploy-profile-details-container')['hidden']=!![],document['getElementById']('deploy-profile-editor')['hidden']=![],document['getElementById']('profile-description')['value']=_0x1f7d82['description']||'',document['getElementById']('profile-script-filename')['textContent']=_0x55202c+'.sh',await initProfileScriptEditor(_0x1f7d82['scriptContent']||''),renderProfileSecrets(),renderProfileParameters();}catch(_0x5de58e){console['error']('Failed\x20to\x20load\x20profile:',_0x5de58e),Utils['showError']('Failed\x20to\x20load\x20profile\x20details'),showDeployProfileEmptyState();}};async function initProfileScriptEditor(_0x1cd037){state['profileScriptEditor']&&(state['profileScriptEditor']['dispose'](),state['profileScriptEditor']=null),state['profileScriptEditor']=await createMonacoEditor('profile-script-editor',_0x1cd037,'shell',![]),state['profileScriptEditor']&&state['profileScriptEditor']['onDidChangeModelContent'](()=>{markProfileAsModified();});}function markProfileAsModified(){state['profileHasUnsavedChanges']=!![],markAsModified();}function renderProfileSecrets(){const _0x4a727e=document['getElementById']('profile-secrets-list'),_0x5921af=state['currentDeployProfileData']?.['secrets']||[];updateDeploySectionCount('deploy-secrets-count',_0x5921af['length']);if(_0x5921af['length']===0x0){_0x4a727e['innerHTML']='<div\x20class=\x22profile-list-empty\x22>No\x20secrets\x20configured</div>';return;}const _0x46afb2=state['secrets']['map'](_0x116298=>_0x116298['name']);_0x4a727e['innerHTML']=_0x5921af['map']((_0x4206af,_0x2e4823)=>{const _0x13864e=_0x46afb2['includes'](_0x4206af['name']),_0x345557=_0x4206af['expose_as']==='file'?'File':'Env\x20Var';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-secret-item\x20'+(!_0x13864e?'warning':'')+'\x22\x20data-index=\x22'+_0x2e4823+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-key\x22>'+Utils['escapeHtml'](_0x4206af['name'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-expose-type\x20'+_0x4206af['expose_as']+'\x22>'+_0x345557+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-value\x22\x20title=\x22'+Utils['escapeHtml'](_0x4206af['target'])+'\x22>'+Utils['escapeHtml'](_0x4206af['target'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(!_0x13864e?'<span\x20class=\x22profile-item-meta\x22\x20style=\x22color:\x20var(--color-warning);\x22>⚠\x20Not\x20found</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-item-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22profile-item-delete\x22\x20onclick=\x22deleteProfileSecret('+_0x2e4823+')\x22\x20title=\x22Delete\x22>🗑</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';})['join']('');}function renderProfileParameters(){const _0x66f0f3=document['getElementById']('profile-parameters-list'),_0x410347=state['currentDeployProfileData']?.['parameters']||{},_0xfa0dc9=Object['entries'](_0x410347);updateDeploySectionCount('deploy-parameters-count',_0xfa0dc9['length']);if(_0xfa0dc9['length']===0x0){_0x66f0f3['innerHTML']='<div\x20class=\x22profile-list-empty\x22>No\x20parameters\x20defined</div>';return;}_0x66f0f3['innerHTML']=_0xfa0dc9['map'](([_0x4c86a2,_0x2fa6e7])=>{const _0x3b635f=getParameterTypeLabel(_0x2fa6e7),_0x3f6725=_0x2fa6e7['label']||'';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-param-item\x22\x20data-name=\x22'+Utils['escapeHtml'](_0x4c86a2)+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-key\x22>'+Utils['escapeHtml'](_0x4c86a2)+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22param-type-badge\x22>'+_0x3b635f+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-value\x22>'+(_0x3f6725?Utils['escapeHtml'](_0x3f6725):'')+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x2fa6e7['required']?'<span\x20class=\x22param-required\x22>Required</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-item-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22profile-item-edit\x22\x20onclick=\x22editProfileParameter(\x27'+Utils['escapeHtml'](_0x4c86a2)+'\x27)\x22\x20title=\x22Edit\x22>✏️</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22profile-item-delete\x22\x20onclick=\x22deleteProfileParameter(\x27'+Utils['escapeHtml'](_0x4c86a2)+'\x27)\x22\x20title=\x22Delete\x22>🗑</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';})['join']('');}function openRunDeploymentModal(){if(!state['currentDeployProfileData']||!state['currentDeployProfile'])return;const _0x1b5a10=document['getElementById']('run-deployment-modal'),_0x1e123a=document['getElementById']('run-deployment-error'),_0x3e4cc7=state['currentDeployProfile'];document['getElementById']('run-deployment-profile-name')['textContent']=_0x3e4cc7,document['getElementById']('run-deployment-dry-run')['checked']=![],document['getElementById']('run-deployment-start-btn')['disabled']=![],_0x1e123a['hidden']=!![],_0x1e123a['textContent']='',renderDeploymentParameterInputs(state['currentDeployProfileData']['parameters']||{}),_0x1b5a10['hidden']=![];}function closeRunDeploymentModal(){document['getElementById']('run-deployment-modal')['hidden']=!![];}function renderDeploymentParameterInputs(_0x466f95){const _0x348a01=document['getElementById']('run-deployment-parameters');_0x348a01['innerHTML']='';const _0x34f991=Object['entries'](_0x466f95);if(_0x34f991['length']===0x0){_0x348a01['innerHTML']='<p\x20class=\x22text-muted\x20small\x22>No\x20parameters\x20required\x20for\x20this\x20deployment.</p>';return;}for(const [_0x2c1190,_0x47f12b]of _0x34f991){const _0x453783=document['createElement']('div');_0x453783['className']='deployment-param-row',_0x453783['dataset']['param']=_0x2c1190,_0x453783['dataset']['type']=_0x47f12b['type']||'text';const _0x2ae5c4=document['createElement']('label');_0x2ae5c4['className']='deployment-param-label',_0x2ae5c4['setAttribute']('for','deployment-param-'+_0x2c1190),_0x2ae5c4['textContent']=_0x47f12b['label']||_0x2c1190;if(_0x47f12b['required']){const _0x503486=document['createElement']('span');_0x503486['className']='param-required',_0x503486['textContent']='Required',_0x2ae5c4['appendChild'](_0x503486);}_0x453783['appendChild'](_0x2ae5c4);let _0x4c5e5f;if(_0x47f12b['type']==='select')_0x4c5e5f=document['createElement']('select'),_0x4c5e5f['className']='form-input',_0x4c5e5f['innerHTML']=(_0x47f12b['options']||[])['map'](_0x581e90=>{const _0x217ec2=Utils['escapeHtml'](_0x581e90);return'<option\x20value=\x22'+_0x217ec2+'\x22>'+_0x217ec2+'</option>';})['join'](''),_0x47f12b['default']&&(_0x4c5e5f['value']=_0x47f12b['default']);else{if(_0x47f12b['type']==='boolean')_0x4c5e5f=document['createElement']('input'),_0x4c5e5f['type']='checkbox',_0x4c5e5f['checked']=_0x47f12b['default']===!![]||_0x47f12b['default']==='true';else _0x47f12b['type']==='command'?(_0x4c5e5f=document['createElement']('select'),_0x4c5e5f['className']='form-input',_0x4c5e5f['disabled']=!![],_0x4c5e5f['innerHTML']='<option\x20value=\x22\x22>Loading\x20options...</option>'):(_0x4c5e5f=document['createElement']('input'),_0x4c5e5f['type']='text',_0x4c5e5f['className']='form-input',_0x4c5e5f['placeholder']=_0x47f12b['default']||'',_0x47f12b['default']&&(_0x4c5e5f['value']=_0x47f12b['default']));}_0x4c5e5f['id']='deployment-param-'+_0x2c1190,_0x453783['appendChild'](_0x4c5e5f);if(_0x47f12b['description']){const _0x1393c5=document['createElement']('div');_0x1393c5['className']='deployment-param-description',_0x1393c5['textContent']=_0x47f12b['description'],_0x453783['appendChild'](_0x1393c5);}_0x348a01['appendChild'](_0x453783),_0x47f12b['type']==='command'&&loadDeploymentCommandOptions(_0x2c1190,_0x47f12b,_0x4c5e5f);}}async function loadDeploymentCommandOptions(_0x3cbc7e,_0x37d769,_0x4e0f10){const _0x52864f=state['selectedEnv']+':'+state['currentDeployProfile']+':'+_0x3cbc7e;if(state['deploymentParamCache'][_0x52864f]){populateDeploymentCommandOptions(_0x4e0f10,state['deploymentParamCache'][_0x52864f],_0x37d769['default']);return;}try{const _0x29ad7e=await API['promptParameter']({'environment':state['selectedEnv'],'command':_0x37d769['command'],'parser':'lines'}),_0x2f0a46=_0x29ad7e['choices']||[];state['deploymentParamCache'][_0x52864f]=_0x2f0a46,populateDeploymentCommandOptions(_0x4e0f10,_0x2f0a46,_0x37d769['default']);}catch(_0x36254f){_0x4e0f10['disabled']=!![],_0x4e0f10['innerHTML']='<option\x20value=\x22\x22>Failed\x20to\x20load\x20options</option>',console['error']('Failed\x20to\x20load\x20deployment\x20parameter\x20options:',_0x36254f);}}function populateDeploymentCommandOptions(_0x405c27,_0x553542,_0x2a48fc){_0x405c27['disabled']=![];if(_0x553542['length']===0x0){_0x405c27['innerHTML']='<option\x20value=\x22\x22>No\x20options\x20available</option>';return;}_0x405c27['innerHTML']=_0x553542['map'](_0xb32584=>{const _0x133cf7=Utils['escapeHtml'](_0xb32584['value']),_0x236b52=Utils['escapeHtml'](_0xb32584['label']||_0xb32584['value']);return'<option\x20value=\x22'+_0x133cf7+'\x22>'+_0x236b52+'</option>';})['join'](''),_0x2a48fc&&_0x553542['some'](_0x48e727=>_0x48e727['value']===_0x2a48fc)&&(_0x405c27['value']=_0x2a48fc);}function collectDeploymentParameters(){const _0x30f228={};return document['querySelectorAll']('#run-deployment-parameters\x20[data-param]')['forEach'](_0x16ed82=>{const _0x2c86a9=_0x16ed82['dataset']['param'],_0x31c0f2=_0x16ed82['dataset']['type'],_0x2e77ba=_0x16ed82['querySelector']('input,\x20select');if(!_0x2e77ba)return;if(_0x31c0f2==='boolean')_0x30f228[_0x2c86a9]=_0x2e77ba['checked'];else{const _0x5298d9=_0x2e77ba['value']['trim']();_0x5298d9!==''&&(_0x30f228[_0x2c86a9]=_0x5298d9);}}),_0x30f228;}function validateDeploymentInputs(_0x3b14e0,_0x1d205e){const _0x638b80=[];return Object['entries'](_0x1d205e||{})['forEach'](([_0x523bb7,_0x386fd3])=>{if(!_0x386fd3['required'])return;if(_0x386fd3['type']==='boolean')return;!_0x3b14e0[_0x523bb7]&&_0x638b80['push'](_0x523bb7);}),_0x638b80;}async function startDeployment(){if(!state['currentDeployProfile'])return;const _0x21d9ed=document['getElementById']('run-deployment-error');_0x21d9ed['hidden']=!![],_0x21d9ed['textContent']='';const _0x5349ee=collectDeploymentParameters(),_0x2b29e3=validateDeploymentInputs(_0x5349ee,state['currentDeployProfileData']?.['parameters']||{});if(_0x2b29e3['length']>0x0){_0x21d9ed['textContent']='Missing\x20required\x20parameters:\x20'+_0x2b29e3['join'](',\x20'),_0x21d9ed['hidden']=![];return;}const _0x4dd28a=document['getElementById']('run-deployment-dry-run')['checked'],_0x57ed33=document['getElementById']('run-deployment-start-btn');_0x57ed33['disabled']=!![];try{const _0x312abd=await API['post']('/environments/'+state['selectedEnv']+'/deployment-profiles/'+state['currentDeployProfile']+'/execute',{'parameters':_0x5349ee,'dryRun':_0x4dd28a});closeRunDeploymentModal(),_0x312abd['status']==='running'?(startDeploymentPolling(_0x312abd['deploymentId']),Utils['showSuccess']('Deployment\x20started')):(Utils['showSuccess']('Deployment\x20dry\x20run\x20completed'),await loadDeploymentHistory());}catch(_0x46f0e2){_0x21d9ed['textContent']=_0x46f0e2['message']||'Failed\x20to\x20start\x20deployment',_0x21d9ed['hidden']=![];}finally{_0x57ed33['disabled']=![];}}function startDeploymentPolling(_0x1f5a54){state['currentDeploymentId']=_0x1f5a54,state['deploymentStartTime']=Date['now'](),state['deploymentOutput']='';const _0x4d694d=document['getElementById']('deployment-progress-panel');_0x4d694d['hidden']=![];const _0x3365b5=document['getElementById']('deployment-progress-profile');_0x3365b5&&(_0x3365b5['textContent']=state['currentDeployProfile']||''),document['getElementById']('deployment-output')['textContent']='',state['deploymentPollInterval']&&clearInterval(state['deploymentPollInterval']),pollDeploymentStatus(),state['deploymentPollInterval']=setInterval(pollDeploymentStatus,0x7d0);}function stopDeploymentPolling(){state['deploymentPollInterval']&&(clearInterval(state['deploymentPollInterval']),state['deploymentPollInterval']=null);}async function pollDeploymentStatus(){if(!state['currentDeploymentId'])return;try{const _0x18f573=await API['get']('/environments/'+state['selectedEnv']+'/deployments/'+state['currentDeploymentId']);updateDeploymentProgress(_0x18f573),_0x18f573['status']&&_0x18f573['status']!=='running'&&(stopDeploymentPolling(),state['currentDeploymentId']=null,await loadDeploymentHistory());}catch(_0x8f1146){console['error']('Failed\x20to\x20poll\x20deployment\x20status:',_0x8f1146);}}function updateDeploymentProgress(_0x2a331b){const _0x1e9423=document['getElementById']('deployment-progress-profile'),_0x497c67=document['getElementById']('deployment-progress-badge'),_0xeedf79=document['getElementById']('deployment-progress-duration'),_0xf0ab0c=document['getElementById']('deployment-output');_0x1e9423&&_0x2a331b['profile']&&(_0x1e9423['textContent']=_0x2a331b['profile']);_0x497c67&&(_0x497c67['textContent']=_0x2a331b['status']||'running',_0x497c67['className']='deployment-status-badge\x20'+(_0x2a331b['status']||'running'));if(_0xeedf79){const _0x151833=_0x2a331b['startedAt']?Date['parse'](_0x2a331b['startedAt']):state['deploymentStartTime'],_0x5f2d6d=_0x2a331b['completedAt']?Date['parse'](_0x2a331b['completedAt']):Date['now']();_0xeedf79['textContent']=formatDuration(_0x5f2d6d-_0x151833);}_0xf0ab0c&&(_0xf0ab0c['textContent']=_0x2a331b['output']||'',_0xf0ab0c['scrollTop']=_0xf0ab0c['scrollHeight']);}async function cancelDeploymentExecution(){if(!state['currentDeploymentId'])return;try{await API['post']('/environments/'+state['selectedEnv']+'/deployments/'+state['currentDeploymentId']+'/cancel',{}),Utils['showSuccess']('Deployment\x20cancelled');}catch(_0x877d56){Utils['showError'](_0x877d56['message']||'Failed\x20to\x20cancel\x20deployment');}}async function loadDeploymentHistory(){if(!state['selectedEnv'])return;try{const _0x2f79c4=await API['get']('/environments/'+state['selectedEnv']+'/deployment-history?limit=20');state['deploymentHistory']=_0x2f79c4['deployments']||[],renderDeploymentHistory();}catch(_0x8933a7){console['error']('Failed\x20to\x20load\x20deployment\x20history:',_0x8933a7),state['deploymentHistory']=[],renderDeploymentHistory();}}function renderDeploymentHistory(){const _0x1351b9=document['getElementById']('deployment-history-list');if(!_0x1351b9)return;updateDeploySectionCount('deploy-history-count',state['deploymentHistory']['length']);if(state['deploymentHistory']['length']===0x0){_0x1351b9['innerHTML']='<div\x20class=\x22profile-list-empty\x22>No\x20deployments\x20yet</div>';return;}_0x1351b9['innerHTML']='',state['deploymentHistory']['forEach'](_0x373c05=>{const _0x593d56=document['createElement']('div');_0x593d56['className']='deployment-history-item';const _0x270afb=document['createElement']('div');_0x270afb['className']='deployment-history-header';const _0x1e4f07=document['createElement']('div');_0x1e4f07['className']='deployment-history-title',_0x1e4f07['textContent']=_0x373c05['profile']+'\x20('+_0x373c05['status']+')';const _0x469a33=document['createElement']('span');_0x469a33['className']='deployment-status-badge\x20'+_0x373c05['status'],_0x469a33['textContent']=_0x373c05['status'],_0x270afb['appendChild'](_0x1e4f07),_0x270afb['appendChild'](_0x469a33);const _0x287e2a=document['createElement']('div');_0x287e2a['className']='deployment-history-meta';const _0x52fbcf=_0x373c05['startedAt']?formatTimestamp(_0x373c05['startedAt']):'Unknown\x20time',_0x40c0bc=_0x373c05['completedAt']?formatDuration(Date['parse'](_0x373c05['completedAt'])-Date['parse'](_0x373c05['startedAt'])):'Running';_0x287e2a['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20<span>'+_0x52fbcf+'</span>\x0a\x20\x20\x20\x20\x20\x20<span>Duration:\x20'+_0x40c0bc+'</span>\x0a\x20\x20\x20\x20\x20\x20<span>Triggered\x20by:\x20'+Utils['escapeHtml'](_0x373c05['triggeredBy']||'unknown')+'</span>\x0a\x20\x20\x20\x20';const _0x2077dd=document['createElement']('button');_0x2077dd['className']='btn-ghost\x20btn-small',_0x2077dd['textContent']='View\x20Output',_0x270afb['appendChild'](_0x2077dd);const _0x4f2dc4=document['createElement']('div');_0x4f2dc4['className']='deployment-history-output',_0x4f2dc4['hidden']=!![],_0x4f2dc4['textContent']=_0x373c05['output']||'No\x20output\x20captured.',_0x2077dd['addEventListener']('click',()=>{_0x4f2dc4['hidden']=!_0x4f2dc4['hidden'],_0x2077dd['textContent']=_0x4f2dc4['hidden']?'View\x20Output':'Hide\x20Output';}),_0x593d56['appendChild'](_0x270afb),_0x593d56['appendChild'](_0x287e2a),_0x593d56['appendChild'](_0x4f2dc4),_0x1351b9['appendChild'](_0x593d56);});}function formatTimestamp(_0x2f8111){try{const _0x31aa41=new Date(_0x2f8111);return _0x31aa41['toLocaleString']();}catch{return _0x2f8111;}}function initDeploySectionToggles(){document['querySelectorAll']('.deploy-section-toggle')['forEach'](_0x103521=>{_0x103521['addEventListener']('click',()=>{const _0x6fcccd=_0x103521['getAttribute']('aria-controls');if(!_0x6fcccd)return;const _0x5ccdde=document['getElementById'](_0x6fcccd);if(!_0x5ccdde)return;const _0x19c95a=_0x103521['getAttribute']('aria-expanded')==='true';_0x103521['setAttribute']('aria-expanded',String(!_0x19c95a)),_0x5ccdde['hidden']=_0x19c95a;});});}function updateDeploySectionCount(_0x1a66d0,_0x1772b1){const _0x1c9e00=document['getElementById'](_0x1a66d0);if(!_0x1c9e00)return;_0x1c9e00['textContent']=String(_0x1772b1),_0x1c9e00['title']=_0x1772b1+'\x20item'+(_0x1772b1===0x1?'':'s');}function openAddProfileSecretModal(){const _0x23846=document['getElementById']('profile-secret-modal'),_0x1b36f6=document['getElementById']('profile-secret-name'),_0x522bd5=document['getElementById']('profile-secret-error');_0x522bd5['hidden']=!![],populateProfileSecretSelect(),updateProfileSecretInfo(),_0x23846['hidden']=![],_0x1b36f6['focus']();}function populateProfileSecretSelect(){const _0x58a11d=document['getElementById']('profile-secret-name'),_0x5a6bfc=state['secrets']||[],_0x2d78d4=_0x5a6bfc['filter'](_0x397043=>{const _0x35e3a4=_0x397043['available_for']||[];return _0x35e3a4['includes']('deploy');});if(_0x2d78d4['length']===0x0){_0x58a11d['innerHTML']='<option\x20value=\x22\x22>No\x20secrets\x20available\x20for\x20deploy</option>';return;}const _0x1a23b3=(state['currentDeployProfileData']?.['secrets']||[])['map'](_0x7c4ac2=>typeof _0x7c4ac2==='string'?_0x7c4ac2:_0x7c4ac2['name']),_0x4c64c8=_0x2d78d4['filter'](_0x476065=>!_0x1a23b3['includes'](_0x476065['name']));if(_0x4c64c8['length']===0x0){_0x58a11d['innerHTML']='<option\x20value=\x22\x22>All\x20deploy\x20secrets\x20already\x20added</option>';return;}_0x58a11d['innerHTML']=_0x4c64c8['map'](_0x5a51f2=>'<option\x20value=\x22'+Utils['escapeHtml'](_0x5a51f2['name'])+'\x22>'+Utils['escapeHtml'](_0x5a51f2['name'])+(_0x5a51f2['description']?'\x20-\x20'+Utils['escapeHtml'](_0x5a51f2['description']):'')+'</option>')['join']('');}function updateProfileSecretInfo(){const _0x53f48c=document['getElementById']('profile-secret-name'),_0x470986=document['getElementById']('profile-secret-info'),_0x52f5cc=_0x53f48c['value'];if(!_0x52f5cc){_0x470986['hidden']=!![];return;}const _0x4b0612=state['secrets']['find'](_0x5ccb51=>_0x5ccb51['name']===_0x52f5cc);if(!_0x4b0612){_0x470986['hidden']=!![];return;}const _0xb7688=_0x4b0612['expose_as']==='file'?'File\x20(bind\x20mount)':'Environment\x20Variable',_0x34bcf0=_0x4b0612['expose_as']==='file'?'Container\x20Path':'Variable\x20Name';_0x470986['innerHTML']='\x0a\x20\x20\x20\x20<div\x20class=\x22secret-info-item\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-info-label\x22>Expose\x20As:</span>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-info-value\x22>'+Utils['escapeHtml'](_0xb7688)+'</span>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22secret-info-item\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-info-label\x22>'+Utils['escapeHtml'](_0x34bcf0)+':</span>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-info-value\x20code-font\x22>'+Utils['escapeHtml'](_0x4b0612['target']||'Not\x20set')+'</span>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20',_0x470986['hidden']=![];}function closeProfileSecretModal(){document['getElementById']('profile-secret-modal')['hidden']=!![];}function saveProfileSecret(){const _0x1c54bd=document['getElementById']('profile-secret-name'),_0x422e29=document['getElementById']('profile-secret-error'),_0x3aee62=_0x1c54bd['value'];if(!_0x3aee62){_0x422e29['textContent']='Please\x20select\x20a\x20secret',_0x422e29['hidden']=![];return;}!state['currentDeployProfileData']['secrets']&&(state['currentDeployProfileData']['secrets']=[]),state['currentDeployProfileData']['secrets']['push']({'name':_0x3aee62}),closeProfileSecretModal(),renderProfileSecrets(),markProfileAsModified();}window['deleteProfileSecret']=function(_0x287b97){if(!state['currentDeployProfileData']?.['secrets'])return;if(!confirm('Delete\x20this\x20secret\x20reference?'))return;state['currentDeployProfileData']['secrets']['splice'](_0x287b97,0x1),renderProfileSecrets(),markProfileAsModified();};function openAddParameterModal(_0x424d46){state['parameterModalContext']=_0x424d46,state['editingParamName']=null,state['parameterOptions']=[];const _0x4a0371=document['getElementById']('profile-parameter-modal'),_0x4de67e=document['getElementById']('profile-parameter-modal-title'),_0x4619ed=document['getElementById']('profile-parameter-error');_0x4de67e['textContent']='Add\x20Parameter',_0x4619ed['hidden']=!![],document['getElementById']('profile-param-name')['value']='',document['getElementById']('profile-param-name')['disabled']=![],document['getElementById']('profile-param-label')['value']='',document['getElementById']('profile-param-description')['value']='',document['getElementById']('profile-param-type')['value']='text',document['getElementById']('profile-param-command')['value']='',document['getElementById']('profile-param-parser')['value']='lines',document['getElementById']('profile-param-repos')['value']='',document['getElementById']('profile-param-path')['value']='',document['getElementById']('profile-param-include')['value']='files',document['getElementById']('profile-param-pattern')['value']='',document['getElementById']('profile-param-files-repos')['value']='',document['getElementById']('profile-param-multiselect')['checked']=![],document['getElementById']('profile-param-default')['value']='',document['getElementById']('profile-param-required')['checked']=![],renderParameterOptionsList(),updateProfileParamTypeVisibility(),_0x4a0371['hidden']=![],document['getElementById']('profile-param-name')['focus']();}function openAddProfileParameterModal(){openAddParameterModal('deploy');}function updateProfileParamTypeVisibility(){const _0x5ae316=document['getElementById']('profile-param-type')['value'],_0xdcb486=document['getElementById']('profile-param-options-row'),_0x1ac565=document['getElementById']('profile-param-command-row'),_0x322cd5=document['getElementById']('profile-param-files-row'),_0xcda9be=document['getElementById']('profile-param-multiselect-row');_0xdcb486['hidden']=!![],_0x1ac565['hidden']=!![],_0x322cd5['hidden']=!![],_0xcda9be['hidden']=!![];if(_0x5ae316==='list')_0xdcb486['hidden']=![],_0xcda9be['hidden']=![];else{if(_0x5ae316==='command')_0x1ac565['hidden']=![],_0xcda9be['hidden']=![];else _0x5ae316==='files'&&(_0x322cd5['hidden']=![],_0xcda9be['hidden']=![]);}}function addParameterOption(){state['parameterOptions']['push']({'value':'','label':'','description':''}),renderParameterOptionsList();const _0x5ba771=document['querySelectorAll']('#profile-param-options-list\x20.option-value-input');_0x5ba771['length']>0x0&&_0x5ba771[_0x5ba771['length']-0x1]['focus']();}window['removeParameterOption']=function(_0x2933f9){state['parameterOptions']['splice'](_0x2933f9,0x1),renderParameterOptionsList();},window['updateParameterOption']=function(_0x457355,_0x41be16,_0x394ae7){state['parameterOptions'][_0x457355]&&(state['parameterOptions'][_0x457355][_0x41be16]=_0x394ae7);};function renderParameterOptionsList(){const _0x52619d=document['getElementById']('profile-param-options-list');if(!_0x52619d)return;if(state['parameterOptions']['length']===0x0){_0x52619d['innerHTML']='<div\x20class=\x22options-empty\x20text-muted\x22>No\x20options\x20defined.\x20Click\x20\x22+\x20Add\x20Option\x22\x20to\x20add\x20one.</div>';return;}_0x52619d['innerHTML']=state['parameterOptions']['map']((_0x38f5b3,_0x33d44f)=>'\x0a\x20\x20\x20\x20<div\x20class=\x22option-item\x22\x20data-index=\x22'+_0x33d44f+'\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22option-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20class=\x22form-input\x20option-value-input\x22\x20placeholder=\x22Value\x20(required)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value=\x22'+Utils['escapeHtml'](_0x38f5b3['value']||'')+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20onchange=\x22updateParameterOption('+_0x33d44f+',\x20\x27value\x27,\x20this.value)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20class=\x22form-input\x20option-label-input\x22\x20placeholder=\x22Label\x20(optional)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value=\x22'+Utils['escapeHtml'](_0x38f5b3['label']||'')+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20onchange=\x22updateParameterOption('+_0x33d44f+',\x20\x27label\x27,\x20this.value)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-icon\x20btn-danger-icon\x22\x20onclick=\x22removeParameterOption('+_0x33d44f+')\x22\x20title=\x22Remove\x22>\x0a\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<line\x20x1=\x2218\x22\x20y1=\x226\x22\x20x2=\x226\x22\x20y2=\x2218\x22></line>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<line\x20x1=\x226\x22\x20y1=\x226\x22\x20x2=\x2218\x22\x20y2=\x2218\x22></line>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20class=\x22form-input\x20option-desc-input\x22\x20placeholder=\x22Description\x20(optional)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value=\x22'+Utils['escapeHtml'](_0x38f5b3['description']||'')+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20onchange=\x22updateParameterOption('+_0x33d44f+',\x20\x27description\x27,\x20this.value)\x22>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20')['join']('');}function openEditParameterModal(_0x3cdb3a,_0x625aee){state['parameterModalContext']=_0x625aee,state['editingParamName']=_0x3cdb3a;let _0x1d6db0;if(_0x625aee==='deploy')_0x1d6db0=state['currentDeployProfileData']?.['parameters']?.[_0x3cdb3a];else{if(_0x625aee==='test'){const _0x179479=state['selectedEnvData']?.['tests']?.[state['currentTest']];_0x1d6db0=_0x179479?.['parameters']?.[_0x3cdb3a];}else _0x625aee==='template'&&(_0x1d6db0=state['currentTemplateData']?.['parameters']?.[_0x3cdb3a]);}if(!_0x1d6db0)return;const _0x489c2e=document['getElementById']('profile-parameter-modal'),_0x46c28c=document['getElementById']('profile-parameter-modal-title'),_0x97f4d5=document['getElementById']('profile-parameter-error');_0x46c28c['textContent']='Edit\x20Parameter',_0x97f4d5['hidden']=!![],document['getElementById']('profile-param-name')['value']=_0x3cdb3a,document['getElementById']('profile-param-name')['disabled']=!![],document['getElementById']('profile-param-description')['value']=_0x1d6db0['description']||'',document['getElementById']('profile-param-default')['value']=_0x1d6db0['default']||'',document['getElementById']('profile-param-required')['checked']=_0x1d6db0['required']||![];const _0x40a306=_0x1d6db0['prompt'];if(_0x40a306){document['getElementById']('profile-param-label')['value']=_0x40a306['label']||'',document['getElementById']('profile-param-multiselect')['checked']=_0x40a306['multiSelect']||![];if(_0x40a306['type']==='list')document['getElementById']('profile-param-type')['value']='list',state['parameterOptions']=(_0x40a306['options']||[])['map'](_0x50ff4a=>{if(typeof _0x50ff4a==='string')return{'value':_0x50ff4a,'label':'','description':''};return{'value':_0x50ff4a['value']||'','label':_0x50ff4a['label']||'','description':_0x50ff4a['description']||''};});else{if(_0x40a306['type']==='command')document['getElementById']('profile-param-type')['value']='command',document['getElementById']('profile-param-command')['value']=_0x40a306['command']||'',document['getElementById']('profile-param-parser')['value']=_0x40a306['parser']||'lines',document['getElementById']('profile-param-repos')['value']=(_0x40a306['repos']||[])['join'](',\x20'),state['parameterOptions']=[];else _0x40a306['type']==='files'?(document['getElementById']('profile-param-type')['value']='files',document['getElementById']('profile-param-path')['value']=_0x40a306['path']||'',document['getElementById']('profile-param-include')['value']=_0x40a306['include']||'files',document['getElementById']('profile-param-pattern')['value']=_0x40a306['pattern']||'',document['getElementById']('profile-param-files-repos')['value']=(_0x40a306['repos']||[])['join'](',\x20'),state['parameterOptions']=[]):(document['getElementById']('profile-param-type')['value']='text',state['parameterOptions']=[]);}}else{document['getElementById']('profile-param-label')['value']=_0x1d6db0['label']||'',document['getElementById']('profile-param-multiselect')['checked']=![];const _0x1e2d3d=_0x1d6db0['type']||'text';if(_0x1e2d3d==='select')document['getElementById']('profile-param-type')['value']='list',state['parameterOptions']=(_0x1d6db0['options']||[])['map'](_0x2cdfe0=>{if(typeof _0x2cdfe0==='string')return{'value':_0x2cdfe0,'label':'','description':''};return{'value':_0x2cdfe0['value']||_0x2cdfe0,'label':_0x2cdfe0['label']||'','description':_0x2cdfe0['description']||''};});else{if(_0x1e2d3d==='command')document['getElementById']('profile-param-type')['value']='command',document['getElementById']('profile-param-command')['value']=_0x1d6db0['command']||'',document['getElementById']('profile-param-parser')['value']=_0x1d6db0['parser']||'lines',document['getElementById']('profile-param-repos')['value']=(_0x1d6db0['repos']||[])['join'](',\x20'),state['parameterOptions']=[];else _0x1e2d3d==='boolean'?(document['getElementById']('profile-param-type')['value']='boolean',state['parameterOptions']=[]):(document['getElementById']('profile-param-type')['value']='text',state['parameterOptions']=[]);}}renderParameterOptionsList(),updateProfileParamTypeVisibility(),_0x489c2e['hidden']=![],document['getElementById']('profile-param-label')['focus']();}window['editProfileParameter']=function(_0x789042){openEditParameterModal(_0x789042,'deploy');},window['editTestParameter']=function(_0x2876bf){openEditParameterModal(_0x2876bf,'test');},window['editTemplateParameter']=function(_0x1dcea4){openEditParameterModal(_0x1dcea4,'template');};function closeProfileParameterModal(){document['getElementById']('profile-parameter-modal')['hidden']=!![],state['editingParamName']=null,state['parameterModalContext']=null,state['parameterOptions']=[];}function saveProfileParameter(){const _0x448e59=document['getElementById']('profile-param-name'),_0x36ca61=document['getElementById']('profile-param-label'),_0x30e5f5=document['getElementById']('profile-param-description'),_0x25cf0f=document['getElementById']('profile-param-type'),_0x171cb8=document['getElementById']('profile-param-command'),_0x1989da=document['getElementById']('profile-param-parser'),_0x38d4bb=document['getElementById']('profile-param-repos'),_0x49b45c=document['getElementById']('profile-param-path'),_0x77965e=document['getElementById']('profile-param-include'),_0x4e7dab=document['getElementById']('profile-param-pattern'),_0x1a22a4=document['getElementById']('profile-param-files-repos'),_0x41232d=document['getElementById']('profile-param-multiselect'),_0x1a007c=document['getElementById']('profile-param-default'),_0x47ebdd=document['getElementById']('profile-param-required'),_0x1fb7f2=document['getElementById']('profile-parameter-error'),_0x1a5c60=_0x448e59['value']['trim'](),_0x5ea1d8=_0x36ca61['value']['trim'](),_0x11a7d3=_0x30e5f5['value']['trim'](),_0x5d795b=_0x25cf0f['value'],_0x471123=_0x47ebdd['checked'],_0x510936=_0x1a007c['value']['trim'](),_0x14f069=_0x41232d['checked'],_0x443a5b=state['parameterModalContext'];if(!_0x1a5c60){_0x1fb7f2['textContent']='Parameter\x20name\x20is\x20required',_0x1fb7f2['hidden']=![],_0x448e59['focus']();return;}if(!/^[A-Za-z_][A-Za-z0-9_]*$/['test'](_0x1a5c60)){_0x1fb7f2['textContent']='Invalid\x20parameter\x20name.\x20Use\x20letters,\x20numbers,\x20and\x20underscores.',_0x1fb7f2['hidden']=![],_0x448e59['focus']();return;}let _0x343fd9;if(_0x443a5b==='deploy')!state['currentDeployProfileData']['parameters']&&(state['currentDeployProfileData']['parameters']={}),_0x343fd9=state['currentDeployProfileData']['parameters'];else{if(_0x443a5b==='test'){const _0x193e91=state['selectedEnvData']['tests'][state['currentTest']];!_0x193e91['parameters']&&(_0x193e91['parameters']={}),_0x343fd9=_0x193e91['parameters'];}else _0x443a5b==='template'&&(!state['currentTemplateData']['parameters']&&(state['currentTemplateData']['parameters']={}),_0x343fd9=state['currentTemplateData']['parameters']);}if(state['editingParamName']===null&&_0x343fd9[_0x1a5c60]){_0x1fb7f2['textContent']='Parameter\x20\x22'+_0x1a5c60+'\x22\x20already\x20exists',_0x1fb7f2['hidden']=![];return;}let _0x34eb09;if(_0x443a5b==='deploy'){_0x34eb09={'required':_0x471123};if(_0x5ea1d8)_0x34eb09['label']=_0x5ea1d8;if(_0x11a7d3)_0x34eb09['description']=_0x11a7d3;if(_0x510936)_0x34eb09['default']=_0x510936;if(_0x5d795b==='list'){_0x34eb09['type']='select';const _0x5bc823=state['parameterOptions']['filter'](_0x1f2cae=>_0x1f2cae['value']['trim']());if(_0x5bc823['length']<0x1){_0x1fb7f2['textContent']='At\x20least\x20one\x20option\x20with\x20a\x20value\x20is\x20required',_0x1fb7f2['hidden']=![];return;}_0x34eb09['options']=_0x5bc823['map'](_0x3198d2=>{if(_0x3198d2['label']||_0x3198d2['description'])return{'value':_0x3198d2['value'],'label':_0x3198d2['label']||undefined,'description':_0x3198d2['description']||undefined};return _0x3198d2['value'];});}else{if(_0x5d795b==='command'){_0x34eb09['type']='command';const _0x5b03b3=_0x171cb8['value']['trim']();if(!_0x5b03b3){_0x1fb7f2['textContent']='Command\x20is\x20required\x20for\x20dynamic\x20type',_0x1fb7f2['hidden']=![],_0x171cb8['focus']();return;}_0x34eb09['command']=_0x5b03b3;const _0x1f3081=_0x1989da['value'];if(_0x1f3081&&_0x1f3081!=='lines')_0x34eb09['parser']=_0x1f3081;const _0xf4c601=_0x38d4bb['value']['split'](',')['map'](_0xc8a45c=>_0xc8a45c['trim']())['filter'](_0x5bcdf1=>_0x5bcdf1);if(_0xf4c601['length']>0x0)_0x34eb09['repos']=_0xf4c601;}else{if(_0x5d795b==='files'){_0x34eb09['type']='files';const _0x2f4ed0=_0x49b45c['value']['trim']();if(!_0x2f4ed0){_0x1fb7f2['textContent']='Directory\x20path\x20is\x20required\x20for\x20file\x20browser\x20type',_0x1fb7f2['hidden']=![],_0x49b45c['focus']();return;}_0x34eb09['path']=_0x2f4ed0,_0x34eb09['include']=_0x77965e['value'];const _0x371c88=_0x4e7dab['value']['trim']();if(_0x371c88)_0x34eb09['pattern']=_0x371c88;const _0x4fc85f=_0x1a22a4['value']['split'](',')['map'](_0x4c4a84=>_0x4c4a84['trim']())['filter'](_0x210264=>_0x210264);if(_0x4fc85f['length']>0x0)_0x34eb09['repos']=_0x4fc85f;if(_0x14f069)_0x34eb09['multiSelect']=!![];}else _0x5d795b==='boolean'?_0x34eb09['type']='boolean':_0x34eb09['type']='text';}}}else{_0x34eb09={'required':_0x471123};if(_0x11a7d3)_0x34eb09['description']=_0x11a7d3;if(_0x510936)_0x34eb09['default']=_0x510936;if(_0x5d795b!=='text'&&_0x5d795b!=='boolean'){_0x34eb09['prompt']={'type':_0x5d795b};if(_0x5ea1d8)_0x34eb09['prompt']['label']=_0x5ea1d8;if(_0x14f069)_0x34eb09['prompt']['multiSelect']=!![];if(_0x5d795b==='list'){const _0x48675b=state['parameterOptions']['filter'](_0x1d6365=>_0x1d6365['value']['trim']());if(_0x48675b['length']<0x1){_0x1fb7f2['textContent']='At\x20least\x20one\x20option\x20with\x20a\x20value\x20is\x20required',_0x1fb7f2['hidden']=![];return;}_0x34eb09['prompt']['options']=_0x48675b['map'](_0x451114=>{const _0x3c1c7b={'value':_0x451114['value']};if(_0x451114['label'])_0x3c1c7b['label']=_0x451114['label'];if(_0x451114['description'])_0x3c1c7b['description']=_0x451114['description'];return _0x3c1c7b;});}else{if(_0x5d795b==='command'){const _0x44fafe=_0x171cb8['value']['trim']();if(!_0x44fafe){_0x1fb7f2['textContent']='Command\x20is\x20required\x20for\x20dynamic\x20type',_0x1fb7f2['hidden']=![],_0x171cb8['focus']();return;}_0x34eb09['prompt']['command']=_0x44fafe;const _0x3b01e3=_0x1989da['value'];if(_0x3b01e3&&_0x3b01e3!=='json')_0x34eb09['prompt']['parser']=_0x3b01e3;const _0x3addf4=_0x38d4bb['value']['split'](',')['map'](_0xd63161=>_0xd63161['trim']())['filter'](_0x15d441=>_0x15d441);if(_0x3addf4['length']>0x0)_0x34eb09['prompt']['repos']=_0x3addf4;}else{if(_0x5d795b==='files'){const _0xc61d80=_0x49b45c['value']['trim']();if(!_0xc61d80){_0x1fb7f2['textContent']='Directory\x20path\x20is\x20required\x20for\x20file\x20browser\x20type',_0x1fb7f2['hidden']=![],_0x49b45c['focus']();return;}_0x34eb09['prompt']['path']=_0xc61d80;const _0x518dd3=_0x77965e['value'];if(_0x518dd3!=='files')_0x34eb09['prompt']['include']=_0x518dd3;const _0x4d452d=_0x4e7dab['value']['trim']();if(_0x4d452d)_0x34eb09['prompt']['pattern']=_0x4d452d;const _0x36ef1d=_0x1a22a4['value']['split'](',')['map'](_0x3e6b4b=>_0x3e6b4b['trim']())['filter'](_0x3affd4=>_0x3affd4);if(_0x36ef1d['length']>0x0)_0x34eb09['prompt']['repos']=_0x36ef1d;}}}}}_0x343fd9[_0x1a5c60]=_0x34eb09,closeProfileParameterModal();if(_0x443a5b==='deploy')renderProfileParameters(),markProfileAsModified();else{if(_0x443a5b==='test')renderTestParameters(),markAsModified();else _0x443a5b==='template'&&(renderTemplateParameters(),markAsModified());}}function deleteParameter(_0x301115,_0x4a5137){if(!confirm('Delete\x20this\x20parameter?'))return;if(_0x4a5137==='deploy'){if(!state['currentDeployProfileData']?.['parameters'])return;delete state['currentDeployProfileData']['parameters'][_0x301115],renderProfileParameters(),markProfileAsModified();}else{if(_0x4a5137==='test'){const _0x1d77db=state['selectedEnvData']?.['tests']?.[state['currentTest']];if(!_0x1d77db?.['parameters'])return;delete _0x1d77db['parameters'][_0x301115],renderTestParameters(),markAsModified();}else{if(_0x4a5137==='template'){if(!state['currentTemplateData']?.['parameters'])return;delete state['currentTemplateData']['parameters'][_0x301115],renderTemplateParameters(),markAsModified();}}}}window['deleteProfileParameter']=function(_0x4b3915){deleteParameter(_0x4b3915,'deploy');},window['deleteTestParameter']=function(_0xd56807){deleteParameter(_0xd56807,'test');},window['deleteTemplateParameter']=function(_0x33344c){deleteParameter(_0x33344c,'template');};function renderTestParameters(){const _0x2e1f92=document['getElementById']('test-parameters-list');if(!_0x2e1f92)return;const _0x50c90f=state['selectedEnvData']?.['tests']?.[state['currentTest']],_0x3d6d8e=_0x50c90f?.['parameters']||{},_0xd710e1=Object['entries'](_0x3d6d8e),_0x3103cb=document['getElementById']('test-parameters-count');if(_0x3103cb)_0x3103cb['textContent']=_0xd710e1['length'];if(_0xd710e1['length']===0x0){_0x2e1f92['innerHTML']='<div\x20class=\x22profile-list-empty\x22>No\x20parameters\x20defined</div>';return;}_0x2e1f92['innerHTML']=_0xd710e1['map'](([_0x336074,_0x10d212])=>{const _0x50830a=getParameterTypeLabel(_0x10d212),_0x5f0f9f=_0x10d212['prompt']?.['label']||_0x10d212['label']||'';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-param-item\x22\x20data-name=\x22'+Utils['escapeHtml'](_0x336074)+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-key\x22>'+Utils['escapeHtml'](_0x336074)+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22param-type-badge\x22>'+_0x50830a+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-value\x22>'+(_0x5f0f9f?Utils['escapeHtml'](_0x5f0f9f):'')+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x10d212['required']?'<span\x20class=\x22param-required\x22>Required</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-item-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22profile-item-edit\x22\x20onclick=\x22editTestParameter(\x27'+Utils['escapeHtml'](_0x336074)+'\x27)\x22\x20title=\x22Edit\x22>✏️</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22profile-item-delete\x22\x20onclick=\x22deleteTestParameter(\x27'+Utils['escapeHtml'](_0x336074)+'\x27)\x22\x20title=\x22Delete\x22>🗑</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';})['join']('');}function renderTemplateParameters(){const _0x57fa19=document['getElementById']('template-parameters-list');if(!_0x57fa19)return;const _0x1412c7=state['currentTemplateData']?.['parameters']||{},_0xcf4bcd=Array['isArray'](_0x1412c7)?Object['fromEntries'](_0x1412c7['map'](_0x380de3=>[_0x380de3['name'],_0x380de3])):_0x1412c7,_0x52a6cd=Object['entries'](_0xcf4bcd),_0x276361=document['getElementById']('template-parameters-count');if(_0x276361)_0x276361['textContent']=_0x52a6cd['length'];if(_0x52a6cd['length']===0x0){_0x57fa19['innerHTML']='<div\x20class=\x22profile-list-empty\x22>No\x20parameters\x20defined</div>';return;}_0x57fa19['innerHTML']=_0x52a6cd['map'](([_0x2d6c87,_0x5e4dfe])=>{const _0x27d2f7=getParameterTypeLabel(_0x5e4dfe),_0x16e5ad=_0x5e4dfe['prompt']?.['label']||_0x5e4dfe['label']||'';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-param-item\x22\x20data-name=\x22'+Utils['escapeHtml'](_0x2d6c87)+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-key\x22>'+Utils['escapeHtml'](_0x2d6c87)+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22param-type-badge\x22>'+_0x27d2f7+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-value\x22>'+(_0x16e5ad?Utils['escapeHtml'](_0x16e5ad):'')+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x5e4dfe['required']?'<span\x20class=\x22param-required\x22>Required</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-item-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22profile-item-edit\x22\x20onclick=\x22editTemplateParameter(\x27'+Utils['escapeHtml'](_0x2d6c87)+'\x27)\x22\x20title=\x22Edit\x22>✏️</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22profile-item-delete\x22\x20onclick=\x22deleteTemplateParameter(\x27'+Utils['escapeHtml'](_0x2d6c87)+'\x27)\x22\x20title=\x22Delete\x22>🗑</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';})['join']('');}function getParameterTypeLabel(_0x1d14f6){if(_0x1d14f6['prompt'])return _0x1d14f6['prompt']['type']||'text';const _0xb1080b=_0x1d14f6['type']||'text';if(_0xb1080b==='select')return'list';return _0xb1080b;}window['openAddTestParameterModal']=function(){openAddParameterModal('test');},window['openAddTemplateParameterModal']=function(){openAddParameterModal('template');};function openAddDeployProfileModal(){const _0x431da3=document['getElementById']('add-deploy-profile-modal'),_0x1a030e=document['getElementById']('new-deploy-profile-name'),_0xe4a5ac=document['getElementById']('new-deploy-profile-description'),_0x38c392=document['getElementById']('add-deploy-profile-error');_0x1a030e['value']='',_0xe4a5ac['value']='',_0x38c392['hidden']=!![],_0x1a030e['classList']['remove']('input-error'),_0xe4a5ac['classList']['remove']('input-error'),_0x431da3['hidden']=![],_0x1a030e['focus']();}function closeAddDeployProfileModal(){document['getElementById']('add-deploy-profile-modal')['hidden']=!![];}async function confirmAddDeployProfile(){const _0x59a0d8=document['getElementById']('new-deploy-profile-name'),_0x4406e0=document['getElementById']('new-deploy-profile-description'),_0x155b14=document['getElementById']('add-deploy-profile-error'),_0x56e27b=_0x59a0d8['value']['trim'](),_0x53f2db=_0x4406e0['value']['trim']();_0x59a0d8['classList']['remove']('input-error'),_0x4406e0['classList']['remove']('input-error'),_0x155b14['hidden']=!![];if(!_0x56e27b){_0x59a0d8['classList']['add']('input-error'),_0x155b14['textContent']='Profile\x20name\x20is\x20required',_0x155b14['hidden']=![];return;}if(!/^[A-Za-z_][A-Za-z0-9_-]*$/['test'](_0x56e27b)){_0x59a0d8['classList']['add']('input-error'),_0x155b14['textContent']='Profile\x20name\x20must\x20start\x20with\x20a\x20letter\x20or\x20underscore,\x20and\x20contain\x20only\x20letters,\x20numbers,\x20hyphens,\x20and\x20underscores',_0x155b14['hidden']=![];return;}if(!_0x53f2db){_0x4406e0['classList']['add']('input-error'),_0x155b14['textContent']='Description\x20is\x20required',_0x155b14['hidden']=![];return;}const _0x43be13=state['selectedEnvData']['deployment_profiles']||[];if(_0x43be13['find'](_0x31d575=>_0x31d575['name']['toLowerCase']()===_0x56e27b['toLowerCase']())){_0x59a0d8['classList']['add']('input-error'),_0x155b14['textContent']='A\x20profile\x20with\x20this\x20name\x20already\x20exists',_0x155b14['hidden']=![];return;}try{const _0x4c65ef=await fetch('/environments/'+state['selectedEnv']+'/deployment-profiles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'profileName':_0x56e27b,'description':_0x53f2db})}),_0x1a8a36=await _0x4c65ef['json']();if(!_0x4c65ef['ok']){_0x155b14['textContent']=_0x1a8a36['error']||'Failed\x20to\x20create\x20profile',_0x155b14['hidden']=![];return;}await loadEnvironmentDetails(state['selectedEnv']),state['currentDeployProfile']=_0x56e27b,renderDeployProfiles(),closeAddDeployProfileModal(),Utils['showSuccess']('Deployment\x20profile\x20\x22'+_0x56e27b+'\x22\x20created');}catch(_0x2b3f5d){_0x155b14['textContent']=_0x2b3f5d['message']||'Failed\x20to\x20create\x20profile',_0x155b14['hidden']=![];}}function openDeleteDeployProfileModal(){if(!state['currentDeployProfile'])return;document['getElementById']('delete-deploy-profile-name')['textContent']=state['currentDeployProfile'],document['getElementById']('delete-deploy-profile-modal')['hidden']=![];}function closeDeleteDeployProfileModal(){document['getElementById']('delete-deploy-profile-modal')['hidden']=!![];}async function confirmDeleteDeployProfile(){if(!state['currentDeployProfile'])return;const _0x168b18=state['currentDeployProfile'];try{const _0x21ee34=await fetch('/environments/'+state['selectedEnv']+'/deployment-profiles/'+_0x168b18,{'method':'DELETE'}),_0x282df9=await _0x21ee34['json']();if(!_0x21ee34['ok']){Utils['showError'](_0x282df9['error']||'Failed\x20to\x20delete\x20profile'),closeDeleteDeployProfileModal();return;}await loadEnvironmentDetails(state['selectedEnv']),state['currentDeployProfile']=null,state['currentDeployProfileData']=null,renderDeployProfiles(),closeDeleteDeployProfileModal(),Utils['showSuccess']('Deployment\x20profile\x20\x22'+_0x168b18+'\x22\x20deleted');}catch(_0x40455b){Utils['showError'](_0x40455b['message']||'Failed\x20to\x20delete\x20profile'),closeDeleteDeployProfileModal();}}async function loadSecrets(){if(!state['selectedEnv']){state['secrets']=[];return;}try{const _0x2f3e0f=await API['get']('/environments/'+state['selectedEnv']+'/secrets');state['secrets']=_0x2f3e0f['secrets']||[];}catch(_0x1a9d63){console['error']('Failed\x20to\x20load\x20secrets:',_0x1a9d63),state['secrets']=[];}}function renderSecrets(){const _0x573fac=document['getElementById']('secrets-list'),_0x3faa75=document['getElementById']('secrets-empty'),_0x531146=document['getElementById']('secrets-filter');if(!_0x573fac||!_0x3faa75)return;updateTabBadge('badge-secrets',state['secrets']?.['length']||0x0);const _0x2af91a=_0x531146?.['value']||'all',_0x1ed5a7=_0x2af91a==='all'?state['secrets']:state['secrets']['filter'](_0x47592f=>{const _0x1596bf=_0x47592f['available_for']||[];return _0x1596bf['includes'](_0x2af91a);});if(_0x1ed5a7['length']===0x0){_0x573fac['innerHTML']='',_0x573fac['hidden']=!![];state['secrets']['length']>0x0&&_0x2af91a!=='all'?_0x3faa75['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20<p>No\x20secrets\x20match\x20the\x20\x22'+_0x2af91a+'\x22\x20filter.</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<p\x20class=\x22text-muted\x22>Try\x20selecting\x20\x22All\x22\x20to\x20see\x20all\x20secrets.</p>\x0a\x20\x20\x20\x20\x20\x20':_0x3faa75['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20<p>No\x20secrets\x20configured.</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<p\x20class=\x22text-muted\x22>Secrets\x20can\x20be\x20referenced\x20in\x20builds,\x20tasks,\x20and\x20deployment\x20profiles\x20and\x20exposed\x20as\x20environment\x20variables\x20or\x20mounted\x20files.</p>\x0a\x20\x20\x20\x20\x20\x20';_0x3faa75['hidden']=![];return;}_0x573fac['hidden']=![],_0x3faa75['hidden']=!![],_0x573fac['innerHTML']=_0x1ed5a7['map'](_0x7d3921=>{const _0x5a7e01=_0x7d3921['type']==='file'?'file':'value',_0x5ad615=_0x7d3921['type']==='file'?'File':'Value',_0x3f1e8c=_0x7d3921['type']==='file'?'<span\x20class=\x22secret-source\x22\x20title=\x22'+Utils['escapeHtml'](_0x7d3921['source'])+'\x22>'+Utils['escapeHtml'](_0x7d3921['source'])+'</span>':_0x7d3921['value']?'':'<span\x20class=\x22secret-meta-text\x20warning\x22>No\x20value</span>',_0x316dff=_0x7d3921['available_for']||[],_0x366ab5='\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-availability-badges\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x316dff['includes']('build')?'<span\x20class=\x22availability-badge\x20build\x22>Build</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x316dff['includes']('tasks')?'<span\x20class=\x22availability-badge\x20tasks\x22>Tasks</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x316dff['includes']('deploy')?'<span\x20class=\x22availability-badge\x20deploy\x22>Deploy</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20',_0x2850b9=_0x7d3921['git_remote']?'<span\x20class=\x22git-pat-badge\x22\x20title=\x22Git\x20PAT\x20for\x20'+Utils['escapeHtml'](_0x7d3921['git_remote'])+'\x22>PAT:\x20'+Utils['escapeHtml'](_0x7d3921['git_remote'])+'</span>':'';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22secret-item\x22\x20data-secret=\x22'+Utils['escapeHtml'](_0x7d3921['name'])+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22secret-info\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-name\x22>'+Utils['escapeHtml'](_0x7d3921['name'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22secret-meta\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x366ab5+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-type-badge\x20'+_0x5a7e01+'\x22>'+_0x5ad615+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x2850b9+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x7d3921['description']?'<span\x20class=\x22secret-description\x22\x20title=\x22'+Utils['escapeHtml'](_0x7d3921['description'])+'\x22>'+Utils['escapeHtml'](_0x7d3921['description'])+'</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22secret-meta-column\x22>'+_0x3f1e8c+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22secret-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22secret-edit\x22\x20title=\x22Edit\x20secret\x22\x20onclick=\x22openEditSecretModal(\x27'+Utils['escapeHtml'](_0x7d3921['name'])+'\x27)\x22>✏️</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22secret-delete\x22\x20title=\x22Delete\x20secret\x22\x20onclick=\x22openDeleteSecretModal(\x27'+Utils['escapeHtml'](_0x7d3921['name'])+'\x27)\x22>🗑</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';})['join']('');}function openAddSecretModal(){state['editingSecret']=null;const _0x4f7c05=document['getElementById']('secret-modal'),_0x360b17=document['getElementById']('secret-modal-title'),_0x4f94ce=document['getElementById']('secret-name'),_0x3081ee=document['getElementById']('secret-description'),_0x1c13d6=document['getElementById']('secret-type-file'),_0x237ad1=document['getElementById']('secret-type-value'),_0x6597b2=document['getElementById']('secret-source'),_0x5247ea=document['getElementById']('secret-value'),_0xbe27a4=document['getElementById']('secret-modal-error'),_0x27dec5=document['getElementById']('secret-source-validation'),_0x58b8da=document['getElementById']('secret-available-build'),_0x5006fa=document['getElementById']('secret-available-tasks'),_0x32058b=document['getElementById']('secret-available-deploy'),_0x1940ac=document['getElementById']('secret-expose-env'),_0x518b8f=document['getElementById']('secret-expose-file'),_0x7e6893=document['getElementById']('secret-target');_0x360b17['textContent']='Add\x20Secret',_0x4f94ce['value']='',_0x4f94ce['disabled']=![],_0x3081ee['value']='',_0x237ad1['checked']=!![],_0x1c13d6['checked']=![],_0x6597b2['value']='',resetSecretValueVisibility(''),_0xbe27a4['hidden']=!![],_0x27dec5['hidden']=!![];const _0x21dfe5=document['getElementById']('secrets-filter'),_0x3e8888=_0x21dfe5?.['value']||'all';_0x3e8888==='all'?(_0x58b8da['checked']=![],_0x5006fa['checked']=!![],_0x32058b['checked']=![]):(_0x58b8da['checked']=_0x3e8888==='build',_0x5006fa['checked']=_0x3e8888==='tasks',_0x32058b['checked']=_0x3e8888==='deploy');_0x1940ac['checked']=!![],_0x518b8f['checked']=![],_0x7e6893['value']='',handleSecretTypeChange(),resetGitPatFields(),updateGitPatVisibility(),updateExposeAsVisibility(),updateSecretTargetLabel();const _0x400502=document['getElementById']('secret-source-hint');_0x400502&&state['selectedEnvData']?.['path']&&(_0x400502['textContent']='Absolute\x20path,\x20or\x20relative\x20to:\x20'+state['selectedEnvData']['path']),_0x4f7c05['hidden']=![],_0x4f94ce['focus']();}window['openEditSecretModal']=async function(_0xfde007){state['editingSecret']=_0xfde007;const _0x450354=state['secrets']['find'](_0x3edf70=>_0x3edf70['name']===_0xfde007);if(!_0x450354){Utils['showError']('Secret\x20not\x20found');return;}const _0x160390=document['getElementById']('secret-modal'),_0x1b7dda=document['getElementById']('secret-modal-title'),_0x329f07=document['getElementById']('secret-name'),_0xb8a76=document['getElementById']('secret-description'),_0x509e68=document['getElementById']('secret-type-file'),_0x2a1b14=document['getElementById']('secret-type-value'),_0x305f4a=document['getElementById']('secret-source'),_0x5ed603=document['getElementById']('secret-value'),_0x295030=document['getElementById']('secret-modal-error'),_0x12041c=document['getElementById']('secret-source-validation'),_0x4d7b96=document['getElementById']('secret-available-build'),_0x132bd3=document['getElementById']('secret-available-tasks'),_0x5427b2=document['getElementById']('secret-available-deploy'),_0x2d39c3=document['getElementById']('secret-expose-env'),_0x495bf2=document['getElementById']('secret-expose-file'),_0xb9d070=document['getElementById']('secret-target');_0x1b7dda['textContent']='Edit\x20Secret',_0x329f07['value']=_0xfde007,_0x329f07['disabled']=!![],_0xb8a76['value']=_0x450354['description']||'';_0x450354['type']==='file'?(_0x509e68['checked']=!![],_0x2a1b14['checked']=![],_0x305f4a['value']=_0x450354['source']||'',resetSecretValueVisibility('')):(_0x2a1b14['checked']=!![],_0x509e68['checked']=![],_0x305f4a['value']='',resetSecretValueVisibility(_0x450354['value']||''),_0x5ed603['placeholder']='Enter\x20secret\x20value');const _0x52a697=_0x450354['available_for']||[];_0x4d7b96['checked']=_0x52a697['includes']('build'),_0x132bd3['checked']=_0x52a697['includes']('tasks'),_0x5427b2['checked']=_0x52a697['includes']('deploy');_0x450354['expose_as']==='file'?(_0x495bf2['checked']=!![],_0x2d39c3['checked']=![]):(_0x2d39c3['checked']=!![],_0x495bf2['checked']=![]);_0xb9d070['value']=_0x450354['target']||'',setGitPatFields(_0x450354['git_remote']),_0x295030['hidden']=!![],_0x12041c['hidden']=!![],handleSecretTypeChange(),updateGitPatVisibility(),updateExposeAsVisibility(),updateSecretTargetLabel();const _0x43ce59=document['getElementById']('secret-source-hint');_0x43ce59&&state['selectedEnvData']?.['path']&&(_0x43ce59['textContent']='Absolute\x20path,\x20or\x20relative\x20to:\x20'+state['selectedEnvData']['path']),_0x160390['hidden']=![];};function closeSecretModal(){document['getElementById']('secret-modal')['hidden']=!![],state['editingSecret']=null,document['getElementById']('secret-value')['placeholder']='Enter\x20secret\x20value\x20(e.g.,\x20SSH\x20private\x20key\x20content)',resetSecretValueVisibility('');}function handleSecretTypeChange(){const _0x3c7e80=document['getElementById']('secret-type-file')['checked'];document['getElementById']('secret-source-row')['hidden']=!_0x3c7e80,document['getElementById']('secret-value-row')['hidden']=_0x3c7e80;}function updateExposeAsVisibility(){const _0x259028=document['getElementById']('secret-available-tasks')['checked'],_0x5015ae=document['getElementById']('secret-available-deploy')['checked'],_0x5d89f2=document['getElementById']('secret-git-pat-checkbox')['checked'],_0x35da14=(_0x259028||_0x5015ae)&&!_0x5d89f2;document['getElementById']('secret-expose-as-row')['hidden']=!_0x35da14,document['getElementById']('secret-target-row')['hidden']=!_0x35da14;}function updateSecretTargetLabel(){const _0x3a20b8=document['getElementById']('secret-expose-file')['checked'],_0x3c047e=document['getElementById']('secret-target-label'),_0x5e9aad=document['getElementById']('secret-target-hint'),_0x13e745=document['getElementById']('secret-target');_0x3a20b8?(_0x3c047e['innerHTML']='Container\x20Path\x20<span\x20class=\x22required\x22>*</span>',_0x5e9aad['textContent']='Absolute\x20path\x20where\x20file\x20will\x20be\x20mounted\x20in\x20container',_0x13e745['placeholder']='e.g.,\x20/secrets/key.pem'):(_0x3c047e['innerHTML']='Variable\x20Name\x20<span\x20class=\x22required\x22>*</span>',_0x5e9aad['textContent']='The\x20environment\x20variable\x20name',_0x13e745['placeholder']='e.g.,\x20SSH_PRIVATE_KEY');}function updateGitPatVisibility(){document['getElementById']('secret-git-pat-row')['hidden']=![];}function handleGitPatCheckboxChange(){const _0x2833e5=document['getElementById']('secret-git-pat-checkbox')['checked'],_0x7419a4=document['getElementById']('secret-git-host-row');_0x7419a4['hidden']=!_0x2833e5,!_0x2833e5&&(document['getElementById']('secret-git-custom-host-row')['hidden']=!![],document['getElementById']('secret-git-host')['value']='',document['getElementById']('secret-git-custom-host')['value']=''),updateExposeAsVisibility();}function handleGitHostChange(){const _0x13f8cc=document['getElementById']('secret-git-host')['value'],_0x190995=document['getElementById']('secret-git-custom-host-row');_0x190995['hidden']=_0x13f8cc!=='custom',_0x13f8cc!=='custom'&&(document['getElementById']('secret-git-custom-host')['value']='');}function getGitRemoteValue(){const _0x58bef7=document['getElementById']('secret-git-pat-checkbox')['checked'];if(!_0x58bef7)return null;const _0x3056f5=document['getElementById']('secret-git-host')['value'];if(!_0x3056f5)return null;if(_0x3056f5==='custom'){const _0x578009=document['getElementById']('secret-git-custom-host')['value']['trim']();return _0x578009||null;}return _0x3056f5;}function setGitPatFields(_0x3561b5){const _0x1b3e2e=document['getElementById']('secret-git-pat-checkbox'),_0xe7e1c7=document['getElementById']('secret-git-host'),_0x31b074=document['getElementById']('secret-git-custom-host'),_0x5efcbd=document['getElementById']('secret-git-host-row'),_0x4491d6=document['getElementById']('secret-git-custom-host-row');if(!_0x3561b5){_0x1b3e2e['checked']=![],_0xe7e1c7['value']='',_0x31b074['value']='',_0x5efcbd['hidden']=!![],_0x4491d6['hidden']=!![];return;}_0x1b3e2e['checked']=!![],_0x5efcbd['hidden']=![];const _0x9250c4=['github.com','dev.azure.com','bitbucket.org','gitlab.com'];_0x9250c4['includes'](_0x3561b5['toLowerCase']())?(_0xe7e1c7['value']=_0x3561b5['toLowerCase'](),_0x4491d6['hidden']=!![],_0x31b074['value']=''):(_0xe7e1c7['value']='custom',_0x4491d6['hidden']=![],_0x31b074['value']=_0x3561b5);}function resetGitPatFields(){document['getElementById']('secret-git-pat-checkbox')['checked']=![],document['getElementById']('secret-git-host')['value']='',document['getElementById']('secret-git-custom-host')['value']='',document['getElementById']('secret-git-host-row')['hidden']=!![],document['getElementById']('secret-git-custom-host-row')['hidden']=!![];}async function validateSecretSourcePath(){const _0x2f7e12=document['getElementById']('secret-source'),_0x5c4db6=document['getElementById']('secret-source-validation'),_0x433550=_0x2f7e12['value']['trim']();if(!_0x433550){_0x5c4db6['hidden']=!![];return;}try{const _0x146e9f=await fetch('/environments/'+state['selectedEnv']+'/secrets/_validate/validate',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'source':_0x433550})}),_0x5107d4=await _0x146e9f['json']();if(_0x5107d4['exists']&&_0x5107d4['isFile'])_0x5c4db6['className']='field-validation\x20valid',_0x5c4db6['innerHTML']='✓\x20File\x20exists\x20('+formatBytes(_0x5107d4['size'])+')';else _0x5107d4['exists']&&!_0x5107d4['isFile']?(_0x5c4db6['className']='field-validation\x20warning',_0x5c4db6['innerHTML']='⚠\x20Path\x20exists\x20but\x20is\x20not\x20a\x20file'):(_0x5c4db6['className']='field-validation\x20warning',_0x5c4db6['innerHTML']='⚠\x20File\x20not\x20found');_0x5c4db6['hidden']=![];}catch(_0x517e14){_0x5c4db6['className']='field-validation\x20warning',_0x5c4db6['innerHTML']='⚠\x20Could\x20not\x20validate\x20path',_0x5c4db6['hidden']=![];}}function formatBytes(_0x1c340a){if(_0x1c340a===0x0)return'0\x20B';const _0xdc0ba1=0x400,_0x87b0cf=['B','KB','MB','GB'],_0x4f3844=Math['floor'](Math['log'](_0x1c340a)/Math['log'](_0xdc0ba1));return parseFloat((_0x1c340a/Math['pow'](_0xdc0ba1,_0x4f3844))['toFixed'](0x1))+'\x20'+_0x87b0cf[_0x4f3844];}function resetSecretValueVisibility(_0x33af0c){secretValueStore=_0x33af0c,secretValueVisible=![],lastCursorPosition=0x0;const _0x6c9dae=document['getElementById']('secret-value'),_0x297a44=document['querySelector']('.secret-toggle-visibility');_0x6c9dae&&(_0x6c9dae['value']=_0x33af0c?'•'['repeat'](_0x33af0c['length']):''),_0x297a44&&(_0x297a44['hidden']=![],_0x297a44['querySelector']('.eye-open')['style']['display']='block',_0x297a44['querySelector']('.eye-closed')['style']['display']='none');}function toggleSecretValueVisibility(){const _0x139f9d=document['getElementById']('secret-value'),_0xdbb874=document['querySelector']('.secret-toggle-visibility');secretValueVisible=!secretValueVisible,secretValueVisible?(_0x139f9d['value']=secretValueStore,_0xdbb874['querySelector']('.eye-open')['style']['display']='none',_0xdbb874['querySelector']('.eye-closed')['style']['display']='block'):(_0x139f9d['value']=secretValueStore?'•'['repeat'](secretValueStore['length']):'',_0xdbb874['querySelector']('.eye-open')['style']['display']='block',_0xdbb874['querySelector']('.eye-closed')['style']['display']='none');}function handleSecretValueBeforeInput(_0x306ce3){if(!secretValueVisible){const _0x3ecc7e=_0x306ce3['target'];lastCursorPosition=_0x3ecc7e['selectionStart'],_0x3ecc7e['dataset']['selectionEnd']=_0x3ecc7e['selectionEnd'];}}function handleSecretValueInput(_0x46f7ca){const _0x5f4f7d=_0x46f7ca['target'];if(secretValueVisible)secretValueStore=_0x5f4f7d['value'];else{const _0x159b81=_0x46f7ca['inputType'],_0x1f40a2=_0x5f4f7d['value'],_0x74ffbd='•',_0x41f254=_0x5f4f7d['selectionStart'],_0x4035e6=_0x1f40a2['replace'](new RegExp(_0x74ffbd,'g'),''),_0x1e8d7f=secretValueStore['length'],_0x38f6c8=lastCursorPosition,_0x29ae87=parseInt(_0x5f4f7d['dataset']['selectionEnd']||_0x38f6c8),_0x123c57=_0x29ae87>_0x38f6c8;if(_0x1f40a2==='')secretValueStore='',lastCursorPosition=0x0;else{if(_0x159b81&&_0x159b81['startsWith']('delete')){if(_0x123c57)secretValueStore=secretValueStore['slice'](0x0,_0x38f6c8)+secretValueStore['slice'](_0x29ae87),lastCursorPosition=_0x38f6c8;else{const _0x2e80f2=_0x1e8d7f-_0x1f40a2['length'];_0x159b81==='deleteContentBackward'?secretValueStore=secretValueStore['slice'](0x0,_0x41f254)+secretValueStore['slice'](_0x41f254+_0x2e80f2):secretValueStore=secretValueStore['slice'](0x0,_0x41f254)+secretValueStore['slice'](_0x41f254+_0x2e80f2),lastCursorPosition=_0x41f254;}}else{if(_0x4035e6['length']>0x0){const _0x492964=_0x1f40a2['length']-_0x4035e6['length'];if(_0x492964===0x0)secretValueStore=_0x4035e6,lastCursorPosition=_0x4035e6['length'];else _0x123c57?(secretValueStore=secretValueStore['slice'](0x0,_0x38f6c8)+_0x4035e6+secretValueStore['slice'](_0x29ae87),lastCursorPosition=_0x38f6c8+_0x4035e6['length']):(secretValueStore=secretValueStore['slice'](0x0,_0x38f6c8)+_0x4035e6+secretValueStore['slice'](_0x38f6c8),lastCursorPosition=_0x38f6c8+_0x4035e6['length']);}else _0x1f40a2['length']<_0x1e8d7f?(secretValueStore=secretValueStore['slice'](0x0,_0x1f40a2['length']),lastCursorPosition=_0x41f254):lastCursorPosition=_0x41f254;}}const _0x2fcd62=_0x74ffbd['repeat'](secretValueStore['length']);_0x5f4f7d['value']=_0x2fcd62,_0x5f4f7d['setSelectionRange'](lastCursorPosition,lastCursorPosition),delete _0x5f4f7d['dataset']['selectionEnd'];}}function handleSecretFileImport(_0x287082){const _0x3601ba=_0x287082['target']['files'][0x0];if(!_0x3601ba)return;const _0x3011cc=new FileReader();_0x3011cc['onload']=function(_0x27c746){const _0x10e438=_0x27c746['target']['result'];document['getElementById']('secret-value')['value']=_0x10e438,secretValueStore=_0x10e438,secretValueVisible=!![];const _0x9ec69f=document['querySelector']('.secret-toggle-visibility');_0x9ec69f&&(_0x9ec69f['querySelector']('.eye-open')['style']['display']='none',_0x9ec69f['querySelector']('.eye-closed')['style']['display']='block');},_0x3011cc['onerror']=function(){Utils['showError']('Failed\x20to\x20read\x20file');},_0x3011cc['readAsText'](_0x3601ba),_0x287082['target']['value']='';}async function saveSecret(){const _0x1b22a5=document['getElementById']('secret-name'),_0x4219dd=document['getElementById']('secret-description'),_0x559e70=document['getElementById']('secret-type-file')['checked'],_0x3e70cf=document['getElementById']('secret-source'),_0x14db3d=document['getElementById']('secret-value'),_0x383786=document['getElementById']('secret-modal-error'),_0x357a84=document['getElementById']('secret-available-build'),_0x222fbd=document['getElementById']('secret-available-tasks'),_0x5576d1=document['getElementById']('secret-available-deploy'),_0x533327=document['getElementById']('secret-expose-file')['checked'],_0x232afd=document['getElementById']('secret-target'),_0x142e10=_0x1b22a5['value']['trim'](),_0x3843e9=_0x4219dd['value']['trim'](),_0x77b7de=_0x559e70?'file':'value',_0x39a301=_0x3e70cf['value']['trim'](),_0x62a10e=secretValueStore,_0x5bf774=_0x533327?'file':'env_var',_0x291180=_0x232afd['value']['trim'](),_0xfe5d33=getGitRemoteValue(),_0x1f06c1=document['getElementById']('secret-git-pat-checkbox')['checked'],_0x4de7ee=[];if(_0x357a84['checked'])_0x4de7ee['push']('build');if(_0x222fbd['checked'])_0x4de7ee['push']('tasks');if(_0x5576d1['checked'])_0x4de7ee['push']('deploy');const _0x1b649d=_0x222fbd['checked']||_0x5576d1['checked'];_0x383786['hidden']=!![];if(!_0x142e10){_0x383786['textContent']='Secret\x20name\x20is\x20required',_0x383786['hidden']=![],_0x1b22a5['focus']();return;}if(!/^[A-Za-z_][A-Za-z0-9_]*$/['test'](_0x142e10)){_0x383786['textContent']='Secret\x20name\x20must\x20start\x20with\x20a\x20letter\x20or\x20underscore,\x20and\x20contain\x20only\x20letters,\x20numbers,\x20and\x20underscores',_0x383786['hidden']=![],_0x1b22a5['focus']();return;}if(_0x559e70&&!_0x39a301){_0x383786['textContent']='File\x20path\x20is\x20required\x20for\x20file-type\x20secrets',_0x383786['hidden']=![],_0x3e70cf['focus']();return;}if(!_0x559e70&&!_0x62a10e){_0x383786['textContent']='Value\x20is\x20required\x20for\x20value-type\x20secrets',_0x383786['hidden']=![],_0x14db3d['focus']();return;}if(_0x4de7ee['length']===0x0){_0x383786['textContent']='At\x20least\x20one\x20availability\x20option\x20must\x20be\x20selected\x20(Build,\x20Tasks,\x20or\x20Deploy)',_0x383786['hidden']=![];return;}if(_0x1b649d&&!_0x1f06c1){if(!_0x291180){_0x383786['textContent']=_0x5bf774==='env_var'?'Variable\x20name\x20is\x20required\x20when\x20available\x20for\x20Tasks\x20or\x20Deploy':'Container\x20path\x20is\x20required\x20when\x20available\x20for\x20Tasks\x20or\x20Deploy',_0x383786['hidden']=![],_0x232afd['focus']();return;}if(_0x5bf774==='env_var'&&!/^[A-Za-z_][A-Za-z0-9_]*$/['test'](_0x291180)){_0x383786['textContent']='Variable\x20name\x20must\x20start\x20with\x20a\x20letter\x20or\x20underscore,\x20and\x20contain\x20only\x20letters,\x20numbers,\x20and\x20underscores',_0x383786['hidden']=![],_0x232afd['focus']();return;}if(_0x5bf774==='file'&&!_0x291180['startsWith']('/')){_0x383786['textContent']='Container\x20path\x20must\x20be\x20an\x20absolute\x20path\x20(start\x20with\x20/)',_0x383786['hidden']=![],_0x232afd['focus']();return;}if(_0x5bf774==='file'&&!_0x559e70){_0x383786['textContent']='Value-type\x20secrets\x20cannot\x20be\x20exposed\x20as\x20files.\x20Select\x20\x22File\x20on\x20host\x22\x20as\x20source\x20type\x20or\x20expose\x20as\x20\x22Environment\x20Variable\x22.',_0x383786['hidden']=![];return;}if(_0x5bf774==='env_var'&&_0x559e70){_0x383786['textContent']='File-type\x20secrets\x20cannot\x20be\x20exposed\x20as\x20environment\x20variables.\x20Select\x20\x22Direct\x20value\x22\x20as\x20source\x20type\x20or\x20expose\x20as\x20\x22File\x20(bind\x20mount)\x22.',_0x383786['hidden']=![];return;}}if(_0x1f06c1){const _0x13839e=document['getElementById']('secret-git-host'),_0x1f14f8=document['getElementById']('secret-git-custom-host'),_0x5cbe36=_0x13839e['value'];if(!_0x5cbe36){_0x383786['textContent']='Please\x20select\x20a\x20Git\x20host\x20for\x20the\x20PAT',_0x383786['hidden']=![],_0x13839e['focus']();return;}if(_0x5cbe36==='custom'){const _0x19cf5f=_0x1f14f8['value']['trim']();if(!_0x19cf5f){_0x383786['textContent']='Please\x20enter\x20a\x20custom\x20Git\x20hostname',_0x383786['hidden']=![],_0x1f14f8['focus']();return;}if(!/^[a-zA-Z0-9]([a-zA-Z0-9\-\.]*[a-zA-Z0-9])?$/['test'](_0x19cf5f)){_0x383786['textContent']='Invalid\x20hostname\x20format.\x20Use\x20a\x20valid\x20hostname\x20like\x20\x22git.mycompany.com\x22',_0x383786['hidden']=![],_0x1f14f8['focus']();return;}}}try{const _0x83250f={'type':_0x77b7de,'description':_0x3843e9,'available_for':_0x4de7ee,..._0x1b649d&&!_0x1f06c1?{'expose_as':_0x5bf774,'target':_0x291180}:{},..._0x559e70?{'source':_0x39a301}:{},...!_0x559e70&&_0x62a10e?{'value':_0x62a10e}:{},'git_remote':_0xfe5d33};state['editingSecret']?(await API['put']('/environments/'+state['selectedEnv']+'/secrets/'+_0x142e10,_0x83250f),Utils['showSuccess']('Secret\x20\x22'+_0x142e10+'\x22\x20updated')):(_0x83250f['secretName']=_0x142e10,await API['post']('/environments/'+state['selectedEnv']+'/secrets',_0x83250f),Utils['showSuccess']('Secret\x20\x22'+_0x142e10+'\x22\x20created')),closeSecretModal(),await loadSecrets(),renderSecrets();}catch(_0x3e6374){_0x383786['textContent']=_0x3e6374['message']||'Failed\x20to\x20save\x20secret',_0x383786['hidden']=![];}}window['openDeleteSecretModal']=function(_0x1e11a7){document['getElementById']('delete-secret-name')['textContent']=_0x1e11a7,document['getElementById']('delete-secret-modal')['hidden']=![],document['getElementById']('delete-secret-modal')['dataset']['secretName']=_0x1e11a7;};function closeDeleteSecretModal(){document['getElementById']('delete-secret-modal')['hidden']=!![];}async function confirmDeleteSecret(){const _0x29e9e6=document['getElementById']('delete-secret-modal')['dataset']['secretName'];try{await API['delete']('/environments/'+state['selectedEnv']+'/secrets/'+_0x29e9e6),Utils['showSuccess']('Secret\x20\x22'+_0x29e9e6+'\x22\x20deleted'),closeDeleteSecretModal(),await loadSecrets(),renderSecrets();}catch(_0x321f73){Utils['showError'](_0x321f73['message']||'Failed\x20to\x20delete\x20secret'),closeDeleteSecretModal();}}function loadConnections(){if(!state['selectedEnvData'])return;!state['selectedEnvData']['external_connections']&&(state['selectedEnvData']['external_connections']=[]);}function renderConnections(){const _0x42dc6b=document['getElementById']('connections-list'),_0x3bb53d=document['getElementById']('connections-empty');if(!_0x42dc6b||!_0x3bb53d)return;const _0x2b7a2f=state['selectedEnvData']?.['external_connections']||[];if(_0x2b7a2f['length']===0x0){_0x42dc6b['innerHTML']='',_0x42dc6b['hidden']=!![],_0x3bb53d['hidden']=![];return;}_0x42dc6b['hidden']=![],_0x3bb53d['hidden']=!![],_0x42dc6b['innerHTML']=_0x2b7a2f['map'](_0x137b82=>{const _0x4abb04={'sqlserver':'SQL\x20Server','ibmi':'IBM\x20i','ssh':'SSH'},_0x9f5e07=_0x4abb04[_0x137b82['type']]||_0x137b82['type'],_0x5ed1bc=_0x137b82['type']==='ibmi'?_0x137b82['config']?.['features']||[]:[],_0x46ef5d=_0x5ed1bc['map'](_0x117dc3=>'<span\x20class=\x22connection-feature-tag\x22>'+Utils['escapeHtml'](_0x117dc3)+'</span>')['join'](''),_0xb309da=_0x137b82['available_for']||[],_0x41f8a7='\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-availability-badges\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0xb309da['includes']('tasks')?'<span\x20class=\x22availability-badge\x20tasks\x22>Tasks</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0xb309da['includes']('deploy')?'<span\x20class=\x22availability-badge\x20deploy\x22>Deploy</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20</span>';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22connection-item\x22\x20data-connection-id=\x22'+Utils['escapeHtml'](_0x137b82['id'])+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22connection-info\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22connection-name\x22>'+Utils['escapeHtml'](_0x137b82['name'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22connection-meta\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x41f8a7+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22connection-type-badge\x20'+_0x137b82['type']+'\x22>'+_0x9f5e07+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x46ef5d+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x137b82['description']?'<span\x20class=\x22connection-description\x22>'+Utils['escapeHtml'](_0x137b82['description'])+'</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22connection-host\x22>'+Utils['escapeHtml'](_0x137b82['config']?.['host']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22connection-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22connection-edit\x22\x20title=\x22Edit\x20connection\x22\x20onclick=\x22openEditConnectionModal(\x27'+Utils['escapeHtml'](_0x137b82['id'])+'\x27)\x22>✏️</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22connection-delete\x22\x20title=\x22Delete\x20connection\x22\x20onclick=\x22openDeleteConnectionModal(\x27'+Utils['escapeHtml'](_0x137b82['id'])+'\x27)\x22>🗑</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>';})['join']('');}function openAddConnectionModal(){state['editingConnection']=null,document['getElementById']('connection-modal-title')['textContent']='Add\x20Connection',document['getElementById']('connection-name')['value']='',document['getElementById']('connection-description')['value']='',document['getElementById']('connection-host')['value']='',document['getElementById']('connection-verify-cert')['checked']=!![],document['getElementById']('connection-verify-cert-warning')['hidden']=!![],document['getElementById']('connection-database')['value']='',document['getElementById']('connection-user')['value']='',document['getElementById']('connection-password')['value']='',document['getElementById']('connection-password')['type']='password',resetPasswordToggleIcon(),resetSshKeyVisibility(''),document['getElementById']('connection-ssh-public-key')['value']='',document['getElementById']('connection-pui-base-url')['value']='',document['getElementById']('connection-pui-render-path')['value']='',document['getElementById']('connection-pui-launch-path')['value']='',document['getElementById']('connection-build-library-prefix')['value']='AITSK',document['getElementById']('connection-build-repo')['value']='',document['getElementById']('connection-build-path')['value']='',document['querySelectorAll']('input[name=\x22connection-type\x22]')['forEach'](_0x5f24c8=>_0x5f24c8['disabled']=![]),document['getElementById']('connection-type-sqlserver')['checked']=!![],document['getElementById']('feature-sql')['checked']=!![],document['getElementById']('feature-build')['checked']=![],document['getElementById']('feature-interactive')['checked']=![],document['getElementById']('feature-ssh')['checked']=![],document['getElementById']('feature-ssh')['disabled']=![],document['getElementById']('feature-sync')['checked']=![],document['getElementById']('connection-available-tasks')['checked']=!![],document['getElementById']('connection-available-deploy')['checked']=![];const _0x13560b=document['getElementById']('connection-modal-error');_0x13560b['hidden']=!![],_0x13560b['textContent']='',clearConnectionTestResult(),updateConnectionFormVisibility(),document['getElementById']('connection-modal')['hidden']=![];}window['openEditConnectionModal']=function(_0x15da53){const _0x2e86c2=state['selectedEnvData']?.['external_connections']||[],_0x3aedea=_0x2e86c2['find'](_0x1ed0a5=>_0x1ed0a5['id']===_0x15da53);if(!_0x3aedea)return;state['editingConnection']=_0x15da53,document['getElementById']('connection-modal-title')['textContent']='Edit\x20Connection',document['getElementById']('connection-name')['value']=_0x3aedea['name']||'',document['getElementById']('connection-description')['value']=_0x3aedea['description']||'',document['getElementById']('connection-host')['value']=_0x3aedea['config']?.['host']||'';const _0x20ba47=_0x3aedea['config']?.['verify_db_server_certificate']!==![];document['getElementById']('connection-verify-cert')['checked']=_0x20ba47,document['getElementById']('connection-verify-cert-warning')['hidden']=_0x20ba47,document['getElementById']('connection-database')['value']=_0x3aedea['config']?.['database']||'',document['getElementById']('connection-user')['value']=_0x3aedea['config']?.['user']||'',document['getElementById']('connection-password')['value']=_0x3aedea['password']||'',document['getElementById']('connection-password')['type']='password',resetPasswordToggleIcon(),resetSshKeyVisibility(_0x3aedea['ssh_private_key']||''),document['getElementById']('connection-ssh-public-key')['value']=_0x3aedea['ssh_public_key']||'',document['getElementById']('connection-pui-base-url')['value']=_0x3aedea['config']?.['pui_base_url']||'',document['getElementById']('connection-pui-render-path')['value']=_0x3aedea['config']?.['pui_render_path']||'',document['getElementById']('connection-pui-launch-path')['value']=_0x3aedea['config']?.['pui_launch_path']||'',document['getElementById']('connection-build-library-prefix')['value']=_0x3aedea['config']?.['build_library_prefix']||'AITSK',populateBuildRepoSelect(_0x3aedea['config']?.['build_repo']||''),document['getElementById']('connection-build-path')['value']=_0x3aedea['config']?.['build_path']||'',document['querySelectorAll']('input[name=\x22connection-type\x22]')['forEach'](_0x44bdd9=>{_0x44bdd9['disabled']=!![],_0x44bdd9['checked']=_0x44bdd9['value']===_0x3aedea['type'];});if(_0x3aedea['type']==='ibmi'){const _0x3d2380=_0x3aedea['config']?.['features']||[];document['getElementById']('feature-sql')['checked']=_0x3d2380['includes']('sql'),document['getElementById']('feature-build')['checked']=_0x3d2380['includes']('build'),document['getElementById']('feature-interactive')['checked']=_0x3d2380['includes']('interactive'),document['getElementById']('feature-ssh')['checked']=_0x3d2380['includes']('ssh'),document['getElementById']('feature-sync')['checked']=_0x3d2380['includes']('sync'),_0x3d2380['includes']('sync')?document['getElementById']('feature-ssh')['disabled']=!![]:document['getElementById']('feature-ssh')['disabled']=![];}else document['getElementById']('feature-sql')['checked']=!![],document['getElementById']('feature-build')['checked']=![],document['getElementById']('feature-interactive')['checked']=![],document['getElementById']('feature-ssh')['checked']=![],document['getElementById']('feature-ssh')['disabled']=![],document['getElementById']('feature-sync')['checked']=![];const _0x580efc=_0x3aedea['available_for']||[];document['getElementById']('connection-available-tasks')['checked']=_0x580efc['includes']('tasks'),document['getElementById']('connection-available-deploy')['checked']=_0x580efc['includes']('deploy');const _0x32ec16=document['getElementById']('connection-modal-error');_0x32ec16['hidden']=!![],_0x32ec16['textContent']='',clearConnectionTestResult(),updateConnectionFormVisibility(),document['getElementById']('connection-modal')['hidden']=![];};function isFullyQualifiedHostname(_0x19b673){if(!_0x19b673||typeof _0x19b673!=='string')return![];return/^[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?)+$/['test'](_0x19b673);}function syncHostToPuiBaseUrl(){const _0x4acefd=document['querySelector']('input[name=\x22connection-type\x22]:checked')?.['value'];if(_0x4acefd!=='ibmi')return;if(!document['getElementById']('feature-interactive')['checked'])return;const _0x472212=document['getElementById']('connection-host')['value']['trim'](),_0x220705=document['getElementById']('connection-pui-base-url'),_0x1abc41=_0x220705['value']['trim']();if(!_0x472212)return;if(!_0x1abc41)_0x220705['value']='https://'+_0x472212;else try{const _0x1f776e=new URL(_0x1abc41);_0x1f776e['hostname']=_0x472212,_0x220705['value']=_0x1f776e['origin'];}catch{}}function syncPuiBaseUrlToHost(){const _0x5ad8f3=document['querySelector']('input[name=\x22connection-type\x22]:checked')?.['value'];if(_0x5ad8f3!=='ibmi')return;const _0x4beb0f=document['getElementById']('connection-pui-base-url')['value']['trim']();if(!_0x4beb0f)return;try{const _0x25fa54=new URL(_0x4beb0f),_0x30b1d4=_0x25fa54['hostname'];_0x30b1d4&&(document['getElementById']('connection-host')['value']=_0x30b1d4);}catch{}}function populateBuildRepoSelect(_0x5f5a8a){const _0x121b7b=document['getElementById']('connection-build-repo'),_0x261e4d=state['selectedEnvData']?.['repos']||[];_0x121b7b['innerHTML']='<option\x20value=\x22\x22>—\x20Select\x20a\x20repo\x20—</option>'+_0x261e4d['map'](_0x1ca4c8=>'<option\x20value=\x22'+Utils['escapeHtml'](_0x1ca4c8['name'])+'\x22'+(_0x1ca4c8['name']===_0x5f5a8a?'\x20selected':'')+'>'+Utils['escapeHtml'](_0x1ca4c8['name'])+'</option>')['join']('');}function updateConnectionFormVisibility(){const _0x5dd74a=document['querySelector']('input[name=\x22connection-type\x22]:checked')?.['value']||'sqlserver',_0x26c0ab=_0x5dd74a==='ibmi',_0x2c0f71=_0x5dd74a==='ssh',_0x2fb8e3=_0x5dd74a==='sqlserver',_0x12a9b4=document['getElementById']('feature-sql')['checked'],_0x59f1bb=document['getElementById']('feature-build')['checked'],_0x4f363f=document['getElementById']('feature-interactive')['checked'],_0x40e895=document['getElementById']('feature-ssh')['checked'],_0x3e40ce=document['getElementById']('feature-sync')['checked'],_0x48b43e=document['getElementById']('connection-available-tasks')['checked'];document['getElementById']('connection-database-row')['hidden']=!_0x2fb8e3;const _0x5c1cab=_0x2fb8e3||_0x26c0ab&&_0x12a9b4;document['getElementById']('connection-verify-cert-row')['hidden']=!_0x5c1cab,document['getElementById']('connection-features-row')['hidden']=!_0x26c0ab,document['getElementById']('connection-pui-settings')['hidden']=!(_0x26c0ab&&_0x4f363f),document['getElementById']('connection-ssh-settings')['hidden']=!(_0x2c0f71||_0x26c0ab&&(_0x40e895||_0x59f1bb)),document['getElementById']('connection-password-row')['hidden']=!(_0x2fb8e3||_0x26c0ab&&(_0x12a9b4||_0x4f363f));const _0x170f05=document['getElementById']('connection-build-repo-row'),_0x4e5385=document['getElementById']('connection-build-path-row'),_0x213857=_0x26c0ab&&_0x59f1bb;_0x170f05['hidden']=!_0x213857,_0x4e5385['hidden']=!_0x213857;_0x213857&&populateBuildRepoSelect(document['getElementById']('connection-build-repo')['value']);const _0x380744=document['getElementById']('connection-build-library-prefix-row'),_0x18e55b=_0x26c0ab&&_0x59f1bb&&_0x48b43e;_0x380744['hidden']=!_0x18e55b;!_0x18e55b&&(document['getElementById']('connection-build-library-prefix')['value']=document['getElementById']('connection-build-library-prefix')['value']||'AITSK');document['getElementById']('connection-ibmi-helper-row')['hidden']=!_0x26c0ab;const _0x5d57cd=_0x2fb8e3||_0x26c0ab&&_0x12a9b4,_0x13f6ea=_0x26c0ab&&(_0x40e895||_0x59f1bb||_0x3e40ce)||_0x2c0f71;document['getElementById']('connection-test-row')['hidden']=!(_0x5d57cd||_0x13f6ea),document['getElementById']('connection-test-sql-btn')['hidden']=!_0x5d57cd,document['getElementById']('connection-test-ssh-btn')['hidden']=!_0x13f6ea;const _0x2ee769=document['getElementById']('connection-ssh-public-key')['value'];document['getElementById']('connection-install-key-row')['hidden']=!(_0x2ee769&&_0x2ee769!=='***');}function closeConnectionModal(){document['getElementById']('connection-modal')['hidden']=!![],state['editingConnection']=null;}function validateConnectionFrontend(_0x56f24b,_0xb3bb69=[],_0x1dc1b2=null){const _0x5afea6=[],_0x48ff36=['sqlserver','ibmi','ssh'],_0xd82f9c=['tasks','deploy'],_0x12572d=['sql','build','interactive','ssh','sync'],_0x5eece9=['build','interactive'],_0x4b0fe8={'sync':['ssh']},_0xdba4c6=['sql','interactive'],_0x1a903b=['build','ssh','sync'],_0x139332=/^[A-Z@#$][A-Z@#$0-9_.]{0,4}$/;if(!_0x56f24b['name']||typeof _0x56f24b['name']!=='string')_0x5afea6['push']('Connection\x20name\x20is\x20required');else{if(!/^[a-zA-Z0-9_-]+$/['test'](_0x56f24b['name']))_0x5afea6['push']('Connection\x20name\x20must\x20contain\x20only\x20letters,\x20numbers,\x20hyphens,\x20and\x20underscores');else{const _0x57f404=_0x56f24b['name']['toLowerCase'](),_0xdf32e=_0xb3bb69['find'](_0x2d70a0=>_0x2d70a0['id']!==_0x1dc1b2&&_0x2d70a0['name']['toLowerCase']()===_0x57f404);_0xdf32e&&_0x5afea6['push']('Connection\x20name\x20\x22'+_0x56f24b['name']+'\x22\x20is\x20already\x20in\x20use');}}if(!Array['isArray'](_0x56f24b['available_for'])||_0x56f24b['available_for']['length']===0x0)_0x5afea6['push']('At\x20least\x20one\x20availability\x20scope\x20is\x20required\x20(tasks,\x20deploy)');else _0x56f24b['available_for']['some'](_0xcc26b8=>!_0xd82f9c['includes'](_0xcc26b8))&&_0x5afea6['push']('Available\x20scopes\x20must\x20be:\x20'+_0xd82f9c['join'](',\x20'));(!_0x56f24b['type']||!_0x48ff36['includes'](_0x56f24b['type']))&&_0x5afea6['push']('Connection\x20type\x20must\x20be\x20one\x20of:\x20'+_0x48ff36['join'](',\x20'));if(_0x56f24b['type']==='sqlserver'){if(!_0x56f24b['config']?.['host'])_0x5afea6['push']('Host\x20is\x20required\x20for\x20SQL\x20Server');else!isFullyQualifiedHostname(_0x56f24b['config']['host'])&&_0x5afea6['push']('Host\x20must\x20be\x20a\x20fully\x20qualified\x20hostname\x20(e.g.\x20myserver.mycompany.com)');if(!_0x56f24b['config']?.['database'])_0x5afea6['push']('Database\x20is\x20required\x20for\x20SQL\x20Server');if(!_0x56f24b['config']?.['user'])_0x5afea6['push']('User\x20is\x20required\x20for\x20SQL\x20Server');if(!_0x56f24b['password'])_0x5afea6['push']('Password\x20is\x20required\x20for\x20SQL\x20Server');}else{if(_0x56f24b['type']==='ibmi'){if(!_0x56f24b['config']?.['host'])_0x5afea6['push']('Host\x20is\x20required\x20for\x20IBM\x20i');else!isFullyQualifiedHostname(_0x56f24b['config']['host'])&&_0x5afea6['push']('Host\x20must\x20be\x20a\x20fully\x20qualified\x20hostname\x20(e.g.\x20myserver.mycompany.com)');if(!_0x56f24b['config']?.['user'])_0x5afea6['push']('User\x20is\x20required\x20for\x20IBM\x20i');const _0x14ba9d=_0x56f24b['config']?.['features']||[];_0x14ba9d['some'](_0x161389=>_0xdba4c6['includes'](_0x161389))&&!_0x56f24b['password']&&_0x5afea6['push']('Password\x20is\x20required\x20for\x20IBM\x20i\x20SQL\x20and\x20Interactive\x20features');if(!Array['isArray'](_0x14ba9d)||_0x14ba9d['length']===0x0)_0x5afea6['push']('At\x20least\x20one\x20IBM\x20i\x20feature\x20is\x20required');else{const _0x263c07=_0x14ba9d['filter'](_0x489c03=>!_0x12572d['includes'](_0x489c03));_0x263c07['length']>0x0&&_0x5afea6['push']('Invalid\x20IBM\x20i\x20features:\x20'+_0x263c07['join'](',\x20'));for(const [_0x502424,_0x386214]of Object['entries'](_0x4b0fe8)){if(_0x14ba9d['includes'](_0x502424))for(const _0x56f64d of _0x386214){!_0x14ba9d['includes'](_0x56f64d)&&_0x5afea6['push']('IBM\x20i\x20feature\x20\x22'+_0x502424+'\x22\x20requires\x20\x22'+_0x56f64d+'\x22');}}if(_0x14ba9d['includes']('build')){!_0x56f24b['config']?.['build_repo']&&_0x5afea6['push']('Build\x20repo\x20is\x20required\x20when\x20Build\x20feature\x20is\x20selected');const _0x3dc74a=_0x56f24b['config']?.['build_path'];if(_0x3dc74a){const _0x2c42aa=_0x3dc74a['split']('/');_0x2c42aa['some'](_0x17cb32=>_0x17cb32==='.'||_0x17cb32==='..')&&_0x5afea6['push']('Build\x20directory\x20must\x20not\x20contain\x20\x22.\x22\x20or\x20\x22..\x22\x20segments');}}if(_0x14ba9d['includes']('build')&&_0x56f24b['available_for']?.['includes']('tasks')){const _0x834beb=_0x56f24b['config']?.['build_library_prefix'];if(!_0x834beb)_0x5afea6['push']('Build\x20library\x20prefix\x20is\x20required\x20when\x20Build\x20feature\x20is\x20used\x20with\x20Tasks\x20scope');else!_0x139332['test'](_0x834beb)&&_0x5afea6['push']('Build\x20library\x20prefix\x20must\x20be\x201-5\x20characters:\x20first\x20character\x20A-Z,\x20@,\x20#,\x20or\x20$;\x20remaining\x20characters\x20A-Z,\x20@,\x20#,\x20$,\x200-9,\x20_,\x20or\x20.');}_0x14ba9d['some'](_0x151984=>_0x1a903b['includes'](_0x151984))&&!_0x56f24b['ssh_private_key']&&_0x5afea6['push']('SSH\x20private\x20key\x20is\x20required\x20for\x20this\x20connection\x20type');_0x14ba9d['includes']('interactive')&&!(_0x56f24b['available_for']||[])['includes']('tasks')&&_0x5afea6['push']('Interactive\x20feature\x20requires\x20Tasks\x20availability\x20scope');if(_0x14ba9d['includes']('interactive')){if(!_0x56f24b['config']?.['pui_base_url'])_0x5afea6['push']('PUI\x20Base\x20URL\x20is\x20required\x20when\x20Interactive\x20feature\x20is\x20selected');else{if(_0x56f24b['config']?.['host'])try{const _0x505474=new URL(_0x56f24b['config']['pui_base_url'])['hostname'];_0x505474&&_0x505474!==_0x56f24b['config']['host']&&_0x5afea6['push']('PUI\x20Base\x20URL\x20hostname\x20\x22'+_0x505474+'\x22\x20must\x20match\x20the\x20connection\x20host\x20\x22'+_0x56f24b['config']['host']+'\x22');}catch{_0x5afea6['push']('PUI\x20Base\x20URL\x20must\x20be\x20a\x20valid\x20URL\x20(e.g.\x20https://myibmi.mycompany.com:8080)');}}}const _0x1d9c68=_0x14ba9d['some'](_0x3babab=>_0x5eece9['includes'](_0x3babab));if(_0x1d9c68&&Array['isArray'](_0x56f24b['available_for'])){const _0x555545=_0xb3bb69['filter'](_0x5eb3c7=>_0x5eb3c7['id']!==_0x1dc1b2&&_0x5eb3c7['type']==='ibmi'&&(_0x5eb3c7['config']?.['features']||[])['some'](_0xdf8a36=>_0x5eece9['includes'](_0xdf8a36)));for(const _0xf56554 of _0x555545){const _0x98ea65=_0x56f24b['available_for']['filter'](_0xb76be9=>(_0xf56554['available_for']||[])['includes'](_0xb76be9));if(_0x98ea65['length']>0x0){_0x5afea6['push']('Only\x20one\x20IBM\x20i\x20connection\x20with\x20build/interactive\x20features\x20is\x20allowed\x20per\x20scope.\x20'+('Connection\x20\x22'+_0xf56554['name']+'\x22\x20already\x20has\x20build/interactive\x20in\x20scope:\x20'+_0x98ea65['join'](',\x20')));break;}}}}}else{if(_0x56f24b['type']==='ssh'){if(!_0x56f24b['config']?.['host'])_0x5afea6['push']('Host\x20is\x20required\x20for\x20SSH');else!isFullyQualifiedHostname(_0x56f24b['config']['host'])&&_0x5afea6['push']('Host\x20must\x20be\x20a\x20fully\x20qualified\x20hostname\x20(e.g.\x20myserver.mycompany.com)');if(!_0x56f24b['config']?.['user'])_0x5afea6['push']('User\x20is\x20required\x20for\x20SSH');!_0x56f24b['ssh_private_key']&&_0x5afea6['push']('SSH\x20private\x20key\x20is\x20required\x20for\x20SSH\x20connections');}}}return{'valid':_0x5afea6['length']===0x0,'errors':_0x5afea6};}async function saveConnection(){const _0x42e5fd=document['getElementById']('connection-modal-error');_0x42e5fd['hidden']=!![];const _0x4ece5e=document['querySelector']('input[name=\x22connection-type\x22]:checked')?.['value'],_0x43a883=document['getElementById']('connection-name')['value']['trim'](),_0x1c9639=document['getElementById']('connection-description')['value']['trim'](),_0x5124fd=document['getElementById']('connection-host')['value']['trim'](),_0x53d588=document['getElementById']('connection-user')['value']['trim'](),_0x45767a=[];if(document['getElementById']('connection-available-tasks')['checked'])_0x45767a['push']('tasks');if(document['getElementById']('connection-available-deploy')['checked'])_0x45767a['push']('deploy');const _0x17a709={'host':_0x5124fd,'user':_0x53d588};if(_0x4ece5e==='sqlserver')_0x17a709['database']=document['getElementById']('connection-database')['value']['trim'](),!document['getElementById']('connection-verify-cert')['checked']&&(_0x17a709['verify_db_server_certificate']=![]);else{if(_0x4ece5e==='ibmi'){const _0x1a1428=[];if(document['getElementById']('feature-sql')['checked'])_0x1a1428['push']('sql');if(document['getElementById']('feature-build')['checked'])_0x1a1428['push']('build');if(document['getElementById']('feature-interactive')['checked'])_0x1a1428['push']('interactive');if(document['getElementById']('feature-ssh')['checked']||document['getElementById']('feature-ssh')['disabled'])_0x1a1428['push']('ssh');if(document['getElementById']('feature-sync')['checked'])_0x1a1428['push']('sync');_0x17a709['features']=_0x1a1428;_0x1a1428['includes']('sql')&&!document['getElementById']('connection-verify-cert')['checked']&&(_0x17a709['verify_db_server_certificate']=![]);if(_0x1a1428['includes']('interactive')){_0x17a709['pui_base_url']=document['getElementById']('connection-pui-base-url')['value']['trim']();const _0x571888=document['getElementById']('connection-pui-render-path')['value']['trim'](),_0x2d57a5=document['getElementById']('connection-pui-launch-path')['value']['trim']();if(_0x571888)_0x17a709['pui_render_path']=_0x571888;if(_0x2d57a5)_0x17a709['pui_launch_path']=_0x2d57a5;}if(_0x1a1428['includes']('build')){const _0x59617b=document['getElementById']('connection-build-repo')['value'];if(!_0x59617b){_0x42e5fd['textContent']='Build\x20repo\x20is\x20required\x20when\x20Build\x20feature\x20is\x20selected',_0x42e5fd['hidden']=![];return;}_0x17a709['build_repo']=_0x59617b;let _0x10e0fa=document['getElementById']('connection-build-path')['value']['trim']();_0x10e0fa=_0x10e0fa['replace'](/^\/+/,'');if(_0x10e0fa){const _0x245c8d=_0x10e0fa['split']('/');if(_0x245c8d['some'](_0x1aa0a3=>_0x1aa0a3==='.'||_0x1aa0a3==='..')){_0x42e5fd['textContent']='Build\x20directory\x20must\x20not\x20contain\x20\x22.\x22\x20or\x20\x22..\x22\x20segments',_0x42e5fd['hidden']=![];return;}_0x17a709['build_path']=_0x10e0fa;}}if(_0x1a1428['includes']('build')&&_0x45767a['includes']('tasks')){let _0x374aed=document['getElementById']('connection-build-library-prefix')['value']['trim']()['toUpperCase']();document['getElementById']('connection-build-library-prefix')['value']=_0x374aed;if(!_0x374aed){_0x42e5fd['textContent']='Build\x20library\x20prefix\x20is\x20required',_0x42e5fd['hidden']=![];return;}if(!/^[A-Z@#$][A-Z@#$0-9_.]{0,4}$/['test'](_0x374aed)){_0x42e5fd['textContent']='Build\x20library\x20prefix\x20must\x20be\x201-5\x20characters:\x20first\x20character\x20A-Z,\x20@,\x20#,\x20$;\x20remaining\x20A-Z,\x20@,\x20#,\x20$,\x200-9,\x20_,\x20.',_0x42e5fd['hidden']=![];return;}_0x17a709['build_library_prefix']=_0x374aed;}}}const _0x45adea={'name':_0x43a883,'type':_0x4ece5e,'description':_0x1c9639,'available_for':_0x45767a,'config':_0x17a709};state['editingConnection']?_0x45adea['id']=state['editingConnection']:_0x45adea['id']=crypto['randomUUID']();const _0xf5d8af=document['getElementById']('connection-password')['value'];if(_0xf5d8af)_0x45adea['password']=_0xf5d8af;if(sshKeyValueStore)_0x45adea['ssh_private_key']=sshKeyValueStore;const _0x5bffe1=document['getElementById']('connection-ssh-public-key')['value'];if(_0x5bffe1)_0x45adea['ssh_public_key']=_0x5bffe1;const _0xb1f914=state['selectedEnvData']?.['external_connections']||[],_0x3c6ffc=validateConnectionFrontend(_0x45adea,_0xb1f914,state['editingConnection']);if(!_0x3c6ffc['valid']){_0x42e5fd['textContent']=_0x3c6ffc['errors'][0x0],_0x42e5fd['hidden']=![];return;}if(state['editingConnection']){const _0x5efe60=_0xb1f914['findIndex'](_0x3123b3=>_0x3123b3['id']===state['editingConnection']);_0x5efe60>=0x0&&(_0xb1f914[_0x5efe60]=_0x45adea);}else _0xb1f914['push'](_0x45adea);state['selectedEnvData']['external_connections']=_0xb1f914,Utils['showSuccess']('Connection\x20\x22'+_0x43a883+'\x22\x20'+(state['editingConnection']?'updated':'added')+'\x20(click\x20Save\x20to\x20persist\x20changes)'),closeConnectionModal(),renderConnections(),markAsModified();const _0x181fb1=getRequiredSkillsForConnection(_0x45adea);_0x181fb1['length']>0x0&&await autoImportConnectionSkills(_0x181fb1);}window['openDeleteConnectionModal']=function(_0x3c3a75){const _0x517765=state['selectedEnvData']?.['external_connections']||[],_0x446ce9=_0x517765['find'](_0x179c0f=>_0x179c0f['id']===_0x3c3a75);if(!_0x446ce9)return;document['getElementById']('delete-connection-name')['textContent']=_0x446ce9['name']+'\x20('+_0x446ce9['type']+')',document['getElementById']('delete-connection-modal')['dataset']['connectionId']=_0x3c3a75,document['getElementById']('delete-connection-modal')['hidden']=![];};function closeDeleteConnectionModal(){document['getElementById']('delete-connection-modal')['hidden']=!![];}function confirmDeleteConnection(){const _0x1300ba=document['getElementById']('delete-connection-modal')['dataset']['connectionId'],_0x3fed2d=state['selectedEnvData']?.['external_connections']||[];state['selectedEnvData']['external_connections']=_0x3fed2d['filter'](_0x4aaec2=>_0x4aaec2['id']!==_0x1300ba),Utils['showSuccess']('Connection\x20removed\x20(click\x20Save\x20to\x20persist\x20changes)'),closeDeleteConnectionModal(),renderConnections(),markAsModified();}function openIbmiHelperDialog(){const _0x552c5f=document['getElementById']('connection-user')['value']['trim']()||'{USER}',_0x3d9a27=_0x552c5f['toUpperCase'](),_0x1d0c22=_0x552c5f['toLowerCase'](),_0x3fb6a1=document['getElementById']('connection-password')['value'],_0x26f540=_0x3fb6a1&&_0x3fb6a1!=='***'?_0x3fb6a1:'',_0x57bb42=['CRTUSRPRF\x20USRPRF('+_0x3d9a27+')\x20PASSWORD('+_0x26f540+')\x20USRCLS(*USER)\x20INLMNU(*SIGNOFF)\x20LMTCPB(*YES)\x20TEXT(\x27CoderFlow\x20service\x20account\x27)\x20SPCAUT(*NONE)\x20JOBD(JOB_DESCRIPTION)','CRTDIR\x20DIR(\x27/home/'+_0x1d0c22+'\x27)','CHGOWN\x20OBJ(\x27/home/'+_0x1d0c22+'\x27)\x20NEWOWN('+_0x3d9a27+')','QSH\x20CMD(\x27chmod\x20755\x20/home/'+_0x1d0c22+'\x27)'],_0x315cf9=document['getElementById']('ibmi-helper-commands');_0x315cf9['innerHTML']='',_0x57bb42['forEach'](_0x4018cd=>{const _0x5db207=document['createElement']('div');_0x5db207['className']='command-line';const _0x5c7570=document['createElement']('code');_0x5c7570['textContent']=_0x4018cd;const _0x1d9fd4=document['createElement']('button');_0x1d9fd4['type']='button',_0x1d9fd4['className']='btn-icon\x20copy-btn',_0x1d9fd4['title']='Copy',_0x1d9fd4['innerHTML']='<svg\x20width=\x2214\x22\x20height=\x2214\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22><rect\x20x=\x229\x22\x20y=\x229\x22\x20width=\x2213\x22\x20height=\x2213\x22\x20rx=\x222\x22/><path\x20d=\x22M5\x2015H4a2\x202\x200\x2001-2-2V4a2\x202\x200\x20012-2h9a2\x202\x200\x20012\x202v1\x22/></svg>',_0x1d9fd4['addEventListener']('click',()=>{navigator['clipboard']['writeText'](_0x4018cd)['then'](()=>{_0x1d9fd4['innerHTML']='<svg\x20width=\x2214\x22\x20height=\x2214\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22><path\x20d=\x22M20\x206L9\x2017l-5-5\x22/></svg>',setTimeout(()=>{_0x1d9fd4['innerHTML']='<svg\x20width=\x2214\x22\x20height=\x2214\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22><rect\x20x=\x229\x22\x20y=\x229\x22\x20width=\x2213\x22\x20height=\x2213\x22\x20rx=\x222\x22/><path\x20d=\x22M5\x2015H4a2\x202\x200\x2001-2-2V4a2\x202\x200\x20012-2h9a2\x202\x200\x20012\x202v1\x22/></svg>';},0x5dc);});}),_0x5db207['appendChild'](_0x5c7570),_0x5db207['appendChild'](_0x1d9fd4),_0x315cf9['appendChild'](_0x5db207);}),document['getElementById']('ibmi-helper-modal')['hidden']=![];}function resetPasswordToggleIcon(){const _0x3566a1=document['getElementById']('connection-password-toggle');_0x3566a1['querySelector']('.eye-open')['style']['display']='',_0x3566a1['querySelector']('.eye-closed')['style']['display']='none';}function toggleConnectionPasswordVisibility(){const _0x30575d=document['getElementById']('connection-password'),_0x2fc5f0=document['getElementById']('connection-password-toggle'),_0x5e2e27=_0x30575d['type']==='password';_0x30575d['type']=_0x5e2e27?'text':'password',_0x2fc5f0['querySelector']('.eye-open')['style']['display']=_0x5e2e27?'none':'',_0x2fc5f0['querySelector']('.eye-closed')['style']['display']=_0x5e2e27?'':'none';}function resetSshKeyVisibility(_0x2cfbe3){sshKeyValueStore=_0x2cfbe3,sshKeyValueVisible=![],sshKeyLastCursorPosition=0x0;const _0x3f9f1e=document['getElementById']('connection-ssh-private-key'),_0x8d636b=document['querySelector']('.connection-ssh-key-toggle');_0x3f9f1e&&(_0x3f9f1e['value']=_0x2cfbe3?'•'['repeat'](_0x2cfbe3['length']):''),_0x8d636b&&(_0x8d636b['hidden']=![],_0x8d636b['querySelector']('.eye-open')['style']['display']='block',_0x8d636b['querySelector']('.eye-closed')['style']['display']='none');}function toggleSshKeyVisibility(){const _0xb5d47d=document['getElementById']('connection-ssh-private-key'),_0x3c7f79=document['querySelector']('.connection-ssh-key-toggle');sshKeyValueVisible=!sshKeyValueVisible,sshKeyValueVisible?(_0xb5d47d['value']=sshKeyValueStore,_0x3c7f79['querySelector']('.eye-open')['style']['display']='none',_0x3c7f79['querySelector']('.eye-closed')['style']['display']='block'):(_0xb5d47d['value']=sshKeyValueStore?'•'['repeat'](sshKeyValueStore['length']):'',_0x3c7f79['querySelector']('.eye-open')['style']['display']='block',_0x3c7f79['querySelector']('.eye-closed')['style']['display']='none');}function handleSshKeyBeforeInput(_0x10e2d1){if(!sshKeyValueVisible){const _0x4683c0=_0x10e2d1['target'];sshKeyLastCursorPosition=_0x4683c0['selectionStart'],_0x4683c0['dataset']['selectionEnd']=_0x4683c0['selectionEnd'];}}function handleSshKeyInput(_0x555c08){const _0x4295af=_0x555c08['target'];if(sshKeyValueVisible)sshKeyValueStore=_0x4295af['value'];else{const _0x484756=_0x555c08['inputType'],_0x5666c8=_0x4295af['value'],_0x56a364='•',_0x164e1c=_0x4295af['selectionStart'],_0x3b6310=_0x5666c8['replace'](new RegExp(_0x56a364,'g'),''),_0x43dc05=sshKeyValueStore['length'],_0x3420f7=sshKeyLastCursorPosition,_0x3030c7=parseInt(_0x4295af['dataset']['selectionEnd']||_0x3420f7),_0x3a8e64=_0x3030c7>_0x3420f7;if(_0x5666c8==='')sshKeyValueStore='',sshKeyLastCursorPosition=0x0;else{if(_0x484756&&_0x484756['startsWith']('delete')){if(_0x3a8e64)sshKeyValueStore=sshKeyValueStore['slice'](0x0,_0x3420f7)+sshKeyValueStore['slice'](_0x3030c7),sshKeyLastCursorPosition=_0x3420f7;else{const _0x1e7865=_0x43dc05-_0x5666c8['length'];_0x484756==='deleteContentBackward'?sshKeyValueStore=sshKeyValueStore['slice'](0x0,_0x164e1c)+sshKeyValueStore['slice'](_0x164e1c+_0x1e7865):sshKeyValueStore=sshKeyValueStore['slice'](0x0,_0x164e1c)+sshKeyValueStore['slice'](_0x164e1c+_0x1e7865),sshKeyLastCursorPosition=_0x164e1c;}}else{if(_0x3b6310['length']>0x0){const _0x2e77e5=_0x5666c8['length']-_0x3b6310['length'];if(_0x2e77e5===0x0)sshKeyValueStore=_0x3b6310,sshKeyLastCursorPosition=_0x3b6310['length'];else _0x3a8e64?(sshKeyValueStore=sshKeyValueStore['slice'](0x0,_0x3420f7)+_0x3b6310+sshKeyValueStore['slice'](_0x3030c7),sshKeyLastCursorPosition=_0x3420f7+_0x3b6310['length']):(sshKeyValueStore=sshKeyValueStore['slice'](0x0,_0x3420f7)+_0x3b6310+sshKeyValueStore['slice'](_0x3420f7),sshKeyLastCursorPosition=_0x3420f7+_0x3b6310['length']);}else _0x5666c8['length']<_0x43dc05?(sshKeyValueStore=sshKeyValueStore['slice'](0x0,_0x5666c8['length']),sshKeyLastCursorPosition=_0x164e1c):sshKeyLastCursorPosition=_0x164e1c;}}const _0x51f5c2=_0x56a364['repeat'](sshKeyValueStore['length']);_0x4295af['value']=_0x51f5c2,_0x4295af['setSelectionRange'](sshKeyLastCursorPosition,sshKeyLastCursorPosition),delete _0x4295af['dataset']['selectionEnd'];}}function handleSshKeyFileImport(_0x2abd9f){const _0x12ea8b=_0x2abd9f['target']['files'][0x0];if(!_0x12ea8b)return;const _0x134d7e=new FileReader();_0x134d7e['onload']=function(_0x1d5b47){const _0x3a458a=_0x1d5b47['target']['result'];sshKeyValueStore=_0x3a458a,sshKeyValueVisible=!![],document['getElementById']('connection-ssh-private-key')['value']=_0x3a458a;const _0x221e4c=document['querySelector']('.connection-ssh-key-toggle');_0x221e4c&&(_0x221e4c['querySelector']('.eye-open')['style']['display']='none',_0x221e4c['querySelector']('.eye-closed')['style']['display']='block');},_0x134d7e['onerror']=function(){Utils['showError']('Failed\x20to\x20read\x20file');},_0x134d7e['readAsText'](_0x12ea8b),_0x2abd9f['target']['value']='';}function handleSshPubKeyFileImport(_0x398c06){const _0x397d0b=_0x398c06['target']['files'][0x0];if(!_0x397d0b)return;const _0x5e0552=new FileReader();_0x5e0552['onload']=function(_0x2e8feb){document['getElementById']('connection-ssh-public-key')['value']=_0x2e8feb['target']['result'],updateConnectionFormVisibility();},_0x5e0552['onerror']=function(){Utils['showError']('Failed\x20to\x20read\x20file');},_0x5e0552['readAsText'](_0x397d0b),_0x398c06['target']['value']='';}async function generateKeypair(){try{const _0x3f1e48=await API['post']('/environments/'+state['selectedEnv']+'/connections/generate-keypair');sshKeyValueStore=_0x3f1e48['privateKey'],sshKeyValueVisible=!![],document['getElementById']('connection-ssh-private-key')['value']=_0x3f1e48['privateKey'];const _0x21ab5b=document['querySelector']('.connection-ssh-key-toggle');_0x21ab5b&&(_0x21ab5b['querySelector']('.eye-open')['style']['display']='none',_0x21ab5b['querySelector']('.eye-closed')['style']['display']='block'),document['getElementById']('connection-ssh-public-key')['value']=_0x3f1e48['publicKey'],updateConnectionFormVisibility(),Utils['showSuccess']('SSH\x20keypair\x20generated');}catch(_0x3d0615){Utils['showError'](_0x3d0615['message']||'Failed\x20to\x20generate\x20keypair');}}function showConnectionTestResult(_0xd0d2f1,_0x303fb0,_0x5863f6){const _0x24e9f3=document['getElementById']('connection-test-spinner'),_0x17380b=document['getElementById']('connection-test-result');_0x24e9f3['hidden']=!![];let _0x434f98='<div\x20class=\x22test-result-title\x22>'+Utils['escapeHtml'](_0x303fb0)+'</div>';_0x5863f6&&(_0x434f98+='<div\x20class=\x22test-result-detail\x22>'+Utils['escapeHtml'](_0x5863f6)+'</div>'),_0x17380b['innerHTML']=_0x434f98,_0x17380b['className']='connection-test-result\x20'+(_0xd0d2f1?'success':'error'),_0x17380b['hidden']=![];}function clearConnectionTestResult(){document['getElementById']('connection-test-spinner')['hidden']=!![];const _0x44f54e=document['getElementById']('connection-test-result');_0x44f54e['hidden']=!![],_0x44f54e['innerHTML']='',_0x44f54e['className']='connection-test-result';}async function testConnection(_0x255528){const _0xea5668=state['editingConnection']||'_unsaved',_0x352348=document['getElementById']('connection-test-spinner');clearConnectionTestResult(),_0x352348['hidden']=![];try{const _0x2b30c2=document['querySelector']('input[name=\x22connection-type\x22]:checked')?.['value'],_0x150958={'testType':_0x255528,'type':_0x2b30c2,'host':document['getElementById']('connection-host')['value']['trim'](),'user':document['getElementById']('connection-user')['value']['trim']()};_0x2b30c2==='ibmi'&&(_0x150958['features']=['sql','build','ssh','sync']['filter'](_0x4e8b38=>document['getElementById']('feature-'+_0x4e8b38)['checked']));_0x255528==='sql'?(_0x150958['password']=document['getElementById']('connection-password')['value'],_0x150958['database']=document['getElementById']('connection-database')['value']['trim'](),!document['getElementById']('connection-verify-cert')['checked']&&(_0x150958['verify_db_server_certificate']=![])):_0x150958['ssh_private_key']=sshKeyValueStore;const _0x39f138=await API['post']('/environments/'+state['selectedEnv']+'/connections/'+_0xea5668+'/test',_0x150958);showConnectionTestResult(!![],_0x39f138['message']||'Connection\x20successful');}catch(_0x493e6b){showConnectionTestResult(![],_0x493e6b['message']||'Connection\x20failed',_0x493e6b['detail']);}}function openInstallKeyModal(){const _0x5302e9=document['getElementById']('connection-host')['value']['trim'](),_0x429ce0=document['getElementById']('connection-user')['value']['trim'](),_0x30d25b=document['getElementById']('connection-ssh-public-key')['value']['trim']();if(!_0x5302e9||!_0x429ce0){showConnectionTestResult(![],'Host\x20and\x20user\x20are\x20required\x20to\x20install\x20the\x20public\x20key');return;}if(!_0x30d25b||_0x30d25b==='***'){showConnectionTestResult(![],'A\x20public\x20key\x20is\x20required\x20to\x20install');return;}const _0x28a4ec=document['getElementById']('connection-password')['value'],_0x393219=document['getElementById']('connection-password-row'),_0x33ebd0=document['getElementById']('install-key-password');_0x33ebd0['value']=!_0x393219['hidden']&&_0x28a4ec&&_0x28a4ec!=='***'?_0x28a4ec:'',_0x33ebd0['type']='password';const _0x39ac5a=document['getElementById']('install-key-password-toggle');_0x39ac5a['querySelector']('.eye-open')['style']['display']='',_0x39ac5a['querySelector']('.eye-closed')['style']['display']='none';const _0x1c11c1=document['getElementById']('install-key-result');_0x1c11c1['hidden']=!![],_0x1c11c1['innerHTML']='',_0x1c11c1['className']='connection-test-result',document['getElementById']('install-key-confirm-btn')['disabled']=![],document['getElementById']('install-key-modal')['hidden']=![];}function closeInstallKeyModal(){document['getElementById']('install-key-modal')['hidden']=!![];}async function installPublicKey(){const _0x46eff8=document['getElementById']('install-key-password')['value'];if(!_0x46eff8){const _0x4b3b83=document['getElementById']('install-key-result');_0x4b3b83['innerHTML']='<div\x20class=\x22test-result-title\x22>'+Utils['escapeHtml']('Password\x20is\x20required')+'</div>',_0x4b3b83['className']='connection-test-result\x20error',_0x4b3b83['hidden']=![];return;}const _0x2a75a2=state['editingConnection']||'_unsaved',_0x258e2b=document['getElementById']('connection-host')['value']['trim'](),_0x2c5d33=document['getElementById']('connection-user')['value']['trim'](),_0x3cc4af=document['getElementById']('connection-ssh-public-key')['value']['trim'](),_0x493c73=document['getElementById']('install-key-result');_0x493c73['innerHTML']='Installing...',_0x493c73['className']='connection-test-result',_0x493c73['hidden']=![],document['getElementById']('install-key-confirm-btn')['disabled']=!![];try{const _0x5075b4={'host':_0x258e2b,'user':_0x2c5d33,'password':_0x46eff8,'public_key':_0x3cc4af},_0x4507eb=await API['post']('/environments/'+state['selectedEnv']+'/connections/'+_0x2a75a2+'/install-public-key',_0x5075b4);_0x493c73['innerHTML']='<div\x20class=\x22test-result-title\x22>'+Utils['escapeHtml'](_0x4507eb['message']||'Public\x20key\x20installed\x20successfully')+'</div>',_0x493c73['className']='connection-test-result\x20success';}catch(_0x395fec){let _0x17c5f0='<div\x20class=\x22test-result-title\x22>'+Utils['escapeHtml'](_0x395fec['message']||'Failed\x20to\x20install\x20public\x20key')+'</div>';_0x395fec['detail']&&(_0x17c5f0+='<div\x20class=\x22test-result-detail\x22>'+Utils['escapeHtml'](_0x395fec['detail'])+'</div>'),_0x493c73['innerHTML']=_0x17c5f0,_0x493c73['className']='connection-test-result\x20error',document['getElementById']('install-key-confirm-btn')['disabled']=![];}}function getRequiredSkillsForConnection(_0x138104){const _0x4f3899={'sqlserver':['sql'],'ibmi':{'sql':['sql'],'build':['codermake'],'interactive':['ibmi-interactive-session'],'ssh':['ibmi-clcmd'],'sync':[]},'ssh':[]};if(_0x138104['type']==='sqlserver')return[..._0x4f3899['sqlserver']];if(_0x138104['type']==='ibmi'){const _0x246c54=[];for(const _0xe21c89 of _0x138104['config']?.['features']||[]){const _0x4267af=_0x4f3899['ibmi'][_0xe21c89];if(_0x4267af)for(const _0x281fe4 of _0x4267af){if(!_0x246c54['includes'](_0x281fe4))_0x246c54['push'](_0x281fe4);}}return _0x246c54;}return[];}function getConnectionRequiredSkills(){const _0x5b4361={'sqlserver':['sql'],'ibmi':{'sql':['sql'],'build':['codermake'],'interactive':['ibmi-interactive-session'],'ssh':['ibmi-clcmd'],'sync':[]},'ssh':[]},_0x46a38b=new Set();for(const _0x5a5cf4 of state['selectedEnvData']?.['external_connections']||[]){if(_0x5a5cf4['type']==='sqlserver')_0x5b4361['sqlserver']['forEach'](_0x49dd12=>_0x46a38b['add'](_0x49dd12));else{if(_0x5a5cf4['type']==='ibmi')for(const _0x4cbb68 of _0x5a5cf4['config']?.['features']||[]){const _0x269a58=_0x5b4361['ibmi'][_0x4cbb68];if(_0x269a58)_0x269a58['forEach'](_0xaf40cb=>_0x46a38b['add'](_0xaf40cb));}}}return _0x46a38b;}async function autoImportConnectionSkills(_0xf5d966){const _0x50c937=state['selectedEnvData']?.['skills']||[];for(const _0x5ed1ca of _0xf5d966){if(_0x50c937['includes'](_0x5ed1ca))continue;try{await API['post']('/external-skills/import/catalog',{'skillId':_0x5ed1ca});}catch(_0x2270d1){console['debug']('Skill\x20import\x20(may\x20already\x20exist):',_0x5ed1ca,_0x2270d1['message']);}!_0x50c937['includes'](_0x5ed1ca)&&_0x50c937['push'](_0x5ed1ca);}state['selectedEnvData']&&(state['selectedEnvData']['skills']=_0x50c937,markAsModified(),renderEnvironmentSkills());}function debounce(_0x4c6545,_0x2a362e){let _0x5506dc;return function _0x1f2071(..._0x186fdd){const _0x421fd1=()=>{clearTimeout(_0x5506dc),_0x4c6545(..._0x186fdd);};clearTimeout(_0x5506dc),_0x5506dc=setTimeout(_0x421fd1,_0x2a362e);};}window['markAsModified']=function(){state['hasUnsavedChanges']=!![],updateButtonStates();};function updateButtonStates(){const _0x15c2e8=document['getElementById']('save-btn'),_0x4612b1=document['getElementById']('repo-commit-btn'),_0x121853=document['getElementById']('repo-discard-btn');_0x15c2e8&&(_0x15c2e8['disabled']=!state['hasUnsavedChanges']);_0x4612b1&&(_0x4612b1['disabled']=state['modifiedFiles']['size']===0x0);if(_0x121853){const _0x3e987f=state['changedFiles']&&state['changedFiles']['length']>0x0;_0x121853['disabled']=!_0x3e987f;}}async function saveChanges(){if(!state['hasUnsavedChanges'])return;if(state['currentRepo']!==null&&document['getElementById']('edit-repo-provider')){const _0x356351=validateEditRepoForm();if(_0x356351['length']>0x0){Utils['showError'](_0x356351[0x0]);return;}}try{const _0x501f5f=document['getElementById']('save-btn');_0x501f5f['disabled']=!![],_0x501f5f['innerHTML']='<span>⏳</span>\x20Saving...';const _0x4ff523=await saveCurrentState(),_0x2ad75c=[];_0x4ff523['modifiedEnvironmentJson']&&_0x2ad75c['push']('environment.json');_0x4ff523['modifiedTests']&&_0x2ad75c['push']('tests.json');const _0x12ce8e=_0x59ded3=>{return monacoEditors['has'](_0x59ded3)||window['MarkdownFileEditor']&&window['MarkdownFileEditor']['editors']['has'](_0x59ded3);};if(state['currentTab']==='agents')_0x2ad75c['push']('AGENTS.md');else{if(state['currentTab']==='files')_0x2ad75c['push'](state['currentFile']);else{if(state['currentTab']==='build')monacoEditors['has']('script-editor')&&_0x2ad75c['push'](currentScript);else state['currentTab']==='overview'&&(_0x12ce8e('readme-editor')&&_0x2ad75c['push']('README.md'));}}_0x4ff523['modifiedDeployProfile']&&_0x2ad75c['push']('deployment-profiles/'+_0x4ff523['modifiedDeployProfile']+'.sh'),_0x2ad75c['forEach'](_0x4c3ba2=>state['modifiedFiles']['add'](_0x4c3ba2)),state['hasUnsavedChanges']=![],updateButtonStates(),await refreshRepositoryGitStatus(),Utils['showSuccess']('Changes\x20saved\x20to\x20files'),_0x501f5f['innerHTML']='<span>💾</span>\x20Save';}catch(_0x275df2){console['error']('Save\x20failed:',_0x275df2);const _0x3fbe1e=_0x275df2['message']&&(_0x275df2['message']['includes']('Invalid\x20JSON\x20in\x20Parameters\x20field')||_0x275df2['message']['includes']('Invalid\x20JSON\x20in\x20template\x20metadata'));!_0x3fbe1e&&Utils['showError']('Failed\x20to\x20save\x20changes');const _0x3f942f=document['getElementById']('save-btn');_0x3f942f['disabled']=![],_0x3f942f['innerHTML']='<span>💾</span>\x20Save';}}async function saveCurrentState(){const _0x542486={'description':document['getElementById']('env-description')['value'],'default_agent':defaultAgentSelect['selectedValue'],'image_name':document['getElementById']('env-image-name')['value'],'timezone':document['getElementById']('env-timezone')['value']||undefined,'screenRenderUrl':document['getElementById']('env-screen-render-url')['disabled']?state['selectedEnvData']['screenRenderUrl']||undefined:document['getElementById']('env-screen-render-url')['value']||undefined,'skills':state['selectedEnvData']['skills']||[]},_0x347329=document['getElementById']('rebuild-schedule-enabled-build-tab')['checked'];_0x347329?_0x542486['rebuild_schedule']={'enabled':!![],'interval_hours':parseInt(document['getElementById']('rebuild-interval-build-tab')['value'],0xa)}:_0x542486['rebuild_schedule']={'enabled':![]};monacoEditors['has']('script-editor')&¤tScript&&(currentScript==='pre-clone'||currentScript==='post-clone')&&saveCurrentScriptToState();const _0x78b038=state['selectedEnvData']['docker_config'],_0x4cdcf8=_0x78b038&&(Object['prototype']['hasOwnProperty']['call'](_0x78b038,'pre_clone_instructions')||Object['prototype']['hasOwnProperty']['call'](_0x78b038,'post_clone_instructions'));_0x4cdcf8&&(_0x542486['docker_config']={'pre_clone_instructions':_0x78b038['pre_clone_instructions']||'','post_clone_instructions':_0x78b038['post_clone_instructions']||''});const _0x22f6ca=[...state['selectedEnvData']['repos']||[]];state['selectedEnvData']['repos']=_0x22f6ca,persistCurrentRepoFormChanges(),_0x542486['repos']=_0x22f6ca;const _0x478990={...state['selectedEnvData']['tests']};if(state['currentTest']!==null&&document['getElementById']('test-description')){const _0x1cc301=document['getElementById']('test-command')['value']['trim']();let _0x385729;const _0x1050e0=_0x1cc301['split']('\x0a')['filter'](_0x206bb1=>_0x206bb1['trim']());if(_0x1050e0['length']>0x1)_0x385729={'commands':_0x1050e0};else _0x1050e0['length']===0x1?_0x385729={'command':_0x1050e0[0x0]}:_0x385729={'command':''};const _0x33583a=state['selectedEnvData']['tests'][state['currentTest']],_0x798958=_0x33583a?.['parameters']&&Object['keys'](_0x33583a['parameters'])['length']>0x0?{'parameters':_0x33583a['parameters']}:{};_0x478990[state['currentTest']]={..._0x478990[state['currentTest']],'description':document['getElementById']('test-description')['value'],..._0x385729,..._0x798958};}_0x542486['tests']=_0x478990;const _0x8dc289=document['getElementById']('server-name');if(_0x8dc289){const _0x2d0f0f=document['getElementById']('server-enabled'),_0x2fd77f=document['getElementById']('server-proxy'),_0x5c7090={...state['selectedEnvData']['application_server'],'enabled':_0x2d0f0f['disabled']?!![]:_0x2d0f0f['checked'],'name':_0x8dc289['disabled']?state['selectedEnvData']['application_server']?.['name']||'':_0x8dc289['value']},_0x16a39a=monacoEditors['get']('server-command-editor'),_0xec4cd9=_0x16a39a?_0x16a39a['getValue']()['trim']():'';_0xec4cd9?_0x5c7090['start_command']=_0xec4cd9:delete _0x5c7090['start_command'];const _0x1ea578=_0x2fd77f['disabled']?(state['selectedEnvData']['application_server']?.['proxy']||'')['trim']():_0x2fd77f['value']['trim']();_0x1ea578?_0x5c7090['proxy']=_0x1ea578:delete _0x5c7090['proxy'];const _0x56a00b=document['getElementById']('server-qa-url')['value']['trim']();_0x56a00b?_0x5c7090['qa_url']=_0x56a00b:delete _0x5c7090['qa_url'];const _0x56c398=collectPortQaUrlsFromForm();Object['keys'](_0x56c398)['length']>0x0?_0x5c7090['port_qa_urls']=_0x56c398:delete _0x5c7090['port_qa_urls'];const _0x4280bf=document['getElementById']('server-auth-user-property')['value']['trim'](),_0x506b24=document['getElementById']('server-auth-password-property')['value']['trim']();if(_0x4280bf||_0x506b24){_0x5c7090['basic_auth']={};if(_0x4280bf)_0x5c7090['basic_auth']['user_property']=_0x4280bf;if(_0x506b24)_0x5c7090['basic_auth']['password_property']=_0x506b24;}else delete _0x5c7090['basic_auth'];const _0x367627=document['getElementById']('ports-list');if(_0x367627){const _0x281788=_0x367627['querySelectorAll']('.config-item'),_0x4a5b7d=[];_0x281788['forEach'](_0x53dc9f=>{const _0x2903e6=_0x53dc9f['querySelectorAll']('input');if(_0x2903e6['length']>=0x2){const _0x3ec022=_0x2903e6[0x0]['value']['trim'](),_0x280320=_0x2903e6[0x1]['value']['trim']();(_0x3ec022||_0x280320)&&_0x4a5b7d['push']({'internal':_0x3ec022?parseInt(_0x3ec022,0xa):'','name':_0x280320});}}),_0x4a5b7d['length']>0x0?_0x5c7090['ports']=_0x4a5b7d:delete _0x5c7090['ports'];}const _0x11a1f7=collectURLsFromForm(![]);_0x11a1f7['length']>0x0?_0x5c7090['launch_urls']=_0x11a1f7:delete _0x5c7090['launch_urls'];const _0x9766ee=document['getElementById']('proxy-headers-list');if(_0x9766ee){const _0x41a6a3=_0x9766ee['querySelectorAll']('.config-item'),_0x579556={};_0x41a6a3['forEach'](_0x1a06ef=>{const _0x3424a3=_0x1a06ef['querySelectorAll']('input');if(_0x3424a3['length']>=0x2){const _0x5bcde4=_0x3424a3[0x0]['value']['trim'](),_0x2ed42c=_0x3424a3[0x1]['value']['trim']();_0x5bcde4&&_0x2ed42c&&(_0x579556[_0x5bcde4]=_0x2ed42c);}}),Object['keys'](_0x579556)['length']>0x0?_0x5c7090['proxy_headers']=_0x579556:delete _0x5c7090['proxy_headers'];}const _0x5d37e3=_0x5c7090['name']||_0x5c7090['start_command']||_0x5c7090['proxy']||_0x5c7090['qa_url']||_0x5c7090['basic_auth']||_0x5c7090['ports']?.['length']>0x0||_0x5c7090['launch_urls']?.['length']>0x0||Object['keys'](_0x5c7090['proxy_headers']||{})['length']>0x0;_0x5d37e3?_0x542486['application_server']=_0x5c7090:_0x542486['application_server']=null;}_0x542486['volume_mounts']=state['selectedEnvData']['volume_mounts']||[];state['selectedEnvData']['external_connections']!==undefined&&(_0x542486['external_connections']=state['selectedEnvData']['external_connections']);const _0x3b5e3c=_0x651f6f=>{return monacoEditors['has'](_0x651f6f)||window['MarkdownFileEditor']&&window['MarkdownFileEditor']['editors']['has'](_0x651f6f);};if(_0x3b5e3c('agents-editor')){const _0x5df963=getMonacoValue('agents-editor');await API['post']('/environments/'+state['selectedEnv']+'/files/AGENTS.md',{'content':_0x5df963}),state['selectedEnvData']['agentsContent']=_0x5df963;}if(_0x3b5e3c('readme-editor')){const _0x5097ef=getMonacoValue('readme-editor');await API['post']('/environments/'+state['selectedEnv']+'/files/README.md',{'content':_0x5097ef}),state['selectedEnvData']['readmeContent']=_0x5097ef;}if(_0x3b5e3c('file-editor')&&state['currentFile']){const _0x434c7f=getMonacoValue('file-editor');await API['post']('/environments/'+state['selectedEnv']+'/files/'+state['currentFile'],{'content':_0x434c7f}),!state['selectedEnvData']['files']&&(state['selectedEnvData']['files']={}),state['selectedEnvData']['files'][state['currentFile']]=_0x434c7f;}if(monacoEditors['has']('script-editor')&¤tScript){saveCurrentScriptToState();if(currentScript==='pre-clone'||currentScript==='post-clone'){}else{const _0x273814=getMonacoValue('script-editor');await API['post']('/environments/'+state['selectedEnv']+'/files/'+currentScript,{'content':_0x273814}),!state['selectedEnvData']['files']&&(state['selectedEnvData']['files']={}),state['selectedEnvData']['files'][currentScript]=_0x273814;}}const _0x5ad4ee=(state['selectedEnvData']['templates']||[])['map'](_0x4df0fc=>_0x4df0fc['filename']),_0x4cc7c5=state['originalTemplates']||[],_0x2a05f8=_0x5ad4ee['filter'](_0xa0387e=>!_0x4cc7c5['includes'](_0xa0387e)),_0x4e363e=_0x4cc7c5['filter'](_0x507d1b=>!_0x5ad4ee['includes'](_0x507d1b));for(const _0x245599 of _0x2a05f8){const _0x11515f=state['selectedEnvData']['templates']['find'](_0x359453=>_0x359453['filename']===_0x245599);if(_0x11515f){await API['post']('/environments/'+state['selectedEnv']+'/files/task-templates/'+_0x245599,{'content':_0x11515f['content']||''});const _0x122a47=_0x245599['replace'](/\.md$/,'.json'),_0x12916a={'title':_0x11515f['title'],'description':_0x11515f['description'],'parameters':_0x11515f['parameters']||[]};await API['post']('/environments/'+state['selectedEnv']+'/files/task-templates/'+_0x122a47,{'content':JSON['stringify'](_0x12916a,null,0x2)});}}for(const _0x46bc82 of _0x4e363e){const _0x4e594b=_0x46bc82['replace'](/\.md$/,'.json');await API['delete']('/environments/'+state['selectedEnv']+'/files/task-templates/'+_0x46bc82),await API['delete']('/environments/'+state['selectedEnv']+'/files/task-templates/'+_0x4e594b);}if(state['currentTemplate']!==null&&state['currentTemplateData']){const _0x17d9cc=state['selectedEnvData']['templates'][state['currentTemplate']],_0x3bb69e=_0x3b5e3c('template-md-editor')?getMonacoValue('template-md-editor'):state['currentTemplateData']['content']||'',_0x4d2c09=document['getElementById']('template-edit-title'),_0x1e53a4=document['getElementById']('template-edit-description'),_0x5b643a={'title':_0x4d2c09?_0x4d2c09['value']:state['currentTemplateData']['title'],'description':_0x1e53a4?_0x1e53a4['value']:state['currentTemplateData']['description'],'parameters':state['currentTemplateData']['parameters']||{}};await API['post']('/environments/'+state['selectedEnv']+'/files/task-templates/'+_0x17d9cc['filename'],{'content':_0x3bb69e});const _0x5f5bb9=_0x17d9cc['filename']['replace'](/\.md$/,'.json'),_0x77563=_0x5b643a['title']||_0x5b643a['description']||_0x5b643a['parameters']&&Object['keys'](_0x5b643a['parameters'])['length']>0x0;_0x77563&&await API['post']('/environments/'+state['selectedEnv']+'/files/task-templates/'+_0x5f5bb9,{'content':JSON['stringify'](_0x5b643a,null,0x2)}),state['selectedEnvData']['templates'][state['currentTemplate']]={..._0x17d9cc,'content':_0x3bb69e,..._0x5b643a};}state['originalTemplates']=_0x5ad4ee;let _0x35ee65=null;if(state['profileHasUnsavedChanges']&&state['currentDeployProfile']&&state['currentDeployProfileData']){const _0x201811=state['currentDeployProfile'],_0x3dcd4c=document['getElementById']('profile-description')?.['value']['trim']()||'',_0x2aae65=state['profileScriptEditor']?state['profileScriptEditor']['getValue']():'',_0x148013=state['currentDeployProfileData']['env_vars']||[],_0x35917e=state['currentDeployProfileData']['secrets']||[],_0x367609=state['currentDeployProfileData']['parameters']||{};await API['put']('/environments/'+state['selectedEnv']+'/deployment-profiles/'+_0x201811,{'description':_0x3dcd4c,'scriptContent':_0x2aae65,'env_vars':_0x148013,'secrets':_0x35917e,'parameters':_0x367609}),_0x35ee65=_0x201811,state['profileHasUnsavedChanges']=![];}return await API['put']('/environments/'+state['selectedEnv'],_0x542486),Object['assign'](state['selectedEnvData'],_0x542486),{'modifiedEnvironmentJson':!![],'modifiedTests':_0x542486['tests']!==undefined,'modifiedDeployProfile':_0x35ee65};}async function createNewEnvironment(){document['getElementById']('new-env-name')['value']='',document['getElementById']('new-env-description')['value']='',document['getElementById']('new-env-repo-url')['value']='',document['getElementById']('new-env-image')['value']='',document['getElementById']('new-env-error')['hidden']=!![],document['querySelector']('input[name=\x22new-env-repo-mode\x22][value=\x22none\x22]')['checked']=!![],document['getElementById']('new-env-repo-url-row')['hidden']=!![],document['getElementById']('new-env-repo-provider-selection')['hidden']=!![];const _0x22a33c=document['getElementById']('new-env-repo-source-provider');newEnvRepoAutocomplete&&(newEnvRepoAutocomplete['reset'](),newEnvRepoAutocomplete['disable']());const _0x316443=document['getElementById']('new-env-repo-credential-mode');_0x316443&&(_0x316443['value']='app');try{const _0x46e3bb=await API['get']('/settings/git-providers');_0x22a33c['innerHTML']='<option\x20value=\x22\x22>--\x20Select\x20a\x20provider\x20--</option>';for(const _0x2a7c7b of _0x46e3bb['providers']||[]){_0x22a33c['innerHTML']+='<option\x20value=\x22'+Utils['escapeHtml'](_0x2a7c7b['name'])+'\x22>'+Utils['escapeHtml'](_0x2a7c7b['name'])+'</option>';}}catch(_0x3032df){console['error']('Failed\x20to\x20load\x20git\x20providers:',_0x3032df),_0x22a33c['innerHTML']='<option\x20value=\x22\x22>--\x20No\x20providers\x20available\x20--</option>';}if(!newEnvAgentSelect){const _0x379742=document['getElementById']('new-env-agent-wrapper');_0x379742['innerHTML']='';const _0x43500d=document['createElement']('select');_0x43500d['id']='new-env-agent',_0x43500d['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22\x20disabled\x20selected\x20hidden>Select\x20default\x20agent...</option>\x0a\x20\x20\x20\x20\x20\x20<option\x20value=\x22claude\x22>Claude</option>\x0a\x20\x20\x20\x20\x20\x20<option\x20value=\x22codex\x22>Codex</option>\x0a\x20\x20\x20\x20\x20\x20<option\x20value=\x22gemini\x22>Gemini</option>\x0a\x20\x20\x20\x20',_0x379742['appendChild'](_0x43500d),newEnvAgentSelect=new CustomSelect(_0x43500d,{'searchable':![]});}else newEnvAgentSelect['select']('');document['getElementById']('new-env-modal')['hidden']=![],setTimeout(()=>{document['getElementById']('new-env-name')['focus']();},0x64);}function closeNewEnvModal(){document['getElementById']('new-env-modal')['hidden']=!![];}window['onNewEnvRepoModeChange']=function(_0x3a3730){const _0x56c843=_0x3a3730['value'],_0x33be1f=document['getElementById']('new-env-repo-url-row'),_0x64e884=document['getElementById']('new-env-repo-provider-selection'),_0x45315a=document['getElementById']('new-env-repo-url'),_0x497bcc=document['getElementById']('new-env-repo-source-provider');if(_0x56c843==='none')_0x33be1f['hidden']=!![],_0x64e884['hidden']=!![],_0x45315a['value']='',newEnvRepoAutocomplete&&(newEnvRepoAutocomplete['reset'](),newEnvRepoAutocomplete['disable']());else{if(_0x56c843==='manual')_0x33be1f['hidden']=![],_0x64e884['hidden']=!![],_0x45315a['value']='',newEnvRepoAutocomplete&&(newEnvRepoAutocomplete['reset'](),newEnvRepoAutocomplete['disable']());else _0x56c843==='provider'&&(_0x33be1f['hidden']=!![],_0x64e884['hidden']=![],_0x497bcc['value']='',initNewEnvRepoAutocomplete());}},window['onNewEnvRepoProviderChange']=async function(){const _0x45bd14=document['getElementById']('new-env-repo-source-provider')['value'];if(!_0x45bd14){newEnvRepoAutocomplete&&(newEnvRepoAutocomplete['reset'](),newEnvRepoAutocomplete['disable']());return;}newEnvRepoAutocomplete&&(newEnvRepoAutocomplete['reset'](),newEnvRepoAutocomplete['enable'](),newEnvRepoAutocomplete['preloadData']());};function initNewEnvRepoAutocomplete(){const _0x48265f=document['getElementById']('new-env-repo-autocomplete-container');if(!_0x48265f)return;newEnvRepoAutocomplete&&newEnvRepoAutocomplete['destroy'](),newEnvRepoAutocomplete=new AutocompleteSelect(_0x48265f,{'placeholder':'Search\x20for\x20a\x20repository','maxItems':0x64,'emptyMessage':'No\x20repositories\x20found','loadingMessage':'Loading\x20repositories...','preload':![],'searchMode':'server','loadItems':async _0x3e9fe4=>{const _0x72f527=document['getElementById']('new-env-repo-source-provider')['value'];if(!_0x72f527)return[];try{let _0x476d08='/settings/git-providers/'+encodeURIComponent(_0x72f527)+'/repositories?limit=100';_0x3e9fe4&&_0x3e9fe4['trim']()&&(_0x476d08+='&search='+encodeURIComponent(_0x3e9fe4['trim']()));const _0x249b99=await API['get'](_0x476d08);return _0x249b99['repositories']||[];}catch(_0xb27d7b){console['error']('Failed\x20to\x20load\x20repositories:',_0xb27d7b);throw _0xb27d7b;}},'renderItem':_0x2d72b8=>{const _0x254c2f=_0x2d72b8['private']===!![];let _0x187fdf=_0x2d72b8['description']||'no\x20description';return _0x2d72b8['descriptionSource']==='project'&&_0x2d72b8['description']&&(_0x187fdf='Project:\x20'+_0x2d72b8['description']),{'primary':_0x2d72b8['full_name']||_0x2d72b8['name'],'secondary':_0x187fdf,'icon':_0x254c2f?REPO_ICON_PRIVATE:REPO_ICON_PUBLIC,'iconClass':_0x254c2f?'icon-private':'icon-public'};},'sortItems':_0x4cc175=>{return _0x4cc175['sort']((_0x54a5b4,_0x5cb802)=>{const _0x39273f=(_0x54a5b4['full_name']||_0x54a5b4['name']||'')['toLowerCase'](),_0x1420c3=(_0x5cb802['full_name']||_0x5cb802['name']||'')['toLowerCase']();return _0x39273f['localeCompare'](_0x1420c3);});},'getItemValue':_0x3a3f16=>_0x3a3f16['clone_url']||_0x3a3f16['url'],'onSelect':_0x38b927=>{}}),newEnvRepoAutocomplete['disable']();}function showNewEnvError(_0x16a8cd){const _0x103a53=document['getElementById']('new-env-error');_0x103a53['textContent']=_0x16a8cd,_0x103a53['hidden']=![];}function hideNewEnvError(){document['getElementById']('new-env-error')['hidden']=!![];}async function confirmCreateEnvironment(){const _0x2a51f1=document['getElementById']('new-env-name'),_0x170cb4=document['getElementById']('new-env-image'),_0x1cac3c=document['getElementById']('new-env-error'),_0x3bee9e=_0x2a51f1['value']['trim'](),_0x1d01f1=document['getElementById']('new-env-description')['value']['trim'](),_0x7e87b5=_0x170cb4['value']['trim'](),_0x60caf3=newEnvAgentSelect['selectedValue'],_0x3bcdaa=document['querySelector']('input[name=\x22new-env-repo-mode\x22]:checked')['value'],_0x5235f0=document['getElementById']('new-env-repo-url')['value']['trim'](),_0x45ce6f=newEnvRepoAutocomplete?newEnvRepoAutocomplete['getSelectedItem']():null,_0xe2b3d6=_0x45ce6f?_0x45ce6f['clone_url']||_0x45ce6f['url']:'',_0x197996=document['getElementById']('new-env-repo-source-provider')['value'];_0x2a51f1['classList']['remove']('input-error'),_0x170cb4['classList']['remove']('input-error'),_0x1cac3c['hidden']=!![];let _0x332e58=![],_0x96e999='';if(!_0x3bee9e)_0x2a51f1['classList']['add']('input-error'),_0x332e58=!![],_0x96e999='Environment\x20name\x20is\x20required';else!/^[a-z0-9-]+$/['test'](_0x3bee9e)&&(_0x2a51f1['classList']['add']('input-error'),_0x332e58=!![],_0x96e999='Environment\x20name\x20must\x20contain\x20only\x20lowercase\x20letters,\x20numbers,\x20and\x20hyphens');if(!_0x7e87b5){_0x170cb4['classList']['add']('input-error'),_0x332e58=!![];if(!_0x96e999)_0x96e999='Docker\x20image\x20is\x20required';}if(!_0x60caf3){_0x332e58=!![];if(!_0x96e999)_0x96e999='Default\x20agent\x20is\x20required';}if(_0x3bcdaa==='provider'){if(!_0x197996){_0x332e58=!![];if(!_0x96e999)_0x96e999='Please\x20select\x20a\x20Git\x20provider';}else{if(!_0x45ce6f){_0x332e58=!![];if(!_0x96e999)_0x96e999='Please\x20select\x20a\x20repository';}}}if(_0x332e58){_0x1cac3c['textContent']=_0x96e999,_0x1cac3c['hidden']=![];return;}const _0x19d113=document['getElementById']('new-env-create-btn');_0x19d113['disabled']=!![],_0x19d113['textContent']='Creating...';try{const _0x82fc86={'name':_0x3bee9e,'image_name':_0x7e87b5,'default_agent':_0x60caf3};_0x1d01f1&&(_0x82fc86['description']=_0x1d01f1);if(_0x3bcdaa==='manual'&&_0x5235f0)_0x82fc86['repo_url']=_0x5235f0;else{if(_0x3bcdaa==='provider'&&_0xe2b3d6){_0x82fc86['repo_url']=_0xe2b3d6;const _0x448926=document['getElementById']('new-env-repo-credential-mode')?.['value']||'app';_0x82fc86['repo_provider']={'provider':_0x197996,'credential_mode':_0x448926};}}await API['post']('/environments',_0x82fc86),Utils['showSuccess']('Environment\x20\x22'+_0x3bee9e+'\x22\x20created\x20successfully'),closeNewEnvModal(),await loadEnvironments(),await refreshRepositoryGitStatus(),state['environments']['find'](_0x18a6a2=>_0x18a6a2['name']===_0x3bee9e)&&await window['selectEnvironment'](_0x3bee9e);}catch(_0x165123){console['error']('Failed\x20to\x20create\x20environment:',_0x165123),showNewEnvError(_0x165123['message']||'Unknown\x20error');}finally{_0x19d113['disabled']=![],_0x19d113['textContent']='Create\x20Environment';}}async function deleteEnvironment(){const _0x4fff71=state['selectedEnv'];if(!_0x4fff71){Utils['showError']('No\x20environment\x20selected');return;}document['getElementById']('delete-env-name-display')['textContent']=_0x4fff71,document['getElementById']('delete-env-modal')['hidden']=![];}function closeDeleteEnvModal(){document['getElementById']('delete-env-modal')['hidden']=!![];}async function confirmDeleteEnvironment(){const _0x52077e=state['selectedEnv'];if(!_0x52077e){closeDeleteEnvModal();return;}try{await API['delete']('/environments/'+_0x52077e),Utils['showSuccess']('Environment\x20\x22'+_0x52077e+'\x22\x20deleted\x20successfully'),closeDeleteEnvModal(),state['selectedEnv']=null,state['selectedEnvData']=null,sessionStorage['removeItem'](SESSION_KEY_ENV),await loadEnvironments(),await refreshRepositoryGitStatus(),state['environments']['length']===0x0&&(document['getElementById']('env-details')['hidden']=!![],document['getElementById']('env-empty-state')['hidden']=![]);}catch(_0x306a40){console['error']('Failed\x20to\x20delete\x20environment:',_0x306a40),Utils['showError']('Failed\x20to\x20delete\x20environment:\x20'+(_0x306a40['message']||'Unknown\x20error')),closeDeleteEnvModal();}}async function cloneEnvironment(){Utils['showToast']('Clone\x20environment\x20coming\x20soon','info');}function openRenameEnvModal(){const _0x3fc864=state['selectedEnv'];if(!_0x3fc864){Utils['showError']('No\x20environment\x20selected');return;}document['getElementById']('rename-env-error')['hidden']=!![],document['getElementById']('rename-env-current')['value']=_0x3fc864,document['getElementById']('rename-env-new')['value']='',document['getElementById']('rename-env-modal')['hidden']=![],setTimeout(()=>{document['getElementById']('rename-env-new')['focus']();},0x64);}function closeRenameEnvModal(){document['getElementById']('rename-env-modal')['hidden']=!![],document['getElementById']('rename-env-error')['hidden']=!![];}async function confirmRenameEnvironment(){const _0x52bab8=state['selectedEnv'],_0x176ff0=document['getElementById']('rename-env-new')['value']['trim'](),_0x3bc045=document['getElementById']('rename-env-error');if(!_0x176ff0){_0x3bc045['textContent']='Please\x20enter\x20a\x20new\x20name',_0x3bc045['hidden']=![];return;}if(!/^[a-z0-9-]+$/['test'](_0x176ff0)){_0x3bc045['textContent']='Name\x20must\x20contain\x20only\x20lowercase\x20letters,\x20numbers,\x20and\x20hyphens',_0x3bc045['hidden']=![];return;}if(_0x176ff0===_0x52bab8){_0x3bc045['textContent']='New\x20name\x20must\x20be\x20different\x20from\x20current\x20name',_0x3bc045['hidden']=![];return;}if(state['environments']['some'](_0x298a42=>_0x298a42['name']===_0x176ff0)){_0x3bc045['textContent']='An\x20environment\x20with\x20this\x20name\x20already\x20exists',_0x3bc045['hidden']=![];return;}const _0x343254=document['getElementById']('rename-env-confirm-btn'),_0x22781b=_0x343254['textContent'];try{_0x343254['disabled']=!![],_0x343254['textContent']='Renaming...',await API['post']('/environments/'+_0x52bab8+'/rename',{'newName':_0x176ff0}),Utils['showSuccess']('Environment\x20renamed\x20to\x20\x22'+_0x176ff0+'\x22'),closeRenameEnvModal(),state['selectedEnv']=_0x176ff0,await loadEnvironments(),await selectEnvironment(_0x176ff0),await refreshRepositoryGitStatus();}catch(_0x1f5d3c){console['error']('Failed\x20to\x20rename\x20environment:',_0x1f5d3c),_0x3bc045['textContent']=_0x1f5d3c['message']||'Failed\x20to\x20rename\x20environment',_0x3bc045['hidden']=![];}finally{_0x343254['disabled']=![],_0x343254['textContent']=_0x22781b;}}async function loadMonaco(){if(monacoLoaded)return;const _0x4c26f7=document['querySelector']('script[src*=\x22monaco-editor\x22][src*=\x22loader.min.js\x22]');if(_0x4c26f7){if(typeof monaco!=='undefined'){monacoLoaded=!![],monaco['editor']['setTheme'](getMonacoTheme());return;}return new Promise((_0x4c4c0b,_0x47c1fa)=>{const _0x549916=setInterval(()=>{typeof monaco!=='undefined'&&(clearInterval(_0x549916),monacoLoaded=!![],monaco['editor']['setTheme'](getMonacoTheme()),_0x4c4c0b());},0x64);setTimeout(()=>{clearInterval(_0x549916),_0x47c1fa(new Error('Monaco\x20loading\x20timeout'));},0x2710);});}return new Promise((_0x473f24,_0x569fe5)=>{const _0x4fdf9c=document['createElement']('script');_0x4fdf9c['src']='https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.45.0/min/vs/loader.min.js',_0x4fdf9c['onload']=()=>{require['config']({'paths':{'vs':'https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.45.0/min/vs'}}),require(['vs/editor/editor.main'],()=>{monacoLoaded=!![],monaco['editor']['setTheme'](getMonacoTheme()),_0x473f24();});},_0x4fdf9c['onerror']=()=>_0x569fe5(new Error('Failed\x20to\x20load\x20Monaco\x20Editor')),document['head']['appendChild'](_0x4fdf9c);});}async function createMonacoEditor(_0x55a50e,_0x429b32,_0x5b7cd0,_0x436fb4=![]){!monacoLoaded&&await loadMonaco();const _0x13aac3=document['getElementById'](_0x55a50e);if(!_0x13aac3)return console['error']('Monaco\x20container\x20not\x20found:',_0x55a50e),null;const _0x2bda81=monacoEditors['get'](_0x55a50e);_0x2bda81&&_0x2bda81['dispose']();const _0x2cca71=monaco['editor']['create'](_0x13aac3,{'value':_0x429b32||'','language':_0x5b7cd0,'theme':getMonacoTheme(),'readOnly':_0x436fb4,'minimap':{'enabled':![]},'fontSize':0xd,'lineNumbers':'on','scrollBeyondLastLine':![],'automaticLayout':!![],'wordWrap':'on','tabSize':0x2}),_0x3f3564=_0x2cca71['getModel']();return _0x3f3564&&_0x3f3564['setEOL'](monaco['editor']['EndOfLineSequence']['LF']),monacoEditors['set'](_0x55a50e,_0x2cca71),_0x2cca71;}function getLanguageFromFilename(_0x64851b){const _0x50411c=_0x64851b['split']('.')['pop']()['toLowerCase'](),_0x5675a5={'js':'javascript','ts':'typescript','json':'json','md':'markdown','sh':'shell','dockerfile':'dockerfile','py':'python','java':'java','xml':'xml','html':'html','css':'css','yml':'yaml','yaml':'yaml'};if(_0x64851b==='Dockerfile')return'dockerfile';return _0x5675a5[_0x50411c]||'plaintext';}function getMonacoValue(_0x36a801){if(window['MarkdownFileEditor']&&window['MarkdownFileEditor']['editors']['has'](_0x36a801)){const _0x44168d=window['MarkdownFileEditor']['editors']['get'](_0x36a801);return _0x44168d?_0x44168d['getValue']():null;}const _0x574c59=monacoEditors['get'](_0x36a801);if(!_0x574c59)return null;return _0x574c59['getValue'](monaco['editor']['EndOfLinePreference']['LF']);}let buildPollTimer=null,buildElapsedTimer=null,currentBuildId=null,currentBuildEnv=null,buildOutputEventSource=null,buildOutputExpanded=!![];function openBaseImageRequiredModal(){document['getElementById']('base-image-required-modal')['hidden']=![];}function closeBaseImageRequiredModal(){document['getElementById']('base-image-required-modal')['hidden']=!![];}function openBaseImageBuildFromRequiredModal(){closeBaseImageRequiredModal(),openBaseImageBuildModal();}async function ensureBaseImageAvailableForBuild(){try{const _0x1ec3ce=await API['get']('/build/base/availability');if(_0x1ec3ce['available'])return!![];return openBaseImageRequiredModal(),![];}catch(_0x48320c){return console['error']('Failed\x20to\x20check\x20base\x20image\x20availability:',_0x48320c),Utils['showError'](_0x48320c['message']||'Failed\x20to\x20verify\x20base\x20image\x20availability'),![];}}window['showBuildConfirmation']=async function(){if(!state['selectedEnv']){Utils['showError']('No\x20environment\x20selected');return;}const _0x29be67=await ensureBaseImageAvailableForBuild();if(!_0x29be67)return;document['getElementById']('build-confirm-env-name')['textContent']=state['selectedEnv'],document['getElementById']('build-confirm-modal')['hidden']=![];};function closeBuildConfirmModal(){document['getElementById']('build-confirm-modal')['hidden']=!![];}async function confirmStartBuild(){closeBuildConfirmModal(),await startManualBuild();}async function startManualBuild(){if(!state['selectedEnv']){Utils['showError']('No\x20environment\x20selected');return;}const _0x488414=state['selectedEnv'],_0x2f76d7=document['getElementById']('build-now-btn'),_0x389f10=document['getElementById']('build-status-message');try{_0x2f76d7&&(_0x2f76d7['disabled']=!![],_0x2f76d7['innerHTML']='<span>⏳</span>\x20Building...');const _0x4babd3=await API['post']('/environments/'+_0x488414+'/build',{});currentBuildId=_0x4babd3['buildId'],currentBuildEnv=_0x488414,_0x389f10&&(_0x389f10['hidden']=![],_0x389f10['className']='alert\x20alert-info',_0x389f10['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22alert-icon\x22>⏳</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<strong>Build\x20in\x20progress...</strong>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20id=\x22build-elapsed-time\x22>Elapsed\x20time:\x200s</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'),showBuildOutputContainer(),clearBuildOutput(),scrollBuildOutputIntoView(),startBuildOutputStreaming(_0x4babd3['buildId'],_0x488414),startBuildPolling(_0x4babd3['buildId'],_0x488414);}catch(_0x2b36eb){console['error']('Failed\x20to\x20start\x20build:',_0x2b36eb),(_0x2b36eb['message']||'')['toLowerCase']()['includes']('base\x20image')?openBaseImageRequiredModal():Utils['showError'](_0x2b36eb['message']||'Failed\x20to\x20start\x20build'),_0x2f76d7&&(_0x2f76d7['disabled']=![],_0x2f76d7['innerHTML']='<span>📦</span>\x20Build\x20Now');}};function clearBuildTimers(){buildPollTimer&&(clearInterval(buildPollTimer),buildPollTimer=null),buildElapsedTimer&&(clearInterval(buildElapsedTimer),buildElapsedTimer=null);}function isActiveBuildContext(_0x2e5970,_0x5abdd4){return currentBuildId===_0x2e5970&¤tBuildEnv===_0x5abdd4;}function startBuildPolling(_0x239bea,_0xfb7422){const _0x3f0bf0=Date['now']();clearBuildTimers(),buildElapsedTimer=setInterval(()=>{if(!isActiveBuildContext(_0x239bea,_0xfb7422)){clearBuildTimers();return;}const _0x27dde0=Math['floor']((Date['now']()-_0x3f0bf0)/0x3e8),_0x5396ea=document['getElementById']('build-elapsed-time');if(_0x5396ea){const _0x1e6bc8=Math['floor'](_0x27dde0/0x3c),_0x3f31d9=_0x27dde0%0x3c;_0x5396ea['textContent']=_0x1e6bc8>0x0?'Elapsed\x20time:\x20'+_0x1e6bc8+'m\x20'+_0x3f31d9+'s':'Elapsed\x20time:\x20'+_0x3f31d9+'s';}},0x3e8),buildPollTimer=setInterval(async()=>{if(!isActiveBuildContext(_0x239bea,_0xfb7422)){clearBuildTimers();return;}try{const _0x189bf0=await API['get']('/environments/'+_0xfb7422+'/build-status/'+_0x239bea);if(!isActiveBuildContext(_0x239bea,_0xfb7422))return;if(_0x189bf0['status']==='success'||_0x189bf0['status']==='failed'){clearBuildTimers(),currentBuildId=null,currentBuildEnv=null,stopBuildOutputStreaming();const _0x3d4eab=document['getElementById']('build-now-btn');_0x3d4eab&&(_0x3d4eab['disabled']=![],_0x3d4eab['innerHTML']='<span>📦</span>\x20Build\x20Now');const _0x8fbe2b=document['getElementById']('build-status-message'),_0x264a81=formatDuration(_0x189bf0['duration']);_0x8fbe2b?(_0x189bf0['status']==='success'?(_0x8fbe2b['className']='alert\x20alert-success',_0x8fbe2b['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22alert-icon\x22>✅</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<strong>Build\x20completed\x20successfully!</strong>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p>Duration:\x20'+_0x264a81+'</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',Utils['showToast']('Build\x20completed\x20in\x20'+_0x264a81,'success')):(_0x8fbe2b['className']='alert\x20alert-error',_0x8fbe2b['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22alert-icon\x22>❌</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<strong>Build\x20failed</strong>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p>'+Utils['escapeHtml'](_0x189bf0['error']||'Unknown\x20error')+'</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20style=\x22margin-top:\x204px;\x20font-size:\x2013px;\x22>Duration:\x20'+_0x264a81+'</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',Utils['showToast']('Build\x20failed\x20-\x20check\x20output\x20for\x20details','error')),setTimeout(()=>{_0x8fbe2b&&state['selectedEnv']===_0xfb7422&&(_0x8fbe2b['hidden']=!![]);},0x2710)):_0x189bf0['status']==='success'?Utils['showToast']('Build\x20completed\x20in\x20'+_0x264a81,'success'):Utils['showToast']('Build\x20failed\x20-\x20check\x20output\x20for\x20details','error'),setTimeout(()=>{state['selectedEnv']===_0xfb7422&&loadBuildHistory();},0x3e8);}}catch(_0xf2c5c3){if(!isActiveBuildContext(_0x239bea,_0xfb7422))return;console['error']('Failed\x20to\x20poll\x20build\x20status:',_0xf2c5c3),clearBuildTimers(),currentBuildId=null,currentBuildEnv=null,stopBuildOutputStreaming();const _0xe36578=document['getElementById']('build-now-btn');_0xe36578&&(_0xe36578['disabled']=![],_0xe36578['innerHTML']='<span>📦</span>\x20Build\x20Now'),state['selectedEnv']===_0xfb7422&&loadBuildHistory();}},0xbb8);}function stopBuildPolling(){clearBuildTimers(),stopBuildOutputStreaming(),currentBuildId=null,currentBuildEnv=null;}function resetBuildPanelForEnvironmentChange(){stopBuildPolling(),clearBuildOutput(),hideBuildOutputContainer();const _0x284603=document['getElementById']('build-status-message');_0x284603&&(_0x284603['hidden']=!![],_0x284603['className']='',_0x284603['innerHTML']='');const _0x5963c9=document['getElementById']('build-now-btn');_0x5963c9&&(_0x5963c9['disabled']=![],_0x5963c9['innerHTML']='<span>📦</span>\x20Build\x20Now');}function showBuildOutputContainer(){const _0x1309fb=document['getElementById']('build-output-container');_0x1309fb&&(_0x1309fb['hidden']=![],buildOutputExpanded=!![],updateBuildOutputToggle());}function scrollBuildOutputIntoView(){const _0x483955=document['getElementById']('build-output-container');if(!_0x483955||_0x483955['hidden'])return;requestAnimationFrame(()=>{_0x483955['scrollIntoView']({'behavior':'smooth','block':'start'});});}function hideBuildOutputContainer(){const _0x12d5e8=document['getElementById']('build-output-container');_0x12d5e8&&(_0x12d5e8['hidden']=!![]);}function clearBuildOutput(){const _0x2b452c=document['getElementById']('build-output-text');_0x2b452c&&(_0x2b452c['textContent']='');}window['toggleBuildOutput']=function(){buildOutputExpanded=!buildOutputExpanded,updateBuildOutputToggle();};function updateBuildOutputToggle(){const _0x4a0ea0=document['getElementById']('build-output-content'),_0x9a0048=document['getElementById']('build-output-toggle-icon');_0x4a0ea0&&(_0x4a0ea0['style']['display']=buildOutputExpanded?'block':'none'),_0x9a0048&&(_0x9a0048['innerHTML']=buildOutputExpanded?'▼':'▶');}function appendToBuildOutput(_0x5d8e5e){const _0x315948=document['getElementById']('build-output-text'),_0x56f391=document['getElementById']('build-output-content');_0x315948&&(_0x315948['textContent']+=_0x5d8e5e,_0x56f391&&(_0x56f391['scrollTop']=_0x56f391['scrollHeight']));}function startBuildOutputStreaming(_0x23cbde,_0x648890){stopBuildOutputStreaming();try{const _0x359546=new EventSource('/build/output/stream/'+_0x23cbde);buildOutputEventSource=_0x359546,_0x359546['onmessage']=_0x43f3e0=>{if(buildOutputEventSource!==_0x359546)return;if(!isActiveBuildContext(_0x23cbde,_0x648890)||state['selectedEnv']!==_0x648890){_0x359546['close']();buildOutputEventSource===_0x359546&&(buildOutputEventSource=null);return;}try{const _0x309356=JSON['parse'](_0x43f3e0['data']);if(_0x309356['type']==='output')appendToBuildOutput(_0x309356['data']);else _0x309356['type']==='complete'&&(console['log']('Build\x20completed\x20via\x20stream:',_0x309356),stopBuildOutputStreaming());}catch(_0x4dec1d){console['error']('Failed\x20to\x20parse\x20build\x20output\x20event:',_0x4dec1d);}},_0x359546['onerror']=_0x3807d7=>{if(buildOutputEventSource!==_0x359546)return;console['error']('Build\x20output\x20stream\x20error:',_0x3807d7),_0x359546['readyState']===EventSource['CLOSED']&&stopBuildOutputStreaming();};}catch(_0x54bf0a){console['error']('Failed\x20to\x20start\x20build\x20output\x20streaming:',_0x54bf0a);}}function stopBuildOutputStreaming(){buildOutputEventSource&&(buildOutputEventSource['close'](),buildOutputEventSource=null);}async function loadBuildOutputForBuild(_0x7a4917){const _0x42c40f=state['selectedEnv'];showBuildOutputContainer(),clearBuildOutput(),scrollBuildOutputIntoView();const _0x4147bb=document['getElementById']('build-output-text');_0x4147bb&&(_0x4147bb['textContent']='Loading\x20build\x20output...');try{const _0x26ab8e=await API['get']('/build/output/'+_0x7a4917);if(_0x42c40f!==state['selectedEnv'])return;_0x26ab8e['output']?_0x4147bb&&(_0x4147bb['textContent']=_0x26ab8e['output']):_0x4147bb&&(_0x4147bb['textContent']='No\x20output\x20available\x20for\x20this\x20build.');}catch(_0x5c6537){if(_0x42c40f!==state['selectedEnv'])return;console['error']('Failed\x20to\x20load\x20build\x20output:',_0x5c6537),_0x4147bb&&(_0x4147bb['textContent']='Failed\x20to\x20load\x20build\x20output:\x20'+(_0x5c6537['message']||'Unknown\x20error'));}}window['viewBuildOutput']=function(_0x5a557d){loadBuildOutputForBuild(_0x5a557d);},window['loadBuildHistory']=async function(){if(!state['selectedEnv'])return;const _0x162a23=state['selectedEnv'],_0x42763e=document['getElementById']('build-history-container');if(!_0x42763e)return;try{_0x42763e['innerHTML']='<p\x20class=\x22text-muted\x22>Loading\x20build\x20history...</p>';const _0x3f2e2c=await API['get']('/environments/'+_0x162a23+'/build-history?limit=20');if(_0x162a23!==state['selectedEnv'])return;const _0x467cb5=_0x3f2e2c['builds']||[];if(_0x467cb5['length']===0x0){_0x42763e['innerHTML']='<p\x20class=\x22text-muted\x22>No\x20build\x20history\x20available\x20yet.\x20Build\x20this\x20environment\x20to\x20see\x20history.</p>';return;}_0x42763e['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22build-history-table\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<table\x20style=\x22width:\x20100%;\x20border-collapse:\x20collapse;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<thead>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<tr\x20style=\x22border-bottom:\x202px\x20solid\x20var(--color-border);\x20text-align:\x20left;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22padding:\x208px;\x22>Status</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22padding:\x208px;\x22>Build\x20Time</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22padding:\x208px;\x22>Duration</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22padding:\x208px;\x22>Triggered\x20By</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22padding:\x208px;\x22>Output</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</thead>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<tbody>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x467cb5['map'](_0x578fd2=>{const _0x119b4e=new Date(_0x578fd2['timestamp']),_0x18af35=_0x119b4e['toLocaleString'](),_0x246d3f=formatDuration(_0x578fd2['duration']),_0x55f092=_0x578fd2['status']==='success'?'✅':'❌',_0x96f269=_0x578fd2['status']==='success'?'Success':'Failed',_0x4e9e00=_0x578fd2['status']==='success'?'var(--color-success)':'var(--color-error)',_0x4de521=Utils['escapeHtml'](_0x578fd2['buildId']);return'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<tr\x20style=\x22border-bottom:\x201px\x20solid\x20var(--color-border);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22padding:\x208px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:\x20'+_0x4e9e00+';\x22>'+_0x55f092+'\x20'+_0x96f269+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22padding:\x208px;\x20font-family:\x20var(--font-mono);\x20font-size:\x2013px;\x22>'+_0x18af35+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22padding:\x208px;\x22>'+_0x246d3f+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22padding:\x208px;\x22>'+Utils['escapeHtml'](formatTriggeredBy(_0x578fd2['triggeredBy']))+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22padding:\x208px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-small\x22\x20onclick=\x22viewBuildOutput(\x27'+_0x4de521+'\x27)\x22\x20title=\x22View\x20build\x20output\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20View\x20Output\x0a\x20\x20\x20\x20\x20\x20\x20\x20\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\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20';})['join']('')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</tbody>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</table>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';}catch(_0x1106de){if(_0x162a23!==state['selectedEnv'])return;console['error']('Failed\x20to\x20load\x20build\x20history:',_0x1106de),_0x42763e['innerHTML']='<p\x20class=\x22text-muted\x22\x20style=\x22color:\x20var(--color-error);\x22>Failed\x20to\x20load\x20build\x20history</p>';}},window['renderVolumeMounts']=function(_0x462818){const _0x15c0b0=document['getElementById']('volume-mounts-list'),_0x265ff3=_0x462818!==undefined?_0x462818:state['selectedEnvData']?.['volume_mounts']||[];if(!_0x15c0b0)return;if(_0x265ff3['length']===0x0){_0x15c0b0['innerHTML']='<p\x20class=\x22text-muted\x22>No\x20volume\x20mounts\x20configured.</p>';return;}_0x15c0b0['innerHTML']=_0x265ff3['map']((_0x2a8ec9,_0x40f747)=>'\x0a\x20\x20\x20\x20<div\x20class=\x22volume-mount-item\x22\x20style=\x22background:\x20var(--color-bg-secondary);\x20padding:\x2016px;\x20border-radius:\x208px;\x20margin-bottom:\x2012px;\x20border:\x201px\x20solid\x20var(--color-border);\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:\x20flex;\x20justify-content:\x20space-between;\x20align-items:\x20flex-start;\x20margin-bottom:\x2012px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22flex:\x201;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-weight:\x20500;\x20margin-bottom:\x204px;\x22>'+Utils['escapeHtml'](_0x2a8ec9['description']||'Volume\x20Mount')+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:\x2013px;\x20color:\x20var(--color-text-muted);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x2a8ec9['read_only']?'🔒\x20Read-only':'✏️\x20Read/Write')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-small\x22\x20onclick=\x22removeVolumeMount('+_0x40f747+')\x22\x20title=\x22Remove\x20mount\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>🗑</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:\x20grid;\x20grid-template-columns:\x201fr\x201fr;\x20gap:\x2012px;\x20font-family:\x20var(--font-mono);\x20font-size:\x2013px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22color:\x20var(--color-text-muted);\x20font-size:\x2011px;\x20margin-bottom:\x204px;\x22>HOST\x20PATH</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22background:\x20var(--color-bg);\x20padding:\x206px\x208px;\x20border-radius:\x204px;\x20word-break:\x20break-all;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+Utils['escapeHtml'](_0x2a8ec9['host_path'])+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22color:\x20var(--color-text-muted);\x20font-size:\x2011px;\x20margin-bottom:\x204px;\x22>CONTAINER\x20PATH</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22background:\x20var(--color-bg);\x20padding:\x206px\x208px;\x20border-radius:\x204px;\x20word-break:\x20break-all;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+Utils['escapeHtml'](_0x2a8ec9['container_path'])+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22margin-top:\x208px;\x20text-align:\x20right;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-small\x22\x20onclick=\x22editVolumeMount('+_0x40f747+')\x22\x20style=\x22font-size:\x2012px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>✏️</span>\x20Edit\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20')['join']('');},document['getElementById']('add-volume-mount-btn')?.['addEventListener']('click',()=>{showVolumeMountDialog();}),window['showVolumeMountDialog']=function(_0x6d98ae=null){const _0x377822=_0x6d98ae!==null?state['selectedEnvData']['volume_mounts'][_0x6d98ae]:null,_0x271cb7=_0x377822!==null;Utils['showModal']({'title':_0x271cb7?'Edit\x20Volume\x20Mount':'Add\x20Volume\x20Mount','content':'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-form\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20id=\x22volume-mount-error\x22\x20class=\x22modal-error\x22\x20style=\x22display:\x20none;\x20margin-bottom:\x2016px;\x20padding:\x2012px;\x20background:\x20var(--color-error-bg,\x20#fee);\x20border:\x201px\x20solid\x20var(--color-error,\x20#c00);\x20border-radius:\x206px;\x20color:\x20var(--color-error,\x20#c00);\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-single-column\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20for=\x22mount-description\x22>Description</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20id=\x22mount-description\x22\x20class=\x22form-input\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22e.g.,\x20Task\x20storage\x20directory\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value=\x22'+Utils['escapeHtml'](_0x377822?.['description']||'')+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20for=\x22mount-host-path\x22>Host\x20Path</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20id=\x22mount-host-path\x22\x20class=\x22form-input\x20code-font\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22e.g.,\x20${TASK_STORAGE_PATH}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value=\x22'+Utils['escapeHtml'](_0x377822?.['host_path']||'')+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20class=\x22text-muted\x22\x20style=\x22margin-top:\x204px;\x20font-size:\x2012px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Use\x20variables\x20like\x20${TASK_STORAGE_PATH},\x20${CODER_SETUP_PATH},\x20${SERVER_DATA_PATH}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20for=\x22mount-container-path\x22>Container\x20Path</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20id=\x22mount-container-path\x22\x20class=\x22form-input\x20code-font\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22e.g.,\x20/host-data/tasks\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value=\x22'+Utils['escapeHtml'](_0x377822?.['container_path']||'')+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20class=\x22text-muted\x22\x20style=\x22margin-top:\x204px;\x20font-size:\x2012px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Absolute\x20path\x20inside\x20the\x20container\x20where\x20the\x20volume\x20will\x20be\x20mounted\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20class=\x22toggle-switch\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20id=\x22mount-read-only\x22\x20'+(_0x377822?.['read_only']?'checked':'')+'>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22toggle-slider\x22></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22toggle-label\x22>Read-only</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20class=\x22text-muted\x22\x20style=\x22margin-top:\x204px;\x20font-size:\x2012px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Prevent\x20containers\x20from\x20modifying\x20the\x20mounted\x20directory\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20','buttons':[{'text':'Cancel','className':'btn-secondary','onClick':()=>Utils['hideModal']()},{'text':_0x271cb7?'Save':'Add','className':'btn-primary','onClick':()=>{const _0x3e679b=document['getElementById']('mount-description')['value']['trim'](),_0x4941ce=document['getElementById']('mount-host-path')['value']['trim'](),_0xaea462=document['getElementById']('mount-container-path')['value']['trim'](),_0x5df8ad=document['getElementById']('mount-read-only')['checked'],_0x3144db=document['getElementById']('volume-mount-error');_0x3144db['style']['display']='none',_0x3144db['textContent']='';if(!_0x4941ce||!_0xaea462){_0x3144db['textContent']='Host\x20path\x20and\x20container\x20path\x20are\x20required',_0x3144db['style']['display']='block';return;}if(!_0xaea462['startsWith']('/')){_0x3144db['textContent']='Container\x20path\x20must\x20be\x20absolute\x20(start\x20with\x20/)',_0x3144db['style']['display']='block';return;}const _0x3fbf32={'description':_0x3e679b,'host_path':_0x4941ce,'container_path':_0xaea462,'read_only':_0x5df8ad};!state['selectedEnvData']['volume_mounts']&&(state['selectedEnvData']['volume_mounts']=[]),_0x271cb7?state['selectedEnvData']['volume_mounts'][_0x6d98ae]=_0x3fbf32:state['selectedEnvData']['volume_mounts']['push'](_0x3fbf32),renderVolumeMounts(),state['hasUnsavedChanges']=!![],updateButtonStates(),Utils['hideModal'](),Utils['showToast']('Volume\x20mount\x20'+(_0x271cb7?'updated':'added'),'success');}}]});},window['editVolumeMount']=function(_0x468084){showVolumeMountDialog(_0x468084);},window['removeVolumeMount']=function(_0x7952c1){Utils['showModal']({'title':'Remove\x20Volume\x20Mount','content':'\x0a\x20\x20\x20\x20\x20\x20<p>Are\x20you\x20sure\x20you\x20want\x20to\x20remove\x20this\x20volume\x20mount?</p>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22background:\x20var(--color-bg-secondary);\x20padding:\x2012px;\x20border-radius:\x206px;\x20margin-top:\x2012px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-weight:\x20500;\x20margin-bottom:\x204px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+Utils['escapeHtml'](state['selectedEnvData']['volume_mounts'][_0x7952c1]['description']||'Volume\x20Mount')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-family:\x20var(--font-mono);\x20font-size:\x2012px;\x20color:\x20var(--color-text-muted);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+Utils['escapeHtml'](state['selectedEnvData']['volume_mounts'][_0x7952c1]['host_path'])+'\x20→\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+Utils['escapeHtml'](state['selectedEnvData']['volume_mounts'][_0x7952c1]['container_path'])+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20','buttons':[{'text':'Cancel','className':'btn-secondary','onClick':()=>Utils['hideModal']()},{'text':'Remove','className':'btn-danger','onClick':()=>{state['selectedEnvData']['volume_mounts']['splice'](_0x7952c1,0x1),renderVolumeMounts(),state['hasUnsavedChanges']=!![],updateButtonStates(),Utils['hideModal'](),Utils['showToast']('Volume\x20mount\x20removed','success');}}]});};const accessTabState={'bindings':[],'roles':[],'teams':[],'users':[],'loaded':![]};async function loadAccessTab(){const _0x3fe7e3=document['getElementById']('access-loading'),_0x4bbda2=document['getElementById']('access-empty'),_0x1f2372=document['getElementById']('access-bindings-container'),_0x406d87=document['getElementById']('access-add-binding-btn');if(!_0x3fe7e3)return;_0x3fe7e3['hidden']=![],_0x4bbda2['hidden']=!![],_0x1f2372['style']['display']='none',document['getElementById']('access-add-form')['hidden']=!![];try{const [_0x3eafbc,_0xd947eb]=await Promise['all']([API['getBindings']({'resource_type':'environment','resource_id':state['selectedEnv']}),API['getRoleDefinitions']()]);accessTabState['bindings']=_0x3eafbc['bindings']||[],accessTabState['roles']=_0xd947eb['roles']||[];try{const _0x1b9736=await API['getTeams']();accessTabState['teams']=_0x1b9736['teams']||[];}catch{accessTabState['teams']=[];}try{const _0x2489ef=await API['getUsers']();accessTabState['users']=_0x2489ef['users']||[];}catch{accessTabState['users']=[];}accessTabState['loaded']=!![],_0x3fe7e3['hidden']=!![],updateTabBadge('badge-access',accessTabState['bindings']['length']);accessTabState['bindings']['length']===0x0?_0x4bbda2['hidden']=![]:(_0x1f2372['style']['display']='',renderAccessBindings());const _0x4c5c55=state['currentUser'];_0x4c5c55?.['hasEnvironmentsManageAccess']&&(_0x406d87['hidden']=![]);}catch(_0xb5b36e){_0x3fe7e3['hidden']=!![],Utils['showToast']('Failed\x20to\x20load\x20access\x20bindings:\x20'+_0xb5b36e['message'],'error');}}function renderAccessBindings(){const _0x21207e=document['getElementById']('access-bindings-body');if(!_0x21207e)return;const _0x330709=state['currentUser']?.['hasEnvironmentsManageAccess'];_0x21207e['innerHTML']=accessTabState['bindings']['map'](_0x33fa86=>{const _0x48664a=_0x33fa86['created_at']?new Date(_0x33fa86['created_at'])['toLocaleDateString']():'—';return'\x0a\x20\x20\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x33fa86['subject_name']||_0x33fa86['subject_id'])+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td><span\x20class=\x22tag\x22\x20style=\x22font-size:\x200.75em;\x20text-transform:\x20capitalize;\x22>'+Utils['escapeHtml'](_0x33fa86['subject_type'])+'</span></td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x33fa86['role_name']||_0x33fa86['role_id'])+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x33fa86['created_by']||'—')+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22white-space:\x20nowrap;\x22>'+_0x48664a+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x330709?'<button\x20class=\x22btn-ghost\x20btn-small\x22\x20onclick=\x22window.removeAccessBinding(\x27'+_0x33fa86['id']+'\x27)\x22\x20style=\x22color:\x20var(--color-danger);\x22>Remove</button>':'—')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20</tr>';})['join']('');}function populateAccessSubjectSelect(){const _0x1d9879=document['getElementById']('access-subject-type'),_0x5d15e8=document['getElementById']('access-subject-id'),_0x1fb2aa=_0x1d9879?.['value'];if(!_0x5d15e8)return;const _0x18ebb8=new Set(accessTabState['bindings']['filter'](_0x2de774=>_0x2de774['subject_type']===_0x1fb2aa)['map'](_0x1cb8ac=>_0x1cb8ac['subject_id'])),_0x192a75=_0x1fb2aa==='team'?accessTabState['teams']['filter'](_0x578dfc=>!_0x18ebb8['has'](_0x578dfc['id'])):accessTabState['users']['filter'](_0xd32aa6=>!_0x18ebb8['has'](_0xd32aa6['id']));_0x5d15e8['innerHTML']=_0x192a75['length']?_0x192a75['map'](_0x26848f=>{const _0xc8c3c5=_0x1fb2aa==='team'?_0x26848f['name']:_0x26848f['username']||_0x26848f['name'];return'<option\x20value=\x22'+_0x26848f['id']+'\x22>'+Utils['escapeHtml'](_0xc8c3c5)+'</option>';})['join'](''):'<option\x20value=\x22\x22>None\x20available</option>';}document['addEventListener']('DOMContentLoaded',()=>{document['getElementById']('access-add-binding-btn')?.['addEventListener']('click',()=>{const _0xd40336=document['getElementById']('access-role-id');_0xd40336&&(_0xd40336['innerHTML']=accessTabState['roles']['map'](_0x405e39=>'<option\x20value=\x22'+_0x405e39['id']+'\x22>'+Utils['escapeHtml'](_0x405e39['name'])+'</option>')['join']('')),populateAccessSubjectSelect(),document['getElementById']('access-add-form')['hidden']=![],document['getElementById']('access-add-binding-btn')['hidden']=!![];}),document['getElementById']('access-subject-type')?.['addEventListener']('change',populateAccessSubjectSelect),document['getElementById']('access-cancel-binding-btn')?.['addEventListener']('click',()=>{document['getElementById']('access-add-form')['hidden']=!![],document['getElementById']('access-add-binding-btn')['hidden']=![];}),document['getElementById']('access-save-binding-btn')?.['addEventListener']('click',async()=>{const _0x1fe5d7=document['getElementById']('access-subject-type')['value'],_0x2c6f65=document['getElementById']('access-subject-id')['value'],_0x389419=document['getElementById']('access-role-id')['value'];if(!_0x2c6f65||!_0x389419||!state['selectedEnv'])return;const _0x2f0f4f=document['getElementById']('access-save-binding-btn');_0x2f0f4f['disabled']=!![],_0x2f0f4f['textContent']='Adding…';try{await API['createBinding']({'subject_type':_0x1fe5d7,'subject_id':_0x2c6f65,'role_id':_0x389419,'resource_type':'environment','resource_id':state['selectedEnv']}),Utils['showToast']('Binding\x20added','success'),document['getElementById']('access-add-form')['hidden']=!![],document['getElementById']('access-add-binding-btn')['hidden']=![],await loadAccessTab();}catch(_0x2f58fd){Utils['showToast'](_0x2f58fd['message'],'error');}finally{_0x2f0f4f['disabled']=![],_0x2f0f4f['textContent']='Add\x20Binding';}});}),window['removeAccessBinding']=async function(_0x55a5de){try{await API['deleteBinding'](_0x55a5de),Utils['showToast']('Binding\x20removed','success'),await loadAccessTab();}catch(_0x13268c){Utils['showToast'](_0x13268c['message'],'error');}};
|
|
1
|
+
import{API,Utils,CustomSelect,ConfirmDialog,AutocompleteSelect,initializeAdminMenu}from'./app.js';import{getCurrentTheme,initTheme,mountThemeToggle,onThemeChange}from'./theme.js';import*as _0x44536f from'./git-status.js?v=2';import{parsePatchContent,renderUnifiedDiff,safeBase64}from'./diff-utils.js';import{buildAutomationTaskFilterHref,parseAutomationDeepLinkParams}from'./automation-links.js';import{AUTOMATION_MONTHLY_DAY_MAX,buildAutomationCronFromFormState,parseAutomationScheduleToFormState}from'./automation-schedule.js';let monacoLoaded=![];const monacoEditors=new Map(),getMonacoTheme=()=>getCurrentTheme()==='dark'?'vs-dark':'vs';onThemeChange(_0x4bb7e7=>{window['monaco']?.['editor']&&monaco['editor']['setTheme'](_0x4bb7e7==='dark'?'vs-dark':'vs');});let defaultAgentSelect=null,defaultAgentSelectInitializing=![],newEnvAgentSelect=null,automationInstructionsEditor=null;const automationCustomSelects={},AUTOMATION_MODAL_SELECT_IDS=['automation-frequency','automation-weekly-day','automation-monthly-day','automation-recurring-interval','automation-recurring-start-hour','automation-recurring-end-hour','automation-agent-name','automation-effort-level','automation-reasoning-level','automation-template-name'];let repoAutocomplete=null,newEnvRepoAutocomplete=null,editRepoAutocomplete=null,newRepoBranchAutocomplete=null,editRepoBranchAutocomplete=null;const SESSION_KEY_ENV='environments_selectedEnv',SESSION_KEY_TAB='environments_currentTab',state={'environments':[],'selectedEnv':null,'selectedEnvData':null,'currentTab':sessionStorage['getItem'](SESSION_KEY_TAB)||'overview','hasUnsavedChanges':![],'modifiedFiles':new Set(),'changedFiles':[],'setupRepoAuth':null,'currentUser':null,'currentFile':'Dockerfile','currentTemplate':null,'currentTemplateData':null,'currentRepo':null,'currentTest':null,'agentsContent':null,'readmeContent':null,'currentBuildSecret':null,'buildSecrets':[],'automations':[],'automationsLoadedEnv':null,'viewingAutomationId':null,'editingAutomationId':null,'automationModalMode':'create','availableModels':null,'availableModelsLoaded':![],'automationTemplateParamValues':{},'currentDeployProfile':null,'currentDeployProfileData':null,'profileHasUnsavedChanges':![],'profileScriptEditor':null,'secrets':[],'editingSecret':null,'gitProviders':[],'editingGitProvider':null,'editingGitProviderOriginalAuthMethod':null,'deploymentHistory':[],'currentDeploymentId':null,'deploymentPollInterval':null,'deploymentStartTime':null,'deploymentOutput':'','deploymentParamCache':{},'availableSkills':[],'availableSkillsLoaded':![],'availableSkillsLoading':![],'availableSkillsError':null,'skillsModalSelection':[],'skillsModalOpen':![],'parameterModalContext':null,'editingParamName':null,'parameterOptions':[],'uncommittedDiff':null,'uncommittedDiffFiles':null,'editingConnection':null};let secretValueStore='',secretValueVisible=![],lastCursorPosition=0x0,sshKeyValueStore='',sshKeyValueVisible=![],sshKeyLastCursorPosition=0x0;const KNOWN_POST_CLONE_ACTIONS=['none','npm\x20install','npm\x20ci','yarn','pnpm\x20install','pip\x20install\x20-r\x20requirements.txt','pip\x20install\x20-e\x20.','mvn\x20install\x20-DskipTests','./gradlew\x20build\x20-x\x20test','dotnet\x20restore','dotnet\x20build','composer\x20install','custom'];function getBranchAutocompleteInputValue(_0x5527c9){return _0x5527c9?.['input']?.['value']?.['trim']()||'';}function setBranchAutocompleteValue(_0x1e7c64,_0x6ebe3e){if(!_0x1e7c64||!_0x1e7c64['input'])return;const _0x12738a=(_0x6ebe3e||'')['trim']();_0x1e7c64['input']['value']=_0x12738a,_0x1e7c64['clearBtn']['hidden']=!_0x12738a,(!_0x12738a||_0x1e7c64['selectedItem']?.['name']!==_0x12738a)&&(_0x1e7c64['selectedItem']=null);}function clearBranchAutocompleteError(_0x2081e4){_0x2081e4?.['wrapper']&&_0x2081e4['wrapper']['classList']['remove']('input-error');}function setBranchAutocompleteErrorState(_0x241ec0,_0x4882bc){if(!_0x241ec0?.['wrapper'])return;_0x241ec0['wrapper']['classList']['toggle']('input-error',Boolean(_0x4882bc));}function getNewRepoBranchValue(){return getBranchAutocompleteInputValue(newRepoBranchAutocomplete);}function setNewRepoBranchValue(_0x261fe7){setBranchAutocompleteValue(newRepoBranchAutocomplete,_0x261fe7);}function getEditRepoBranchValue(){return getBranchAutocompleteInputValue(editRepoBranchAutocomplete);}function setEditRepoBranchValue(_0x58ba8a){setBranchAutocompleteValue(editRepoBranchAutocomplete,_0x58ba8a);}function getNewRepoBranchContext(){const _0x2b5431=document['querySelector']('input[name=\x22repo-entry-mode\x22]:checked')?.['value']||'manual',_0x134735=_0x2b5431==='provider'?document['getElementById']('new-repo-source-provider')?.['value']||'':'',_0x50f14c=_0x2b5431==='provider'?repoAutocomplete?repoAutocomplete['getSelectedItem']():null:null,_0x322ae8=_0x2b5431==='provider'?_0x50f14c?.['clone_url']||_0x50f14c?.['url']||'':document['getElementById']('new-repo-url')?.['value']?.['trim']()||'';return{'providerName':_0x134735,'repoUrl':_0x322ae8};}function getEditRepoBranchContext(){const _0x592320=document['getElementById']('edit-repo-provider')?.['value']||'',_0x2f0199=document['getElementById']('repo-url')?.['value']?.['trim']()||'';return{'providerName':_0x592320,'repoUrl':_0x2f0199};}async function fetchRepoBranches({providerName:_0x45197f,repoUrl:_0x143717,query:_0xeceee9}){if(!_0x45197f||!_0x143717)return[];const _0xc82a77='/settings/git-providers/'+encodeURIComponent(_0x45197f)+'/branches';let _0xcb94b2=_0xc82a77+'?repoUrl='+encodeURIComponent(_0x143717)+'&limit=100';_0xeceee9&&_0xeceee9['trim']()&&(_0xcb94b2+='&search='+encodeURIComponent(_0xeceee9['trim']()));try{const _0x13be48=await API['get'](_0xcb94b2);return _0x13be48['branches']||[];}catch(_0x559977){console['error']('Failed\x20to\x20load\x20repository\x20branches:',_0x559977);throw _0x559977;}}function reloadNewRepoBranchSuggestions(){if(!newRepoBranchAutocomplete)return;const {providerName:_0x12ba3e,repoUrl:_0x3cd800}=getNewRepoBranchContext();newRepoBranchAutocomplete['selectedItem']=null,newRepoBranchAutocomplete['clearBtn']['hidden']=!![];if(!_0x12ba3e||!_0x3cd800){newRepoBranchAutocomplete['close']();return;}return newRepoBranchAutocomplete['loadAndShow']('');}function reloadEditRepoBranchSuggestions(){if(!editRepoBranchAutocomplete)return;const {providerName:_0x3dcbda,repoUrl:_0x40e359}=getEditRepoBranchContext();editRepoBranchAutocomplete['selectedItem']=null,editRepoBranchAutocomplete['clearBtn']['hidden']=!![];if(!_0x3dcbda||!_0x40e359){editRepoBranchAutocomplete['close']();return;}return editRepoBranchAutocomplete['loadAndShow']('');}function isKnownPostCloneAction(_0x4242c3){return KNOWN_POST_CLONE_ACTIONS['includes'](_0x4242c3);}document['addEventListener']('DOMContentLoaded',initialize);async function initialize(){try{initTheme(),mountThemeToggle(),await checkAdminAccess();const _0x504ad4=await API['get']('/auth/me');state['currentUser']=_0x504ad4['user'],await initializeAdminMenu(state['currentUser']),setupEventListeners(),await loadAvailableAutomationModels(),renderAutomationAgentOptions(),await loadEnvironments(),state['currentTab']!=='overview'&&switchTab(state['currentTab']),await handleAutomationDeepLinkParams(),await refreshRepositoryGitStatus(),await handleSetupRepoOAuthReturn(),setInterval(refreshRepositoryGitStatus,0x7530);}catch(_0x9f2394){console['error']('Initialization\x20error:',_0x9f2394),Utils['showError']('Failed\x20to\x20initialize\x20environment\x20management');}}async function checkAdminAccess(){try{const _0xbec48f=await API['getCurrentUser']();if(!_0xbec48f['hasEnvironmentsManage']){Utils['showToast']('Access\x20denied:\x20Environment\x20admin\x20privileges\x20required','error'),setTimeout(()=>{window['location']['href']='index.html';},0x7d0);return;}}catch(_0x4f4c34){window['location']['href']='login.html';}}function initializeCustomSelects(){if(!defaultAgentSelect){const _0xabc5cb=document['getElementById']('env-default-agent-wrapper');if(!_0xabc5cb){console['error']('Wrapper\x20element\x20not\x20found');return;}_0xabc5cb['innerHTML']='';const _0x2b0bdd=document['createElement']('select');_0x2b0bdd['id']='env-default-agent',_0x2b0bdd['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20<option\x20value=\x22claude\x22>Claude</option>\x0a\x20\x20\x20\x20\x20\x20<option\x20value=\x22codex\x22>Codex</option>\x0a\x20\x20\x20\x20\x20\x20<option\x20value=\x22gemini\x22>Gemini</option>\x0a\x20\x20\x20\x20',_0xabc5cb['appendChild'](_0x2b0bdd),defaultAgentSelect=new CustomSelect(_0x2b0bdd,{'searchable':![]}),_0x2b0bdd['addEventListener']('change',()=>{if(defaultAgentSelectInitializing)return;markAsModified();});}}function setupEventListeners(){document['querySelectorAll']('.content-tab')['forEach'](_0xfa3cc2=>{_0xfa3cc2['addEventListener']('click',()=>switchTab(_0xfa3cc2['dataset']['tab']));}),document['getElementById']('repo-pull-btn')['addEventListener']('click',pullRepositoryChanges),document['getElementById']('repo-push-btn')['addEventListener']('click',pushRepositoryChanges),initGitConnectionsRequiredModal(),document['getElementById']('save-btn')['addEventListener']('click',saveChanges),document['getElementById']('repo-commit-btn')['addEventListener']('click',openCommitModal),document['getElementById']('repo-discard-btn')['addEventListener']('click',openDiscardModal),document['getElementById']('new-env-btn')['addEventListener']('click',createNewEnvironment),document['querySelector']('#commit-modal\x20.modal-close')['addEventListener']('click',closeCommitModal),document['getElementById']('commit-cancel-btn')['addEventListener']('click',closeCommitModal),document['getElementById']('commit-confirm-btn')['addEventListener']('click',commitAndPush),document['querySelector']('#discard-modal\x20.modal-close')['addEventListener']('click',closeDiscardModal),document['getElementById']('discard-cancel-btn')['addEventListener']('click',closeDiscardModal),document['getElementById']('discard-confirm-btn')['addEventListener']('click',confirmDiscard),document['querySelector']('#build-confirm-modal\x20.modal-close')['addEventListener']('click',closeBuildConfirmModal),document['getElementById']('build-confirm-cancel-btn')['addEventListener']('click',closeBuildConfirmModal),document['getElementById']('build-confirm-start-btn')['addEventListener']('click',confirmStartBuild),document['querySelector']('#base-image-required-modal\x20.modal-close')['addEventListener']('click',closeBaseImageRequiredModal),document['querySelector']('#base-image-required-modal\x20.modal-overlay')['addEventListener']('click',closeBaseImageRequiredModal),document['getElementById']('base-image-required-close-btn')['addEventListener']('click',closeBaseImageRequiredModal),document['getElementById']('base-image-required-open-btn')['addEventListener']('click',openBaseImageBuildFromRequiredModal),document['querySelector']('#new-env-modal\x20.modal-close')['addEventListener']('click',closeNewEnvModal),document['getElementById']('new-env-cancel-btn')['addEventListener']('click',closeNewEnvModal),document['getElementById']('new-env-create-btn')['addEventListener']('click',confirmCreateEnvironment),document['getElementById']('new-env-name')['addEventListener']('input',_0xa0d633=>{const _0x17f9b0=_0xa0d633['target']['value']['trim'](),_0x2983dd=document['getElementById']('new-env-image');!_0x2983dd['dataset']['userModified']&&(_0x2983dd['value']=_0x17f9b0);}),document['getElementById']('new-env-image')['addEventListener']('input',_0x1859fa=>{const _0x151b77=document['getElementById']('new-env-name')['value']['trim']();_0x1859fa['target']['value']!==_0x151b77?_0x1859fa['target']['dataset']['userModified']='true':delete _0x1859fa['target']['dataset']['userModified'];}),document['querySelector']('#delete-env-modal\x20.modal-close')['addEventListener']('click',closeDeleteEnvModal),document['getElementById']('delete-env-cancel-btn')['addEventListener']('click',closeDeleteEnvModal),document['getElementById']('delete-env-confirm-btn')['addEventListener']('click',confirmDeleteEnvironment),document['querySelector']('#add-repo-modal\x20.modal-close')['addEventListener']('click',closeAddRepoModal),document['getElementById']('add-repo-cancel-btn')['addEventListener']('click',closeAddRepoModal),document['getElementById']('add-repo-confirm-btn')['addEventListener']('click',confirmAddRepo),document['getElementById']('new-repo-branch-refresh-btn')['addEventListener']('click',_0xb6f5e3=>{_0xb6f5e3['preventDefault'](),reloadNewRepoBranchSuggestions();}),document['querySelector']('#delete-repo-modal\x20.modal-close')['addEventListener']('click',closeDeleteRepoModal),document['getElementById']('delete-repo-cancel-btn')['addEventListener']('click',closeDeleteRepoModal),document['getElementById']('delete-repo-confirm-btn')['addEventListener']('click',confirmDeleteRepo),document['querySelector']('#add-test-modal\x20.modal-close')['addEventListener']('click',closeAddTestModal),document['getElementById']('add-test-cancel-btn')['addEventListener']('click',closeAddTestModal),document['getElementById']('add-test-confirm-btn')['addEventListener']('click',confirmAddTest),document['querySelector']('#delete-test-modal\x20.modal-close')['addEventListener']('click',closeDeleteTestModal),document['getElementById']('delete-test-cancel-btn')['addEventListener']('click',closeDeleteTestModal),document['getElementById']('delete-test-confirm-btn')['addEventListener']('click',confirmDeleteTest),document['querySelector']('#add-template-modal\x20.modal-close')['addEventListener']('click',closeAddTemplateModal),document['getElementById']('add-template-cancel-btn')['addEventListener']('click',closeAddTemplateModal),document['getElementById']('add-template-confirm-btn')['addEventListener']('click',confirmAddTemplate),document['querySelector']('#delete-template-modal\x20.modal-close')['addEventListener']('click',closeDeleteTemplateModal),document['getElementById']('delete-template-cancel-btn')['addEventListener']('click',closeDeleteTemplateModal),document['getElementById']('delete-template-confirm-btn')['addEventListener']('click',confirmDeleteTemplate),document['querySelector']('#add-deploy-profile-modal\x20.modal-close')['addEventListener']('click',closeAddDeployProfileModal),document['getElementById']('add-deploy-profile-cancel-btn')['addEventListener']('click',closeAddDeployProfileModal),document['getElementById']('add-deploy-profile-confirm-btn')['addEventListener']('click',confirmAddDeployProfile),document['querySelector']('#delete-deploy-profile-modal\x20.modal-close')['addEventListener']('click',closeDeleteDeployProfileModal),document['getElementById']('delete-deploy-profile-cancel-btn')['addEventListener']('click',closeDeleteDeployProfileModal),document['getElementById']('delete-deploy-profile-confirm-btn')['addEventListener']('click',confirmDeleteDeployProfile),document['getElementById']('new-deploy-profile-tab')['addEventListener']('click',openAddDeployProfileModal),document['getElementById']('delete-deploy-profile-btn')['addEventListener']('click',openDeleteDeployProfileModal),document['getElementById']('profile-description')['addEventListener']('input',markProfileAsModified),document['getElementById']('add-profile-secret-btn')['addEventListener']('click',openAddProfileSecretModal),document['getElementById']('add-profile-parameter-btn')['addEventListener']('click',openAddProfileParameterModal),initDeploySectionToggles(),document['getElementById']('run-deploy-profile-btn')['addEventListener']('click',openRunDeploymentModal),document['querySelector']('#run-deployment-modal\x20.modal-close')['addEventListener']('click',closeRunDeploymentModal),document['querySelector']('#run-deployment-modal\x20.modal-overlay')['addEventListener']('click',closeRunDeploymentModal),document['getElementById']('run-deployment-cancel-btn')['addEventListener']('click',closeRunDeploymentModal),document['getElementById']('run-deployment-start-btn')['addEventListener']('click',startDeployment),document['getElementById']('cancel-deployment-btn')['addEventListener']('click',cancelDeploymentExecution),document['getElementById']('refresh-deploy-history-btn')['addEventListener']('click',()=>{state['selectedEnv']&&loadDeploymentHistory();}),document['getElementById']('add-secret-btn')['addEventListener']('click',openAddSecretModal),document['getElementById']('secrets-filter')['addEventListener']('change',renderSecrets),document['querySelector']('#secret-modal\x20.modal-close')['addEventListener']('click',closeSecretModal),document['getElementById']('secret-modal-cancel-btn')['addEventListener']('click',closeSecretModal),document['getElementById']('secret-modal-save-btn')['addEventListener']('click',saveSecret),document['getElementById']('secret-type-file')['addEventListener']('change',handleSecretTypeChange),document['getElementById']('secret-type-value')['addEventListener']('change',handleSecretTypeChange),document['getElementById']('secret-available-build')['addEventListener']('change',updateExposeAsVisibility),document['getElementById']('secret-available-tasks')['addEventListener']('change',updateExposeAsVisibility),document['getElementById']('secret-available-deploy')['addEventListener']('change',updateExposeAsVisibility),document['getElementById']('secret-expose-env')['addEventListener']('change',updateSecretTargetLabel),document['getElementById']('secret-expose-file')['addEventListener']('change',updateSecretTargetLabel),document['getElementById']('secret-source')['addEventListener']('input',debounce(validateSecretSourcePath,0x1f4)),document['getElementById']('secret-import-file-btn')['addEventListener']('click',()=>{document['getElementById']('secret-file-input')['click']();}),document['getElementById']('secret-file-input')['addEventListener']('change',handleSecretFileImport),document['querySelector']('.secret-toggle-visibility')['addEventListener']('click',toggleSecretValueVisibility);const _0x1a65fe=document['getElementById']('secret-value');_0x1a65fe['addEventListener']('beforeinput',handleSecretValueBeforeInput),_0x1a65fe['addEventListener']('input',handleSecretValueInput),document['getElementById']('secret-git-pat-checkbox')['addEventListener']('change',handleGitPatCheckboxChange),document['getElementById']('secret-git-host')['addEventListener']('change',handleGitHostChange),document['querySelector']('#delete-secret-modal\x20.modal-close')['addEventListener']('click',closeDeleteSecretModal),document['getElementById']('delete-secret-cancel-btn')['addEventListener']('click',closeDeleteSecretModal),document['getElementById']('delete-secret-confirm-btn')['addEventListener']('click',confirmDeleteSecret),document['getElementById']('add-connection-btn')['addEventListener']('click',openAddConnectionModal),document['querySelector']('#connection-modal\x20.modal-close')['addEventListener']('click',closeConnectionModal),document['getElementById']('connection-modal-cancel-btn')['addEventListener']('click',closeConnectionModal),document['getElementById']('connection-modal-save-btn')['addEventListener']('click',saveConnection),document['getElementById']('connection-type-sqlserver')['addEventListener']('change',updateConnectionFormVisibility),document['getElementById']('connection-type-ibmi')['addEventListener']('change',updateConnectionFormVisibility),document['getElementById']('connection-type-ssh')['addEventListener']('change',updateConnectionFormVisibility),['feature-sql','feature-build','feature-interactive','feature-ssh','feature-sync']['forEach'](_0x15abc2=>document['getElementById'](_0x15abc2)['addEventListener']('change',updateConnectionFormVisibility)),document['getElementById']('feature-sync')['addEventListener']('change',_0x10df4e=>{const _0x305554=document['getElementById']('feature-ssh');_0x10df4e['target']['checked']?(_0x305554['checked']=!![],_0x305554['disabled']=!![]):_0x305554['disabled']=![];}),document['getElementById']('connection-available-tasks')['addEventListener']('change',updateConnectionFormVisibility),document['getElementById']('connection-available-deploy')['addEventListener']('change',updateConnectionFormVisibility),document['getElementById']('connection-verify-cert')['addEventListener']('change',_0x57b498=>{document['getElementById']('connection-verify-cert-warning')['hidden']=_0x57b498['target']['checked'];}),document['getElementById']('connection-host')['addEventListener']('input',syncHostToPuiBaseUrl),document['getElementById']('connection-pui-base-url')['addEventListener']('input',syncPuiBaseUrlToHost),document['getElementById']('connection-password-toggle')['addEventListener']('click',toggleConnectionPasswordVisibility),document['querySelector']('.connection-ssh-key-toggle')['addEventListener']('click',toggleSshKeyVisibility);const _0x42dd95=document['getElementById']('connection-ssh-private-key');_0x42dd95['addEventListener']('beforeinput',handleSshKeyBeforeInput),_0x42dd95['addEventListener']('input',handleSshKeyInput),document['getElementById']('connection-ssh-import-btn')['addEventListener']('click',()=>{document['getElementById']('connection-ssh-file-input')['click']();}),document['getElementById']('connection-ssh-file-input')['addEventListener']('change',handleSshKeyFileImport),document['getElementById']('connection-ssh-pubkey-import-btn')['addEventListener']('click',()=>{document['getElementById']('connection-ssh-pubkey-file-input')['click']();}),document['getElementById']('connection-ssh-pubkey-file-input')['addEventListener']('change',handleSshPubKeyFileImport),document['getElementById']('connection-generate-keypair-btn')['addEventListener']('click',generateKeypair),document['getElementById']('connection-test-sql-btn')['addEventListener']('click',()=>testConnection('sql')),document['getElementById']('connection-test-ssh-btn')['addEventListener']('click',()=>testConnection('ssh')),document['getElementById']('connection-install-key-btn')['addEventListener']('click',openInstallKeyModal),document['querySelector']('#install-key-modal\x20.modal-close')['addEventListener']('click',closeInstallKeyModal),document['getElementById']('install-key-cancel-btn')['addEventListener']('click',closeInstallKeyModal),document['getElementById']('install-key-confirm-btn')['addEventListener']('click',installPublicKey),document['getElementById']('install-key-password-toggle')['addEventListener']('click',()=>{const _0x2483cd=document['getElementById']('install-key-password'),_0x4f41c9=document['getElementById']('install-key-password-toggle'),_0x3aeb0a=_0x2483cd['type']==='password';_0x2483cd['type']=_0x3aeb0a?'text':'password',_0x4f41c9['querySelector']('.eye-open')['style']['display']=_0x3aeb0a?'none':'',_0x4f41c9['querySelector']('.eye-closed')['style']['display']=_0x3aeb0a?'':'none';}),document['getElementById']('connection-ibmi-helper-link')['addEventListener']('click',_0x5a01c1=>{_0x5a01c1['preventDefault'](),openIbmiHelperDialog();}),document['querySelector']('#ibmi-helper-modal\x20.modal-close')['addEventListener']('click',()=>document['getElementById']('ibmi-helper-modal')['hidden']=!![]),document['getElementById']('ibmi-helper-close-btn')['addEventListener']('click',()=>document['getElementById']('ibmi-helper-modal')['hidden']=!![]),document['querySelector']('#delete-connection-modal\x20.modal-close')['addEventListener']('click',closeDeleteConnectionModal),document['getElementById']('delete-connection-cancel-btn')['addEventListener']('click',closeDeleteConnectionModal),document['getElementById']('delete-connection-confirm-btn')['addEventListener']('click',confirmDeleteConnection),document['querySelectorAll']('input[name=\x22repo-entry-mode\x22]')['forEach'](_0x1e2aa8=>{_0x1e2aa8['addEventListener']('change',onRepoEntryModeChange);}),document['getElementById']('new-repo-source-provider')['addEventListener']('change',onRepoSourceProviderChange),document['querySelector']('#profile-secret-modal\x20.modal-close')['addEventListener']('click',closeProfileSecretModal),document['querySelector']('#profile-secret-modal\x20.modal-overlay')['addEventListener']('click',closeProfileSecretModal),document['getElementById']('profile-secret-cancel-btn')['addEventListener']('click',closeProfileSecretModal),document['getElementById']('profile-secret-save-btn')['addEventListener']('click',saveProfileSecret),document['getElementById']('profile-secret-name')['addEventListener']('change',updateProfileSecretInfo),document['querySelector']('#profile-parameter-modal\x20.modal-close')['addEventListener']('click',closeProfileParameterModal),document['querySelector']('#profile-parameter-modal\x20.modal-overlay')['addEventListener']('click',closeProfileParameterModal),document['getElementById']('profile-parameter-cancel-btn')['addEventListener']('click',closeProfileParameterModal),document['getElementById']('profile-parameter-save-btn')['addEventListener']('click',saveProfileParameter),document['getElementById']('profile-param-type')['addEventListener']('change',updateProfileParamTypeVisibility),document['getElementById']('profile-param-add-option-btn')['addEventListener']('click',addParameterOption),document['querySelector']('#uncommitted-changes-modal\x20.modal-close')['addEventListener']('click',closeUncommittedChangesModal),document['getElementById']('uncommitted-changes-close-btn')['addEventListener']('click',closeUncommittedChangesModal),document['getElementById']('repo-status')['addEventListener']('click',handleRepoStatusClick);const _0x20a8ca=document['getElementById']('delete-repo-btn');_0x20a8ca&&_0x20a8ca['addEventListener']('click',()=>{state['currentRepo']!==null&&removeRepo(state['currentRepo']);});const _0x583def=document['getElementById']('delete-test-btn');_0x583def&&_0x583def['addEventListener']('click',()=>{state['currentTest']!==null&&removeTest(state['currentTest']);});const _0x22bef8=document['getElementById']('delete-template-btn');_0x22bef8&&_0x22bef8['addEventListener']('click',()=>{state['currentTemplate']!==null&&removeTemplate(state['currentTemplate']);});document['getElementById']('env-description')['addEventListener']('input',markAsModified),document['getElementById']('env-image-name')['addEventListener']('input',markAsModified),document['getElementById']('env-timezone')['addEventListener']('input',markAsModified),document['getElementById']('env-screen-render-url')['addEventListener']('input',markAsModified);const _0x4d12fb=document['getElementById']('env-skills-manage-btn');if(_0x4d12fb)_0x4d12fb['addEventListener']('click',openSkillsModal);const _0x5bad53=document['getElementById']('skills-modal');if(_0x5bad53){const _0x4beeb5=_0x5bad53['querySelector']('.modal-close'),_0x2bef0d=_0x5bad53['querySelector']('.modal-overlay'),_0x4ebd23=document['getElementById']('skills-modal-cancel-btn'),_0x52e5d8=document['getElementById']('skills-modal-apply-btn'),_0x4268ab=document['getElementById']('skills-modal-search-input'),_0x29dee1=document['getElementById']('skills-modal-search-clear');_0x4beeb5?.['addEventListener']('click',closeSkillsModal),_0x2bef0d?.['addEventListener']('click',closeSkillsModal),_0x4ebd23?.['addEventListener']('click',closeSkillsModal),_0x52e5d8?.['addEventListener']('click',applySkillsModalSelection),_0x4268ab?.['addEventListener']('input',renderSkillsModal),_0x29dee1?.['addEventListener']('click',()=>{_0x4268ab&&(_0x4268ab['value']='',_0x4268ab['focus']()),renderSkillsModal();});}const _0x2c04df=document['getElementById']('actions-menu-btn'),_0x1e3123=document['getElementById']('actions-menu');_0x2c04df['addEventListener']('click',_0xdcb7c7=>{_0xdcb7c7['stopPropagation']();const _0x4589fa=document['getElementById']('admin-menu');if(_0x4589fa)_0x4589fa['hidden']=!![];_0x1e3123['hidden']=!_0x1e3123['hidden'];}),document['addEventListener']('click',_0x1349cc=>{!_0x1e3123['hidden']&&!_0x1e3123['contains'](_0x1349cc['target'])&&(_0x1e3123['hidden']=!![]);}),_0x1e3123['addEventListener']('click',()=>{_0x1e3123['hidden']=!![];}),document['getElementById']('build-base-image-btn')?.['addEventListener']('click',openBaseImageBuildModal),document['querySelector']('#base-image-build-modal\x20.modal-close')['addEventListener']('click',closeBaseImageBuildModal),document['querySelector']('#base-image-build-modal\x20.modal-overlay')['addEventListener']('click',closeBaseImageBuildModal),document['getElementById']('base-image-build-cancel-btn')['addEventListener']('click',closeBaseImageBuildModal),document['getElementById']('base-image-build-start-btn')['addEventListener']('click',startBaseImageBuild),document['getElementById']('base-image-refresh-history-btn')['addEventListener']('click',loadBaseImageBuildHistory),document['getElementById']('delete-env-btn')['addEventListener']('click',deleteEnvironment),document['getElementById']('env-rename-btn')['addEventListener']('click',openRenameEnvModal),document['getElementById']('rename-env-cancel-btn')['addEventListener']('click',closeRenameEnvModal),document['getElementById']('rename-env-confirm-btn')['addEventListener']('click',confirmRenameEnvironment),document['getElementById']('rename-env-modal')['querySelector']('.modal-close')['addEventListener']('click',closeRenameEnvModal),document['getElementById']('rename-env-modal')['querySelector']('.modal-overlay')['addEventListener']('click',closeRenameEnvModal),setupEnvTabsScrolling(),setupContentNavScrolling();}function setupEnvTabsScrolling(){const _0x2fdafe=document['getElementById']('env-tabs-wrapper'),_0x1313fe=document['getElementById']('env-tabs-scroll-left'),_0x34fc6b=document['getElementById']('env-tabs-scroll-right');if(!_0x2fdafe||!_0x1313fe||!_0x34fc6b)return;const _0x57308b=0xc8;function _0x3b722f(){const {scrollLeft:_0xca2d11,scrollWidth:_0x3c5c46,clientWidth:_0x2df96e}=_0x2fdafe,_0x1727eb=_0xca2d11>0x1,_0xe7ae40=_0xca2d11<_0x3c5c46-_0x2df96e-0x1;_0x1313fe['classList']['toggle']('visible',_0x1727eb),_0x34fc6b['classList']['toggle']('visible',_0xe7ae40),_0x2fdafe['classList']['toggle']('fade-left',_0x1727eb),_0x2fdafe['classList']['toggle']('fade-right',_0xe7ae40);}_0x1313fe['addEventListener']('click',()=>{_0x2fdafe['scrollBy']({'left':-_0x57308b,'behavior':'smooth'});}),_0x34fc6b['addEventListener']('click',()=>{_0x2fdafe['scrollBy']({'left':_0x57308b,'behavior':'smooth'});}),_0x2fdafe['addEventListener']('scroll',_0x3b722f);const _0x594dd6=new ResizeObserver(()=>{_0x3b722f();});_0x594dd6['observe'](_0x2fdafe),_0x3b722f(),window['updateEnvTabsScrollState']=_0x3b722f;}function scrollToActiveEnvTab(){const _0x5de302=document['getElementById']('env-tabs-wrapper'),_0x1623a0=document['querySelector']('.env-tab.active');if(!_0x5de302||!_0x1623a0)return;const _0x104a1a=_0x5de302['getBoundingClientRect'](),_0x5b81a2=_0x1623a0['getBoundingClientRect']();if(_0x5b81a2['left']<_0x104a1a['left'])_0x5de302['scrollBy']({'left':_0x5b81a2['left']-_0x104a1a['left']-0x10,'behavior':'smooth'});else _0x5b81a2['right']>_0x104a1a['right']&&_0x5de302['scrollBy']({'left':_0x5b81a2['right']-_0x104a1a['right']+0x10,'behavior':'smooth'});}function setupContentNavScrolling(){const _0x3267f6=document['getElementById']('content-nav'),_0x5ab08d=document['getElementById']('content-nav-scroll-left'),_0x22616e=document['getElementById']('content-nav-scroll-right');if(!_0x3267f6||!_0x5ab08d||!_0x22616e)return;const _0x3e61c8=0x96;function _0x13db9f(){const {scrollLeft:_0x35ce34,scrollWidth:_0x944d74,clientWidth:_0x282020}=_0x3267f6,_0x2cfcb5=_0x35ce34>0x1,_0x30ef00=_0x35ce34<_0x944d74-_0x282020-0x1;_0x5ab08d['classList']['toggle']('visible',_0x2cfcb5),_0x22616e['classList']['toggle']('visible',_0x30ef00),_0x3267f6['classList']['toggle']('fade-left',_0x2cfcb5),_0x3267f6['classList']['toggle']('fade-right',_0x30ef00);}_0x5ab08d['addEventListener']('click',()=>{_0x3267f6['scrollBy']({'left':-_0x3e61c8,'behavior':'smooth'});}),_0x22616e['addEventListener']('click',()=>{_0x3267f6['scrollBy']({'left':_0x3e61c8,'behavior':'smooth'});}),_0x3267f6['addEventListener']('scroll',_0x13db9f);const _0x2d75c9=new ResizeObserver(()=>{_0x13db9f();});_0x2d75c9['observe'](_0x3267f6),_0x13db9f(),window['updateContentNavScrollState']=_0x13db9f;}function scrollToActiveContentTab(){const _0x44da6d=document['getElementById']('content-nav'),_0x47832f=document['querySelector']('.content-tab.active');if(!_0x44da6d||!_0x47832f)return;const _0x156d76=_0x44da6d['getBoundingClientRect'](),_0x4ad595=_0x47832f['getBoundingClientRect']();if(_0x4ad595['left']<_0x156d76['left'])_0x44da6d['scrollBy']({'left':_0x4ad595['left']-_0x156d76['left']-0x10,'behavior':'smooth'});else _0x4ad595['right']>_0x156d76['right']&&_0x44da6d['scrollBy']({'left':_0x4ad595['right']-_0x156d76['right']+0x10,'behavior':'smooth'});}async function loadEnvironments(){try{const _0x3ddc1f=await API['get']('/environments');state['environments']=_0x3ddc1f['environments']||[],renderEnvironmentsList();if(state['environments']['length']>0x0){const _0x4917e1=sessionStorage['getItem'](SESSION_KEY_ENV),_0x26efef=_0x3ddc1f['default_environment'];let _0x5baa3c;if(_0x4917e1&&state['environments']['find'](_0x48137b=>_0x48137b['name']===_0x4917e1))_0x5baa3c=_0x4917e1;else _0x26efef&&state['environments']['find'](_0x52a614=>_0x52a614['name']===_0x26efef)?_0x5baa3c=_0x26efef:_0x5baa3c=state['environments'][0x0]['name'];await selectEnvironment(_0x5baa3c);}}catch(_0x291f26){console['error']('Failed\x20to\x20load\x20environments:',_0x291f26),document['getElementById']('env-tabs')['innerHTML']='<div\x20class=\x22error\x22>Failed\x20to\x20load\x20environments</div>';}}function renderEnvironmentsList(){const _0x411208=document['getElementById']('env-tabs');if(state['environments']['length']===0x0){_0x411208['innerHTML']='<div\x20class=\x22empty-state-inline\x22>No\x20environments\x20found</div>';return;}_0x411208['innerHTML']=state['environments']['map'](_0x4885bd=>'\x0a\x20\x20\x20\x20<button\x20class=\x22env-tab\x20'+(_0x4885bd['name']===state['selectedEnv']?'active':'')+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data-env=\x22'+_0x4885bd['name']+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20onclick=\x22selectEnvironment(\x27'+_0x4885bd['name']+'\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20'+_0x4885bd['name']+'\x0a\x20\x20\x20\x20</button>\x0a\x20\x20')['join'](''),window['updateEnvTabsScrollState']&&requestAnimationFrame(()=>{window['updateEnvTabsScrollState']();});}window['selectEnvironment']=async function(_0x339e12){if(state['hasUnsavedChanges']){const _0x414d4b=await ConfirmDialog['show']({'title':'Unsaved\x20Changes','message':'You\x20have\x20unsaved\x20changes\x20that\x20will\x20be\x20lost.\x20Continue?','confirmText':'Continue','danger':!![]});if(!_0x414d4b)return;}const _0x5b5ce9=state['selectedEnv'];_0x5b5ce9&&_0x5b5ce9!==_0x339e12&&resetBuildPanelForEnvironmentChange(),state['selectedEnv']=_0x339e12,sessionStorage['setItem'](SESSION_KEY_ENV,_0x339e12),state['hasUnsavedChanges']=![],document['querySelectorAll']('.env-tab')['forEach'](_0x1ff136=>{_0x1ff136['classList']['toggle']('active',_0x1ff136['dataset']['env']===_0x339e12);}),scrollToActiveEnvTab(),document['getElementById']('env-empty-state')['hidden']=!![],document['getElementById']('env-details')['hidden']=![],await loadEnvironmentDetails(_0x339e12);};async function loadEnvironmentDetails(_0x54d470){try{const _0x3ac314=await API['get']('/environments/'+_0x54d470);if(_0x54d470!==state['selectedEnv'])return;state['selectedEnvData']=_0x3ac314,state['originalTemplates']=(_0x3ac314['templates']||[])['map'](_0x268888=>_0x268888['filename']),state['hasUnsavedChanges']=![],state['currentRepo']=null,cleanupEditRepoAutocomplete();const _0x320836=['server-command-editor','file-editor','script-editor','template-md-editor'];for(const _0x4a8fbf of _0x320836){const _0x3d0268=monacoEditors['get'](_0x4a8fbf);_0x3d0268&&(_0x3d0268['dispose'](),monacoEditors['delete'](_0x4a8fbf));}const _0x1c0b81=['agents-editor','readme-editor'];for(const _0x241e25 of _0x1c0b81){window['MarkdownFileEditor']&&window['MarkdownFileEditor']['has'](_0x241e25)&&window['MarkdownFileEditor']['dispose'](_0x241e25);const _0x335c05=monacoEditors['get'](_0x241e25);_0x335c05&&(_0x335c05['dispose'](),monacoEditors['delete'](_0x241e25));}state['currentTest']=null,state['currentTemplate']=null,state['currentDeployProfile']=null,state['currentDeployProfileData']=null,state['readmeContent']=null,state['agentsContent']=null,currentScript='pre-clone',state['currentDeploymentId']=null,stopDeploymentPolling();const _0x5cf846=document['getElementById']('deployment-progress-panel');_0x5cf846&&(_0x5cf846['hidden']=!![]),state['deploymentParamCache']={},updateButtonStates(),renderEnvironmentDetails(),setupTabEventListeners(),state['currentTab']==='deploy'&&loadDeploymentHistory();}catch(_0x3a1162){console['error']('Failed\x20to\x20load\x20environment\x20details:',_0x3a1162),Utils['showError']('Failed\x20to\x20load\x20environment\x20details');}}function setupTabEventListeners(){const _0x28e1c3=document['getElementById']('rebuild-schedule-enabled-build-tab'),_0x8cf3c4=document['getElementById']('rebuild-interval-build-tab');if(_0x28e1c3)_0x28e1c3['addEventListener']('change',toggleRebuildSchedule);if(_0x8cf3c4)_0x8cf3c4['addEventListener']('input',markAsModified);const _0x396274=document['getElementById']('server-enabled'),_0x34e9a8=document['getElementById']('server-name'),_0x55cd01=document['getElementById']('server-proxy'),_0x25d098=document['getElementById']('server-qa-url'),_0x145d33=document['getElementById']('server-auth-user-property'),_0x3cf756=document['getElementById']('server-auth-password-property'),_0x4c0b8c=document['getElementById']('add-port-btn'),_0x4dd176=document['getElementById']('add-url-btn'),_0x46b346=document['getElementById']('clear-primary-url-btn'),_0x22594d=document['getElementById']('add-proxy-header-btn'),_0x1e6a24=document['getElementById']('add-port-qa-url-btn');if(_0x396274)_0x396274['addEventListener']('change',toggleServerConfig);if(_0x34e9a8)_0x34e9a8['addEventListener']('input',markAsModified);if(_0x55cd01)_0x55cd01['addEventListener']('input',markAsModified);if(_0x25d098)_0x25d098['addEventListener']('input',markAsModified);if(_0x145d33)_0x145d33['addEventListener']('input',markAsModified);if(_0x3cf756)_0x3cf756['addEventListener']('input',markAsModified);if(_0x4c0b8c)_0x4c0b8c['addEventListener']('click',addPort);if(_0x4dd176)_0x4dd176['addEventListener']('click',addURL);if(_0x46b346)_0x46b346['addEventListener']('click',clearPrimaryURL);if(_0x22594d)_0x22594d['addEventListener']('click',addProxyHeader);if(_0x1e6a24)_0x1e6a24['addEventListener']('click',addPortQaUrl);const _0xc77dfb=document['getElementById']('agents-editor'),_0x2500ba=document['getElementById']('preview-agents-btn');_0xc77dfb&&_0xc77dfb['addEventListener']('input',()=>{markAsModified(),updateAgentStats();});if(_0x2500ba)_0x2500ba['addEventListener']('click',toggleAgentsPreview);document['querySelectorAll']('#scripts-section-body\x20.script-tab')['forEach'](_0xb35ead=>{_0xb35ead['addEventListener']('click',()=>{saveCurrentScriptToState(),switchScript(_0xb35ead['dataset']['script']);});});const _0x55f330=document['getElementById']('scripts-section-header');_0x55f330&&_0x55f330['addEventListener']('click',toggleScriptsSection);const _0x13d598=document['getElementById']('preview-dockerfile-btn');_0x13d598&&_0x13d598['addEventListener']('click',showDockerfilePreview);const _0x3d1b60=document['getElementById']('dockerfile-preview-modal');_0x3d1b60&&(_0x3d1b60['querySelector']('.modal-close')['addEventListener']('click',closeDockerfilePreviewModal),_0x3d1b60['querySelector']('.modal-overlay')['addEventListener']('click',closeDockerfilePreviewModal),document['getElementById']('dockerfile-preview-close-btn')['addEventListener']('click',closeDockerfilePreviewModal),document['getElementById']('dockerfile-copy-btn')['addEventListener']('click',copyDockerfileToClipboard));const _0x5db524=document['getElementById']('preview-template-btn');if(_0x5db524)_0x5db524['addEventListener']('click',toggleTemplatePreview);initializeAutomationFormOptions(),initializeAutomationModalCustomSelects(),initializeAutomationInstructionsEditor();const _0x2e527a=document['getElementById']('add-automation-btn');if(_0x2e527a)_0x2e527a['addEventListener']('click',()=>openAutomationModal('create'));const _0x39756b=document['getElementById']('automations-empty-create-btn');if(_0x39756b)_0x39756b['addEventListener']('click',()=>openAutomationModal('create'));const _0x1a06cf=document['getElementById']('automation-history-back-btn');if(_0x1a06cf)_0x1a06cf['addEventListener']('click',closeAutomationHistoryView);const _0x3154e4=document['getElementById']('automation-history-run-btn');if(_0x3154e4)_0x3154e4['addEventListener']('click',triggerViewedAutomation);const _0x50b09a=document['getElementById']('automations-table-body');_0x50b09a&&(_0x50b09a['addEventListener']('click',handleAutomationTableActionClick),_0x50b09a['addEventListener']('change',handleAutomationTableToggleChange));const _0x436cff=document['getElementById']('automation-modal'),_0xda33e0=_0x436cff?.['querySelector']('.modal-overlay');if(_0xda33e0)_0xda33e0['addEventListener']('click',closeAutomationModal);const _0xbadb76=document['getElementById']('automation-modal-close');if(_0xbadb76)_0xbadb76['addEventListener']('click',closeAutomationModal);const _0x15268b=document['getElementById']('automation-cancel-btn');if(_0x15268b)_0x15268b['addEventListener']('click',closeAutomationModal);const _0x2e1f0a=document['getElementById']('automation-save-btn');if(_0x2e1f0a)_0x2e1f0a['addEventListener']('click',saveAutomationFromModal);const _0x30862c=document['getElementById']('automation-frequency');_0x30862c&&_0x30862c['addEventListener']('change',()=>{updateAutomationFrequencyFields(),updateAutomationScheduleSummary();});document['querySelectorAll']('#automation-daily-time,\x20#automation-weekly-day,\x20#automation-weekly-time,\x20#automation-monthly-day,\x20#automation-monthly-time,\x20#automation-recurring-interval,\x20#automation-recurring-start-hour,\x20#automation-recurring-end-hour,\x20#automation-custom-cron')['forEach'](_0x88d885=>{_0x88d885['addEventListener']('change',updateAutomationScheduleSummary),_0x88d885['addEventListener']('input',updateAutomationScheduleSummary);});const _0x4d499d=document['getElementById']('automation-recurring-days');_0x4d499d&&_0x4d499d['addEventListener']('change',updateAutomationScheduleSummary);const _0x4c7fe7=document['getElementById']('automation-agent-name');if(_0x4c7fe7)_0x4c7fe7['addEventListener']('change',updateAutomationAgentFields);document['querySelectorAll']('input[name=\x22automation-task-mode\x22]')['forEach'](_0x41f688=>{_0x41f688['addEventListener']('change',updateAutomationTaskMode);});const _0x3c7f74=document['getElementById']('automation-template-name');_0x3c7f74&&_0x3c7f74['addEventListener']('change',()=>{renderAutomationTemplateParameters();});}function updateTabBadge(_0xa6184,_0x47fad7){const _0x50655c=document['getElementById'](_0xa6184);if(!_0x50655c)return;_0x47fad7>0x0?(_0x50655c['textContent']=_0x47fad7,_0x50655c['hidden']=![]):_0x50655c['hidden']=!![];}function renderEnvironmentDetails(){const _0x4448dc=state['selectedEnvData'];updateTabBadge('badge-secrets',0x0),updateTabBadge('badge-automations',0x0),updateTabBadge('badge-access',0x0),updateTabBadge('badge-deploy',(_0x4448dc['deployment_profiles']||[])['length']),document['getElementById']('env-name-display')['textContent']=_0x4448dc['name'],document['getElementById']('env-description-display')['textContent']=_0x4448dc['description']||'No\x20description',initializeCustomSelects(),defaultAgentSelectInitializing=!![],document['getElementById']('env-description')['value']=_0x4448dc['description']||'',defaultAgentSelect['select'](_0x4448dc['default_agent']||'claude'),document['getElementById']('env-image-name')['value']=_0x4448dc['image_name']||'',document['getElementById']('env-timezone')['value']=_0x4448dc['timezone']||'',document['getElementById']('env-screen-render-url')['value']=_0x4448dc['screenRenderUrl']||'',state['selectedEnvData']['skills']=Array['isArray'](_0x4448dc['skills'])?_0x4448dc['skills']:[];const _0x4cfa5d=_0x4448dc['rebuild_schedule']||{},_0x4a0827=_0x4cfa5d['enabled']===!![];document['getElementById']('rebuild-schedule-enabled-build-tab')['checked']=_0x4a0827,document['getElementById']('rebuild-interval-build-tab')['value']=_0x4cfa5d['interval_hours']||0x18,document['getElementById']('rebuild-schedule-config-build-tab')['hidden']=!_0x4a0827,defaultAgentSelectInitializing=![];const _0x47a49e=_0x4448dc['repos']?.['length']||0x0,_0x37689f=Object['keys'](_0x4448dc['tests']||{})['length'],_0x1e2492=_0x4448dc['templates']?.['length']||0x0,_0x220bc4=_0x4448dc['deployment_profiles']?.['length']||0x0;document['getElementById']('stat-repos')['textContent']=_0x47a49e,document['getElementById']('stat-repos-label')['textContent']=_0x47a49e===0x1?'Repository':'Repositories',document['getElementById']('stat-tests')['textContent']=_0x37689f,document['getElementById']('stat-tests-label')['textContent']=_0x37689f===0x1?'Test\x20Command':'Test\x20Commands',document['getElementById']('stat-templates')['textContent']=_0x1e2492,document['getElementById']('stat-templates-label')['textContent']=_0x1e2492===0x1?'Template':'Templates',document['getElementById']('stat-deploy-profiles')['textContent']=_0x220bc4,document['getElementById']('stat-deploy-profiles-label')['textContent']=_0x220bc4===0x1?'Deploy\x20Profile':'Deploy\x20Profiles',renderReadme(),renderEnvironmentSkills();const _0x661d40=state['selectedEnv'];loadAvailableSkills()['then'](()=>{if(state['selectedEnv']!==_0x661d40)return;renderEnvironmentSkills(),state['skillsModalOpen']&&renderSkillsModal();}),renderRepos(),renderServerConfig(),renderAgentInstructions(),renderTests(),renderTemplates(),state['viewingAutomationId']=null,closeAutomationHistoryView(),renderAutomationAgentOptions(_0x4448dc['default_agent']||''),renderAutomations();const _0x215d3a=state['selectedEnv'];loadSecrets()['then'](()=>{if(state['selectedEnv']!==_0x215d3a)return;renderSecrets();}),loadConnections(),renderConnections();const _0x38b8d7=state['selectedEnv'];API['getBindings']({'environment':state['selectedEnv']})['then'](_0x297057=>{if(state['selectedEnv']!==_0x38b8d7)return;updateTabBadge('badge-access',(_0x297057['bindings']||[])['length']);})['catch'](()=>{}),state['currentTab']==='build'&&loadBuildHistory();}async function loadAvailableSkills(){if(state['availableSkillsLoaded']||state['availableSkillsLoading'])return;state['availableSkillsLoading']=!![],state['availableSkillsError']=null;try{const _0x4aec09=await API['getSkills']();state['availableSkills']=_0x4aec09['skills']||[],state['availableSkillsLoaded']=!![];}catch(_0x5a6754){console['error']('Failed\x20to\x20load\x20skills:',_0x5a6754),state['availableSkillsError']=_0x5a6754['message']||'Failed\x20to\x20load\x20skills.';}finally{state['availableSkillsLoading']=![];}}function getSkillDisplayInfo(_0x52fa32){const _0x30158f=state['availableSkills']['find'](_0x12ecde=>_0x12ecde['id']===_0x52fa32);if(_0x30158f)return{'id':_0x30158f['id'],'name':_0x30158f['name']||_0x30158f['id'],'description':_0x30158f['description']||''};return{'id':_0x52fa32,'name':_0x52fa32,'description':''};}function renderEnvironmentSkills(){const _0x29da7b=document['getElementById']('env-skills-chips'),_0x2e4759=document['getElementById']('env-skills-empty');if(!_0x29da7b||!_0x2e4759)return;const _0x51a78b=state['selectedEnvData']?.['skills']||[];_0x29da7b['innerHTML']='';if(_0x51a78b['length']===0x0){_0x29da7b['hidden']=!![],_0x29da7b['classList']['add']('skills-chip-grid-empty'),_0x2e4759['hidden']=![];return;}_0x29da7b['hidden']=![],_0x29da7b['classList']['remove']('skills-chip-grid-empty'),_0x2e4759['hidden']=!![],_0x51a78b['forEach'](_0x15bb7e=>{const _0x2c4efb=getSkillDisplayInfo(_0x15bb7e),_0x3b77ee=document['createElement']('div');_0x3b77ee['className']='skill-chip',_0x3b77ee['dataset']['skillId']=_0x2c4efb['id'],_0x3b77ee['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22skill-chip-name\x22>'+Utils['escapeHtml'](_0x2c4efb['name'])+'</span>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22skill-chip-id\x22>'+Utils['escapeHtml'](_0x2c4efb['id'])+'</span>\x0a\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22skill-chip-remove\x22\x20aria-label=\x22Remove\x20skill\x22>×</button>\x0a\x20\x20\x20\x20';const _0x5ce5b4=_0x3b77ee['querySelector']('.skill-chip-remove');_0x5ce5b4['addEventListener']('click',()=>removeSkillFromEnvironment(_0x2c4efb['id'])),_0x29da7b['appendChild'](_0x3b77ee);});}function removeSkillFromEnvironment(_0x4dcf94){const _0x148179=getConnectionRequiredSkills();if(_0x148179['has'](_0x4dcf94)){Utils['showError']('Cannot\x20remove\x20skill\x20\x22'+_0x4dcf94+'\x22\x20—\x20it\x20is\x20required\x20by\x20an\x20external\x20connection.\x20Remove\x20the\x20connection\x20first.');return;}const _0x2047c0=state['selectedEnvData']?.['skills']||[],_0x308734=_0x2047c0['filter'](_0x584f50=>_0x584f50!==_0x4dcf94);state['selectedEnvData']['skills']=_0x308734,markAsModified(),renderEnvironmentSkills(),state['skillsModalOpen']&&(state['skillsModalSelection']=[..._0x308734],renderSkillsModal());}function openSkillsModal(){if(!state['selectedEnvData'])return;const _0x5e22b2=document['getElementById']('skills-modal');if(!_0x5e22b2)return;state['skillsModalOpen']=!![],state['skillsModalSelection']=[...state['selectedEnvData']['skills']||[]];const _0x47bffd=document['getElementById']('skills-modal-search-input');_0x47bffd&&(_0x47bffd['value']=''),_0x5e22b2['hidden']=![],loadAvailableSkills()['then'](()=>{renderSkillsModal(),_0x47bffd&&_0x47bffd['focus']();}),renderSkillsModal();}function closeSkillsModal(){const _0x1d1283=document['getElementById']('skills-modal');_0x1d1283&&(_0x1d1283['hidden']=!![]),state['skillsModalOpen']=![];}function applySkillsModalSelection(){if(!state['selectedEnvData'])return;state['selectedEnvData']['skills']=[...state['skillsModalSelection']],markAsModified(),renderEnvironmentSkills(),closeSkillsModal();}function renderSkillsModal(){const _0x4feb1c=document['getElementById']('skills-modal-list'),_0x1781dc=document['getElementById']('skills-modal-selected-list'),_0x7e9261=document['getElementById']('skills-modal-selected-empty'),_0x1fe91a=document['getElementById']('skills-modal-selected-count'),_0x26c54f=document['getElementById']('skills-modal-search-input'),_0xfcb8df=document['getElementById']('skills-modal-search-clear'),_0x5578c0=document['getElementById']('skills-modal-search-meta'),_0x2dd85f=document['getElementById']('skills-modal-error'),_0x54644b=document['getElementById']('skills-modal-loading');if(!_0x4feb1c||!_0x1781dc||!_0x7e9261||!_0x1fe91a)return;const _0x32b784=(_0x26c54f?.['value']||'')['trim']()['toLowerCase']();_0xfcb8df&&(_0xfcb8df['hidden']=!_0x32b784);_0x2dd85f&&(_0x2dd85f['hidden']=!![]);_0x54644b&&(_0x54644b['hidden']=!state['availableSkillsLoading']);state['availableSkillsError']&&_0x2dd85f&&(_0x2dd85f['textContent']=state['availableSkillsError'],_0x2dd85f['hidden']=![]);const _0x480827=state['availableSkills']||[],_0x38cc02=_0x480827['filter'](_0x35feec=>{const _0x159cb4=(_0x35feec['name']||'')['toLowerCase'](),_0x1d9c9d=(_0x35feec['id']||'')['toLowerCase'](),_0x281b37=(_0x35feec['description']||'')['toLowerCase']();return!_0x32b784||_0x159cb4['includes'](_0x32b784)||_0x1d9c9d['includes'](_0x32b784)||_0x281b37['includes'](_0x32b784);});_0x4feb1c['innerHTML']='';if(!state['availableSkillsLoading']&&_0x38cc02['length']===0x0){const _0x31a409=document['createElement']('div');_0x31a409['className']='text-muted',_0x31a409['textContent']=_0x32b784?'No\x20skills\x20match\x20your\x20search.':'No\x20skills\x20available\x20yet.',_0x4feb1c['appendChild'](_0x31a409);}_0x38cc02['forEach'](_0x713cc5=>{const _0x500e6d=state['skillsModalSelection']['includes'](_0x713cc5['id']),_0x12a69e=document['createElement']('div');_0x12a69e['className']='skills-modal-item'+(_0x500e6d?'\x20selected':''),_0x12a69e['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20<label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20'+(_0x500e6d?'checked':'')+'\x20aria-label=\x22Select\x20'+Utils['escapeHtml'](_0x713cc5['name']||_0x713cc5['id'])+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22skills-modal-item-name\x22>'+Utils['escapeHtml'](_0x713cc5['name']||_0x713cc5['id'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22skills-modal-item-id\x22>'+Utils['escapeHtml'](_0x713cc5['id'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22skills-modal-item-desc\x22>'+Utils['escapeHtml'](_0x713cc5['description']||'No\x20description\x20provided.')+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20';const _0x5d5f34=_0x12a69e['querySelector']('input[type=\x22checkbox\x22]');_0x5d5f34['addEventListener']('change',_0x327d33=>{toggleSkillSelection(_0x713cc5['id'],_0x327d33['target']['checked']);}),_0x4feb1c['appendChild'](_0x12a69e);}),_0x1781dc['innerHTML']='';const _0x5a4830=state['skillsModalSelection']['map'](getSkillDisplayInfo);_0x1fe91a['textContent']=_0x5a4830['length']['toString']();_0x5a4830['length']===0x0?_0x7e9261['hidden']=![]:(_0x7e9261['hidden']=!![],_0x5a4830['forEach'](_0xee41e3=>{const _0x13f29b=document['createElement']('div');_0x13f29b['className']='skill-chip',_0x13f29b['dataset']['skillId']=_0xee41e3['id'],_0x13f29b['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22skill-chip-name\x22>'+Utils['escapeHtml'](_0xee41e3['name'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22skill-chip-id\x22>'+Utils['escapeHtml'](_0xee41e3['id'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22skill-chip-remove\x22\x20aria-label=\x22Remove\x20skill\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20';const _0x3219ae=_0x13f29b['querySelector']('.skill-chip-remove');_0x3219ae['addEventListener']('click',()=>toggleSkillSelection(_0xee41e3['id'],![])),_0x1781dc['appendChild'](_0x13f29b);}));if(_0x5578c0){if(state['availableSkillsLoading'])_0x5578c0['textContent']='Loading\x20skills...';else{if(!_0x480827['length'])_0x5578c0['textContent']='No\x20skills\x20available\x20yet.';else _0x32b784?_0x5578c0['textContent']=_0x38cc02['length']?_0x38cc02['length']+'\x20skill'+(_0x38cc02['length']===0x1?'':'s')+'\x20found':'No\x20matching\x20skills\x20found.':_0x5578c0['textContent']=_0x480827['length']+'\x20skill'+(_0x480827['length']===0x1?'':'s')+'\x20available';}}}function toggleSkillSelection(_0x59b4b2,_0x87883a){const _0x369062=new Set(state['skillsModalSelection']);_0x87883a?_0x369062['add'](_0x59b4b2):_0x369062['delete'](_0x59b4b2),state['skillsModalSelection']=Array['from'](_0x369062),renderSkillsModal();}async function refreshRepositoryGitStatus(){try{const _0xeef228=await _0x44536f['fetchGitStatus']();state['changedFiles']=_0xeef228['changedFiles']||[],state['setupRepoAuth']=_0xeef228['setupRepoAuth']||null,invalidateDiffCache(),_0x44536f['updateGitStatusIndicator']({'statusIcon':document['getElementById']('repo-status-icon'),'statusText':document['getElementById']('repo-status-text'),'branchText':document['getElementById']('repo-branch-text'),'authBadge':document['getElementById']('repo-auth-mode-badge'),'container':document['getElementById']('repo-status'),'commitBtn':document['getElementById']('repo-commit-btn'),'discardBtn':document['getElementById']('repo-discard-btn')},_0xeef228),updatePushButtonState(_0xeef228);}catch(_0x1b7999){console['error']('Failed\x20to\x20get\x20repository\x20git\x20status:',_0x1b7999),_0x44536f['showGitStatusError']({'statusIcon':document['getElementById']('repo-status-icon'),'statusText':document['getElementById']('repo-status-text'),'authBadge':document['getElementById']('repo-auth-mode-badge')}),updatePushButtonState(null);}}function invalidateDiffCache(){state['uncommittedDiff']=null,state['uncommittedDiffFiles']=null;}async function loadUncommittedDiff(){if(state['uncommittedDiff']!==null)return;try{const _0x350e1c=await _0x44536f['fetchGitDiff']();state['uncommittedDiff']=_0x350e1c['diff']||'',state['uncommittedDiffFiles']=parsePatchContent(state['uncommittedDiff']);}catch(_0xe63d2a){console['error']('Failed\x20to\x20fetch\x20diff:',_0xe63d2a),state['uncommittedDiff']='',state['uncommittedDiffFiles']=[];}}async function handleFileClick(_0x1f0e67,_0x282b68){const _0x2e2b2b=_0x282b68['nextElementSibling'];if(_0x2e2b2b&&_0x2e2b2b['classList']['contains']('inline-file-diff')){_0x2e2b2b['remove'](),_0x282b68['classList']['remove']('diff-expanded');return;}const _0x1247df=_0x282b68['closest']('ul');_0x1247df['querySelectorAll']('.inline-file-diff')['forEach'](_0x1f6005=>_0x1f6005['remove']()),_0x1247df['querySelectorAll']('.diff-expanded')['forEach'](_0x526731=>_0x526731['classList']['remove']('diff-expanded')),_0x282b68['classList']['add']('diff-expanded');const _0x528d59=document['createElement']('li');_0x528d59['className']='inline-file-diff\x20inline-file-diff-loading',_0x528d59['textContent']='Loading\x20diff...',_0x282b68['after'](_0x528d59),await loadUncommittedDiff();const _0x479a39=state['uncommittedDiffFiles']?.['find'](_0x508dcf=>_0x508dcf['newPath']===_0x1f0e67||_0x508dcf['oldPath']===_0x1f0e67);if(!_0x479a39){_0x528d59['innerHTML']='<div\x20class=\x22inline-diff-empty\x22>No\x20diff\x20available\x20for\x20this\x20file</div>';return;}const _0xb8ee67=renderUnifiedDiff([_0x479a39],'env-uncommitted-'+safeBase64(_0x1f0e67));_0x528d59['className']='inline-file-diff',_0x528d59['innerHTML']=_0xb8ee67,_0x528d59['querySelectorAll']('.file-diff-header')['forEach'](_0x5f0f29=>{_0x5f0f29['addEventListener']('click',_0x2c8545=>{if(_0x2c8545['target']['closest']('.file-diff-toggle-btn'))return;const _0x36a428=_0x5f0f29['dataset']['diffId'],_0x17c41c=document['getElementById'](_0x36a428);if(_0x17c41c){const _0x277bed=_0x17c41c['classList']['toggle']('collapsed'),_0x423605=_0x5f0f29['querySelector']('.file-diff-toggle-btn');if(_0x423605)_0x423605['dataset']['collapsed']=String(_0x277bed);}});}),_0x528d59['querySelectorAll']('.file-diff-toggle-btn')['forEach'](_0x1a62a4=>{_0x1a62a4['addEventListener']('click',_0x4f10fd=>{_0x4f10fd['stopPropagation']();const _0x1a8398=document['getElementById'](_0x1a62a4['dataset']['diffId']);if(_0x1a8398){const _0x42da0b=_0x1a8398['classList']['toggle']('collapsed');_0x1a62a4['dataset']['collapsed']=String(_0x42da0b);}});});}function updatePushButtonState(_0x33cdd6){const _0x403dae=document['getElementById']('repo-push-btn');if(!_0x403dae)return;const _0x15cacd=Boolean(_0x33cdd6)&&!_0x33cdd6['hasUncommittedChanges']&&Number(_0x33cdd6['ahead']||0x0)>0x0&&Number(_0x33cdd6['behind']||0x0)===0x0;_0x403dae['hidden']=!_0x15cacd,_0x403dae['disabled']=!_0x15cacd;}async function pushRepositoryChanges(){const _0x39f9e1=document['getElementById']('repo-push-btn');if(!_0x39f9e1||_0x39f9e1['hidden']||_0x39f9e1['disabled'])return;try{const _0x488e9f=document['getElementById']('repo-status-icon'),_0x5be485=document['getElementById']('repo-status-text');_0x39f9e1['disabled']=!![],_0x39f9e1['innerHTML']='<span>📤</span>\x20Pushing...',_0x488e9f['textContent']='📤',_0x5be485['textContent']='Pushing\x20to\x20git...',await API['post']('/environments/git/push'),Utils['showSuccess']('Successfully\x20pushed\x20local\x20commits'),await refreshRepositoryGitStatus();}catch(_0x58b141){_0x58b141['message']==='setup_repo_user_not_connected'?(savePendingSetupRepoAction('push'),showSetupRepoConnectPrompt(state['setupRepoAuth']?.['provider'],state['setupRepoAuth']?.['provider_type'])):Utils['showError'](_0x58b141['message']||'Failed\x20to\x20push\x20commits'),await refreshRepositoryGitStatus();}finally{_0x39f9e1['disabled']=![],_0x39f9e1['innerHTML']='<span>📤</span>\x20Push\x20to\x20Git';}}async function pullRepositoryChanges(){try{const _0x1922f9=document['getElementById']('repo-pull-btn'),_0x3e6c6c=document['getElementById']('repo-status-icon'),_0x1b5d7a=document['getElementById']('repo-status-text');_0x1922f9['disabled']=!![],_0x1922f9['innerHTML']='<span>🔄</span>\x20Pulling...',_0x3e6c6c['textContent']='🔄',_0x1b5d7a['textContent']='Pulling\x20from\x20git...';const _0x5c3e2d=await API['post']('/environments/git/pull');_0x5c3e2d['conflicts']?(Utils['showError']('Pull\x20resulted\x20in\x20conflicts.\x20Please\x20resolve\x20manually.'),_0x3e6c6c['textContent']='⚠️',_0x1b5d7a['textContent']='Conflicts\x20detected'):(Utils['showSuccess']('Successfully\x20pulled\x20latest\x20changes'),await refreshRepositoryGitStatus(),state['selectedEnv']&&await loadEnvironmentDetails(state['selectedEnv']));}catch(_0x161380){_0x161380['message']==='setup_repo_user_not_connected'?(savePendingSetupRepoAction('pull'),showSetupRepoConnectPrompt(state['setupRepoAuth']?.['provider'],state['setupRepoAuth']?.['provider_type'])):Utils['showError']('Failed\x20to\x20pull\x20changes'),await refreshRepositoryGitStatus();}finally{const _0x501b3d=document['getElementById']('repo-pull-btn');_0x501b3d['disabled']=![],_0x501b3d['innerHTML']='<span>🔄</span>\x20Pull\x20from\x20Git';}}const PENDING_SETUP_REPO_ACTION_KEY='pendingSetupRepoAction_environments';function savePendingSetupRepoAction(_0x258cf5,_0x40312b={}){sessionStorage['setItem'](PENDING_SETUP_REPO_ACTION_KEY,JSON['stringify']({'action':_0x258cf5,'data':_0x40312b,'timestamp':Date['now']()}));}function loadAndClearPendingSetupRepoAction(){try{const _0x39421d=sessionStorage['getItem'](PENDING_SETUP_REPO_ACTION_KEY);sessionStorage['removeItem'](PENDING_SETUP_REPO_ACTION_KEY);if(!_0x39421d)return null;const _0x1764c2=JSON['parse'](_0x39421d);if(Date['now']()-_0x1764c2['timestamp']>0xa*0x3c*0x3e8)return null;return _0x1764c2;}catch{return null;}}async function handleSetupRepoOAuthReturn(){const _0x6c3dee=new URLSearchParams(window['location']['search']);if(_0x6c3dee['get']('git_connection')!=='success')return;const _0x32879a=new URL(window['location']);_0x32879a['searchParams']['delete']('git_connection'),_0x32879a['searchParams']['delete']('provider'),window['history']['replaceState']({},'',_0x32879a),Utils['showSuccess']('Account\x20connected\x20successfully');const _0x41a245=loadAndClearPendingSetupRepoAction();if(!_0x41a245)return;if(_0x41a245['action']==='pull')setTimeout(()=>pullRepositoryChanges(),0x1f4);else{if(_0x41a245['action']==='push')setTimeout(()=>pushRepositoryChanges(),0x1f4);else{if(_0x41a245['action']==='commit'){const {message:_0x5775be,pullFirst:_0x1177ce,push:_0x3e8e42}=_0x41a245['data'];setTimeout(async()=>{try{const _0x3ddf51=await API['post']('/environments/git/commit',{'message':_0x5775be,'pullFirst':_0x1177ce,'push':_0x3e8e42});_0x3ddf51['success']&&(Utils['showSuccess'](_0x3e8e42?'Changes\x20committed\x20and\x20pushed':'Changes\x20committed\x20locally'),state['modifiedFiles']['clear'](),updateButtonStates(),await refreshRepositoryGitStatus(),state['selectedEnv']&&await loadEnvironmentDetails(state['selectedEnv']));}catch(_0x256563){console['error']('Commit\x20retry\x20failed:',_0x256563),Utils['showError'](_0x256563['message']||'Failed\x20to\x20commit\x20changes');}},0x1f4);}}}}function initGitConnectionsRequiredModal(){const _0x35466b=document['getElementById']('git-connections-required-modal');if(!_0x35466b)return;const _0x4fdbaf=_0x35466b['querySelector']('.modal-close'),_0x7f76b6=document['getElementById']('git-connections-close-btn'),_0x379d03=_0x35466b['querySelector']('.modal-overlay'),_0x52845d=()=>{_0x35466b['hidden']=!![];};_0x4fdbaf?.['addEventListener']('click',_0x52845d),_0x7f76b6?.['addEventListener']('click',_0x52845d),_0x379d03?.['addEventListener']('click',_0x52845d);}function showSetupRepoConnectPrompt(_0x777d51,_0x325a03){const _0x152cf4=document['getElementById']('git-connections-required-modal'),_0x2a4ffa=document['getElementById']('git-connections-required-list');if(!_0x152cf4||!_0x2a4ffa){Utils['showError']('Your\x20account\x20is\x20not\x20connected\x20to\x20provider\x20\x22'+_0x777d51+'\x22.\x20Please\x20connect\x20via\x20Settings.');return;}const _0x5aeba2=_0x325a03==='github'?'<svg\x20viewBox=\x220\x200\x2098\x2096\x22\x20fill=\x22currentColor\x22><path\x20fill-rule=\x22evenodd\x22\x20clip-rule=\x22evenodd\x22\x20d=\x22M48.854\x200C21.839\x200\x200\x2022\x200\x2049.217c0\x2021.756\x2013.993\x2040.172\x2033.405\x2046.69\x202.427.49\x203.316-1.059\x203.316-2.362\x200-1.141-.08-5.052-.08-9.127-13.59\x202.934-16.42-5.867-16.42-5.867-2.184-5.704-5.42-7.17-5.42-7.17-4.448-3.015.324-3.015.324-3.015\x204.934.326\x207.523\x205.052\x207.523\x205.052\x204.367\x207.496\x2011.404\x205.378\x2014.235\x204.074.404-3.178\x201.699-5.378\x203.074-6.6-10.839-1.141-22.243-5.378-22.243-24.283\x200-5.378\x201.94-9.778\x205.014-13.2-.485-1.222-2.184-6.275.486-13.038\x200\x200\x204.125-1.304\x2013.426\x205.052a46.97\x2046.97\x200\x200\x201\x2012.214-1.63c4.125\x200\x208.33.571\x2012.213\x201.63\x209.302-6.356\x2013.427-5.052\x2013.427-5.052\x202.67\x206.763.97\x2011.816.485\x2013.038\x203.155\x203.422\x205.015\x207.822\x205.015\x2013.2\x200\x2018.905-11.404\x2023.06-22.324\x2024.283\x201.78\x201.548\x203.316\x204.481\x203.316\x209.126\x200\x206.6-.08\x2011.897-.08\x2013.526\x200\x201.304.89\x202.853\x203.316\x202.364\x2019.412-6.52\x2033.405-24.935\x2033.405-46.691C97.707\x2022\x2075.788\x200\x2048.854\x200z\x22/></svg>':'<svg\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22currentColor\x22><path\x20d=\x22M13.05\x204.24L6.56\x2018.05l2.09.81L18\x209.77l.3-.41-5.25-5.12zm-4.21\x202.6l5.79\x205.64-.42.4-9.28\x202.6\x203.91-8.64zm-1.79\x2010.1l9.31-2.59.43-.39\x201.61\x201.57L4.67\x2019.2l2.38-2.26z\x22/></svg>';_0x2a4ffa['innerHTML']='\x0a\x20\x20\x20\x20<div\x20class=\x22git-provider-card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22git-provider-card-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22git-provider-card-info\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22git-provider-card-icon\x22>'+_0x5aeba2+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22git-provider-card-details\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22git-provider-card-name\x22>'+Utils['escapeHtml'](_0x777d51)+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-primary\x20btn-small\x22\x20onclick=\x22connectGitProviderFromModal(\x27'+Utils['escapeHtml'](_0x777d51)+'\x27)\x22>Connect</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20',_0x152cf4['hidden']=![];}window['connectGitProviderFromModal']=async function(_0x2a0859){try{const _0x563559=await API['post']('/api/git-oauth/start',{'provider_name':_0x2a0859,'redirect_after':window['location']['pathname']+'?git_connection=success&provider='+encodeURIComponent(_0x2a0859)}),_0x17e672=document['getElementById']('git-connections-required-modal');if(_0x17e672)_0x17e672['hidden']=!![];window['location']['href']=_0x563559['oauth_url'];}catch(_0x519ae4){console['error']('Failed\x20to\x20start\x20OAuth\x20flow:',_0x519ae4),Utils['showError'](_0x519ae4['message']||'Failed\x20to\x20start\x20connection');}};function openCommitModal(){invalidateDiffCache(),_0x44536f['showCommitModal'](document['getElementById']('commit-modal'),{'userNameEl':document['getElementById']('commit-user-name'),'userEmailEl':document['getElementById']('commit-user-email'),'filesListEl':document['getElementById']('commit-files-list'),'messageEl':document['getElementById']('commit-message'),'pushCheckboxEl':document['getElementById']('commit-push'),'errorEl':document['getElementById']('commit-error'),'user':state['currentUser'],'changedFiles':state['changedFiles'],'onFileClick':handleFileClick});}function closeCommitModal(){document['getElementById']('commit-modal')['hidden']=!![];}async function commitAndPush(){const _0x42843c=document['getElementById']('commit-error'),_0xc2d3a0=document['getElementById']('commit-message'),_0x581584=_0xc2d3a0['value']['trim']();_0x42843c['hidden']=!![],_0xc2d3a0['classList']['remove']('input-error');if(!_0x581584){_0x42843c['textContent']='Please\x20enter\x20a\x20commit\x20message',_0x42843c['hidden']=![],_0xc2d3a0['classList']['add']('input-error');return;}if(state['hasUnsavedChanges']){_0x42843c['textContent']='Please\x20save\x20your\x20changes\x20before\x20committing',_0x42843c['hidden']=![];return;}const _0xde0919=document['getElementById']('commit-pull-first')['checked'],_0xdb27f2=document['getElementById']('commit-push')['checked'];try{const _0x2306f3=document['getElementById']('commit-confirm-btn');_0x2306f3['disabled']=!![],_0x2306f3['textContent']='Committing...';const _0x5b982b=await API['post']('/environments/git/commit',{'message':_0x581584,'pullFirst':_0xde0919,'push':_0xdb27f2});_0x5b982b['success']?(Utils['showSuccess'](_0xdb27f2?'Changes\x20committed\x20and\x20pushed':'Changes\x20committed\x20locally'),state['modifiedFiles']['clear'](),updateButtonStates(),closeCommitModal(),await refreshRepositoryGitStatus(),state['selectedEnv']&&await loadEnvironmentDetails(state['selectedEnv'])):(_0x42843c['textContent']=_0x5b982b['error']||'Commit\x20failed',_0x42843c['hidden']=![]);}catch(_0x29d739){_0x29d739['message']==='setup_repo_user_not_connected'?(savePendingSetupRepoAction('commit',{'message':_0x581584,'pullFirst':_0xde0919,'push':_0xdb27f2}),closeCommitModal(),showSetupRepoConnectPrompt(state['setupRepoAuth']?.['provider'],state['setupRepoAuth']?.['provider_type'])):(_0x42843c['textContent']=_0x29d739['message']||'Failed\x20to\x20commit\x20changes',_0x42843c['hidden']=![]);}finally{const _0x23b293=document['getElementById']('commit-confirm-btn');_0x23b293['disabled']=![],_0x23b293['textContent']='Commit\x20&\x20Push';}}function handleRepoStatusClick(){const _0x782528=document['getElementById']('repo-status-text')['textContent'];_0x782528==='Uncommitted\x20changes'&&openUncommittedChangesModal();}function openUncommittedChangesModal(){invalidateDiffCache(),_0x44536f['showUncommittedChangesModal'](document['getElementById']('uncommitted-changes-modal'),document['getElementById']('uncommitted-files-list'),state['changedFiles'],handleFileClick);}function closeUncommittedChangesModal(){document['getElementById']('uncommitted-changes-modal')['hidden']=!![];}function openDiscardModal(){invalidateDiffCache(),_0x44536f['showDiscardModal'](document['getElementById']('discard-modal'),document['getElementById']('discard-files-list'),state['changedFiles'],handleFileClick);}function closeDiscardModal(){document['getElementById']('discard-modal')['hidden']=!![];}async function confirmDiscard(){try{const _0x3eaf24=document['getElementById']('discard-confirm-btn');_0x3eaf24['disabled']=!![],_0x3eaf24['textContent']='Discarding...';const _0x5740c9=await API['post']('/environments/git/discard');_0x5740c9['success']?(Utils['showSuccess']('All\x20uncommitted\x20changes\x20have\x20been\x20discarded'),state['hasUnsavedChanges']=![],state['modifiedFiles']['clear'](),updateButtonStates(),closeDiscardModal(),await refreshRepositoryGitStatus(),state['selectedEnv']&&await loadEnvironmentDetails(state['selectedEnv'])):Utils['showError'](_0x5740c9['error']||'Failed\x20to\x20discard\x20changes');}catch(_0x301236){console['error']('Discard\x20failed:',_0x301236),Utils['showError'](_0x301236['message']||'Failed\x20to\x20discard\x20changes');}finally{const _0x3a6f16=document['getElementById']('discard-confirm-btn');_0x3a6f16['disabled']=![],_0x3a6f16['textContent']='Discard\x20Changes';}}let baseImageBuildPollingInterval=null,baseImageBuildOutputEventSource=null;function openBaseImageBuildModal(){document['getElementById']('base-image-no-cache')['checked']=![],document['getElementById']('base-image-build-status')['hidden']=!![],document['getElementById']('base-image-build-start-btn')['disabled']=![],document['getElementById']('base-image-build-cancel-btn')['textContent']='Cancel';const _0x1879ff=document['getElementById']('base-image-build-output');if(_0x1879ff){_0x1879ff['hidden']=!![];const _0x11ffa9=_0x1879ff['querySelector']('pre');if(_0x11ffa9)_0x11ffa9['textContent']='';}loadBaseImageBuildHistory(),document['getElementById']('base-image-build-modal')['hidden']=![];}function closeBaseImageBuildModal(){baseImageBuildPollingInterval&&(clearInterval(baseImageBuildPollingInterval),baseImageBuildPollingInterval=null),stopBaseImageBuildOutputStreaming(),document['getElementById']('base-image-build-modal')['hidden']=!![];}async function startBaseImageBuild(){const _0x35ce64=document['getElementById']('base-image-no-cache')['checked'],_0x43aa2a=document['getElementById']('base-image-build-start-btn'),_0x1f3c84=document['getElementById']('base-image-build-cancel-btn'),_0x30da79=document['getElementById']('base-image-build-status'),_0x3c8071=_0x30da79['querySelector']('.build-status-message');_0x43aa2a['disabled']=!![],_0x43aa2a['innerHTML']='<span>Building...</span>',_0x30da79['hidden']=![],_0x3c8071['innerHTML']='<span\x20class=\x22status-icon\x22>⏳</span>\x20Starting\x20base\x20image\x20build...',_0x3c8071['className']='build-status-message\x20status-building',showBaseImageBuildOutput(),clearBaseImageBuildOutput();try{const _0x49f131=await API['post']('/build/base',{'noCache':_0x35ce64});if(_0x49f131['buildId'])startBaseImageBuildOutputStreaming(_0x49f131['buildId']),pollBaseImageBuildStatus(_0x49f131['buildId']);else throw new Error('No\x20build\x20ID\x20received');}catch(_0x38e745){console['error']('Failed\x20to\x20start\x20base\x20image\x20build:',_0x38e745),_0x3c8071['innerHTML']='<span\x20class=\x22status-icon\x22>❌</span>\x20Failed\x20to\x20start\x20build:\x20'+(_0x38e745['message']||'Unknown\x20error'),_0x3c8071['className']='build-status-message\x20status-failed',_0x43aa2a['innerHTML']='<span>Build</span>',_0x43aa2a['disabled']=![];}}function pollBaseImageBuildStatus(_0x16bd90){const _0x57d479=document['getElementById']('base-image-build-status'),_0x40f12d=_0x57d479['querySelector']('.build-status-message'),_0x420c48=document['getElementById']('base-image-build-start-btn'),_0x7a4003=document['getElementById']('base-image-build-cancel-btn');baseImageBuildPollingInterval=setInterval(async()=>{try{const _0x4f3b65=await API['get']('/build/base/status/'+_0x16bd90);if(_0x4f3b65['status']==='building'){const _0x44f36a=_0x4f3b65['duration']?Math['floor'](_0x4f3b65['duration']/0x3e8):0x0;_0x40f12d['innerHTML']='<span\x20class=\x22status-icon\x22>⏳</span>\x20Building\x20base\x20image...\x20('+formatDuration(_0x44f36a*0x3e8)+')',_0x40f12d['className']='build-status-message\x20status-building';}else{if(_0x4f3b65['status']==='success'){clearInterval(baseImageBuildPollingInterval),baseImageBuildPollingInterval=null,stopBaseImageBuildOutputStreaming();const _0x45cf09=_0x4f3b65['duration']?formatDuration(_0x4f3b65['duration']):'unknown';_0x40f12d['innerHTML']='<span\x20class=\x22status-icon\x22>✅</span>\x20Base\x20image\x20built\x20successfully\x20in\x20'+_0x45cf09,_0x40f12d['className']='build-status-message\x20status-success',_0x420c48['innerHTML']='<span>Build</span>',_0x420c48['disabled']=![],_0x7a4003['textContent']='Close',Utils['showSuccess']('Base\x20image\x20built\x20successfully'),loadBaseImageBuildHistory();}else _0x4f3b65['status']==='failed'&&(clearInterval(baseImageBuildPollingInterval),baseImageBuildPollingInterval=null,stopBaseImageBuildOutputStreaming(),_0x40f12d['innerHTML']='<span\x20class=\x22status-icon\x22>❌</span>\x20Build\x20failed:\x20'+(_0x4f3b65['error']||'Unknown\x20error'),_0x40f12d['className']='build-status-message\x20status-failed',_0x420c48['innerHTML']='<span>Build</span>',_0x420c48['disabled']=![],Utils['showError']('Base\x20image\x20build\x20failed\x20-\x20check\x20output\x20for\x20details'),loadBaseImageBuildHistory());}}catch(_0x43ae69){console['error']('Failed\x20to\x20poll\x20build\x20status:',_0x43ae69);}},0xbb8);}function formatDuration(_0x4feae7){const _0x2f3ed1=Math['floor'](_0x4feae7/0x3e8),_0x71525d=Math['floor'](_0x2f3ed1/0x3c),_0x5855b3=_0x2f3ed1%0x3c;if(_0x71525d>0x0)return _0x71525d+'m\x20'+_0x5855b3+'s';return _0x2f3ed1+'s';}function formatTriggeredBy(_0x2e3dc0){if(typeof _0x2e3dc0!=='string'||_0x2e3dc0['trim']()==='')return'Manual';const _0x31daeb=_0x2e3dc0['trim']()['toLowerCase']();if(_0x31daeb==='manual')return'Manual';if(_0x31daeb==='scheduled'||_0x31daeb==='schedule')return'Scheduled';if(_0x31daeb==='system')return'System';return _0x2e3dc0;}async function loadBaseImageBuildHistory(){const _0x15d154=document['getElementById']('base-image-build-history');if(!_0x15d154)return;try{_0x15d154['innerHTML']='<p\x20class=\x22text-muted\x22>Loading...</p>';const _0x4af367=await API['get']('/build/base/history?limit=5'),_0x10824f=_0x4af367['builds']||[];if(_0x10824f['length']===0x0){_0x15d154['innerHTML']='<p\x20class=\x22text-muted\x22>No\x20build\x20history\x20yet.</p>';return;}const _0xe240=_0x10824f['map'](_0x10ca4a=>{const _0x224460=new Date(_0x10ca4a['startTime']),_0x3b75b1=_0x224460['toLocaleDateString']()+'\x20'+_0x224460['toLocaleTimeString']([],{'hour':'2-digit','minute':'2-digit'}),_0x3bf6bd=_0x10ca4a['duration']?formatDuration(_0x10ca4a['duration']):'-',_0x5460a1=_0x10ca4a['status']==='success'?'✅':'❌',_0x20648f=formatTriggeredBy(_0x10ca4a['triggeredBy']),_0x45ebf7=Utils['escapeHtml'](_0x10ca4a['buildId']);return'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22build-history-row\x20'+_0x10ca4a['status']+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22build-status-icon\x22>'+_0x5460a1+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22build-date\x22>'+_0x3b75b1+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22build-duration\x22>'+_0x3bf6bd+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22build-triggered-by\x22>'+Utils['escapeHtml'](_0x20648f)+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-small\x22\x20onclick=\x22viewBaseImageBuildOutput(\x27'+_0x45ebf7+'\x27)\x22\x20title=\x22View\x20build\x20output\x22\x20style=\x22padding:\x202px\x206px;\x20font-size:\x2011px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20View\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20';})['join']('');_0x15d154['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22build-history-compact-list\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+_0xe240+'\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';}catch(_0x21e672){console['error']('Failed\x20to\x20load\x20base\x20image\x20build\x20history:',_0x21e672),_0x15d154['innerHTML']='<p\x20class=\x22text-muted\x22\x20style=\x22color:\x20var(--color-error);\x22>Failed\x20to\x20load\x20history</p>';}}function showBaseImageBuildOutput(){const _0x40699f=document['getElementById']('base-image-build-output');_0x40699f&&(_0x40699f['hidden']=![]);}function clearBaseImageBuildOutput(){const _0x4505d1=document['getElementById']('base-image-build-output');if(_0x4505d1){const _0x4b8b57=_0x4505d1['querySelector']('pre');_0x4b8b57&&(_0x4b8b57['textContent']='');}}function appendToBaseImageBuildOutput(_0x340a17){const _0x2e8f6b=document['getElementById']('base-image-build-output');if(_0x2e8f6b){const _0x65d258=_0x2e8f6b['querySelector']('pre');_0x65d258&&(_0x65d258['textContent']+=_0x340a17,_0x2e8f6b['scrollTop']=_0x2e8f6b['scrollHeight']);}}function startBaseImageBuildOutputStreaming(_0x4f2c84){stopBaseImageBuildOutputStreaming();try{baseImageBuildOutputEventSource=new EventSource('/build/output/stream/'+_0x4f2c84),baseImageBuildOutputEventSource['onmessage']=_0x7209f4=>{try{const _0x3502a0=JSON['parse'](_0x7209f4['data']);if(_0x3502a0['type']==='output')appendToBaseImageBuildOutput(_0x3502a0['data']);else _0x3502a0['type']==='complete'&&(console['log']('Base\x20image\x20build\x20completed\x20via\x20stream:',_0x3502a0),stopBaseImageBuildOutputStreaming());}catch(_0x243976){console['error']('Failed\x20to\x20parse\x20base\x20image\x20build\x20output\x20event:',_0x243976);}},baseImageBuildOutputEventSource['onerror']=_0x24773b=>{console['error']('Base\x20image\x20build\x20output\x20stream\x20error:',_0x24773b),baseImageBuildOutputEventSource&&baseImageBuildOutputEventSource['readyState']===EventSource['CLOSED']&&stopBaseImageBuildOutputStreaming();};}catch(_0x422a5c){console['error']('Failed\x20to\x20start\x20base\x20image\x20build\x20output\x20streaming:',_0x422a5c);}}function stopBaseImageBuildOutputStreaming(){baseImageBuildOutputEventSource&&(baseImageBuildOutputEventSource['close'](),baseImageBuildOutputEventSource=null);}window['viewBaseImageBuildOutput']=async function(_0x55d776){showBaseImageBuildOutput(),clearBaseImageBuildOutput();const _0x521365=document['getElementById']('base-image-build-output');if(_0x521365){const _0x41bbe1=_0x521365['querySelector']('pre');_0x41bbe1&&(_0x41bbe1['textContent']='Loading\x20build\x20output...');}try{const _0x230b15=await API['get']('/build/output/'+_0x55d776);if(_0x230b15['output']&&_0x521365){const _0x12ec60=_0x521365['querySelector']('pre');_0x12ec60&&(_0x12ec60['textContent']=_0x230b15['output']);}else{if(_0x521365){const _0x1a7f49=_0x521365['querySelector']('pre');_0x1a7f49&&(_0x1a7f49['textContent']='No\x20output\x20available\x20for\x20this\x20build.');}}}catch(_0x3b0ccb){console['error']('Failed\x20to\x20load\x20base\x20image\x20build\x20output:',_0x3b0ccb);if(_0x521365){const _0x54ee5b=_0x521365['querySelector']('pre');_0x54ee5b&&(_0x54ee5b['textContent']='Failed\x20to\x20load\x20build\x20output:\x20'+(_0x3b0ccb['message']||'Unknown\x20error'));}}};const AUTOMATION_WEEKDAYS=[{'value':'0','label':'Sunday'},{'value':'1','label':'Monday'},{'value':'2','label':'Tuesday'},{'value':'3','label':'Wednesday'},{'value':'4','label':'Thursday'},{'value':'5','label':'Friday'},{'value':'6','label':'Saturday'}],FALLBACK_AUTOMATION_AGENTS=['claude','codex','gemini'],AUTOMATION_AGENT_LABELS={'claude':'Claude','codex':'Codex','gemini':'Gemini'};function formatAutomationTime(_0x3647a9,_0x5953a2){const _0xae1585=Number['parseInt'](_0x3647a9,0xa),_0x385705=Number['parseInt'](_0x5953a2,0xa);if(!Number['isInteger'](_0xae1585)||!Number['isInteger'](_0x385705))return _0x3647a9+':'+_0x5953a2;const _0x4824ac=_0xae1585>=0xc?'PM':'AM',_0x363455=_0xae1585%0xc||0xc;return _0x363455+':'+String(_0x385705)['padStart'](0x2,'0')+'\x20'+_0x4824ac;}function parseAutomationTimeInputValue(_0xecdb54,_0x470748='0',_0x163a6e='0'){const _0x3001e2={'hour':String(Number['parseInt'](_0x470748,0xa)||0x0),'minute':String(Number['parseInt'](_0x163a6e,0xa)||0x0)},_0x2a5110=String(_0xecdb54||'')['trim']()['match'](/^(\d{1,2}):(\d{2})$/);if(!_0x2a5110)return _0x3001e2;const _0x583745=Number['parseInt'](_0x2a5110[0x1],0xa),_0x3aed28=Number['parseInt'](_0x2a5110[0x2],0xa);if(!Number['isInteger'](_0x583745)||_0x583745<0x0||_0x583745>0x17)return _0x3001e2;if(!Number['isInteger'](_0x3aed28)||_0x3aed28<0x0||_0x3aed28>0x3b)return _0x3001e2;return{'hour':String(_0x583745),'minute':String(_0x3aed28)};}function formatAutomationTimeInputValue(_0x455c54,_0x2cc4c2,_0x4e69a6='0',_0x47d9b4='0'){const _0x56b9d0=parseAutomationTimeInputValue(String(_0x455c54??'')['trim']()+':'+String(_0x2cc4c2??'')['trim']()['padStart'](0x2,'0'),_0x4e69a6,_0x47d9b4);return _0x56b9d0['hour']['padStart'](0x2,'0')+':'+_0x56b9d0['minute']['padStart'](0x2,'0');}function getAutomationTimeInputState(_0x3e7e03,_0x9381df='0',_0x15eb49='0'){return parseAutomationTimeInputValue(document['getElementById'](_0x3e7e03)?.['value']||'',_0x9381df,_0x15eb49);}function setAutomationTimeInputValue(_0x5ce613,_0x2f5915,_0x3e29c8,_0x45ccf6='0',_0x4d8bb3='0'){const _0x1502ec=document['getElementById'](_0x5ce613);if(!_0x1502ec)return;_0x1502ec['value']=formatAutomationTimeInputValue(_0x2f5915,_0x3e29c8,_0x45ccf6,_0x4d8bb3);}function formatOrdinal(_0x2a7fb9){const _0x5d272b=Number['parseInt'](_0x2a7fb9,0xa);if(!Number['isInteger'](_0x5d272b))return''+_0x2a7fb9;const _0x533f71=_0x5d272b%0xa,_0x29c46d=_0x5d272b%0x64;if(_0x533f71===0x1&&_0x29c46d!==0xb)return _0x5d272b+'st';if(_0x533f71===0x2&&_0x29c46d!==0xc)return _0x5d272b+'nd';if(_0x533f71===0x3&&_0x29c46d!==0xd)return _0x5d272b+'rd';return _0x5d272b+'th';}function initializeAutomationModalCustomSelects(){for(const _0x33c01e of AUTOMATION_MODAL_SELECT_IDS){if(automationCustomSelects[_0x33c01e])continue;const _0x1a91b1=document['getElementById'](_0x33c01e);if(!_0x1a91b1)continue;automationCustomSelects[_0x33c01e]=new CustomSelect(_0x1a91b1,{'searchable':_0x33c01e==='automation-template-name'});}}function refreshAutomationModalCustomSelect(_0x55a04b){const _0x275746=automationCustomSelects[_0x55a04b];if(!_0x275746||!_0x275746['nativeSelect'])return;_0x275746['selectedValue']=_0x275746['nativeSelect']['value']||'',_0x275746['updateDisplay']();}function refreshAllAutomationModalCustomSelects(){for(const _0x2ca66e of AUTOMATION_MODAL_SELECT_IDS){refreshAutomationModalCustomSelect(_0x2ca66e);}}function initializeAutomationInstructionsEditor(){if(automationInstructionsEditor)return;const _0x1ce2dd=document['getElementById']('automation-instructions');if(!_0x1ce2dd||!window['MarkdownEditor'])return;automationInstructionsEditor=new window['MarkdownEditor'](_0x1ce2dd,{'placeholder':'What\x20should\x20the\x20agent\x20do?','minHeight':'140px','toolbar':!![]});}function setAutomationInstructionsValue(_0x2387b7=''){if(automationInstructionsEditor){automationInstructionsEditor['setMarkdown'](_0x2387b7||'');return;}const _0x5bd475=document['getElementById']('automation-instructions');_0x5bd475&&(_0x5bd475['value']=_0x2387b7||'');}function getAutomationInstructionsValue(){if(automationInstructionsEditor)return automationInstructionsEditor['getMarkdown']();return document['getElementById']('automation-instructions')?.['value']||'';}function initializeAutomationFormOptions(){const _0x2d798a=(_0x53d5ce,_0x5205ae)=>{const _0x4d34a5=document['getElementById'](_0x53d5ce);if(!_0x4d34a5||_0x4d34a5['dataset']['initialized']==='true')return;_0x4d34a5['value']=_0x5205ae,_0x4d34a5['dataset']['initialized']='true';},_0x2816aa=(_0x388b4e,_0x4c25=![])=>{const _0x1c7d42=document['getElementById'](_0x388b4e);if(!_0x1c7d42||_0x1c7d42['dataset']['initialized']==='true')return;const _0x2a83b8=[];_0x4c25&&_0x2a83b8['push']('<option\x20value=\x22\x22>Any</option>');for(let _0x2efc1a=0x0;_0x2efc1a<=0x17;_0x2efc1a+=0x1){const _0x523138=String(_0x2efc1a);_0x2a83b8['push']('<option\x20value=\x22'+_0x523138+'\x22>'+formatAutomationTime(_0x2efc1a,0x0)+'</option>');}_0x1c7d42['innerHTML']=_0x2a83b8['join'](''),_0x1c7d42['dataset']['initialized']='true';};_0x2d798a('automation-daily-time','02:00'),_0x2d798a('automation-weekly-time','09:00'),_0x2d798a('automation-monthly-time','00:00'),_0x2816aa('automation-recurring-start-hour',!![]),_0x2816aa('automation-recurring-end-hour',!![]);const _0x24e5af=document['getElementById']('automation-weekly-day');_0x24e5af&&_0x24e5af['dataset']['initialized']!=='true'&&(_0x24e5af['innerHTML']=AUTOMATION_WEEKDAYS['map'](_0x3a666f=>'<option\x20value=\x22'+_0x3a666f['value']+'\x22>'+_0x3a666f['label']+'</option>')['join'](''),_0x24e5af['dataset']['initialized']='true');const _0x34d8a8=document['getElementById']('automation-monthly-day');if(_0x34d8a8&&_0x34d8a8['dataset']['initialized']!=='true'){const _0x3ad0a8=[];for(let _0xf52d8c=0x1;_0xf52d8c<=AUTOMATION_MONTHLY_DAY_MAX;_0xf52d8c+=0x1){_0x3ad0a8['push']('<option\x20value=\x22'+_0xf52d8c+'\x22>'+formatOrdinal(_0xf52d8c)+'</option>');}_0x34d8a8['innerHTML']=_0x3ad0a8['join'](''),_0x34d8a8['dataset']['initialized']='true';}const _0x247137=document['getElementById']('automation-recurring-days');_0x247137&&_0x247137['dataset']['initialized']!=='true'&&(_0x247137['innerHTML']=AUTOMATION_WEEKDAYS['map'](_0x243ed4=>'\x0a\x20\x20\x20\x20\x20\x20<label\x20class=\x22day-toggle-label\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20value=\x22'+_0x243ed4['value']+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span>'+_0x243ed4['label']['slice'](0x0,0x3)+'</span>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20')['join'](''),_0x247137['dataset']['initialized']='true'),refreshAllAutomationModalCustomSelects();}function formatAutomationAgentLabel(_0x387f06){const _0x42da1e=String(_0x387f06||'')['trim']();if(!_0x42da1e)return'Agent';if(AUTOMATION_AGENT_LABELS[_0x42da1e])return AUTOMATION_AGENT_LABELS[_0x42da1e];return _0x42da1e['replace'](/[_-]+/g,'\x20')['replace'](/\b\w/g,_0x3b883=>_0x3b883['toUpperCase']());}function getAvailableAutomationAgentNames(){const _0xb2c63d=Object['entries'](state['availableModels']||{})['filter'](([_0x97a0d8,_0x1ee9be])=>Boolean(_0x97a0d8)&&_0x1ee9be&&typeof _0x1ee9be==='object'&&Array['isArray'](_0x1ee9be['models']))['map'](([_0x4c8707])=>_0x4c8707);if(_0xb2c63d['length']>0x0)return _0xb2c63d;return[...FALLBACK_AUTOMATION_AGENTS];}async function loadAvailableAutomationModels(_0x418f5a=![]){if(state['availableModelsLoaded']&&!_0x418f5a)return state['availableModels'];state['availableModelsLoaded']=!![];if(!state['currentUser']?.['hasSettingsView'])return state['availableModels']=null,state['availableModels'];try{const _0x5588a9=await API['get']('/settings/available-models');state['availableModels']=_0x5588a9&&typeof _0x5588a9==='object'?_0x5588a9:null;}catch(_0xeaacc8){state['availableModels']=null,console['warn']('Failed\x20to\x20load\x20available\x20models\x20for\x20automations:',_0xeaacc8);}return state['availableModels'];}function renderAutomationAgentOptions(_0x392b7e=''){const _0x3f1b0d=document['getElementById']('automation-agent-name');if(!_0x3f1b0d)return;const _0x6e1cc0=String(state['selectedEnvData']?.['default_agent']||'')['trim'](),_0xbc6678=String(_0x392b7e||_0x3f1b0d['value']||'')['trim'](),_0x250b7b=[],_0xda83d5=_0x4c38b7=>{const _0x39aad6=String(_0x4c38b7||'')['trim']();if(!_0x39aad6||_0x250b7b['includes'](_0x39aad6))return;_0x250b7b['push'](_0x39aad6);};getAvailableAutomationAgentNames()['forEach'](_0xda83d5),_0xda83d5(_0x6e1cc0),_0xda83d5(_0xbc6678);_0x250b7b['length']===0x0&&_0xda83d5('claude');_0x3f1b0d['innerHTML']=_0x250b7b['map'](_0x4f6051=>'<option\x20value=\x22'+Utils['escapeHtml'](_0x4f6051)+'\x22>'+Utils['escapeHtml'](formatAutomationAgentLabel(_0x4f6051))+'</option>')['join']('');const _0x17c286=_0x250b7b['includes'](_0xbc6678)?_0xbc6678:_0x250b7b['includes'](_0x6e1cc0)?_0x6e1cc0:_0x250b7b[0x0];_0x17c286&&(_0x3f1b0d['value']=_0x17c286),refreshAutomationModalCustomSelect('automation-agent-name');}function setAutomationAgentSelection(_0x5c1844=''){renderAutomationAgentOptions(_0x5c1844),updateAutomationAgentFields();}function updateAutomationFrequencyFields(){const _0x428e36=document['getElementById']('automation-frequency')?.['value']||'daily',_0x2e021c={'daily':document['getElementById']('automation-daily-fields'),'weekly':document['getElementById']('automation-weekly-fields'),'monthly':document['getElementById']('automation-monthly-fields'),'recurring':document['getElementById']('automation-recurring-fields'),'custom':document['getElementById']('automation-custom-fields')};Object['entries'](_0x2e021c)['forEach'](([_0x5a5aa2,_0x86b194])=>{if(!_0x86b194)return;_0x86b194['hidden']=_0x5a5aa2!==_0x428e36;});}function updateAutomationAgentFields(){const _0x403d7b=document['getElementById']('automation-agent-name')?.['value']||state['selectedEnvData']?.['default_agent']||getAvailableAutomationAgentNames()[0x0]||'claude',_0x4af82d=document['getElementById']('automation-effort-row'),_0x3ffacb=document['getElementById']('automation-reasoning-row');if(_0x4af82d)_0x4af82d['hidden']=_0x403d7b!=='claude';if(_0x3ffacb)_0x3ffacb['hidden']=_0x403d7b!=='codex';}function getSelectedAutomationTaskMode(){return document['querySelector']('input[name=\x22automation-task-mode\x22]:checked')?.['value']||'instructions';}function updateAutomationTaskMode(){const _0x2f645a=getSelectedAutomationTaskMode(),_0x48e819=document['getElementById']('automation-template-row'),_0x34087f=document['getElementById']('automation-instructions-label');if(_0x48e819)_0x48e819['hidden']=_0x2f645a!=='template';_0x34087f&&(_0x34087f['textContent']=_0x2f645a==='template'?'Additional\x20Instructions':'Instructions');}function parseRecurringDayToken(_0x53a541){const _0x23e25f=new Set(),_0x29bc39=String(_0x53a541||'')['trim']();if(!_0x29bc39||_0x29bc39==='*')return _0x23e25f;return _0x29bc39['split'](',')['forEach'](_0x13f421=>{const _0x2a2d14=_0x13f421['trim']();if(!_0x2a2d14)return;if(_0x2a2d14['includes']('-')){const [_0x2485e1,_0x471369]=_0x2a2d14['split']('-'),_0x584f8e=Number['parseInt'](_0x2485e1,0xa),_0x64642f=Number['parseInt'](_0x471369,0xa);if(Number['isInteger'](_0x584f8e)&&Number['isInteger'](_0x64642f)&&_0x584f8e<=_0x64642f)for(let _0x5a1bfd=_0x584f8e;_0x5a1bfd<=_0x64642f;_0x5a1bfd+=0x1){_0x23e25f['add'](String(_0x5a1bfd===0x7?0x0:_0x5a1bfd));}return;}const _0x3c338c=Number['parseInt'](_0x2a2d14,0xa);Number['isInteger'](_0x3c338c)&&_0x23e25f['add'](String(_0x3c338c===0x7?0x0:_0x3c338c));}),_0x23e25f;}function getRecurringDaySelectionToken(){const _0x4b4906=document['querySelectorAll']('#automation-recurring-days\x20input[type=\x22checkbox\x22]:checked'),_0x49885d=[..._0x4b4906]['map'](_0x13f6ac=>_0x13f6ac['value']);if(_0x49885d['length']===0x0)return'*';return _0x49885d['sort']((_0x173627,_0x8815a2)=>Number['parseInt'](_0x173627,0xa)-Number['parseInt'](_0x8815a2,0xa)),_0x49885d['join'](',');}function setRecurringDaySelectionToken(_0x5544d5){const _0xad9c6d=parseRecurringDayToken(_0x5544d5);document['querySelectorAll']('#automation-recurring-days\x20input[type=\x22checkbox\x22]')['forEach'](_0x39f062=>{_0x39f062['checked']=_0xad9c6d['has'](_0x39f062['value']);});}function getAutomationScheduleFormState(){const _0x5a5a22=getAutomationTimeInputState('automation-daily-time','2','0'),_0x1a6ad2=getAutomationTimeInputState('automation-weekly-time','9','0'),_0xbef34c=getAutomationTimeInputState('automation-monthly-time','0','0');return{'frequency':document['getElementById']('automation-frequency')?.['value']||'daily','customCron':document['getElementById']('automation-custom-cron')?.['value']?.['trim']()||'','dailyHour':_0x5a5a22['hour'],'dailyMinute':_0x5a5a22['minute'],'weeklyDay':document['getElementById']('automation-weekly-day')?.['value']||'1','weeklyHour':_0x1a6ad2['hour'],'weeklyMinute':_0x1a6ad2['minute'],'monthlyDay':document['getElementById']('automation-monthly-day')?.['value']||'1','monthlyHour':_0xbef34c['hour'],'monthlyMinute':_0xbef34c['minute'],'recurringInterval':document['getElementById']('automation-recurring-interval')?.['value']||'*/30\x20*\x20*\x20*\x20*','recurringStartHour':document['getElementById']('automation-recurring-start-hour')?.['value']||'','recurringEndHour':document['getElementById']('automation-recurring-end-hour')?.['value']||'','recurringDayToken':getRecurringDaySelectionToken()};}function buildAutomationScheduleFromForm(){const _0x17cae6=getAutomationScheduleFormState(),_0x594e4d=_0x17cae6['frequency'],_0x1a5729=_0x17cae6['customCron'];if(_0x594e4d==='custom')return{'cron':buildAutomationCronFromFormState(_0x17cae6),'summary':_0x1a5729?'Custom:\x20'+_0x1a5729:'Custom\x20cron\x20expression'};if(_0x594e4d==='daily')return{'cron':buildAutomationCronFromFormState(_0x17cae6),'summary':'Every\x20day\x20at\x20'+formatAutomationTime(_0x17cae6['dailyHour'],_0x17cae6['dailyMinute'])};if(_0x594e4d==='weekly'){const _0x5a484d=AUTOMATION_WEEKDAYS['find'](_0x3af282=>_0x3af282['value']===_0x17cae6['weeklyDay'])?.['label']||'Selected\x20day';return{'cron':buildAutomationCronFromFormState(_0x17cae6),'summary':'Every\x20'+_0x5a484d+'\x20at\x20'+formatAutomationTime(_0x17cae6['weeklyHour'],_0x17cae6['weeklyMinute'])};}if(_0x594e4d==='monthly')return{'cron':buildAutomationCronFromFormState(_0x17cae6),'summary':formatOrdinal(_0x17cae6['monthlyDay'])+'\x20of\x20every\x20month\x20at\x20'+formatAutomationTime(_0x17cae6['monthlyHour'],_0x17cae6['monthlyMinute'])};const _0x1d6265=_0x17cae6['recurringInterval'],[_0x470d6e,_0x390aba]=_0x1d6265['split']('\x20'),_0x1e23e6=[],_0x51775b=_0x17cae6['recurringStartHour'],_0x54e59e=_0x17cae6['recurringEndHour'];if(_0x51775b!==''&&_0x54e59e!==''){const _0x45c6d3=Number['parseInt'](_0x51775b,0xa),_0x218e93=Number['parseInt'](_0x54e59e,0xa);Number['isInteger'](_0x45c6d3)&&Number['isInteger'](_0x218e93)&&_0x45c6d3<=_0x218e93&&_0x1e23e6['push'](formatAutomationTime(_0x45c6d3,0x0)+'\x20-\x20'+formatAutomationTime(_0x218e93,0x0));}const _0x198ef0=_0x17cae6['recurringDayToken'];if(_0x198ef0!=='*'){const _0x4a1e5d=_0x198ef0['split'](',')['map'](_0x2941ba=>AUTOMATION_WEEKDAYS['find'](_0x438c1a=>_0x438c1a['value']===_0x2941ba)?.['label']?.['slice'](0x0,0x3))['filter'](Boolean);_0x4a1e5d['length']>0x0&&_0x1e23e6['push'](_0x4a1e5d['join'](',\x20'));}let _0x4f35df='';if(_0x470d6e==='*/15')_0x4f35df='Every\x2015\x20minutes';else{if(_0x470d6e==='*/30')_0x4f35df='Every\x2030\x20minutes';else{if(_0x470d6e==='0'&&_0x390aba==='*')_0x4f35df='Every\x20hour';else{if(_0x470d6e==='0'&&_0x390aba['startsWith']('*/'))_0x4f35df='Every\x20'+_0x390aba['slice'](0x2)+'\x20hours';else _0x4f35df='Recurring\x20schedule\x20('+_0x1d6265+')';}}}return _0x1e23e6['length']>0x0&&(_0x4f35df=_0x4f35df+',\x20'+_0x1e23e6['join'](',\x20')),{'cron':buildAutomationCronFromFormState(_0x17cae6),'summary':_0x4f35df};}function updateAutomationScheduleSummary(){const _0x435e51=document['getElementById']('automation-schedule-summary');if(!_0x435e51)return;try{const {summary:_0x199287}=buildAutomationScheduleFromForm();_0x435e51['textContent']=_0x199287||'Choose\x20schedule\x20options';}catch(_0x446575){_0x435e51['textContent']='Invalid\x20schedule\x20settings:\x20'+_0x446575['message'];}}function describeAutomationCron(_0x5dd6b4){const _0x3529f2=String(_0x5dd6b4||'')['trim'](),_0x55b29a=_0x3529f2['match'](/^(\d{1,2}) (\d{1,2}) \* \* \*$/);if(_0x55b29a)return'Every\x20day\x20at\x20'+formatAutomationTime(_0x55b29a[0x2],_0x55b29a[0x1]);const _0x4477cc=_0x3529f2['match'](/^(\d{1,2}) (\d{1,2}) \* \* ([0-7])$/);if(_0x4477cc){const _0x1cb1dd=_0x4477cc[0x3]==='7'?'0':_0x4477cc[0x3],_0x269c98=AUTOMATION_WEEKDAYS['find'](_0x415273=>_0x415273['value']===_0x1cb1dd)?.['label']||'Day\x20'+_0x1cb1dd;return'Every\x20'+_0x269c98+'\x20at\x20'+formatAutomationTime(_0x4477cc[0x2],_0x4477cc[0x1]);}const _0x5c6955=_0x3529f2['match'](/^(\d{1,2}) (\d{1,2}) (\d{1,2}) \* \*$/);if(_0x5c6955)return formatOrdinal(_0x5c6955[0x3])+'\x20of\x20every\x20month\x20at\x20'+formatAutomationTime(_0x5c6955[0x2],_0x5c6955[0x1]);const _0x4270d7=_0x3529f2['match'](/^(\*\/15|\*\/30|0) ([^\s]+) \* \* ([^\s]+)$/);if(_0x4270d7){const [_0x54612c,_0x2d311a,_0x2f9f75,_0x16f732]=_0x4270d7;let _0x14b5f3='Recurring';if(_0x2d311a==='*/15')_0x14b5f3='Every\x2015\x20minutes';else{if(_0x2d311a==='*/30')_0x14b5f3='Every\x2030\x20minutes';else{if(_0x2d311a==='0'&&(_0x2f9f75==='*'||/\d+-\d+$/['test'](_0x2f9f75)))_0x14b5f3='Every\x20hour';else{if(_0x2d311a==='0'&&_0x2f9f75['startsWith']('*/'))_0x14b5f3='Every\x20'+_0x2f9f75['slice'](0x2)+'\x20hours';else{if(_0x2d311a==='0'){const _0x25e1cf=_0x2f9f75['match'](/^[\d-]+\/(\d+)$/);if(_0x25e1cf)_0x14b5f3='Every\x20'+_0x25e1cf[0x1]+'\x20hours';}}}}}const _0xaaf9f1=[_0x14b5f3],_0x5830a4=_0x2f9f75['match'](/^(\d+)-(\d+)(?:\/\d+)?$/);_0x5830a4&&_0xaaf9f1['push'](formatAutomationTime(_0x5830a4[0x1],0x0)+'\x20-\x20'+formatAutomationTime(_0x5830a4[0x2],0x0));if(_0x16f732!=='*'){const _0x428563=[...parseRecurringDayToken(_0x16f732)]['sort']((_0x3fc8b5,_0x322472)=>Number['parseInt'](_0x3fc8b5,0xa)-Number['parseInt'](_0x322472,0xa))['map'](_0x145cfc=>AUTOMATION_WEEKDAYS['find'](_0x302003=>_0x302003['value']===_0x145cfc)?.['label']?.['slice'](0x0,0x3))['filter'](Boolean);_0x428563['length']>0x0&&_0xaaf9f1['push'](_0x428563['join'](',\x20'));}return _0xaaf9f1['join'](',\x20');}return _0x3529f2||'Custom\x20schedule';}function applyAutomationScheduleToForm(_0x7d3720){const _0x2d2584=parseAutomationScheduleToFormState(_0x7d3720);setAutomationTimeInputValue('automation-daily-time',_0x2d2584['dailyHour'],_0x2d2584['dailyMinute'],'2','0'),setAutomationTimeInputValue('automation-weekly-time',_0x2d2584['weeklyHour'],_0x2d2584['weeklyMinute'],'9','0'),document['getElementById']('automation-weekly-day')['value']=_0x2d2584['weeklyDay'],setAutomationTimeInputValue('automation-monthly-time',_0x2d2584['monthlyHour'],_0x2d2584['monthlyMinute'],'0','0'),document['getElementById']('automation-monthly-day')['value']=_0x2d2584['monthlyDay'],document['getElementById']('automation-recurring-interval')['value']=_0x2d2584['recurringInterval'],document['getElementById']('automation-recurring-start-hour')['value']=_0x2d2584['recurringStartHour'],document['getElementById']('automation-recurring-end-hour')['value']=_0x2d2584['recurringEndHour'],document['getElementById']('automation-custom-cron')['value']=_0x2d2584['frequency']==='custom'?_0x2d2584['customCron']:'',setRecurringDaySelectionToken(_0x2d2584['recurringDayToken']);const _0x47e510=document['getElementById']('automation-frequency');_0x47e510&&(_0x47e510['value']=_0x2d2584['frequency']),refreshAllAutomationModalCustomSelects(),updateAutomationFrequencyFields(),updateAutomationScheduleSummary();}function getAutomationTemplates(){const _0x365da5=state['selectedEnvData']?.['templates']||[];if(_0x365da5['length']>0x0)return _0x365da5['map'](_0x567943=>{const _0x200f73=_0x567943['filename']?.['replace'](/\.md$/,'')||_0x567943['title'];return{'name':_0x200f73,'title':_0x567943['title']||_0x200f73,'description':_0x567943['description']||'','parameters':_0x567943['parameters']||{}};});const _0x372fad=state['selectedEnvData']?.['task_templates']||[];return _0x372fad['map'](_0x17e67d=>({'name':_0x17e67d['name'],'title':_0x17e67d['title']||_0x17e67d['name'],'description':'','parameters':{}}));}function getSelectedAutomationTemplate(){const _0x113dc4=document['getElementById']('automation-template-name')?.['value']||'';return getAutomationTemplates()['find'](_0x34d600=>_0x34d600['name']===_0x113dc4)||null;}function renderAutomationTemplateOptions(_0x344fc1=''){const _0x265bc8=document['getElementById']('automation-template-name');if(!_0x265bc8)return;const _0x7a026c=getAutomationTemplates();if(_0x7a026c['length']===0x0){_0x265bc8['innerHTML']='<option\x20value=\x22\x22>No\x20templates\x20available</option>',_0x265bc8['value']='',refreshAutomationModalCustomSelect('automation-template-name');return;}_0x265bc8['innerHTML']=['<option\x20value=\x22\x22>Select\x20template...</option>',..._0x7a026c['map'](_0x446c4f=>'<option\x20value=\x22'+Utils['escapeHtml'](_0x446c4f['name'])+'\x22>'+Utils['escapeHtml'](_0x446c4f['title'])+'</option>')]['join'](''),_0x265bc8['value']=_0x344fc1&&_0x7a026c['some'](_0x2bce10=>_0x2bce10['name']===_0x344fc1)?_0x344fc1:_0x7a026c[0x0]['name'],refreshAutomationModalCustomSelect('automation-template-name');}function renderAutomationTemplateParameters(_0x1f8b6c=null){const _0x8f8406=document['getElementById']('automation-template-params');if(!_0x8f8406)return;_0x1f8b6c&&typeof _0x1f8b6c==='object'&&(state['automationTemplateParamValues']={..._0x1f8b6c});const _0x24ef33=getSelectedAutomationTemplate(),_0x43019e=_0x24ef33?.['parameters']&&typeof _0x24ef33['parameters']==='object'?Object['entries'](_0x24ef33['parameters']):[];if(_0x43019e['length']===0x0){_0x8f8406['innerHTML']='<p\x20class=\x22text-muted\x20small\x22>This\x20template\x20has\x20no\x20parameters.</p>';return;}_0x8f8406['innerHTML']=_0x43019e['map'](([_0x2b7adc,_0x519351])=>{const _0x2dc4f3=Boolean(_0x519351?.['required']),_0x3a72f8=_0x519351?.['type']||'string',_0x40f062=state['automationTemplateParamValues'][_0x2b7adc]??_0x519351?.['default']??'',_0x540331=_0x519351?.['label']||_0x2b7adc,_0x23a755=_0x519351?.['description']||'',_0x3149a7=_0x3a72f8==='number'?'number':'text';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>'+Utils['escapeHtml'](_0x540331)+(_0x2dc4f3?'\x20*':'')+'</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22'+_0x3149a7+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20class=\x22form-input\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data-automation-param=\x22'+Utils['escapeHtml'](_0x2b7adc)+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value=\x22'+Utils['escapeHtml'](String(_0x40f062))+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22'+Utils['escapeHtml'](_0x23a755)+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x2dc4f3?'required':'')+'>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';})['join'](''),_0x8f8406['querySelectorAll']('[data-automation-param]')['forEach'](_0x40c648=>{_0x40c648['addEventListener']('input',()=>{const _0x336711=_0x40c648['getAttribute']('data-automation-param');if(!_0x336711)return;state['automationTemplateParamValues'][_0x336711]=_0x40c648['value'];});});}function collectAutomationTemplateParameters(){const _0x563b87=getSelectedAutomationTemplate(),_0x58ae6b=_0x563b87?.['parameters']&&typeof _0x563b87['parameters']==='object'?_0x563b87['parameters']:{},_0x305735={};return document['querySelectorAll']('[data-automation-param]')['forEach'](_0x409d22=>{const _0x33f99c=_0x409d22['getAttribute']('data-automation-param');if(!_0x33f99c)return;const _0x4e241c=_0x58ae6b[_0x33f99c]||{},_0x511bfe=_0x409d22['value']??'',_0x4803ae=String(_0x511bfe)['trim']();if(_0x4803ae==='')return;if(_0x4e241c['type']==='number'){const _0x2c0977=Number(_0x4803ae);_0x305735[_0x33f99c]=Number['isNaN'](_0x2c0977)?_0x4803ae:_0x2c0977;}else _0x4e241c['type']==='boolean'?_0x305735[_0x33f99c]=_0x4803ae['toLowerCase']()==='true':_0x305735[_0x33f99c]=_0x4803ae;}),_0x305735;}function setAutomationFormError(_0x45b1fa=''){const _0x18b003=document['getElementById']('automation-form-error');if(!_0x18b003)return;_0x45b1fa?(_0x18b003['hidden']=![],_0x18b003['textContent']=_0x45b1fa):(_0x18b003['hidden']=!![],_0x18b003['textContent']='');}function resetAutomationModalForm(){setAutomationFormError(''),state['automationTemplateParamValues']={},state['editingAutomationId']=null,state['automationModalMode']='create',document['getElementById']('automation-name')['value']='',document['getElementById']('automation-description')['value']='',document['getElementById']('automation-frequency')['value']='daily',document['getElementById']('automation-daily-time')['value']='02:00',document['getElementById']('automation-weekly-day')['value']='1',document['getElementById']('automation-weekly-time')['value']='09:00',document['getElementById']('automation-monthly-day')['value']='1',document['getElementById']('automation-monthly-time')['value']='00:00',document['getElementById']('automation-recurring-interval')['value']='*/30\x20*\x20*\x20*\x20*',document['getElementById']('automation-recurring-start-hour')['value']='',document['getElementById']('automation-recurring-end-hour')['value']='',document['getElementById']('automation-custom-cron')['value']='',setRecurringDaySelectionToken('*');const _0x4fcb82=state['selectedEnvData']?.['default_agent']||getAvailableAutomationAgentNames()[0x0]||'claude';setAutomationAgentSelection(_0x4fcb82),document['getElementById']('automation-effort-level')['value']='',document['getElementById']('automation-reasoning-level')['value']='',document['getElementById']('automation-task-name')['value']='Automation\x20-\x20{{date}}',setAutomationInstructionsValue(''),document['querySelector']('input[name=\x22automation-task-mode\x22][value=\x22instructions\x22]')['checked']=!![],document['getElementById']('automation-enabled')['checked']=!![],renderAutomationTemplateOptions(),renderAutomationTemplateParameters({}),refreshAllAutomationModalCustomSelects(),updateAutomationFrequencyFields(),updateAutomationAgentFields(),updateAutomationTaskMode(),updateAutomationScheduleSummary();}function closeAutomationModal(){const _0x26b87a=document['getElementById']('automation-modal');if(!_0x26b87a)return;_0x26b87a['hidden']=!![],setAutomationFormError('');}function findAutomationById(_0x171b2c){return state['automations']['find'](_0x189142=>_0x189142['id']===_0x171b2c)||null;}function applyAutomationToModal(_0x5b5ac3){document['getElementById']('automation-name')['value']=_0x5b5ac3['name']||'',document['getElementById']('automation-description')['value']=_0x5b5ac3['description']||'',document['getElementById']('automation-task-name')['value']=_0x5b5ac3['task']?.['name']||'Automation\x20-\x20{{date}}',setAutomationAgentSelection(_0x5b5ac3['agent']?.['name']||state['selectedEnvData']?.['default_agent']||getAvailableAutomationAgentNames()[0x0]||'claude'),document['getElementById']('automation-effort-level')['value']=_0x5b5ac3['agent']?.['effortLevel']||'',document['getElementById']('automation-reasoning-level')['value']=_0x5b5ac3['agent']?.['reasoningLevel']||'',document['getElementById']('automation-enabled')['checked']=_0x5b5ac3['enabled']!==![];const _0x31a58a=_0x5b5ac3['task']?.['taskType']?'template':'instructions';document['querySelector']('input[name=\x22automation-task-mode\x22][value=\x22'+_0x31a58a+'\x22]')['checked']=!![],setAutomationInstructionsValue(_0x5b5ac3['task']?.['instructions']||''),renderAutomationTemplateOptions(_0x5b5ac3['task']?.['taskType']||''),state['automationTemplateParamValues']={..._0x5b5ac3['task']?.['parameters']||{}},renderAutomationTemplateParameters(state['automationTemplateParamValues']),refreshAllAutomationModalCustomSelects(),applyAutomationScheduleToForm(_0x5b5ac3['schedule']||'0\x202\x20*\x20*\x20*'),updateAutomationTaskMode(),updateAutomationAgentFields();}async function openAutomationModal(_0x429c7d='create',_0x498cca=null){if(!state['selectedEnv'])return;await loadAvailableAutomationModels(),initializeAutomationModalCustomSelects(),initializeAutomationInstructionsEditor(),renderAutomationAgentOptions(state['selectedEnvData']?.['default_agent']||''),initializeAutomationFormOptions(),resetAutomationModalForm();const _0xd98832=document['getElementById']('automation-modal'),_0x78ad08=document['getElementById']('automation-modal-title');if(!_0xd98832||!_0x78ad08)return;if(_0x429c7d==='edit'&&_0x498cca){state['automationModalMode']='edit',state['editingAutomationId']=_0x498cca,_0x78ad08['textContent']='Edit\x20Automation';const _0x3fc2cf=findAutomationById(_0x498cca);if(_0x3fc2cf)applyAutomationToModal(_0x3fc2cf);else try{const _0x5bb7bb=await API['getAutomation'](_0x498cca);_0x5bb7bb?.['automation']&&applyAutomationToModal(_0x5bb7bb['automation']);}catch(_0x41b023){setAutomationFormError(_0x41b023['message']||'Failed\x20to\x20load\x20automation');}}else state['automationModalMode']='create',_0x78ad08['textContent']='Create\x20Automation';_0xd98832['hidden']=![];}function buildAutomationPayloadFromForm(){const _0x14ce89=document['getElementById']('automation-name')?.['value']?.['trim']()||'',_0x2044fa=document['getElementById']('automation-description')?.['value']?.['trim']()||'',_0x109c4f=document['getElementById']('automation-task-name')?.['value']?.['trim']()||'',_0x13c7ad=document['getElementById']('automation-enabled')?.['checked']!==![],_0x39bd00=document['getElementById']('automation-agent-name')?.['value']||state['selectedEnvData']?.['default_agent']||getAvailableAutomationAgentNames()[0x0]||'claude',_0x49d78d=document['getElementById']('automation-effort-level')?.['value']||null,_0x5a96fe=document['getElementById']('automation-reasoning-level')?.['value']||null,_0x45d32a=getSelectedAutomationTaskMode();if(!_0x14ce89)throw new Error('Automation\x20name\x20is\x20required');if(!_0x109c4f)throw new Error('Task\x20name\x20template\x20is\x20required');const _0x2253d1=buildAutomationScheduleFromForm();if(!_0x2253d1['cron'])throw new Error('Schedule\x20is\x20required');const _0x1f93ab={'name':_0x14ce89,'description':_0x2044fa,'environment':state['selectedEnv'],'enabled':_0x13c7ad,'schedule':_0x2253d1['cron'],'agent':{'name':_0x39bd00,'effortLevel':_0x39bd00==='claude'?_0x49d78d||null:null,'reasoningLevel':_0x39bd00==='codex'?_0x5a96fe||null:null},'task':{'name':_0x109c4f,'instructions':'','taskType':null,'parameters':{},'skills':[]},'settings':{'retainHistoryDays':0x1e}};if(_0x45d32a==='template'){const _0x46271c=document['getElementById']('automation-template-name')?.['value']||'';if(!_0x46271c)throw new Error('Select\x20a\x20task\x20template');const _0x1cf760=getSelectedAutomationTemplate(),_0x1c668a=_0x1cf760?.['parameters']&&typeof _0x1cf760['parameters']==='object'?_0x1cf760['parameters']:{},_0x28a9de=collectAutomationTemplateParameters(),_0x27a9db=Object['entries'](_0x1c668a)['filter'](([_0x1426d8,_0x2ef6ec])=>Boolean(_0x2ef6ec?.['required'])&&String(_0x28a9de[_0x1426d8]??'')['trim']()==='')['map'](([_0x3a856b])=>_0x3a856b);if(_0x27a9db['length']>0x0)throw new Error('Missing\x20required\x20template\x20parameters:\x20'+_0x27a9db['join'](',\x20'));_0x1f93ab['task']['taskType']=_0x46271c,_0x1f93ab['task']['parameters']=_0x28a9de,_0x1f93ab['task']['instructions']=getAutomationInstructionsValue()['trim']();}else{const _0x44fcec=getAutomationInstructionsValue()['trim']();if(!_0x44fcec)throw new Error('Instructions\x20are\x20required');_0x1f93ab['task']['instructions']=_0x44fcec;}return _0x1f93ab;}async function saveAutomationFromModal(){try{setAutomationFormError('');const _0x25061e=buildAutomationPayloadFromForm();state['automationModalMode']==='edit'&&state['editingAutomationId']?(await API['updateAutomation'](state['editingAutomationId'],_0x25061e),Utils['showSuccess']('Automation\x20updated')):(await API['createAutomation'](_0x25061e),Utils['showSuccess']('Automation\x20created')),closeAutomationModal(),await renderAutomations(),state['viewingAutomationId']&&await openAutomationHistoryView(state['viewingAutomationId']);}catch(_0x453b67){setAutomationFormError(_0x453b67['message']||'Failed\x20to\x20save\x20automation');}}function closeAutomationHistoryView(){const _0x321203=document['getElementById']('automations-list-view'),_0x2df0e8=document['getElementById']('automation-history-view');if(_0x321203)_0x321203['hidden']=![];if(_0x2df0e8)_0x2df0e8['hidden']=!![];state['viewingAutomationId']=null;}async function triggerAutomationById(_0x807adf){try{await API['triggerAutomation'](_0x807adf),Utils['showSuccess']('Automation\x20triggered'),await renderAutomations(),state['viewingAutomationId']===_0x807adf&&await openAutomationHistoryView(_0x807adf);}catch(_0x23f597){Utils['showError'](_0x23f597['message']||'Failed\x20to\x20trigger\x20automation');}}async function triggerViewedAutomation(){if(!state['viewingAutomationId'])return;await triggerAutomationById(state['viewingAutomationId']);}async function openAutomationHistoryView(_0x529510){const _0x1cec02=findAutomationById(_0x529510);if(!_0x1cec02)return;const _0x7586fd=document['getElementById']('automations-list-view'),_0x2b062c=document['getElementById']('automation-history-view'),_0x3651ae=document['getElementById']('automation-history-title'),_0x5d893b=document['getElementById']('automation-history-subtitle'),_0x101c70=document['getElementById']('automation-history-body'),_0x53eae1=document['getElementById']('automation-history-tasks-link');if(!_0x7586fd||!_0x2b062c||!_0x3651ae||!_0x5d893b||!_0x101c70)return;state['viewingAutomationId']=_0x529510,_0x7586fd['hidden']=!![],_0x2b062c['hidden']=![],_0x3651ae['textContent']=_0x1cec02['name'],_0x5d893b['textContent']=describeAutomationCron(_0x1cec02['schedule'])+'\x20·\x20'+(_0x1cec02['agent']?.['name']||'agent');_0x53eae1&&(_0x53eae1['href']=buildAutomationTaskFilterHref(_0x529510));try{const _0x1b8bf8=await API['getAutomationHistory'](_0x529510,0x32),_0x26c575=_0x1b8bf8['runs']||[];if(_0x26c575['length']===0x0){_0x101c70['innerHTML']='<tr><td\x20colspan=\x224\x22\x20class=\x22text-muted\x22>No\x20runs\x20yet.</td></tr>';return;}_0x101c70['innerHTML']=_0x26c575['map'](_0x1e592f=>{const _0x1b639f=_0x1e592f['status']==='failed'?'status-failed':_0x1e592f['status']==='running'?'status-running':'status-completed',_0x494b00=_0x1e592f['triggeredAt']?new Date(_0x1e592f['triggeredAt'])['toLocaleString']():'-',_0xae2fb4=_0x1e592f['taskId']?'<a\x20href=\x22task.html?id='+encodeURIComponent(_0x1e592f['taskId'])+'\x22>View\x20Task</a>':'<span\x20class=\x22text-muted\x22>-</span>';return'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x494b00)+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x1e592f['triggeredBy']||'-')+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td><span\x20class=\x22automation-run-status\x20'+_0x1b639f+'\x22>'+Utils['escapeHtml'](_0x1e592f['status']||'-')+'</span></td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td>'+_0xae2fb4+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20\x20\x20';})['join']('');}catch(_0x41a5c0){_0x101c70['innerHTML']='<tr><td\x20colspan=\x224\x22\x20class=\x22text-danger\x22>'+Utils['escapeHtml'](_0x41a5c0['message']||'Failed\x20to\x20load\x20history')+'</td></tr>';}}async function deleteAutomationById(_0x5e0f88){const _0x3aa57c=findAutomationById(_0x5e0f88);if(!_0x3aa57c)return;const _0x1a2d43=await ConfirmDialog['show']({'title':'Delete\x20Automation','message':'Delete\x20automation\x20\x22'+_0x3aa57c['name']+'\x22?','confirmText':'Delete','danger':!![]});if(!_0x1a2d43)return;try{await API['deleteAutomation'](_0x5e0f88),Utils['showSuccess']('Automation\x20deleted'),state['viewingAutomationId']===_0x5e0f88&&closeAutomationHistoryView(),await renderAutomations();}catch(_0x12f91f){Utils['showError'](_0x12f91f['message']||'Failed\x20to\x20delete\x20automation');}}async function handleAutomationTableToggleChange(_0x2646c3){const _0x560bde=_0x2646c3['target']['closest']('[data-automation-toggle]');if(!_0x560bde)return;const _0x49eb1d=_0x560bde['getAttribute']('data-automation-toggle'),_0x2b95b2=_0x560bde['checked'];try{await API['setAutomationEnabled'](_0x49eb1d,_0x2b95b2),Utils['showSuccess'](_0x2b95b2?'Automation\x20enabled':'Automation\x20disabled'),await renderAutomations();}catch(_0x56a854){_0x560bde['checked']=!_0x2b95b2,Utils['showError'](_0x56a854['message']||'Failed\x20to\x20update\x20automation\x20status');}}async function handleAutomationTableActionClick(_0x19b375){const _0x4af486=_0x19b375['target']['closest']('[data-automation-action]');if(!_0x4af486)return;const _0x437cd4=_0x4af486['getAttribute']('data-automation-action'),_0x3fe8f9=_0x4af486['getAttribute']('data-automation-id');if(!_0x3fe8f9)return;if(_0x437cd4==='trigger'){await triggerAutomationById(_0x3fe8f9);return;}if(_0x437cd4==='edit'){await openAutomationModal('edit',_0x3fe8f9);return;}if(_0x437cd4==='delete'){await deleteAutomationById(_0x3fe8f9);return;}_0x437cd4==='history'&&await openAutomationHistoryView(_0x3fe8f9);}function renderAutomationsTable(){const _0x4a22be=document['getElementById']('automations-count'),_0x322820=document['getElementById']('automations-empty'),_0x53087d=document['getElementById']('automations-table-wrapper'),_0x34784a=document['getElementById']('automations-table-body');if(!_0x4a22be||!_0x322820||!_0x53087d||!_0x34784a)return;const _0x4be37b=state['automations']||[];_0x4a22be['textContent']=_0x4be37b['length']+'\x20item'+(_0x4be37b['length']===0x1?'':'s');if(_0x4be37b['length']===0x0){_0x322820['hidden']=![],_0x53087d['hidden']=!![],_0x34784a['innerHTML']='';return;}_0x322820['hidden']=!![],_0x53087d['hidden']=![],_0x34784a['innerHTML']=_0x4be37b['map'](_0x42d266=>{const _0x94ccca=_0x42d266['description']?'<div\x20class=\x22text-muted\x20small\x22>'+Utils['escapeHtml'](_0x42d266['description'])+'</div>':'',_0x1bfe8a=describeAutomationCron(_0x42d266['schedule']),_0xbf0344=_0x42d266['lastRun']?'Last\x20run\x20'+Utils['formatRelativeTime'](_0x42d266['lastRun']):'Never\x20run';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<strong>'+Utils['escapeHtml'](_0x42d266['name'])+'</strong>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x94ccca+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x1bfe8a)+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20data-automation-toggle=\x22'+Utils['escapeHtml'](_0x42d266['id'])+'\x22\x20'+(_0x42d266['enabled']?'checked':'')+'>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22text-muted\x20small\x22>'+Utils['escapeHtml'](_0xbf0344)+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22automation-actions-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-small\x22\x20data-automation-action=\x22history\x22\x20data-automation-id=\x22'+Utils['escapeHtml'](_0x42d266['id'])+'\x22>History</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-small\x22\x20data-automation-action=\x22edit\x22\x20data-automation-id=\x22'+Utils['escapeHtml'](_0x42d266['id'])+'\x22>Edit</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-small\x20danger\x22\x20data-automation-action=\x22delete\x22\x20data-automation-id=\x22'+Utils['escapeHtml'](_0x42d266['id'])+'\x22>Delete</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>\x0a\x20\x20\x20\x20';})['join']('');}async function renderAutomations(){if(!state['selectedEnv'])return;const _0x332a4e=document['getElementById']('automations-loading'),_0x311a73=document['getElementById']('automations-error');if(_0x332a4e)_0x332a4e['hidden']=![];_0x311a73&&(_0x311a73['hidden']=!![],_0x311a73['textContent']='');const _0x440ca8=state['selectedEnv'];try{const _0x3df6c5=await API['getAutomations']({'environment':_0x440ca8});if(state['selectedEnv']!==_0x440ca8)return;state['automations']=_0x3df6c5['automations']||[],state['automationsLoadedEnv']=_0x440ca8,renderAutomationsTable(),updateTabBadge('badge-automations',state['automations']['length']);}catch(_0xda703f){console['error']('Failed\x20to\x20load\x20automations:',_0xda703f),_0x311a73&&(_0x311a73['hidden']=![],_0x311a73['textContent']=_0xda703f['message']||'Failed\x20to\x20load\x20automations');}finally{if(_0x332a4e)_0x332a4e['hidden']=!![];}}async function handleAutomationDeepLinkParams(){const {env:_0x1c172e,tab:_0x34b46f,automation:_0x106350}=parseAutomationDeepLinkParams(window['location']['search']);if(!_0x1c172e&&!_0x34b46f&&!_0x106350)return;_0x1c172e&&_0x1c172e!==state['selectedEnv']&&state['environments']['some'](_0x54c684=>_0x54c684['name']===_0x1c172e)&&await selectEnvironment(_0x1c172e),_0x34b46f&&switchTab(_0x34b46f),_0x106350&&(switchTab('automations'),await renderAutomations(),await openAutomationHistoryView(_0x106350));}window['switchTab']=function(_0x30f459){state['currentTab']=_0x30f459,sessionStorage['setItem'](SESSION_KEY_TAB,_0x30f459),document['querySelectorAll']('.content-tab')['forEach'](_0x470ee4=>{const _0x44d61d=_0x470ee4['dataset']['tab']===_0x30f459;_0x470ee4['classList']['toggle']('active',_0x44d61d),_0x470ee4['setAttribute']('aria-selected',_0x44d61d);}),scrollToActiveContentTab(),document['querySelectorAll']('.tab-panel')['forEach'](_0x43e03e=>{_0x43e03e['hidden']=_0x43e03e['id']!=='tab-'+_0x30f459;}),_0x30f459==='build'&&state['selectedEnv']&&(renderBuildTab(),loadBuildHistory()),_0x30f459==='deploy'&&state['selectedEnv']&&(renderDeployProfiles(),loadDeploymentHistory()),_0x30f459==='access'&&state['selectedEnv']&&loadAccessTab(),_0x30f459==='automations'&&state['selectedEnv']&&renderAutomations(),_0x30f459==='server'&&state['selectedEnv']&&renderServerConfig();};function renderRepos(){const _0x1c07f1=document['querySelector']('.repos-sidebar'),_0xf8172=state['selectedEnvData']['repos']||[];updateTabBadge('badge-repos',_0xf8172['length']);const _0x58f19d=_0x1c07f1['querySelector']('#new-repo-tab'),_0x4edee1=_0xf8172['map']((_0x3c51ab,_0x304d49)=>'\x0a\x20\x20\x20\x20<button\x20class=\x22repo-tab\x22\x20data-repo=\x22'+_0x304d49+'\x22\x20onclick=\x22selectRepo('+_0x304d49+')\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22repo-icon\x22>📁</span>\x0a\x20\x20\x20\x20\x20\x20<span>'+Utils['escapeHtml'](_0x3c51ab['name'])+'</span>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20')['join']('');_0x1c07f1['innerHTML']=_0x58f19d['outerHTML']+_0x4edee1,_0x1c07f1['querySelector']('#new-repo-tab')['addEventListener']('click',addRepo);if(_0xf8172['length']>0x0&&state['currentRepo']===null)selectRepo(0x0);else _0xf8172['length']===0x0&&showRepoEmptyState();}function showRepoEmptyState(){document['getElementById']('current-repo-name')['textContent']='Select\x20a\x20Repository',document['getElementById']('delete-repo-btn')['hidden']=!![],document['getElementById']('repo-details-container')['innerHTML']='<p\x20class=\x22text-muted\x22>Select\x20a\x20repository\x20from\x20the\x20sidebar\x20to\x20view\x20details,\x20or\x20add\x20a\x20new\x20one.</p>';}function persistCurrentRepoFormChanges(){if(state['currentRepo']===null)return;const _0x1e6dae=state['selectedEnvData']?.['repos'];if(!Array['isArray'](_0x1e6dae)||!_0x1e6dae[state['currentRepo']])return;const _0x161204=document['getElementById']('repo-url'),_0x4cf14c=document['getElementById']('repo-allow-branch-selection'),_0x1a7054=document['getElementById']('repo-path'),_0x4603e8=document['getElementById']('repo-description'),_0x558e29=document['getElementById']('repo-clone-auto'),_0x39d601=document['getElementById']('repo-post-clone-action');if(!_0x161204||!_0x4cf14c||!_0x1a7054||!_0x4603e8||!_0x558e29||!_0x39d601)return;const _0x6d90fc=_0x1e6dae[state['currentRepo']],_0x472daa=document['getElementById']('edit-repo-provider')?.['value']||'',_0x4fc942=document['getElementById']('edit-repo-credential-mode')?.['value']||'app',_0x206687=monacoEditors['get']('repo-custom-action-editor'),_0x10ee6c=_0x206687?_0x206687['getValue']()['trim']():'';let _0x4ab99b;if(_0x39d601['value']==='custom'&&_0x10ee6c)_0x4ab99b=_0x10ee6c;else _0x39d601['value']!=='none'&&_0x39d601['value']!=='custom'&&(_0x4ab99b=_0x39d601['value']);const _0x50f1af={..._0x6d90fc,'url':_0x161204['value'],'branch':getEditRepoBranchValue(),'allow_branch_selection':_0x4cf14c['checked'],'path':_0x1a7054['value']||undefined,'description':_0x4603e8['value']||undefined,'clone_auto':_0x558e29['checked'],'post_clone_action':_0x4ab99b||undefined};_0x472daa?_0x50f1af['remote_provider']={'provider':_0x472daa,'credential_mode':_0x4fc942}:delete _0x50f1af['remote_provider'],_0x1e6dae[state['currentRepo']]=_0x50f1af;}window['selectRepo']=function(_0x2e0ef0){persistCurrentRepoFormChanges();const _0x18ad7f=monacoEditors['get']('repo-custom-action-editor');_0x18ad7f&&(_0x18ad7f['dispose'](),monacoEditors['delete']('repo-custom-action-editor'));state['currentRepo']=_0x2e0ef0;const _0x11b270=state['selectedEnvData']['repos'][_0x2e0ef0],_0x8a1c12=_0x11b270['remote_provider']&&_0x11b270['remote_provider']['provider'];document['querySelectorAll']('.repo-tab')['forEach'](_0x28e06c=>{_0x28e06c['classList']['toggle']('active',_0x28e06c['dataset']['repo']===String(_0x2e0ef0));}),document['getElementById']('current-repo-name')['textContent']=_0x11b270['name'],document['getElementById']('delete-repo-btn')['hidden']=![];const _0x1ce82d='\x0a\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20<label\x20for=\x22edit-repo-provider\x22>Git\x20Provider</label>\x0a\x20\x20\x20\x20\x20\x20<select\x20id=\x22edit-repo-provider\x22\x20class=\x22form-input\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>None</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Providers\x20populated\x20via\x20loadEditRepoProviders()\x20-->\x0a\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20',_0x172c01=_0x11b270['remote_provider']?.['credential_mode']||'app',_0x2388ca='\x0a\x20\x20\x20\x20<div\x20id=\x22edit-repo-credential-mode-row\x22\x20class=\x22form-row\x22\x20'+(_0x8a1c12?'':'hidden')+'>\x0a\x20\x20\x20\x20\x20\x20<label\x20for=\x22edit-repo-credential-mode\x22>Credential\x20Mode</label>\x0a\x20\x20\x20\x20\x20\x20<select\x20id=\x22edit-repo-credential-mode\x22\x20class=\x22form-input\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22app\x22\x20'+(_0x172c01==='app'?'selected':'')+'>App\x20Credentials</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22user\x22\x20'+(_0x172c01==='user'?'selected':'')+'>User\x20Credentials</option>\x0a\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20<small\x20class=\x22form-hint\x22>For\x20tasks\x20and\x20deployments.\x20App:\x20app/bot\x20identity.\x20User:\x20personal\x20Git\x20account\x20(requires\x20connection).</small>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20',_0x470019='\x0a\x20\x20\x20\x20<div\x20id=\x22edit-repo-url-row\x22\x20class=\x22form-row\x22\x20'+(_0x8a1c12?'hidden':'')+'>\x0a\x20\x20\x20\x20\x20\x20<label\x20for=\x22repo-url\x22>Repository\x20URL</label>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20id=\x22repo-url\x22\x20class=\x22form-input\x20code-font\x22\x20value=\x22'+Utils['escapeHtml'](_0x11b270['url'])+'\x22\x20placeholder=\x22https://github.com/user/repo.git\x22>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20',_0x402e39='\x0a\x20\x20\x20\x20<div\x20id=\x22edit-repo-autocomplete-row\x22\x20class=\x22form-row\x22\x20'+(_0x8a1c12?'':'hidden')+'\x20style=\x22margin-top:\x2016px;\x22>\x0a\x20\x20\x20\x20\x20\x20<label>Repository</label>\x0a\x20\x20\x20\x20\x20\x20<div\x20id=\x22edit-repo-autocomplete-container\x22></div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20',_0x298d79=document['getElementById']('repo-details-container');_0x298d79['innerHTML']='\x0a\x20\x20\x20\x20<div\x20class=\x22form-single-column\x22>\x0a\x20\x20\x20\x20\x20\x20'+_0x1ce82d+'\x0a\x20\x20\x20\x20\x20\x20'+_0x2388ca+'\x0a\x20\x20\x20\x20\x20\x20'+_0x470019+'\x0a\x20\x20\x20\x20\x20\x20'+_0x402e39+'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label\x20for=\x22repo-branch-field\x22>Branch</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22autocomplete-control-with-icon\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20id=\x22repo-branch-field\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-icon\x20autocomplete-refresh-btn\x22\x20id=\x22repo-branch-refresh-btn\x22\x20title=\x22Reload\x20branch\x20list\x22\x20aria-label=\x22Reload\x20branch\x20list\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20↻\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Allow\x20Branch\x20Selection</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label\x20class=\x22toggle-switch\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20id=\x22repo-allow-branch-selection\x22\x20'+(_0x11b270['allow_branch_selection']?'checked':'')+'>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22toggle-slider\x22></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Path</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20id=\x22repo-path\x22\x20class=\x22form-input\x20code-font\x22\x20value=\x22'+Utils['escapeHtml'](_0x11b270['path']||'')+'\x22\x20placeholder=\x22Optional\x20path\x20in\x20environment\x22>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Description</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20id=\x22repo-description\x22\x20class=\x22form-input\x22\x20value=\x22'+Utils['escapeHtml'](_0x11b270['description']||'')+'\x22\x20placeholder=\x22Optional\x20description\x22>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Clone\x20Automatically</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label\x20class=\x22toggle-switch\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20id=\x22repo-clone-auto\x22\x20'+(_0x11b270['clone_auto']!==![]?'checked':'')+'>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22toggle-slider\x22></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<small\x20class=\x22form-hint\x22>Include\x20this\x20repository\x20in\x20the\x20Docker\x20build.\x20Disable\x20to\x20clone\x20manually\x20at\x20runtime\x20or\x20via\x20post-clone\x20script.</small>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label\x20for=\x22repo-post-clone-action\x22>Post-clone\x20Action</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<select\x20id=\x22repo-post-clone-action\x22\x20class=\x22form-input\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22none\x22\x20'+(!_0x11b270['post_clone_action']||_0x11b270['post_clone_action']==='none'?'selected':'')+'>None</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<optgroup\x20label=\x22Node.js\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22npm\x20install\x22\x20'+(_0x11b270['post_clone_action']==='npm\x20install'?'selected':'')+'>npm\x20install</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22npm\x20ci\x22\x20'+(_0x11b270['post_clone_action']==='npm\x20ci'?'selected':'')+'>npm\x20ci</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22yarn\x22\x20'+(_0x11b270['post_clone_action']==='yarn'?'selected':'')+'>yarn</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22pnpm\x20install\x22\x20'+(_0x11b270['post_clone_action']==='pnpm\x20install'?'selected':'')+'>pnpm\x20install</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</optgroup>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<optgroup\x20label=\x22Python\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22pip\x20install\x20-r\x20requirements.txt\x22\x20'+(_0x11b270['post_clone_action']==='pip\x20install\x20-r\x20requirements.txt'?'selected':'')+'>pip\x20install\x20-r\x20requirements.txt</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22pip\x20install\x20-e\x20.\x22\x20'+(_0x11b270['post_clone_action']==='pip\x20install\x20-e\x20.'?'selected':'')+'>pip\x20install\x20-e\x20.\x20(editable)</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</optgroup>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<optgroup\x20label=\x22Java\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22mvn\x20install\x20-DskipTests\x22\x20'+(_0x11b270['post_clone_action']==='mvn\x20install\x20-DskipTests'?'selected':'')+'>mvn\x20install\x20(skip\x20tests)</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22./gradlew\x20build\x20-x\x20test\x22\x20'+(_0x11b270['post_clone_action']==='./gradlew\x20build\x20-x\x20test'?'selected':'')+'>gradle\x20build\x20(skip\x20tests)</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</optgroup>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<optgroup\x20label=\x22.NET\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22dotnet\x20restore\x22\x20'+(_0x11b270['post_clone_action']==='dotnet\x20restore'?'selected':'')+'>dotnet\x20restore</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22dotnet\x20build\x22\x20'+(_0x11b270['post_clone_action']==='dotnet\x20build'?'selected':'')+'>dotnet\x20build</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</optgroup>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<optgroup\x20label=\x22PHP\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22composer\x20install\x22\x20'+(_0x11b270['post_clone_action']==='composer\x20install'?'selected':'')+'>composer\x20install</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</optgroup>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<optgroup\x20label=\x22Other\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22custom\x22\x20'+(_0x11b270['post_clone_action']==='custom'||_0x11b270['post_clone_action']&&!isKnownPostCloneAction(_0x11b270['post_clone_action'])?'selected':'')+'>Custom\x20command...</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</optgroup>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<small\x20class=\x22form-hint\x22>Command\x20to\x20run\x20in\x20this\x20repository\x27s\x20directory\x20after\x20cloning.</small>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22\x20id=\x22repo-custom-action-row\x22\x20'+(_0x11b270['post_clone_action']&&!isKnownPostCloneAction(_0x11b270['post_clone_action'])&&_0x11b270['post_clone_action']!=='none'?'':'hidden')+'>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label\x20for=\x22repo-custom-action\x22>Custom\x20Command</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20id=\x22repo-custom-action-editor\x22\x20style=\x22height:\x20150px;\x20border:\x201px\x20solid\x20var(--color-border);\x20border-radius:\x204px;\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<small\x20class=\x22form-hint\x22>Shell\x20commands\x20to\x20run\x20after\x20cloning.\x20Use\x20multiple\x20lines\x20for\x20complex\x20commands.</small>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20',loadEditRepoProviders(_0x11b270),initEditRepoBranchAutocomplete(_0x11b270);const _0x253a63=document['getElementById']('repo-branch-refresh-btn');_0x253a63&&(_0x253a63['onclick']=_0x44a81e=>{_0x44a81e['preventDefault'](),reloadEditRepoBranchSuggestions();});document['getElementById']('edit-repo-provider')['addEventListener']('change',onEditRepoProviderChange),document['getElementById']('repo-post-clone-action')['addEventListener']('change',async _0x592193=>{const _0x22dcf6=document['getElementById']('repo-custom-action-row'),_0x5b2543=_0x592193['target']['value']==='custom';_0x22dcf6['hidden']=!_0x5b2543;if(_0x5b2543){const _0x42a441=monacoEditors['get']('repo-custom-action-editor');if(!_0x42a441){const _0x54ecbb=await createMonacoEditor('repo-custom-action-editor','','shell',![]);_0x54ecbb&&(_0x54ecbb['updateOptions']({'wordWrap':'off'}),_0x54ecbb['onDidChangeModelContent'](()=>markAsModified()));}}markAsModified();});if(_0x11b270['post_clone_action']&&!isKnownPostCloneAction(_0x11b270['post_clone_action'])&&_0x11b270['post_clone_action']!=='none'){const _0xdacf2a=_0x11b270['post_clone_action'];createMonacoEditor('repo-custom-action-editor',_0xdacf2a,'shell',![])['then'](_0x2f81c8=>{_0x2f81c8&&(_0x2f81c8['updateOptions']({'wordWrap':'off'}),_0x2f81c8['onDidChangeModelContent'](()=>markAsModified()));});}const _0x47d1a0=['repo-url','repo-allow-branch-selection','repo-path','repo-description','repo-clone-auto','edit-repo-credential-mode'];_0x47d1a0['forEach'](_0x46cc00=>{const _0x2ecf2a=document['getElementById'](_0x46cc00);_0x2ecf2a&&(_0x2ecf2a['addEventListener']('input',markAsModified),_0x2ecf2a['addEventListener']('change',markAsModified));});};const REPO_ICON_PUBLIC='<svg\x20viewBox=\x220\x200\x2016\x2016\x22><path\x20d=\x22M2\x202.5A2.5\x202.5\x200\x200\x201\x204.5\x200h8.75a.75.75\x200\x200\x201\x20.75.75v12.5a.75.75\x200\x200\x201-.75.75h-2.5a.75.75\x200\x200\x201\x200-1.5h1.75v-2h-8a1\x201\x200\x200\x200-.714\x201.7.75.75\x200\x201\x201-1.072\x201.05A2.495\x202.495\x200\x200\x201\x202\x2011.5Zm10.5-1h-8a1\x201\x200\x200\x200-1\x201v6.708A2.486\x202.486\x200\x200\x201\x204.5\x209h8ZM5\x2012.25a.25.25\x200\x200\x201\x20.25-.25h3.5a.25.25\x200\x200\x201\x20.25.25v3.25a.25.25\x200\x200\x201-.4.2l-1.45-1.087a.249.249\x200\x200\x200-.3\x200L5.4\x2015.7a.25.25\x200\x200\x201-.4-.2Z\x22></path></svg>',REPO_ICON_PRIVATE='<svg\x20viewBox=\x220\x200\x2016\x2016\x22><path\x20fill-rule=\x22evenodd\x22\x20d=\x22M4\x204v2h-.25A1.75\x201.75\x200\x20002\x207.75v5.5c0\x20.966.784\x201.75\x201.75\x201.75h8.5A1.75\x201.75\x200\x200014\x2013.25v-5.5A1.75\x201.75\x200\x200012.25\x206H12V4a4\x204\x200\x2010-8\x200zm6.5\x202V4a2.5\x202.5\x200\x2000-5\x200v2h5zM12\x207.5h.25a.25.25\x200\x2001.25.25v5.5a.25.25\x200\x2001-.25.25h-8.5a.25.25\x200\x2001-.25-.25v-5.5a.25.25\x200\x2001.25-.25H12z\x22></path></svg>';async function loadEditRepoProviders(_0x1057a2){const _0x370ca4=document['getElementById']('edit-repo-provider');if(!_0x370ca4)return;const _0x454d8e=_0x1057a2['remote_provider']&&_0x1057a2['remote_provider']['provider'];try{const _0x4526f1=await API['get']('/environments/'+state['selectedEnv']+'/repos/providers'),_0x4ed5d8=_0x4526f1['providers']||[];let _0x432bb2='<option\x20value=\x22\x22>None</option>',_0x4656e8=![];_0x4ed5d8['forEach'](_0x56bcf5=>{const _0x5dee20=_0x454d8e&&_0x1057a2['remote_provider']['provider']===_0x56bcf5['name'];if(_0x5dee20)_0x4656e8=!![];const _0x25e4d2=_0x5dee20?'selected':'';_0x432bb2+='<option\x20value=\x22'+Utils['escapeHtml'](_0x56bcf5['name'])+'\x22\x20'+_0x25e4d2+'>'+Utils['escapeHtml'](_0x56bcf5['name'])+'\x20('+Utils['escapeHtml'](_0x56bcf5['type'])+')</option>';}),_0x454d8e&&!_0x4656e8&&(_0x432bb2+='<option\x20value=\x22'+Utils['escapeHtml'](_0x1057a2['remote_provider']['provider'])+'\x22\x20selected\x20disabled>'+Utils['escapeHtml'](_0x1057a2['remote_provider']['provider'])+'\x20(unavailable)</option>'),_0x370ca4['innerHTML']=_0x432bb2,state['editRepoProviders']=_0x4ed5d8,initEditRepoAutocomplete(_0x1057a2);}catch(_0x2bf361){console['error']('Failed\x20to\x20load\x20providers\x20for\x20edit\x20repo:',_0x2bf361);}}function extractRepoFullName(_0xc868fb){if(!_0xc868fb)return'';try{const _0x53bbc7=_0xc868fb['match'](/\/([^/]+)\/_git\/([^/]+?)(?:\.git)?$/);if(_0x53bbc7)return _0x53bbc7[0x1]+'/'+_0x53bbc7[0x2];const _0x36e8ef=_0xc868fb['match'](/[/:]([^/:]+\/[^/]+?)(?:\.git)?$/);return _0x36e8ef?_0x36e8ef[0x1]:_0xc868fb;}catch{return _0xc868fb;}}function normalizeGitUrl(_0x14f273){if(!_0x14f273)return _0x14f273;const _0xf29ad1=_0x14f273['match'](/^(https?:\/\/)[^@/]+@(.+)$/i);if(_0xf29ad1)return''+_0xf29ad1[0x1]+_0xf29ad1[0x2];return _0x14f273;}function initEditRepoAutocomplete(_0x187933){const _0x130713=document['getElementById']('edit-repo-autocomplete-container');if(!_0x130713)return;const _0x26750a=_0x187933['remote_provider']&&_0x187933['remote_provider']['provider'];editRepoAutocomplete&&(editRepoAutocomplete['destroy'](),editRepoAutocomplete=null);editRepoAutocomplete=new AutocompleteSelect(_0x130713,{'placeholder':'Search\x20for\x20a\x20repository','maxItems':0x64,'emptyMessage':'No\x20repositories\x20found','loadingMessage':'Loading\x20repositories...','preload':![],'searchMode':'server','loadItems':async _0xa470e3=>{const _0x332cb5=document['getElementById']('edit-repo-provider')['value'];if(!_0x332cb5)return[];try{let _0x1bd78f='/environments/'+state['selectedEnv']+'/repos/available-from-provider?provider='+encodeURIComponent(_0x332cb5)+'&limit=100';_0xa470e3&&_0xa470e3['trim']()&&(_0x1bd78f+='&search='+encodeURIComponent(_0xa470e3['trim']()));const _0x1f384b=await API['get'](_0x1bd78f);return _0x1f384b['repositories']||[];}catch(_0x1638f3){console['error']('Failed\x20to\x20load\x20repositories:',_0x1638f3);throw _0x1638f3;}},'renderItem':_0x4650ff=>{const _0x1cb9ff=_0x4650ff['private']===!![];let _0x368f16=_0x4650ff['description']||'no\x20description';return _0x4650ff['descriptionSource']==='project'&&_0x4650ff['description']&&(_0x368f16='Project:\x20'+_0x4650ff['description']),{'primary':_0x4650ff['full_name']||_0x4650ff['name'],'secondary':_0x368f16,'icon':_0x1cb9ff?REPO_ICON_PRIVATE:REPO_ICON_PUBLIC,'iconClass':_0x1cb9ff?'icon-private':'icon-public'};},'sortItems':_0x144267=>{return _0x144267['sort']((_0x102ed2,_0x3c5a84)=>{const _0x5dc6d3=(_0x102ed2['full_name']||_0x102ed2['name']||'')['toLowerCase'](),_0x308947=(_0x3c5a84['full_name']||_0x3c5a84['name']||'')['toLowerCase']();return _0x5dc6d3['localeCompare'](_0x308947);});},'getItemValue':_0x2549e4=>_0x2549e4['clone_url']||_0x2549e4['url'],'onSelect':_0x3f0dd8=>{if(_0x3f0dd8){const _0x50869d=document['getElementById']('repo-url');_0x50869d&&(_0x50869d['value']=_0x3f0dd8['clone_url']||_0x3f0dd8['url']||''),setEditRepoBranchValue(_0x3f0dd8['default_branch']||'main'),reloadEditRepoBranchSuggestions(),markAsModified();}}});if(_0x26750a){editRepoAutocomplete['enable'](),editRepoAutocomplete['preloadData']();const _0x15c6c2={'full_name':extractRepoFullName(_0x187933['url']),'clone_url':_0x187933['url'],'name':_0x187933['name']};editRepoAutocomplete['setValue'](_0x15c6c2);}else editRepoAutocomplete['disable']();}function onEditRepoProviderChange(){const _0x4fc452=document['getElementById']('edit-repo-provider')['value'],_0x3dc843=document['getElementById']('edit-repo-url-row'),_0xe8f929=document['getElementById']('edit-repo-autocomplete-row'),_0x1159df=document['getElementById']('edit-repo-credential-mode-row'),_0x180a83=document['getElementById']('repo-url');if(_0x4fc452){_0x3dc843['hidden']=!![],_0xe8f929['hidden']=![];if(_0x1159df)_0x1159df['hidden']=![];_0x180a83&&(_0x180a83['value']=''),editRepoAutocomplete&&(editRepoAutocomplete['reset'](),editRepoAutocomplete['enable'](),editRepoAutocomplete['preloadData']());}else{_0x3dc843['hidden']=![],_0xe8f929['hidden']=!![];if(_0x1159df)_0x1159df['hidden']=!![];_0x180a83&&(_0x180a83['value']=''),editRepoAutocomplete&&(editRepoAutocomplete['reset'](),editRepoAutocomplete['disable']());}reloadEditRepoBranchSuggestions(),markAsModified();}function cleanupEditRepoAutocomplete(){editRepoAutocomplete&&(editRepoAutocomplete['destroy'](),editRepoAutocomplete=null),editRepoBranchAutocomplete&&(editRepoBranchAutocomplete['destroy'](),editRepoBranchAutocomplete=null);}function initEditRepoBranchAutocomplete(_0xeb2f55){const _0x42a6f8=document['getElementById']('repo-branch-field');if(!_0x42a6f8)return;editRepoBranchAutocomplete&&(editRepoBranchAutocomplete['destroy'](),editRepoBranchAutocomplete=null);editRepoBranchAutocomplete=new AutocompleteSelect(_0x42a6f8,{'placeholder':'Search\x20for\x20a\x20branch','maxItems':0x64,'emptyMessage':'No\x20branches\x20found','loadingMessage':'Loading\x20branches...','preload':![],'searchMode':'server','loadItems':async _0x3e5a2d=>{const {providerName:_0x5b5474,repoUrl:_0x7a9adf}=getEditRepoBranchContext();if(!_0x5b5474||!_0x7a9adf)return[];return fetchRepoBranches({'providerName':_0x5b5474,'repoUrl':_0x7a9adf,'query':_0x3e5a2d});},'renderItem':_0x48962d=>({'primary':_0x48962d['name'],'secondary':_0x48962d['isDefault']?'default':''}),'sortItems':_0x5b3082=>_0x5b3082['sort']((_0x31b627,_0x85ad25)=>{if(_0x31b627['isDefault'])return-0x1;if(_0x85ad25['isDefault'])return 0x1;return(_0x31b627['name']||'')['localeCompare'](_0x85ad25['name']||'');}),'getItemValue':_0x3f070b=>_0x3f070b['name'],'onSelect':_0x336431=>{_0x336431&&setEditRepoBranchValue(_0x336431['name']),markAsModified();}}),setEditRepoBranchValue(_0xeb2f55?.['branch']||'main');editRepoBranchAutocomplete['input']&&editRepoBranchAutocomplete['input']['addEventListener']('input',()=>{clearBranchAutocompleteError(editRepoBranchAutocomplete),markAsModified();});const _0x503ea9=document['getElementById']('edit-repo-provider')?.['value']||'',_0x522f46=document['getElementById']('repo-url')?.['value']?.['trim']()||'';_0x503ea9&&_0x522f46&&editRepoBranchAutocomplete['preloadData']();}function validateEditRepoForm(){const _0x4c9003=document['getElementById']('edit-repo-provider')?.['value']||'',_0x1600ab=document['getElementById']('repo-url')?.['value']?.['trim']()||'',_0x4f5c04=getEditRepoBranchValue(),_0x52b8de=[];return _0x4c9003?!_0x1600ab&&_0x52b8de['push']('Please\x20select\x20a\x20repository\x20from\x20the\x20provider'):!_0x1600ab&&_0x52b8de['push']('Repository\x20URL\x20is\x20required'),!_0x4f5c04&&_0x52b8de['push']('Branch\x20is\x20required'),_0x52b8de;}function addRepo(){const _0x1f3e48=document['getElementById']('new-repo-url'),_0x2f1da9=document['getElementById']('new-repo-name'),_0x4a66a8=document['getElementById']('add-repo-error');document['getElementById']('repo-modal-title')['textContent']='Add\x20Repository',_0x1f3e48['value']='',_0x2f1da9['value']='',setNewRepoBranchValue('main'),document['getElementById']('new-repo-allow-branch')['checked']=![],document['getElementById']('new-repo-path')['value']='',document['getElementById']('new-repo-description')['value']='',document['querySelector']('input[name=\x22repo-entry-mode\x22][value=\x22manual\x22]')['checked']=!![],document['getElementById']('repo-provider-selection')['hidden']=!![],document['getElementById']('repo-url-row')['hidden']=![],document['getElementById']('new-repo-source-provider')['value']='';repoAutocomplete&&(repoAutocomplete['reset'](),repoAutocomplete['disable']());const _0x5d0f9f=document['getElementById']('new-repo-credential-mode');_0x5d0f9f&&(_0x5d0f9f['value']='app');_0x1f3e48['classList']['remove']('input-error'),_0x2f1da9['classList']['remove']('input-error'),clearBranchAutocompleteError(newRepoBranchAutocomplete),_0x4a66a8['hidden']=!![];const _0x1def9d=_0x1babe9=>_0x1babe9['target']['classList']['remove']('input-error');_0x1f3e48['addEventListener']('input',_0x1def9d,{'once':!![]}),_0x2f1da9['addEventListener']('input',_0x1def9d,{'once':!![]}),_0x1f3e48['addEventListener']('input',()=>{const _0xb45775=_0x1f3e48['value']['trim']();if(_0xb45775&&!_0x2f1da9['value']){const _0x4b1399=_0xb45775['split']('/'),_0x59c134=_0x4b1399[_0x4b1399['length']-0x1]['replace'](/\.git$/,'');_0x2f1da9['placeholder']=_0x59c134||'Auto-extracted\x20from\x20URL';}}),loadRepoModalProviders(),initNewRepoBranchAutocomplete(),reloadNewRepoBranchSuggestions(),document['getElementById']('add-repo-modal')['hidden']=![];}function closeAddRepoModal(){document['getElementById']('add-repo-modal')['hidden']=!![],newRepoBranchAutocomplete&&(newRepoBranchAutocomplete['destroy'](),newRepoBranchAutocomplete=null),repoAutocomplete&&(repoAutocomplete['reset'](),repoAutocomplete['disable']());}function initNewRepoBranchAutocomplete(){const _0x424bde=document['getElementById']('new-repo-branch-field');if(!_0x424bde)return;newRepoBranchAutocomplete&&(newRepoBranchAutocomplete['destroy'](),newRepoBranchAutocomplete=null),newRepoBranchAutocomplete=new AutocompleteSelect(_0x424bde,{'placeholder':'Search\x20for\x20a\x20branch','maxItems':0x64,'emptyMessage':'No\x20branches\x20found','loadingMessage':'Loading\x20branches...','preload':![],'searchMode':'server','loadItems':async _0x3e750e=>{const {providerName:_0x340649,repoUrl:_0x306de7}=getNewRepoBranchContext();if(!_0x340649||!_0x306de7)return[];return fetchRepoBranches({'providerName':_0x340649,'repoUrl':_0x306de7,'query':_0x3e750e});},'renderItem':_0x27d5b4=>({'primary':_0x27d5b4['name'],'secondary':_0x27d5b4['isDefault']?'default':''}),'sortItems':_0xc557a0=>_0xc557a0['sort']((_0x1128c5,_0x4f9a7f)=>{if(_0x1128c5['isDefault'])return-0x1;if(_0x4f9a7f['isDefault'])return 0x1;return(_0x1128c5['name']||'')['localeCompare'](_0x4f9a7f['name']||'');}),'getItemValue':_0x53c7e8=>_0x53c7e8['name'],'onSelect':_0x4500da=>{_0x4500da&&setNewRepoBranchValue(_0x4500da['name']);}}),newRepoBranchAutocomplete['input']&&newRepoBranchAutocomplete['input']['addEventListener']('input',()=>{clearBranchAutocompleteError(newRepoBranchAutocomplete);});}async function confirmAddRepo(){const _0x4ca8e1=document['getElementById']('new-repo-url'),_0x593585=document['getElementById']('new-repo-name'),_0x42dbee=document['getElementById']('add-repo-error'),_0xaf0300=_0x4ca8e1['value']['trim'](),_0x103e14=getNewRepoBranchValue();let _0x310823=_0x593585['value']['trim']();_0x4ca8e1['classList']['remove']('input-error'),_0x593585['classList']['remove']('input-error'),clearBranchAutocompleteError(newRepoBranchAutocomplete),_0x42dbee['hidden']=!![];const _0x2d0cb0=document['querySelector']('input[name=\x22repo-entry-mode\x22]:checked')['value'];let _0x4e86df=![],_0x494b24='';if(_0x2d0cb0==='provider'){const _0x39c986=document['getElementById']('new-repo-source-provider')['value'],_0xcf433a=repoAutocomplete?repoAutocomplete['getSelectedItem']():null;if(!_0x39c986)_0x494b24='Please\x20select\x20a\x20Git\x20provider',_0x4e86df=!![];else!_0xcf433a&&(_0x494b24='Please\x20select\x20a\x20repository',_0x4e86df=!![]);}else!_0xaf0300&&(_0x4ca8e1['classList']['add']('input-error'),_0x494b24='Repository\x20URL\x20is\x20required',_0x4e86df=!![]);!_0x103e14&&(setBranchAutocompleteErrorState(newRepoBranchAutocomplete,!![]),_0x494b24=_0x494b24||'Branch\x20is\x20required',_0x4e86df=!![]);if(!_0x310823&&_0xaf0300){const _0xd06053=_0xaf0300['split']('/');_0x310823=_0xd06053[_0xd06053['length']-0x1]['replace'](/\.git$/,'');}!_0x310823&&(_0x593585['classList']['add']('input-error'),_0x494b24=_0x494b24||'Repository\x20name\x20is\x20required',_0x4e86df=!![]);if(_0x4e86df){_0x42dbee['textContent']=_0x494b24,_0x42dbee['hidden']=![];return;}const _0x2fcb73={'name':_0x310823,'url':_0xaf0300,'branch':_0x103e14,'allow_branch_selection':document['getElementById']('new-repo-allow-branch')['checked'],'path':document['getElementById']('new-repo-path')['value']['trim']()||undefined,'description':document['getElementById']('new-repo-description')['value']['trim']()||undefined};if(_0x2d0cb0==='provider'){const _0x61565d=document['getElementById']('new-repo-source-provider')['value'];if(_0x61565d){const _0x6b80d1=document['getElementById']('new-repo-credential-mode')?.['value']||'app';_0x2fcb73['remote_provider']={'provider':_0x61565d,'credential_mode':_0x6b80d1};}}state['selectedEnvData']['repos']=[...state['selectedEnvData']['repos']||[],_0x2fcb73],renderRepos(),markAsModified(),closeAddRepoModal(),Utils['showSuccess']('Repository\x20added\x20(click\x20Save\x20to\x20persist\x20changes)');}async function loadRepoModalProviders(){try{const _0x1ac9f0=await API['get']('/environments/'+state['selectedEnv']+'/repos/providers'),_0x4426ae=_0x1ac9f0['providers']||[],_0x3b18ae=document['getElementById']('new-repo-source-provider');_0x3b18ae['innerHTML']='<option\x20value=\x22\x22>--\x20Select\x20a\x20provider\x20--</option>',_0x4426ae['forEach'](_0xe54eec=>{_0x3b18ae['innerHTML']+='<option\x20value=\x22'+Utils['escapeHtml'](_0xe54eec['name'])+'\x22>'+Utils['escapeHtml'](_0xe54eec['name'])+'\x20('+Utils['escapeHtml'](_0xe54eec['type'])+')</option>';});}catch(_0x23955f){console['error']('Failed\x20to\x20load\x20providers\x20for\x20repo\x20modal:',_0x23955f);}}function onRepoEntryModeChange(_0x577764){const _0x59908b=_0x577764['target']['value'],_0x1d8206=document['getElementById']('repo-provider-selection'),_0x54250c=document['getElementById']('repo-url-row'),_0x57a413=document['getElementById']('new-repo-url'),_0x14cf5a=document['getElementById']('new-repo-name'),_0x233f0=document['getElementById']('new-repo-source-provider');_0x59908b==='provider'?(_0x1d8206['hidden']=![],_0x54250c['hidden']=!![],_0x233f0['value']='',initRepoAutocomplete(),_0x14cf5a['placeholder']='Auto-extracted\x20from\x20URL'):(_0x1d8206['hidden']=!![],_0x54250c['hidden']=![],_0x57a413['value']='',repoAutocomplete&&(repoAutocomplete['reset'](),repoAutocomplete['disable']()),_0x14cf5a['placeholder']='Auto-extracted\x20from\x20URL'),reloadNewRepoBranchSuggestions();}function initRepoAutocomplete(){const _0xbd82e3=document['getElementById']('repo-autocomplete-container');if(!_0xbd82e3)return;repoAutocomplete&&repoAutocomplete['destroy'](),repoAutocomplete=new AutocompleteSelect(_0xbd82e3,{'placeholder':'Search\x20for\x20a\x20repository','maxItems':0x64,'emptyMessage':'No\x20repositories\x20found','loadingMessage':'Loading\x20repositories...','preload':![],'searchMode':'server','loadItems':async _0x37ff86=>{const _0x384e27=document['getElementById']('new-repo-source-provider')['value'];if(!_0x384e27)return[];try{let _0x5c60b4='/environments/'+state['selectedEnv']+'/repos/available-from-provider?provider='+encodeURIComponent(_0x384e27)+'&limit=100';_0x37ff86&&_0x37ff86['trim']()&&(_0x5c60b4+='&search='+encodeURIComponent(_0x37ff86['trim']()));const _0x38630d=await API['get'](_0x5c60b4);return _0x38630d['repositories']||[];}catch(_0x3d59d2){console['error']('Failed\x20to\x20load\x20repositories:',_0x3d59d2);throw _0x3d59d2;}},'renderItem':_0x48227a=>{const _0x386cbd=_0x48227a['private']===!![];let _0x36ff22=_0x48227a['description']||'no\x20description';return _0x48227a['descriptionSource']==='project'&&_0x48227a['description']&&(_0x36ff22='Project:\x20'+_0x48227a['description']),{'primary':_0x48227a['full_name']||_0x48227a['name'],'secondary':_0x36ff22,'icon':_0x386cbd?REPO_ICON_PRIVATE:REPO_ICON_PUBLIC,'iconClass':_0x386cbd?'icon-private':'icon-public'};},'sortItems':_0x2d9953=>{return _0x2d9953['sort']((_0x314d30,_0x5acc76)=>{const _0x29ef3b=(_0x314d30['full_name']||_0x314d30['name']||'')['toLowerCase'](),_0xef2b3b=(_0x5acc76['full_name']||_0x5acc76['name']||'')['toLowerCase']();return _0x29ef3b['localeCompare'](_0xef2b3b);});},'getItemValue':_0x8770cf=>_0x8770cf['clone_url']||_0x8770cf['url'],'onSelect':_0x1f14e4=>{const _0x1278c8=document['getElementById']('new-repo-url'),_0x552dd9=document['getElementById']('new-repo-name');if(_0x1f14e4){_0x1278c8['value']=_0x1f14e4['clone_url']||_0x1f14e4['url']||'';const _0x5767cf=(_0x1f14e4['full_name']||_0x1f14e4['name']||'')['split']('/')['pop']()||'';_0x552dd9['placeholder']=_0x5767cf||'Auto-extracted\x20from\x20URL',setNewRepoBranchValue(_0x1f14e4['default_branch']||'main'),reloadNewRepoBranchSuggestions();}else _0x1278c8['value']='',_0x552dd9['placeholder']='Auto-extracted\x20from\x20URL',setNewRepoBranchValue('main');}}),repoAutocomplete['disable']();}function onRepoSourceProviderChange(){const _0x204924=document['getElementById']('new-repo-source-provider')['value'],_0x7c2e68=document['getElementById']('new-repo-url'),_0x327737=document['getElementById']('new-repo-name');_0x7c2e68['value']='',_0x327737['placeholder']='Auto-extracted\x20from\x20URL';if(!_0x204924){repoAutocomplete&&(repoAutocomplete['reset'](),repoAutocomplete['disable']());reloadNewRepoBranchSuggestions();return;}repoAutocomplete&&(repoAutocomplete['reset'](),repoAutocomplete['enable'](),repoAutocomplete['preloadData']()),setNewRepoBranchValue('main'),reloadNewRepoBranchSuggestions();}function onRepoFromProviderSelect(){}window['editRepo']=function(_0x4bb85a){selectRepo(_0x4bb85a);},window['removeRepo']=function(_0x5253ca){const _0x55be8f=state['selectedEnvData']['repos'][_0x5253ca];document['getElementById']('delete-repo-name')['textContent']=_0x55be8f['name']||_0x55be8f['url'],document['getElementById']('delete-repo-confirm-btn')['dataset']['repoIndex']=_0x5253ca,document['getElementById']('delete-repo-modal')['hidden']=![];};function closeDeleteRepoModal(){document['getElementById']('delete-repo-modal')['hidden']=!![];}function confirmDeleteRepo(){const _0x4972e1=parseInt(document['getElementById']('delete-repo-confirm-btn')['dataset']['repoIndex']);state['selectedEnvData']['repos']=state['selectedEnvData']['repos']['filter']((_0x3cacce,_0x55a226)=>_0x55a226!==_0x4972e1);if(state['currentRepo']===_0x4972e1)state['currentRepo']=null,cleanupEditRepoAutocomplete();else state['currentRepo']>_0x4972e1&&state['currentRepo']--;renderRepos(),markAsModified(),closeDeleteRepoModal(),Utils['showSuccess']('Repository\x20removed\x20(click\x20Save\x20to\x20persist\x20changes)');}function renderServerConfig(){const _0x3aac98=state['selectedEnvData']['application_server'],_0x3b8a69=_0x3aac98?.['enabled']||![],_0x1ea7fe=state['selectedEnvData']?.['external_connections']||[],_0x3d0090=_0x1ea7fe['find'](_0x2e2ed8=>_0x2e2ed8['type']==='ibmi'&&(_0x2e2ed8['config']?.['features']||[])['includes']('interactive')&&_0x2e2ed8['config']?.['pui_base_url']),_0x5bc53c=document['getElementById']('server-connection-banner'),_0x2a8912=document['getElementById']('server-enabled'),_0x4f94e3=document['getElementById']('server-name'),_0x2accff=document['getElementById']('server-proxy');if(_0x3d0090){const _0x180730=Utils['escapeHtml'](_0x3d0090['name']||'IBM\x20i\x20Session');_0x5bc53c['innerHTML']='<strong>External\x20Connection:</strong>\x20App\x20server\x20proxy,\x20launch\x20URL,\x20and\x20authentication\x20are\x20configured\x20by\x20connection\x20<strong>'+_0x180730+'</strong>.\x20Edit\x20the\x20connection\x20to\x20change\x20these\x20settings.',_0x5bc53c['hidden']=![],_0x2a8912['checked']=!![],_0x2a8912['disabled']=!![],document['getElementById']('server-config')['hidden']=![],_0x4f94e3['value']=_0x3d0090['name']||'IBM\x20i\x20Session',_0x4f94e3['disabled']=!![],addConnectionHint(_0x4f94e3,_0x180730),_0x2accff['value']=_0x3d0090['config']['pui_base_url'],_0x2accff['disabled']=!![],addConnectionHint(_0x2accff,_0x180730);const _0x30b098=document['getElementById']('env-screen-render-url');if(_0x30b098){const _0x2dda88=_0x3d0090['config']['pui_render_path']||'/profoundui/genie';_0x30b098['value']=''+_0x3d0090['config']['pui_base_url']+_0x2dda88,_0x30b098['disabled']=!![],addConnectionHint(_0x30b098,_0x180730);}}else{_0x5bc53c['hidden']=!![],_0x5bc53c['innerHTML']='',_0x2a8912['checked']=_0x3b8a69,_0x2a8912['disabled']=![],document['getElementById']('server-config')['hidden']=!_0x3b8a69,_0x4f94e3['value']=_0x3aac98?.['name']||'',_0x4f94e3['disabled']=![],removeConnectionHint(_0x4f94e3),_0x2accff['value']=_0x3aac98?.['proxy']||'',_0x2accff['disabled']=![],removeConnectionHint(_0x2accff);const _0x3eba7a=document['getElementById']('env-screen-render-url');_0x3eba7a&&_0x3eba7a['disabled']&&(_0x3eba7a['disabled']=![],removeConnectionHint(_0x3eba7a));}const _0x18845d=monacoEditors['get']('server-command-editor');_0x18845d?_0x18845d['setValue'](_0x3aac98?.['start_command']||''):createMonacoEditor('server-command-editor',_0x3aac98?.['start_command']||'','shell',![])['then'](_0x4efc43=>{_0x4efc43&&(_0x4efc43['updateOptions']({'wordWrap':'off'}),_0x4efc43['onDidChangeModelContent'](()=>markAsModified()));});document['getElementById']('server-qa-url')['value']=_0x3aac98?.['qa_url']||'';const _0x5a36e6=_0x3aac98?.['basic_auth']||{};document['getElementById']('server-auth-user-property')['value']=_0x5a36e6['user_property']||'',document['getElementById']('server-auth-password-property')['value']=_0x5a36e6['password_property']||'',renderPorts(_0x3aac98?.['ports']||[]);if(_0x3d0090){const _0x2bfb6d=_0x3d0090['config']['pui_launch_path']||'/profoundui/auth/genie',_0x28e476=_0x3d0090['name']||'IBM\x20i\x20Session';state['_connectionLaunchUrl']={'name':'Genie\x20('+_0x28e476+')','path':_0x2bfb6d,'description':'From\x20connection:\x20'+_0x28e476};}else state['_connectionLaunchUrl']=null;renderURLs(_0x3aac98?.['launch_urls']||[]),renderProxyHeaders(_0x3aac98?.['proxy_headers']||{}),renderPortQaUrls(_0x3aac98?.['port_qa_urls']||{}),renderVolumeMounts(state['selectedEnvData']?.['volume_mounts']||[]);}function addConnectionHint(_0x2a580f,_0x38f043){removeConnectionHint(_0x2a580f);const _0x132276=document['createElement']('small');_0x132276['className']='form-hint\x20connection-hint',_0x132276['textContent']='From\x20connection\x20\x22'+_0x38f043+'\x22',_0x2a580f['parentNode']['appendChild'](_0x132276);}function removeConnectionHint(_0x3b61e5){const _0x3f97d8=_0x3b61e5['parentNode']?.['querySelector']('.connection-hint');if(_0x3f97d8)_0x3f97d8['remove']();}function toggleRebuildSchedule(){const _0x4404f9=document['getElementById']('rebuild-schedule-enabled-build-tab')['checked'];document['getElementById']('rebuild-schedule-config-build-tab')['hidden']=!_0x4404f9,markAsModified();}function toggleServerConfig(){const _0x2feed5=document['getElementById']('server-enabled')['checked'];document['getElementById']('server-config')['hidden']=!_0x2feed5,markAsModified();}function renderPorts(_0x33be08){const _0x56646a=document['getElementById']('ports-list');_0x56646a['innerHTML']=_0x33be08['map']((_0x1301fe,_0x32a0c5)=>'\x0a\x20\x20\x20\x20<div\x20class=\x22config-item\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20value=\x22'+_0x1301fe['internal']+'\x22\x20placeholder=\x22Port\x22\x20class=\x22form-input\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20value=\x22'+Utils['escapeHtml'](_0x1301fe['name'])+'\x22\x20placeholder=\x22Name\x22\x20class=\x22form-input\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20onclick=\x22removePort('+_0x32a0c5+')\x22>×</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20')['join']('');}function renderURLs(_0xd88a61){const _0x3c930d=document['getElementById']('urls-list'),_0x5e111d=_0xd88a61['findIndex'](_0x4b7f2e=>_0x4b7f2e?.['primary']),_0x46f3f4=document['getElementById']('clear-primary-url-btn');_0x46f3f4&&(_0x46f3f4['disabled']=_0x5e111d===-0x1||!!state['_connectionLaunchUrl']);let _0x242bc3='';const _0x303f32=state['_connectionLaunchUrl'];_0x303f32&&(_0x242bc3+='\x0a\x20\x20\x20\x20<div\x20class=\x22config-item\x22\x20data-connection-derived=\x22true\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20data-field=\x22name\x22\x20value=\x22'+Utils['escapeHtml'](_0x303f32['name'])+'\x22\x20placeholder=\x22Name\x22\x20class=\x22form-input\x22\x20disabled>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20data-field=\x22path\x22\x20value=\x22'+Utils['escapeHtml'](_0x303f32['path'])+'\x22\x20placeholder=\x22Path\x22\x20class=\x22form-input\x22\x20disabled>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20data-field=\x22port\x22\x20value=\x22\x22\x20placeholder=\x22Port\x22\x20class=\x22form-input\x22\x20style=\x22max-width:\x2080px;\x22\x20disabled>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20data-field=\x22description\x22\x20value=\x22'+Utils['escapeHtml'](_0x303f32['description']||'')+'\x22\x20placeholder=\x22Description\x22\x20class=\x22form-input\x22\x20disabled>\x0a\x20\x20\x20\x20\x20\x20<label\x20class=\x22primary-url-toggle\x20is-primary\x22\x20title=\x22Primary\x20URL\x20from\x20external\x20connection\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22radio\x22\x20name=\x22connection-primary-url\x22\x20data-field=\x22primary\x22\x20checked\x20disabled>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span>Primary</span>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20disabled>↑</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20disabled>↓</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20disabled>×</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20'),_0x242bc3+=_0xd88a61['map']((_0x457641,_0x5a2ce7)=>{const _0xd1450e=_0x5e111d===-0x1?![]:_0x5a2ce7===_0x5e111d;return'\x0a\x20\x20\x20\x20<div\x20class=\x22config-item\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20data-field=\x22name\x22\x20value=\x22'+Utils['escapeHtml'](_0x457641['name'])+'\x22\x20placeholder=\x22Name\x22\x20class=\x22form-input\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20data-field=\x22path\x22\x20value=\x22'+Utils['escapeHtml'](_0x457641['path'])+'\x22\x20placeholder=\x22Path\x22\x20class=\x22form-input\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20data-field=\x22port\x22\x20value=\x22'+(_0x457641['port']??'')+'\x22\x20placeholder=\x22Port\x22\x20class=\x22form-input\x22\x20style=\x22max-width:\x2080px;\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20data-field=\x22description\x22\x20value=\x22'+Utils['escapeHtml'](_0x457641['description']||'')+'\x22\x20placeholder=\x22Description\x22\x20class=\x22form-input\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<label\x20class=\x22primary-url-toggle\x20'+(_0xd1450e?'is-primary':'')+'\x22\x20title=\x22'+(_0x303f32?'Primary\x20is\x20set\x20by\x20external\x20connection':'Primary\x20URL\x20opened\x20by\x20the\x20Testing\x20button')+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22radio\x22\x20name=\x22primary-launch-url\x22\x20data-field=\x22primary\x22\x20'+(_0xd1450e?'checked':'')+'\x20'+(_0x303f32?'disabled':'onclick=\x22setPrimaryURL('+_0x5a2ce7+')\x22')+'>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span>Primary</span>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20onclick=\x22moveURL('+_0x5a2ce7+',\x20-1)\x22\x20title=\x22Move\x20up\x22\x20aria-label=\x22Move\x20URL\x20up\x22\x20'+(_0x5a2ce7===0x0?'disabled':'')+'>↑</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20onclick=\x22moveURL('+_0x5a2ce7+',\x201)\x22\x20title=\x22Move\x20down\x22\x20aria-label=\x22Move\x20URL\x20down\x22\x20'+(_0x5a2ce7===_0xd88a61['length']-0x1?'disabled':'')+'>↓</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20onclick=\x22removeURL('+_0x5a2ce7+')\x22>×</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';})['join'](''),_0x3c930d['innerHTML']=_0x242bc3;}function collectURLsFromForm(_0x28171e=![]){const _0x4c0ebd=document['getElementById']('urls-list');if(!_0x4c0ebd)return[];const _0x49d572=_0x4c0ebd['querySelectorAll']('.config-item'),_0x141331=[];let _0x314322=![];return _0x49d572['forEach'](_0x3e7460=>{if(_0x3e7460['hasAttribute']('data-connection-derived'))return;const _0x2bcdc7=_0x3e7460['querySelector']('input[data-field=\x22name\x22]'),_0x312351=_0x3e7460['querySelector']('input[data-field=\x22path\x22]'),_0x47f046=_0x3e7460['querySelector']('input[data-field=\x22port\x22]'),_0xbad62d=_0x3e7460['querySelector']('input[data-field=\x22description\x22]'),_0x20a066=_0x3e7460['querySelector']('input[data-field=\x22primary\x22]');if(!_0x2bcdc7||!_0x312351||!_0x47f046||!_0xbad62d)return;const _0x1b6dae=_0x2bcdc7['value']['trim'](),_0x4cb220=_0x312351['value']['trim'](),_0x1d71b1=_0x47f046['value']['trim'](),_0x251d87=_0xbad62d['value']['trim'](),_0x3cba5b=_0x1b6dae||_0x4cb220||_0x1d71b1||_0x251d87;if(_0x28171e||_0x3cba5b){const _0x3de884={'name':_0x1b6dae,'path':_0x4cb220};if(_0x1d71b1)_0x3de884['port']=parseInt(_0x1d71b1,0xa);else _0x28171e&&(_0x3de884['port']='');if(_0x251d87)_0x3de884['description']=_0x251d87;else _0x28171e&&(_0x3de884['description']='');const _0x24f556=_0x20a066?.['checked']||![];_0x24f556&&!_0x314322&&_0x3cba5b&&(_0x3de884['primary']=!![],_0x314322=!![]),_0x141331['push'](_0x3de884);}}),_0x141331;}function renderProxyHeaders(_0x57a091){const _0x30a163=document['getElementById']('proxy-headers-list'),_0x1cd438=Object['entries'](_0x57a091);_0x30a163['innerHTML']=_0x1cd438['map'](([_0x2008f9,_0x30618a],_0x1cdab7)=>'\x0a\x20\x20\x20\x20<div\x20class=\x22config-item\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20value=\x22'+Utils['escapeHtml'](_0x2008f9)+'\x22\x20placeholder=\x22Header\x20Name\x22\x20class=\x22form-input\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20value=\x22'+Utils['escapeHtml'](_0x30618a)+'\x22\x20placeholder=\x22Header\x20Value\x22\x20class=\x22form-input\x20code-font\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20onclick=\x22removeProxyHeader('+_0x1cdab7+')\x22>×</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20')['join']('');}function renderPortQaUrls(_0x332dfb){const _0x20773d=document['getElementById']('port-qa-urls-list'),_0x4763ec=Object['entries'](_0x332dfb);_0x20773d['innerHTML']=_0x4763ec['map'](([_0x4e5248,_0x27fc63],_0xca86e6)=>'\x0a\x20\x20\x20\x20<div\x20class=\x22config-item\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20value=\x22'+Utils['escapeHtml'](_0x4e5248)+'\x22\x20placeholder=\x22Port\x22\x20class=\x22form-input\x22\x20style=\x22max-width:\x20100px;\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20value=\x22'+Utils['escapeHtml'](_0x27fc63)+'\x22\x20placeholder=\x22QA\x20URL\x20(e.g.,\x20https://production.example.com)\x22\x20class=\x22form-input\x20code-font\x22\x20oninput=\x22markAsModified()\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-icon\x22\x20onclick=\x22removePortQaUrl('+_0xca86e6+')\x22>×</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20')['join']('');}function addPortQaUrl(){const _0x528c71=document['getElementById']('port-qa-urls-list'),_0x86cc4e=_0x528c71['querySelectorAll']('.config-item');if(_0x86cc4e['length']>0x0){const _0x13f6aa=_0x86cc4e[_0x86cc4e['length']-0x1],_0x103dbd=_0x13f6aa['querySelectorAll']('input'),_0x1dee68=_0x103dbd[0x0]['value']['trim'](),_0x208b1b=_0x103dbd[0x1]['value']['trim']();if(!_0x1dee68&&!_0x208b1b)return;}const _0xec1290=state['selectedEnvData']['application_server']||{},_0xc3a516=_0xec1290['port_qa_urls']||{};_0xc3a516['']='',!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['port_qa_urls']=_0xc3a516,renderPortQaUrls(_0xc3a516),markAsModified();}function removePortQaUrl(_0x34d197){const _0x38f4de=document['getElementById']('port-qa-urls-list'),_0x56b721=_0x38f4de['querySelectorAll']('.config-item');_0x34d197>=0x0&&_0x34d197<_0x56b721['length']&&(_0x56b721[_0x34d197]['remove'](),markAsModified());}function collectPortQaUrlsFromForm(){const _0x59d045=document['getElementById']('port-qa-urls-list');if(!_0x59d045)return{};const _0x2c06f7=_0x59d045['querySelectorAll']('.config-item'),_0x173191={};return _0x2c06f7['forEach'](_0x268d06=>{const _0x5d1159=_0x268d06['querySelectorAll']('input');if(_0x5d1159['length']>=0x2){const _0x3d2eea=_0x5d1159[0x0]['value']['trim'](),_0x4eb462=_0x5d1159[0x1]['value']['trim']();_0x3d2eea&&_0x4eb462&&(_0x173191[_0x3d2eea]=_0x4eb462);}}),_0x173191;}function addPort(){const _0x6a33ca=document['getElementById']('ports-list'),_0x3f7090=_0x6a33ca['querySelectorAll']('.config-item');if(_0x3f7090['length']>0x0){const _0x1f26e6=_0x3f7090[_0x3f7090['length']-0x1],_0x566209=_0x1f26e6['querySelectorAll']('input'),_0x2d9b18=_0x566209[0x0]['value']['trim'](),_0x22b725=_0x566209[0x1]['value']['trim']();if(!_0x2d9b18&&!_0x22b725)return;}const _0x1726b9=state['selectedEnvData']['application_server']||{},_0x4ea039=_0x1726b9['ports']||[];_0x4ea039['push']({'internal':'','name':''}),!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['ports']=_0x4ea039,renderPorts(_0x4ea039),markAsModified();}function addURL(){const _0x403479=document['getElementById']('urls-list'),_0x2ac9e6=_0x403479['querySelectorAll']('.config-item');if(_0x2ac9e6['length']>0x0){const _0x587467=_0x2ac9e6[_0x2ac9e6['length']-0x1],_0x3255f8=_0x587467['querySelector']('input[data-field=\x22name\x22]')?.['value']['trim']()||'',_0x51ca80=_0x587467['querySelector']('input[data-field=\x22path\x22]')?.['value']['trim']()||'',_0x4910ff=_0x587467['querySelector']('input[data-field=\x22port\x22]')?.['value']['trim']()||'',_0x52d22d=_0x587467['querySelector']('input[data-field=\x22description\x22]')?.['value']['trim']()||'';if(!_0x3255f8&&!_0x51ca80&&!_0x4910ff&&!_0x52d22d)return;}const _0x4ad8e4=state['selectedEnvData']['application_server']||{},_0x590efa=_0x4ad8e4['launch_urls']||[];_0x590efa['push']({'name':'','path':''}),!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['launch_urls']=_0x590efa,renderURLs(_0x590efa),markAsModified();}window['removePort']=function(_0x2e2b74){const _0x4d9700=state['selectedEnvData']['application_server']||{},_0x30ed6f=_0x4d9700['ports']||[];_0x30ed6f['splice'](_0x2e2b74,0x1),state['selectedEnvData']['application_server']['ports']=_0x30ed6f,renderPorts(_0x30ed6f),markAsModified();},window['removeURL']=function(_0x103b38){const _0x5a8a8d=state['selectedEnvData']['application_server']||{},_0xba57d3=_0x5a8a8d['launch_urls']||[];_0xba57d3['splice'](_0x103b38,0x1),state['selectedEnvData']['application_server']['launch_urls']=_0xba57d3,renderURLs(_0xba57d3),markAsModified();},window['moveURL']=function(_0x8a1698,_0x589c70){const _0x562d2a=collectURLsFromForm(!![]),_0x4a8d88=_0x8a1698+_0x589c70;if(_0x4a8d88<0x0||_0x4a8d88>=_0x562d2a['length'])return;const [_0xa63cd6]=_0x562d2a['splice'](_0x8a1698,0x1);_0x562d2a['splice'](_0x4a8d88,0x0,_0xa63cd6),!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['launch_urls']=_0x562d2a,renderURLs(_0x562d2a),markAsModified();},window['setPrimaryURL']=function(_0x503a87){const _0x2409a6=collectURLsFromForm(!![]);_0x2409a6['forEach']((_0x4b374c,_0x30678c)=>{_0x30678c===_0x503a87&&(_0x4b374c['name']||_0x4b374c['path']||_0x4b374c['port']||_0x4b374c['description'])?_0x4b374c['primary']=!![]:delete _0x4b374c['primary'];}),!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['launch_urls']=_0x2409a6,renderURLs(_0x2409a6),markAsModified();};function clearPrimaryURL(){const _0x5d5e32=collectURLsFromForm(!![]);_0x5d5e32['forEach'](_0x4c49cc=>{delete _0x4c49cc['primary'];}),!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['launch_urls']=_0x5d5e32,renderURLs(_0x5d5e32),markAsModified();}function addProxyHeader(){const _0x557fa3=document['getElementById']('proxy-headers-list'),_0x1adf2d=_0x557fa3['querySelectorAll']('.config-item');if(_0x1adf2d['length']>0x0){const _0x58028f=_0x1adf2d[_0x1adf2d['length']-0x1],_0x49805e=_0x58028f['querySelectorAll']('input'),_0x4d1999=_0x49805e[0x0]['value']['trim'](),_0x20c76e=_0x49805e[0x1]['value']['trim']();if(!_0x4d1999&&!_0x20c76e)return;}const _0x5f4552=state['selectedEnvData']['application_server']||{},_0x531488=_0x5f4552['proxy_headers']||{};_0x531488['']='',!state['selectedEnvData']['application_server']&&(state['selectedEnvData']['application_server']={}),state['selectedEnvData']['application_server']['proxy_headers']=_0x531488,renderProxyHeaders(_0x531488),markAsModified();}window['removeProxyHeader']=function(_0x324b61){const _0x36dcdc=state['selectedEnvData']['application_server']||{},_0x57629a=_0x36dcdc['proxy_headers']||{},_0x265938=Object['keys'](_0x57629a);_0x324b61<_0x265938['length']&&delete _0x57629a[_0x265938[_0x324b61]],state['selectedEnvData']['application_server']['proxy_headers']=_0x57629a,renderProxyHeaders(_0x57629a),markAsModified();},window['removePortQaUrl']=function(_0x39d518){const _0x86b96e=state['selectedEnvData']['application_server']||{},_0x15db52=_0x86b96e['port_qa_urls']||{},_0x2f6d54=Object['keys'](_0x15db52);_0x39d518<_0x2f6d54['length']&&delete _0x15db52[_0x2f6d54[_0x39d518]],state['selectedEnvData']['application_server']['port_qa_urls']=_0x15db52,renderPortQaUrls(_0x15db52),markAsModified();};function renderReadme(){const _0x4c406e=state['selectedEnvData']['readmeContent']||'',_0xbc0ddb=document['getElementById']('readme-preview'),_0x10b909=document['getElementById']('readme-editor'),_0x407e45=document['getElementById']('preview-readme-btn');_0x4c406e?_0xbc0ddb['innerHTML']=marked['parse'](_0x4c406e):_0xbc0ddb['innerHTML']='<p\x20class=\x22text-muted\x22>No\x20README\x20content\x20yet.\x20Click\x20Edit\x20to\x20add\x20documentation\x20for\x20this\x20environment.</p>',_0xbc0ddb['hidden']=![],_0x10b909['hidden']=!![],_0x407e45['innerHTML']='<span>✏️</span>\x20Edit',!state['readmeContent']&&(state['readmeContent']=_0x4c406e);}window['toggleReadmePreview']=async function(){const _0x320212=document['getElementById']('readme-editor'),_0x62a723=document['getElementById']('readme-preview'),_0x575516=document['getElementById']('preview-readme-btn'),_0x11ab72='readme-editor';if(_0x62a723['hidden']){const _0xf8070f=getMonacoValue(_0x11ab72)||'';_0xf8070f?_0x62a723['innerHTML']=marked['parse'](_0xf8070f):_0x62a723['innerHTML']='<p\x20class=\x22text-muted\x22>No\x20README\x20content\x20yet.</p>',_0x62a723['hidden']=![],_0x320212['hidden']=!![],_0x575516['innerHTML']='<span>✏️</span>\x20Edit';}else{_0x62a723['hidden']=!![],_0x320212['hidden']=![],_0x575516['innerHTML']='<span>👁</span>\x20Preview';const _0x2bf8f7=window['MarkdownFileEditor']&&window['MarkdownFileEditor']['editors']['has'](_0x11ab72),_0x160275=monacoEditors['has'](_0x11ab72);if(!_0x2bf8f7&&!_0x160275){const _0x5be58a=state['selectedEnvData']['readmeContent']||'';if(window['MarkdownFileEditor']){const _0x31f786=window['MarkdownFileEditor']['getOrCreate'](_0x11ab72,_0x5be58a,![],'400px',()=>markAsModified());}else{const _0x408186=await createMonacoEditor(_0x11ab72,_0x5be58a,'markdown',![]);_0x408186&&_0x408186['onDidChangeModelContent'](()=>{markAsModified();});}}}};async function renderAgentInstructions(){const _0x4b7a6d=state['selectedEnvData']['agentsContent']||'',_0x2e4ba4=document['getElementById']('agents-preview'),_0x638be9=document['getElementById']('agents-editor'),_0x461287=document['getElementById']('preview-agents-btn');_0x2e4ba4['innerHTML']=marked['parse'](_0x4b7a6d),_0x2e4ba4['hidden']=![],_0x638be9['hidden']=!![],_0x461287['innerHTML']='<span>✏️</span>\x20Edit',state['agentsContent']=_0x4b7a6d;}function updateAgentStats(){const _0x4627df=getMonacoValue('agents-editor')||'',_0x1a160c=_0x4627df['split']('\x0a')['length'],_0x2a6c01=_0x4627df['trim']()['split'](/\s+/)['length'],_0x1c0fd1=_0x4627df['length'];document['getElementById']('agents-stats')['textContent']='Lines:\x20'+_0x1a160c+'\x20•\x20Words:\x20'+_0x2a6c01+'\x20•\x20Characters:\x20'+_0x1c0fd1;}async function toggleAgentsPreview(){const _0x48cabc=document['getElementById']('agents-editor'),_0x41019a=document['getElementById']('agents-preview'),_0x46760c=document['getElementById']('preview-agents-btn'),_0x281b83='agents-editor';if(_0x41019a['hidden']){const _0x3f5c81=getMonacoValue(_0x281b83)||'';_0x41019a['innerHTML']=marked['parse'](_0x3f5c81),_0x41019a['hidden']=![],_0x48cabc['hidden']=!![],_0x46760c['innerHTML']='<span>✏️</span>\x20Edit';}else{_0x41019a['hidden']=!![],_0x48cabc['hidden']=![],_0x46760c['innerHTML']='<span>👁</span>\x20Preview';const _0x2669e1=window['MarkdownFileEditor']&&window['MarkdownFileEditor']['editors']['has'](_0x281b83),_0x1d9b30=monacoEditors['has'](_0x281b83);if(!_0x2669e1&&!_0x1d9b30){const _0x3d1423=state['agentsContent']||'';if(window['MarkdownFileEditor']){const _0x182f04=window['MarkdownFileEditor']['getOrCreate'](_0x281b83,_0x3d1423,![],'500px',()=>{updateAgentStats(),markAsModified();});}else{const _0x371bb5=await createMonacoEditor(_0x281b83,_0x3d1423,'markdown',![]);_0x371bb5&&_0x371bb5['onDidChangeModelContent'](()=>{updateAgentStats(),markAsModified();});}updateAgentStats();}}}let currentScript='pre-clone';function renderBuildTab(){}function toggleScriptsSection(){const _0x1c5f7b=document['querySelector']('#scripts-section-header')['closest']('.collapsible-card'),_0x538186=document['getElementById']('scripts-section-body');_0x538186['hidden']?(_0x538186['hidden']=![],_0x1c5f7b['classList']['add']('expanded'),!monacoEditors['has']('script-editor')&&switchScript(currentScript)):(_0x538186['hidden']=!![],_0x1c5f7b['classList']['remove']('expanded'));}async function switchScript(_0x1efba){currentScript=_0x1efba,document['querySelectorAll']('#scripts-section-body\x20.script-tab')['forEach'](_0x474bc7=>{_0x474bc7['classList']['toggle']('active',_0x474bc7['dataset']['script']===_0x1efba);});const _0x388590=['pre-clone','post-clone','setup','cleanup'];_0x388590['forEach'](_0x434269=>{const _0x292c0f=document['querySelector']('.script-desc-'+_0x434269);_0x292c0f&&(_0x292c0f['hidden']=_0x1efba!==_0x434269&&_0x1efba!==_0x434269+'.sh');});let _0x26920c='';if(_0x1efba==='pre-clone'||_0x1efba==='post-clone'){const _0x3c5d6f=_0x1efba==='pre-clone'?'pre_clone_instructions':'post_clone_instructions';_0x26920c=state['selectedEnvData']['docker_config']?.[_0x3c5d6f]||'';}else _0x26920c=state['selectedEnvData']['files']?.[_0x1efba]||'';const _0x5db960=await createMonacoEditor('script-editor',_0x26920c,'shell',![]);_0x5db960&&(_0x5db960['updateOptions']({'wordWrap':'off'}),_0x5db960['onDidChangeModelContent'](()=>{markAsModified();}));}function getCurrentScriptContent(){if(!monacoEditors['has']('script-editor'))return null;return getMonacoValue('script-editor');}function saveCurrentScriptToState(){const _0x57d280=getCurrentScriptContent();if(_0x57d280===null)return;if(currentScript==='pre-clone'||currentScript==='post-clone'){!state['selectedEnvData']['docker_config']&&(state['selectedEnvData']['docker_config']={});const _0x14c5b9=currentScript==='pre-clone'?'pre_clone_instructions':'post_clone_instructions';state['selectedEnvData']['docker_config'][_0x14c5b9]=_0x57d280;}else!state['selectedEnvData']['files']&&(state['selectedEnvData']['files']={}),state['selectedEnvData']['files'][currentScript]=_0x57d280;}function getCodermakeBuildCommands(_0x284bc0,_0x5c83b1){const _0x447807=_0x284bc0['external_connections']||[],_0x4d97ae=_0x284bc0['repos']||[],_0x2ac162=[];for(const _0x4e04f1 of _0x447807){if(_0x4e04f1['type']!=='ibmi')continue;const _0x468d62=_0x4e04f1['config']?.['features']||[];if(!_0x468d62['includes']('build'))continue;if(!_0x4e04f1['config']?.['build_repo'])continue;if(!_0x5c83b1['find'](_0xafccf3=>_0xafccf3['name']===_0x4e04f1['config']['build_repo']))continue;const _0x284bc8=_0x4d97ae['find'](_0x484d60=>_0x484d60['name']===_0x4e04f1['config']['build_repo']),_0x4235de=_0x284bc8?'/workspace/'+(_0x284bc8['path']||_0x284bc8['name']):'/workspace',_0x3e20c4=_0x4e04f1['config']['build_path']?_0x4235de+'/'+_0x4e04f1['config']['build_path']:_0x4235de;_0x2ac162['push']('cd\x20'+_0x3e20c4+'\x20&&\x20IBMI_BUILD_LIBRARY=container_setup_build\x20IBMI_HOST=dummy\x20IBMI_USER=dummy\x20codermake\x20-t');}return _0x2ac162;}function generateDockerfilePreview(){saveCurrentScriptToState();const _0x33578a=state['selectedEnvData'],_0x4f6585='profoundlogic/coder-base:latest',_0x28c7d1=_0x33578a['repos']||[],_0xaaf7d6=_0x33578a['docker_config']?.['pre_clone_instructions']||'',_0x1abf3a=_0x33578a['docker_config']?.['post_clone_instructions']||'';let _0x434752='FROM\x20'+_0x4f6585+'\x0a\x0a';_0xaaf7d6['trim']()&&(_0x434752+='#\x20Pre-clone\x20instructions\x0a',_0x434752+=_0xaaf7d6['trim']()+'\x0a\x0a');const _0x3939e1=_0x28c7d1['filter'](_0x182a9f=>_0x182a9f['clone_auto']!==![]);if(_0x3939e1['length']>0x0){const _0x35156f=_0x3939e1['map'](_0x2a38d1=>{const _0x5de21e=_0x2a38d1['path']||_0x2a38d1['name']||_0x2a38d1['url']?.['split']('/')['pop']()?.['replace']('.git','')||'repo',_0x1db26b=normalizeGitUrl(_0x2a38d1['url']);return'git\x20clone\x20--depth=50\x20--no-single-branch\x20'+_0x1db26b+'\x20/workspace/'+_0x5de21e;}),_0x421cf3=_0x3939e1['filter'](_0x4015f6=>_0x4015f6['post_clone_action']&&_0x4015f6['post_clone_action']!=='none')['map'](_0x2c1071=>{const _0x1ed5cd=_0x2c1071['path']||_0x2c1071['name']||_0x2c1071['url']?.['split']('/')['pop']()?.['replace']('.git','')||'repo',_0x2a67b4=_0x2c1071['post_clone_action']['split']('\x0a')['map'](_0x2a5a0c=>_0x2a5a0c['replace'](/\r$/,''))['filter'](_0x4ace7b=>_0x4ace7b['trim']())['join']('\x20&&\x20\x5c\x0a\x20\x20\x20\x20');return'cd\x20/workspace/'+_0x1ed5cd+'\x20&&\x20'+_0x2a67b4;}),_0x35249a=_0x3939e1['some'](_0x4401e8=>_0x4401e8['remote_provider']);_0x434752+='#\x20Clone\x20repositories\x20and\x20install\x20dependencies\x0a';_0x35249a?_0x434752+='RUN\x20--mount=type=secret,id=git-credentials,target=/root/.git-credentials\x20\x5c\x0a\x20\x20\x20\x20':_0x434752+='RUN\x20';_0x434752+=_0x35156f['join']('\x20&&\x20\x5c\x0a\x20\x20\x20\x20');_0x421cf3['length']>0x0&&(_0x434752+='\x20&&\x20\x5c\x0a\x20\x20\x20\x20'+_0x421cf3['join']('\x20&&\x20\x5c\x0a\x20\x20\x20\x20'));const _0x1c7f53=getCodermakeBuildCommands(_0x33578a,_0x3939e1);_0x1c7f53['length']>0x0&&(_0x434752+='\x20&&\x20\x5c\x0a\x20\x20\x20\x20'+_0x1c7f53['join']('\x20&&\x20\x5c\x0a\x20\x20\x20\x20')),_0x434752+='\x20&&\x20\x5c\x0a\x20\x20\x20\x20chown\x20-R\x20coder:coder\x20/workspace\x0a\x0a';}return _0x1abf3a['trim']()&&(_0x434752+='#\x20Post-clone\x20instructions\x0a',_0x434752+=_0x1abf3a['trim']()+'\x0a\x0a'),_0x434752+='WORKDIR\x20/workspace\x0a',_0x434752;}function showDockerfilePreview(){const _0x3ba829=generateDockerfilePreview(),_0x398cf3=document['getElementById']('dockerfile-preview-text');_0x398cf3['textContent']=_0x3ba829,document['getElementById']('dockerfile-preview-modal')['hidden']=![];}function closeDockerfilePreviewModal(){document['getElementById']('dockerfile-preview-modal')['hidden']=!![];}async function copyDockerfileToClipboard(){const _0x4064a2=generateDockerfilePreview();try{await navigator['clipboard']['writeText'](_0x4064a2);const _0x312238=document['getElementById']('dockerfile-copy-btn'),_0x6ed65b=_0x312238['innerHTML'];_0x312238['innerHTML']='<svg\x20width=\x2214\x22\x20height=\x2214\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22><polyline\x20points=\x2220\x206\x209\x2017\x204\x2012\x22></polyline></svg>\x20Copied!',setTimeout(()=>{_0x312238['innerHTML']=_0x6ed65b;},0x7d0);}catch(_0x5f2e19){console['error']('Failed\x20to\x20copy:',_0x5f2e19);}}function renderTests(){const _0x488698=document['querySelector']('.tests-sidebar'),_0x177b83=state['selectedEnvData']['tests']||{},_0x4febef=Object['keys'](_0x177b83);updateTabBadge('badge-tests',_0x4febef['length']);const _0x1a580a=_0x488698['querySelector']('#new-test-tab'),_0xd3ea86=_0x4febef['map']((_0x1fbaa7,_0xaa9ee4)=>'\x0a\x20\x20\x20\x20<button\x20class=\x22test-tab\x22\x20data-test=\x22'+_0xaa9ee4+'\x22\x20onclick=\x22selectTest(\x27'+_0x1fbaa7+'\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22test-icon\x22>▶</span>\x0a\x20\x20\x20\x20\x20\x20<span>'+Utils['escapeHtml'](_0x1fbaa7)+'</span>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20')['join']('');_0x488698['innerHTML']=_0x1a580a['outerHTML']+_0xd3ea86,_0x488698['querySelector']('#new-test-tab')['addEventListener']('click',addTest);if(_0x4febef['length']>0x0&&state['currentTest']===null)selectTest(_0x4febef[0x0]);else _0x4febef['length']===0x0&&showTestEmptyState();}function showTestEmptyState(){document['getElementById']('current-test-name')['textContent']='Select\x20a\x20Test',document['getElementById']('delete-test-btn')['hidden']=!![],document['getElementById']('test-details-container')['innerHTML']='<p\x20class=\x22text-muted\x22>Select\x20a\x20test\x20from\x20the\x20sidebar\x20to\x20view\x20details,\x20or\x20add\x20a\x20new\x20one.</p>';}window['selectTest']=function(_0x25dd1c){state['currentTest']=_0x25dd1c;const _0x399014=state['selectedEnvData']['tests'][_0x25dd1c];document['querySelectorAll']('.test-tab')['forEach'](_0x4b49ef=>{const _0x514e71=_0x4b49ef['querySelector']('span:last-child')['textContent'];_0x4b49ef['classList']['toggle']('active',_0x514e71===_0x25dd1c);}),document['getElementById']('current-test-name')['textContent']=_0x25dd1c,document['getElementById']('delete-test-btn')['hidden']=![];const _0x4635b9=document['getElementById']('test-details-container');let _0x50047c='',_0x54b503=![];if(_0x399014['commands']&&Array['isArray'](_0x399014['commands']))_0x50047c=_0x399014['commands']['join']('\x0a'),_0x54b503=!![];else _0x399014['command']&&(Array['isArray'](_0x399014['command'])?_0x50047c=_0x399014['command']['join']('\x20&&\x20'):_0x50047c=_0x399014['command']);const _0x3ec00b=_0x399014['parameters']?Object['keys'](_0x399014['parameters'])['length']:0x0;_0x4635b9['innerHTML']='\x0a\x20\x20\x20\x20<div\x20class=\x22form-single-column\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Description</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20id=\x22test-description\x22\x20class=\x22form-input\x22\x20value=\x22'+Utils['escapeHtml'](_0x399014['description']||'')+'\x22\x20placeholder=\x22Test\x20description\x22>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22\x20style=\x22align-items:\x20start;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Command'+(_0x54b503?'s':'')+'</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<textarea\x20id=\x22test-command\x22\x20class=\x22form-input\x20code-font\x22\x20rows=\x22'+(_0x54b503?'8':'3')+'\x22\x20placeholder=\x22'+(_0x54b503?'One\x20command\x20per\x20line':'Test\x20command')+'\x22>'+Utils['escapeHtml'](_0x50047c)+'</textarea>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'+(_0x54b503?'<p\x20class=\x22text-muted\x22\x20style=\x22margin-top:\x20-8px;\x20font-size:\x2012px;\x22>One\x20command\x20per\x20line</p>':'')+'\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20Parameters\x20Section\x20(visual\x20maintenance\x20like\x20Deploy\x20tab)\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22deploy-section\x22\x20style=\x22margin-top:\x2024px;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22deploy-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22deploy-section-toggle\x22\x20type=\x22button\x22\x20aria-expanded=\x22false\x22\x20aria-controls=\x22test-parameters-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22deploy-section-title\x22>Parameters</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22deploy-section-count\x22\x20id=\x22test-parameters-count\x22>'+_0x3ec00b+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-secondary\x20btn-small\x22\x20onclick=\x22openAddTestParameterModal()\x22>+\x20Add</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22deploy-section-body\x22\x20id=\x22test-parameters-section\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20id=\x22test-parameters-list\x22\x20class=\x22profile-list\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<p\x20class=\x22text-muted\x20small\x22>User-provided\x20values\x20prompted\x20when\x20running\x20this\x20test\x20command.</p>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20',['test-description','test-command']['forEach'](_0x26f312=>{const _0x4f0ced=document['getElementById'](_0x26f312);_0x4f0ced&&_0x4f0ced['addEventListener']('input',markAsModified);}),initTestParameterSectionToggle(),renderTestParameters();};function initTestParameterSectionToggle(){const _0x51ed53=document['querySelector']('#test-details-container\x20.deploy-section-toggle');if(!_0x51ed53)return;_0x51ed53['addEventListener']('click',function(){const _0x2c39bf=this['getAttribute']('aria-expanded')==='true',_0x29400e=this['getAttribute']('aria-controls'),_0x92115b=document['getElementById'](_0x29400e);this['setAttribute']('aria-expanded',!_0x2c39bf),_0x92115b&&(_0x92115b['hidden']=_0x2c39bf);});}function addTest(){const _0x127683=document['getElementById']('new-test-name'),_0x37ee40=document['getElementById']('new-test-command'),_0xaff089=document['getElementById']('add-test-error');_0x127683['value']='',document['getElementById']('new-test-description')['value']='',_0x37ee40['value']='',_0x127683['classList']['remove']('input-error'),_0x37ee40['classList']['remove']('input-error'),_0xaff089['hidden']=!![],document['getElementById']('add-test-modal')['hidden']=![];}function closeAddTestModal(){document['getElementById']('add-test-modal')['hidden']=!![];}async function confirmAddTest(){const _0x9e0ab6=document['getElementById']('new-test-name'),_0x31f7e1=document['getElementById']('new-test-command'),_0x554f71=document['getElementById']('add-test-error'),_0x2a965=_0x9e0ab6['value']['trim'](),_0x1c02c8=document['getElementById']('new-test-description')['value']['trim'](),_0x19df20=_0x31f7e1['value']['trim']();_0x9e0ab6['classList']['remove']('input-error'),_0x31f7e1['classList']['remove']('input-error'),_0x554f71['hidden']=!![];if(!_0x2a965||!_0x19df20){if(!_0x2a965)_0x9e0ab6['classList']['add']('input-error');if(!_0x19df20)_0x31f7e1['classList']['add']('input-error');_0x554f71['textContent']='Test\x20name\x20and\x20command\x20are\x20required',_0x554f71['hidden']=![];return;}if(state['selectedEnvData']['tests'][_0x2a965]){_0x9e0ab6['classList']['add']('input-error'),_0x554f71['textContent']='A\x20test\x20with\x20this\x20name\x20already\x20exists',_0x554f71['hidden']=![];return;}const _0x4b90b0=_0x19df20['split']('\x0a')['filter'](_0x1f7c5b=>_0x1f7c5b['trim']());let _0x213ccf;_0x4b90b0['length']>0x1?_0x213ccf={'commands':_0x4b90b0}:_0x213ccf={'command':_0x4b90b0[0x0]};const _0x29b612={'description':_0x1c02c8,..._0x213ccf};state['selectedEnvData']['tests']={...state['selectedEnvData']['tests'],[_0x2a965]:_0x29b612},renderTests(),markAsModified(),closeAddTestModal(),Utils['showSuccess']('Test\x20command\x20added\x20(click\x20Save\x20to\x20persist\x20changes)');}window['editTest']=function(_0x3b1245){selectTest(_0x3b1245);},window['removeTest']=function(_0x114433){document['getElementById']('delete-test-name')['textContent']=_0x114433,document['getElementById']('delete-test-confirm-btn')['dataset']['testKey']=_0x114433,document['getElementById']('delete-test-modal')['hidden']=![];};function closeDeleteTestModal(){document['getElementById']('delete-test-modal')['hidden']=!![];}function confirmDeleteTest(){const _0x2ef409=document['getElementById']('delete-test-confirm-btn')['dataset']['testKey'],_0x32e4dd={...state['selectedEnvData']['tests']};delete _0x32e4dd[_0x2ef409],state['selectedEnvData']['tests']=_0x32e4dd,state['currentTest']===_0x2ef409&&(state['currentTest']=null),renderTests(),markAsModified(),closeDeleteTestModal(),Utils['showSuccess']('Test\x20command\x20removed\x20(click\x20Save\x20to\x20persist\x20changes)');}function renderTemplates(){const _0x17dc63=document['querySelector']('.templates-sidebar'),_0x3f0e00=state['selectedEnvData']['templates']||[];updateTabBadge('badge-templates',_0x3f0e00['length']);const _0x14eeab=_0x17dc63['querySelector']('#new-template-tab'),_0x18de27=_0x3f0e00['map']((_0x2ead18,_0x19fae1)=>'\x0a\x20\x20\x20\x20<button\x20class=\x22template-tab\x22\x20data-template=\x22'+_0x19fae1+'\x22\x20onclick=\x22selectTemplate('+_0x19fae1+')\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22template-icon\x22>📝</span>\x0a\x20\x20\x20\x20\x20\x20<span>'+Utils['escapeHtml'](_0x2ead18['title'])+'</span>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20')['join']('');_0x17dc63['innerHTML']=_0x14eeab['outerHTML']+_0x18de27,_0x17dc63['querySelector']('#new-template-tab')['addEventListener']('click',createNewTemplate);if(_0x3f0e00['length']>0x0&&state['currentTemplate']===null)selectTemplate(0x0);else _0x3f0e00['length']===0x0&&showTemplateEmptyState();}function showTemplateEmptyState(){document['getElementById']('current-template-name')['textContent']='Select\x20a\x20Template',document['getElementById']('delete-template-btn')['hidden']=!![],document['getElementById']('preview-template-btn')['hidden']=!![],document['getElementById']('template-editor-container')['innerHTML']='<p\x20class=\x22text-muted\x22>Select\x20a\x20template\x20from\x20the\x20sidebar\x20to\x20edit,\x20or\x20create\x20a\x20new\x20one.</p>';}window['selectTemplate']=async function(_0x79bc67){state['currentTemplate']=_0x79bc67;const _0x3df561=state['selectedEnvData']['templates'][_0x79bc67],_0xdb20f8=monacoEditors['get']('template-md-editor');_0xdb20f8&&(_0xdb20f8['dispose'](),monacoEditors['delete']('template-md-editor'));document['querySelectorAll']('.template-tab')['forEach'](_0x201414=>{_0x201414['classList']['toggle']('active',_0x201414['dataset']['template']===String(_0x79bc67));}),document['getElementById']('current-template-name')['textContent']=_0x3df561['title'],document['getElementById']('delete-template-btn')['hidden']=![],document['getElementById']('preview-template-btn')['hidden']=![],document['getElementById']('preview-template-btn')['innerHTML']='<span>✏️</span>\x20Edit';const _0x39d351=_0x3df561['parameters']?Object['keys'](_0x3df561['parameters'])['length']:0x0,_0x44cc1e=document['getElementById']('template-editor-container');_0x44cc1e['innerHTML']='\x0a\x20\x20\x20\x20<div\x20id=\x22template-preview-container\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-group\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Template\x20Content</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22markdown-preview-container\x22\x20id=\x22template-md-preview\x22></div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-group\x22\x20style=\x22margin-top:\x2024px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Template\x20Metadata</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-single-column\x22\x20style=\x22margin-top:\x208px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Title</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20class=\x22form-input\x22\x20value=\x22'+Utils['escapeHtml'](_0x3df561['title']||'')+'\x22\x20disabled>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x3df561['description']?'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Description</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20class=\x22form-input\x22\x20value=\x22'+Utils['escapeHtml'](_0x3df561['description'])+'\x22\x20disabled>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Parameters\x20Section\x20(visual\x20maintenance\x20-\x20preview\x20mode\x20shows\x20summary)\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22deploy-section\x22\x20style=\x22margin-top:\x2024px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22deploy-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22deploy-section-toggle\x22\x20type=\x22button\x22\x20aria-expanded=\x22false\x22\x20aria-controls=\x22template-parameters-section-preview\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22deploy-section-title\x22>Parameters</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22deploy-section-count\x22>'+_0x39d351+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22deploy-section-body\x22\x20id=\x22template-parameters-section-preview\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20id=\x22template-parameters-preview-list\x22\x20class=\x22profile-list\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20class=\x22text-muted\x20small\x22>Switch\x20to\x20Edit\x20mode\x20to\x20add\x20or\x20modify\x20parameters.</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20id=\x22template-editor-container-edit\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-group\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Template\x20Content\x20(Markdown)</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20id=\x22template-md-editor\x22\x20style=\x22height:\x20400px;\x20border:\x201px\x20solid\x20var(--color-border);\x20margin-top:\x208px;\x22></div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-group\x22\x20style=\x22margin-top:\x2024px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<label>Template\x20Metadata</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-single-column\x22\x20style=\x22margin-top:\x208px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20for=\x22template-edit-title\x22>Title</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20id=\x22template-edit-title\x22\x20class=\x22form-input\x22\x20value=\x22'+Utils['escapeHtml'](_0x3df561['title']||'')+'\x22\x20placeholder=\x22Template\x20title\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20for=\x22template-edit-description\x22>Description</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20id=\x22template-edit-description\x22\x20class=\x22form-input\x22\x20value=\x22'+Utils['escapeHtml'](_0x3df561['description']||'')+'\x22\x20placeholder=\x22Short\x20description\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Parameters\x20Section\x20(visual\x20maintenance\x20-\x20edit\x20mode)\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22deploy-section\x22\x20style=\x22margin-top:\x2024px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22deploy-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22deploy-section-toggle\x20template-param-toggle\x22\x20type=\x22button\x22\x20aria-expanded=\x22false\x22\x20aria-controls=\x22template-parameters-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22deploy-section-title\x22>Parameters</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22deploy-section-count\x22\x20id=\x22template-parameters-count\x22>'+_0x39d351+'</span>\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=\x22openAddTemplateParameterModal()\x22>+\x20Add</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22deploy-section-body\x22\x20id=\x22template-parameters-section\x22\x20hidden>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20id=\x22template-parameters-list\x22\x20class=\x22profile-list\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20class=\x22text-muted\x20small\x22>Define\x20parameters\x20that\x20will\x20be\x20prompted\x20when\x20using\x20this\x20template.</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20';const _0x5668da=document['getElementById']('template-md-preview');_0x5668da['innerHTML']=marked['parse'](_0x3df561['content']||''),state['currentTemplateData']={..._0x3df561,'parameters':_0x3df561['parameters']?JSON['parse'](JSON['stringify'](_0x3df561['parameters'])):{}},initTemplateSectionToggles(),renderTemplateParametersPreview();};function initTemplateSectionToggles(){document['querySelectorAll']('#template-editor-container\x20.deploy-section-toggle')['forEach'](_0x4ab643=>{_0x4ab643['addEventListener']('click',function(){const _0x5d7462=this['getAttribute']('aria-expanded')==='true',_0x228433=this['getAttribute']('aria-controls'),_0x535a44=document['getElementById'](_0x228433);this['setAttribute']('aria-expanded',!_0x5d7462),_0x535a44&&(_0x535a44['hidden']=_0x5d7462);});});}function renderTemplateParametersPreview(){const _0x19eabd=document['getElementById']('template-parameters-preview-list');if(!_0x19eabd)return;const _0x1363ce=state['currentTemplateData']?.['parameters']||{},_0x40b4cf=Array['isArray'](_0x1363ce)?Object['fromEntries'](_0x1363ce['map'](_0x27d0bf=>[_0x27d0bf['name'],_0x27d0bf])):_0x1363ce,_0x5bffb2=Object['entries'](_0x40b4cf);if(_0x5bffb2['length']===0x0){_0x19eabd['innerHTML']='<div\x20class=\x22profile-list-empty\x22>No\x20parameters\x20defined</div>';return;}_0x19eabd['innerHTML']=_0x5bffb2['map'](([_0x22a764,_0x2eb17a])=>{const _0x58f255=getParameterTypeLabel(_0x2eb17a),_0x3e5607=_0x2eb17a['prompt']?.['label']||_0x2eb17a['label']||'';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-param-item\x22\x20data-name=\x22'+Utils['escapeHtml'](_0x22a764)+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-key\x22>'+Utils['escapeHtml'](_0x22a764)+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22param-type-badge\x22>'+_0x58f255+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-value\x22>'+(_0x3e5607?Utils['escapeHtml'](_0x3e5607):'')+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x2eb17a['required']?'<span\x20class=\x22param-required\x22>Required</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';})['join']('');}async function toggleTemplatePreview(){const _0x17bd53=document['getElementById']('template-preview-container'),_0x5dbea4=document['getElementById']('template-editor-container-edit'),_0x59c024=document['getElementById']('preview-template-btn');if(!_0x17bd53||!_0x5dbea4)return;if(_0x17bd53['hidden']){const _0x5a9bd8=getMonacoValue('template-md-editor');if(_0x5a9bd8!==null){const _0x1c18f6=document['getElementById']('template-md-preview');_0x1c18f6&&(_0x1c18f6['innerHTML']=marked['parse'](_0x5a9bd8));}const _0x12dfc1=document['getElementById']('template-edit-title'),_0x4797d6=document['getElementById']('template-edit-description');_0x12dfc1&&state['currentTemplateData']&&(state['currentTemplateData']['title']=_0x12dfc1['value']),_0x4797d6&&state['currentTemplateData']&&(state['currentTemplateData']['description']=_0x4797d6['value']),renderTemplateParametersPreview(),_0x17bd53['hidden']=![],_0x5dbea4['hidden']=!![],_0x59c024['innerHTML']='<span>✏️</span>\x20Edit';}else{_0x17bd53['hidden']=!![],_0x5dbea4['hidden']=![],_0x59c024['innerHTML']='<span>👁</span>\x20Preview';const _0x77837f=state['currentTemplateData'],_0x48d0c7='template-md-editor',_0x1aee24=window['MarkdownFileEditor']&&window['MarkdownFileEditor']['editors']['has'](_0x48d0c7),_0x126c02=monacoEditors['has'](_0x48d0c7);if(_0x77837f&&!_0x1aee24&&!_0x126c02){if(window['MarkdownFileEditor']){const _0x54f562=window['MarkdownFileEditor']['getOrCreate'](_0x48d0c7,_0x77837f['content']||'',![],'400px',()=>markAsModified());}else{const _0x6915b5=await createMonacoEditor(_0x48d0c7,_0x77837f['content']||'','markdown',![]);_0x6915b5&&_0x6915b5['onDidChangeModelContent'](()=>{markAsModified();});}}const _0x4f3a7d=document['getElementById']('template-edit-title'),_0xfb2e48=document['getElementById']('template-edit-description');_0x4f3a7d&&_0x4f3a7d['addEventListener']('input',markAsModified),_0xfb2e48&&_0xfb2e48['addEventListener']('input',markAsModified),renderTemplateParameters();}}function createNewTemplate(){const _0x1d017a=document['getElementById']('new-template-title'),_0x40d0ff=document['getElementById']('new-template-description'),_0x4ab733=document['getElementById']('new-template-filename'),_0xdf00d6=document['getElementById']('add-template-error');_0x1d017a['value']='',_0x40d0ff['value']='',_0x4ab733['value']='',_0x1d017a['classList']['remove']('input-error'),_0x4ab733['classList']['remove']('input-error'),_0xdf00d6['hidden']=!![],_0x1d017a['addEventListener']('input',()=>{const _0x4a1d59=_0x1d017a['value']['trim']();if(_0x4a1d59&&!_0x4ab733['value']){const _0xa70822=_0x4a1d59['toLowerCase']()['replace'](/[^a-z0-9]+/g,'-')['replace'](/^-+|-+$/g,'')+'.md';_0x4ab733['placeholder']=_0xa70822;}}),document['getElementById']('add-template-modal')['hidden']=![];}function closeAddTemplateModal(){document['getElementById']('add-template-modal')['hidden']=!![];}function confirmAddTemplate(){const _0x50262d=document['getElementById']('new-template-title'),_0x18049b=document['getElementById']('new-template-filename'),_0x2e6aa5=document['getElementById']('add-template-error'),_0x33456f=_0x50262d['value']['trim'](),_0x45458d=document['getElementById']('new-template-description')['value']['trim']();let _0x31d697=_0x18049b['value']['trim']();_0x50262d['classList']['remove']('input-error'),_0x18049b['classList']['remove']('input-error'),_0x2e6aa5['hidden']=!![];if(!_0x33456f){_0x50262d['classList']['add']('input-error'),_0x2e6aa5['textContent']='Template\x20title\x20is\x20required',_0x2e6aa5['hidden']=![];return;}!_0x31d697&&(_0x31d697=_0x33456f['toLowerCase']()['replace'](/[^a-z0-9]+/g,'-')['replace'](/^-+|-+$/g,'')+'.md');!_0x31d697['endsWith']('.md')&&(_0x31d697+='.md');if(state['selectedEnvData']['templates']['some'](_0x4d565c=>_0x4d565c['filename']===_0x31d697)){_0x18049b['classList']['add']('input-error'),_0x2e6aa5['textContent']='A\x20template\x20with\x20this\x20filename\x20already\x20exists',_0x2e6aa5['hidden']=![];return;}const _0x11691a={'title':_0x33456f,'description':_0x45458d||undefined,'filename':_0x31d697,'content':'','parameters':[]};state['selectedEnvData']['templates']=[...state['selectedEnvData']['templates']||[],_0x11691a],renderTemplates(),markAsModified(),closeAddTemplateModal(),Utils['showSuccess']('Template\x20added\x20(click\x20Save\x20to\x20persist\x20changes)');}window['editTemplate']=function(_0x2322d4){selectTemplate(_0x2322d4);},window['removeTemplate']=function(_0x4aa313){const _0x24dae4=state['selectedEnvData']['templates'][_0x4aa313];document['getElementById']('delete-template-name')['textContent']=_0x24dae4['title'],document['getElementById']('delete-template-confirm-btn')['dataset']['templateIndex']=_0x4aa313,document['getElementById']('delete-template-modal')['hidden']=![];};function closeDeleteTemplateModal(){document['getElementById']('delete-template-modal')['hidden']=!![];}function confirmDeleteTemplate(){const _0x2f5b46=parseInt(document['getElementById']('delete-template-confirm-btn')['dataset']['templateIndex']);state['selectedEnvData']['templates']=state['selectedEnvData']['templates']['filter']((_0x457a4b,_0x1c1613)=>_0x1c1613!==_0x2f5b46);if(state['currentTemplate']===_0x2f5b46)state['currentTemplate']=null;else state['currentTemplate']>_0x2f5b46&&state['currentTemplate']--;renderTemplates(),markAsModified(),closeDeleteTemplateModal(),Utils['showSuccess']('Template\x20removed\x20(click\x20Save\x20to\x20persist\x20changes)');}function renderDeployProfiles(){const _0x5f44df=document['querySelector']('.deploy-sidebar'),_0x3c766c=state['selectedEnvData']['deployment_profiles']||[];updateTabBadge('badge-deploy',_0x3c766c['length']);const _0x38d292=_0x5f44df['querySelector']('#new-deploy-profile-tab'),_0xc860f2=_0x3c766c['map'](_0x4bb593=>'\x0a\x20\x20\x20\x20<button\x20class=\x22deploy-profile-tab\x20'+(!_0x4bb593['hasScript']?'missing-script':'')+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data-profile=\x22'+Utils['escapeHtml'](_0x4bb593['name'])+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20onclick=\x22selectDeployProfile(\x27'+Utils['escapeHtml'](_0x4bb593['name'])+'\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20<svg\x20class=\x22deploy-profile-icon\x22\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<polygon\x20points=\x2212\x202\x202\x207\x2012\x2012\x2022\x207\x2012\x202\x22></polygon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<polyline\x20points=\x222\x2017\x2012\x2022\x2022\x2017\x22></polyline>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<polyline\x20points=\x222\x2012\x2012\x2017\x2022\x2012\x22></polyline>\x0a\x20\x20\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20\x20\x20<span>'+Utils['escapeHtml'](_0x4bb593['name'])+'</span>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20')['join']('');_0x5f44df['innerHTML']=_0x38d292['outerHTML']+_0xc860f2,_0x5f44df['querySelector']('#new-deploy-profile-tab')['addEventListener']('click',openAddDeployProfileModal);if(_0x3c766c['length']>0x0&&state['currentDeployProfile']===null)selectDeployProfile(_0x3c766c[0x0]['name']);else{if(_0x3c766c['length']===0x0)showDeployProfileEmptyState();else{if(state['currentDeployProfile']){const _0xb752ae=_0x3c766c['find'](_0x18aa5f=>_0x18aa5f['name']===state['currentDeployProfile']);_0xb752ae?selectDeployProfile(state['currentDeployProfile']):(state['currentDeployProfile']=null,showDeployProfileEmptyState());}}}}function showDeployProfileEmptyState(){document['getElementById']('current-deploy-profile-name')['textContent']='Select\x20a\x20Profile',document['getElementById']('run-deploy-profile-btn')['hidden']=!![],document['getElementById']('delete-deploy-profile-btn')['hidden']=!![],document['getElementById']('deploy-profile-details-container')['hidden']=![],document['getElementById']('deploy-profile-editor')['hidden']=!![],document['getElementById']('deployment-progress-panel')['hidden']=!![],updateDeploySectionCount('deploy-secrets-count',0x0),updateDeploySectionCount('deploy-parameters-count',0x0),state['profileScriptEditor']&&(state['profileScriptEditor']['dispose'](),state['profileScriptEditor']=null),state['currentDeployProfile']=null,state['currentDeployProfileData']=null,state['profileHasUnsavedChanges']=![];}window['selectDeployProfile']=async function(_0x3501bb){if(state['profileHasUnsavedChanges']&&state['currentDeployProfile']!==_0x3501bb){const _0x5cf367=confirm('You\x20have\x20unsaved\x20changes\x20to\x20this\x20profile.\x20Switch\x20anyway?\x0a\x0aUse\x20the\x20global\x20Save\x20button\x20to\x20save\x20all\x20changes.');if(!_0x5cf367)return;state['profileHasUnsavedChanges']=![];}state['currentDeployProfile']=_0x3501bb,document['querySelectorAll']('.deploy-profile-tab')['forEach'](_0x1584a0=>{_0x1584a0['classList']['toggle']('active',_0x1584a0['dataset']['profile']===_0x3501bb);});const _0x2c9d20=state['selectedEnvData']['deployment_profiles']||[],_0x13a0bf=_0x2c9d20['find'](_0x2c2fd3=>_0x2c2fd3['name']===_0x3501bb);if(!_0x13a0bf){showDeployProfileEmptyState();return;}try{const _0x430ea1=await API['get']('/environments/'+state['selectedEnv']+'/deployment-profiles/'+_0x3501bb);state['currentDeployProfileData']=_0x430ea1,document['getElementById']('current-deploy-profile-name')['textContent']=_0x3501bb;const _0x20dfaf=document['getElementById']('run-deploy-profile-btn');_0x20dfaf['hidden']=![],_0x20dfaf['disabled']=!_0x430ea1['hasScript'],document['getElementById']('delete-deploy-profile-btn')['hidden']=![],document['getElementById']('deploy-profile-details-container')['hidden']=!![],document['getElementById']('deploy-profile-editor')['hidden']=![],document['getElementById']('profile-description')['value']=_0x430ea1['description']||'',document['getElementById']('profile-script-filename')['textContent']=_0x3501bb+'.sh',await initProfileScriptEditor(_0x430ea1['scriptContent']||''),renderProfileSecrets(),renderProfileParameters();}catch(_0x458f0d){console['error']('Failed\x20to\x20load\x20profile:',_0x458f0d),Utils['showError']('Failed\x20to\x20load\x20profile\x20details'),showDeployProfileEmptyState();}};async function initProfileScriptEditor(_0x40c6c4){state['profileScriptEditor']&&(state['profileScriptEditor']['dispose'](),state['profileScriptEditor']=null),state['profileScriptEditor']=await createMonacoEditor('profile-script-editor',_0x40c6c4,'shell',![]),state['profileScriptEditor']&&state['profileScriptEditor']['onDidChangeModelContent'](()=>{markProfileAsModified();});}function markProfileAsModified(){state['profileHasUnsavedChanges']=!![],markAsModified();}function renderProfileSecrets(){const _0x4fabad=document['getElementById']('profile-secrets-list'),_0x1b4f0d=state['currentDeployProfileData']?.['secrets']||[];updateDeploySectionCount('deploy-secrets-count',_0x1b4f0d['length']);if(_0x1b4f0d['length']===0x0){_0x4fabad['innerHTML']='<div\x20class=\x22profile-list-empty\x22>No\x20secrets\x20configured</div>';return;}const _0x49af62=state['secrets']['map'](_0x3d67ba=>_0x3d67ba['name']);_0x4fabad['innerHTML']=_0x1b4f0d['map']((_0x5dbfae,_0x4240cd)=>{const _0x4d865c=_0x49af62['includes'](_0x5dbfae['name']),_0x13e63a=_0x5dbfae['expose_as']==='file'?'File':'Env\x20Var';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-secret-item\x20'+(!_0x4d865c?'warning':'')+'\x22\x20data-index=\x22'+_0x4240cd+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-key\x22>'+Utils['escapeHtml'](_0x5dbfae['name'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-expose-type\x20'+_0x5dbfae['expose_as']+'\x22>'+_0x13e63a+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-value\x22\x20title=\x22'+Utils['escapeHtml'](_0x5dbfae['target'])+'\x22>'+Utils['escapeHtml'](_0x5dbfae['target'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(!_0x4d865c?'<span\x20class=\x22profile-item-meta\x22\x20style=\x22color:\x20var(--color-warning);\x22>⚠\x20Not\x20found</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-item-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22profile-item-delete\x22\x20onclick=\x22deleteProfileSecret('+_0x4240cd+')\x22\x20title=\x22Delete\x22>🗑</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';})['join']('');}function renderProfileParameters(){const _0x15f33d=document['getElementById']('profile-parameters-list'),_0x222383=state['currentDeployProfileData']?.['parameters']||{},_0x34b3f5=Object['entries'](_0x222383);updateDeploySectionCount('deploy-parameters-count',_0x34b3f5['length']);if(_0x34b3f5['length']===0x0){_0x15f33d['innerHTML']='<div\x20class=\x22profile-list-empty\x22>No\x20parameters\x20defined</div>';return;}_0x15f33d['innerHTML']=_0x34b3f5['map'](([_0x254ecf,_0x341d4b])=>{const _0x50c882=getParameterTypeLabel(_0x341d4b),_0x142cb6=_0x341d4b['label']||'';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-param-item\x22\x20data-name=\x22'+Utils['escapeHtml'](_0x254ecf)+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-key\x22>'+Utils['escapeHtml'](_0x254ecf)+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22param-type-badge\x22>'+_0x50c882+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-value\x22>'+(_0x142cb6?Utils['escapeHtml'](_0x142cb6):'')+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x341d4b['required']?'<span\x20class=\x22param-required\x22>Required</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-item-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22profile-item-edit\x22\x20onclick=\x22editProfileParameter(\x27'+Utils['escapeHtml'](_0x254ecf)+'\x27)\x22\x20title=\x22Edit\x22>✏️</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22profile-item-delete\x22\x20onclick=\x22deleteProfileParameter(\x27'+Utils['escapeHtml'](_0x254ecf)+'\x27)\x22\x20title=\x22Delete\x22>🗑</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';})['join']('');}function openRunDeploymentModal(){if(!state['currentDeployProfileData']||!state['currentDeployProfile'])return;const _0x55e31f=document['getElementById']('run-deployment-modal'),_0x3ba7ce=document['getElementById']('run-deployment-error'),_0x25b857=state['currentDeployProfile'];document['getElementById']('run-deployment-profile-name')['textContent']=_0x25b857,document['getElementById']('run-deployment-dry-run')['checked']=![],document['getElementById']('run-deployment-start-btn')['disabled']=![],_0x3ba7ce['hidden']=!![],_0x3ba7ce['textContent']='',renderDeploymentParameterInputs(state['currentDeployProfileData']['parameters']||{}),_0x55e31f['hidden']=![];}function closeRunDeploymentModal(){document['getElementById']('run-deployment-modal')['hidden']=!![];}function renderDeploymentParameterInputs(_0x1c95b7){const _0x275448=document['getElementById']('run-deployment-parameters');_0x275448['innerHTML']='';const _0x314e4f=Object['entries'](_0x1c95b7);if(_0x314e4f['length']===0x0){_0x275448['innerHTML']='<p\x20class=\x22text-muted\x20small\x22>No\x20parameters\x20required\x20for\x20this\x20deployment.</p>';return;}for(const [_0x57c9f3,_0x4ffd8e]of _0x314e4f){const _0x383831=document['createElement']('div');_0x383831['className']='deployment-param-row',_0x383831['dataset']['param']=_0x57c9f3,_0x383831['dataset']['type']=_0x4ffd8e['type']||'text';const _0x1885bf=document['createElement']('label');_0x1885bf['className']='deployment-param-label',_0x1885bf['setAttribute']('for','deployment-param-'+_0x57c9f3),_0x1885bf['textContent']=_0x4ffd8e['label']||_0x57c9f3;if(_0x4ffd8e['required']){const _0x5d1ff5=document['createElement']('span');_0x5d1ff5['className']='param-required',_0x5d1ff5['textContent']='Required',_0x1885bf['appendChild'](_0x5d1ff5);}_0x383831['appendChild'](_0x1885bf);let _0x45afe6;if(_0x4ffd8e['type']==='select')_0x45afe6=document['createElement']('select'),_0x45afe6['className']='form-input',_0x45afe6['innerHTML']=(_0x4ffd8e['options']||[])['map'](_0x818c34=>{const _0x76b513=Utils['escapeHtml'](_0x818c34);return'<option\x20value=\x22'+_0x76b513+'\x22>'+_0x76b513+'</option>';})['join'](''),_0x4ffd8e['default']&&(_0x45afe6['value']=_0x4ffd8e['default']);else{if(_0x4ffd8e['type']==='boolean')_0x45afe6=document['createElement']('input'),_0x45afe6['type']='checkbox',_0x45afe6['checked']=_0x4ffd8e['default']===!![]||_0x4ffd8e['default']==='true';else _0x4ffd8e['type']==='command'?(_0x45afe6=document['createElement']('select'),_0x45afe6['className']='form-input',_0x45afe6['disabled']=!![],_0x45afe6['innerHTML']='<option\x20value=\x22\x22>Loading\x20options...</option>'):(_0x45afe6=document['createElement']('input'),_0x45afe6['type']='text',_0x45afe6['className']='form-input',_0x45afe6['placeholder']=_0x4ffd8e['default']||'',_0x4ffd8e['default']&&(_0x45afe6['value']=_0x4ffd8e['default']));}_0x45afe6['id']='deployment-param-'+_0x57c9f3,_0x383831['appendChild'](_0x45afe6);if(_0x4ffd8e['description']){const _0x2c86dc=document['createElement']('div');_0x2c86dc['className']='deployment-param-description',_0x2c86dc['textContent']=_0x4ffd8e['description'],_0x383831['appendChild'](_0x2c86dc);}_0x275448['appendChild'](_0x383831),_0x4ffd8e['type']==='command'&&loadDeploymentCommandOptions(_0x57c9f3,_0x4ffd8e,_0x45afe6);}}async function loadDeploymentCommandOptions(_0x2ca0dd,_0x50f34b,_0x2c2a65){const _0x3f3c1e=state['selectedEnv']+':'+state['currentDeployProfile']+':'+_0x2ca0dd;if(state['deploymentParamCache'][_0x3f3c1e]){populateDeploymentCommandOptions(_0x2c2a65,state['deploymentParamCache'][_0x3f3c1e],_0x50f34b['default']);return;}try{const _0x2505e4=await API['promptParameter']({'environment':state['selectedEnv'],'command':_0x50f34b['command'],'parser':'lines'}),_0x576c1a=_0x2505e4['choices']||[];state['deploymentParamCache'][_0x3f3c1e]=_0x576c1a,populateDeploymentCommandOptions(_0x2c2a65,_0x576c1a,_0x50f34b['default']);}catch(_0x431629){_0x2c2a65['disabled']=!![],_0x2c2a65['innerHTML']='<option\x20value=\x22\x22>Failed\x20to\x20load\x20options</option>',console['error']('Failed\x20to\x20load\x20deployment\x20parameter\x20options:',_0x431629);}}function populateDeploymentCommandOptions(_0x3198f2,_0x65e2a8,_0xde53a7){_0x3198f2['disabled']=![];if(_0x65e2a8['length']===0x0){_0x3198f2['innerHTML']='<option\x20value=\x22\x22>No\x20options\x20available</option>';return;}_0x3198f2['innerHTML']=_0x65e2a8['map'](_0x4e8512=>{const _0x4b8a1e=Utils['escapeHtml'](_0x4e8512['value']),_0x33e2a0=Utils['escapeHtml'](_0x4e8512['label']||_0x4e8512['value']);return'<option\x20value=\x22'+_0x4b8a1e+'\x22>'+_0x33e2a0+'</option>';})['join'](''),_0xde53a7&&_0x65e2a8['some'](_0x21d6ef=>_0x21d6ef['value']===_0xde53a7)&&(_0x3198f2['value']=_0xde53a7);}function collectDeploymentParameters(){const _0x4a91b0={};return document['querySelectorAll']('#run-deployment-parameters\x20[data-param]')['forEach'](_0x34efd4=>{const _0x5513b8=_0x34efd4['dataset']['param'],_0x388697=_0x34efd4['dataset']['type'],_0x8684a4=_0x34efd4['querySelector']('input,\x20select');if(!_0x8684a4)return;if(_0x388697==='boolean')_0x4a91b0[_0x5513b8]=_0x8684a4['checked'];else{const _0x383934=_0x8684a4['value']['trim']();_0x383934!==''&&(_0x4a91b0[_0x5513b8]=_0x383934);}}),_0x4a91b0;}function validateDeploymentInputs(_0x2b41fa,_0x12f537){const _0xe01a4d=[];return Object['entries'](_0x12f537||{})['forEach'](([_0x1640c1,_0x3f78f4])=>{if(!_0x3f78f4['required'])return;if(_0x3f78f4['type']==='boolean')return;!_0x2b41fa[_0x1640c1]&&_0xe01a4d['push'](_0x1640c1);}),_0xe01a4d;}async function startDeployment(){if(!state['currentDeployProfile'])return;const _0x3ea866=document['getElementById']('run-deployment-error');_0x3ea866['hidden']=!![],_0x3ea866['textContent']='';const _0x4e3362=collectDeploymentParameters(),_0x120844=validateDeploymentInputs(_0x4e3362,state['currentDeployProfileData']?.['parameters']||{});if(_0x120844['length']>0x0){_0x3ea866['textContent']='Missing\x20required\x20parameters:\x20'+_0x120844['join'](',\x20'),_0x3ea866['hidden']=![];return;}const _0x293e08=document['getElementById']('run-deployment-dry-run')['checked'],_0x5796a8=document['getElementById']('run-deployment-start-btn');_0x5796a8['disabled']=!![];try{const _0x51a1ad=await API['post']('/environments/'+state['selectedEnv']+'/deployment-profiles/'+state['currentDeployProfile']+'/execute',{'parameters':_0x4e3362,'dryRun':_0x293e08});closeRunDeploymentModal(),_0x51a1ad['status']==='running'?(startDeploymentPolling(_0x51a1ad['deploymentId']),Utils['showSuccess']('Deployment\x20started')):(Utils['showSuccess']('Deployment\x20dry\x20run\x20completed'),await loadDeploymentHistory());}catch(_0x4f4f5c){_0x3ea866['textContent']=_0x4f4f5c['message']||'Failed\x20to\x20start\x20deployment',_0x3ea866['hidden']=![];}finally{_0x5796a8['disabled']=![];}}function startDeploymentPolling(_0x15c70c){state['currentDeploymentId']=_0x15c70c,state['deploymentStartTime']=Date['now'](),state['deploymentOutput']='';const _0x4b6ddf=document['getElementById']('deployment-progress-panel');_0x4b6ddf['hidden']=![];const _0x402d7f=document['getElementById']('deployment-progress-profile');_0x402d7f&&(_0x402d7f['textContent']=state['currentDeployProfile']||''),document['getElementById']('deployment-output')['textContent']='',state['deploymentPollInterval']&&clearInterval(state['deploymentPollInterval']),pollDeploymentStatus(),state['deploymentPollInterval']=setInterval(pollDeploymentStatus,0x7d0);}function stopDeploymentPolling(){state['deploymentPollInterval']&&(clearInterval(state['deploymentPollInterval']),state['deploymentPollInterval']=null);}async function pollDeploymentStatus(){if(!state['currentDeploymentId'])return;try{const _0x29fa8f=await API['get']('/environments/'+state['selectedEnv']+'/deployments/'+state['currentDeploymentId']);updateDeploymentProgress(_0x29fa8f),_0x29fa8f['status']&&_0x29fa8f['status']!=='running'&&(stopDeploymentPolling(),state['currentDeploymentId']=null,await loadDeploymentHistory());}catch(_0xbd0f16){console['error']('Failed\x20to\x20poll\x20deployment\x20status:',_0xbd0f16);}}function updateDeploymentProgress(_0x53ebc2){const _0x7f8778=document['getElementById']('deployment-progress-profile'),_0x425f4e=document['getElementById']('deployment-progress-badge'),_0x5b122c=document['getElementById']('deployment-progress-duration'),_0x1e035b=document['getElementById']('deployment-output');_0x7f8778&&_0x53ebc2['profile']&&(_0x7f8778['textContent']=_0x53ebc2['profile']);_0x425f4e&&(_0x425f4e['textContent']=_0x53ebc2['status']||'running',_0x425f4e['className']='deployment-status-badge\x20'+(_0x53ebc2['status']||'running'));if(_0x5b122c){const _0x4d6016=_0x53ebc2['startedAt']?Date['parse'](_0x53ebc2['startedAt']):state['deploymentStartTime'],_0x261f6a=_0x53ebc2['completedAt']?Date['parse'](_0x53ebc2['completedAt']):Date['now']();_0x5b122c['textContent']=formatDuration(_0x261f6a-_0x4d6016);}_0x1e035b&&(_0x1e035b['textContent']=_0x53ebc2['output']||'',_0x1e035b['scrollTop']=_0x1e035b['scrollHeight']);}async function cancelDeploymentExecution(){if(!state['currentDeploymentId'])return;try{await API['post']('/environments/'+state['selectedEnv']+'/deployments/'+state['currentDeploymentId']+'/cancel',{}),Utils['showSuccess']('Deployment\x20cancelled');}catch(_0x4d14f2){Utils['showError'](_0x4d14f2['message']||'Failed\x20to\x20cancel\x20deployment');}}async function loadDeploymentHistory(){if(!state['selectedEnv'])return;try{const _0x5192e5=await API['get']('/environments/'+state['selectedEnv']+'/deployment-history?limit=20');state['deploymentHistory']=_0x5192e5['deployments']||[],renderDeploymentHistory();}catch(_0x31d64e){console['error']('Failed\x20to\x20load\x20deployment\x20history:',_0x31d64e),state['deploymentHistory']=[],renderDeploymentHistory();}}function renderDeploymentHistory(){const _0x26c07f=document['getElementById']('deployment-history-list');if(!_0x26c07f)return;updateDeploySectionCount('deploy-history-count',state['deploymentHistory']['length']);if(state['deploymentHistory']['length']===0x0){_0x26c07f['innerHTML']='<div\x20class=\x22profile-list-empty\x22>No\x20deployments\x20yet</div>';return;}_0x26c07f['innerHTML']='',state['deploymentHistory']['forEach'](_0x4b0dae=>{const _0x2d2681=document['createElement']('div');_0x2d2681['className']='deployment-history-item';const _0x287d68=document['createElement']('div');_0x287d68['className']='deployment-history-header';const _0x4707f7=document['createElement']('div');_0x4707f7['className']='deployment-history-title',_0x4707f7['textContent']=_0x4b0dae['profile']+'\x20('+_0x4b0dae['status']+')';const _0x1c04be=document['createElement']('span');_0x1c04be['className']='deployment-status-badge\x20'+_0x4b0dae['status'],_0x1c04be['textContent']=_0x4b0dae['status'],_0x287d68['appendChild'](_0x4707f7),_0x287d68['appendChild'](_0x1c04be);const _0x54522c=document['createElement']('div');_0x54522c['className']='deployment-history-meta';const _0x270b39=_0x4b0dae['startedAt']?formatTimestamp(_0x4b0dae['startedAt']):'Unknown\x20time',_0x4cea2d=_0x4b0dae['completedAt']?formatDuration(Date['parse'](_0x4b0dae['completedAt'])-Date['parse'](_0x4b0dae['startedAt'])):'Running';_0x54522c['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20<span>'+_0x270b39+'</span>\x0a\x20\x20\x20\x20\x20\x20<span>Duration:\x20'+_0x4cea2d+'</span>\x0a\x20\x20\x20\x20\x20\x20<span>Triggered\x20by:\x20'+Utils['escapeHtml'](_0x4b0dae['triggeredBy']||'unknown')+'</span>\x0a\x20\x20\x20\x20';const _0x5cd411=document['createElement']('button');_0x5cd411['className']='btn-ghost\x20btn-small',_0x5cd411['textContent']='View\x20Output',_0x287d68['appendChild'](_0x5cd411);const _0x5509ac=document['createElement']('div');_0x5509ac['className']='deployment-history-output',_0x5509ac['hidden']=!![],_0x5509ac['textContent']=_0x4b0dae['output']||'No\x20output\x20captured.',_0x5cd411['addEventListener']('click',()=>{_0x5509ac['hidden']=!_0x5509ac['hidden'],_0x5cd411['textContent']=_0x5509ac['hidden']?'View\x20Output':'Hide\x20Output';}),_0x2d2681['appendChild'](_0x287d68),_0x2d2681['appendChild'](_0x54522c),_0x2d2681['appendChild'](_0x5509ac),_0x26c07f['appendChild'](_0x2d2681);});}function formatTimestamp(_0x362263){try{const _0x4d2e88=new Date(_0x362263);return _0x4d2e88['toLocaleString']();}catch{return _0x362263;}}function initDeploySectionToggles(){document['querySelectorAll']('.deploy-section-toggle')['forEach'](_0x48a6aa=>{_0x48a6aa['addEventListener']('click',()=>{const _0x54325a=_0x48a6aa['getAttribute']('aria-controls');if(!_0x54325a)return;const _0x44906e=document['getElementById'](_0x54325a);if(!_0x44906e)return;const _0x25f46f=_0x48a6aa['getAttribute']('aria-expanded')==='true';_0x48a6aa['setAttribute']('aria-expanded',String(!_0x25f46f)),_0x44906e['hidden']=_0x25f46f;});});}function updateDeploySectionCount(_0x4bbbf9,_0x519551){const _0x30f15d=document['getElementById'](_0x4bbbf9);if(!_0x30f15d)return;_0x30f15d['textContent']=String(_0x519551),_0x30f15d['title']=_0x519551+'\x20item'+(_0x519551===0x1?'':'s');}function openAddProfileSecretModal(){const _0x39319a=document['getElementById']('profile-secret-modal'),_0x21ae4d=document['getElementById']('profile-secret-name'),_0x546b7e=document['getElementById']('profile-secret-error');_0x546b7e['hidden']=!![],populateProfileSecretSelect(),updateProfileSecretInfo(),_0x39319a['hidden']=![],_0x21ae4d['focus']();}function populateProfileSecretSelect(){const _0x4a3e63=document['getElementById']('profile-secret-name'),_0x56b3de=state['secrets']||[],_0x26c717=_0x56b3de['filter'](_0x2896a8=>{const _0x5e41dc=_0x2896a8['available_for']||[];return _0x5e41dc['includes']('deploy');});if(_0x26c717['length']===0x0){_0x4a3e63['innerHTML']='<option\x20value=\x22\x22>No\x20secrets\x20available\x20for\x20deploy</option>';return;}const _0x57c412=(state['currentDeployProfileData']?.['secrets']||[])['map'](_0x1b6a5e=>typeof _0x1b6a5e==='string'?_0x1b6a5e:_0x1b6a5e['name']),_0x4befcd=_0x26c717['filter'](_0x53cdba=>!_0x57c412['includes'](_0x53cdba['name']));if(_0x4befcd['length']===0x0){_0x4a3e63['innerHTML']='<option\x20value=\x22\x22>All\x20deploy\x20secrets\x20already\x20added</option>';return;}_0x4a3e63['innerHTML']=_0x4befcd['map'](_0x469b5f=>'<option\x20value=\x22'+Utils['escapeHtml'](_0x469b5f['name'])+'\x22>'+Utils['escapeHtml'](_0x469b5f['name'])+(_0x469b5f['description']?'\x20-\x20'+Utils['escapeHtml'](_0x469b5f['description']):'')+'</option>')['join']('');}function updateProfileSecretInfo(){const _0x1eb245=document['getElementById']('profile-secret-name'),_0x78b3ba=document['getElementById']('profile-secret-info'),_0x49385b=_0x1eb245['value'];if(!_0x49385b){_0x78b3ba['hidden']=!![];return;}const _0x137681=state['secrets']['find'](_0x1bb2ad=>_0x1bb2ad['name']===_0x49385b);if(!_0x137681){_0x78b3ba['hidden']=!![];return;}const _0x2fa9c8=_0x137681['expose_as']==='file'?'File\x20(bind\x20mount)':'Environment\x20Variable',_0x41c7c2=_0x137681['expose_as']==='file'?'Container\x20Path':'Variable\x20Name';_0x78b3ba['innerHTML']='\x0a\x20\x20\x20\x20<div\x20class=\x22secret-info-item\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-info-label\x22>Expose\x20As:</span>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-info-value\x22>'+Utils['escapeHtml'](_0x2fa9c8)+'</span>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22secret-info-item\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-info-label\x22>'+Utils['escapeHtml'](_0x41c7c2)+':</span>\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-info-value\x20code-font\x22>'+Utils['escapeHtml'](_0x137681['target']||'Not\x20set')+'</span>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20',_0x78b3ba['hidden']=![];}function closeProfileSecretModal(){document['getElementById']('profile-secret-modal')['hidden']=!![];}function saveProfileSecret(){const _0x3b57e8=document['getElementById']('profile-secret-name'),_0xf3df58=document['getElementById']('profile-secret-error'),_0x310972=_0x3b57e8['value'];if(!_0x310972){_0xf3df58['textContent']='Please\x20select\x20a\x20secret',_0xf3df58['hidden']=![];return;}!state['currentDeployProfileData']['secrets']&&(state['currentDeployProfileData']['secrets']=[]),state['currentDeployProfileData']['secrets']['push']({'name':_0x310972}),closeProfileSecretModal(),renderProfileSecrets(),markProfileAsModified();}window['deleteProfileSecret']=function(_0x21337f){if(!state['currentDeployProfileData']?.['secrets'])return;if(!confirm('Delete\x20this\x20secret\x20reference?'))return;state['currentDeployProfileData']['secrets']['splice'](_0x21337f,0x1),renderProfileSecrets(),markProfileAsModified();};function openAddParameterModal(_0x4eccba){state['parameterModalContext']=_0x4eccba,state['editingParamName']=null,state['parameterOptions']=[];const _0x164770=document['getElementById']('profile-parameter-modal'),_0x1c716c=document['getElementById']('profile-parameter-modal-title'),_0x327afc=document['getElementById']('profile-parameter-error');_0x1c716c['textContent']='Add\x20Parameter',_0x327afc['hidden']=!![],document['getElementById']('profile-param-name')['value']='',document['getElementById']('profile-param-name')['disabled']=![],document['getElementById']('profile-param-label')['value']='',document['getElementById']('profile-param-description')['value']='',document['getElementById']('profile-param-type')['value']='text',document['getElementById']('profile-param-command')['value']='',document['getElementById']('profile-param-parser')['value']='lines',document['getElementById']('profile-param-repos')['value']='',document['getElementById']('profile-param-path')['value']='',document['getElementById']('profile-param-include')['value']='files',document['getElementById']('profile-param-pattern')['value']='',document['getElementById']('profile-param-files-repos')['value']='',document['getElementById']('profile-param-multiselect')['checked']=![],document['getElementById']('profile-param-default')['value']='',document['getElementById']('profile-param-required')['checked']=![],renderParameterOptionsList(),updateProfileParamTypeVisibility(),_0x164770['hidden']=![],document['getElementById']('profile-param-name')['focus']();}function openAddProfileParameterModal(){openAddParameterModal('deploy');}function updateProfileParamTypeVisibility(){const _0x517ec3=document['getElementById']('profile-param-type')['value'],_0x35aeec=document['getElementById']('profile-param-options-row'),_0x2e6bc0=document['getElementById']('profile-param-command-row'),_0x3f4c55=document['getElementById']('profile-param-files-row'),_0x28e8c8=document['getElementById']('profile-param-multiselect-row');_0x35aeec['hidden']=!![],_0x2e6bc0['hidden']=!![],_0x3f4c55['hidden']=!![],_0x28e8c8['hidden']=!![];if(_0x517ec3==='list')_0x35aeec['hidden']=![],_0x28e8c8['hidden']=![];else{if(_0x517ec3==='command')_0x2e6bc0['hidden']=![],_0x28e8c8['hidden']=![];else _0x517ec3==='files'&&(_0x3f4c55['hidden']=![],_0x28e8c8['hidden']=![]);}}function addParameterOption(){state['parameterOptions']['push']({'value':'','label':'','description':''}),renderParameterOptionsList();const _0xcd3826=document['querySelectorAll']('#profile-param-options-list\x20.option-value-input');_0xcd3826['length']>0x0&&_0xcd3826[_0xcd3826['length']-0x1]['focus']();}window['removeParameterOption']=function(_0x2bd4a7){state['parameterOptions']['splice'](_0x2bd4a7,0x1),renderParameterOptionsList();},window['updateParameterOption']=function(_0x216821,_0x308042,_0x4beb74){state['parameterOptions'][_0x216821]&&(state['parameterOptions'][_0x216821][_0x308042]=_0x4beb74);};function renderParameterOptionsList(){const _0x44e6c1=document['getElementById']('profile-param-options-list');if(!_0x44e6c1)return;if(state['parameterOptions']['length']===0x0){_0x44e6c1['innerHTML']='<div\x20class=\x22options-empty\x20text-muted\x22>No\x20options\x20defined.\x20Click\x20\x22+\x20Add\x20Option\x22\x20to\x20add\x20one.</div>';return;}_0x44e6c1['innerHTML']=state['parameterOptions']['map']((_0x83a532,_0x27bea9)=>'\x0a\x20\x20\x20\x20<div\x20class=\x22option-item\x22\x20data-index=\x22'+_0x27bea9+'\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22option-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20class=\x22form-input\x20option-value-input\x22\x20placeholder=\x22Value\x20(required)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value=\x22'+Utils['escapeHtml'](_0x83a532['value']||'')+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20onchange=\x22updateParameterOption('+_0x27bea9+',\x20\x27value\x27,\x20this.value)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20class=\x22form-input\x20option-label-input\x22\x20placeholder=\x22Label\x20(optional)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value=\x22'+Utils['escapeHtml'](_0x83a532['label']||'')+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20onchange=\x22updateParameterOption('+_0x27bea9+',\x20\x27label\x27,\x20this.value)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20type=\x22button\x22\x20class=\x22btn-icon\x20btn-danger-icon\x22\x20onclick=\x22removeParameterOption('+_0x27bea9+')\x22\x20title=\x22Remove\x22>\x0a\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<line\x20x1=\x2218\x22\x20y1=\x226\x22\x20x2=\x226\x22\x20y2=\x2218\x22></line>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<line\x20x1=\x226\x22\x20y1=\x226\x22\x20x2=\x2218\x22\x20y2=\x2218\x22></line>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</svg>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20class=\x22form-input\x20option-desc-input\x22\x20placeholder=\x22Description\x20(optional)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value=\x22'+Utils['escapeHtml'](_0x83a532['description']||'')+'\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20onchange=\x22updateParameterOption('+_0x27bea9+',\x20\x27description\x27,\x20this.value)\x22>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20')['join']('');}function openEditParameterModal(_0x833e24,_0x3c5774){state['parameterModalContext']=_0x3c5774,state['editingParamName']=_0x833e24;let _0x560ebd;if(_0x3c5774==='deploy')_0x560ebd=state['currentDeployProfileData']?.['parameters']?.[_0x833e24];else{if(_0x3c5774==='test'){const _0x71483a=state['selectedEnvData']?.['tests']?.[state['currentTest']];_0x560ebd=_0x71483a?.['parameters']?.[_0x833e24];}else _0x3c5774==='template'&&(_0x560ebd=state['currentTemplateData']?.['parameters']?.[_0x833e24]);}if(!_0x560ebd)return;const _0x5f5136=document['getElementById']('profile-parameter-modal'),_0x25672d=document['getElementById']('profile-parameter-modal-title'),_0x9647e9=document['getElementById']('profile-parameter-error');_0x25672d['textContent']='Edit\x20Parameter',_0x9647e9['hidden']=!![],document['getElementById']('profile-param-name')['value']=_0x833e24,document['getElementById']('profile-param-name')['disabled']=!![],document['getElementById']('profile-param-description')['value']=_0x560ebd['description']||'',document['getElementById']('profile-param-default')['value']=_0x560ebd['default']||'',document['getElementById']('profile-param-required')['checked']=_0x560ebd['required']||![];const _0x2a347e=_0x560ebd['prompt'];if(_0x2a347e){document['getElementById']('profile-param-label')['value']=_0x2a347e['label']||'',document['getElementById']('profile-param-multiselect')['checked']=_0x2a347e['multiSelect']||![];if(_0x2a347e['type']==='list')document['getElementById']('profile-param-type')['value']='list',state['parameterOptions']=(_0x2a347e['options']||[])['map'](_0x362237=>{if(typeof _0x362237==='string')return{'value':_0x362237,'label':'','description':''};return{'value':_0x362237['value']||'','label':_0x362237['label']||'','description':_0x362237['description']||''};});else{if(_0x2a347e['type']==='command')document['getElementById']('profile-param-type')['value']='command',document['getElementById']('profile-param-command')['value']=_0x2a347e['command']||'',document['getElementById']('profile-param-parser')['value']=_0x2a347e['parser']||'lines',document['getElementById']('profile-param-repos')['value']=(_0x2a347e['repos']||[])['join'](',\x20'),state['parameterOptions']=[];else _0x2a347e['type']==='files'?(document['getElementById']('profile-param-type')['value']='files',document['getElementById']('profile-param-path')['value']=_0x2a347e['path']||'',document['getElementById']('profile-param-include')['value']=_0x2a347e['include']||'files',document['getElementById']('profile-param-pattern')['value']=_0x2a347e['pattern']||'',document['getElementById']('profile-param-files-repos')['value']=(_0x2a347e['repos']||[])['join'](',\x20'),state['parameterOptions']=[]):(document['getElementById']('profile-param-type')['value']='text',state['parameterOptions']=[]);}}else{document['getElementById']('profile-param-label')['value']=_0x560ebd['label']||'',document['getElementById']('profile-param-multiselect')['checked']=![];const _0x2349b9=_0x560ebd['type']||'text';if(_0x2349b9==='select')document['getElementById']('profile-param-type')['value']='list',state['parameterOptions']=(_0x560ebd['options']||[])['map'](_0x150425=>{if(typeof _0x150425==='string')return{'value':_0x150425,'label':'','description':''};return{'value':_0x150425['value']||_0x150425,'label':_0x150425['label']||'','description':_0x150425['description']||''};});else{if(_0x2349b9==='command')document['getElementById']('profile-param-type')['value']='command',document['getElementById']('profile-param-command')['value']=_0x560ebd['command']||'',document['getElementById']('profile-param-parser')['value']=_0x560ebd['parser']||'lines',document['getElementById']('profile-param-repos')['value']=(_0x560ebd['repos']||[])['join'](',\x20'),state['parameterOptions']=[];else _0x2349b9==='boolean'?(document['getElementById']('profile-param-type')['value']='boolean',state['parameterOptions']=[]):(document['getElementById']('profile-param-type')['value']='text',state['parameterOptions']=[]);}}renderParameterOptionsList(),updateProfileParamTypeVisibility(),_0x5f5136['hidden']=![],document['getElementById']('profile-param-label')['focus']();}window['editProfileParameter']=function(_0x29a73b){openEditParameterModal(_0x29a73b,'deploy');},window['editTestParameter']=function(_0x4ef6af){openEditParameterModal(_0x4ef6af,'test');},window['editTemplateParameter']=function(_0x5ceaff){openEditParameterModal(_0x5ceaff,'template');};function closeProfileParameterModal(){document['getElementById']('profile-parameter-modal')['hidden']=!![],state['editingParamName']=null,state['parameterModalContext']=null,state['parameterOptions']=[];}function saveProfileParameter(){const _0x74e135=document['getElementById']('profile-param-name'),_0x384ab2=document['getElementById']('profile-param-label'),_0x5cb64d=document['getElementById']('profile-param-description'),_0x174c1f=document['getElementById']('profile-param-type'),_0x50c31f=document['getElementById']('profile-param-command'),_0x2a7788=document['getElementById']('profile-param-parser'),_0x311110=document['getElementById']('profile-param-repos'),_0x41cf70=document['getElementById']('profile-param-path'),_0x36402d=document['getElementById']('profile-param-include'),_0x2b14dc=document['getElementById']('profile-param-pattern'),_0x92e00c=document['getElementById']('profile-param-files-repos'),_0x4cff2b=document['getElementById']('profile-param-multiselect'),_0x3028a1=document['getElementById']('profile-param-default'),_0x46c140=document['getElementById']('profile-param-required'),_0x4250c1=document['getElementById']('profile-parameter-error'),_0x2cf5a1=_0x74e135['value']['trim'](),_0x29863c=_0x384ab2['value']['trim'](),_0x488bef=_0x5cb64d['value']['trim'](),_0x500579=_0x174c1f['value'],_0x3e4748=_0x46c140['checked'],_0x4b7084=_0x3028a1['value']['trim'](),_0x2de69a=_0x4cff2b['checked'],_0x44b026=state['parameterModalContext'];if(!_0x2cf5a1){_0x4250c1['textContent']='Parameter\x20name\x20is\x20required',_0x4250c1['hidden']=![],_0x74e135['focus']();return;}if(!/^[A-Za-z_][A-Za-z0-9_]*$/['test'](_0x2cf5a1)){_0x4250c1['textContent']='Invalid\x20parameter\x20name.\x20Use\x20letters,\x20numbers,\x20and\x20underscores.',_0x4250c1['hidden']=![],_0x74e135['focus']();return;}let _0x5b6fa5;if(_0x44b026==='deploy')!state['currentDeployProfileData']['parameters']&&(state['currentDeployProfileData']['parameters']={}),_0x5b6fa5=state['currentDeployProfileData']['parameters'];else{if(_0x44b026==='test'){const _0x30ab41=state['selectedEnvData']['tests'][state['currentTest']];!_0x30ab41['parameters']&&(_0x30ab41['parameters']={}),_0x5b6fa5=_0x30ab41['parameters'];}else _0x44b026==='template'&&(!state['currentTemplateData']['parameters']&&(state['currentTemplateData']['parameters']={}),_0x5b6fa5=state['currentTemplateData']['parameters']);}if(state['editingParamName']===null&&_0x5b6fa5[_0x2cf5a1]){_0x4250c1['textContent']='Parameter\x20\x22'+_0x2cf5a1+'\x22\x20already\x20exists',_0x4250c1['hidden']=![];return;}let _0x579d2d;if(_0x44b026==='deploy'){_0x579d2d={'required':_0x3e4748};if(_0x29863c)_0x579d2d['label']=_0x29863c;if(_0x488bef)_0x579d2d['description']=_0x488bef;if(_0x4b7084)_0x579d2d['default']=_0x4b7084;if(_0x500579==='list'){_0x579d2d['type']='select';const _0x851a8c=state['parameterOptions']['filter'](_0x5c8fc4=>_0x5c8fc4['value']['trim']());if(_0x851a8c['length']<0x1){_0x4250c1['textContent']='At\x20least\x20one\x20option\x20with\x20a\x20value\x20is\x20required',_0x4250c1['hidden']=![];return;}_0x579d2d['options']=_0x851a8c['map'](_0x3d6aaa=>{if(_0x3d6aaa['label']||_0x3d6aaa['description'])return{'value':_0x3d6aaa['value'],'label':_0x3d6aaa['label']||undefined,'description':_0x3d6aaa['description']||undefined};return _0x3d6aaa['value'];});}else{if(_0x500579==='command'){_0x579d2d['type']='command';const _0x5ed1bc=_0x50c31f['value']['trim']();if(!_0x5ed1bc){_0x4250c1['textContent']='Command\x20is\x20required\x20for\x20dynamic\x20type',_0x4250c1['hidden']=![],_0x50c31f['focus']();return;}_0x579d2d['command']=_0x5ed1bc;const _0x1092d1=_0x2a7788['value'];if(_0x1092d1&&_0x1092d1!=='lines')_0x579d2d['parser']=_0x1092d1;const _0x113ab6=_0x311110['value']['split'](',')['map'](_0x45c115=>_0x45c115['trim']())['filter'](_0x2b80ca=>_0x2b80ca);if(_0x113ab6['length']>0x0)_0x579d2d['repos']=_0x113ab6;}else{if(_0x500579==='files'){_0x579d2d['type']='files';const _0x1eb003=_0x41cf70['value']['trim']();if(!_0x1eb003){_0x4250c1['textContent']='Directory\x20path\x20is\x20required\x20for\x20file\x20browser\x20type',_0x4250c1['hidden']=![],_0x41cf70['focus']();return;}_0x579d2d['path']=_0x1eb003,_0x579d2d['include']=_0x36402d['value'];const _0x4e0078=_0x2b14dc['value']['trim']();if(_0x4e0078)_0x579d2d['pattern']=_0x4e0078;const _0x35ac66=_0x92e00c['value']['split'](',')['map'](_0x49eb0a=>_0x49eb0a['trim']())['filter'](_0x49eb45=>_0x49eb45);if(_0x35ac66['length']>0x0)_0x579d2d['repos']=_0x35ac66;if(_0x2de69a)_0x579d2d['multiSelect']=!![];}else _0x500579==='boolean'?_0x579d2d['type']='boolean':_0x579d2d['type']='text';}}}else{_0x579d2d={'required':_0x3e4748};if(_0x488bef)_0x579d2d['description']=_0x488bef;if(_0x4b7084)_0x579d2d['default']=_0x4b7084;if(_0x500579!=='text'&&_0x500579!=='boolean'){_0x579d2d['prompt']={'type':_0x500579};if(_0x29863c)_0x579d2d['prompt']['label']=_0x29863c;if(_0x2de69a)_0x579d2d['prompt']['multiSelect']=!![];if(_0x500579==='list'){const _0x13bf18=state['parameterOptions']['filter'](_0x597def=>_0x597def['value']['trim']());if(_0x13bf18['length']<0x1){_0x4250c1['textContent']='At\x20least\x20one\x20option\x20with\x20a\x20value\x20is\x20required',_0x4250c1['hidden']=![];return;}_0x579d2d['prompt']['options']=_0x13bf18['map'](_0x5c5d59=>{const _0x58f761={'value':_0x5c5d59['value']};if(_0x5c5d59['label'])_0x58f761['label']=_0x5c5d59['label'];if(_0x5c5d59['description'])_0x58f761['description']=_0x5c5d59['description'];return _0x58f761;});}else{if(_0x500579==='command'){const _0x3a2911=_0x50c31f['value']['trim']();if(!_0x3a2911){_0x4250c1['textContent']='Command\x20is\x20required\x20for\x20dynamic\x20type',_0x4250c1['hidden']=![],_0x50c31f['focus']();return;}_0x579d2d['prompt']['command']=_0x3a2911;const _0x192ef4=_0x2a7788['value'];if(_0x192ef4&&_0x192ef4!=='json')_0x579d2d['prompt']['parser']=_0x192ef4;const _0xd6ed5a=_0x311110['value']['split'](',')['map'](_0x1a5e5a=>_0x1a5e5a['trim']())['filter'](_0x1cfd0f=>_0x1cfd0f);if(_0xd6ed5a['length']>0x0)_0x579d2d['prompt']['repos']=_0xd6ed5a;}else{if(_0x500579==='files'){const _0x4d30e1=_0x41cf70['value']['trim']();if(!_0x4d30e1){_0x4250c1['textContent']='Directory\x20path\x20is\x20required\x20for\x20file\x20browser\x20type',_0x4250c1['hidden']=![],_0x41cf70['focus']();return;}_0x579d2d['prompt']['path']=_0x4d30e1;const _0x3a5937=_0x36402d['value'];if(_0x3a5937!=='files')_0x579d2d['prompt']['include']=_0x3a5937;const _0x1620f6=_0x2b14dc['value']['trim']();if(_0x1620f6)_0x579d2d['prompt']['pattern']=_0x1620f6;const _0x184afd=_0x92e00c['value']['split'](',')['map'](_0x3b5972=>_0x3b5972['trim']())['filter'](_0x2d48a1=>_0x2d48a1);if(_0x184afd['length']>0x0)_0x579d2d['prompt']['repos']=_0x184afd;}}}}}_0x5b6fa5[_0x2cf5a1]=_0x579d2d,closeProfileParameterModal();if(_0x44b026==='deploy')renderProfileParameters(),markProfileAsModified();else{if(_0x44b026==='test')renderTestParameters(),markAsModified();else _0x44b026==='template'&&(renderTemplateParameters(),markAsModified());}}function deleteParameter(_0x4ed0d3,_0x883a7c){if(!confirm('Delete\x20this\x20parameter?'))return;if(_0x883a7c==='deploy'){if(!state['currentDeployProfileData']?.['parameters'])return;delete state['currentDeployProfileData']['parameters'][_0x4ed0d3],renderProfileParameters(),markProfileAsModified();}else{if(_0x883a7c==='test'){const _0x341a62=state['selectedEnvData']?.['tests']?.[state['currentTest']];if(!_0x341a62?.['parameters'])return;delete _0x341a62['parameters'][_0x4ed0d3],renderTestParameters(),markAsModified();}else{if(_0x883a7c==='template'){if(!state['currentTemplateData']?.['parameters'])return;delete state['currentTemplateData']['parameters'][_0x4ed0d3],renderTemplateParameters(),markAsModified();}}}}window['deleteProfileParameter']=function(_0x87e21b){deleteParameter(_0x87e21b,'deploy');},window['deleteTestParameter']=function(_0x4d3cc4){deleteParameter(_0x4d3cc4,'test');},window['deleteTemplateParameter']=function(_0x11aa8d){deleteParameter(_0x11aa8d,'template');};function renderTestParameters(){const _0x36c5ef=document['getElementById']('test-parameters-list');if(!_0x36c5ef)return;const _0x380d8d=state['selectedEnvData']?.['tests']?.[state['currentTest']],_0x33e8b3=_0x380d8d?.['parameters']||{},_0x2d2591=Object['entries'](_0x33e8b3),_0x1eab62=document['getElementById']('test-parameters-count');if(_0x1eab62)_0x1eab62['textContent']=_0x2d2591['length'];if(_0x2d2591['length']===0x0){_0x36c5ef['innerHTML']='<div\x20class=\x22profile-list-empty\x22>No\x20parameters\x20defined</div>';return;}_0x36c5ef['innerHTML']=_0x2d2591['map'](([_0x415ecd,_0x285d97])=>{const _0x1b0eeb=getParameterTypeLabel(_0x285d97),_0x15f853=_0x285d97['prompt']?.['label']||_0x285d97['label']||'';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-param-item\x22\x20data-name=\x22'+Utils['escapeHtml'](_0x415ecd)+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-key\x22>'+Utils['escapeHtml'](_0x415ecd)+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22param-type-badge\x22>'+_0x1b0eeb+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-value\x22>'+(_0x15f853?Utils['escapeHtml'](_0x15f853):'')+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x285d97['required']?'<span\x20class=\x22param-required\x22>Required</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-item-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22profile-item-edit\x22\x20onclick=\x22editTestParameter(\x27'+Utils['escapeHtml'](_0x415ecd)+'\x27)\x22\x20title=\x22Edit\x22>✏️</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22profile-item-delete\x22\x20onclick=\x22deleteTestParameter(\x27'+Utils['escapeHtml'](_0x415ecd)+'\x27)\x22\x20title=\x22Delete\x22>🗑</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';})['join']('');}function renderTemplateParameters(){const _0x30c2f9=document['getElementById']('template-parameters-list');if(!_0x30c2f9)return;const _0xdd867f=state['currentTemplateData']?.['parameters']||{},_0x52410d=Array['isArray'](_0xdd867f)?Object['fromEntries'](_0xdd867f['map'](_0x238999=>[_0x238999['name'],_0x238999])):_0xdd867f,_0x209d82=Object['entries'](_0x52410d),_0x4e4f87=document['getElementById']('template-parameters-count');if(_0x4e4f87)_0x4e4f87['textContent']=_0x209d82['length'];if(_0x209d82['length']===0x0){_0x30c2f9['innerHTML']='<div\x20class=\x22profile-list-empty\x22>No\x20parameters\x20defined</div>';return;}_0x30c2f9['innerHTML']=_0x209d82['map'](([_0x3becdd,_0xeccfff])=>{const _0x4828a3=getParameterTypeLabel(_0xeccfff),_0x3ee480=_0xeccfff['prompt']?.['label']||_0xeccfff['label']||'';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-param-item\x22\x20data-name=\x22'+Utils['escapeHtml'](_0x3becdd)+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-key\x22>'+Utils['escapeHtml'](_0x3becdd)+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22param-type-badge\x22>'+_0x4828a3+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22profile-item-value\x22>'+(_0x3ee480?Utils['escapeHtml'](_0x3ee480):'')+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0xeccfff['required']?'<span\x20class=\x22param-required\x22>Required</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22profile-item-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22profile-item-edit\x22\x20onclick=\x22editTemplateParameter(\x27'+Utils['escapeHtml'](_0x3becdd)+'\x27)\x22\x20title=\x22Edit\x22>✏️</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22profile-item-delete\x22\x20onclick=\x22deleteTemplateParameter(\x27'+Utils['escapeHtml'](_0x3becdd)+'\x27)\x22\x20title=\x22Delete\x22>🗑</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';})['join']('');}function getParameterTypeLabel(_0x4fb903){if(_0x4fb903['prompt'])return _0x4fb903['prompt']['type']||'text';const _0xa1f1a0=_0x4fb903['type']||'text';if(_0xa1f1a0==='select')return'list';return _0xa1f1a0;}window['openAddTestParameterModal']=function(){openAddParameterModal('test');},window['openAddTemplateParameterModal']=function(){openAddParameterModal('template');};function openAddDeployProfileModal(){const _0x206a4d=document['getElementById']('add-deploy-profile-modal'),_0x12358e=document['getElementById']('new-deploy-profile-name'),_0xa7dc27=document['getElementById']('new-deploy-profile-description'),_0x1f23f5=document['getElementById']('add-deploy-profile-error');_0x12358e['value']='',_0xa7dc27['value']='',_0x1f23f5['hidden']=!![],_0x12358e['classList']['remove']('input-error'),_0xa7dc27['classList']['remove']('input-error'),_0x206a4d['hidden']=![],_0x12358e['focus']();}function closeAddDeployProfileModal(){document['getElementById']('add-deploy-profile-modal')['hidden']=!![];}async function confirmAddDeployProfile(){const _0xd0e1c1=document['getElementById']('new-deploy-profile-name'),_0x375cb3=document['getElementById']('new-deploy-profile-description'),_0x515a1f=document['getElementById']('add-deploy-profile-error'),_0x3074de=_0xd0e1c1['value']['trim'](),_0x16f0cf=_0x375cb3['value']['trim']();_0xd0e1c1['classList']['remove']('input-error'),_0x375cb3['classList']['remove']('input-error'),_0x515a1f['hidden']=!![];if(!_0x3074de){_0xd0e1c1['classList']['add']('input-error'),_0x515a1f['textContent']='Profile\x20name\x20is\x20required',_0x515a1f['hidden']=![];return;}if(!/^[A-Za-z_][A-Za-z0-9_-]*$/['test'](_0x3074de)){_0xd0e1c1['classList']['add']('input-error'),_0x515a1f['textContent']='Profile\x20name\x20must\x20start\x20with\x20a\x20letter\x20or\x20underscore,\x20and\x20contain\x20only\x20letters,\x20numbers,\x20hyphens,\x20and\x20underscores',_0x515a1f['hidden']=![];return;}if(!_0x16f0cf){_0x375cb3['classList']['add']('input-error'),_0x515a1f['textContent']='Description\x20is\x20required',_0x515a1f['hidden']=![];return;}const _0x35cd3e=state['selectedEnvData']['deployment_profiles']||[];if(_0x35cd3e['find'](_0x2661f2=>_0x2661f2['name']['toLowerCase']()===_0x3074de['toLowerCase']())){_0xd0e1c1['classList']['add']('input-error'),_0x515a1f['textContent']='A\x20profile\x20with\x20this\x20name\x20already\x20exists',_0x515a1f['hidden']=![];return;}try{const _0x5a7adf=await fetch('/environments/'+state['selectedEnv']+'/deployment-profiles',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'profileName':_0x3074de,'description':_0x16f0cf})}),_0x588378=await _0x5a7adf['json']();if(!_0x5a7adf['ok']){_0x515a1f['textContent']=_0x588378['error']||'Failed\x20to\x20create\x20profile',_0x515a1f['hidden']=![];return;}await loadEnvironmentDetails(state['selectedEnv']),state['currentDeployProfile']=_0x3074de,renderDeployProfiles(),closeAddDeployProfileModal(),Utils['showSuccess']('Deployment\x20profile\x20\x22'+_0x3074de+'\x22\x20created');}catch(_0x2a3426){_0x515a1f['textContent']=_0x2a3426['message']||'Failed\x20to\x20create\x20profile',_0x515a1f['hidden']=![];}}function openDeleteDeployProfileModal(){if(!state['currentDeployProfile'])return;document['getElementById']('delete-deploy-profile-name')['textContent']=state['currentDeployProfile'],document['getElementById']('delete-deploy-profile-modal')['hidden']=![];}function closeDeleteDeployProfileModal(){document['getElementById']('delete-deploy-profile-modal')['hidden']=!![];}async function confirmDeleteDeployProfile(){if(!state['currentDeployProfile'])return;const _0xc1bb8=state['currentDeployProfile'];try{const _0x3a8d62=await fetch('/environments/'+state['selectedEnv']+'/deployment-profiles/'+_0xc1bb8,{'method':'DELETE'}),_0x50ef7a=await _0x3a8d62['json']();if(!_0x3a8d62['ok']){Utils['showError'](_0x50ef7a['error']||'Failed\x20to\x20delete\x20profile'),closeDeleteDeployProfileModal();return;}await loadEnvironmentDetails(state['selectedEnv']),state['currentDeployProfile']=null,state['currentDeployProfileData']=null,renderDeployProfiles(),closeDeleteDeployProfileModal(),Utils['showSuccess']('Deployment\x20profile\x20\x22'+_0xc1bb8+'\x22\x20deleted');}catch(_0x1a411c){Utils['showError'](_0x1a411c['message']||'Failed\x20to\x20delete\x20profile'),closeDeleteDeployProfileModal();}}async function loadSecrets(){if(!state['selectedEnv']){state['secrets']=[];return;}try{const _0x3172b4=await API['get']('/environments/'+state['selectedEnv']+'/secrets');state['secrets']=_0x3172b4['secrets']||[];}catch(_0x3af626){console['error']('Failed\x20to\x20load\x20secrets:',_0x3af626),state['secrets']=[];}}function renderSecrets(){const _0x289b2e=document['getElementById']('secrets-list'),_0x2f1a88=document['getElementById']('secrets-empty'),_0x4c6dff=document['getElementById']('secrets-filter');if(!_0x289b2e||!_0x2f1a88)return;updateTabBadge('badge-secrets',state['secrets']?.['length']||0x0);const _0xe25789=_0x4c6dff?.['value']||'all',_0x3e9dc2=_0xe25789==='all'?state['secrets']:state['secrets']['filter'](_0x36605a=>{const _0x35973c=_0x36605a['available_for']||[];return _0x35973c['includes'](_0xe25789);});if(_0x3e9dc2['length']===0x0){_0x289b2e['innerHTML']='',_0x289b2e['hidden']=!![];state['secrets']['length']>0x0&&_0xe25789!=='all'?_0x2f1a88['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20<p>No\x20secrets\x20match\x20the\x20\x22'+_0xe25789+'\x22\x20filter.</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<p\x20class=\x22text-muted\x22>Try\x20selecting\x20\x22All\x22\x20to\x20see\x20all\x20secrets.</p>\x0a\x20\x20\x20\x20\x20\x20':_0x2f1a88['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20<p>No\x20secrets\x20configured.</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<p\x20class=\x22text-muted\x22>Secrets\x20can\x20be\x20referenced\x20in\x20builds,\x20tasks,\x20and\x20deployment\x20profiles\x20and\x20exposed\x20as\x20environment\x20variables\x20or\x20mounted\x20files.</p>\x0a\x20\x20\x20\x20\x20\x20';_0x2f1a88['hidden']=![];return;}_0x289b2e['hidden']=![],_0x2f1a88['hidden']=!![],_0x289b2e['innerHTML']=_0x3e9dc2['map'](_0x42257d=>{const _0x35d0fd=_0x42257d['type']==='file'?'file':'value',_0x148f28=_0x42257d['type']==='file'?'File':'Value',_0x549e91=_0x42257d['type']==='file'?'<span\x20class=\x22secret-source\x22\x20title=\x22'+Utils['escapeHtml'](_0x42257d['source'])+'\x22>'+Utils['escapeHtml'](_0x42257d['source'])+'</span>':_0x42257d['value']?'':'<span\x20class=\x22secret-meta-text\x20warning\x22>No\x20value</span>',_0x2d2d67=_0x42257d['available_for']||[],_0x1d0d55='\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-availability-badges\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x2d2d67['includes']('build')?'<span\x20class=\x22availability-badge\x20build\x22>Build</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x2d2d67['includes']('tasks')?'<span\x20class=\x22availability-badge\x20tasks\x22>Tasks</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x2d2d67['includes']('deploy')?'<span\x20class=\x22availability-badge\x20deploy\x22>Deploy</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20',_0x7e0514=_0x42257d['git_remote']?'<span\x20class=\x22git-pat-badge\x22\x20title=\x22Git\x20PAT\x20for\x20'+Utils['escapeHtml'](_0x42257d['git_remote'])+'\x22>PAT:\x20'+Utils['escapeHtml'](_0x42257d['git_remote'])+'</span>':'';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22secret-item\x22\x20data-secret=\x22'+Utils['escapeHtml'](_0x42257d['name'])+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22secret-info\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-name\x22>'+Utils['escapeHtml'](_0x42257d['name'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22secret-meta\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x1d0d55+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-type-badge\x20'+_0x35d0fd+'\x22>'+_0x148f28+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x7e0514+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x42257d['description']?'<span\x20class=\x22secret-description\x22\x20title=\x22'+Utils['escapeHtml'](_0x42257d['description'])+'\x22>'+Utils['escapeHtml'](_0x42257d['description'])+'</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22secret-meta-column\x22>'+_0x549e91+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22secret-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22secret-edit\x22\x20title=\x22Edit\x20secret\x22\x20onclick=\x22openEditSecretModal(\x27'+Utils['escapeHtml'](_0x42257d['name'])+'\x27)\x22>✏️</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22secret-delete\x22\x20title=\x22Delete\x20secret\x22\x20onclick=\x22openDeleteSecretModal(\x27'+Utils['escapeHtml'](_0x42257d['name'])+'\x27)\x22>🗑</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';})['join']('');}function openAddSecretModal(){state['editingSecret']=null;const _0x56b6d0=document['getElementById']('secret-modal'),_0x35a5c7=document['getElementById']('secret-modal-title'),_0x1bac1f=document['getElementById']('secret-name'),_0x1c6e67=document['getElementById']('secret-description'),_0x5eb6aa=document['getElementById']('secret-type-file'),_0x3e255d=document['getElementById']('secret-type-value'),_0x408950=document['getElementById']('secret-source'),_0x5a0073=document['getElementById']('secret-value'),_0x306764=document['getElementById']('secret-modal-error'),_0x9d7750=document['getElementById']('secret-source-validation'),_0x5c559d=document['getElementById']('secret-available-build'),_0x451fc5=document['getElementById']('secret-available-tasks'),_0x4ff923=document['getElementById']('secret-available-deploy'),_0x336159=document['getElementById']('secret-expose-env'),_0x5e256a=document['getElementById']('secret-expose-file'),_0x2c0aa6=document['getElementById']('secret-target');_0x35a5c7['textContent']='Add\x20Secret',_0x1bac1f['value']='',_0x1bac1f['disabled']=![],_0x1c6e67['value']='',_0x3e255d['checked']=!![],_0x5eb6aa['checked']=![],_0x408950['value']='',resetSecretValueVisibility(''),_0x306764['hidden']=!![],_0x9d7750['hidden']=!![];const _0x13d2f3=document['getElementById']('secrets-filter'),_0x247768=_0x13d2f3?.['value']||'all';_0x247768==='all'?(_0x5c559d['checked']=![],_0x451fc5['checked']=!![],_0x4ff923['checked']=![]):(_0x5c559d['checked']=_0x247768==='build',_0x451fc5['checked']=_0x247768==='tasks',_0x4ff923['checked']=_0x247768==='deploy');_0x336159['checked']=!![],_0x5e256a['checked']=![],_0x2c0aa6['value']='',handleSecretTypeChange(),resetGitPatFields(),updateGitPatVisibility(),updateExposeAsVisibility(),updateSecretTargetLabel();const _0x19662d=document['getElementById']('secret-source-hint');_0x19662d&&state['selectedEnvData']?.['path']&&(_0x19662d['textContent']='Absolute\x20path,\x20or\x20relative\x20to:\x20'+state['selectedEnvData']['path']),_0x56b6d0['hidden']=![],_0x1bac1f['focus']();}window['openEditSecretModal']=async function(_0x4e13c7){state['editingSecret']=_0x4e13c7;const _0x404677=state['secrets']['find'](_0x5d2681=>_0x5d2681['name']===_0x4e13c7);if(!_0x404677){Utils['showError']('Secret\x20not\x20found');return;}const _0x31a1fe=document['getElementById']('secret-modal'),_0x9b75ef=document['getElementById']('secret-modal-title'),_0x42f2de=document['getElementById']('secret-name'),_0x493980=document['getElementById']('secret-description'),_0x18cd38=document['getElementById']('secret-type-file'),_0x4f2e46=document['getElementById']('secret-type-value'),_0x3a8a92=document['getElementById']('secret-source'),_0x27e155=document['getElementById']('secret-value'),_0x34baf6=document['getElementById']('secret-modal-error'),_0x2266ab=document['getElementById']('secret-source-validation'),_0x5aadc9=document['getElementById']('secret-available-build'),_0xd0aa8b=document['getElementById']('secret-available-tasks'),_0x40db91=document['getElementById']('secret-available-deploy'),_0x456276=document['getElementById']('secret-expose-env'),_0x33096c=document['getElementById']('secret-expose-file'),_0x26a572=document['getElementById']('secret-target');_0x9b75ef['textContent']='Edit\x20Secret',_0x42f2de['value']=_0x4e13c7,_0x42f2de['disabled']=!![],_0x493980['value']=_0x404677['description']||'';_0x404677['type']==='file'?(_0x18cd38['checked']=!![],_0x4f2e46['checked']=![],_0x3a8a92['value']=_0x404677['source']||'',resetSecretValueVisibility('')):(_0x4f2e46['checked']=!![],_0x18cd38['checked']=![],_0x3a8a92['value']='',resetSecretValueVisibility(_0x404677['value']||''),_0x27e155['placeholder']='Enter\x20secret\x20value');const _0x3b9254=_0x404677['available_for']||[];_0x5aadc9['checked']=_0x3b9254['includes']('build'),_0xd0aa8b['checked']=_0x3b9254['includes']('tasks'),_0x40db91['checked']=_0x3b9254['includes']('deploy');_0x404677['expose_as']==='file'?(_0x33096c['checked']=!![],_0x456276['checked']=![]):(_0x456276['checked']=!![],_0x33096c['checked']=![]);_0x26a572['value']=_0x404677['target']||'',setGitPatFields(_0x404677['git_remote']),_0x34baf6['hidden']=!![],_0x2266ab['hidden']=!![],handleSecretTypeChange(),updateGitPatVisibility(),updateExposeAsVisibility(),updateSecretTargetLabel();const _0x22c85e=document['getElementById']('secret-source-hint');_0x22c85e&&state['selectedEnvData']?.['path']&&(_0x22c85e['textContent']='Absolute\x20path,\x20or\x20relative\x20to:\x20'+state['selectedEnvData']['path']),_0x31a1fe['hidden']=![];};function closeSecretModal(){document['getElementById']('secret-modal')['hidden']=!![],state['editingSecret']=null,document['getElementById']('secret-value')['placeholder']='Enter\x20secret\x20value\x20(e.g.,\x20SSH\x20private\x20key\x20content)',resetSecretValueVisibility('');}function handleSecretTypeChange(){const _0x28e9ba=document['getElementById']('secret-type-file')['checked'];document['getElementById']('secret-source-row')['hidden']=!_0x28e9ba,document['getElementById']('secret-value-row')['hidden']=_0x28e9ba;}function updateExposeAsVisibility(){const _0x506286=document['getElementById']('secret-available-tasks')['checked'],_0x18acdb=document['getElementById']('secret-available-deploy')['checked'],_0x47fb5b=document['getElementById']('secret-git-pat-checkbox')['checked'],_0x4aeaf3=(_0x506286||_0x18acdb)&&!_0x47fb5b;document['getElementById']('secret-expose-as-row')['hidden']=!_0x4aeaf3,document['getElementById']('secret-target-row')['hidden']=!_0x4aeaf3;}function updateSecretTargetLabel(){const _0x218b18=document['getElementById']('secret-expose-file')['checked'],_0x3cff39=document['getElementById']('secret-target-label'),_0x539f1e=document['getElementById']('secret-target-hint'),_0xa3dd0a=document['getElementById']('secret-target');_0x218b18?(_0x3cff39['innerHTML']='Container\x20Path\x20<span\x20class=\x22required\x22>*</span>',_0x539f1e['textContent']='Absolute\x20path\x20where\x20file\x20will\x20be\x20mounted\x20in\x20container',_0xa3dd0a['placeholder']='e.g.,\x20/secrets/key.pem'):(_0x3cff39['innerHTML']='Variable\x20Name\x20<span\x20class=\x22required\x22>*</span>',_0x539f1e['textContent']='The\x20environment\x20variable\x20name',_0xa3dd0a['placeholder']='e.g.,\x20SSH_PRIVATE_KEY');}function updateGitPatVisibility(){document['getElementById']('secret-git-pat-row')['hidden']=![];}function handleGitPatCheckboxChange(){const _0x18fb00=document['getElementById']('secret-git-pat-checkbox')['checked'],_0x384efa=document['getElementById']('secret-git-host-row');_0x384efa['hidden']=!_0x18fb00,!_0x18fb00&&(document['getElementById']('secret-git-custom-host-row')['hidden']=!![],document['getElementById']('secret-git-host')['value']='',document['getElementById']('secret-git-custom-host')['value']=''),updateExposeAsVisibility();}function handleGitHostChange(){const _0x2a7d8f=document['getElementById']('secret-git-host')['value'],_0x36f38d=document['getElementById']('secret-git-custom-host-row');_0x36f38d['hidden']=_0x2a7d8f!=='custom',_0x2a7d8f!=='custom'&&(document['getElementById']('secret-git-custom-host')['value']='');}function getGitRemoteValue(){const _0x3680cd=document['getElementById']('secret-git-pat-checkbox')['checked'];if(!_0x3680cd)return null;const _0x534d7a=document['getElementById']('secret-git-host')['value'];if(!_0x534d7a)return null;if(_0x534d7a==='custom'){const _0x2c2617=document['getElementById']('secret-git-custom-host')['value']['trim']();return _0x2c2617||null;}return _0x534d7a;}function setGitPatFields(_0x43c794){const _0xa9d2e1=document['getElementById']('secret-git-pat-checkbox'),_0x266f96=document['getElementById']('secret-git-host'),_0x37823d=document['getElementById']('secret-git-custom-host'),_0x362709=document['getElementById']('secret-git-host-row'),_0x90cc65=document['getElementById']('secret-git-custom-host-row');if(!_0x43c794){_0xa9d2e1['checked']=![],_0x266f96['value']='',_0x37823d['value']='',_0x362709['hidden']=!![],_0x90cc65['hidden']=!![];return;}_0xa9d2e1['checked']=!![],_0x362709['hidden']=![];const _0xd53b3f=['github.com','dev.azure.com','bitbucket.org','gitlab.com'];_0xd53b3f['includes'](_0x43c794['toLowerCase']())?(_0x266f96['value']=_0x43c794['toLowerCase'](),_0x90cc65['hidden']=!![],_0x37823d['value']=''):(_0x266f96['value']='custom',_0x90cc65['hidden']=![],_0x37823d['value']=_0x43c794);}function resetGitPatFields(){document['getElementById']('secret-git-pat-checkbox')['checked']=![],document['getElementById']('secret-git-host')['value']='',document['getElementById']('secret-git-custom-host')['value']='',document['getElementById']('secret-git-host-row')['hidden']=!![],document['getElementById']('secret-git-custom-host-row')['hidden']=!![];}async function validateSecretSourcePath(){const _0xeecd2=document['getElementById']('secret-source'),_0xda7df=document['getElementById']('secret-source-validation'),_0x3d4b69=_0xeecd2['value']['trim']();if(!_0x3d4b69){_0xda7df['hidden']=!![];return;}try{const _0x59e124=await fetch('/environments/'+state['selectedEnv']+'/secrets/_validate/validate',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'source':_0x3d4b69})}),_0x19c8ae=await _0x59e124['json']();if(_0x19c8ae['exists']&&_0x19c8ae['isFile'])_0xda7df['className']='field-validation\x20valid',_0xda7df['innerHTML']='✓\x20File\x20exists\x20('+formatBytes(_0x19c8ae['size'])+')';else _0x19c8ae['exists']&&!_0x19c8ae['isFile']?(_0xda7df['className']='field-validation\x20warning',_0xda7df['innerHTML']='⚠\x20Path\x20exists\x20but\x20is\x20not\x20a\x20file'):(_0xda7df['className']='field-validation\x20warning',_0xda7df['innerHTML']='⚠\x20File\x20not\x20found');_0xda7df['hidden']=![];}catch(_0x311059){_0xda7df['className']='field-validation\x20warning',_0xda7df['innerHTML']='⚠\x20Could\x20not\x20validate\x20path',_0xda7df['hidden']=![];}}function formatBytes(_0x5a55f2){if(_0x5a55f2===0x0)return'0\x20B';const _0x356c5c=0x400,_0x18a127=['B','KB','MB','GB'],_0x215313=Math['floor'](Math['log'](_0x5a55f2)/Math['log'](_0x356c5c));return parseFloat((_0x5a55f2/Math['pow'](_0x356c5c,_0x215313))['toFixed'](0x1))+'\x20'+_0x18a127[_0x215313];}function resetSecretValueVisibility(_0x228957){secretValueStore=_0x228957,secretValueVisible=![],lastCursorPosition=0x0;const _0x3c720b=document['getElementById']('secret-value'),_0x352191=document['querySelector']('.secret-toggle-visibility');_0x3c720b&&(_0x3c720b['value']=_0x228957?'•'['repeat'](_0x228957['length']):''),_0x352191&&(_0x352191['hidden']=![],_0x352191['querySelector']('.eye-open')['style']['display']='block',_0x352191['querySelector']('.eye-closed')['style']['display']='none');}function toggleSecretValueVisibility(){const _0x1e2bee=document['getElementById']('secret-value'),_0x54794b=document['querySelector']('.secret-toggle-visibility');secretValueVisible=!secretValueVisible,secretValueVisible?(_0x1e2bee['value']=secretValueStore,_0x54794b['querySelector']('.eye-open')['style']['display']='none',_0x54794b['querySelector']('.eye-closed')['style']['display']='block'):(_0x1e2bee['value']=secretValueStore?'•'['repeat'](secretValueStore['length']):'',_0x54794b['querySelector']('.eye-open')['style']['display']='block',_0x54794b['querySelector']('.eye-closed')['style']['display']='none');}function handleSecretValueBeforeInput(_0x1cc943){if(!secretValueVisible){const _0x5c056d=_0x1cc943['target'];lastCursorPosition=_0x5c056d['selectionStart'],_0x5c056d['dataset']['selectionEnd']=_0x5c056d['selectionEnd'];}}function handleSecretValueInput(_0x519d19){const _0x1b11af=_0x519d19['target'];if(secretValueVisible)secretValueStore=_0x1b11af['value'];else{const _0x57025a=_0x519d19['inputType'],_0x32355f=_0x1b11af['value'],_0x3c80e2='•',_0x2576b4=_0x1b11af['selectionStart'],_0x4dfa89=_0x32355f['replace'](new RegExp(_0x3c80e2,'g'),''),_0x1ec098=secretValueStore['length'],_0x5a4ee9=lastCursorPosition,_0x43ca10=parseInt(_0x1b11af['dataset']['selectionEnd']||_0x5a4ee9),_0x62e77c=_0x43ca10>_0x5a4ee9;if(_0x32355f==='')secretValueStore='',lastCursorPosition=0x0;else{if(_0x57025a&&_0x57025a['startsWith']('delete')){if(_0x62e77c)secretValueStore=secretValueStore['slice'](0x0,_0x5a4ee9)+secretValueStore['slice'](_0x43ca10),lastCursorPosition=_0x5a4ee9;else{const _0x2440ec=_0x1ec098-_0x32355f['length'];_0x57025a==='deleteContentBackward'?secretValueStore=secretValueStore['slice'](0x0,_0x2576b4)+secretValueStore['slice'](_0x2576b4+_0x2440ec):secretValueStore=secretValueStore['slice'](0x0,_0x2576b4)+secretValueStore['slice'](_0x2576b4+_0x2440ec),lastCursorPosition=_0x2576b4;}}else{if(_0x4dfa89['length']>0x0){const _0x3022e6=_0x32355f['length']-_0x4dfa89['length'];if(_0x3022e6===0x0)secretValueStore=_0x4dfa89,lastCursorPosition=_0x4dfa89['length'];else _0x62e77c?(secretValueStore=secretValueStore['slice'](0x0,_0x5a4ee9)+_0x4dfa89+secretValueStore['slice'](_0x43ca10),lastCursorPosition=_0x5a4ee9+_0x4dfa89['length']):(secretValueStore=secretValueStore['slice'](0x0,_0x5a4ee9)+_0x4dfa89+secretValueStore['slice'](_0x5a4ee9),lastCursorPosition=_0x5a4ee9+_0x4dfa89['length']);}else _0x32355f['length']<_0x1ec098?(secretValueStore=secretValueStore['slice'](0x0,_0x32355f['length']),lastCursorPosition=_0x2576b4):lastCursorPosition=_0x2576b4;}}const _0xac3f94=_0x3c80e2['repeat'](secretValueStore['length']);_0x1b11af['value']=_0xac3f94,_0x1b11af['setSelectionRange'](lastCursorPosition,lastCursorPosition),delete _0x1b11af['dataset']['selectionEnd'];}}function handleSecretFileImport(_0x5d0621){const _0x274121=_0x5d0621['target']['files'][0x0];if(!_0x274121)return;const _0x46b963=new FileReader();_0x46b963['onload']=function(_0xac6f7d){const _0x3f9e4b=_0xac6f7d['target']['result'];document['getElementById']('secret-value')['value']=_0x3f9e4b,secretValueStore=_0x3f9e4b,secretValueVisible=!![];const _0x535a9c=document['querySelector']('.secret-toggle-visibility');_0x535a9c&&(_0x535a9c['querySelector']('.eye-open')['style']['display']='none',_0x535a9c['querySelector']('.eye-closed')['style']['display']='block');},_0x46b963['onerror']=function(){Utils['showError']('Failed\x20to\x20read\x20file');},_0x46b963['readAsText'](_0x274121),_0x5d0621['target']['value']='';}async function saveSecret(){const _0x8ed8df=document['getElementById']('secret-name'),_0x100e3c=document['getElementById']('secret-description'),_0x4f125e=document['getElementById']('secret-type-file')['checked'],_0x1bcd26=document['getElementById']('secret-source'),_0x1ed7eb=document['getElementById']('secret-value'),_0x3601cf=document['getElementById']('secret-modal-error'),_0x221d7e=document['getElementById']('secret-available-build'),_0x4967de=document['getElementById']('secret-available-tasks'),_0x528c5c=document['getElementById']('secret-available-deploy'),_0x2260e5=document['getElementById']('secret-expose-file')['checked'],_0x31d6ac=document['getElementById']('secret-target'),_0xfbc3ff=_0x8ed8df['value']['trim'](),_0x1cab58=_0x100e3c['value']['trim'](),_0xc4423e=_0x4f125e?'file':'value',_0x52d97f=_0x1bcd26['value']['trim'](),_0x354dc2=secretValueStore,_0x344dc1=_0x2260e5?'file':'env_var',_0x2e51cf=_0x31d6ac['value']['trim'](),_0x1c4998=getGitRemoteValue(),_0x20343e=document['getElementById']('secret-git-pat-checkbox')['checked'],_0x2ee592=[];if(_0x221d7e['checked'])_0x2ee592['push']('build');if(_0x4967de['checked'])_0x2ee592['push']('tasks');if(_0x528c5c['checked'])_0x2ee592['push']('deploy');const _0x4e757a=_0x4967de['checked']||_0x528c5c['checked'];_0x3601cf['hidden']=!![];if(!_0xfbc3ff){_0x3601cf['textContent']='Secret\x20name\x20is\x20required',_0x3601cf['hidden']=![],_0x8ed8df['focus']();return;}if(!/^[A-Za-z_][A-Za-z0-9_]*$/['test'](_0xfbc3ff)){_0x3601cf['textContent']='Secret\x20name\x20must\x20start\x20with\x20a\x20letter\x20or\x20underscore,\x20and\x20contain\x20only\x20letters,\x20numbers,\x20and\x20underscores',_0x3601cf['hidden']=![],_0x8ed8df['focus']();return;}if(_0x4f125e&&!_0x52d97f){_0x3601cf['textContent']='File\x20path\x20is\x20required\x20for\x20file-type\x20secrets',_0x3601cf['hidden']=![],_0x1bcd26['focus']();return;}if(!_0x4f125e&&!_0x354dc2){_0x3601cf['textContent']='Value\x20is\x20required\x20for\x20value-type\x20secrets',_0x3601cf['hidden']=![],_0x1ed7eb['focus']();return;}if(_0x2ee592['length']===0x0){_0x3601cf['textContent']='At\x20least\x20one\x20availability\x20option\x20must\x20be\x20selected\x20(Build,\x20Tasks,\x20or\x20Deploy)',_0x3601cf['hidden']=![];return;}if(_0x4e757a&&!_0x20343e){if(!_0x2e51cf){_0x3601cf['textContent']=_0x344dc1==='env_var'?'Variable\x20name\x20is\x20required\x20when\x20available\x20for\x20Tasks\x20or\x20Deploy':'Container\x20path\x20is\x20required\x20when\x20available\x20for\x20Tasks\x20or\x20Deploy',_0x3601cf['hidden']=![],_0x31d6ac['focus']();return;}if(_0x344dc1==='env_var'&&!/^[A-Za-z_][A-Za-z0-9_]*$/['test'](_0x2e51cf)){_0x3601cf['textContent']='Variable\x20name\x20must\x20start\x20with\x20a\x20letter\x20or\x20underscore,\x20and\x20contain\x20only\x20letters,\x20numbers,\x20and\x20underscores',_0x3601cf['hidden']=![],_0x31d6ac['focus']();return;}if(_0x344dc1==='file'&&!_0x2e51cf['startsWith']('/')){_0x3601cf['textContent']='Container\x20path\x20must\x20be\x20an\x20absolute\x20path\x20(start\x20with\x20/)',_0x3601cf['hidden']=![],_0x31d6ac['focus']();return;}if(_0x344dc1==='file'&&!_0x4f125e){_0x3601cf['textContent']='Value-type\x20secrets\x20cannot\x20be\x20exposed\x20as\x20files.\x20Select\x20\x22File\x20on\x20host\x22\x20as\x20source\x20type\x20or\x20expose\x20as\x20\x22Environment\x20Variable\x22.',_0x3601cf['hidden']=![];return;}if(_0x344dc1==='env_var'&&_0x4f125e){_0x3601cf['textContent']='File-type\x20secrets\x20cannot\x20be\x20exposed\x20as\x20environment\x20variables.\x20Select\x20\x22Direct\x20value\x22\x20as\x20source\x20type\x20or\x20expose\x20as\x20\x22File\x20(bind\x20mount)\x22.',_0x3601cf['hidden']=![];return;}}if(_0x20343e){const _0x388049=document['getElementById']('secret-git-host'),_0xb9f949=document['getElementById']('secret-git-custom-host'),_0x44cc0b=_0x388049['value'];if(!_0x44cc0b){_0x3601cf['textContent']='Please\x20select\x20a\x20Git\x20host\x20for\x20the\x20PAT',_0x3601cf['hidden']=![],_0x388049['focus']();return;}if(_0x44cc0b==='custom'){const _0x3f5f51=_0xb9f949['value']['trim']();if(!_0x3f5f51){_0x3601cf['textContent']='Please\x20enter\x20a\x20custom\x20Git\x20hostname',_0x3601cf['hidden']=![],_0xb9f949['focus']();return;}if(!/^[a-zA-Z0-9]([a-zA-Z0-9\-\.]*[a-zA-Z0-9])?$/['test'](_0x3f5f51)){_0x3601cf['textContent']='Invalid\x20hostname\x20format.\x20Use\x20a\x20valid\x20hostname\x20like\x20\x22git.mycompany.com\x22',_0x3601cf['hidden']=![],_0xb9f949['focus']();return;}}}try{const _0x5c765a={'type':_0xc4423e,'description':_0x1cab58,'available_for':_0x2ee592,..._0x4e757a&&!_0x20343e?{'expose_as':_0x344dc1,'target':_0x2e51cf}:{},..._0x4f125e?{'source':_0x52d97f}:{},...!_0x4f125e&&_0x354dc2?{'value':_0x354dc2}:{},'git_remote':_0x1c4998};state['editingSecret']?(await API['put']('/environments/'+state['selectedEnv']+'/secrets/'+_0xfbc3ff,_0x5c765a),Utils['showSuccess']('Secret\x20\x22'+_0xfbc3ff+'\x22\x20updated')):(_0x5c765a['secretName']=_0xfbc3ff,await API['post']('/environments/'+state['selectedEnv']+'/secrets',_0x5c765a),Utils['showSuccess']('Secret\x20\x22'+_0xfbc3ff+'\x22\x20created')),closeSecretModal(),await loadSecrets(),renderSecrets();}catch(_0x58e863){_0x3601cf['textContent']=_0x58e863['message']||'Failed\x20to\x20save\x20secret',_0x3601cf['hidden']=![];}}window['openDeleteSecretModal']=function(_0x24423b){document['getElementById']('delete-secret-name')['textContent']=_0x24423b,document['getElementById']('delete-secret-modal')['hidden']=![],document['getElementById']('delete-secret-modal')['dataset']['secretName']=_0x24423b;};function closeDeleteSecretModal(){document['getElementById']('delete-secret-modal')['hidden']=!![];}async function confirmDeleteSecret(){const _0xd962f8=document['getElementById']('delete-secret-modal')['dataset']['secretName'];try{await API['delete']('/environments/'+state['selectedEnv']+'/secrets/'+_0xd962f8),Utils['showSuccess']('Secret\x20\x22'+_0xd962f8+'\x22\x20deleted'),closeDeleteSecretModal(),await loadSecrets(),renderSecrets();}catch(_0x392341){Utils['showError'](_0x392341['message']||'Failed\x20to\x20delete\x20secret'),closeDeleteSecretModal();}}function loadConnections(){if(!state['selectedEnvData'])return;!state['selectedEnvData']['external_connections']&&(state['selectedEnvData']['external_connections']=[]);}function renderConnections(){const _0x2167ef=document['getElementById']('connections-list'),_0x257f2a=document['getElementById']('connections-empty');if(!_0x2167ef||!_0x257f2a)return;const _0xdab626=state['selectedEnvData']?.['external_connections']||[];if(_0xdab626['length']===0x0){_0x2167ef['innerHTML']='',_0x2167ef['hidden']=!![],_0x257f2a['hidden']=![];return;}_0x2167ef['hidden']=![],_0x257f2a['hidden']=!![],_0x2167ef['innerHTML']=_0xdab626['map'](_0x284e72=>{const _0x1abef3={'sqlserver':'SQL\x20Server','ibmi':'IBM\x20i','ssh':'SSH'},_0x5994c6=_0x1abef3[_0x284e72['type']]||_0x284e72['type'],_0x2af1be=_0x284e72['type']==='ibmi'?_0x284e72['config']?.['features']||[]:[],_0xecf511=_0x2af1be['map'](_0x279587=>'<span\x20class=\x22connection-feature-tag\x22>'+Utils['escapeHtml'](_0x279587)+'</span>')['join'](''),_0x37f629=_0x284e72['available_for']||[],_0x412480='\x0a\x20\x20\x20\x20\x20\x20<span\x20class=\x22secret-availability-badges\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x37f629['includes']('tasks')?'<span\x20class=\x22availability-badge\x20tasks\x22>Tasks</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x37f629['includes']('deploy')?'<span\x20class=\x22availability-badge\x20deploy\x22>Deploy</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20</span>';return'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22connection-item\x22\x20data-connection-id=\x22'+Utils['escapeHtml'](_0x284e72['id'])+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22connection-info\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22connection-name\x22>'+Utils['escapeHtml'](_0x284e72['name'])+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22connection-meta\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x412480+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22connection-type-badge\x20'+_0x284e72['type']+'\x22>'+_0x5994c6+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0xecf511+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x284e72['description']?'<span\x20class=\x22connection-description\x22>'+Utils['escapeHtml'](_0x284e72['description'])+'</span>':'')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22connection-host\x22>'+Utils['escapeHtml'](_0x284e72['config']?.['host']||'')+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22connection-actions\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22connection-edit\x22\x20title=\x22Edit\x20connection\x22\x20onclick=\x22openEditConnectionModal(\x27'+Utils['escapeHtml'](_0x284e72['id'])+'\x27)\x22>✏️</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22connection-delete\x22\x20title=\x22Delete\x20connection\x22\x20onclick=\x22openDeleteConnectionModal(\x27'+Utils['escapeHtml'](_0x284e72['id'])+'\x27)\x22>🗑</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>';})['join']('');}function openAddConnectionModal(){state['editingConnection']=null,document['getElementById']('connection-modal-title')['textContent']='Add\x20Connection',document['getElementById']('connection-name')['value']='',document['getElementById']('connection-description')['value']='',document['getElementById']('connection-host')['value']='',document['getElementById']('connection-verify-cert')['checked']=!![],document['getElementById']('connection-verify-cert-warning')['hidden']=!![],document['getElementById']('connection-database')['value']='',document['getElementById']('connection-user')['value']='',document['getElementById']('connection-password')['value']='',document['getElementById']('connection-password')['type']='password',resetPasswordToggleIcon(),resetSshKeyVisibility(''),document['getElementById']('connection-ssh-public-key')['value']='',document['getElementById']('connection-pui-base-url')['value']='',document['getElementById']('connection-pui-render-path')['value']='',document['getElementById']('connection-pui-launch-path')['value']='',document['getElementById']('connection-build-library-prefix')['value']='AITSK',document['getElementById']('connection-build-repo')['value']='',document['getElementById']('connection-build-path')['value']='',document['querySelectorAll']('input[name=\x22connection-type\x22]')['forEach'](_0x407911=>_0x407911['disabled']=![]),document['getElementById']('connection-type-sqlserver')['checked']=!![],document['getElementById']('feature-sql')['checked']=!![],document['getElementById']('feature-build')['checked']=![],document['getElementById']('feature-interactive')['checked']=![],document['getElementById']('feature-ssh')['checked']=![],document['getElementById']('feature-ssh')['disabled']=![],document['getElementById']('feature-sync')['checked']=![],document['getElementById']('connection-available-tasks')['checked']=!![],document['getElementById']('connection-available-deploy')['checked']=![];const _0x3d7545=document['getElementById']('connection-modal-error');_0x3d7545['hidden']=!![],_0x3d7545['textContent']='',clearConnectionTestResult(),updateConnectionFormVisibility(),document['getElementById']('connection-modal')['hidden']=![];}window['openEditConnectionModal']=function(_0x31c5ae){const _0x52a278=state['selectedEnvData']?.['external_connections']||[],_0x300b5c=_0x52a278['find'](_0xbec69b=>_0xbec69b['id']===_0x31c5ae);if(!_0x300b5c)return;state['editingConnection']=_0x31c5ae,document['getElementById']('connection-modal-title')['textContent']='Edit\x20Connection',document['getElementById']('connection-name')['value']=_0x300b5c['name']||'',document['getElementById']('connection-description')['value']=_0x300b5c['description']||'',document['getElementById']('connection-host')['value']=_0x300b5c['config']?.['host']||'';const _0x1e0857=_0x300b5c['config']?.['verify_db_server_certificate']!==![];document['getElementById']('connection-verify-cert')['checked']=_0x1e0857,document['getElementById']('connection-verify-cert-warning')['hidden']=_0x1e0857,document['getElementById']('connection-database')['value']=_0x300b5c['config']?.['database']||'',document['getElementById']('connection-user')['value']=_0x300b5c['config']?.['user']||'',document['getElementById']('connection-password')['value']=_0x300b5c['password']||'',document['getElementById']('connection-password')['type']='password',resetPasswordToggleIcon(),resetSshKeyVisibility(_0x300b5c['ssh_private_key']||''),document['getElementById']('connection-ssh-public-key')['value']=_0x300b5c['ssh_public_key']||'',document['getElementById']('connection-pui-base-url')['value']=_0x300b5c['config']?.['pui_base_url']||'',document['getElementById']('connection-pui-render-path')['value']=_0x300b5c['config']?.['pui_render_path']||'',document['getElementById']('connection-pui-launch-path')['value']=_0x300b5c['config']?.['pui_launch_path']||'',document['getElementById']('connection-build-library-prefix')['value']=_0x300b5c['config']?.['build_library_prefix']||'AITSK',populateBuildRepoSelect(_0x300b5c['config']?.['build_repo']||''),document['getElementById']('connection-build-path')['value']=_0x300b5c['config']?.['build_path']||'',document['querySelectorAll']('input[name=\x22connection-type\x22]')['forEach'](_0x595f27=>{_0x595f27['disabled']=!![],_0x595f27['checked']=_0x595f27['value']===_0x300b5c['type'];});if(_0x300b5c['type']==='ibmi'){const _0x14a320=_0x300b5c['config']?.['features']||[];document['getElementById']('feature-sql')['checked']=_0x14a320['includes']('sql'),document['getElementById']('feature-build')['checked']=_0x14a320['includes']('build'),document['getElementById']('feature-interactive')['checked']=_0x14a320['includes']('interactive'),document['getElementById']('feature-ssh')['checked']=_0x14a320['includes']('ssh'),document['getElementById']('feature-sync')['checked']=_0x14a320['includes']('sync'),_0x14a320['includes']('sync')?document['getElementById']('feature-ssh')['disabled']=!![]:document['getElementById']('feature-ssh')['disabled']=![];}else document['getElementById']('feature-sql')['checked']=!![],document['getElementById']('feature-build')['checked']=![],document['getElementById']('feature-interactive')['checked']=![],document['getElementById']('feature-ssh')['checked']=![],document['getElementById']('feature-ssh')['disabled']=![],document['getElementById']('feature-sync')['checked']=![];const _0x156cf7=_0x300b5c['available_for']||[];document['getElementById']('connection-available-tasks')['checked']=_0x156cf7['includes']('tasks'),document['getElementById']('connection-available-deploy')['checked']=_0x156cf7['includes']('deploy');const _0x3df16e=document['getElementById']('connection-modal-error');_0x3df16e['hidden']=!![],_0x3df16e['textContent']='',clearConnectionTestResult(),updateConnectionFormVisibility(),document['getElementById']('connection-modal')['hidden']=![];};function isFullyQualifiedHostname(_0x4fece4){if(!_0x4fece4||typeof _0x4fece4!=='string')return![];return/^[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?)+$/['test'](_0x4fece4);}function syncHostToPuiBaseUrl(){const _0x142301=document['querySelector']('input[name=\x22connection-type\x22]:checked')?.['value'];if(_0x142301!=='ibmi')return;if(!document['getElementById']('feature-interactive')['checked'])return;const _0x2312c8=document['getElementById']('connection-host')['value']['trim'](),_0xcda7e7=document['getElementById']('connection-pui-base-url'),_0x37bc8b=_0xcda7e7['value']['trim']();if(!_0x2312c8)return;if(!_0x37bc8b)_0xcda7e7['value']='https://'+_0x2312c8;else try{const _0x3ff11f=new URL(_0x37bc8b);_0x3ff11f['hostname']=_0x2312c8,_0xcda7e7['value']=_0x3ff11f['origin'];}catch{}}function syncPuiBaseUrlToHost(){const _0x45d9a3=document['querySelector']('input[name=\x22connection-type\x22]:checked')?.['value'];if(_0x45d9a3!=='ibmi')return;const _0x3fd39d=document['getElementById']('connection-pui-base-url')['value']['trim']();if(!_0x3fd39d)return;try{const _0x19697e=new URL(_0x3fd39d),_0xde0582=_0x19697e['hostname'];_0xde0582&&(document['getElementById']('connection-host')['value']=_0xde0582);}catch{}}function populateBuildRepoSelect(_0x4faffc){const _0x46e80e=document['getElementById']('connection-build-repo'),_0x2b09a4=state['selectedEnvData']?.['repos']||[];_0x46e80e['innerHTML']='<option\x20value=\x22\x22>—\x20Select\x20a\x20repo\x20—</option>'+_0x2b09a4['map'](_0x5657ee=>'<option\x20value=\x22'+Utils['escapeHtml'](_0x5657ee['name'])+'\x22'+(_0x5657ee['name']===_0x4faffc?'\x20selected':'')+'>'+Utils['escapeHtml'](_0x5657ee['name'])+'</option>')['join']('');}function updateConnectionFormVisibility(){const _0x539f96=document['querySelector']('input[name=\x22connection-type\x22]:checked')?.['value']||'sqlserver',_0x529983=_0x539f96==='ibmi',_0x4f78da=_0x539f96==='ssh',_0x5739a5=_0x539f96==='sqlserver',_0x6fef8e=document['getElementById']('feature-sql')['checked'],_0x20419b=document['getElementById']('feature-build')['checked'],_0x499a85=document['getElementById']('feature-interactive')['checked'],_0x21ccf1=document['getElementById']('feature-ssh')['checked'],_0x2d7888=document['getElementById']('feature-sync')['checked'],_0x964e0d=document['getElementById']('connection-available-tasks')['checked'];document['getElementById']('connection-database-row')['hidden']=!_0x5739a5;const _0x43dd2e=_0x5739a5||_0x529983&&_0x6fef8e;document['getElementById']('connection-verify-cert-row')['hidden']=!_0x43dd2e,document['getElementById']('connection-features-row')['hidden']=!_0x529983,document['getElementById']('connection-pui-settings')['hidden']=!(_0x529983&&_0x499a85),document['getElementById']('connection-ssh-settings')['hidden']=!(_0x4f78da||_0x529983&&(_0x21ccf1||_0x20419b)),document['getElementById']('connection-password-row')['hidden']=!(_0x5739a5||_0x529983&&(_0x6fef8e||_0x499a85));const _0x504502=document['getElementById']('connection-build-repo-row'),_0xea6579=document['getElementById']('connection-build-path-row'),_0x397413=_0x529983&&_0x20419b;_0x504502['hidden']=!_0x397413,_0xea6579['hidden']=!_0x397413;_0x397413&&populateBuildRepoSelect(document['getElementById']('connection-build-repo')['value']);const _0x1274cd=document['getElementById']('connection-build-library-prefix-row'),_0x55a6b9=_0x529983&&_0x20419b&&_0x964e0d;_0x1274cd['hidden']=!_0x55a6b9;!_0x55a6b9&&(document['getElementById']('connection-build-library-prefix')['value']=document['getElementById']('connection-build-library-prefix')['value']||'AITSK');document['getElementById']('connection-ibmi-helper-row')['hidden']=!_0x529983;const _0x4dcf65=_0x5739a5||_0x529983&&_0x6fef8e,_0x161e5a=_0x529983&&(_0x21ccf1||_0x20419b||_0x2d7888)||_0x4f78da;document['getElementById']('connection-test-row')['hidden']=!(_0x4dcf65||_0x161e5a),document['getElementById']('connection-test-sql-btn')['hidden']=!_0x4dcf65,document['getElementById']('connection-test-ssh-btn')['hidden']=!_0x161e5a;const _0x45f3d0=document['getElementById']('connection-ssh-public-key')['value'];document['getElementById']('connection-install-key-row')['hidden']=!(_0x45f3d0&&_0x45f3d0!=='***');}function closeConnectionModal(){document['getElementById']('connection-modal')['hidden']=!![],state['editingConnection']=null;}function validateConnectionFrontend(_0x506114,_0x342188=[],_0x4841bc=null){const _0x4915e2=[],_0x125ac5=['sqlserver','ibmi','ssh'],_0x2b950e=['tasks','deploy'],_0x142317=['sql','build','interactive','ssh','sync'],_0x575a32=['build','interactive'],_0x30b384={'sync':['ssh']},_0x44e004=['sql','interactive'],_0x31e947=['build','ssh','sync'],_0x4d6925=/^[A-Z@#$][A-Z@#$0-9_.]{0,4}$/;if(!_0x506114['name']||typeof _0x506114['name']!=='string')_0x4915e2['push']('Connection\x20name\x20is\x20required');else{if(!/^[a-zA-Z0-9_-]+$/['test'](_0x506114['name']))_0x4915e2['push']('Connection\x20name\x20must\x20contain\x20only\x20letters,\x20numbers,\x20hyphens,\x20and\x20underscores');else{const _0x11c6e2=_0x506114['name']['toLowerCase'](),_0x17f24a=_0x342188['find'](_0x1bc85e=>_0x1bc85e['id']!==_0x4841bc&&_0x1bc85e['name']['toLowerCase']()===_0x11c6e2);_0x17f24a&&_0x4915e2['push']('Connection\x20name\x20\x22'+_0x506114['name']+'\x22\x20is\x20already\x20in\x20use');}}if(!Array['isArray'](_0x506114['available_for'])||_0x506114['available_for']['length']===0x0)_0x4915e2['push']('At\x20least\x20one\x20availability\x20scope\x20is\x20required\x20(tasks,\x20deploy)');else _0x506114['available_for']['some'](_0x37d898=>!_0x2b950e['includes'](_0x37d898))&&_0x4915e2['push']('Available\x20scopes\x20must\x20be:\x20'+_0x2b950e['join'](',\x20'));(!_0x506114['type']||!_0x125ac5['includes'](_0x506114['type']))&&_0x4915e2['push']('Connection\x20type\x20must\x20be\x20one\x20of:\x20'+_0x125ac5['join'](',\x20'));if(_0x506114['type']==='sqlserver'){if(!_0x506114['config']?.['host'])_0x4915e2['push']('Host\x20is\x20required\x20for\x20SQL\x20Server');else!isFullyQualifiedHostname(_0x506114['config']['host'])&&_0x4915e2['push']('Host\x20must\x20be\x20a\x20fully\x20qualified\x20hostname\x20(e.g.\x20myserver.mycompany.com)');if(!_0x506114['config']?.['database'])_0x4915e2['push']('Database\x20is\x20required\x20for\x20SQL\x20Server');if(!_0x506114['config']?.['user'])_0x4915e2['push']('User\x20is\x20required\x20for\x20SQL\x20Server');if(!_0x506114['password'])_0x4915e2['push']('Password\x20is\x20required\x20for\x20SQL\x20Server');}else{if(_0x506114['type']==='ibmi'){if(!_0x506114['config']?.['host'])_0x4915e2['push']('Host\x20is\x20required\x20for\x20IBM\x20i');else!isFullyQualifiedHostname(_0x506114['config']['host'])&&_0x4915e2['push']('Host\x20must\x20be\x20a\x20fully\x20qualified\x20hostname\x20(e.g.\x20myserver.mycompany.com)');if(!_0x506114['config']?.['user'])_0x4915e2['push']('User\x20is\x20required\x20for\x20IBM\x20i');const _0x3719fd=_0x506114['config']?.['features']||[];_0x3719fd['some'](_0x1bdbd0=>_0x44e004['includes'](_0x1bdbd0))&&!_0x506114['password']&&_0x4915e2['push']('Password\x20is\x20required\x20for\x20IBM\x20i\x20SQL\x20and\x20Interactive\x20features');if(!Array['isArray'](_0x3719fd)||_0x3719fd['length']===0x0)_0x4915e2['push']('At\x20least\x20one\x20IBM\x20i\x20feature\x20is\x20required');else{const _0x2f36a3=_0x3719fd['filter'](_0x203363=>!_0x142317['includes'](_0x203363));_0x2f36a3['length']>0x0&&_0x4915e2['push']('Invalid\x20IBM\x20i\x20features:\x20'+_0x2f36a3['join'](',\x20'));for(const [_0x3e6aff,_0x5ea918]of Object['entries'](_0x30b384)){if(_0x3719fd['includes'](_0x3e6aff))for(const _0x3bd263 of _0x5ea918){!_0x3719fd['includes'](_0x3bd263)&&_0x4915e2['push']('IBM\x20i\x20feature\x20\x22'+_0x3e6aff+'\x22\x20requires\x20\x22'+_0x3bd263+'\x22');}}if(_0x3719fd['includes']('build')){!_0x506114['config']?.['build_repo']&&_0x4915e2['push']('Build\x20repo\x20is\x20required\x20when\x20Build\x20feature\x20is\x20selected');const _0x34066d=_0x506114['config']?.['build_path'];if(_0x34066d){const _0x33fb24=_0x34066d['split']('/');_0x33fb24['some'](_0x5539d7=>_0x5539d7==='.'||_0x5539d7==='..')&&_0x4915e2['push']('Build\x20directory\x20must\x20not\x20contain\x20\x22.\x22\x20or\x20\x22..\x22\x20segments');}}if(_0x3719fd['includes']('build')&&_0x506114['available_for']?.['includes']('tasks')){const _0x3819c7=_0x506114['config']?.['build_library_prefix'];if(!_0x3819c7)_0x4915e2['push']('Build\x20library\x20prefix\x20is\x20required\x20when\x20Build\x20feature\x20is\x20used\x20with\x20Tasks\x20scope');else!_0x4d6925['test'](_0x3819c7)&&_0x4915e2['push']('Build\x20library\x20prefix\x20must\x20be\x201-5\x20characters:\x20first\x20character\x20A-Z,\x20@,\x20#,\x20or\x20$;\x20remaining\x20characters\x20A-Z,\x20@,\x20#,\x20$,\x200-9,\x20_,\x20or\x20.');}_0x3719fd['some'](_0x3ee5b6=>_0x31e947['includes'](_0x3ee5b6))&&!_0x506114['ssh_private_key']&&_0x4915e2['push']('SSH\x20private\x20key\x20is\x20required\x20for\x20this\x20connection\x20type');_0x3719fd['includes']('interactive')&&!(_0x506114['available_for']||[])['includes']('tasks')&&_0x4915e2['push']('Interactive\x20feature\x20requires\x20Tasks\x20availability\x20scope');if(_0x3719fd['includes']('interactive')){if(!_0x506114['config']?.['pui_base_url'])_0x4915e2['push']('PUI\x20Base\x20URL\x20is\x20required\x20when\x20Interactive\x20feature\x20is\x20selected');else{if(_0x506114['config']?.['host'])try{const _0x50bd66=new URL(_0x506114['config']['pui_base_url'])['hostname'];_0x50bd66&&_0x50bd66!==_0x506114['config']['host']&&_0x4915e2['push']('PUI\x20Base\x20URL\x20hostname\x20\x22'+_0x50bd66+'\x22\x20must\x20match\x20the\x20connection\x20host\x20\x22'+_0x506114['config']['host']+'\x22');}catch{_0x4915e2['push']('PUI\x20Base\x20URL\x20must\x20be\x20a\x20valid\x20URL\x20(e.g.\x20https://myibmi.mycompany.com:8080)');}}}const _0x3e5c10=_0x3719fd['some'](_0x3d5288=>_0x575a32['includes'](_0x3d5288));if(_0x3e5c10&&Array['isArray'](_0x506114['available_for'])){const _0x440ea0=_0x342188['filter'](_0x1eaecc=>_0x1eaecc['id']!==_0x4841bc&&_0x1eaecc['type']==='ibmi'&&(_0x1eaecc['config']?.['features']||[])['some'](_0x335ee4=>_0x575a32['includes'](_0x335ee4)));for(const _0x59d2bb of _0x440ea0){const _0x1c131f=_0x506114['available_for']['filter'](_0x4c4a2f=>(_0x59d2bb['available_for']||[])['includes'](_0x4c4a2f));if(_0x1c131f['length']>0x0){_0x4915e2['push']('Only\x20one\x20IBM\x20i\x20connection\x20with\x20build/interactive\x20features\x20is\x20allowed\x20per\x20scope.\x20'+('Connection\x20\x22'+_0x59d2bb['name']+'\x22\x20already\x20has\x20build/interactive\x20in\x20scope:\x20'+_0x1c131f['join'](',\x20')));break;}}}}}else{if(_0x506114['type']==='ssh'){if(!_0x506114['config']?.['host'])_0x4915e2['push']('Host\x20is\x20required\x20for\x20SSH');else!isFullyQualifiedHostname(_0x506114['config']['host'])&&_0x4915e2['push']('Host\x20must\x20be\x20a\x20fully\x20qualified\x20hostname\x20(e.g.\x20myserver.mycompany.com)');if(!_0x506114['config']?.['user'])_0x4915e2['push']('User\x20is\x20required\x20for\x20SSH');!_0x506114['ssh_private_key']&&_0x4915e2['push']('SSH\x20private\x20key\x20is\x20required\x20for\x20SSH\x20connections');}}}return{'valid':_0x4915e2['length']===0x0,'errors':_0x4915e2};}async function saveConnection(){const _0x5e803a=document['getElementById']('connection-modal-error');_0x5e803a['hidden']=!![];const _0x330666=document['querySelector']('input[name=\x22connection-type\x22]:checked')?.['value'],_0x1ff891=document['getElementById']('connection-name')['value']['trim'](),_0x391dd2=document['getElementById']('connection-description')['value']['trim'](),_0x1d9771=document['getElementById']('connection-host')['value']['trim'](),_0x1677f5=document['getElementById']('connection-user')['value']['trim'](),_0x371b32=[];if(document['getElementById']('connection-available-tasks')['checked'])_0x371b32['push']('tasks');if(document['getElementById']('connection-available-deploy')['checked'])_0x371b32['push']('deploy');const _0x1b27b4={'host':_0x1d9771,'user':_0x1677f5};if(_0x330666==='sqlserver')_0x1b27b4['database']=document['getElementById']('connection-database')['value']['trim'](),!document['getElementById']('connection-verify-cert')['checked']&&(_0x1b27b4['verify_db_server_certificate']=![]);else{if(_0x330666==='ibmi'){const _0x31d94b=[];if(document['getElementById']('feature-sql')['checked'])_0x31d94b['push']('sql');if(document['getElementById']('feature-build')['checked'])_0x31d94b['push']('build');if(document['getElementById']('feature-interactive')['checked'])_0x31d94b['push']('interactive');if(document['getElementById']('feature-ssh')['checked']||document['getElementById']('feature-ssh')['disabled'])_0x31d94b['push']('ssh');if(document['getElementById']('feature-sync')['checked'])_0x31d94b['push']('sync');_0x1b27b4['features']=_0x31d94b;_0x31d94b['includes']('sql')&&!document['getElementById']('connection-verify-cert')['checked']&&(_0x1b27b4['verify_db_server_certificate']=![]);if(_0x31d94b['includes']('interactive')){_0x1b27b4['pui_base_url']=document['getElementById']('connection-pui-base-url')['value']['trim']();const _0x52c36b=document['getElementById']('connection-pui-render-path')['value']['trim'](),_0x5d4794=document['getElementById']('connection-pui-launch-path')['value']['trim']();if(_0x52c36b)_0x1b27b4['pui_render_path']=_0x52c36b;if(_0x5d4794)_0x1b27b4['pui_launch_path']=_0x5d4794;}if(_0x31d94b['includes']('build')){const _0x59b268=document['getElementById']('connection-build-repo')['value'];if(!_0x59b268){_0x5e803a['textContent']='Build\x20repo\x20is\x20required\x20when\x20Build\x20feature\x20is\x20selected',_0x5e803a['hidden']=![];return;}_0x1b27b4['build_repo']=_0x59b268;let _0x45286c=document['getElementById']('connection-build-path')['value']['trim']();_0x45286c=_0x45286c['replace'](/^\/+/,'');if(_0x45286c){const _0x20c305=_0x45286c['split']('/');if(_0x20c305['some'](_0xc2d22e=>_0xc2d22e==='.'||_0xc2d22e==='..')){_0x5e803a['textContent']='Build\x20directory\x20must\x20not\x20contain\x20\x22.\x22\x20or\x20\x22..\x22\x20segments',_0x5e803a['hidden']=![];return;}_0x1b27b4['build_path']=_0x45286c;}}if(_0x31d94b['includes']('build')&&_0x371b32['includes']('tasks')){let _0x5f57a3=document['getElementById']('connection-build-library-prefix')['value']['trim']()['toUpperCase']();document['getElementById']('connection-build-library-prefix')['value']=_0x5f57a3;if(!_0x5f57a3){_0x5e803a['textContent']='Build\x20library\x20prefix\x20is\x20required',_0x5e803a['hidden']=![];return;}if(!/^[A-Z@#$][A-Z@#$0-9_.]{0,4}$/['test'](_0x5f57a3)){_0x5e803a['textContent']='Build\x20library\x20prefix\x20must\x20be\x201-5\x20characters:\x20first\x20character\x20A-Z,\x20@,\x20#,\x20$;\x20remaining\x20A-Z,\x20@,\x20#,\x20$,\x200-9,\x20_,\x20.',_0x5e803a['hidden']=![];return;}_0x1b27b4['build_library_prefix']=_0x5f57a3;}}}const _0x40a478={'name':_0x1ff891,'type':_0x330666,'description':_0x391dd2,'available_for':_0x371b32,'config':_0x1b27b4};state['editingConnection']?_0x40a478['id']=state['editingConnection']:_0x40a478['id']=crypto['randomUUID']();const _0x1567ac=document['getElementById']('connection-password')['value'];if(_0x1567ac)_0x40a478['password']=_0x1567ac;if(sshKeyValueStore)_0x40a478['ssh_private_key']=sshKeyValueStore;const _0x20ceae=document['getElementById']('connection-ssh-public-key')['value'];if(_0x20ceae)_0x40a478['ssh_public_key']=_0x20ceae;const _0x3b619c=state['selectedEnvData']?.['external_connections']||[],_0x3bb48b=validateConnectionFrontend(_0x40a478,_0x3b619c,state['editingConnection']);if(!_0x3bb48b['valid']){_0x5e803a['textContent']=_0x3bb48b['errors'][0x0],_0x5e803a['hidden']=![];return;}if(state['editingConnection']){const _0x3cec1e=_0x3b619c['findIndex'](_0x4f217c=>_0x4f217c['id']===state['editingConnection']);_0x3cec1e>=0x0&&(_0x3b619c[_0x3cec1e]=_0x40a478);}else _0x3b619c['push'](_0x40a478);state['selectedEnvData']['external_connections']=_0x3b619c,Utils['showSuccess']('Connection\x20\x22'+_0x1ff891+'\x22\x20'+(state['editingConnection']?'updated':'added')+'\x20(click\x20Save\x20to\x20persist\x20changes)'),closeConnectionModal(),renderConnections(),markAsModified();const _0x1c0d89=getRequiredSkillsForConnection(_0x40a478);_0x1c0d89['length']>0x0&&await autoImportConnectionSkills(_0x1c0d89);}window['openDeleteConnectionModal']=function(_0x4b3cd8){const _0x3da1ce=state['selectedEnvData']?.['external_connections']||[],_0x41d19e=_0x3da1ce['find'](_0x121295=>_0x121295['id']===_0x4b3cd8);if(!_0x41d19e)return;document['getElementById']('delete-connection-name')['textContent']=_0x41d19e['name']+'\x20('+_0x41d19e['type']+')',document['getElementById']('delete-connection-modal')['dataset']['connectionId']=_0x4b3cd8,document['getElementById']('delete-connection-modal')['hidden']=![];};function closeDeleteConnectionModal(){document['getElementById']('delete-connection-modal')['hidden']=!![];}function confirmDeleteConnection(){const _0x300416=document['getElementById']('delete-connection-modal')['dataset']['connectionId'],_0xdaded9=state['selectedEnvData']?.['external_connections']||[];state['selectedEnvData']['external_connections']=_0xdaded9['filter'](_0x3119b8=>_0x3119b8['id']!==_0x300416),Utils['showSuccess']('Connection\x20removed\x20(click\x20Save\x20to\x20persist\x20changes)'),closeDeleteConnectionModal(),renderConnections(),markAsModified();}function openIbmiHelperDialog(){const _0x52ab17=document['getElementById']('connection-user')['value']['trim']()||'{USER}',_0x31eac8=_0x52ab17['toUpperCase'](),_0x5b034d=_0x52ab17['toLowerCase'](),_0xb2e428=document['getElementById']('connection-password')['value'],_0x5459d7=_0xb2e428&&_0xb2e428!=='***'?_0xb2e428:'',_0x566d1a=['CRTUSRPRF\x20USRPRF('+_0x31eac8+')\x20PASSWORD('+_0x5459d7+')\x20USRCLS(*USER)\x20INLMNU(*SIGNOFF)\x20LMTCPB(*YES)\x20TEXT(\x27CoderFlow\x20service\x20account\x27)\x20SPCAUT(*NONE)\x20JOBD(JOB_DESCRIPTION)','CRTDIR\x20DIR(\x27/home/'+_0x5b034d+'\x27)','CHGOWN\x20OBJ(\x27/home/'+_0x5b034d+'\x27)\x20NEWOWN('+_0x31eac8+')','QSH\x20CMD(\x27chmod\x20755\x20/home/'+_0x5b034d+'\x27)'],_0x537a48=document['getElementById']('ibmi-helper-commands');_0x537a48['innerHTML']='',_0x566d1a['forEach'](_0x4bad05=>{const _0x26faf3=document['createElement']('div');_0x26faf3['className']='command-line';const _0x39d783=document['createElement']('code');_0x39d783['textContent']=_0x4bad05;const _0x109d5a=document['createElement']('button');_0x109d5a['type']='button',_0x109d5a['className']='btn-icon\x20copy-btn',_0x109d5a['title']='Copy',_0x109d5a['innerHTML']='<svg\x20width=\x2214\x22\x20height=\x2214\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22><rect\x20x=\x229\x22\x20y=\x229\x22\x20width=\x2213\x22\x20height=\x2213\x22\x20rx=\x222\x22/><path\x20d=\x22M5\x2015H4a2\x202\x200\x2001-2-2V4a2\x202\x200\x20012-2h9a2\x202\x200\x20012\x202v1\x22/></svg>',_0x109d5a['addEventListener']('click',()=>{navigator['clipboard']['writeText'](_0x4bad05)['then'](()=>{_0x109d5a['innerHTML']='<svg\x20width=\x2214\x22\x20height=\x2214\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22><path\x20d=\x22M20\x206L9\x2017l-5-5\x22/></svg>',setTimeout(()=>{_0x109d5a['innerHTML']='<svg\x20width=\x2214\x22\x20height=\x2214\x22\x20viewBox=\x220\x200\x2024\x2024\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22><rect\x20x=\x229\x22\x20y=\x229\x22\x20width=\x2213\x22\x20height=\x2213\x22\x20rx=\x222\x22/><path\x20d=\x22M5\x2015H4a2\x202\x200\x2001-2-2V4a2\x202\x200\x20012-2h9a2\x202\x200\x20012\x202v1\x22/></svg>';},0x5dc);});}),_0x26faf3['appendChild'](_0x39d783),_0x26faf3['appendChild'](_0x109d5a),_0x537a48['appendChild'](_0x26faf3);}),document['getElementById']('ibmi-helper-modal')['hidden']=![];}function resetPasswordToggleIcon(){const _0x5ec733=document['getElementById']('connection-password-toggle');_0x5ec733['querySelector']('.eye-open')['style']['display']='',_0x5ec733['querySelector']('.eye-closed')['style']['display']='none';}function toggleConnectionPasswordVisibility(){const _0x43c688=document['getElementById']('connection-password'),_0x120fd6=document['getElementById']('connection-password-toggle'),_0x39d61e=_0x43c688['type']==='password';_0x43c688['type']=_0x39d61e?'text':'password',_0x120fd6['querySelector']('.eye-open')['style']['display']=_0x39d61e?'none':'',_0x120fd6['querySelector']('.eye-closed')['style']['display']=_0x39d61e?'':'none';}function resetSshKeyVisibility(_0x4e576d){sshKeyValueStore=_0x4e576d,sshKeyValueVisible=![],sshKeyLastCursorPosition=0x0;const _0x14f271=document['getElementById']('connection-ssh-private-key'),_0x5d3734=document['querySelector']('.connection-ssh-key-toggle');_0x14f271&&(_0x14f271['value']=_0x4e576d?'•'['repeat'](_0x4e576d['length']):''),_0x5d3734&&(_0x5d3734['hidden']=![],_0x5d3734['querySelector']('.eye-open')['style']['display']='block',_0x5d3734['querySelector']('.eye-closed')['style']['display']='none');}function toggleSshKeyVisibility(){const _0x1e32a5=document['getElementById']('connection-ssh-private-key'),_0x5480bd=document['querySelector']('.connection-ssh-key-toggle');sshKeyValueVisible=!sshKeyValueVisible,sshKeyValueVisible?(_0x1e32a5['value']=sshKeyValueStore,_0x5480bd['querySelector']('.eye-open')['style']['display']='none',_0x5480bd['querySelector']('.eye-closed')['style']['display']='block'):(_0x1e32a5['value']=sshKeyValueStore?'•'['repeat'](sshKeyValueStore['length']):'',_0x5480bd['querySelector']('.eye-open')['style']['display']='block',_0x5480bd['querySelector']('.eye-closed')['style']['display']='none');}function handleSshKeyBeforeInput(_0xa7c641){if(!sshKeyValueVisible){const _0x5be662=_0xa7c641['target'];sshKeyLastCursorPosition=_0x5be662['selectionStart'],_0x5be662['dataset']['selectionEnd']=_0x5be662['selectionEnd'];}}function handleSshKeyInput(_0x27b8d9){const _0x2ae37e=_0x27b8d9['target'];if(sshKeyValueVisible)sshKeyValueStore=_0x2ae37e['value'];else{const _0x7753ef=_0x27b8d9['inputType'],_0x45cdd7=_0x2ae37e['value'],_0x1c73b1='•',_0x33d194=_0x2ae37e['selectionStart'],_0x212f2a=_0x45cdd7['replace'](new RegExp(_0x1c73b1,'g'),''),_0x175a75=sshKeyValueStore['length'],_0x52811d=sshKeyLastCursorPosition,_0x496c48=parseInt(_0x2ae37e['dataset']['selectionEnd']||_0x52811d),_0x1d64b9=_0x496c48>_0x52811d;if(_0x45cdd7==='')sshKeyValueStore='',sshKeyLastCursorPosition=0x0;else{if(_0x7753ef&&_0x7753ef['startsWith']('delete')){if(_0x1d64b9)sshKeyValueStore=sshKeyValueStore['slice'](0x0,_0x52811d)+sshKeyValueStore['slice'](_0x496c48),sshKeyLastCursorPosition=_0x52811d;else{const _0x40df39=_0x175a75-_0x45cdd7['length'];_0x7753ef==='deleteContentBackward'?sshKeyValueStore=sshKeyValueStore['slice'](0x0,_0x33d194)+sshKeyValueStore['slice'](_0x33d194+_0x40df39):sshKeyValueStore=sshKeyValueStore['slice'](0x0,_0x33d194)+sshKeyValueStore['slice'](_0x33d194+_0x40df39),sshKeyLastCursorPosition=_0x33d194;}}else{if(_0x212f2a['length']>0x0){const _0x2b3943=_0x45cdd7['length']-_0x212f2a['length'];if(_0x2b3943===0x0)sshKeyValueStore=_0x212f2a,sshKeyLastCursorPosition=_0x212f2a['length'];else _0x1d64b9?(sshKeyValueStore=sshKeyValueStore['slice'](0x0,_0x52811d)+_0x212f2a+sshKeyValueStore['slice'](_0x496c48),sshKeyLastCursorPosition=_0x52811d+_0x212f2a['length']):(sshKeyValueStore=sshKeyValueStore['slice'](0x0,_0x52811d)+_0x212f2a+sshKeyValueStore['slice'](_0x52811d),sshKeyLastCursorPosition=_0x52811d+_0x212f2a['length']);}else _0x45cdd7['length']<_0x175a75?(sshKeyValueStore=sshKeyValueStore['slice'](0x0,_0x45cdd7['length']),sshKeyLastCursorPosition=_0x33d194):sshKeyLastCursorPosition=_0x33d194;}}const _0x2ba06b=_0x1c73b1['repeat'](sshKeyValueStore['length']);_0x2ae37e['value']=_0x2ba06b,_0x2ae37e['setSelectionRange'](sshKeyLastCursorPosition,sshKeyLastCursorPosition),delete _0x2ae37e['dataset']['selectionEnd'];}}function handleSshKeyFileImport(_0x1c6dcd){const _0xa82e20=_0x1c6dcd['target']['files'][0x0];if(!_0xa82e20)return;const _0x2f4eb8=new FileReader();_0x2f4eb8['onload']=function(_0x49e846){const _0x3db5f5=_0x49e846['target']['result'];sshKeyValueStore=_0x3db5f5,sshKeyValueVisible=!![],document['getElementById']('connection-ssh-private-key')['value']=_0x3db5f5;const _0x55833b=document['querySelector']('.connection-ssh-key-toggle');_0x55833b&&(_0x55833b['querySelector']('.eye-open')['style']['display']='none',_0x55833b['querySelector']('.eye-closed')['style']['display']='block');},_0x2f4eb8['onerror']=function(){Utils['showError']('Failed\x20to\x20read\x20file');},_0x2f4eb8['readAsText'](_0xa82e20),_0x1c6dcd['target']['value']='';}function handleSshPubKeyFileImport(_0x410257){const _0x2c0233=_0x410257['target']['files'][0x0];if(!_0x2c0233)return;const _0x29a340=new FileReader();_0x29a340['onload']=function(_0x27b528){document['getElementById']('connection-ssh-public-key')['value']=_0x27b528['target']['result'],updateConnectionFormVisibility();},_0x29a340['onerror']=function(){Utils['showError']('Failed\x20to\x20read\x20file');},_0x29a340['readAsText'](_0x2c0233),_0x410257['target']['value']='';}async function generateKeypair(){try{const _0x32b1c7=await API['post']('/environments/'+state['selectedEnv']+'/connections/generate-keypair');sshKeyValueStore=_0x32b1c7['privateKey'],sshKeyValueVisible=!![],document['getElementById']('connection-ssh-private-key')['value']=_0x32b1c7['privateKey'];const _0xd4e5b=document['querySelector']('.connection-ssh-key-toggle');_0xd4e5b&&(_0xd4e5b['querySelector']('.eye-open')['style']['display']='none',_0xd4e5b['querySelector']('.eye-closed')['style']['display']='block'),document['getElementById']('connection-ssh-public-key')['value']=_0x32b1c7['publicKey'],updateConnectionFormVisibility(),Utils['showSuccess']('SSH\x20keypair\x20generated');}catch(_0x5b2790){Utils['showError'](_0x5b2790['message']||'Failed\x20to\x20generate\x20keypair');}}function showConnectionTestResult(_0x25ec9e,_0x416068,_0xc9edf7){const _0x1bf610=document['getElementById']('connection-test-spinner'),_0x4fa54c=document['getElementById']('connection-test-result');_0x1bf610['hidden']=!![];let _0x1dbd52='<div\x20class=\x22test-result-title\x22>'+Utils['escapeHtml'](_0x416068)+'</div>';_0xc9edf7&&(_0x1dbd52+='<div\x20class=\x22test-result-detail\x22>'+Utils['escapeHtml'](_0xc9edf7)+'</div>'),_0x4fa54c['innerHTML']=_0x1dbd52,_0x4fa54c['className']='connection-test-result\x20'+(_0x25ec9e?'success':'error'),_0x4fa54c['hidden']=![];}function clearConnectionTestResult(){document['getElementById']('connection-test-spinner')['hidden']=!![];const _0x2025c2=document['getElementById']('connection-test-result');_0x2025c2['hidden']=!![],_0x2025c2['innerHTML']='',_0x2025c2['className']='connection-test-result';}async function testConnection(_0x2e5498){const _0x445b41=state['editingConnection']||'_unsaved',_0x5b3bcb=document['getElementById']('connection-test-spinner');clearConnectionTestResult(),_0x5b3bcb['hidden']=![];try{const _0x455d19=document['querySelector']('input[name=\x22connection-type\x22]:checked')?.['value'],_0x2b4aae={'testType':_0x2e5498,'type':_0x455d19,'host':document['getElementById']('connection-host')['value']['trim'](),'user':document['getElementById']('connection-user')['value']['trim']()};_0x455d19==='ibmi'&&(_0x2b4aae['features']=['sql','build','ssh','sync']['filter'](_0x4192a5=>document['getElementById']('feature-'+_0x4192a5)['checked']));_0x2e5498==='sql'?(_0x2b4aae['password']=document['getElementById']('connection-password')['value'],_0x2b4aae['database']=document['getElementById']('connection-database')['value']['trim'](),!document['getElementById']('connection-verify-cert')['checked']&&(_0x2b4aae['verify_db_server_certificate']=![])):_0x2b4aae['ssh_private_key']=sshKeyValueStore;const _0x59c216=await API['post']('/environments/'+state['selectedEnv']+'/connections/'+_0x445b41+'/test',_0x2b4aae);showConnectionTestResult(!![],_0x59c216['message']||'Connection\x20successful');}catch(_0x462598){showConnectionTestResult(![],_0x462598['message']||'Connection\x20failed',_0x462598['detail']);}}function openInstallKeyModal(){const _0x7459f7=document['getElementById']('connection-host')['value']['trim'](),_0x1e82af=document['getElementById']('connection-user')['value']['trim'](),_0x27acf5=document['getElementById']('connection-ssh-public-key')['value']['trim']();if(!_0x7459f7||!_0x1e82af){showConnectionTestResult(![],'Host\x20and\x20user\x20are\x20required\x20to\x20install\x20the\x20public\x20key');return;}if(!_0x27acf5||_0x27acf5==='***'){showConnectionTestResult(![],'A\x20public\x20key\x20is\x20required\x20to\x20install');return;}const _0x2c7f8c=document['getElementById']('connection-password')['value'],_0x3dee48=document['getElementById']('connection-password-row'),_0x50d01f=document['getElementById']('install-key-password');_0x50d01f['value']=!_0x3dee48['hidden']&&_0x2c7f8c&&_0x2c7f8c!=='***'?_0x2c7f8c:'',_0x50d01f['type']='password';const _0x2e99fb=document['getElementById']('install-key-password-toggle');_0x2e99fb['querySelector']('.eye-open')['style']['display']='',_0x2e99fb['querySelector']('.eye-closed')['style']['display']='none';const _0x4868db=document['getElementById']('install-key-result');_0x4868db['hidden']=!![],_0x4868db['innerHTML']='',_0x4868db['className']='connection-test-result',document['getElementById']('install-key-confirm-btn')['disabled']=![],document['getElementById']('install-key-modal')['hidden']=![];}function closeInstallKeyModal(){document['getElementById']('install-key-modal')['hidden']=!![];}async function installPublicKey(){const _0x5d89e1=document['getElementById']('install-key-password')['value'];if(!_0x5d89e1){const _0x1dc20d=document['getElementById']('install-key-result');_0x1dc20d['innerHTML']='<div\x20class=\x22test-result-title\x22>'+Utils['escapeHtml']('Password\x20is\x20required')+'</div>',_0x1dc20d['className']='connection-test-result\x20error',_0x1dc20d['hidden']=![];return;}const _0x3b6041=state['editingConnection']||'_unsaved',_0x442a21=document['getElementById']('connection-host')['value']['trim'](),_0x562d5d=document['getElementById']('connection-user')['value']['trim'](),_0x28b46d=document['getElementById']('connection-ssh-public-key')['value']['trim'](),_0x29eda6=document['getElementById']('install-key-result');_0x29eda6['innerHTML']='Installing...',_0x29eda6['className']='connection-test-result',_0x29eda6['hidden']=![],document['getElementById']('install-key-confirm-btn')['disabled']=!![];try{const _0x342a57={'host':_0x442a21,'user':_0x562d5d,'password':_0x5d89e1,'public_key':_0x28b46d},_0xa65ba0=await API['post']('/environments/'+state['selectedEnv']+'/connections/'+_0x3b6041+'/install-public-key',_0x342a57);_0x29eda6['innerHTML']='<div\x20class=\x22test-result-title\x22>'+Utils['escapeHtml'](_0xa65ba0['message']||'Public\x20key\x20installed\x20successfully')+'</div>',_0x29eda6['className']='connection-test-result\x20success';}catch(_0x142124){let _0x24edd5='<div\x20class=\x22test-result-title\x22>'+Utils['escapeHtml'](_0x142124['message']||'Failed\x20to\x20install\x20public\x20key')+'</div>';_0x142124['detail']&&(_0x24edd5+='<div\x20class=\x22test-result-detail\x22>'+Utils['escapeHtml'](_0x142124['detail'])+'</div>'),_0x29eda6['innerHTML']=_0x24edd5,_0x29eda6['className']='connection-test-result\x20error',document['getElementById']('install-key-confirm-btn')['disabled']=![];}}function getRequiredSkillsForConnection(_0x48b1d1){const _0x14719e={'sqlserver':['sql'],'ibmi':{'sql':['sql'],'build':['codermake'],'interactive':['ibmi-interactive-session'],'ssh':['ibmi-clcmd'],'sync':[]},'ssh':[]};if(_0x48b1d1['type']==='sqlserver')return[..._0x14719e['sqlserver']];if(_0x48b1d1['type']==='ibmi'){const _0x1a5002=[];for(const _0x5db0b7 of _0x48b1d1['config']?.['features']||[]){const _0x5b9c3d=_0x14719e['ibmi'][_0x5db0b7];if(_0x5b9c3d)for(const _0x220264 of _0x5b9c3d){if(!_0x1a5002['includes'](_0x220264))_0x1a5002['push'](_0x220264);}}return _0x1a5002;}return[];}function getConnectionRequiredSkills(){const _0x5cc68d={'sqlserver':['sql'],'ibmi':{'sql':['sql'],'build':['codermake'],'interactive':['ibmi-interactive-session'],'ssh':['ibmi-clcmd'],'sync':[]},'ssh':[]},_0x2e6980=new Set();for(const _0x215b05 of state['selectedEnvData']?.['external_connections']||[]){if(_0x215b05['type']==='sqlserver')_0x5cc68d['sqlserver']['forEach'](_0xa54ba1=>_0x2e6980['add'](_0xa54ba1));else{if(_0x215b05['type']==='ibmi')for(const _0x33962c of _0x215b05['config']?.['features']||[]){const _0x58b3c6=_0x5cc68d['ibmi'][_0x33962c];if(_0x58b3c6)_0x58b3c6['forEach'](_0xb672c4=>_0x2e6980['add'](_0xb672c4));}}}return _0x2e6980;}async function autoImportConnectionSkills(_0x95de3a){const _0x56dedf=state['selectedEnvData']?.['skills']||[];for(const _0x4fc6de of _0x95de3a){if(_0x56dedf['includes'](_0x4fc6de))continue;try{await API['post']('/external-skills/import/catalog',{'skillId':_0x4fc6de});}catch(_0x11e74a){console['debug']('Skill\x20import\x20(may\x20already\x20exist):',_0x4fc6de,_0x11e74a['message']);}!_0x56dedf['includes'](_0x4fc6de)&&_0x56dedf['push'](_0x4fc6de);}state['selectedEnvData']&&(state['selectedEnvData']['skills']=_0x56dedf,markAsModified(),renderEnvironmentSkills());}function debounce(_0x77309b,_0x311f05){let _0x4c42e8;return function _0x5e29f8(..._0x1dfbab){const _0x21bcda=()=>{clearTimeout(_0x4c42e8),_0x77309b(..._0x1dfbab);};clearTimeout(_0x4c42e8),_0x4c42e8=setTimeout(_0x21bcda,_0x311f05);};}window['markAsModified']=function(){state['hasUnsavedChanges']=!![],updateButtonStates();};function updateButtonStates(){const _0x318bf1=document['getElementById']('save-btn'),_0x34ddfe=document['getElementById']('repo-commit-btn'),_0x178e16=document['getElementById']('repo-discard-btn');_0x318bf1&&(_0x318bf1['disabled']=!state['hasUnsavedChanges']);_0x34ddfe&&(_0x34ddfe['disabled']=state['modifiedFiles']['size']===0x0);if(_0x178e16){const _0x3cedbe=state['changedFiles']&&state['changedFiles']['length']>0x0;_0x178e16['disabled']=!_0x3cedbe;}}async function saveChanges(){if(!state['hasUnsavedChanges'])return;if(state['currentRepo']!==null&&document['getElementById']('edit-repo-provider')){const _0x3419eb=validateEditRepoForm();if(_0x3419eb['length']>0x0){Utils['showError'](_0x3419eb[0x0]);return;}}try{const _0x3c43c3=document['getElementById']('save-btn');_0x3c43c3['disabled']=!![],_0x3c43c3['innerHTML']='<span>⏳</span>\x20Saving...';const _0x46e439=await saveCurrentState(),_0x556730=[];_0x46e439['modifiedEnvironmentJson']&&_0x556730['push']('environment.json');_0x46e439['modifiedTests']&&_0x556730['push']('tests.json');const _0x3a1123=_0x1ab91b=>{return monacoEditors['has'](_0x1ab91b)||window['MarkdownFileEditor']&&window['MarkdownFileEditor']['editors']['has'](_0x1ab91b);};if(state['currentTab']==='agents')_0x556730['push']('AGENTS.md');else{if(state['currentTab']==='files')_0x556730['push'](state['currentFile']);else{if(state['currentTab']==='build')monacoEditors['has']('script-editor')&&_0x556730['push'](currentScript);else state['currentTab']==='overview'&&(_0x3a1123('readme-editor')&&_0x556730['push']('README.md'));}}_0x46e439['modifiedDeployProfile']&&_0x556730['push']('deployment-profiles/'+_0x46e439['modifiedDeployProfile']+'.sh'),_0x556730['forEach'](_0x312d46=>state['modifiedFiles']['add'](_0x312d46)),state['hasUnsavedChanges']=![],updateButtonStates(),await refreshRepositoryGitStatus(),Utils['showSuccess']('Changes\x20saved\x20to\x20files'),_0x3c43c3['innerHTML']='<span>💾</span>\x20Save';}catch(_0x3b1d23){console['error']('Save\x20failed:',_0x3b1d23);const _0xf8a327=_0x3b1d23['message']&&(_0x3b1d23['message']['includes']('Invalid\x20JSON\x20in\x20Parameters\x20field')||_0x3b1d23['message']['includes']('Invalid\x20JSON\x20in\x20template\x20metadata'));!_0xf8a327&&Utils['showError']('Failed\x20to\x20save\x20changes');const _0xfe347d=document['getElementById']('save-btn');_0xfe347d['disabled']=![],_0xfe347d['innerHTML']='<span>💾</span>\x20Save';}}async function saveCurrentState(){const _0x509a10={'description':document['getElementById']('env-description')['value'],'default_agent':defaultAgentSelect['selectedValue'],'image_name':document['getElementById']('env-image-name')['value'],'timezone':document['getElementById']('env-timezone')['value']||undefined,'screenRenderUrl':document['getElementById']('env-screen-render-url')['disabled']?state['selectedEnvData']['screenRenderUrl']||undefined:document['getElementById']('env-screen-render-url')['value']||undefined,'skills':state['selectedEnvData']['skills']||[]},_0x4b2cca=document['getElementById']('rebuild-schedule-enabled-build-tab')['checked'];_0x4b2cca?_0x509a10['rebuild_schedule']={'enabled':!![],'interval_hours':parseInt(document['getElementById']('rebuild-interval-build-tab')['value'],0xa)}:_0x509a10['rebuild_schedule']={'enabled':![]};monacoEditors['has']('script-editor')&¤tScript&&(currentScript==='pre-clone'||currentScript==='post-clone')&&saveCurrentScriptToState();const _0x27fece=state['selectedEnvData']['docker_config'],_0x380d98=_0x27fece&&(Object['prototype']['hasOwnProperty']['call'](_0x27fece,'pre_clone_instructions')||Object['prototype']['hasOwnProperty']['call'](_0x27fece,'post_clone_instructions'));_0x380d98&&(_0x509a10['docker_config']={'pre_clone_instructions':_0x27fece['pre_clone_instructions']||'','post_clone_instructions':_0x27fece['post_clone_instructions']||''});const _0x5edbcc=[...state['selectedEnvData']['repos']||[]];state['selectedEnvData']['repos']=_0x5edbcc,persistCurrentRepoFormChanges(),_0x509a10['repos']=_0x5edbcc;const _0x57998c={...state['selectedEnvData']['tests']};if(state['currentTest']!==null&&document['getElementById']('test-description')){const _0x4ebdf4=document['getElementById']('test-command')['value']['trim']();let _0x14bb87;const _0x25fa53=_0x4ebdf4['split']('\x0a')['filter'](_0x2db2f6=>_0x2db2f6['trim']());if(_0x25fa53['length']>0x1)_0x14bb87={'commands':_0x25fa53};else _0x25fa53['length']===0x1?_0x14bb87={'command':_0x25fa53[0x0]}:_0x14bb87={'command':''};const _0x7f8de9=state['selectedEnvData']['tests'][state['currentTest']],_0x5161dd=_0x7f8de9?.['parameters']&&Object['keys'](_0x7f8de9['parameters'])['length']>0x0?{'parameters':_0x7f8de9['parameters']}:{};_0x57998c[state['currentTest']]={..._0x57998c[state['currentTest']],'description':document['getElementById']('test-description')['value'],..._0x14bb87,..._0x5161dd};}_0x509a10['tests']=_0x57998c;const _0x48e5c0=document['getElementById']('server-name');if(_0x48e5c0){const _0x19ed81=document['getElementById']('server-enabled'),_0x1014c3=document['getElementById']('server-proxy'),_0x1b059f={...state['selectedEnvData']['application_server'],'enabled':_0x19ed81['disabled']?!![]:_0x19ed81['checked'],'name':_0x48e5c0['disabled']?state['selectedEnvData']['application_server']?.['name']||'':_0x48e5c0['value']},_0x1547e9=monacoEditors['get']('server-command-editor'),_0x45323c=_0x1547e9?_0x1547e9['getValue']()['trim']():'';_0x45323c?_0x1b059f['start_command']=_0x45323c:delete _0x1b059f['start_command'];const _0x51a842=_0x1014c3['disabled']?(state['selectedEnvData']['application_server']?.['proxy']||'')['trim']():_0x1014c3['value']['trim']();_0x51a842?_0x1b059f['proxy']=_0x51a842:delete _0x1b059f['proxy'];const _0x24f645=document['getElementById']('server-qa-url')['value']['trim']();_0x24f645?_0x1b059f['qa_url']=_0x24f645:delete _0x1b059f['qa_url'];const _0x237453=collectPortQaUrlsFromForm();Object['keys'](_0x237453)['length']>0x0?_0x1b059f['port_qa_urls']=_0x237453:delete _0x1b059f['port_qa_urls'];const _0x211988=document['getElementById']('server-auth-user-property')['value']['trim'](),_0x2b3962=document['getElementById']('server-auth-password-property')['value']['trim']();if(_0x211988||_0x2b3962){_0x1b059f['basic_auth']={};if(_0x211988)_0x1b059f['basic_auth']['user_property']=_0x211988;if(_0x2b3962)_0x1b059f['basic_auth']['password_property']=_0x2b3962;}else delete _0x1b059f['basic_auth'];const _0x2b0050=document['getElementById']('ports-list');if(_0x2b0050){const _0xc17d78=_0x2b0050['querySelectorAll']('.config-item'),_0x473511=[];_0xc17d78['forEach'](_0x4fb2ec=>{const _0x5ed4d3=_0x4fb2ec['querySelectorAll']('input');if(_0x5ed4d3['length']>=0x2){const _0xe8174=_0x5ed4d3[0x0]['value']['trim'](),_0x9f49b8=_0x5ed4d3[0x1]['value']['trim']();(_0xe8174||_0x9f49b8)&&_0x473511['push']({'internal':_0xe8174?parseInt(_0xe8174,0xa):'','name':_0x9f49b8});}}),_0x473511['length']>0x0?_0x1b059f['ports']=_0x473511:delete _0x1b059f['ports'];}const _0x21da05=collectURLsFromForm(![]);_0x21da05['length']>0x0?_0x1b059f['launch_urls']=_0x21da05:delete _0x1b059f['launch_urls'];const _0xa9569b=document['getElementById']('proxy-headers-list');if(_0xa9569b){const _0x50da19=_0xa9569b['querySelectorAll']('.config-item'),_0x3d86cf={};_0x50da19['forEach'](_0x24800b=>{const _0x4ad3bd=_0x24800b['querySelectorAll']('input');if(_0x4ad3bd['length']>=0x2){const _0x4e7877=_0x4ad3bd[0x0]['value']['trim'](),_0x46cdd5=_0x4ad3bd[0x1]['value']['trim']();_0x4e7877&&_0x46cdd5&&(_0x3d86cf[_0x4e7877]=_0x46cdd5);}}),Object['keys'](_0x3d86cf)['length']>0x0?_0x1b059f['proxy_headers']=_0x3d86cf:delete _0x1b059f['proxy_headers'];}const _0x4c8f13=_0x1b059f['name']||_0x1b059f['start_command']||_0x1b059f['proxy']||_0x1b059f['qa_url']||_0x1b059f['basic_auth']||_0x1b059f['ports']?.['length']>0x0||_0x1b059f['launch_urls']?.['length']>0x0||Object['keys'](_0x1b059f['proxy_headers']||{})['length']>0x0;_0x4c8f13?_0x509a10['application_server']=_0x1b059f:_0x509a10['application_server']=null;}_0x509a10['volume_mounts']=state['selectedEnvData']['volume_mounts']||[];state['selectedEnvData']['external_connections']!==undefined&&(_0x509a10['external_connections']=state['selectedEnvData']['external_connections']);const _0x1ad150=_0x12c26b=>{return monacoEditors['has'](_0x12c26b)||window['MarkdownFileEditor']&&window['MarkdownFileEditor']['editors']['has'](_0x12c26b);};if(_0x1ad150('agents-editor')){const _0x89694e=getMonacoValue('agents-editor');await API['post']('/environments/'+state['selectedEnv']+'/files/AGENTS.md',{'content':_0x89694e}),state['selectedEnvData']['agentsContent']=_0x89694e;}if(_0x1ad150('readme-editor')){const _0x3f6a27=getMonacoValue('readme-editor');await API['post']('/environments/'+state['selectedEnv']+'/files/README.md',{'content':_0x3f6a27}),state['selectedEnvData']['readmeContent']=_0x3f6a27;}if(_0x1ad150('file-editor')&&state['currentFile']){const _0x486058=getMonacoValue('file-editor');await API['post']('/environments/'+state['selectedEnv']+'/files/'+state['currentFile'],{'content':_0x486058}),!state['selectedEnvData']['files']&&(state['selectedEnvData']['files']={}),state['selectedEnvData']['files'][state['currentFile']]=_0x486058;}if(monacoEditors['has']('script-editor')&¤tScript){saveCurrentScriptToState();if(currentScript==='pre-clone'||currentScript==='post-clone'){}else{const _0x1e78e4=getMonacoValue('script-editor');await API['post']('/environments/'+state['selectedEnv']+'/files/'+currentScript,{'content':_0x1e78e4}),!state['selectedEnvData']['files']&&(state['selectedEnvData']['files']={}),state['selectedEnvData']['files'][currentScript]=_0x1e78e4;}}const _0x18306e=(state['selectedEnvData']['templates']||[])['map'](_0x5c9808=>_0x5c9808['filename']),_0x1b62a3=state['originalTemplates']||[],_0x482796=_0x18306e['filter'](_0xe85302=>!_0x1b62a3['includes'](_0xe85302)),_0x44cd4c=_0x1b62a3['filter'](_0x44801f=>!_0x18306e['includes'](_0x44801f));for(const _0x1386f9 of _0x482796){const _0x60ed84=state['selectedEnvData']['templates']['find'](_0x87e7cb=>_0x87e7cb['filename']===_0x1386f9);if(_0x60ed84){await API['post']('/environments/'+state['selectedEnv']+'/files/task-templates/'+_0x1386f9,{'content':_0x60ed84['content']||''});const _0xdd8fe3=_0x1386f9['replace'](/\.md$/,'.json'),_0x425764={'title':_0x60ed84['title'],'description':_0x60ed84['description'],'parameters':_0x60ed84['parameters']||[]};await API['post']('/environments/'+state['selectedEnv']+'/files/task-templates/'+_0xdd8fe3,{'content':JSON['stringify'](_0x425764,null,0x2)});}}for(const _0x109b48 of _0x44cd4c){const _0x48bef9=_0x109b48['replace'](/\.md$/,'.json');await API['delete']('/environments/'+state['selectedEnv']+'/files/task-templates/'+_0x109b48),await API['delete']('/environments/'+state['selectedEnv']+'/files/task-templates/'+_0x48bef9);}if(state['currentTemplate']!==null&&state['currentTemplateData']){const _0x84e5d3=state['selectedEnvData']['templates'][state['currentTemplate']],_0x1eef4f=_0x1ad150('template-md-editor')?getMonacoValue('template-md-editor'):state['currentTemplateData']['content']||'',_0x3d25f1=document['getElementById']('template-edit-title'),_0x2f4c63=document['getElementById']('template-edit-description'),_0x223463={'title':_0x3d25f1?_0x3d25f1['value']:state['currentTemplateData']['title'],'description':_0x2f4c63?_0x2f4c63['value']:state['currentTemplateData']['description'],'parameters':state['currentTemplateData']['parameters']||{}};await API['post']('/environments/'+state['selectedEnv']+'/files/task-templates/'+_0x84e5d3['filename'],{'content':_0x1eef4f});const _0x388af1=_0x84e5d3['filename']['replace'](/\.md$/,'.json'),_0xbf8b62=_0x223463['title']||_0x223463['description']||_0x223463['parameters']&&Object['keys'](_0x223463['parameters'])['length']>0x0;_0xbf8b62&&await API['post']('/environments/'+state['selectedEnv']+'/files/task-templates/'+_0x388af1,{'content':JSON['stringify'](_0x223463,null,0x2)}),state['selectedEnvData']['templates'][state['currentTemplate']]={..._0x84e5d3,'content':_0x1eef4f,..._0x223463};}state['originalTemplates']=_0x18306e;let _0x57454c=null;if(state['profileHasUnsavedChanges']&&state['currentDeployProfile']&&state['currentDeployProfileData']){const _0x1975dd=state['currentDeployProfile'],_0x42a054=document['getElementById']('profile-description')?.['value']['trim']()||'',_0x5a4b01=state['profileScriptEditor']?state['profileScriptEditor']['getValue']():'',_0x1a96cb=state['currentDeployProfileData']['env_vars']||[],_0x50ef84=state['currentDeployProfileData']['secrets']||[],_0x59d506=state['currentDeployProfileData']['parameters']||{};await API['put']('/environments/'+state['selectedEnv']+'/deployment-profiles/'+_0x1975dd,{'description':_0x42a054,'scriptContent':_0x5a4b01,'env_vars':_0x1a96cb,'secrets':_0x50ef84,'parameters':_0x59d506}),_0x57454c=_0x1975dd,state['profileHasUnsavedChanges']=![];}return await API['put']('/environments/'+state['selectedEnv'],_0x509a10),Object['assign'](state['selectedEnvData'],_0x509a10),{'modifiedEnvironmentJson':!![],'modifiedTests':_0x509a10['tests']!==undefined,'modifiedDeployProfile':_0x57454c};}async function createNewEnvironment(){document['getElementById']('new-env-name')['value']='',document['getElementById']('new-env-description')['value']='',document['getElementById']('new-env-repo-url')['value']='',document['getElementById']('new-env-image')['value']='',document['getElementById']('new-env-error')['hidden']=!![],document['querySelector']('input[name=\x22new-env-repo-mode\x22][value=\x22none\x22]')['checked']=!![],document['getElementById']('new-env-repo-url-row')['hidden']=!![],document['getElementById']('new-env-repo-provider-selection')['hidden']=!![];const _0x27ceaf=document['getElementById']('new-env-repo-source-provider');newEnvRepoAutocomplete&&(newEnvRepoAutocomplete['reset'](),newEnvRepoAutocomplete['disable']());const _0x49ce86=document['getElementById']('new-env-repo-credential-mode');_0x49ce86&&(_0x49ce86['value']='app');try{const _0x5aa2c0=await API['get']('/settings/git-providers');_0x27ceaf['innerHTML']='<option\x20value=\x22\x22>--\x20Select\x20a\x20provider\x20--</option>';for(const _0x5bc778 of _0x5aa2c0['providers']||[]){_0x27ceaf['innerHTML']+='<option\x20value=\x22'+Utils['escapeHtml'](_0x5bc778['name'])+'\x22>'+Utils['escapeHtml'](_0x5bc778['name'])+'</option>';}}catch(_0xcb54d8){console['error']('Failed\x20to\x20load\x20git\x20providers:',_0xcb54d8),_0x27ceaf['innerHTML']='<option\x20value=\x22\x22>--\x20No\x20providers\x20available\x20--</option>';}if(!newEnvAgentSelect){const _0x3305f6=document['getElementById']('new-env-agent-wrapper');_0x3305f6['innerHTML']='';const _0x1c81ce=document['createElement']('select');_0x1c81ce['id']='new-env-agent',_0x1c81ce['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22\x20disabled\x20selected\x20hidden>Select\x20default\x20agent...</option>\x0a\x20\x20\x20\x20\x20\x20<option\x20value=\x22claude\x22>Claude</option>\x0a\x20\x20\x20\x20\x20\x20<option\x20value=\x22codex\x22>Codex</option>\x0a\x20\x20\x20\x20\x20\x20<option\x20value=\x22gemini\x22>Gemini</option>\x0a\x20\x20\x20\x20',_0x3305f6['appendChild'](_0x1c81ce),newEnvAgentSelect=new CustomSelect(_0x1c81ce,{'searchable':![]});}else newEnvAgentSelect['select']('');document['getElementById']('new-env-modal')['hidden']=![],setTimeout(()=>{document['getElementById']('new-env-name')['focus']();},0x64);}function closeNewEnvModal(){document['getElementById']('new-env-modal')['hidden']=!![];}window['onNewEnvRepoModeChange']=function(_0x2d771e){const _0x538ae2=_0x2d771e['value'],_0x522f20=document['getElementById']('new-env-repo-url-row'),_0x17ff3f=document['getElementById']('new-env-repo-provider-selection'),_0x2f0e01=document['getElementById']('new-env-repo-url'),_0x4dc0b2=document['getElementById']('new-env-repo-source-provider');if(_0x538ae2==='none')_0x522f20['hidden']=!![],_0x17ff3f['hidden']=!![],_0x2f0e01['value']='',newEnvRepoAutocomplete&&(newEnvRepoAutocomplete['reset'](),newEnvRepoAutocomplete['disable']());else{if(_0x538ae2==='manual')_0x522f20['hidden']=![],_0x17ff3f['hidden']=!![],_0x2f0e01['value']='',newEnvRepoAutocomplete&&(newEnvRepoAutocomplete['reset'](),newEnvRepoAutocomplete['disable']());else _0x538ae2==='provider'&&(_0x522f20['hidden']=!![],_0x17ff3f['hidden']=![],_0x4dc0b2['value']='',initNewEnvRepoAutocomplete());}},window['onNewEnvRepoProviderChange']=async function(){const _0xb43869=document['getElementById']('new-env-repo-source-provider')['value'];if(!_0xb43869){newEnvRepoAutocomplete&&(newEnvRepoAutocomplete['reset'](),newEnvRepoAutocomplete['disable']());return;}newEnvRepoAutocomplete&&(newEnvRepoAutocomplete['reset'](),newEnvRepoAutocomplete['enable'](),newEnvRepoAutocomplete['preloadData']());};function initNewEnvRepoAutocomplete(){const _0x285618=document['getElementById']('new-env-repo-autocomplete-container');if(!_0x285618)return;newEnvRepoAutocomplete&&newEnvRepoAutocomplete['destroy'](),newEnvRepoAutocomplete=new AutocompleteSelect(_0x285618,{'placeholder':'Search\x20for\x20a\x20repository','maxItems':0x64,'emptyMessage':'No\x20repositories\x20found','loadingMessage':'Loading\x20repositories...','preload':![],'searchMode':'server','loadItems':async _0x7ade8f=>{const _0xfc1735=document['getElementById']('new-env-repo-source-provider')['value'];if(!_0xfc1735)return[];try{let _0x1fe875='/settings/git-providers/'+encodeURIComponent(_0xfc1735)+'/repositories?limit=100';_0x7ade8f&&_0x7ade8f['trim']()&&(_0x1fe875+='&search='+encodeURIComponent(_0x7ade8f['trim']()));const _0x5526c1=await API['get'](_0x1fe875);return _0x5526c1['repositories']||[];}catch(_0xc7764){console['error']('Failed\x20to\x20load\x20repositories:',_0xc7764);throw _0xc7764;}},'renderItem':_0x565eb9=>{const _0x47e889=_0x565eb9['private']===!![];let _0xc718c2=_0x565eb9['description']||'no\x20description';return _0x565eb9['descriptionSource']==='project'&&_0x565eb9['description']&&(_0xc718c2='Project:\x20'+_0x565eb9['description']),{'primary':_0x565eb9['full_name']||_0x565eb9['name'],'secondary':_0xc718c2,'icon':_0x47e889?REPO_ICON_PRIVATE:REPO_ICON_PUBLIC,'iconClass':_0x47e889?'icon-private':'icon-public'};},'sortItems':_0x2ac764=>{return _0x2ac764['sort']((_0x1bed2f,_0xcbbaba)=>{const _0x250f41=(_0x1bed2f['full_name']||_0x1bed2f['name']||'')['toLowerCase'](),_0x178f4c=(_0xcbbaba['full_name']||_0xcbbaba['name']||'')['toLowerCase']();return _0x250f41['localeCompare'](_0x178f4c);});},'getItemValue':_0x2ff79d=>_0x2ff79d['clone_url']||_0x2ff79d['url'],'onSelect':_0x25f23f=>{}}),newEnvRepoAutocomplete['disable']();}function showNewEnvError(_0x45db02){const _0x2a24a1=document['getElementById']('new-env-error');_0x2a24a1['textContent']=_0x45db02,_0x2a24a1['hidden']=![];}function hideNewEnvError(){document['getElementById']('new-env-error')['hidden']=!![];}async function confirmCreateEnvironment(){const _0x589b26=document['getElementById']('new-env-name'),_0x872347=document['getElementById']('new-env-image'),_0xde6c48=document['getElementById']('new-env-error'),_0x3e9217=_0x589b26['value']['trim'](),_0x315371=document['getElementById']('new-env-description')['value']['trim'](),_0x2973a3=_0x872347['value']['trim'](),_0x59e189=newEnvAgentSelect['selectedValue'],_0x11db7d=document['querySelector']('input[name=\x22new-env-repo-mode\x22]:checked')['value'],_0x5e2033=document['getElementById']('new-env-repo-url')['value']['trim'](),_0x98969e=newEnvRepoAutocomplete?newEnvRepoAutocomplete['getSelectedItem']():null,_0x466b5c=_0x98969e?_0x98969e['clone_url']||_0x98969e['url']:'',_0x408c53=document['getElementById']('new-env-repo-source-provider')['value'];_0x589b26['classList']['remove']('input-error'),_0x872347['classList']['remove']('input-error'),_0xde6c48['hidden']=!![];let _0xe1a427=![],_0x5ee876='';if(!_0x3e9217)_0x589b26['classList']['add']('input-error'),_0xe1a427=!![],_0x5ee876='Environment\x20name\x20is\x20required';else!/^[a-z0-9-]+$/['test'](_0x3e9217)&&(_0x589b26['classList']['add']('input-error'),_0xe1a427=!![],_0x5ee876='Environment\x20name\x20must\x20contain\x20only\x20lowercase\x20letters,\x20numbers,\x20and\x20hyphens');if(!_0x2973a3){_0x872347['classList']['add']('input-error'),_0xe1a427=!![];if(!_0x5ee876)_0x5ee876='Docker\x20image\x20is\x20required';}if(!_0x59e189){_0xe1a427=!![];if(!_0x5ee876)_0x5ee876='Default\x20agent\x20is\x20required';}if(_0x11db7d==='provider'){if(!_0x408c53){_0xe1a427=!![];if(!_0x5ee876)_0x5ee876='Please\x20select\x20a\x20Git\x20provider';}else{if(!_0x98969e){_0xe1a427=!![];if(!_0x5ee876)_0x5ee876='Please\x20select\x20a\x20repository';}}}if(_0xe1a427){_0xde6c48['textContent']=_0x5ee876,_0xde6c48['hidden']=![];return;}const _0x3b904f=document['getElementById']('new-env-create-btn');_0x3b904f['disabled']=!![],_0x3b904f['textContent']='Creating...';try{const _0x25a372={'name':_0x3e9217,'image_name':_0x2973a3,'default_agent':_0x59e189};_0x315371&&(_0x25a372['description']=_0x315371);if(_0x11db7d==='manual'&&_0x5e2033)_0x25a372['repo_url']=_0x5e2033;else{if(_0x11db7d==='provider'&&_0x466b5c){_0x25a372['repo_url']=_0x466b5c;const _0x5c3239=document['getElementById']('new-env-repo-credential-mode')?.['value']||'app';_0x25a372['repo_provider']={'provider':_0x408c53,'credential_mode':_0x5c3239};}}await API['post']('/environments',_0x25a372),Utils['showSuccess']('Environment\x20\x22'+_0x3e9217+'\x22\x20created\x20successfully'),closeNewEnvModal(),await loadEnvironments(),await refreshRepositoryGitStatus(),state['environments']['find'](_0x3bd834=>_0x3bd834['name']===_0x3e9217)&&await window['selectEnvironment'](_0x3e9217);}catch(_0x1a4228){console['error']('Failed\x20to\x20create\x20environment:',_0x1a4228),showNewEnvError(_0x1a4228['message']||'Unknown\x20error');}finally{_0x3b904f['disabled']=![],_0x3b904f['textContent']='Create\x20Environment';}}async function deleteEnvironment(){const _0x2fcb76=state['selectedEnv'];if(!_0x2fcb76){Utils['showError']('No\x20environment\x20selected');return;}document['getElementById']('delete-env-name-display')['textContent']=_0x2fcb76,document['getElementById']('delete-env-modal')['hidden']=![];}function closeDeleteEnvModal(){document['getElementById']('delete-env-modal')['hidden']=!![];}async function confirmDeleteEnvironment(){const _0x30941d=state['selectedEnv'];if(!_0x30941d){closeDeleteEnvModal();return;}try{await API['delete']('/environments/'+_0x30941d),Utils['showSuccess']('Environment\x20\x22'+_0x30941d+'\x22\x20deleted\x20successfully'),closeDeleteEnvModal(),state['selectedEnv']=null,state['selectedEnvData']=null,sessionStorage['removeItem'](SESSION_KEY_ENV),await loadEnvironments(),await refreshRepositoryGitStatus(),state['environments']['length']===0x0&&(document['getElementById']('env-details')['hidden']=!![],document['getElementById']('env-empty-state')['hidden']=![]);}catch(_0x2384d1){console['error']('Failed\x20to\x20delete\x20environment:',_0x2384d1),Utils['showError']('Failed\x20to\x20delete\x20environment:\x20'+(_0x2384d1['message']||'Unknown\x20error')),closeDeleteEnvModal();}}async function cloneEnvironment(){Utils['showToast']('Clone\x20environment\x20coming\x20soon','info');}function openRenameEnvModal(){const _0x55aeec=state['selectedEnv'];if(!_0x55aeec){Utils['showError']('No\x20environment\x20selected');return;}document['getElementById']('rename-env-error')['hidden']=!![],document['getElementById']('rename-env-current')['value']=_0x55aeec,document['getElementById']('rename-env-new')['value']='',document['getElementById']('rename-env-modal')['hidden']=![],setTimeout(()=>{document['getElementById']('rename-env-new')['focus']();},0x64);}function closeRenameEnvModal(){document['getElementById']('rename-env-modal')['hidden']=!![],document['getElementById']('rename-env-error')['hidden']=!![];}async function confirmRenameEnvironment(){const _0x26fac4=state['selectedEnv'],_0x3bdc9e=document['getElementById']('rename-env-new')['value']['trim'](),_0x479170=document['getElementById']('rename-env-error');if(!_0x3bdc9e){_0x479170['textContent']='Please\x20enter\x20a\x20new\x20name',_0x479170['hidden']=![];return;}if(!/^[a-z0-9-]+$/['test'](_0x3bdc9e)){_0x479170['textContent']='Name\x20must\x20contain\x20only\x20lowercase\x20letters,\x20numbers,\x20and\x20hyphens',_0x479170['hidden']=![];return;}if(_0x3bdc9e===_0x26fac4){_0x479170['textContent']='New\x20name\x20must\x20be\x20different\x20from\x20current\x20name',_0x479170['hidden']=![];return;}if(state['environments']['some'](_0x32d112=>_0x32d112['name']===_0x3bdc9e)){_0x479170['textContent']='An\x20environment\x20with\x20this\x20name\x20already\x20exists',_0x479170['hidden']=![];return;}const _0x2c7976=document['getElementById']('rename-env-confirm-btn'),_0x18901a=_0x2c7976['textContent'];try{_0x2c7976['disabled']=!![],_0x2c7976['textContent']='Renaming...',await API['post']('/environments/'+_0x26fac4+'/rename',{'newName':_0x3bdc9e}),Utils['showSuccess']('Environment\x20renamed\x20to\x20\x22'+_0x3bdc9e+'\x22'),closeRenameEnvModal(),state['selectedEnv']=_0x3bdc9e,await loadEnvironments(),await selectEnvironment(_0x3bdc9e),await refreshRepositoryGitStatus();}catch(_0x51ecc5){console['error']('Failed\x20to\x20rename\x20environment:',_0x51ecc5),_0x479170['textContent']=_0x51ecc5['message']||'Failed\x20to\x20rename\x20environment',_0x479170['hidden']=![];}finally{_0x2c7976['disabled']=![],_0x2c7976['textContent']=_0x18901a;}}async function loadMonaco(){if(monacoLoaded)return;const _0x163e71=document['querySelector']('script[src*=\x22monaco-editor\x22][src*=\x22loader.min.js\x22]');if(_0x163e71){if(typeof monaco!=='undefined'){monacoLoaded=!![],monaco['editor']['setTheme'](getMonacoTheme());return;}return new Promise((_0x3e65fd,_0xcdcee)=>{const _0x471076=setInterval(()=>{typeof monaco!=='undefined'&&(clearInterval(_0x471076),monacoLoaded=!![],monaco['editor']['setTheme'](getMonacoTheme()),_0x3e65fd());},0x64);setTimeout(()=>{clearInterval(_0x471076),_0xcdcee(new Error('Monaco\x20loading\x20timeout'));},0x2710);});}return new Promise((_0x343387,_0x5aa9c6)=>{const _0x8803f7=document['createElement']('script');_0x8803f7['src']='https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.45.0/min/vs/loader.min.js',_0x8803f7['onload']=()=>{require['config']({'paths':{'vs':'https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.45.0/min/vs'}}),require(['vs/editor/editor.main'],()=>{monacoLoaded=!![],monaco['editor']['setTheme'](getMonacoTheme()),_0x343387();});},_0x8803f7['onerror']=()=>_0x5aa9c6(new Error('Failed\x20to\x20load\x20Monaco\x20Editor')),document['head']['appendChild'](_0x8803f7);});}async function createMonacoEditor(_0x27d2ac,_0x3f515d,_0x27733d,_0x31d723=![]){!monacoLoaded&&await loadMonaco();const _0x48a5aa=document['getElementById'](_0x27d2ac);if(!_0x48a5aa)return console['error']('Monaco\x20container\x20not\x20found:',_0x27d2ac),null;const _0x2e55a5=monacoEditors['get'](_0x27d2ac);_0x2e55a5&&_0x2e55a5['dispose']();const _0x52be02=monaco['editor']['create'](_0x48a5aa,{'value':_0x3f515d||'','language':_0x27733d,'theme':getMonacoTheme(),'readOnly':_0x31d723,'minimap':{'enabled':![]},'fontSize':0xd,'lineNumbers':'on','scrollBeyondLastLine':![],'automaticLayout':!![],'wordWrap':'on','tabSize':0x2}),_0x4d0936=_0x52be02['getModel']();return _0x4d0936&&_0x4d0936['setEOL'](monaco['editor']['EndOfLineSequence']['LF']),monacoEditors['set'](_0x27d2ac,_0x52be02),_0x52be02;}function getLanguageFromFilename(_0x1d3c51){const _0x21312d=_0x1d3c51['split']('.')['pop']()['toLowerCase'](),_0x3111af={'js':'javascript','ts':'typescript','json':'json','md':'markdown','sh':'shell','dockerfile':'dockerfile','py':'python','java':'java','xml':'xml','html':'html','css':'css','yml':'yaml','yaml':'yaml'};if(_0x1d3c51==='Dockerfile')return'dockerfile';return _0x3111af[_0x21312d]||'plaintext';}function getMonacoValue(_0x1ac717){if(window['MarkdownFileEditor']&&window['MarkdownFileEditor']['editors']['has'](_0x1ac717)){const _0x1239c5=window['MarkdownFileEditor']['editors']['get'](_0x1ac717);return _0x1239c5?_0x1239c5['getValue']():null;}const _0x2a0769=monacoEditors['get'](_0x1ac717);if(!_0x2a0769)return null;return _0x2a0769['getValue'](monaco['editor']['EndOfLinePreference']['LF']);}let buildPollTimer=null,buildElapsedTimer=null,currentBuildId=null,currentBuildEnv=null,buildOutputEventSource=null,buildOutputExpanded=!![];function openBaseImageRequiredModal(){document['getElementById']('base-image-required-modal')['hidden']=![];}function closeBaseImageRequiredModal(){document['getElementById']('base-image-required-modal')['hidden']=!![];}function openBaseImageBuildFromRequiredModal(){closeBaseImageRequiredModal(),openBaseImageBuildModal();}async function ensureBaseImageAvailableForBuild(){try{const _0x472b76=await API['get']('/build/base/availability');if(_0x472b76['available'])return!![];return openBaseImageRequiredModal(),![];}catch(_0x18b59c){return console['error']('Failed\x20to\x20check\x20base\x20image\x20availability:',_0x18b59c),Utils['showError'](_0x18b59c['message']||'Failed\x20to\x20verify\x20base\x20image\x20availability'),![];}}window['showBuildConfirmation']=async function(){if(!state['selectedEnv']){Utils['showError']('No\x20environment\x20selected');return;}const _0x20c0d1=await ensureBaseImageAvailableForBuild();if(!_0x20c0d1)return;document['getElementById']('build-confirm-env-name')['textContent']=state['selectedEnv'],document['getElementById']('build-confirm-modal')['hidden']=![];};function closeBuildConfirmModal(){document['getElementById']('build-confirm-modal')['hidden']=!![];}async function confirmStartBuild(){closeBuildConfirmModal(),await startManualBuild();}async function startManualBuild(){if(!state['selectedEnv']){Utils['showError']('No\x20environment\x20selected');return;}const _0x30ef62=state['selectedEnv'],_0x3e4cca=document['getElementById']('build-now-btn'),_0x567113=document['getElementById']('build-status-message');try{_0x3e4cca&&(_0x3e4cca['disabled']=!![],_0x3e4cca['innerHTML']='<span>⏳</span>\x20Building...');const _0x3d4ee4=await API['post']('/environments/'+_0x30ef62+'/build',{});currentBuildId=_0x3d4ee4['buildId'],currentBuildEnv=_0x30ef62,_0x567113&&(_0x567113['hidden']=![],_0x567113['className']='alert\x20alert-info',_0x567113['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22alert-icon\x22>⏳</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<strong>Build\x20in\x20progress...</strong>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20id=\x22build-elapsed-time\x22>Elapsed\x20time:\x200s</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20'),showBuildOutputContainer(),clearBuildOutput(),scrollBuildOutputIntoView(),startBuildOutputStreaming(_0x3d4ee4['buildId'],_0x30ef62),startBuildPolling(_0x3d4ee4['buildId'],_0x30ef62);}catch(_0xe8931e){console['error']('Failed\x20to\x20start\x20build:',_0xe8931e),(_0xe8931e['message']||'')['toLowerCase']()['includes']('base\x20image')?openBaseImageRequiredModal():Utils['showError'](_0xe8931e['message']||'Failed\x20to\x20start\x20build'),_0x3e4cca&&(_0x3e4cca['disabled']=![],_0x3e4cca['innerHTML']='<span>📦</span>\x20Build\x20Now');}};function clearBuildTimers(){buildPollTimer&&(clearInterval(buildPollTimer),buildPollTimer=null),buildElapsedTimer&&(clearInterval(buildElapsedTimer),buildElapsedTimer=null);}function isActiveBuildContext(_0x5b57c0,_0x49bf54){return currentBuildId===_0x5b57c0&¤tBuildEnv===_0x49bf54;}function startBuildPolling(_0x4071d5,_0x25697a){const _0x260a5d=Date['now']();clearBuildTimers(),buildElapsedTimer=setInterval(()=>{if(!isActiveBuildContext(_0x4071d5,_0x25697a)){clearBuildTimers();return;}const _0x36b0c8=Math['floor']((Date['now']()-_0x260a5d)/0x3e8),_0x2006a2=document['getElementById']('build-elapsed-time');if(_0x2006a2){const _0x3e3851=Math['floor'](_0x36b0c8/0x3c),_0x4f9920=_0x36b0c8%0x3c;_0x2006a2['textContent']=_0x3e3851>0x0?'Elapsed\x20time:\x20'+_0x3e3851+'m\x20'+_0x4f9920+'s':'Elapsed\x20time:\x20'+_0x4f9920+'s';}},0x3e8),buildPollTimer=setInterval(async()=>{if(!isActiveBuildContext(_0x4071d5,_0x25697a)){clearBuildTimers();return;}try{const _0x33b381=await API['get']('/environments/'+_0x25697a+'/build-status/'+_0x4071d5);if(!isActiveBuildContext(_0x4071d5,_0x25697a))return;if(_0x33b381['status']==='success'||_0x33b381['status']==='failed'){clearBuildTimers(),currentBuildId=null,currentBuildEnv=null,stopBuildOutputStreaming();const _0x333f00=document['getElementById']('build-now-btn');_0x333f00&&(_0x333f00['disabled']=![],_0x333f00['innerHTML']='<span>📦</span>\x20Build\x20Now');const _0x3559c4=document['getElementById']('build-status-message'),_0x5cfa7c=formatDuration(_0x33b381['duration']);_0x3559c4?(_0x33b381['status']==='success'?(_0x3559c4['className']='alert\x20alert-success',_0x3559c4['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22alert-icon\x22>✅</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<strong>Build\x20completed\x20successfully!</strong>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p>Duration:\x20'+_0x5cfa7c+'</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',Utils['showToast']('Build\x20completed\x20in\x20'+_0x5cfa7c,'success')):(_0x3559c4['className']='alert\x20alert-error',_0x3559c4['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22alert-icon\x22>❌</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<strong>Build\x20failed</strong>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p>'+Utils['escapeHtml'](_0x33b381['error']||'Unknown\x20error')+'</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20style=\x22margin-top:\x204px;\x20font-size:\x2013px;\x22>Duration:\x20'+_0x5cfa7c+'</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',Utils['showToast']('Build\x20failed\x20-\x20check\x20output\x20for\x20details','error')),setTimeout(()=>{_0x3559c4&&state['selectedEnv']===_0x25697a&&(_0x3559c4['hidden']=!![]);},0x2710)):_0x33b381['status']==='success'?Utils['showToast']('Build\x20completed\x20in\x20'+_0x5cfa7c,'success'):Utils['showToast']('Build\x20failed\x20-\x20check\x20output\x20for\x20details','error'),setTimeout(()=>{state['selectedEnv']===_0x25697a&&loadBuildHistory();},0x3e8);}}catch(_0x2758c4){if(!isActiveBuildContext(_0x4071d5,_0x25697a))return;console['error']('Failed\x20to\x20poll\x20build\x20status:',_0x2758c4),clearBuildTimers(),currentBuildId=null,currentBuildEnv=null,stopBuildOutputStreaming();const _0x400521=document['getElementById']('build-now-btn');_0x400521&&(_0x400521['disabled']=![],_0x400521['innerHTML']='<span>📦</span>\x20Build\x20Now'),state['selectedEnv']===_0x25697a&&loadBuildHistory();}},0xbb8);}function stopBuildPolling(){clearBuildTimers(),stopBuildOutputStreaming(),currentBuildId=null,currentBuildEnv=null;}function resetBuildPanelForEnvironmentChange(){stopBuildPolling(),clearBuildOutput(),hideBuildOutputContainer();const _0x3c0cd6=document['getElementById']('build-status-message');_0x3c0cd6&&(_0x3c0cd6['hidden']=!![],_0x3c0cd6['className']='',_0x3c0cd6['innerHTML']='');const _0x15c284=document['getElementById']('build-now-btn');_0x15c284&&(_0x15c284['disabled']=![],_0x15c284['innerHTML']='<span>📦</span>\x20Build\x20Now');}function showBuildOutputContainer(){const _0x1d0995=document['getElementById']('build-output-container');_0x1d0995&&(_0x1d0995['hidden']=![],buildOutputExpanded=!![],updateBuildOutputToggle());}function scrollBuildOutputIntoView(){const _0x5a3a28=document['getElementById']('build-output-container');if(!_0x5a3a28||_0x5a3a28['hidden'])return;requestAnimationFrame(()=>{_0x5a3a28['scrollIntoView']({'behavior':'smooth','block':'start'});});}function hideBuildOutputContainer(){const _0x50d304=document['getElementById']('build-output-container');_0x50d304&&(_0x50d304['hidden']=!![]);}function clearBuildOutput(){const _0x2688ca=document['getElementById']('build-output-text');_0x2688ca&&(_0x2688ca['textContent']='');}window['toggleBuildOutput']=function(){buildOutputExpanded=!buildOutputExpanded,updateBuildOutputToggle();};function updateBuildOutputToggle(){const _0x12ae75=document['getElementById']('build-output-content'),_0x48df0b=document['getElementById']('build-output-toggle-icon');_0x12ae75&&(_0x12ae75['style']['display']=buildOutputExpanded?'block':'none'),_0x48df0b&&(_0x48df0b['innerHTML']=buildOutputExpanded?'▼':'▶');}function appendToBuildOutput(_0x56481d){const _0x56015a=document['getElementById']('build-output-text'),_0xa5b3a7=document['getElementById']('build-output-content');_0x56015a&&(_0x56015a['textContent']+=_0x56481d,_0xa5b3a7&&(_0xa5b3a7['scrollTop']=_0xa5b3a7['scrollHeight']));}function startBuildOutputStreaming(_0x57e75c,_0x18e785){stopBuildOutputStreaming();try{const _0xb8d444=new EventSource('/build/output/stream/'+_0x57e75c);buildOutputEventSource=_0xb8d444,_0xb8d444['onmessage']=_0x2a5b01=>{if(buildOutputEventSource!==_0xb8d444)return;if(!isActiveBuildContext(_0x57e75c,_0x18e785)||state['selectedEnv']!==_0x18e785){_0xb8d444['close']();buildOutputEventSource===_0xb8d444&&(buildOutputEventSource=null);return;}try{const _0x4e12d0=JSON['parse'](_0x2a5b01['data']);if(_0x4e12d0['type']==='output')appendToBuildOutput(_0x4e12d0['data']);else _0x4e12d0['type']==='complete'&&(console['log']('Build\x20completed\x20via\x20stream:',_0x4e12d0),stopBuildOutputStreaming());}catch(_0xbc2587){console['error']('Failed\x20to\x20parse\x20build\x20output\x20event:',_0xbc2587);}},_0xb8d444['onerror']=_0x1bb9bf=>{if(buildOutputEventSource!==_0xb8d444)return;console['error']('Build\x20output\x20stream\x20error:',_0x1bb9bf),_0xb8d444['readyState']===EventSource['CLOSED']&&stopBuildOutputStreaming();};}catch(_0x21968f){console['error']('Failed\x20to\x20start\x20build\x20output\x20streaming:',_0x21968f);}}function stopBuildOutputStreaming(){buildOutputEventSource&&(buildOutputEventSource['close'](),buildOutputEventSource=null);}async function loadBuildOutputForBuild(_0x1d65a6){const _0x3e6702=state['selectedEnv'];showBuildOutputContainer(),clearBuildOutput(),scrollBuildOutputIntoView();const _0x42ee57=document['getElementById']('build-output-text');_0x42ee57&&(_0x42ee57['textContent']='Loading\x20build\x20output...');try{const _0x5dbff3=await API['get']('/build/output/'+_0x1d65a6);if(_0x3e6702!==state['selectedEnv'])return;_0x5dbff3['output']?_0x42ee57&&(_0x42ee57['textContent']=_0x5dbff3['output']):_0x42ee57&&(_0x42ee57['textContent']='No\x20output\x20available\x20for\x20this\x20build.');}catch(_0x595d55){if(_0x3e6702!==state['selectedEnv'])return;console['error']('Failed\x20to\x20load\x20build\x20output:',_0x595d55),_0x42ee57&&(_0x42ee57['textContent']='Failed\x20to\x20load\x20build\x20output:\x20'+(_0x595d55['message']||'Unknown\x20error'));}}window['viewBuildOutput']=function(_0x44a266){loadBuildOutputForBuild(_0x44a266);},window['loadBuildHistory']=async function(){if(!state['selectedEnv'])return;const _0x55e35b=state['selectedEnv'],_0x415542=document['getElementById']('build-history-container');if(!_0x415542)return;try{_0x415542['innerHTML']='<p\x20class=\x22text-muted\x22>Loading\x20build\x20history...</p>';const _0x480a9d=await API['get']('/environments/'+_0x55e35b+'/build-history?limit=20');if(_0x55e35b!==state['selectedEnv'])return;const _0x25bcf4=_0x480a9d['builds']||[];if(_0x25bcf4['length']===0x0){_0x415542['innerHTML']='<p\x20class=\x22text-muted\x22>No\x20build\x20history\x20available\x20yet.\x20Build\x20this\x20environment\x20to\x20see\x20history.</p>';return;}_0x415542['innerHTML']='\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22build-history-table\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<table\x20style=\x22width:\x20100%;\x20border-collapse:\x20collapse;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<thead>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<tr\x20style=\x22border-bottom:\x202px\x20solid\x20var(--color-border);\x20text-align:\x20left;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22padding:\x208px;\x22>Status</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22padding:\x208px;\x22>Build\x20Time</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22padding:\x208px;\x22>Duration</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22padding:\x208px;\x22>Triggered\x20By</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22padding:\x208px;\x22>Output</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</thead>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<tbody>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x25bcf4['map'](_0x3a31c0=>{const _0xc98ba2=new Date(_0x3a31c0['timestamp']),_0x3ba8d8=_0xc98ba2['toLocaleString'](),_0x1fd450=formatDuration(_0x3a31c0['duration']),_0x77761=_0x3a31c0['status']==='success'?'✅':'❌',_0x3c1313=_0x3a31c0['status']==='success'?'Success':'Failed',_0x590f85=_0x3a31c0['status']==='success'?'var(--color-success)':'var(--color-error)',_0x1d4d40=Utils['escapeHtml'](_0x3a31c0['buildId']);return'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<tr\x20style=\x22border-bottom:\x201px\x20solid\x20var(--color-border);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22padding:\x208px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:\x20'+_0x590f85+';\x22>'+_0x77761+'\x20'+_0x3c1313+'</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22padding:\x208px;\x20font-family:\x20var(--font-mono);\x20font-size:\x2013px;\x22>'+_0x3ba8d8+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22padding:\x208px;\x22>'+_0x1fd450+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22padding:\x208px;\x22>'+Utils['escapeHtml'](formatTriggeredBy(_0x3a31c0['triggeredBy']))+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22padding:\x208px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-small\x22\x20onclick=\x22viewBuildOutput(\x27'+_0x1d4d40+'\x27)\x22\x20title=\x22View\x20build\x20output\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20View\x20Output\x0a\x20\x20\x20\x20\x20\x20\x20\x20\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\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20';})['join']('')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</tbody>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</table>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20';}catch(_0x13fbbd){if(_0x55e35b!==state['selectedEnv'])return;console['error']('Failed\x20to\x20load\x20build\x20history:',_0x13fbbd),_0x415542['innerHTML']='<p\x20class=\x22text-muted\x22\x20style=\x22color:\x20var(--color-error);\x22>Failed\x20to\x20load\x20build\x20history</p>';}},window['renderVolumeMounts']=function(_0x15b68a){const _0x280503=document['getElementById']('volume-mounts-list'),_0x246f95=_0x15b68a!==undefined?_0x15b68a:state['selectedEnvData']?.['volume_mounts']||[];if(!_0x280503)return;if(_0x246f95['length']===0x0){_0x280503['innerHTML']='<p\x20class=\x22text-muted\x22>No\x20volume\x20mounts\x20configured.</p>';return;}_0x280503['innerHTML']=_0x246f95['map']((_0x1ac659,_0x17b115)=>'\x0a\x20\x20\x20\x20<div\x20class=\x22volume-mount-item\x22\x20style=\x22background:\x20var(--color-bg-secondary);\x20padding:\x2016px;\x20border-radius:\x208px;\x20margin-bottom:\x2012px;\x20border:\x201px\x20solid\x20var(--color-border);\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:\x20flex;\x20justify-content:\x20space-between;\x20align-items:\x20flex-start;\x20margin-bottom:\x2012px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22flex:\x201;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-weight:\x20500;\x20margin-bottom:\x204px;\x22>'+Utils['escapeHtml'](_0x1ac659['description']||'Volume\x20Mount')+'</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:\x2013px;\x20color:\x20var(--color-text-muted);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x1ac659['read_only']?'🔒\x20Read-only':'✏️\x20Read/Write')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-small\x22\x20onclick=\x22removeVolumeMount('+_0x17b115+')\x22\x20title=\x22Remove\x20mount\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>🗑</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:\x20grid;\x20grid-template-columns:\x201fr\x201fr;\x20gap:\x2012px;\x20font-family:\x20var(--font-mono);\x20font-size:\x2013px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22color:\x20var(--color-text-muted);\x20font-size:\x2011px;\x20margin-bottom:\x204px;\x22>HOST\x20PATH</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22background:\x20var(--color-bg);\x20padding:\x206px\x208px;\x20border-radius:\x204px;\x20word-break:\x20break-all;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+Utils['escapeHtml'](_0x1ac659['host_path'])+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22color:\x20var(--color-text-muted);\x20font-size:\x2011px;\x20margin-bottom:\x204px;\x22>CONTAINER\x20PATH</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22background:\x20var(--color-bg);\x20padding:\x206px\x208px;\x20border-radius:\x204px;\x20word-break:\x20break-all;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+Utils['escapeHtml'](_0x1ac659['container_path'])+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22margin-top:\x208px;\x20text-align:\x20right;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22btn-ghost\x20btn-small\x22\x20onclick=\x22editVolumeMount('+_0x17b115+')\x22\x20style=\x22font-size:\x2012px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>✏️</span>\x20Edit\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20')['join']('');},document['getElementById']('add-volume-mount-btn')?.['addEventListener']('click',()=>{showVolumeMountDialog();}),window['showVolumeMountDialog']=function(_0x1bc6d9=null){const _0x3db046=_0x1bc6d9!==null?state['selectedEnvData']['volume_mounts'][_0x1bc6d9]:null,_0x2a0798=_0x3db046!==null;Utils['showModal']({'title':_0x2a0798?'Edit\x20Volume\x20Mount':'Add\x20Volume\x20Mount','content':'\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22modal-form\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20id=\x22volume-mount-error\x22\x20class=\x22modal-error\x22\x20style=\x22display:\x20none;\x20margin-bottom:\x2016px;\x20padding:\x2012px;\x20background:\x20var(--color-error-bg,\x20#fee);\x20border:\x201px\x20solid\x20var(--color-error,\x20#c00);\x20border-radius:\x206px;\x20color:\x20var(--color-error,\x20#c00);\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-single-column\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20for=\x22mount-description\x22>Description</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20id=\x22mount-description\x22\x20class=\x22form-input\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22e.g.,\x20Task\x20storage\x20directory\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value=\x22'+Utils['escapeHtml'](_0x3db046?.['description']||'')+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20for=\x22mount-host-path\x22>Host\x20Path</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20id=\x22mount-host-path\x22\x20class=\x22form-input\x20code-font\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22e.g.,\x20${TASK_STORAGE_PATH}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value=\x22'+Utils['escapeHtml'](_0x3db046?.['host_path']||'')+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20class=\x22text-muted\x22\x20style=\x22margin-top:\x204px;\x20font-size:\x2012px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Use\x20variables\x20like\x20${TASK_STORAGE_PATH},\x20${CODER_SETUP_PATH},\x20${SERVER_DATA_PATH}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20for=\x22mount-container-path\x22>Container\x20Path</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20id=\x22mount-container-path\x22\x20class=\x22form-input\x20code-font\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22e.g.,\x20/host-data/tasks\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20value=\x22'+Utils['escapeHtml'](_0x3db046?.['container_path']||'')+'\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20class=\x22text-muted\x22\x20style=\x22margin-top:\x204px;\x20font-size:\x2012px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Absolute\x20path\x20inside\x20the\x20container\x20where\x20the\x20volume\x20will\x20be\x20mounted\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22form-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20class=\x22toggle-switch\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20id=\x22mount-read-only\x22\x20'+(_0x3db046?.['read_only']?'checked':'')+'>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22toggle-slider\x22></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22toggle-label\x22>Read-only</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<p\x20class=\x22text-muted\x22\x20style=\x22margin-top:\x204px;\x20font-size:\x2012px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Prevent\x20containers\x20from\x20modifying\x20the\x20mounted\x20directory\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</p>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20','buttons':[{'text':'Cancel','className':'btn-secondary','onClick':()=>Utils['hideModal']()},{'text':_0x2a0798?'Save':'Add','className':'btn-primary','onClick':()=>{const _0x3f7a37=document['getElementById']('mount-description')['value']['trim'](),_0x20164a=document['getElementById']('mount-host-path')['value']['trim'](),_0x158883=document['getElementById']('mount-container-path')['value']['trim'](),_0x440e74=document['getElementById']('mount-read-only')['checked'],_0x4000e2=document['getElementById']('volume-mount-error');_0x4000e2['style']['display']='none',_0x4000e2['textContent']='';if(!_0x20164a||!_0x158883){_0x4000e2['textContent']='Host\x20path\x20and\x20container\x20path\x20are\x20required',_0x4000e2['style']['display']='block';return;}if(!_0x158883['startsWith']('/')){_0x4000e2['textContent']='Container\x20path\x20must\x20be\x20absolute\x20(start\x20with\x20/)',_0x4000e2['style']['display']='block';return;}const _0x34ccb8={'description':_0x3f7a37,'host_path':_0x20164a,'container_path':_0x158883,'read_only':_0x440e74};!state['selectedEnvData']['volume_mounts']&&(state['selectedEnvData']['volume_mounts']=[]),_0x2a0798?state['selectedEnvData']['volume_mounts'][_0x1bc6d9]=_0x34ccb8:state['selectedEnvData']['volume_mounts']['push'](_0x34ccb8),renderVolumeMounts(),state['hasUnsavedChanges']=!![],updateButtonStates(),Utils['hideModal'](),Utils['showToast']('Volume\x20mount\x20'+(_0x2a0798?'updated':'added'),'success');}}]});},window['editVolumeMount']=function(_0x528d78){showVolumeMountDialog(_0x528d78);},window['removeVolumeMount']=function(_0x169ee2){Utils['showModal']({'title':'Remove\x20Volume\x20Mount','content':'\x0a\x20\x20\x20\x20\x20\x20<p>Are\x20you\x20sure\x20you\x20want\x20to\x20remove\x20this\x20volume\x20mount?</p>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22background:\x20var(--color-bg-secondary);\x20padding:\x2012px;\x20border-radius:\x206px;\x20margin-top:\x2012px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-weight:\x20500;\x20margin-bottom:\x204px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+Utils['escapeHtml'](state['selectedEnvData']['volume_mounts'][_0x169ee2]['description']||'Volume\x20Mount')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-family:\x20var(--font-mono);\x20font-size:\x2012px;\x20color:\x20var(--color-text-muted);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+Utils['escapeHtml'](state['selectedEnvData']['volume_mounts'][_0x169ee2]['host_path'])+'\x20→\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+Utils['escapeHtml'](state['selectedEnvData']['volume_mounts'][_0x169ee2]['container_path'])+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20','buttons':[{'text':'Cancel','className':'btn-secondary','onClick':()=>Utils['hideModal']()},{'text':'Remove','className':'btn-danger','onClick':()=>{state['selectedEnvData']['volume_mounts']['splice'](_0x169ee2,0x1),renderVolumeMounts(),state['hasUnsavedChanges']=!![],updateButtonStates(),Utils['hideModal'](),Utils['showToast']('Volume\x20mount\x20removed','success');}}]});};const accessTabState={'bindings':[],'roles':[],'teams':[],'users':[],'loaded':![]};async function loadAccessTab(){const _0x48741a=document['getElementById']('access-loading'),_0x489f6a=document['getElementById']('access-empty'),_0x2c2da0=document['getElementById']('access-bindings-container'),_0x2d5854=document['getElementById']('access-add-binding-btn');if(!_0x48741a)return;_0x48741a['hidden']=![],_0x489f6a['hidden']=!![],_0x2c2da0['style']['display']='none',document['getElementById']('access-add-form')['hidden']=!![];try{const [_0x1a5e88,_0x49e8c1]=await Promise['all']([API['getBindings']({'resource_type':'environment','resource_id':state['selectedEnv']}),API['getRoleDefinitions']()]);accessTabState['bindings']=_0x1a5e88['bindings']||[],accessTabState['roles']=_0x49e8c1['roles']||[];try{const _0x34d8a4=await API['getTeams']();accessTabState['teams']=_0x34d8a4['teams']||[];}catch{accessTabState['teams']=[];}try{const _0xe60aa6=await API['getUsers']();accessTabState['users']=_0xe60aa6['users']||[];}catch{accessTabState['users']=[];}accessTabState['loaded']=!![],_0x48741a['hidden']=!![],updateTabBadge('badge-access',accessTabState['bindings']['length']);accessTabState['bindings']['length']===0x0?_0x489f6a['hidden']=![]:(_0x2c2da0['style']['display']='',renderAccessBindings());const _0x56827a=state['currentUser'];_0x56827a?.['hasEnvironmentsManageAccess']&&(_0x2d5854['hidden']=![]);}catch(_0x2050a6){_0x48741a['hidden']=!![],Utils['showToast']('Failed\x20to\x20load\x20access\x20bindings:\x20'+_0x2050a6['message'],'error');}}function renderAccessBindings(){const _0x922114=document['getElementById']('access-bindings-body');if(!_0x922114)return;const _0x43d0b1=state['currentUser']?.['hasEnvironmentsManageAccess'];_0x922114['innerHTML']=accessTabState['bindings']['map'](_0x537906=>{const _0x598ccb=_0x537906['created_at']?new Date(_0x537906['created_at'])['toLocaleDateString']():'—';return'\x0a\x20\x20\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x537906['subject_name']||_0x537906['subject_id'])+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td><span\x20class=\x22tag\x22\x20style=\x22font-size:\x200.75em;\x20text-transform:\x20capitalize;\x22>'+Utils['escapeHtml'](_0x537906['subject_type'])+'</span></td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x537906['role_name']||_0x537906['role_id'])+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>'+Utils['escapeHtml'](_0x537906['created_by']||'—')+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22white-space:\x20nowrap;\x22>'+_0x598ccb+'</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+(_0x43d0b1?'<button\x20class=\x22btn-ghost\x20btn-small\x22\x20onclick=\x22window.removeAccessBinding(\x27'+_0x537906['id']+'\x27)\x22\x20style=\x22color:\x20var(--color-danger);\x22>Remove</button>':'—')+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20</tr>';})['join']('');}function populateAccessSubjectSelect(){const _0x2b4e6b=document['getElementById']('access-subject-type'),_0x27d6f3=document['getElementById']('access-subject-id'),_0x21d379=_0x2b4e6b?.['value'];if(!_0x27d6f3)return;const _0x4a68e7=new Set(accessTabState['bindings']['filter'](_0x951bac=>_0x951bac['subject_type']===_0x21d379)['map'](_0x4bb5d7=>_0x4bb5d7['subject_id'])),_0x2115ef=_0x21d379==='team'?accessTabState['teams']['filter'](_0x461153=>!_0x4a68e7['has'](_0x461153['id'])):accessTabState['users']['filter'](_0x5af7ec=>!_0x4a68e7['has'](_0x5af7ec['id']));_0x27d6f3['innerHTML']=_0x2115ef['length']?_0x2115ef['map'](_0x579857=>{const _0xd18c4a=_0x21d379==='team'?_0x579857['name']:_0x579857['username']||_0x579857['name'];return'<option\x20value=\x22'+_0x579857['id']+'\x22>'+Utils['escapeHtml'](_0xd18c4a)+'</option>';})['join'](''):'<option\x20value=\x22\x22>None\x20available</option>';}document['addEventListener']('DOMContentLoaded',()=>{document['getElementById']('access-add-binding-btn')?.['addEventListener']('click',()=>{const _0x5c92cf=document['getElementById']('access-role-id');_0x5c92cf&&(_0x5c92cf['innerHTML']=accessTabState['roles']['map'](_0x27ac2a=>'<option\x20value=\x22'+_0x27ac2a['id']+'\x22>'+Utils['escapeHtml'](_0x27ac2a['name'])+'</option>')['join']('')),populateAccessSubjectSelect(),document['getElementById']('access-add-form')['hidden']=![],document['getElementById']('access-add-binding-btn')['hidden']=!![];}),document['getElementById']('access-subject-type')?.['addEventListener']('change',populateAccessSubjectSelect),document['getElementById']('access-cancel-binding-btn')?.['addEventListener']('click',()=>{document['getElementById']('access-add-form')['hidden']=!![],document['getElementById']('access-add-binding-btn')['hidden']=![];}),document['getElementById']('access-save-binding-btn')?.['addEventListener']('click',async()=>{const _0x26b52a=document['getElementById']('access-subject-type')['value'],_0xec6ac4=document['getElementById']('access-subject-id')['value'],_0x2e6b59=document['getElementById']('access-role-id')['value'];if(!_0xec6ac4||!_0x2e6b59||!state['selectedEnv'])return;const _0x42e90e=document['getElementById']('access-save-binding-btn');_0x42e90e['disabled']=!![],_0x42e90e['textContent']='Adding…';try{await API['createBinding']({'subject_type':_0x26b52a,'subject_id':_0xec6ac4,'role_id':_0x2e6b59,'resource_type':'environment','resource_id':state['selectedEnv']}),Utils['showToast']('Binding\x20added','success'),document['getElementById']('access-add-form')['hidden']=!![],document['getElementById']('access-add-binding-btn')['hidden']=![],await loadAccessTab();}catch(_0x3d0741){Utils['showToast'](_0x3d0741['message'],'error');}finally{_0x42e90e['disabled']=![],_0x42e90e['textContent']='Add\x20Binding';}});}),window['removeAccessBinding']=async function(_0x11b9a0){try{await API['deleteBinding'](_0x11b9a0),Utils['showToast']('Binding\x20removed','success'),await loadAccessTab();}catch(_0x4bd1ca){Utils['showToast'](_0x4bd1ca['message'],'error');}};
|