function markedMermaid(e){return{extensions:[{name:"mermaid",level:"block",start(e){return e.match(/^```mermaid/m)?.index},tokenizer(e,t){e=/^```mermaid\n([\s\S]*?)\n```/.exec(e);if(e)return{type:"mermaid",raw:e[0],text:e[1].trim()}},renderer(e){const t="mermaid-"+Math.random().toString(36).substr(2,9);e=`
| '+(r.oldNo||"")+' | '+(r.newNo||"")+' | '+("add"===r.kind?"+":"remove"===r.kind?"-":"hunk"===r.kind?"@":"")+' | '+s(r.text)+" |
',link:function(n,i){function e(){var e,t;n.file&&(n.kind=(e=n.file,"md"===(t=o(e&&e.filename))||"markdown"===t||e&&"Markdown"===e.language?"md":"code"),n.prismClass="language-"+(t=n.file,t&&t.language&&s[t.language.toLowerCase()]||s[o(t&&t.filename)]||"none"),r(()=>{i[0].querySelectorAll("pre code").forEach(e=>{window.Prism&&Prism.highlightElement(e)})},50))}n.$watch("file",e),n.$watch("file.content",e),n.$watch("terms",e),n.$watch("options",e,!0)}}}]).directive("markdown",["$location",function(r){return{restrict:"E",scope:{terms:"=",options:"=",content:"="},link:function(e,t,n){function i(){t.html(renderMD(e.content,r.url()+"/../"))}e.$watch(n.terms,i),e.$watch("terms",i),e.$watch("options",i),e.$watch("content",i)}}}]).directive("tree",[function(){return{restrict:"E",scope:{file:"=",parent:"@",searchQuery:"=",searchResults:"="},controller:["$element","$scope","$routeParams","$compile",function(n,g,i,r){if(g.repoId=document.location.pathname.split("/")[2],g.opens={},i.path){let t="";i.path.split("/").forEach(e=>{g.opens[t+"/"+e]=!0,t=t+"/"+e})}function s(e){var t,n=[];const i={"":{child:n}};for(t of e){if(t.path&&!i[t.path]){o=a=s=r=void 0;var r=t.path;if(!i[r]){var s=r.split("/");let t="";for(let e=0;eLoading GitHub info for "+e.repoId+"..."),r.get("/api/admin/repos/"+e.repoId+"/github").then(e=>{t&&(t.document.open(),t.document.write('
'+JSON.stringify(e.data,null,2).replace(/[<>]/g,e=>"<"===e?"<":">")+""),t.document.close())},e=>{e=e&&e.data?JSON.stringify(e.data,null,2):String(e);t&&(t.document.body.innerHTML='
'+e+"")})},i.statusCountFor=t=>{var e=(i.statusCounts||[]).find(e=>e._id===t);return e?e.count:0},i.statusStorageFor=t=>{var e=(i.statusCounts||[]).find(e=>e._id===t);return e?e.storage:0},i.isErrorsOnly=()=>i.query&&i.query.error&&!i.query.ready&&!i.query.preparing&&!i.query.expired&&!i.query.removed,i.toggleErrorsOnly=()=>{i.isErrorsOnly()?Object.assign(i.query,{ready:!1,preparing:!0,expired:!1,removed:!1,error:!0}):Object.assign(i.query,{ready:!1,preparing:!1,expired:!1,removed:!1,error:!0}),i.query.page=1},i.toggleSortDirection=()=>{i.query.direction="asc"===i.query.direction?"desc":"asc"},i.sortBy=e=>{i.query.sort===e?i.query.direction="asc"===i.query.direction?"desc":"asc":(i.query.sort=e,i.query.direction="desc"),i.query.page=1},i.sortIcon=e=>i.query.sort===e?"asc"===i.query.direction?"fa-arrow-up":"fa-arrow-down":"","admin.repos.filterPrefs");var n=loadFilterPrefs(o)||{},n=(i.query=Object.assign({},{page:1,limit:25,sort:"lastView",direction:"desc",search:"",owner:"",conference:"",dateFrom:"",dateTo:"",ready:!1,expired:!1,removed:!1,error:!0,preparing:!0},n,{page:1,search:""}),e.search());n.owner&&(i.query.owner=n.owner),n.conference&&(i.query.conference=n.conference),n.search&&(i.query.search=n.search);const a="admin.repos.presets";function l(){i.fetchError=null,r.get("/api/admin/repos",{params:i.query}).then(e=>{i.total=e.data.total,i.totalPage=Math.ceil(e.data.total/i.query.limit),i.repositories=e.data.results,i.statusCounts=e.data.statusCounts||[],i.totalSize=e.data.totalSize||0,i.allSelected=!1},e=>{i.fetchError=e&&e.data&&e.data.error||"Failed to load repositories",console.error(e)})}i.presets=JSON.parse(localStorage.getItem(a)||"[]"),i.savePreset=()=>{const t=window.prompt("Preset name:");var e;t&&(delete(e=Object.assign({},i.query)).page,i.presets=(i.presets||[]).filter(e=>e.name!==t),i.presets.push({name:t,query:e}),localStorage.setItem(a,JSON.stringify(i.presets)))},i.applyPreset=e=>{Object.assign(i.query,e.query,{page:1})},i.deletePreset=t=>{i.presets=(i.presets||[]).filter(e=>e.name!==t.name),localStorage.setItem(a,JSON.stringify(i.presets))},i.selectAllOnPage=()=>{i.allSelected=!i.allSelected,i.repositories.forEach(e=>{i.selected[e.repoId]=i.allSelected})},i.selectedCount=()=>Object.values(i.selected||{}).filter(Boolean).length,i.selectedRepos=()=>i.repositories.filter(e=>i.selected[e.repoId]),i.bulkRefresh=()=>{var e=i.selectedRepos();e.length&&confirm(`Force refresh ${e.length} repositories?`)&&e.forEach(e=>i.updateRepository(e))},i.bulkRemoveCache=()=>{var e=i.selectedRepos();e.length&&confirm(`Purge cache for ${e.length} repositories?`)&&e.forEach(e=>i.removeCache(e))},i.clearSelection=()=>{i.selected={},i.allSelected=!1},i.exportCsv=()=>{var e=new URLSearchParams(Object.entries(i.query).filter(([,e])=>""!==e&&!1!==e&&null!=e));e.set("format","csv"),e.set("limit","10000"),window.open("/api/admin/repos?"+e.toString(),"_blank")},i.removeCache=e=>{confirm("Remove cached files for "+e.repoId+"?")&&r.delete("/api/admin/repos/"+e.repoId).then(()=>l(),e=>console.error(e))},i.removeRepository=e=>{confirm("Remove repository "+e.repoId+"?")&&r.delete("/api/repo/"+e.repoId+"/").then(()=>l(),e=>console.error(e))},i.updateRepository=t=>{const n={title:`Refreshing ${t.repoId}...`,date:new Date,body:`The repository ${t.repoId} is going to be refreshed.`};i.toasts.push(n),r.post(`/api/repo/${t.repoId}/refresh`).then(e=>{"ready"==e.data.status?n.title=t.repoId+" is refreshed.":n.title=`Refreshing of ${t.repoId}.`},e=>{n.title=`Error during the refresh of ${t.repoId}.`,n.body=e.body})},i.fetchError=null,l();let c=null;i.$watch("query",()=>{clearTimeout(c),c=setTimeout(l,500);const{page:e,search:t,...n}=i.query;saveFilterPrefs(o,n),s()},!0),s()}]).controller("usersAdminController",["$scope","$http","$location",function(i,t,e){i.Math=Math,i.$watch("user.status",()=>{null==i.user&&e.url("/")}),null==i.user&&e.url("/"),i.users=[],i.total=-1,i.totalPage=0,i.statusCounts=[],i.selected={},i.allSelected=!1;const n=e=>{"/"===e.key&&!["INPUT","TEXTAREA","SELECT"].includes(document.activeElement?.tagName)&&(e.preventDefault(),e=document.querySelector('.admin-filter-toolbar input[type="search"]'))&&e.focus()},r=(document.addEventListener("keydown",n),i.$on("$destroy",()=>document.removeEventListener("keydown",n)),i.clearFilter=e=>{"dateRange"===e?(i.query.dateFrom="",i.query.dateTo=""):i.query[e]="",i.query.page=1},i.chips=[],()=>{var e=[];i.query.role&&e.push({key:"role",label:"Role",value:i.query.role}),i.chips=e}),s=(i.statusCountFor=t=>{var e=(i.statusCounts||[]).find(e=>e._id===t);return e?e.count:0},i.toggleSortDirection=()=>{i.query.direction="asc"===i.query.direction?"desc":"asc"},i.sortBy=e=>{i.query.sort===e?i.query.direction="asc"===i.query.direction?"desc":"asc":(i.query.sort=e,i.query.direction="desc"),i.query.page=1},i.sortIcon=e=>i.query.sort===e?"asc"===i.query.direction?"fa-arrow-up":"fa-arrow-down":"","admin.users.filterPrefs");var o=loadFilterPrefs(s)||{};function a(){i.fetchError=null,t.get("/api/admin/users",{params:i.query}).then(e=>{i.total=e.data.total,i.totalPage=Math.ceil(e.data.total/i.query.limit),i.users=e.data.results,i.statusCounts=e.data.statusCounts||[],i.allSelected=!1,i.$apply()},e=>{i.fetchError=e&&e.data&&e.data.error||"Failed to load users",console.error(e)})}i.query=Object.assign({},{page:1,limit:25,sort:"username",direction:"asc",search:"",status:"",role:"",dateFrom:"",dateTo:""},o,{page:1,search:""}),i.selectAllOnPage=()=>{i.allSelected=!i.allSelected,i.users.forEach(e=>{i.selected[e.username]=i.allSelected})},i.selectedCount=()=>Object.values(i.selected||{}).filter(Boolean).length,i.selectedUsers=()=>i.users.filter(e=>i.selected[e.username]),i.banUser=e=>{confirm(`Ban user ${e.username}?`)&&t.post(`/api/admin/users/${e.username}/ban`).then(a,e=>console.error(e))},i.activateUser=e=>{t.post(`/api/admin/users/${e.username}/activate`).then(a,e=>console.error(e))},i.bulkBan=()=>{var e=i.selectedUsers();e.length&&confirm(`Ban ${e.length} users?`)&&e.forEach(e=>i.banUser(e))},i.exportCsv=()=>{var e=new URLSearchParams(Object.entries(i.query).filter(([,e])=>""!==e&&!1!==e&&null!=e));e.set("format","csv"),e.set("limit","10000"),window.open("/api/admin/users?"+e.toString(),"_blank")},i.fetchError=null,a();let l=null;i.$watch("query",()=>{clearTimeout(l),l=setTimeout(a,500);const{page:e,search:t,...n}=i.query;saveFilterPrefs(s,n),r()},!0),r()}]).controller("userAdminController",["$scope","$http","$location","$routeParams",function(i,r,e,n){i.$watch("user.status",()=>{null==i.user&&e.url("/")}),null==i.user&&e.url("/"),i.userInfo,i.repositories=[],i.search="",i.selected={},i.allSelected=!1;const t="admin.user.filterPrefs",s={status:{ready:!0,expired:!0,removed:!0,error:!0,preparing:!0}},o="anonymizeDate",a="desc";var l=loadFilterPrefs(t)||{};function c(e){r.get("/api/admin/users/"+e+"/repos",{}).then(e=>{i.repositories=e.data},e=>{console.error(e)})}function h(e){r.get("/api/admin/users/"+e,{}).then(e=>{i.userInfo=e.data},e=>{console.error(e)})}function u(){r.get("/api/admin/tokens").then(e=>{i.tokens=e.data||[]},e=>{401!==e.status&&403!==e.status&&console.error(e)})}i.filters={status:Object.assign({},s.status,l.filters&&l.filters.status||{})},i.query={sort:l.sort||o,direction:l.direction||a},i.orderBy=("asc"===i.query.direction?"":"-")+i.query.sort,i.sortBy=e=>{i.query.sort===e?i.query.direction="asc"===i.query.direction?"desc":"asc":(i.query.sort=e,i.query.direction="desc"),i.orderBy=("asc"===i.query.direction?"":"-")+i.query.sort},i.sortIcon=e=>i.query.sort===e?"asc"===i.query.direction?"fa-arrow-up":"fa-arrow-down":"",i.$watch("query",()=>{saveFilterPrefs(t,{filters:i.filters,sort:i.query.sort,direction:i.query.direction})},!0),i.$watch("filters",()=>{saveFilterPrefs(t,{filters:i.filters,sort:i.query.sort,direction:i.query.direction})},!0),i.statusCountFor=t=>(i.repositories||[]).filter(e=>e.status===t).length,i.repoFiler=e=>0!=i.filters.status[e.status]&&(0==i.search.trim().length||-1
Loading GitHub info for "+e.repoId+"..."),r.get("/api/admin/repos/"+e.repoId+"/github").then(e=>{t&&(t.document.open(),t.document.write('
'+JSON.stringify(e.data,null,2).replace(/[<>]/g,e=>"<"===e?"<":">")+""),t.document.close())},e=>{e=e&&e.data?JSON.stringify(e.data,null,2):String(e);t&&(t.document.body.innerHTML='
'+e+"")})},h(n.username),c(n.username),i.banUser=()=>{confirm(`Ban user ${n.username}?`)&&r.post(`/api/admin/users/${n.username}/ban`).then(()=>h(n.username),e=>console.error(e))},i.activateUser=()=>{r.post(`/api/admin/users/${n.username}/activate`).then(()=>h(n.username),e=>console.error(e))},i.promoteUser=()=>{confirm(`Promote ${n.username} to admin?`)&&r.post(`/api/admin/users/${n.username}/promote`).then(()=>h(n.username),e=>console.error(e))},i.demoteUser=()=>{confirm(`Remove admin privileges from ${n.username}?`)&&r.post(`/api/admin/users/${n.username}/demote`).then(()=>h(n.username),e=>console.error(e))},i.tokens=[],i.tokenForm={name:"",plaintext:null},u(),i.createToken=()=>{i.tokenForm.name&&r.post("/api/admin/tokens",{name:i.tokenForm.name}).then(e=>{i.tokenForm.plaintext=e.data.token,i.tokenForm.name="",u()},e=>console.error(e))},i.revokeToken=e=>{confirm(`Revoke token "${e.name}"?`)&&r.delete("/api/admin/tokens/"+e.id).then(()=>u(),e=>console.error(e))},i.removeCache=e=>{confirm("Remove cached files for "+e.repoId+"?")&&r.delete("/api/admin/repos/"+e.repoId).then(()=>c(n.username),e=>console.error(e))},i.removeRepository=e=>{confirm("Remove repository "+e.repoId+"?")&&r.delete("/api/repo/"+e.repoId+"/").then(()=>c(n.username),e=>console.error(e))},i.updateRepository=t=>{const n={title:`Refreshing ${t.repoId}...`,date:new Date,body:`The repository ${t.repoId} is going to be refreshed.`};i.toasts.push(n),r.post(`/api/repo/${t.repoId}/refresh`).then(e=>{"ready"==e.data.status?n.title=t.repoId+" is refreshed.":n.title=`Refreshing of ${t.repoId}.`},e=>{n.title=`Error during the refresh of ${t.repoId}.`,n.body=e.body})},i.getGitHubRepositories=e=>{r.get(`/api/user/${i.userInfo.username}/all_repositories`,{params:{force:"1"}}).then(e=>{i.userInfo.repositories=e.data})};let d=null;i.$watch("query",()=>{clearTimeout(d),d=setTimeout(()=>{c(n.username)},500)},!0)}]).controller("conferencesAdminController",["$scope","$http","$location",function(i,t,e){i.Math=Math,i.$watch("user.status",()=>{null==i.user&&e.url("/")}),null==i.user&&e.url("/"),i.conferences=[],i.total=-1,i.totalPage=0,i.statusCounts=[];const n=e=>{"/"===e.key&&!["INPUT","TEXTAREA","SELECT"].includes(document.activeElement?.tagName)&&(e.preventDefault(),e=document.querySelector('.admin-filter-toolbar input[type="search"]'))&&e.focus()},r=(document.addEventListener("keydown",n),i.$on("$destroy",()=>document.removeEventListener("keydown",n)),i.clearFilter=e=>{"dateRange"===e?(i.query.dateFrom="",i.query.dateTo=""):i.query[e]="",i.query.page=1},i.chips=[],()=>{var e=[];(i.query.dateFrom||i.query.dateTo)&&e.push({key:"dateRange",label:"Date",value:(i.query.dateFrom||"…")+" – "+(i.query.dateTo||"…")}),i.chips=e}),s=(i.statusCountFor=t=>{var e=(i.statusCounts||[]).find(e=>e._id===t);return e?e.count:0},i.toggleSortDirection=()=>{i.query.direction="asc"===i.query.direction?"desc":"asc"},i.sortBy=e=>{i.query.sort===e?i.query.direction="asc"===i.query.direction?"desc":"asc":(i.query.sort=e,i.query.direction="desc"),i.query.page=1},i.sortIcon=e=>i.query.sort===e?"asc"===i.query.direction?"fa-arrow-up":"fa-arrow-down":"","admin.conferences.filterPrefs");var o=loadFilterPrefs(s)||{},o=(i.query=Object.assign({},{page:1,limit:25,sort:"name",direction:"asc",search:"",dateFrom:"",dateTo:"",ready:!1,expired:!1,removed:!1,error:!0,preparing:!0},o,{page:1,search:""}),e.search());o.search&&(i.query.search=o.search);const a="admin.conferences.presets";function l(){i.fetchError=null,t.get("/api/admin/conferences",{params:i.query}).then(e=>{i.total=e.data.total,i.totalPage=Math.ceil(e.data.total/i.query.limit),i.conferences=e.data.results,i.statusCounts=e.data.statusCounts||[]},e=>{i.fetchError=e&&e.data&&e.data.error||"Failed to load conferences",console.error(e)})}i.presets=JSON.parse(localStorage.getItem(a)||"[]"),i.savePreset=()=>{const t=window.prompt("Preset name:");var e;t&&(delete(e=Object.assign({},i.query)).page,i.presets=(i.presets||[]).filter(e=>e.name!==t),i.presets.push({name:t,query:e}),localStorage.setItem(a,JSON.stringify(i.presets)))},i.applyPreset=e=>{Object.assign(i.query,e.query,{page:1})},i.deletePreset=t=>{i.presets=(i.presets||[]).filter(e=>e.name!==t.name),localStorage.setItem(a,JSON.stringify(i.presets))},i.removeConference=e=>{confirm("Remove conference "+e.conferenceID+"?")&&t.delete("/api/admin/conferences/"+e.conferenceID).then(()=>l(),e=>console.error(e))},i.exportCsv=()=>{var e=new URLSearchParams(Object.entries(i.query).filter(([,e])=>""!==e&&!1!==e&&null!=e));e.set("format","csv"),e.set("limit","10000"),window.open("/api/admin/conferences?"+e.toString(),"_blank")},i.fetchError=null,l();let c=null;i.$watch("query",()=>{clearTimeout(c),c=setTimeout(l,500);const{page:e,search:t,...n}=i.query;saveFilterPrefs(s,n),r()},!0),r()}]).controller("queuesAdminController",["$scope","$http","$location","$interval","$timeout",function(c,t,e,n,i){function r(){var e={queue:c.selectedQueue,state:c.query.state,search:c.query.search};t.get("/api/admin/queues",{params:e}).then(e=>{c.queueList=e.data.queues||[],c.jobs=e.data.jobs||[],c.selectedStats=c.queueList.find(e=>e.key===c.selectedQueue)||c.queueList[0]||null,i(a,0)},e=>console.error(e))}c.$watch("user.status",()=>{null==c.user&&e.url("/")}),null==c.user&&e.url("/"),c.queueList=[],c.jobs=[],c.selectedQueue="download",c.selectedStats=null,c.range="1h",c.query={search:"",state:"active",autoRefresh:!0},c.jobProgressPct=e=>e&&e.progress&&"object"==typeof e.progress&&"number"==typeof e.progress.percent?Math.max(0,Math.min(100,Math.round(e.progress.percent))):"number"==typeof e.progress?Math.max(0,Math.min(100,Math.round(e.progress))):null,c.jobDuration=e=>{return e.processedOn?(e=(e.finishedOn||Date.now())-e.processedOn)<1e3?e+"ms":(e/1e3).toFixed(1)+"s":"-"},c.selectQueue=e=>{c.selectedQueue=e,r()},c.setRange=e=>{c.range=e,r()},r();const s=n(()=>{c.query.autoRefresh&&r()},5e3);c.$on("$destroy",()=>n.cancel(s)),c.refreshNow=r,c.removeJob=e=>{t.delete(`/api/admin/queue/${c.selectedQueue}/`+e.id).then(r,e=>console.error(e))},c.retryJob=e=>{t.post(`/api/admin/queue/${c.selectedQueue}/`+e.id).then(r,e=>console.error(e))},c.retryFailed=()=>{confirm(`Retry all failed jobs in ${c.selectedQueue}?`)&&t.post(`/api/admin/queue/${c.selectedQueue}/retry-failed`).then(r,e=>console.error(e))},c.drainSelected=()=>{confirm(`Drain the ${c.selectedQueue} queue?`)&&t.post(`/api/admin/queue/${c.selectedQueue}/drain`).then(r,e=>console.error(e))},c.togglePause=()=>{var e=c.selectedStats&&c.selectedStats.paused?"resume":"pause";t.post(`/api/admin/queue/${c.selectedQueue}/`+e).then(r,e=>console.error(e))},c.emptyQueue=()=>{confirm(`Empty the ${c.selectedQueue} queue? This removes ALL jobs.`)&&t.post(`/api/admin/queue/${c.selectedQueue}/empty`).then(r,e=>console.error(e))},c.pauseAll=()=>{confirm("Pause all queues?")&&t.post("/api/admin/queues/pause-all").then(r,e=>console.error(e))};let o=null;function a(){var e=document.getElementById("q-throughput-chart");if(e&&c.selectedStats){const s=e.getContext("2d");var t=window.devicePixelRatio||1,n=e.parentElement.getBoundingClientRect().width-40;e.width=n*t,e.height=160*t,e.style.width=n+"px",e.style.height="160px",s.setTransform(t,0,0,t,0,0);e=(c.selectedStats.throughput||[]).slice().reverse();if(0===e.length)s.fillStyle=getComputedStyle(document.documentElement).getPropertyValue("--ink-muted").trim()||"#8A857C",s.font="12px var(--font-mono)",s.textAlign="center",s.fillText("No throughput data yet",n/2,80);else{const o=e.slice(0,{"1h":60,"6h":120,"24h":120,"7d":120}[c.range]||60),a=Math.max(1,...o),l=n/(o.length-1||1);var t=document.body.classList.contains("dark-mode"),e=t?"#A7B2FF":"#3B4AD6",i=t?"rgba(167,178,255,0.12)":"rgba(59,74,214,0.08)";s.strokeStyle=t?"rgba(255,255,255,0.06)":"rgba(0,0,0,0.06)",s.lineWidth=1;for(let e=0;e<4;e++){var r=40*e;s.beginPath(),s.moveTo(0,r),s.lineTo(n,r),s.stroke()}s.beginPath(),s.moveTo(0,160),o.forEach((e,t)=>{var n,i=t*l,e=160-e/a*150;0===t?s.lineTo(i,e):(n=(t-1)*l,t=160-o[t-1]/a*150,n=(n+i)/2,s.bezierCurveTo(n,t,n,e,i,e))}),s.lineTo(n,160),s.closePath(),s.fillStyle=i,s.fill(),s.beginPath(),o.forEach((e,t)=>{var n,i=t*l,e=160-e/a*150;0===t?s.moveTo(i,e):(n=(t-1)*l,t=160-o[t-1]/a*150,n=(n+i)/2,s.bezierCurveTo(n,t,n,e,i,e))}),s.strokeStyle=e,s.lineWidth=1.5,s.stroke()}}}c.$watch("query.search",()=>{clearTimeout(o),o=setTimeout(r,350)}),c.$watch("query.state",r)}]).controller("errorsAdminController",["$scope","$http","$location","$interval",function(h,i,e,t){h.$watch("user.status",()=>{null==h.user&&e.url("/")}),null==h.user&&e.url("/"),h.entries=[],h.visible=[],h.available=!0,h.cap=1e3,h.total=0,h.pageSize=250,h.expanded={},h.detailTab={},h.copyHint="",h.parsedFilterCount=0,h.stats={last24h:0,prev24h:0,delta:0,severity:{error:0,warn:0,info:0},unique:{error:0,warn:0,info:0},buckets:[],dropped:0},h.query={search:"",bucket:"",sort:"recent",group:"code",autoRefresh:!0},h.relTime=e=>{var t;return e?(t=new Date(e).getTime(),isNaN(t)?e:(t=Math.max(0,Date.now()-t),(t=Math.floor(t/1e3))<5?"just now":t<60?t+"s ago":(t=Math.floor(t/60))<60?t+"m ago":(t=Math.floor(t/60))<24?t+"h ago":(t=Math.floor(t/24))<7?t+"d ago":new Date(e).toLocaleDateString())):""},h.absTime=e=>{var t;return e?(t=new Date(e),isNaN(t.getTime())?e:t.toLocaleString()):""},h.absTimeShort=e=>{var t;return e?(t=new Date(e),isNaN(t.getTime())?e:t.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1})):""};const o=/^[a-zA-Z][a-zA-Z0-9]*(?:_[a-zA-Z0-9]+)+$/;function r(t){var n=(t.raw||[]).find(e=>e&&"object"==typeof e&&!Array.isArray(e));if(n){n.message&&o.test(n.message)?(t.displayMessage=n.message,t.displayContext=t.message):n.code&&o.test(String(n.code))?(t.displayMessage=String(n.code),t.displayContext=t.message):n.name&&"AnonymousError"!==n.name&&"Error"!==n.name?(t.displayMessage=n.name,t.displayContext=n.message||t.message):t.displayMessage=t.message,t._status=n.httpStatus||n.status||null,t._url=n.url||null,t._method=n.method||null,t._repoId=n.repoId||n.detail||null,t._detail=n.detail&&n.detail!==t._repoId?n.detail:null;let e="string"==typeof n.stack?n.stack:null;for(var i=[n.cause,n.err].filter(Boolean),r=0;!e&&r